From f7854623e97e50631ee04505fc87633a98e5ede8 Mon Sep 17 00:00:00 2001 From: Talamar1 Date: Sat, 13 Jun 2015 19:16:14 -0400 Subject: [PATCH] Rewrote "on player takes item from furnace" event in new ScriptEvent format. Removed from BukkitWorldScriptHelper. --- .../java/net/aufdemrand/denizen/Denizen.java | 2 + .../PlayerTakesFromFurnaceScriptEvent.java | 105 ++++++++++++++++++ .../core/BukkitWorldScriptHelper.java | 40 ------- 3 files changed, 107 insertions(+), 40 deletions(-) create mode 100644 src/main/java/net/aufdemrand/denizen/events/scriptevents/PlayerTakesFromFurnaceScriptEvent.java diff --git a/src/main/java/net/aufdemrand/denizen/Denizen.java b/src/main/java/net/aufdemrand/denizen/Denizen.java index d991c7ca8d..6aae7c64b1 100644 --- a/src/main/java/net/aufdemrand/denizen/Denizen.java +++ b/src/main/java/net/aufdemrand/denizen/Denizen.java @@ -77,6 +77,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.plugin.java.JavaPlugin; +import sun.security.jgss.krb5.Krb5Util; // <--[language] // @name dObjects @@ -612,6 +613,7 @@ public void onEnable() { ScriptEvent.registerScriptEvent(new PlayerDamagesBlockScriptEvent()); ScriptEvent.registerScriptEvent(new PlayerJumpScriptEvent()); ScriptEvent.registerScriptEvent(new PlayerPlacesBlockScriptEvent()); + ScriptEvent.registerScriptEvent(new PlayerTakesFromFurnaceScriptEvent()); ScriptEvent.registerScriptEvent(new PlayerWalkScriptEvent()); ScriptEvent.registerScriptEvent(new RedstoneScriptEvent()); ScriptEvent.registerScriptEvent(new ResourcePackStatusScriptEvent()); diff --git a/src/main/java/net/aufdemrand/denizen/events/scriptevents/PlayerTakesFromFurnaceScriptEvent.java b/src/main/java/net/aufdemrand/denizen/events/scriptevents/PlayerTakesFromFurnaceScriptEvent.java new file mode 100644 index 0000000000..52ddf0234d --- /dev/null +++ b/src/main/java/net/aufdemrand/denizen/events/scriptevents/PlayerTakesFromFurnaceScriptEvent.java @@ -0,0 +1,105 @@ +package net.aufdemrand.denizen.events.scriptevents; + +import net.aufdemrand.denizen.objects.*; +import net.aufdemrand.denizen.utilities.DenizenAPI; +import net.aufdemrand.denizencore.events.ScriptEvent; +import net.aufdemrand.denizencore.objects.Element; +import net.aufdemrand.denizencore.objects.aH; +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.inventory.FurnaceExtractEvent; + +import java.util.HashMap; + +public class PlayerTakesFromFurnaceScriptEvent extends ScriptEvent implements Listener { + + // <--[event] + // @Events + // player takes item from furnace + // player takes from furnace + // player takes from furnace + // + // @Triggers when a player takes an item from a furnace. + // @Context + // returns the dLocation of the furnace. + // returns the dItem taken out of the furnace. + // + // @Determine + // Element(Number) to set the amount of experience the player will get. + // + // --> + + public PlayerTakesFromFurnaceScriptEvent() { + instance = this; + } + public static PlayerTakesFromFurnaceScriptEvent instance; + public dLocation location; + public dItem item; + public Element xp; + public FurnaceExtractEvent event; + + @Override + public boolean couldMatch(ScriptContainer scriptContainer, String s) { + String lower = CoreUtilities.toLowerCase(s); + return lower.startsWith("player takes") + && (CoreUtilities.getXthArg(4, lower).equals("furnace")); + } + + @Override + public boolean matches(ScriptContainer scriptContainer, String s) { + String itemTest = CoreUtilities.getXthArg(2, CoreUtilities.toLowerCase(s)); + + return (itemTest.equals("block") + || !itemTest.equals(item.identifySimpleNoIdentifier())); + } + + @Override + public String getName() { + return "PlayerTakesFromFurnace"; + } + + @Override + public void init() { + Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance()); + } + + @Override + public void destroy() { + FurnaceExtractEvent.getHandlerList().unregister(this); + } + + @Override + public boolean applyDetermination(ScriptContainer container, String determination) { + String lower = CoreUtilities.toLowerCase(determination); + + if (aH.Argument.valueOf(lower).matchesPrimitive(aH.PrimitiveType.Integer)) { + xp = aH.Argument.valueOf(lower).asElement(); + return true; + } + return super.applyDetermination(container, determination); + } + + @Override + public HashMap getContext() { + HashMap context = super.getContext(); + context.put("location", location); + context.put("item", item); + return context; + } + + @EventHandler + public void onPlayerTakesFromFurnace(FurnaceExtractEvent event) { + item = new dItem(dMaterial.getMaterialFrom(event.getItemType()), event.getItemAmount()); + location = new dLocation(event.getBlock().getLocation()); + xp = new Element(event.getExpToDrop()); + this.event = event; + fire(); + event.setExpToDrop(xp.asInt()); + } + +} 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 570d9339ae..6d8b501481 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,46 +68,6 @@ public static String doEvents(List events, dNPC npc, dPlayer player, Map // BLOCK EVENTS ///////////////// - // <--[event] - // @Events - // player takes item from furnace - // player takes from furnace - // player takes from furnace - // - // @Triggers when a player takes an item from a furnace. - // @Context - // returns the dLocation of the furnace. - // returns the dItem taken out of the furnace. - // - // @Determine - // Element(Number) to set the amount of experience the player will get. - // - // --> - @EventHandler - public void furnaceExtract(FurnaceExtractEvent event) { - - if (dEntity.isNPC(event.getPlayer())) - return; - - Map context = new HashMap(); - dMaterial itemMaterial = dMaterial.getMaterialFrom(event.getItemType()); - dItem item = new dItem(itemMaterial, event.getItemAmount()); - - context.put("location", new dLocation(event.getBlock().getLocation())); - context.put("item", item); - - String determination = doEvents(Arrays.asList - ("player takes item from furnace", - "player takes " + item.identifySimple() + " from furnace", - "player takes " + item.identifyMaterial() + " from furnace"), - null, dEntity.getPlayerFrom(event.getPlayer()), context, true); - - if (Argument.valueOf(determination) - .matchesPrimitive(aH.PrimitiveType.Integer)) { - event.setExpToDrop(aH.getIntegerFrom(determination)); - } - } - // <--[event] // @Events // furnace smelts item (into )