From 35ccf4087c8f8675457ec36f70276304c80dc29a Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Fri, 12 Nov 2021 18:54:52 -0800 Subject: [PATCH] implement new core advancedMatches --- .../com/denizenscript/denizen/events/BukkitScriptEvent.java | 2 +- .../java/com/denizenscript/denizen/objects/EntityTag.java | 5 +++++ .../com/denizenscript/denizen/objects/InventoryTag.java | 5 +++++ .../java/com/denizenscript/denizen/objects/ItemTag.java | 5 +++++ .../java/com/denizenscript/denizen/objects/LocationTag.java | 5 +++++ .../java/com/denizenscript/denizen/objects/MaterialTag.java | 5 +++++ .../main/java/com/denizenscript/denizen/objects/NPCTag.java | 6 ++++++ .../java/com/denizenscript/denizen/objects/PlayerTag.java | 4 ++++ .../java/com/denizenscript/denizen/objects/WorldTag.java | 4 ++++ 9 files changed, 40 insertions(+), 1 deletion(-) 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 735537f01d..da5576d06c 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java @@ -81,7 +81,7 @@ public abstract class BukkitScriptEvent extends ScriptEvent { // "location_in:": runs AreaObject checks, as defined below. // If none of the above are used, and the location is at a real block, a MaterialTag matchable is used. Refer to MaterialTag matchable list above. // - // AreaObject matchers (applies to CuboidTag, EllipsoidTag, PolygonTag, ...), sometimes identified as "": + // AreaObject matchers (applies to CuboidTag, EllipsoidTag, PolygonTag, ...), sometimes identified as "": (Note: this is internally always sourced from a LocationTag instance, not a raw area object!) // "biome:": matches if the location is in a given biome, using advanced matchers. // "cuboid" plaintext: matches if the location is in any noted cuboid. // "ellipsoid" plaintext: matches if the location is in any noted ellipsoid. diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java index 0d2f5c2673..140cbd2369 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java @@ -3920,4 +3920,9 @@ else if (getBukkitEntity() instanceof Creeper) { CoreUtilities.autoPropertyMechanism(this, mechanism); } + + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryEntity(this, matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java index c4f02ebf26..1874beb977 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java @@ -2473,4 +2473,9 @@ else if (inventory instanceof BrewerInventory) { } } } + + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryInventory(this, matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java index dac1837f16..fe2177c391 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java @@ -787,4 +787,9 @@ public void adjust(Mechanism mechanism) { CoreUtilities.autoPropertyMechanism(this, mechanism); } + + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryItem(this, matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java index 327a80c6a2..3b19eb4ed0 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java @@ -4362,4 +4362,9 @@ else if (state instanceof Dropper) { CoreUtilities.autoPropertyMechanism(this, mechanism); } + + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryLocation(this, matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java index 24e2a8322f..a2ba723495 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java @@ -684,4 +684,9 @@ public void adjust(Mechanism mechanism) { CoreUtilities.autoPropertyMechanism(this, mechanism); } + + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryMaterial(this, matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java index 114b08fe3b..b8d72c50c0 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java @@ -1,6 +1,7 @@ package com.denizenscript.denizen.objects; import com.denizenscript.denizen.Denizen; +import com.denizenscript.denizen.events.BukkitScriptEvent; import com.denizenscript.denizen.npc.traits.*; import com.denizenscript.denizen.scripts.commands.npc.EngageCommand; import com.denizenscript.denizen.scripts.containers.core.AssignmentScriptContainer; @@ -1850,4 +1851,9 @@ else if ((wp.getCurrentProvider() instanceof WanderWaypointProvider)) { } } } + + @Override + public boolean advancedMatches(String matcher) { + return isSpawned() && BukkitScriptEvent.tryEntity(getDenizenEntity(), matcher); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java index 5e36be8be1..6d0375d5d0 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java @@ -3747,6 +3747,10 @@ else if (bal > goal) { } } } + } + @Override + public boolean advancedMatches(String matcher) { + return isOnline() && BukkitScriptEvent.tryEntity(getDenizenEntity(), matcher); } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java index c234697f37..4d3482abef 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java @@ -1181,6 +1181,10 @@ public void adjust(Mechanism mechanism) { } CoreUtilities.autoPropertyMechanism(this, mechanism); + } + @Override + public boolean advancedMatches(String matcher) { + return BukkitScriptEvent.tryWorld(this, matcher); } }