From 21158c937babed9fc8998137f136462878694060 Mon Sep 17 00:00:00 2001 From: mcmonkey Date: Fri, 18 Jan 2019 03:35:50 -0800 Subject: [PATCH] handle minor issue with pr/1883 and some trouble with cancellation in general --- .../denizen/events/entity/EntityBreedScriptEvent.java | 5 +++-- .../denizen/events/entity/EntityDeathScriptEvent.java | 2 +- .../denizen/events/player/ItemRecipeFormedScriptEvent.java | 2 +- .../denizen/events/player/PlayerBreaksItemScriptEvent.java | 3 ++- .../denizen/events/player/PlayerCraftsItemScriptEvent.java | 2 +- .../events/player/PlayerItemTakesDamageScriptEvent.java | 3 ++- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityBreedScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityBreedScriptEvent.java index 3dce96a7f5..457ee28215 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityBreedScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityBreedScriptEvent.java @@ -41,7 +41,7 @@ public class EntityBreedScriptEvent extends BukkitScriptEvent implements Listene // returns the amount of experience granted by breeding. // // @Determine - // Element(Integer) to set the amount of experience granted by breeding. + // Element(Number) to set the amount of experience granted by breeding. // // --> @@ -133,6 +133,7 @@ public void onEntityBreeds(EntityBreedEvent event) { item = new dItem(event.getBredWith()); experience = event.getExperience(); cancelled = event.isCancelled(); + boolean wasCancelled = cancelled; this.event = event; dEntity.rememberEntity(entity); fire(); @@ -141,7 +142,7 @@ public void onEntityBreeds(EntityBreedEvent event) { event.setExperience(experience); // Prevent entities from continuing to breed with each other - if (cancelled) { + if (cancelled && !wasCancelled) { NMSHandler.getInstance().getEntityHelper().setBreeding((Animals) father.getLivingEntity(), false); NMSHandler.getInstance().getEntityHelper().setBreeding((Animals) mother.getLivingEntity(), false); } diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java index 14703f4318..8008e45156 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java @@ -295,7 +295,7 @@ else if (livingEntity.getKiller() != null) { if (message != null) { subEvent.setDeathMessage(message.asString()); } - if (cancelled) { + if (cancelled) { // Hacked-in player-only cancellation tool to cancel messages subEvent.setDeathMessage(null); } } diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/player/ItemRecipeFormedScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/player/ItemRecipeFormedScriptEvent.java index a71d0a6ac6..74798e2fcc 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/player/ItemRecipeFormedScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/player/ItemRecipeFormedScriptEvent.java @@ -147,7 +147,7 @@ public void onRecipeFormed(PrepareItemCraftEvent event) { resultChanged = false; cancelled = false; fire(); - if (cancelled) { + if (cancelled) { // Hacked-in cancellation helper inventory.setResult(null); } else if (resultChanged) { diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerBreaksItemScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerBreaksItemScriptEvent.java index c6eca1828a..3b5fc46672 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerBreaksItemScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerBreaksItemScriptEvent.java @@ -98,8 +98,9 @@ public void onPlayerItemBreak(PlayerItemBreakEvent event) { } item = new dItem(event.getBrokenItem()); this.event = event; + cancelled = false; fire(); - if (cancelled) { + if (cancelled) { // Hacked-in cancellation helper final Player player = event.getPlayer(); final ItemStack itemstack = event.getBrokenItem(); itemstack.setAmount(itemstack.getAmount() + 1); diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerCraftsItemScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerCraftsItemScriptEvent.java index 44af13097b..4b65b26327 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerCraftsItemScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerCraftsItemScriptEvent.java @@ -143,7 +143,7 @@ public void onCraftItem(CraftItemEvent event) { this.resultChanged = false; this.cancelled = false; fire(); - if (cancelled) { + if (cancelled) { // This event has a weird cancellation handler event.setCancelled(true); } else if (resultChanged) { diff --git a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerItemTakesDamageScriptEvent.java b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerItemTakesDamageScriptEvent.java index 9efe465455..ca8c711c28 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerItemTakesDamageScriptEvent.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/events/player/PlayerItemTakesDamageScriptEvent.java @@ -122,12 +122,13 @@ public void onPlayerItemTakesDamage(PlayerItemDamageEvent event) { damage = new Element(event.getDamage()); location = new dLocation(event.getPlayer().getLocation()); cancelled = event.isCancelled(); + boolean wasCancelled = cancelled; this.event = event; fire(); event.setCancelled(cancelled); event.setDamage(damage.asInt()); final Player p = event.getPlayer(); - if (cancelled) { + if (cancelled && !wasCancelled) { Bukkit.getScheduler().scheduleSyncDelayedTask(DenizenAPI.getCurrentInstance(), new Runnable() { @Override public void run() {