From 6834bd3a03886d4c5b4484b11b677ab855e83efb Mon Sep 17 00:00:00 2001 From: David Cernat Date: Thu, 4 Jul 2013 01:28:26 +0300 Subject: [PATCH] Fix errors in "on entity targets entity" world event. --- .../containers/core/WorldScriptHelper.java | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 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 ecd812fa9c..90a2c85baa 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 @@ -521,21 +521,42 @@ public void entityTarget(EntityTargetEvent event) { Map context = new HashMap(); Entity entity = event.getEntity(); Entity target = event.getTarget(); + Player player = null; + + String reason = event.getReason().name(); + String entityType = entity.getType().name(); - context.put("reason", event.getReason().name()); context.put("entity", new dEntity(entity)); + context.put("reason", reason); - if (event.getTarget() instanceof Player) { - context.put("target", new dPlayer((Player) target)); - } - else { - context.put("target", new dEntity(target)); - } + List events = new ArrayList(); + events.add("entity targets"); + events.add("entity targets because " + reason); + events.add(entityType + " targets because " + reason); - String determination = doEvents(Arrays.asList - (entity.getType().name() + " targets " + target.getType().name(), - entity.getType().name() + " targets " + target.getType().name() + " because " + event.getReason().name()), - null, null, context); + if (target != null) { + + if (event.getTarget() instanceof Player) { + player = (Player) target; + context.put("target", new dPlayer(player)); + } + else { + context.put("target", new dEntity(target)); + } + + String targetType = target.getType().name(); + + events.add("entity targets entity"); + events.add("entity targets entity because " + reason); + events.add("entity targets " + targetType); + events.add("entity targets " + targetType + " because " + reason); + events.add(entityType + " targets entity"); + events.add(entityType + " targets entity because " + reason); + events.add(entityType + " targets " + targetType); + events.add(entityType + " targets " + targetType + " because " + reason); + } + + String determination = doEvents(events, null, player, context); if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true);