diff --git a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/b1_7_3.java b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/b1_7_3.java index 19d08fb..3d38305 100644 --- a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/b1_7_3.java +++ b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/b1_7_3.java @@ -2,9 +2,13 @@ package io.github.adrianvic.nemesiseye.impl; import io.github.adrianvic.nemesiseye.Nemesis; import io.github.adrianvic.nemesiseye.impl.commands.Eye; +import io.github.adrianvic.nemesiseye.impl.events.BlockEventListener; +import io.github.adrianvic.nemesiseye.impl.events.EntityEventListener; +import io.github.adrianvic.nemesiseye.impl.events.PlayerEventListener; import io.github.adrianvic.nemesiseye.policy.Policy; import io.github.adrianvic.nemesiseye.policy.PolicyParsers; import io.github.adrianvic.nemesiseye.reflection.Glimmer; +import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.HumanEntity; @@ -99,4 +103,18 @@ public class b1_7_3 implements Glimmer { public boolean hasAnyEnchantment(ItemStack itemStack) { return false; } + + @Override + public boolean isArmor(ItemStack item) { + if (item == null || item.getType() == Material.AIR) { + return false; + } + + String name = item.getType().name(); + + return name.endsWith("_HELMET") + || name.endsWith("_CHESTPLATE") + || name.endsWith("_LEGGINGS") + || name.endsWith("_BOOTS"); + } } diff --git a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/BlockEventListener.java b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/BlockEventListener.java similarity index 90% rename from src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/BlockEventListener.java rename to src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/BlockEventListener.java index 76fd2d1..6ea38bf 100644 --- a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/BlockEventListener.java +++ b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/BlockEventListener.java @@ -1,4 +1,4 @@ -package io.github.adrianvic.nemesiseye.impl; +package io.github.adrianvic.nemesiseye.impl.events; import io.github.adrianvic.nemesiseye.Events; import org.bukkit.event.block.BlockBreakEvent; diff --git a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/EntityEventListener.java b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/EntityEventListener.java similarity index 89% rename from src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/EntityEventListener.java rename to src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/EntityEventListener.java index cf49da1..e6655f8 100644 --- a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/EntityEventListener.java +++ b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/EntityEventListener.java @@ -1,4 +1,4 @@ -package io.github.adrianvic.nemesiseye.impl; +package io.github.adrianvic.nemesiseye.impl.events; import io.github.adrianvic.nemesiseye.Events; import org.bukkit.event.entity.EntityDamageByEntityEvent; diff --git a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/PlayerEventListener.java b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/PlayerEventListener.java similarity index 86% rename from src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/PlayerEventListener.java rename to src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/PlayerEventListener.java index b77a56a..ec81484 100644 --- a/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/PlayerEventListener.java +++ b/src/b1_7_3/java/io/github/adrianvic/nemesiseye/impl/events/PlayerEventListener.java @@ -1,4 +1,4 @@ -package io.github.adrianvic.nemesiseye.impl; +package io.github.adrianvic.nemesiseye.impl.events; import io.github.adrianvic.nemesiseye.Events; import org.bukkit.event.player.PlayerInteractEvent; 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 index 8e6f28b..ff9d08b 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 @@ -9,18 +9,18 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; import org.bukkit.event.block.BlockPlaceEvent; +import java.util.List; + public class BePlaced implements NodeHandler { @Override public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { if (event instanceof BlockPlaceEvent bpe) { String type = bpe.getBlock().getType().toString(); + List parsedValue = DataShifter.parseValueToStringList(node.values()); - for (String s : DataShifter.parseValueToStringList(node.values())) { - if (DataShifter.safeMatches(s, type)) { - return true; - } - } + return DataShifter.safeMatches(parsedValue, type); } + return false; } } 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 index 73c1c1f..16e1ad9 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 @@ -2,10 +2,11 @@ package io.github.adrianvic.nemesiseye.policy.handlers; import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; 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 org.bukkit.entity.HumanEntity; +import io.github.adrianvic.nemesiseye.reflection.Glimmer; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.Event; @@ -14,72 +15,53 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.ItemStack; +import java.util.List; + public class Equip implements NodeHandler { + private final Glimmer glim = Nemesis.getInstance().getGlimmer(); @Override public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { ItemStack item = null; if (event instanceof PlayerArmorChangeEvent e) { - // Right click equip, dispenser equip, etc... item = e.getNewItem(); } else if (event instanceof InventoryClickEvent e) { InventoryType.SlotType slotType = e.getSlotType(); - // Number key swap into armor slot - if (e.getClick() == ClickType.NUMBER_KEY + if (e.getClick() == ClickType.NUMBER_KEY // hotbar key swap && slotType == InventoryType.SlotType.ARMOR && entity instanceof Player player) { item = player.getInventory().getItem(e.getHotbarButton()); } - // Shift click armor from inventory else if (e.isShiftClick()) { ItemStack current = e.getCurrentItem(); - if (isArmor(current)) { + if (glim.isArmor(current)) { item = current; } } - // Cursor click onto armor slot + // regular click else if (slotType == InventoryType.SlotType.ARMOR) { ItemStack cursor = e.getCursor(); - if (isArmor(cursor)) { + if (glim.isArmor(cursor)) { item = cursor; } } } - if (!isArmor(item)) { + if (!glim.isArmor(item)) { return false; } String type = item.getType().name(); + List parsedValue = DataShifter.parseValueToStringList(node.values()); - for (String s : DataShifter.parseValueToStringList(node.values())) { - if (DataShifter.safeMatches(s, type)) { - return true; - } - } - - return false; - } - - private boolean isArmor(ItemStack item) { - if (item == null || item.getType().isAir()) { - return false; - } - - String name = item.getType().name(); - - return name.endsWith("_HELMET") - || name.endsWith("_CHESTPLATE") - || name.endsWith("_LEGGINGS") - || name.endsWith("_BOOTS") - || item.getType() == org.bukkit.Material.ELYTRA; + return DataShifter.safeMatches(parsedValue, type); } } \ No newline at end of file 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 index f9b9233..46d2b11 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 @@ -3,7 +3,6 @@ package io.github.adrianvic.nemesiseye.policy.handlers; 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; 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 index 45be0a7..671c77a 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 @@ -10,6 +10,8 @@ import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; +import java.util.List; + public class UseItem implements NodeHandler { private final Glimmer glim = Nemesis.getInstance().getGlimmer(); @@ -18,12 +20,9 @@ public class UseItem implements NodeHandler { public boolean check(LivingEntity entity, PolicyNode node, Action action, Event event) { if (entity instanceof HumanEntity e) { String type = glim.getItemInMainHandHumanEntity(e).getType().toString(); + List parsedValue = DataShifter.parseValueToStringList(node.values()); - for (String s : DataShifter.parseValueToStringList(node.values())) { - if (DataShifter.safeMatches(s, type)) { - return true; - } - } + return DataShifter.safeMatches(parsedValue, type); } return false; diff --git a/src/main/java/io/github/adrianvic/nemesiseye/reflection/Glimmer.java b/src/main/java/io/github/adrianvic/nemesiseye/reflection/Glimmer.java index dec3092..1462f72 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/reflection/Glimmer.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/reflection/Glimmer.java @@ -26,6 +26,7 @@ public interface Glimmer { boolean hasItemMeta(ItemStack item); boolean hasEnchantment(ItemStack item, Map valuesmap); boolean hasAnyEnchantment(ItemStack itemStack); + boolean isArmor(ItemStack item); ItemStack getItemInMainHandHumanEntity(HumanEntity entity); // Commands diff --git a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/r1_21.java b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/r1_21.java index b929d0b..069d02b 100644 --- a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/r1_21.java +++ b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/r1_21.java @@ -105,4 +105,19 @@ public class r1_21 implements Glimmer { public boolean hasAnyEnchantment(ItemStack item) { return !(item.getItemMeta().getEnchants().isEmpty()); } + + @Override + public boolean isArmor(ItemStack item) { + if (item == null || item.getType().isAir()) { + return false; + } + + String name = item.getType().name(); + + return name.endsWith("_HELMET") + || name.endsWith("_CHESTPLATE") + || name.endsWith("_LEGGINGS") + || name.endsWith("_BOOTS") + || item.getType() == org.bukkit.Material.ELYTRA; + } }