diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index 2800dcfc5..08e4310c5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -399,6 +399,9 @@ public class ItemSettings { registerFactory("equippable", (value -> { Map args = MiscUtils.castToMap(value, false); EquipmentData data = EquipmentData.fromMap(args); + if (data.assetId() == null) { + throw new IllegalArgumentException("Please move 'equippable' option to 'data' section."); + } ComponentBasedEquipment componentBasedEquipment = ComponentBasedEquipment.FACTORY.create(data.assetId(), args); ((AbstractItemManager) CraftEngine.instance().itemManager()).addOrMergeEquipment(componentBasedEquipment); ItemEquipment itemEquipment = new ItemEquipment(Tristate.FALSE, data, componentBasedEquipment); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/AbstractEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/AbstractEquipment.java index bc315c190..7d0428166 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/AbstractEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/AbstractEquipment.java @@ -8,11 +8,11 @@ public abstract class AbstractEquipment implements Equipment { protected final Key assetId; protected AbstractEquipment(Key assetId) { - this.assetId = Objects.requireNonNull(assetId, "assetId cannot be null"); + this.assetId = Objects.requireNonNull(assetId, "asset-id cannot be null"); } @Override public Key assetId() { - return assetId; + return this.assetId; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java index f60d497de..079732a56 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java @@ -143,5 +143,21 @@ public class ComponentBasedEquipment extends AbstractEquipment implements Suppli return dyeData; } } + + @Override + public @NotNull String toString() { + return "Layer{" + + "texture='" + texture + '\'' + + ", data=" + data + + ", usePlayerTexture=" + usePlayerTexture + + '}'; + } + } + + @Override + public String toString() { + return "ComponentBasedEquipment{" + + "layers=" + this.layers + + '}'; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index a5429d220..1aa740527 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -1915,6 +1915,11 @@ public abstract class AbstractPackManager implements PackManager { private void processComponentBasedEquipment(ComponentBasedEquipment componentBasedEquipment, Path generatedPackPath) { Key assetId = componentBasedEquipment.assetId(); + if (assetId == null) { + this.plugin.logger().severe("Asset id is null for equipment " + componentBasedEquipment); + return; + } + if (Config.packMaxVersion().isAtOrAbove(MinecraftVersions.V1_21_4)) { Path equipmentPath = generatedPackPath .resolve("assets")