From d4ceea2da6fde803b90ddc286479bd6d36756791 Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Sun, 13 Oct 2019 08:20:51 -0700 Subject: [PATCH] clean up of entity create portal event, relates to #2043 --- .../entity/EntityCreatePortalScriptEvent.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java index 86627dd5c9..30c614f964 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java @@ -3,11 +3,12 @@ import com.denizenscript.denizen.objects.EntityTag; import com.denizenscript.denizen.BukkitScriptEntryData; import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.objects.LocationTag; import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ListTag; import com.denizenscript.denizencore.scripts.ScriptEntryData; -import com.denizenscript.denizencore.scripts.containers.ScriptContainer; -import com.denizenscript.denizencore.utilities.CoreUtilities; +import org.bukkit.block.BlockState; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityCreatePortalEvent; @@ -20,15 +21,17 @@ public class EntityCreatePortalScriptEvent extends BukkitScriptEvent implements // creates portal // // @Regex ^on [^\s]+ creates portal$ + // // @Switch in // // @Cancellable true // - // @Triggers when an entity creates a portal. + // @Triggers when an entity creates a portal. Generally, prefer <@link event portal created> instead of this. // // @Context // returns the EntityTag that created the portal. - // returns the type of portal: CUSTOM, ENDER, NETHER. + // returns the type of portal: CUSTOM, ENDER, or NETHER. + // returns a list of block locations where the portal is being created. // // @Player if the entity that created the portal is a player. // @@ -40,25 +43,21 @@ public EntityCreatePortalScriptEvent() { public static EntityCreatePortalScriptEvent instance; public EntityTag entity; - public ElementTag portal_type; public EntityCreatePortalEvent event; @Override - public boolean couldMatch(ScriptContainer scriptContainer, String s) { - return CoreUtilities.toLowerCase(s).contains("creates portal"); + public boolean couldMatch(ScriptPath path) { + return path.eventLower.contains("creates portal"); } @Override public boolean matches(ScriptPath path) { - if (!tryEntity(entity, path.eventArgLowerAt(0))) { return false; } - if (!runInCheck(path, entity.getLocation())) { return false; } - return true; } @@ -69,8 +68,8 @@ public String getName() { @Override public ScriptEntryData getScriptEntryData() { - return new BukkitScriptEntryData(entity.isPlayer() ? EntityTag.getPlayerFrom(event.getEntity()) : null, - entity.isCitizensNPC() ? EntityTag.getNPCFrom(event.getEntity()) : null); + return new BukkitScriptEntryData(entity.isPlayer() ? entity.getDenizenPlayer() : null, + entity.isCitizensNPC() ? entity.getDenizenNPC() : null); } @Override @@ -79,7 +78,14 @@ public ObjectTag getContext(String name) { return entity; } else if (name.equals("portal_type")) { - return portal_type; + return new ElementTag(event.getPortalType().toString()); + } + else if (name.equals("blocks")) { + ListTag blocks = new ListTag(); + for (BlockState block : event.getBlocks()) { + blocks.add(new LocationTag(block.getBlock().getLocation()).identifySimple()); + } + return blocks; } return super.getContext(name); } @@ -87,15 +93,6 @@ else if (name.equals("portal_type")) { @EventHandler public void onEntityCreatesPortal(EntityCreatePortalEvent event) { entity = new EntityTag(event.getEntity()); - portal_type = new ElementTag(event.getPortalType().toString()); - // TODO: Add this back? -/* - blocks = new ListTag(); - for (int i=0; i < event.getBlocks().size(); i++) { - LocationTag tempLoc = new LocationTag(event.getBlocks().get(i).getBlock().getLocation()); - blocks.add(tempLoc.identifySimple()); - } -*/ this.event = event; fire(event); }