From af6ac27960ea635759220e32bb55eafc0eb079d7 Mon Sep 17 00:00:00 2001 From: Adrian Victor Date: Wed, 20 May 2026 15:38:45 -0300 Subject: [PATCH] Refactor codebase to use LivingEntity, add SPAWN action and handler, add DataShifter.parseValueToStringList overload that iterates over a list of strings. --- .../adrianvic/nemesiseye/DataShifter.java | 11 ++++++- .../github/adrianvic/nemesiseye/Events.java | 5 +++ .../adrianvic/nemesiseye/Validator.java | 5 +-- .../adrianvic/nemesiseye/policy/Action.java | 3 +- .../nemesiseye/policy/NodeHandler.java | 3 +- .../nemesiseye/policy/NodeHandlers.java | 15 +++++---- .../adrianvic/nemesiseye/policy/Policy.java | 5 +-- .../nemesiseye/policy/PolicyNode.java | 3 +- .../handlers/{bePlaced.java => BePlaced.java} | 5 +-- .../handlers/{equip.java => Equip.java} | 5 +-- .../handlers/{glyde.java => Glyde.java} | 5 +-- .../nemesiseye/policy/handlers/Spawn.java | 21 ++++++++++++ .../policy/handlers/UseEnchantment.java | 33 +++++++++++++++++++ .../handlers/{useItem.java => UseItem.java} | 15 +++++---- .../policy/handlers/useEnchantment.java | 28 ---------------- .../nemesiseye/policy/policies/Core.java | 3 +- .../policy/policies/GlobalPolicy.java | 3 +- .../policy/policies/LocationPolicy.java | 3 +- .../policy/policies/PermissionPolicy.java | 3 +- .../policy/policies/PlayerNamePolicy.java | 3 +- .../nemesiseye/impl/EventListener.java | 7 +++- 21 files changed, 123 insertions(+), 61 deletions(-) rename src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/{bePlaced.java => BePlaced.java} (81%) rename src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/{equip.java => Equip.java} (93%) rename src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/{glyde.java => Glyde.java} (65%) create mode 100644 src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Spawn.java create mode 100644 src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseEnchantment.java rename src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/{useItem.java => UseItem.java} (54%) delete mode 100644 src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useEnchantment.java diff --git a/src/main/java/io/github/adrianvic/nemesiseye/DataShifter.java b/src/main/java/io/github/adrianvic/nemesiseye/DataShifter.java index ceb0e36..45ec7b5 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/DataShifter.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/DataShifter.java @@ -7,13 +7,22 @@ import java.util.Map; import java.util.regex.Pattern; public class DataShifter { - public static boolean safeMatches(String expression, String against) { String cleanPattern = expression.trim(); Pattern pattern = Pattern.compile(cleanPattern, Pattern.CASE_INSENSITIVE); return pattern.matcher(against).matches(); } + public static boolean safeMatches(List expressions, String against) { + for (String s : expressions) { + if (DataShifter.safeMatches(s, against)) { + return true; + } + } + + return false; + } + public static List parseValueToStringList(List values) { List result = new ArrayList<>(); for (Object o : values) { diff --git a/src/main/java/io/github/adrianvic/nemesiseye/Events.java b/src/main/java/io/github/adrianvic/nemesiseye/Events.java index 442bbdc..58b5140 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/Events.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/Events.java @@ -6,6 +6,7 @@ import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; @@ -89,6 +90,10 @@ public class Events { } } + public static void onCreatureSpawnEvent(CreatureSpawnEvent event) { + event.setCancelled(!Validator.can(event.getEntity(), Action.SPAWN, event)); + } + private static boolean isArmorEquipAttempt(InventoryClickEvent event) { if (event.getSlotType() == InventoryType.SlotType.ARMOR) { return true; diff --git a/src/main/java/io/github/adrianvic/nemesiseye/Validator.java b/src/main/java/io/github/adrianvic/nemesiseye/Validator.java index 9222de5..9989ea6 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/Validator.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/Validator.java @@ -3,6 +3,7 @@ package io.github.adrianvic.nemesiseye; import io.github.adrianvic.nemesiseye.policy.Action; import io.github.adrianvic.nemesiseye.policy.Policy; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; import java.util.ArrayList; @@ -19,7 +20,7 @@ public class Validator { return true; } - public static boolean can(HumanEntity entity, Action action, Event event) { + public static boolean can(LivingEntity entity, Action action, Event event) { boolean restricted = false; boolean allowed = false; @@ -41,7 +42,7 @@ public class Validator { } - public static List getPoliciesForEntity(HumanEntity entity) { + public static List getPoliciesForEntity(LivingEntity entity) { List ps = Config.getInstance().getPolicies(); List result = new ArrayList<>(); diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java index b80f6a9..debbb36 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java @@ -8,5 +8,6 @@ public enum Action { EQUIP, PLACE, USE_ENCHANTMENT, - GLYDE + GLYDE, + SPAWN } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandler.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandler.java index 31fa568..2202797 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandler.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandler.java @@ -1,8 +1,9 @@ package io.github.adrianvic.nemesiseye.policy; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; public interface NodeHandler { - boolean check(HumanEntity entity, PolicyNode node, Action action, Event event); + boolean check(LivingEntity entity, PolicyNode node, Action action, Event event); } \ No newline at end of file diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java index 465747e..70f4a49 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java @@ -9,13 +9,14 @@ public class NodeHandlers { private static final Map handlers = new HashMap<>(); static { - handlers.put(Action.HIT, new useItem()); - handlers.put(Action.PLACE, new bePlaced()); - handlers.put(Action.INTERACT, new useItem()); - handlers.put(Action.USE_ENCHANTMENT, new useEnchantment()); - handlers.put(Action.GLYDE, new glyde()); - handlers.put(Action.EQUIP, new equip()); - handlers.put(Action.BREAK, new useItem()); // TODO: implement place handler + handlers.put(Action.HIT, new UseItem()); + handlers.put(Action.PLACE, new BePlaced()); + handlers.put(Action.INTERACT, new UseItem()); + handlers.put(Action.USE_ENCHANTMENT, new UseEnchantment()); + handlers.put(Action.GLYDE, new Glyde()); + handlers.put(Action.EQUIP, new Equip()); + handlers.put(Action.SPAWN, new Spawn()); + handlers.put(Action.BREAK, new UseItem()); // TODO: implement place handler } public static NodeHandler get(Action type) { diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/Policy.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/Policy.java index 5992433..5cb69cc 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/Policy.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/Policy.java @@ -1,6 +1,7 @@ package io.github.adrianvic.nemesiseye.policy; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; import java.util.List; @@ -9,7 +10,7 @@ public interface Policy { String name(); List nodes(); boolean policyAllowList(); - boolean applies(HumanEntity entity); + boolean applies(LivingEntity entity); Effect effect(); int weight(); List worlds(); @@ -18,7 +19,7 @@ public interface Policy { nodes().add(node); } - default boolean matches(HumanEntity entity, Action action, Event event) { + default boolean matches(LivingEntity entity, Action action, Event event) { if (!worlds().contains(entity.getWorld().getName())) { return false; } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/PolicyNode.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/PolicyNode.java index c87f916..8dcbc4e 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/PolicyNode.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/PolicyNode.java @@ -2,6 +2,7 @@ package io.github.adrianvic.nemesiseye.policy; import io.github.adrianvic.nemesiseye.DataShifter; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; import java.util.ArrayList; @@ -55,7 +56,7 @@ public record PolicyNode(List actions, List values) { return handlers; } - public boolean matches(HumanEntity entity, Action action, Event event) { + public boolean matches(LivingEntity entity, Action action, Event event) { if (!actions.contains(action)) { return false; } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/bePlaced.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/BePlaced.java similarity index 81% rename from src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/bePlaced.java rename to src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/BePlaced.java index edf5d7c..8e6f28b 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/bePlaced.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/BePlaced.java @@ -5,12 +5,13 @@ import io.github.adrianvic.nemesiseye.policy.Action; import io.github.adrianvic.nemesiseye.policy.NodeHandler; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; import org.bukkit.event.block.BlockPlaceEvent; -public class bePlaced implements NodeHandler { +public class BePlaced implements NodeHandler { @Override - public boolean check(HumanEntity entity, PolicyNode node, Action action, Event event) { + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { if (event instanceof BlockPlaceEvent bpe) { String type = bpe.getBlock().getType().toString(); diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/equip.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Equip.java similarity index 93% rename from src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/equip.java rename to src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Equip.java index 88bb6b6..73c1c1f 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/equip.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Equip.java @@ -6,6 +6,7 @@ import io.github.adrianvic.nemesiseye.policy.Action; import io.github.adrianvic.nemesiseye.policy.NodeHandler; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.inventory.ClickType; @@ -13,10 +14,10 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; -public class equip implements NodeHandler { +public class Equip implements NodeHandler { @Override - public boolean check(HumanEntity entity, PolicyNode node, Action action, Event event) { + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { ItemStack item = null; if (event instanceof PlayerArmorChangeEvent e) { diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/glyde.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Glyde.java similarity index 65% rename from src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/glyde.java rename to src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Glyde.java index dcce855..f9b9233 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/glyde.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Glyde.java @@ -4,11 +4,12 @@ import io.github.adrianvic.nemesiseye.policy.Action; import io.github.adrianvic.nemesiseye.policy.NodeHandler; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; -public class glyde implements NodeHandler { +public class Glyde implements NodeHandler { @Override - public boolean check(HumanEntity entity, PolicyNode node, Action action, Event event) { + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { return true; } } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Spawn.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Spawn.java new file mode 100644 index 0000000..938f6ee --- /dev/null +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Spawn.java @@ -0,0 +1,21 @@ +package io.github.adrianvic.nemesiseye.policy.handlers; + +import io.github.adrianvic.nemesiseye.DataShifter; +import io.github.adrianvic.nemesiseye.policy.Action; +import io.github.adrianvic.nemesiseye.policy.NodeHandler; +import io.github.adrianvic.nemesiseye.policy.PolicyNode; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.Event; + +import java.util.List; + +public class Spawn implements NodeHandler { + + @Override + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { + String type = entity.getType().name(); + List parsedValue = DataShifter.parseValueToStringList(node.values()); + + return DataShifter.safeMatches(parsedValue, type); + } +} diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseEnchantment.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseEnchantment.java new file mode 100644 index 0000000..38b4f93 --- /dev/null +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseEnchantment.java @@ -0,0 +1,33 @@ +package io.github.adrianvic.nemesiseye.policy.handlers; + +import io.github.adrianvic.nemesiseye.DataShifter; +import io.github.adrianvic.nemesiseye.Nemesis; +import io.github.adrianvic.nemesiseye.policy.Action; +import io.github.adrianvic.nemesiseye.policy.NodeHandler; +import io.github.adrianvic.nemesiseye.policy.PolicyNode; +import io.github.adrianvic.nemesiseye.reflection.Glimmer; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.Event; +import org.bukkit.inventory.ItemStack; + +public class UseEnchantment implements NodeHandler { + private final Glimmer glim = Nemesis.getInstance().getGlimmer(); + + @Override + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { + if (entity instanceof HumanEntity e) { + ItemStack item = glim.getItemInMainHandHumanEntity(e); + + if (!glim.hasItemMeta(item)) return false; + if (!glim.hasAnyEnchantment(item)) return false; + + boolean matches = glim.hasEnchantment(item, + DataShifter.parseValueToStringMap(node.values())); + + return matches; + } + + return false; + } +} diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useItem.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseItem.java similarity index 54% rename from src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useItem.java rename to src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseItem.java index 6009407..45be0a7 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useItem.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/UseItem.java @@ -7,19 +7,22 @@ import io.github.adrianvic.nemesiseye.policy.NodeHandler; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import io.github.adrianvic.nemesiseye.reflection.Glimmer; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; -public class useItem implements NodeHandler { +public class UseItem implements NodeHandler { private final Glimmer glim = Nemesis.getInstance().getGlimmer(); @Override - public boolean check(HumanEntity entity, PolicyNode node, Action action, Event event) { - String type = glim.getItemInMainHandHumanEntity(entity).getType().toString(); + public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { + if (entity instanceof HumanEntity e) { + String type = glim.getItemInMainHandHumanEntity(e).getType().toString(); - for (String s : DataShifter.parseValueToStringList(node.values())) { - if (DataShifter.safeMatches(s, type)) { - return true; + for (String s : DataShifter.parseValueToStringList(node.values())) { + if (DataShifter.safeMatches(s, type)) { + return true; + } } } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useEnchantment.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useEnchantment.java deleted file mode 100644 index 5fe3ae0..0000000 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/useEnchantment.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.adrianvic.nemesiseye.policy.handlers; - -import io.github.adrianvic.nemesiseye.DataShifter; -import io.github.adrianvic.nemesiseye.Nemesis; -import io.github.adrianvic.nemesiseye.policy.Action; -import io.github.adrianvic.nemesiseye.policy.NodeHandler; -import io.github.adrianvic.nemesiseye.policy.PolicyNode; -import io.github.adrianvic.nemesiseye.reflection.Glimmer; -import org.bukkit.entity.HumanEntity; -import org.bukkit.event.Event; -import org.bukkit.inventory.ItemStack; - -public class useEnchantment implements NodeHandler { - private final Glimmer glim = Nemesis.getInstance().getGlimmer(); - - @Override - public boolean check(HumanEntity entity, PolicyNode node, Action action, Event event) { - ItemStack item = glim.getItemInMainHandHumanEntity(entity); - - if (!glim.hasItemMeta(item)) return false; - if (!glim.hasAnyEnchantment(item)) return false; - - boolean matches = glim.hasEnchantment(item, - DataShifter.parseValueToStringMap(node.values())); - - return matches; - } -} diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/Core.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/Core.java index 8476fda..7e85467 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/Core.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/Core.java @@ -4,12 +4,13 @@ import io.github.adrianvic.nemesiseye.policy.Effect; import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import java.util.List; public record Core(String name, List worlds, List nodes, boolean nodeAllowlist, boolean policyAllowList, Effect effect, int weight) implements Policy { @Override - public boolean applies(HumanEntity entity) { + public boolean applies(LivingEntity entity) { return false; } } \ No newline at end of file diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/GlobalPolicy.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/GlobalPolicy.java index 7080ea8..127430c 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/GlobalPolicy.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/GlobalPolicy.java @@ -4,11 +4,12 @@ import io.github.adrianvic.nemesiseye.policy.Effect; import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import java.util.List; public record GlobalPolicy(String name, List worlds, List nodes, boolean policyAllowList, Effect effect, int weight) implements Policy { - public boolean applies(HumanEntity entity) { + public boolean applies(LivingEntity entity) { return true; } } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/LocationPolicy.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/LocationPolicy.java index 5765535..255e433 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/LocationPolicy.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/LocationPolicy.java @@ -5,12 +5,13 @@ import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import io.github.adrianvic.nemesiseye.reflection.Glimmer; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import java.util.List; public record LocationPolicy(String name, List worlds, List locations, List nodes, boolean nodeAllowlist, boolean policyAllowList, Effect effect, int weight) implements Policy { @Override - public boolean applies(HumanEntity entity) { + public boolean applies(LivingEntity entity) { for (Glimmer.Box box : locations) { if (box.contains(entity.getLocation().toVector(), entity.getWorld())) { return !policyAllowList; diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PermissionPolicy.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PermissionPolicy.java index 1c952ac..b7eefc7 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PermissionPolicy.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PermissionPolicy.java @@ -4,13 +4,14 @@ import io.github.adrianvic.nemesiseye.policy.Effect; import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import java.util.List; public record PermissionPolicy(String name, List worlds, List permissions, List nodes, boolean policyAllowList, Effect effect, int weight) implements Policy { @Override - public boolean applies(HumanEntity entity) { + public boolean applies(LivingEntity entity) { for (String perm : permissions) { if (entity.hasPermission(perm)) { return true; diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PlayerNamePolicy.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PlayerNamePolicy.java index 8eeae4b..ba40e4b 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PlayerNamePolicy.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/policies/PlayerNamePolicy.java @@ -4,13 +4,14 @@ import io.github.adrianvic.nemesiseye.policy.Effect; import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyNode; import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; import java.util.List; public record PlayerNamePolicy(String name, List worlds, List playerName, List nodes, Effect effect, boolean policyAllowList, int weight) implements Policy { @Override - public boolean applies(HumanEntity entity) { + public boolean applies(LivingEntity entity) { if (playerName.contains(entity.getName())) { return !policyAllowList(); } else { diff --git a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/EventListener.java b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/EventListener.java index f7bf288..ea64591 100644 --- a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/EventListener.java +++ b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/EventListener.java @@ -6,7 +6,9 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerMoveEvent; @@ -36,5 +38,8 @@ public class EventListener implements Listener { public void onPlayerMoveEvent(PlayerMoveEvent event) { Events.onPlayerMoveEvent(event); } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - public void onInventoryClickEvent(InventoryClickEvent event) { Events.onInventoryClickEvent(event);} + public void onInventoryClickEvent(InventoryClickEvent event) { Events.onInventoryClickEvent(event); } + + @EventHandler + public void onCreatureSpawnEvent(CreatureSpawnEvent event) { Events.onCreatureSpawnEvent(event); } } \ No newline at end of file