From 3870f8df0024ffc85b10029b7ef55741ebeb1e2d Mon Sep 17 00:00:00 2001 From: Andy Wilson Date: Sat, 14 Feb 2026 19:58:58 +0000 Subject: [PATCH 1/5] Add various mod items to ModItems registry --- .../com/tcm/MineTale/registry/ModItems.java | 79 +++++++++++++++++-- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tcm/MineTale/registry/ModItems.java b/src/main/java/com/tcm/MineTale/registry/ModItems.java index 8ad2e4b..7570ba0 100644 --- a/src/main/java/com/tcm/MineTale/registry/ModItems.java +++ b/src/main/java/com/tcm/MineTale/registry/ModItems.java @@ -16,17 +16,84 @@ public class ModItems { public static void initialize() { System.out.println("Registered Mod Items for " + MineTale.MOD_ID); } + + // --- NATURAL MATERIALS & GATHERABLES --- + public static final Item PLANT_FIBER = register("plant_fiber", Item::new, new Item.Properties()); + public static final Item TREE_SAP = register("tree_sap", Item::new, new Item.Properties()); + public static final Item SAP_GLOB = register("sap_glob", Item::new, new Item.Properties()); + public static final Item RUBBLE = register("rubble", Item::new, new Item.Properties()); + public static final Item TREE_BARK = register("tree_bark", Item::new, new Item.Properties()); + public static final Item MOSS = register("moss", Item::new, new Item.Properties()); + public static final Item BLUE_CRYSTAL_SHARDS = register("blue_crystal_shards", Item::new, new Item.Properties()); + public static final Item GREEN_CRYSTAL_SHARDS = register("green_crystal_shards", Item::new, new Item.Properties()); + public static final Item YELLOW_CRYSTAL_SHARDS = register("yellow_crystal_shards", Item::new, new Item.Properties()); + + // --- MINERALS & REFINED METALS (Unique to Hytale) --- + public static final Item THORIUM_INGOT = register("thorium_ingot", Item::new, new Item.Properties()); + public static final Item COBALT_INGOT = register("cobalt_ingot", Item::new, new Item.Properties()); + public static final Item ADAMANTITE_INGOT = register("adamantite_ingot", Item::new, new Item.Properties()); + public static final Item MITHRIL_INGOT = register("mithril_ingot", Item::new, new Item.Properties()); + public static final Item BRONZE_INGOT = register("bronze_ingot", Item::new, new Item.Properties()); + public static final Item STEEL_INGOT = register("steel_ingot", Item::new, new Item.Properties()); + + // --- MOB DROPS, HIDES & LEATHERS --- + public static final Item LIGHT_HIDE = register("light_hide", Item::new, new Item.Properties()); + public static final Item MEDIUM_HIDE = register("medium_hide", Item::new, new Item.Properties()); + public static final Item HEAVY_HIDE = register("heavy_hide", Item::new, new Item.Properties()); + public static final Item SOFT_HIDE = register("soft_hide", Item::new, new Item.Properties()); + public static final Item PRISMATIC_HIDE = register("prismatic_hide", Item::new, new Item.Properties()); + public static final Item LIGHT_LEATHER = register("light_leather", Item::new, new Item.Properties()); + public static final Item MEDIUM_LEATHER = register("medium_leather", Item::new, new Item.Properties()); + public static final Item HEAVY_LEATHER = register("heavy_leather", Item::new, new Item.Properties()); + public static final Item STORM_LEATHER = register("storm_leather", Item::new, new Item.Properties()); + public static final Item PRISMATIC_LEATHER = register("prismatic_leather", Item::new, new Item.Properties()); + + public static final Item FERAN_RIB = register("feran_rib", Item::new, new Item.Properties()); + public static final Item STURDY_CHITIN = register("sturdy_chitin", Item::new, new Item.Properties()); + public static final Item VENOM_SAC = register("venom_sac", Item::new, new Item.Properties()); + public static final Item BONE_FRAGMENT = register("bone_fragment", Item::new, new Item.Properties()); + + // --- FABRICS & TEXTILES --- + public static final Item LINEN_SCRAPS = register("linen_scraps", Item::new, new Item.Properties()); + public static final Item BOLT_OF_LINEN = register("bolt_of_linen", Item::new, new Item.Properties()); + public static final Item SHADOWEAVE_SCRAPS = register("shadoweave_scraps", Item::new, new Item.Properties()); + public static final Item CINDERCLOTH_SCRAPS = register("cindercloth_scraps", Item::new, new Item.Properties()); + public static final Item BOLT_OF_WOOL = register("bolt_of_wool", Item::new, new Item.Properties()); + public static final Item YELLOW_CLOTH = register("yellow_cloth", Item::new, new Item.Properties()); + + // --- SEEDS & FARMING (Bags and Bulbs) --- + public static final Item LETTUCE = register("lettuce", Item::new, new Item.Properties()); + public static final Item CHILLI_SEED_BAG = register("chilli_seed_bag", Item::new, new Item.Properties()); + public static final Item CHILLI_SEED_BAG_ETERNAL = register("chilli_seed_bag_eternal", Item::new, new Item.Properties()); + public static final Item SUNFLOWER_SEED_BAG = register("sunflower_seed_bag", Item::new, new Item.Properties()); + public static final Item CORN_SEED_BAG = register("corn_seed_bag", Item::new, new Item.Properties()); + public static final Item COTTON_SEED_BAG = register("cotton_seed_bag", Item::new, new Item.Properties()); + public static final Item RICE_SEED_BAG = register("rice_seed_bag", Item::new, new Item.Properties()); + public static final Item ONION_BULB = register("onion_bulb", Item::new, new Item.Properties()); + + // --- MAGICAL & ALCHEMICAL --- + public static final Item ESSENCE_OF_LIFE = register("essence_of_life", Item::new, new Item.Properties()); + public static final Item ESSENCE_OF_FIRE = register("essence_of_fire", Item::new, new Item.Properties()); + public static final Item ESSENCE_OF_ICE = register("essence_of_ice", Item::new, new Item.Properties()); + public static final Item ESSENCE_OF_THE_VOID = register("essence_of_the_void", Item::new, new Item.Properties()); + public static final Item VOID_HEART = register("void_heart", Item::new, new Item.Properties()); + + // --- FLORA COMPONENTS (Non-placeable petals) --- + public static final Item RED_PETALS = register("red_petals", Item::new, new Item.Properties()); + public static final Item YELLOW_PETALS = register("yellow_petals", Item::new, new Item.Properties()); + public static final Item GREEN_PETALS = register("green_petals", Item::new, new Item.Properties()); + public static final Item WHITE_PETALS = register("white_petals", Item::new, new Item.Properties()); + public static final Item AZURE_PETALS = register("azure_petals", Item::new, new Item.Properties()); + public static final Item STORM_PETALS = register("storm_petals", Item::new, new Item.Properties()); + public static final Item BLOOD_PETALS = register("blood_petals", Item::new, new Item.Properties()); + public static final Item CYAN_PETALS = register("cyan_petals", Item::new, new Item.Properties()); + + // --- REGISTRATION LOGIC --- public static GenericItem register(String name, Function itemFactory, Item.Properties settings) { - // Create the item key. ResourceKey itemKey = ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(MineTale.MOD_ID, name)); - - // Create the item instance. GenericItem item = itemFactory.apply(settings.setId(itemKey)); - - // Register the item. Registry.register(BuiltInRegistries.ITEM, itemKey, item); - return item; } } From 4ac2a1c76e654b8a305cc9fd3297f20dde988339 Mon Sep 17 00:00:00 2001 From: Andy Wilson Date: Sat, 14 Feb 2026 20:06:43 +0000 Subject: [PATCH 2/5] Register items to creative tab on creation Automatically add registered items to the creative tab. --- src/main/java/com/tcm/MineTale/registry/ModItems.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/tcm/MineTale/registry/ModItems.java b/src/main/java/com/tcm/MineTale/registry/ModItems.java index 7570ba0..821a03f 100644 --- a/src/main/java/com/tcm/MineTale/registry/ModItems.java +++ b/src/main/java/com/tcm/MineTale/registry/ModItems.java @@ -3,6 +3,7 @@ import java.util.function.Function; import com.tcm.MineTale.MineTale; +import com.tcm.MineTale.item.ModCreativeTab; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; @@ -94,6 +95,12 @@ public static GenericItem register(String name, Funct ResourceKey itemKey = ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(MineTale.MOD_ID, name)); GenericItem item = itemFactory.apply(settings.setId(itemKey)); Registry.register(BuiltInRegistries.ITEM, itemKey, item); + + // 4. ADD TO CREATIVE TAB AUTOMATICALLY + ItemGroupEvents.modifyEntriesEvent(ModCreativeTab.MINETALE_CREATIVE_TAB_KEY).register(entries -> { + entries.add(item); + }); + return item; } } From 5bd993e7cc804ac80df2ad3c0b99b88c8c4589ca Mon Sep 17 00:00:00 2001 From: Andy Wilson Date: Sat, 14 Feb 2026 20:09:12 +0000 Subject: [PATCH 3/5] Update src/main/java/com/tcm/MineTale/registry/ModItems.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/main/java/com/tcm/MineTale/registry/ModItems.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tcm/MineTale/registry/ModItems.java b/src/main/java/com/tcm/MineTale/registry/ModItems.java index 821a03f..6f3bf55 100644 --- a/src/main/java/com/tcm/MineTale/registry/ModItems.java +++ b/src/main/java/com/tcm/MineTale/registry/ModItems.java @@ -64,7 +64,9 @@ public static void initialize() { public static final Item YELLOW_CLOTH = register("yellow_cloth", Item::new, new Item.Properties()); // --- SEEDS & FARMING (Bags and Bulbs) --- - public static final Item LETTUCE = register("lettuce", Item::new, new Item.Properties()); + public static final Item LETTUCE = register("lettuce", Item::new, new Item.Properties().food( + new FoodProperties.Builder().nutrition(2).saturationModifier(0.3f).build() + )); public static final Item CHILLI_SEED_BAG = register("chilli_seed_bag", Item::new, new Item.Properties()); public static final Item CHILLI_SEED_BAG_ETERNAL = register("chilli_seed_bag_eternal", Item::new, new Item.Properties()); public static final Item SUNFLOWER_SEED_BAG = register("sunflower_seed_bag", Item::new, new Item.Properties()); From 5a95e6b0f0e4e9fd585731ed70b146d884bdf989 Mon Sep 17 00:00:00 2001 From: Andy Wilson Date: Sun, 15 Feb 2026 07:29:10 +0000 Subject: [PATCH 4/5] fix: imports and translations --- .../tcm/MineTale/datagen/ModLangProvider.java | 84 ++++++++++++++++--- .../com/tcm/MineTale/registry/ModItems.java | 4 +- 2 files changed, 75 insertions(+), 13 deletions(-) diff --git a/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java b/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java index 8dafb85..7e4982b 100644 --- a/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java +++ b/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java @@ -7,26 +7,16 @@ import java.util.concurrent.CompletableFuture; public class ModLangProvider extends FabricLanguageProvider { - /** - * Creates a ModLangProvider configured to generate the mod's language translations. - * - * @param dataOutput the FabricDataOutput used to write generated language files - * @param registryLookup a CompletableFuture supplying a HolderLookup.Provider for registry lookups during data generation - */ + public ModLangProvider(FabricDataOutput dataOutput, CompletableFuture registryLookup) { super(dataOutput, registryLookup); } - /** - * Populates the translation builder with English language entries for MineTale (creative tab title and block names). - * - * @param translationBuilder the builder used to register translation keys and their English values - */ @Override public void generateTranslations(HolderLookup.Provider wrapperLookup, TranslationBuilder translationBuilder) { translationBuilder.add("minetale.creative_tab.title", "MineTale Stuffs"); - + // --- BLOCKS --- translationBuilder.add("block.minetale.furnace_workbench_block_t1", "Furnace Workbench - Tier One"); translationBuilder.add("block.minetale.furnace_workbench_block_t2", "Furnace Workbench - Tier Two"); translationBuilder.add("block.minetale.campfire_workbench_block", "Campfire Workbench"); @@ -62,5 +52,75 @@ public void generateTranslations(HolderLookup.Provider wrapperLookup, Translatio translationBuilder.add("block.minetale.windwillow_log", "Windwillow Log"); translationBuilder.add("block.minetale.wild_wisteria_log", "Wild Wisteria Log"); translationBuilder.add("block.minetale.wild_wisteria_wood", "Wild Wisteria Wood"); + + // --- NATURAL MATERIALS & GATHERABLES --- + translationBuilder.add("item.minetale.plant_fiber", "Plant Fiber"); + translationBuilder.add("item.minetale.tree_sap", "Tree Sap"); + translationBuilder.add("item.minetale.sap_glob", "Sap Glob"); + translationBuilder.add("item.minetale.rubble", "Rubble"); + translationBuilder.add("item.minetale.tree_bark", "Tree Bark"); + translationBuilder.add("item.minetale.moss", "Moss"); + translationBuilder.add("item.minetale.blue_crystal_shards", "Blue Crystal Shards"); + translationBuilder.add("item.minetale.green_crystal_shards", "Green Crystal Shards"); + translationBuilder.add("item.minetale.yellow_crystal_shards", "Yellow Crystal Shards"); + + // --- MINERALS & REFINED METALS --- + translationBuilder.add("item.minetale.thorium_ingot", "Thorium Ingot"); + translationBuilder.add("item.minetale.cobalt_ingot", "Cobalt Ingot"); + translationBuilder.add("item.minetale.adamantite_ingot", "Adamantite Ingot"); + translationBuilder.add("item.minetale.mithril_ingot", "Mithril Ingot"); + translationBuilder.add("item.minetale.bronze_ingot", "Bronze Ingot"); + translationBuilder.add("item.minetale.steel_ingot", "Steel Ingot"); + + // --- MOB DROPS, HIDES & LEATHERS --- + translationBuilder.add("item.minetale.light_hide", "Light Hide"); + translationBuilder.add("item.minetale.medium_hide", "Medium Hide"); + translationBuilder.add("item.minetale.heavy_hide", "Heavy Hide"); + translationBuilder.add("item.minetale.soft_hide", "Soft Hide"); + translationBuilder.add("item.minetale.prismatic_hide", "Prismatic Hide"); + translationBuilder.add("item.minetale.light_leather", "Light Leather"); + translationBuilder.add("item.minetale.medium_leather", "Medium Leather"); + translationBuilder.add("item.minetale.heavy_leather", "Heavy Leather"); + translationBuilder.add("item.minetale.storm_leather", "Storm Leather"); + translationBuilder.add("item.minetale.prismatic_leather", "Prismatic Leather"); + translationBuilder.add("item.minetale.feran_rib", "Feran Rib"); + translationBuilder.add("item.minetale.sturdy_chitin", "Sturdy Chitin"); + translationBuilder.add("item.minetale.venom_sac", "Venom Sac"); + translationBuilder.add("item.minetale.bone_fragment", "Bone Fragment"); + + // --- FABRICS & TEXTILES --- + translationBuilder.add("item.minetale.linen_scraps", "Linen Scraps"); + translationBuilder.add("item.minetale.bolt_of_linen", "Bolt of Linen"); + translationBuilder.add("item.minetale.shadoweave_scraps", "Shadoweave Scraps"); + translationBuilder.add("item.minetale.cindercloth_scraps", "Cindercloth Scraps"); + translationBuilder.add("item.minetale.bolt_of_wool", "Bolt of Wool"); + translationBuilder.add("item.minetale.yellow_cloth", "Yellow Cloth"); + + // --- SEEDS & FARMING --- + translationBuilder.add("item.minetale.lettuce", "Lettuce"); + translationBuilder.add("item.minetale.chilli_seed_bag", "Chilli Seed Bag"); + translationBuilder.add("item.minetale.chilli_seed_bag_eternal", "Eternal Chilli Seed Bag"); + translationBuilder.add("item.minetale.sunflower_seed_bag", "Sunflower Seed Bag"); + translationBuilder.add("item.minetale.corn_seed_bag", "Corn Seed Bag"); + translationBuilder.add("item.minetale.cotton_seed_bag", "Cotton Seed Bag"); + translationBuilder.add("item.minetale.rice_seed_bag", "Rice Seed Bag"); + translationBuilder.add("item.minetale.onion_bulb", "Onion Bulb"); + + // --- MAGICAL & ALCHEMICAL --- + translationBuilder.add("item.minetale.essence_of_life", "Essence of Life"); + translationBuilder.add("item.minetale.essence_of_fire", "Essence of Fire"); + translationBuilder.add("item.minetale.essence_of_ice", "Essence of Ice"); + translationBuilder.add("item.minetale.essence_of_the_void", "Essence of the Void"); + translationBuilder.add("item.minetale.void_heart", "Void Heart"); + + // --- FLORA COMPONENTS --- + translationBuilder.add("item.minetale.red_petals", "Red Petals"); + translationBuilder.add("item.minetale.yellow_petals", "Yellow Petals"); + translationBuilder.add("item.minetale.green_petals", "Green Petals"); + translationBuilder.add("item.minetale.white_petals", "White Petals"); + translationBuilder.add("item.minetale.azure_petals", "Azure Petals"); + translationBuilder.add("item.minetale.storm_petals", "Storm Petals"); + translationBuilder.add("item.minetale.blood_petals", "Blood Petals"); + translationBuilder.add("item.minetale.cyan_petals", "Cyan Petals"); } } \ No newline at end of file diff --git a/src/main/java/com/tcm/MineTale/registry/ModItems.java b/src/main/java/com/tcm/MineTale/registry/ModItems.java index 6f3bf55..9ea32f5 100644 --- a/src/main/java/com/tcm/MineTale/registry/ModItems.java +++ b/src/main/java/com/tcm/MineTale/registry/ModItems.java @@ -5,11 +5,13 @@ import com.tcm.MineTale.MineTale; import com.tcm.MineTale.item.ModCreativeTab; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.Item; public class ModItems { @@ -100,7 +102,7 @@ public static GenericItem register(String name, Funct // 4. ADD TO CREATIVE TAB AUTOMATICALLY ItemGroupEvents.modifyEntriesEvent(ModCreativeTab.MINETALE_CREATIVE_TAB_KEY).register(entries -> { - entries.add(item); + entries.accept(item); }); return item; From 07d7104d527a7aa0bcc8c22e9ff73d8569f3eca2 Mon Sep 17 00:00:00 2001 From: Andy Wilson Date: Sun, 15 Feb 2026 07:36:19 +0000 Subject: [PATCH 5/5] fix: AI Comments --- .../com/tcm/MineTale/datagen/ModLangProvider.java | 1 + src/main/java/com/tcm/MineTale/registry/ModItems.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java b/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java index 7e4982b..f1d46ae 100644 --- a/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java +++ b/src/client/java/com/tcm/MineTale/datagen/ModLangProvider.java @@ -17,6 +17,7 @@ public void generateTranslations(HolderLookup.Provider wrapperLookup, Translatio translationBuilder.add("minetale.creative_tab.title", "MineTale Stuffs"); // --- BLOCKS --- + translationBuilder.add("block.minetale.workbench_workbench_block", "Workbench"); translationBuilder.add("block.minetale.furnace_workbench_block_t1", "Furnace Workbench - Tier One"); translationBuilder.add("block.minetale.furnace_workbench_block_t2", "Furnace Workbench - Tier Two"); translationBuilder.add("block.minetale.campfire_workbench_block", "Campfire Workbench"); diff --git a/src/main/java/com/tcm/MineTale/registry/ModItems.java b/src/main/java/com/tcm/MineTale/registry/ModItems.java index 9ea32f5..6ad928f 100644 --- a/src/main/java/com/tcm/MineTale/registry/ModItems.java +++ b/src/main/java/com/tcm/MineTale/registry/ModItems.java @@ -1,5 +1,7 @@ package com.tcm.MineTale.registry; +import java.util.ArrayList; +import java.util.List; import java.util.function.Function; import com.tcm.MineTale.MineTale; @@ -16,8 +18,13 @@ public class ModItems { + private static final List REGISTERED_ITEMS = new ArrayList<>(); + public static void initialize() { System.out.println("Registered Mod Items for " + MineTale.MOD_ID); + ItemGroupEvents.modifyEntriesEvent(ModCreativeTab.MINETALE_CREATIVE_TAB_KEY).register(entries -> { + REGISTERED_ITEMS.forEach(entries::accept); + }); } // --- NATURAL MATERIALS & GATHERABLES --- @@ -101,9 +108,7 @@ public static GenericItem register(String name, Funct Registry.register(BuiltInRegistries.ITEM, itemKey, item); // 4. ADD TO CREATIVE TAB AUTOMATICALLY - ItemGroupEvents.modifyEntriesEvent(ModCreativeTab.MINETALE_CREATIVE_TAB_KEY).register(entries -> { - entries.accept(item); - }); + REGISTERED_ITEMS.add(item); return item; }