From 582c874c3521f06fd78c9e65bacbe2336f63e137 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sun, 16 Jun 2013 20:48:46 +0300 Subject: [PATCH] Add "on player consumes item" and variations to world script events, as requested by Ares513. --- .../containers/core/WorldScriptHelper.java | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java index a885fcfae4..3a5053a1fe 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java @@ -14,6 +14,7 @@ import net.aufdemrand.denizen.utilities.arguments.dList; import net.aufdemrand.denizen.utilities.debugging.dB; import net.citizensnpcs.api.CitizensAPI; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.World; @@ -36,7 +37,6 @@ import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; public class WorldScriptHelper implements Listener { @@ -458,10 +458,68 @@ public void playerHitByEntity(EntityDamageByEntityEvent event) { } } - + + @EventHandler + public void playerConsume(PlayerItemConsumeEvent event) { + Map context = new HashMap(); + + String determination; + + ItemStack item = event.getItem(); + + String id = String.valueOf(item.getTypeId()); + String material = item.getType().name(); + String data = String.valueOf(item.getData().getData()); + String display = String.valueOf(item.getItemMeta().getDisplayName()); + + context.put("id", id); + context.put("material", material); + context.put("data", data); + context.put("display", display); + + determination = doEvent("player consumes item", null, event.getPlayer(), context); + + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + id, null, event.getPlayer(), context); + + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + id + ":" + data, null, event.getPlayer(), context); + + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + material, null, event.getPlayer(), context); + + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + material + ":" + data, null, event.getPlayer(), context); + + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + if (display != null) { + + determination = doEvent("player consumes " + display, null, event.getPlayer(), context); + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + id + " " + display, null, event.getPlayer(), context); + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + + determination = doEvent("player consumes " + material + " " + display, null, event.getPlayer(), context); + if (determination.toUpperCase().startsWith("CANCELLED")) + event.setCancelled(true); + } + } @EventHandler - public void playerEat(EntityRegainHealthEvent event) { + public void playerHeal(EntityRegainHealthEvent event) { if (event.getEntity() instanceof Player && !CitizensAPI.getNPCRegistry().isNPC(event.getEntity())) {