From dceb68c17abb76fb28b70b8dc54c90a8f0863389 Mon Sep 17 00:00:00 2001 From: Remasuri3 Date: Mon, 12 Jan 2026 14:56:01 +0100 Subject: [PATCH 1/4] Added item_model Property. --- .../objects/properties/PropertyRegistry.java | 3 + .../properties/item/ItemItemModel.java | 74 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java index 477c8bb129..a524d6453b 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/PropertyRegistry.java @@ -233,6 +233,9 @@ public static void registerMainProperties() { PropertyParser.registerProperty(ItemComponentsPatch.class, ItemTag.class); registerItemProperty(ItemCustomData.class, "custom_data"); } + if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) { + registerItemProperty(ItemItemModel.class, "item_model"); + } registerItemProperty(ItemCustomModel.class, "custom_model_data"); registerItemProperty(ItemChargedProjectile.class, "charged_projectiles"); registerItemProperty(ItemEnchantments.class, "enchantments", "stored_enchantments"); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java new file mode 100644 index 0000000000..13960f1e59 --- /dev/null +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java @@ -0,0 +1,74 @@ +package com.denizenscript.denizen.objects.properties.item; + +import com.denizenscript.denizen.nms.NMSHandler; +import com.denizenscript.denizen.objects.ItemTag; +import com.denizenscript.denizencore.objects.Mechanism; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.core.ListTag; +import com.denizenscript.denizencore.objects.properties.Property; +import com.denizenscript.denizencore.objects.properties.PropertyParser; +import com.denizenscript.denizencore.tags.Attribute; +import com.denizenscript.denizencore.tags.core.EscapeTagUtil; +import com.denizenscript.denizencore.utilities.CoreUtilities; +import org.bukkit.NamespacedKey; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.List; + +public class ItemItemModel extends ItemProperty { + // <--[property] + // @object ItemTag + // @name item_model + // @input ElementTag + // @description + // Controls the Item Model of the item. + // Use with no input to remove the Item Model. + // See also <@link tag ItemTag.has_item_model> + // --> + public static boolean describes(ItemTag item) { + return !item.getBukkitMaterial().isAir(); + } + + @Override + public ElementTag getPropertyValue() { + if (getItemMeta().hasItemModel()) { + return new ElementTag(getItemMeta().getItemModel().toString()); + } + return null; + } + + @Override + public void setPropertyValue(ElementTag value, Mechanism mechanism) { + ItemMeta meta = getItemMeta(); + if (mechanism.hasValue()) { + meta.setItemModel(NamespacedKey.fromString(value.asString())); + } + else { + meta.setItemModel(null); + } + setItemMeta(meta); + } + + @Override + public String getPropertyId() { + return "item_model"; + } + + public static void register() { + autoRegisterNullable("item_model", ItemItemModel.class, ElementTag.class, false); + + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @mechanism ItemTag.item_model + // @group properties + // @description + // Returns whether the item has an Item Model set on it. + // See also <@link tag ItemTag.item_model>. + // --> + PropertyParser.registerTag(ItemItemModel.class, ElementTag.class, "has_item_model", (attribute, prop) -> { + return new ElementTag(prop.getItemMeta().hasItemModel()); + }); + } +} From 0f3d46d4f514ddfb5f6620f0fe6324dcb18fcb6a Mon Sep 17 00:00:00 2001 From: Remasuri3 Date: Mon, 12 Jan 2026 15:06:22 +0100 Subject: [PATCH 2/4] Formatting --- .../denizen/objects/properties/item/ItemItemModel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java index 13960f1e59..ecc366a8e2 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java @@ -17,6 +17,7 @@ import java.util.List; public class ItemItemModel extends ItemProperty { + // <--[property] // @object ItemTag // @name item_model From 761a80c3a6a41e0a109a94897b7b57d03d297768 Mon Sep 17 00:00:00 2001 From: Remasuri3 Date: Mon, 12 Jan 2026 15:29:56 +0100 Subject: [PATCH 3/4] Changed condition to be ternary --- .../denizen/objects/properties/item/ItemItemModel.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java index ecc366a8e2..dc6a33a9dd 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java @@ -42,12 +42,7 @@ public ElementTag getPropertyValue() { @Override public void setPropertyValue(ElementTag value, Mechanism mechanism) { ItemMeta meta = getItemMeta(); - if (mechanism.hasValue()) { - meta.setItemModel(NamespacedKey.fromString(value.asString())); - } - else { - meta.setItemModel(null); - } + meta.setItemModel(mechanism.hasValue() ? NamespacedKey.fromString(value.asString()) : null); setItemMeta(meta); } From 646219bbdefc2278c6d304bad83eb743c77a65f3 Mon Sep 17 00:00:00 2001 From: Remasuri3 Date: Mon, 12 Jan 2026 20:25:21 +0100 Subject: [PATCH 4/4] removed unnecessary imports --- .../denizen/objects/properties/item/ItemItemModel.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java index dc6a33a9dd..e14e1ef33f 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemItemModel.java @@ -1,16 +1,9 @@ package com.denizenscript.denizen.objects.properties.item; -import com.denizenscript.denizen.nms.NMSHandler; import com.denizenscript.denizen.objects.ItemTag; import com.denizenscript.denizencore.objects.Mechanism; -import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.objects.core.ElementTag; -import com.denizenscript.denizencore.objects.core.ListTag; -import com.denizenscript.denizencore.objects.properties.Property; import com.denizenscript.denizencore.objects.properties.PropertyParser; -import com.denizenscript.denizencore.tags.Attribute; -import com.denizenscript.denizencore.tags.core.EscapeTagUtil; -import com.denizenscript.denizencore.utilities.CoreUtilities; import org.bukkit.NamespacedKey; import org.bukkit.inventory.meta.ItemMeta;