From f322fd127c04612e5164c7c9783801b8a8721f34 Mon Sep 17 00:00:00 2001 From: Talamar1 Date: Sat, 13 Jun 2015 19:52:12 -0400 Subject: [PATCH] Rewrote "on leaves decay" event in new ScriptEvent format. Removed from BukkitWorldScriptHelper. --- .../java/net/aufdemrand/denizen/Denizen.java | 1 + .../scriptevents/LeafDecaysScriptEvent.java | 95 +++++++++++++++++++ .../core/BukkitWorldScriptHelper.java | 32 ------- 3 files changed, 96 insertions(+), 32 deletions(-) create mode 100644 src/main/java/net/aufdemrand/denizen/events/scriptevents/LeafDecaysScriptEvent.java diff --git a/src/main/java/net/aufdemrand/denizen/Denizen.java b/src/main/java/net/aufdemrand/denizen/Denizen.java index adfd90dd54..37ed5980fc 100644 --- a/src/main/java/net/aufdemrand/denizen/Denizen.java +++ b/src/main/java/net/aufdemrand/denizen/Denizen.java @@ -606,6 +606,7 @@ public void onEnable() { ScriptEvent.registerScriptEvent(new FurnaceSmeltsItemScriptEvent()); ScriptEvent.registerScriptEvent(new ItemMoveScriptEvent()); ScriptEvent.registerScriptEvent(new ItemScrollScriptEvent()); + ScriptEvent.registerScriptEvent(new LeafDecaysScriptEvent()); ScriptEvent.registerScriptEvent(new LiquidSpreadScriptEvent()); ScriptEvent.registerScriptEvent(new ListPingScriptEvent()); ScriptEvent.registerScriptEvent(new PistonExtendsScriptEvent()); diff --git a/src/main/java/net/aufdemrand/denizen/events/scriptevents/LeafDecaysScriptEvent.java b/src/main/java/net/aufdemrand/denizen/events/scriptevents/LeafDecaysScriptEvent.java new file mode 100644 index 0000000000..ee48279fad --- /dev/null +++ b/src/main/java/net/aufdemrand/denizen/events/scriptevents/LeafDecaysScriptEvent.java @@ -0,0 +1,95 @@ +package net.aufdemrand.denizen.events.scriptevents; + +import net.aufdemrand.denizen.objects.dLocation; +import net.aufdemrand.denizen.objects.dMaterial; +import net.aufdemrand.denizen.utilities.DenizenAPI; +import net.aufdemrand.denizencore.events.ScriptEvent; +import net.aufdemrand.denizencore.objects.dObject; +import net.aufdemrand.denizencore.scripts.containers.ScriptContainer; +import net.aufdemrand.denizencore.utilities.CoreUtilities; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.LeavesDecayEvent; + +import java.util.HashMap; + +public class LeafDecaysScriptEvent extends ScriptEvent implements Listener { + + // <--[event] + // @Events + // leaves decay + // decay + // + // @Cancellable true + // + // @Triggers when leaves decay. + // + // @Context + // returns the dLocation of the leaves. + // returns the dMaterial of the leaves. + // + // --> + + public LeafDecaysScriptEvent() { + instance = this; + } + public static LeafDecaysScriptEvent instance; + public dLocation location; + public dMaterial material; + public LeavesDecayEvent event; + + @Override + public boolean couldMatch(ScriptContainer scriptContainer, String s) { + String lower = CoreUtilities.toLowerCase(s); + String mat = CoreUtilities.getXthArg(0, lower); + return lower.contains("leaves decay") + || (lower.equals(mat + " decay") && dMaterial.matches(mat)); + } + + @Override + public boolean matches(ScriptContainer scriptContainer, String s) { + String lower = CoreUtilities.toLowerCase(s); + String mat = CoreUtilities.getXthArg(0, lower); + return mat.equals("leaves") + || (material.identifySimpleNoIdentifier().toLowerCase().equals(mat)); + } + + @Override + public String getName() { + return "LeafDecays"; + } + + @Override + public void init() { + Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance()); + } + + @Override + public void destroy() { + LeavesDecayEvent.getHandlerList().unregister(this); + } + + @Override + public boolean applyDetermination(ScriptContainer container, String determination) { + return super.applyDetermination(container, determination); + } + + @Override + public HashMap getContext() { + HashMap context = super.getContext(); + context.put("location", location); + context.put("material", material); + return context; + } + + @EventHandler + public void onLeafDecays(LeavesDecayEvent event) { + location = new dLocation(event.getBlock().getLocation()); + material = dMaterial.getMaterialFrom(event.getBlock().getType(), event.getBlock().getData()); + cancelled = event.isCancelled(); + this.event = event; + fire(); + event.setCancelled(cancelled); + } +} diff --git a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/BukkitWorldScriptHelper.java b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/BukkitWorldScriptHelper.java index 0c7d7547d2..5977a116d3 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/BukkitWorldScriptHelper.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/BukkitWorldScriptHelper.java @@ -68,38 +68,6 @@ public static String doEvents(List events, dNPC npc, dPlayer player, Map // BLOCK EVENTS ///////////////// - // <--[event] - // @Events - // leaves decay - // decay - // - // @Triggers when leaves decay. - // @Context - // returns the dLocation of the leaves. - // returns the dMaterial of the leaves. - // - // @Determine - // "CANCELLED" to stop the leaves from decaying. - // - // --> - @EventHandler - public void leavesDecay(LeavesDecayEvent event) { - - Map context = new HashMap(); - dMaterial material = dMaterial.getMaterialFrom(event.getBlock().getType(), event.getBlock().getData()); - - context.put("location", new dLocation(event.getBlock().getLocation())); - context.put("material", material); - - String determination = doEvents(Arrays.asList - ("leaves decay", - material.identifySimple() + " decay"), - null, null, context, true); - - if (determination.toUpperCase().startsWith("CANCELLED")) - event.setCancelled(true); - } - // <--[event] // @Events // player changes sign