diff --git a/paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java b/paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java index 8d465ba95d..6b04037f1f 100644 --- a/paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java +++ b/paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java @@ -1,6 +1,6 @@ package com.denizenscript.denizen.paper.events; -import com.denizenscript.denizen.events.player.AreaEnterExitScriptEvent; +import com.denizenscript.denizen.events.entity.AreaEnterExitScriptEvent; import com.denizenscript.denizen.objects.EntityTag; import com.denizenscript.denizen.objects.LocationTag; import com.denizenscript.denizencore.objects.ObjectTag; diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java index ec25e1b28d..c50c776c38 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java @@ -539,6 +539,11 @@ else if (isAdvancedMatchable(lower)) { return true; } } + for (PolygonTag polygon : NotableManager.getAllType(PolygonTag.class)) { + if (polygon.doesContainLocation(location) && matcher.doesMatch(polygon.noteName)) { + return true; + } + } for (World world : Bukkit.getWorlds()) { if (matcher.doesMatch(CoreUtilities.toLowerCase(world.getName()))) { return true; diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java b/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java index a114bbb061..d0f33505d7 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java @@ -45,6 +45,9 @@ public static void registerMainEvents() { ScriptEvent.registerScriptEvent(new RedstoneScriptEvent()); // Entity events + if (!Denizen.supportsPaper) { + ScriptEvent.registerScriptEvent(new AreaEnterExitScriptEvent()); + } ScriptEvent.registerScriptEvent(new CreeperPoweredScriptEvent()); ScriptEvent.registerScriptEvent(new DragonPhaseChangeScriptEvent()); ScriptEvent.registerScriptEvent(new EntityAirLevelChangeScriptEvent()); @@ -111,9 +114,6 @@ public static void registerMainEvents() { ScriptEvent.registerScriptEvent(new ItemSpawnsScriptEvent()); // Player events - if (!Denizen.supportsPaper) { - ScriptEvent.registerScriptEvent(new AreaEnterExitScriptEvent()); - } ScriptEvent.registerScriptEvent(new BiomeEnterExitScriptEvent()); ScriptEvent.registerScriptEvent(new BlockDropsItemScriptEvent()); ScriptEvent.registerScriptEvent(new ChatScriptEvent()); diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/player/AreaEnterExitScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEnterExitScriptEvent.java similarity index 95% rename from plugin/src/main/java/com/denizenscript/denizen/events/player/AreaEnterExitScriptEvent.java rename to plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEnterExitScriptEvent.java index bb2e6c39da..56555ffdd9 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/player/AreaEnterExitScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEnterExitScriptEvent.java @@ -1,4 +1,4 @@ -package com.denizenscript.denizen.events.player; +package com.denizenscript.denizen.events.entity; import com.denizenscript.denizen.events.BukkitScriptEvent; import com.denizenscript.denizen.objects.*; @@ -31,7 +31,7 @@ public class AreaEnterExitScriptEvent extends BukkitScriptEvent implements Liste // // @Regex ^on [^\s]+ (enters|exits) [^\s]+$ // - // @Group Player + // @Group Entity // // @Triggers when an entity enters or exits a noted area (cuboid, ellipsoid, or polygon). On Spigot servers, only fires for players. Paper is required for other mob types. // @@ -108,6 +108,9 @@ else if (areaName.equals("ellipsoid")) { return false; } } + if (!tryEntity(currentEntity, path.eventArgLowerAt(0))) { + return false; + } return super.matches(path); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/TitleCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/TitleCommand.java index 2653babfc2..9477ba7877 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/TitleCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/TitleCommand.java @@ -60,7 +60,6 @@ public TitleCommand() { @Override public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException { - for (Argument arg : ArgumentHelper.interpret(scriptEntry, scriptEntry.getOriginalArguments())) { if (arg.matchesPrefix("title")) { scriptEntry.addObject("title", arg.asElement()); @@ -93,23 +92,18 @@ else if (!scriptEntry.hasObject("per_player") else { arg.reportUnhandled(); } - } - if (!scriptEntry.hasObject("title") && !scriptEntry.hasObject("subtitle")) { throw new InvalidArgumentsException("Must have a title or subtitle!"); } - scriptEntry.defaultObject("fade_in", new DurationTag(1)).defaultObject("stay", new DurationTag(3)) .defaultObject("fade_out", new DurationTag(1)) .defaultObject("targets", Arrays.asList(Utilities.getEntryPlayer(scriptEntry))) .defaultObject("subtitle", new ElementTag("")).defaultObject("title", new ElementTag("")); - } @Override public void execute(ScriptEntry scriptEntry) { - String title = scriptEntry.getElement("title").asString(); String subtitle = scriptEntry.getElement("subtitle").asString(); DurationTag fade_in = scriptEntry.getObjectTag("fade_in"); @@ -117,14 +111,12 @@ public void execute(ScriptEntry scriptEntry) { DurationTag fade_out = scriptEntry.getObjectTag("fade_out"); List targets = (List) scriptEntry.getObject("targets"); ElementTag perPlayerObj = scriptEntry.getElement("per_player"); - boolean perPlayer = perPlayerObj != null && perPlayerObj.asBoolean(); BukkitTagContext context = (BukkitTagContext) scriptEntry.getContext(); if (!perPlayer) { title = TagManager.tag(title, context); subtitle = TagManager.tag(subtitle, context); } - if (scriptEntry.dbCallShouldDebug()) { Debug.report(scriptEntry, getName(), ArgumentHelper.debugObj("title", title) @@ -135,7 +127,6 @@ public void execute(ScriptEntry scriptEntry) { + ArgumentHelper.debugList("targets", targets) + (perPlayerObj != null ? perPlayerObj.debug() : "")); } - for (PlayerTag player : targets) { if (player != null) { if (!player.isOnline()) { @@ -155,7 +146,5 @@ public void execute(ScriptEntry scriptEntry) { Debug.echoError("Sent title to non-existent player!?"); } } - } - }