diff --git a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java index 80859a1e..44c99181 100644 --- a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java +++ b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java @@ -901,6 +901,7 @@ private RequirementList getRequirements(FileConfiguration c, String path) { wrapper.setAmount(c.getInt(rPath + ".amount", 1)); wrapper.hasData(c.contains(rPath + ".data") && c.isInt(rPath + ".data")); wrapper.setData((short) c.getInt(rPath + ".data", 0)); + wrapper.setDurability(c.getInt(rPath + ".durability", -1)); if (c.isString(rPath + ".name")) { wrapper.setName(c.getString(rPath + ".name")); diff --git a/src/main/java/com/extendedclip/deluxemenus/requirement/HasItemRequirement.java b/src/main/java/com/extendedclip/deluxemenus/requirement/HasItemRequirement.java index 9c1a1442..6d08ae47 100644 --- a/src/main/java/com/extendedclip/deluxemenus/requirement/HasItemRequirement.java +++ b/src/main/java/com/extendedclip/deluxemenus/requirement/HasItemRequirement.java @@ -83,6 +83,23 @@ private boolean isRequiredItem(ItemStack itemToCheck, MenuHolder holder, Materia if (wrapper.hasData() && itemToCheck.getDurability() != wrapper.getData()) return false; ItemMeta metaToCheck = itemToCheck.getItemMeta(); + + if (wrapper.getDurability() != -1) { + if (!(metaToCheck instanceof Damageable damageable)) { + return false; + } + + int maxDurability = damageable.hasMaxDamage() ? damageable.getMaxDamage() : itemToCheck.getType().getMaxDurability(); + if (maxDurability <= 0) { + return false; + } + + int currentDurability = maxDurability - damageable.getDamage(); + if (currentDurability < wrapper.getDurability()) { + return false; + } + } + if (wrapper.isStrict()) { if (metaToCheck != null) { if (VersionHelper.IS_CUSTOM_MODEL_DATA && metaToCheck.hasCustomModelData()) { diff --git a/src/main/java/com/extendedclip/deluxemenus/requirement/wrappers/ItemWrapper.java b/src/main/java/com/extendedclip/deluxemenus/requirement/wrappers/ItemWrapper.java index 760a44c9..cba5cd39 100644 --- a/src/main/java/com/extendedclip/deluxemenus/requirement/wrappers/ItemWrapper.java +++ b/src/main/java/com/extendedclip/deluxemenus/requirement/wrappers/ItemWrapper.java @@ -17,6 +17,7 @@ public class ItemWrapper { private CustomModelDataComponent customDataComponent = CustomModelDataComponent.builder(); private int customData = 0; private int amount = 1; + private int durability = -1; private boolean strict = false; private boolean armor = false; @@ -100,6 +101,14 @@ public void setAmount(int amount) { this.amount = amount; } + public int getDurability() { + return durability; + } + + public void setDurability(int durability) { + this.durability = durability; + } + public boolean isStrict() { return strict; }