diff --git a/src/main/java/fi/septicuss/tooltips/Tooltips.java b/src/main/java/fi/septicuss/tooltips/Tooltips.java index 2a034fe..b49b342 100644 --- a/src/main/java/fi/septicuss/tooltips/Tooltips.java +++ b/src/main/java/fi/septicuss/tooltips/Tooltips.java @@ -15,10 +15,7 @@ import fi.septicuss.tooltips.listener.PlayerMovementListener; import fi.septicuss.tooltips.managers.condition.ConditionManager; import fi.septicuss.tooltips.managers.condition.impl.Compare; -import fi.septicuss.tooltips.managers.condition.impl.equals.BlockNbtEquals; -import fi.septicuss.tooltips.managers.condition.impl.equals.BlockStateEquals; -import fi.septicuss.tooltips.managers.condition.impl.equals.EntityNbtEquals; -import fi.septicuss.tooltips.managers.condition.impl.equals.ItemNbtEquals; +import fi.septicuss.tooltips.managers.condition.impl.equals.*; import fi.septicuss.tooltips.managers.condition.impl.lookingat.LookingAtBlock; import fi.septicuss.tooltips.managers.condition.impl.lookingat.LookingAtCitizen; import fi.septicuss.tooltips.managers.condition.impl.lookingat.LookingAtEntity; @@ -178,6 +175,7 @@ private void registerConditions() { new Location(), new StandingOn(), new ItemNbtEquals(), + new ItemsAdderIdEquals(), new EntityNbtEquals(), new BlockNbtEquals(), new BlockStateEquals(), diff --git a/src/main/java/fi/septicuss/tooltips/managers/condition/impl/equals/ItemsAdderIdEquals.java b/src/main/java/fi/septicuss/tooltips/managers/condition/impl/equals/ItemsAdderIdEquals.java new file mode 100644 index 0000000..d723716 --- /dev/null +++ b/src/main/java/fi/septicuss/tooltips/managers/condition/impl/equals/ItemsAdderIdEquals.java @@ -0,0 +1,66 @@ +package fi.septicuss.tooltips.managers.condition.impl.equals; + +import dev.lone.itemsadder.api.CustomStack; +import fi.septicuss.tooltips.managers.condition.Condition; +import fi.septicuss.tooltips.managers.condition.argument.Arguments; +import fi.septicuss.tooltips.utils.validation.Validity; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; + +public class ItemsAdderIdEquals implements Condition { + + private static final String[] SLOT = { "slot", "s" }; + private static final String[] MATERIAL = { "type", "m", "mat", "material" }; + + public boolean check(Player player, Arguments args) { + EquipmentSlot slot = EquipmentSlot.HAND; + if (args.has(SLOT)) { + slot = EquipmentSlot.valueOf(args.get(SLOT).getAsString().strip().toUpperCase()); + } + + ItemStack item = player.getInventory().getItem(slot); + + if (item == null || item.getType().isAir()) { + return false; + } + + CustomStack customStack = CustomStack.byItemStack(item); + if (customStack != null) { + String material = args.get(MATERIAL).getAsString(); + String id = customStack.getNamespace() + ":" + customStack.getId(); + if (material.equals(id)) { + return true; + } + } + + return false; + } + + public Validity valid(Arguments args) { + if (!Bukkit.getPluginManager().isPluginEnabled("ItemsAdder")) { + return Validity.of(false, "Cannot use itemsadderidequals because ItemsAdder is not installed"); + } + + if (!args.has(MATERIAL)) { + return Validity.of(false, "Type argument is required"); + } + + if (args.has(SLOT)) { + String slot = args.get(SLOT).getAsString(); + try { + return Validity.of(false, "Unknown slot " + quote(slot)); + } catch (IllegalArgumentException e) { + return Validity.of(false, null); + } + } + + return Validity.TRUE; + } + + @Override + public String id() { + return "itemsadderidequals"; + } +}