From 7e1814a9f33b16d90422a179a0155caa9c3ce3ac Mon Sep 17 00:00:00 2001 From: LatvianModder Date: Sat, 1 Jun 2024 00:24:48 +0300 Subject: [PATCH] Added ItemBuilder#component(type, value) --- .../latvian/mods/kubejs/item/ItemBuilder.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/dev/latvian/mods/kubejs/item/ItemBuilder.java b/src/main/java/dev/latvian/mods/kubejs/item/ItemBuilder.java index 1f19845ff..b67471b17 100644 --- a/src/main/java/dev/latvian/mods/kubejs/item/ItemBuilder.java +++ b/src/main/java/dev/latvian/mods/kubejs/item/ItemBuilder.java @@ -10,6 +10,7 @@ import dev.latvian.mods.kubejs.typings.Info; import dev.latvian.mods.kubejs.util.ConsoleJS; import dev.latvian.mods.kubejs.util.ID; +import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -63,6 +64,7 @@ public static Tier toolTierOf(Object o) { return ItemBuilder.TOOL_TIERS.getOrDefault(ID.kjsString(asString), Tiers.IRON); } + public transient Map, Object> components; public transient int maxStackSize; public transient int maxDamage; public transient int burnTime; @@ -162,6 +164,15 @@ public void generateAssetJsons(AssetJsonGenerator generator) { }); } + public ItemBuilder component(DataComponentType type, T value) { + if (components == null) { + components = new HashMap<>(); + } + + components.put(type, value); + return this; + } + @Info("Sets the item's max stack size. Default is 64.") public ItemBuilder maxStackSize(int v) { maxStackSize = v; @@ -319,6 +330,12 @@ public ItemBuilder fireResistant() { public Item.Properties createItemProperties() { var properties = new KubeJSItemProperties(this); + if (components != null) { + for (var entry : components.entrySet()) { + properties.component((DataComponentType) entry.getKey(), entry.getValue()); + } + } + if (maxDamage > 0) { properties.durability(maxDamage); } else {