From 2e584ac438d7c2f862067541fe987442c825d113 Mon Sep 17 00:00:00 2001 From: AnthonyAMC Date: Fri, 20 Feb 2015 16:56:20 -0500 Subject: [PATCH] Include modifications to BucketFillScriptEvent that didnt get staged. --- .../java/net/aufdemrand/denizen/Denizen.java | 2 ++ .../scriptevents/BucketFillScriptEvent.java | 31 ++++++++++------- .../core/BukkitWorldScriptHelper.java | 34 ------------------- 3 files changed, 21 insertions(+), 46 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/Denizen.java b/src/main/java/net/aufdemrand/denizen/Denizen.java index 0c9fa1b23a..d5df23d41a 100644 --- a/src/main/java/net/aufdemrand/denizen/Denizen.java +++ b/src/main/java/net/aufdemrand/denizen/Denizen.java @@ -11,6 +11,7 @@ import net.aufdemrand.denizen.events.scriptevents.EntityDespawnScriptEvent; import net.aufdemrand.denizen.events.scriptevents.EntityTeleportScriptEvent; import net.aufdemrand.denizen.events.scriptevents.LiquidSpreadScriptEvent; +import net.aufdemrand.denizen.events.scriptevents.BucketFillScriptEvent; import net.aufdemrand.denizen.events.scriptevents.VehicleMoveScriptEvent; import net.aufdemrand.denizen.objects.properties.bukkit.BukkitElementProperties; import net.aufdemrand.denizen.objects.properties.bukkit.BukkitListProperties; @@ -597,6 +598,7 @@ public void onEnable() { ScriptEvent.registerScriptEvent(new EntityTeleportScriptEvent()); ScriptEvent.registerScriptEvent(new LiquidSpreadScriptEvent()); ScriptEvent.registerScriptEvent(new EntityDespawnScriptEvent()); + ScriptEvent.registerScriptEvent(new BucketFillScriptEvent()); ObjectFetcher.registerWithObjectFetcher(dItem.class); // i@ diff --git a/src/main/java/net/aufdemrand/denizen/events/scriptevents/BucketFillScriptEvent.java b/src/main/java/net/aufdemrand/denizen/events/scriptevents/BucketFillScriptEvent.java index fe3a83b3b8..da6819970e 100644 --- a/src/main/java/net/aufdemrand/denizen/events/scriptevents/BucketFillScriptEvent.java +++ b/src/main/java/net/aufdemrand/denizen/events/scriptevents/BucketFillScriptEvent.java @@ -1,11 +1,11 @@ package net.aufdemrand.denizen.events.scriptevents; -import net.aufdemrand.denizen.objects.dItem; -import net.aufdemrand.denizen.objects.dLocation; -import net.aufdemrand.denizen.objects.dMaterial; +import net.aufdemrand.denizen.BukkitScriptEntryData; +import net.aufdemrand.denizen.objects.*; import net.aufdemrand.denizen.utilities.DenizenAPI; import net.aufdemrand.denizencore.events.ScriptEvent; import net.aufdemrand.denizencore.objects.dObject; +import net.aufdemrand.denizencore.scripts.ScriptEntryData; import net.aufdemrand.denizencore.scripts.containers.ScriptContainer; import net.aufdemrand.denizencore.utilities.CoreUtilities; import org.bukkit.Bukkit; @@ -20,6 +20,7 @@ public class BucketFillScriptEvent extends ScriptEvent implements Listener { // <--[event] // @Events // player fills bucket + // player fills bucket with // // @Triggers when a player fills a bucket. // @@ -39,29 +40,28 @@ public BucketFillScriptEvent() { } public static BucketFillScriptEvent instance; + public dEntity entity; public dItem item; public dMaterial material; public dLocation location; public dLocation relative; - public PlayerBucketFillEvent event; + public PlayerBucketFillEvent pEvent; @Override public boolean couldMatch(ScriptContainer scriptContainer, String s) { String lower = CoreUtilities.toLowerCase(s); - return CoreUtilities.xthArgEquals(1, lower, "fills") - && (CoreUtilities.xthArgEquals(3, lower, "bucket") - || CoreUtilities.xthArgEquals(2, lower, "bucket")); + return CoreUtilities.xthArgEquals(1, lower, "fills"); } @Override public boolean matches(ScriptContainer scriptContainer, String s) { String lower = CoreUtilities.toLowerCase(s); - String iName = event.getBucket().getData().getName().toLowerCase(); - String iName2 = material.identifySimple().substring(2); + String matName = pEvent.getBlockClicked().getRelative(pEvent.getBlockFace()).getType().getData().getName().toLowerCase(); + String matName2 = material.identifySimple().substring(2); return (lower.startsWith("player fills bucket") - || lower.startsWith("player fills" + iName + "bucket") - || lower.startsWith("player fills" + iName2 + "bucket")); + || lower.endsWith("with" + matName) + || lower.endsWith("with" + matName2)); } @Override @@ -84,6 +84,12 @@ public boolean applyDetermination(ScriptContainer container, String determinatio return super.applyDetermination(container, determination); } + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(pEvent != null ? new dPlayer(pEvent.getPlayer()): null, + entity.isNPC() ? entity.getDenizenNPC(): null); + } + @Override public HashMap getContext() { HashMap context = super.getContext(); @@ -96,12 +102,13 @@ public HashMap getContext() { @EventHandler public void onBucketFill(PlayerBucketFillEvent event) { + entity = new dEntity(event.getPlayer()); location = new dLocation(event.getBlockClicked().getLocation()); relative = new dLocation(event.getBlockClicked().getRelative(event.getBlockFace()).getLocation()); item = new dItem(event.getBucket()); material = dMaterial.getMaterialFrom(event.getBlockClicked().getRelative(event.getBlockFace()).getType(), event.getBlockClicked().getRelative(event.getBlockFace()).getData()); cancelled = event.isCancelled(); - this.event = event; + pEvent = 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 304dd2d27b..12dcab23e7 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 @@ -3035,40 +3035,6 @@ public void playerBucketEmpty(PlayerBucketEmptyEvent event) { } - // <--[event] - // @Events - // player fills bucket - // - // @Triggers when a player fills a bucket. - // @Context - // returns the dItem of the bucket. - // returns the dLocation of the block clicked with the bucket. - // - // @Determine - // "CANCELLED" to stop the player from filling the bucket. - // dItem to set the item in the player's hand after the event. - // - // --> - @EventHandler - public void playerBucketFill(PlayerBucketFillEvent event) { - - Map context = new HashMap(); - context.put("item", new dItem(event.getBucket())); - context.put("location", new dLocation(event.getBlockClicked().getLocation())); - - String determination = doEvents(Arrays.asList - ("player fills bucket"), - null, new dPlayer(event.getPlayer()), context); - - // Handle message - if (determination.toUpperCase().startsWith("CANCELLED")) - event.setCancelled(true); - if (dItem.matches(determination)) { - ItemStack is = dItem.valueOf(determination).getItemStack(); - event.setItemStack( is != null ? is : new ItemStack(Material.AIR)); - } - } - // <--[event] // @Events // player changes world