From 44a63b753ff86e2e52a8cb2f6bbd7419aa9946bd Mon Sep 17 00:00:00 2001 From: Micle Date: Tue, 9 Jun 2026 22:48:53 +0100 Subject: [PATCH] Implemented item. --- .../models/item/wildflowers.json | 6 +++ .../data/DataGenerators.java | 2 + .../data/client/ModItemModelProvider.java | 39 +++++++++++++++++++ .../wildflowers_backport/item/ModItems.java | 27 +++++++++++++ .../wildflowers_backport/proxy/Proxy.java | 2 + .../textures/item/wildflowers.png | 3 ++ 6 files changed, 79 insertions(+) create mode 100644 src/generated/resources/assets/wildflowers_backport/models/item/wildflowers.json create mode 100644 src/main/java/dev/micle/wildflowers_backport/data/client/ModItemModelProvider.java create mode 100644 src/main/java/dev/micle/wildflowers_backport/item/ModItems.java create mode 100644 src/main/resources/assets/wildflowers_backport/textures/item/wildflowers.png diff --git a/src/generated/resources/assets/wildflowers_backport/models/item/wildflowers.json b/src/generated/resources/assets/wildflowers_backport/models/item/wildflowers.json new file mode 100644 index 0000000..f30df05 --- /dev/null +++ b/src/generated/resources/assets/wildflowers_backport/models/item/wildflowers.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "wildflowers_backport:item/wildflowers" + } +} \ No newline at end of file diff --git a/src/main/java/dev/micle/wildflowers_backport/data/DataGenerators.java b/src/main/java/dev/micle/wildflowers_backport/data/DataGenerators.java index 92d4789..2dd1d3a 100644 --- a/src/main/java/dev/micle/wildflowers_backport/data/DataGenerators.java +++ b/src/main/java/dev/micle/wildflowers_backport/data/DataGenerators.java @@ -2,6 +2,7 @@ package dev.micle.wildflowers_backport.data; import dev.micle.wildflowers_backport.WildflowersBackport; import dev.micle.wildflowers_backport.data.client.ModBlockStateProvider; +import dev.micle.wildflowers_backport.data.client.ModItemModelProvider; import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraftforge.common.data.ExistingFileHelper; @@ -20,5 +21,6 @@ public class DataGenerators { CompletableFuture lookupProvider = event.getLookupProvider(); generator.addProvider(event.includeClient(), new ModBlockStateProvider(generator, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModItemModelProvider(generator, existingFileHelper)); } } diff --git a/src/main/java/dev/micle/wildflowers_backport/data/client/ModItemModelProvider.java b/src/main/java/dev/micle/wildflowers_backport/data/client/ModItemModelProvider.java new file mode 100644 index 0000000..590e368 --- /dev/null +++ b/src/main/java/dev/micle/wildflowers_backport/data/client/ModItemModelProvider.java @@ -0,0 +1,39 @@ +package dev.micle.wildflowers_backport.data.client; + +import dev.micle.wildflowers_backport.WildflowersBackport; +import dev.micle.wildflowers_backport.block.ModBlocks; +import net.minecraft.data.DataGenerator; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.ItemModelBuilder; +import net.minecraftforge.client.model.generators.ItemModelProvider; +import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Objects; + +public class ModItemModelProvider extends ItemModelProvider { + public ModItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator.getPackOutput(), WildflowersBackport.MOD_ID, existingFileHelper); + } + + @Override + public void registerModels() { + ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach(this::blockItemModel); + } + + private void blockItemModel(Block block) { + String name = Objects.requireNonNull(ForgeRegistries.BLOCKS.getKey(block)).getPath(); + + if (block == ModBlocks.WILDFLOWERS.get()) { + builder(getExistingFile(mcLoc("item/generated")), name); + } else { + withExistingParent(name, mcLoc("block/" + name)); + } + } + + private ItemModelBuilder builder(ModelFile itemGenerated, String name) { + return getBuilder(name).parent(itemGenerated).texture("layer0", "item/" + name); + } +} diff --git a/src/main/java/dev/micle/wildflowers_backport/item/ModItems.java b/src/main/java/dev/micle/wildflowers_backport/item/ModItems.java new file mode 100644 index 0000000..6371412 --- /dev/null +++ b/src/main/java/dev/micle/wildflowers_backport/item/ModItems.java @@ -0,0 +1,27 @@ +package dev.micle.wildflowers_backport.item; + +import dev.micle.wildflowers_backport.WildflowersBackport; +import dev.micle.wildflowers_backport.block.ModBlocks; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Objects; + +public class ModItems { + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, WildflowersBackport.MOD_ID); + + public static final RegistryObject WILDFLOWERS = registerBlock(ModBlocks.WILDFLOWERS); + + public static void register(IEventBus modEventBus) { + ITEMS.register(modEventBus); + } + + private static RegistryObject registerBlock(RegistryObject block) { + return ITEMS.register(Objects.requireNonNull(block.getId()).getPath(), () -> new BlockItem(block.get(), new Item.Properties())); + } +} diff --git a/src/main/java/dev/micle/wildflowers_backport/proxy/Proxy.java b/src/main/java/dev/micle/wildflowers_backport/proxy/Proxy.java index 3504e67..a8ebe7b 100644 --- a/src/main/java/dev/micle/wildflowers_backport/proxy/Proxy.java +++ b/src/main/java/dev/micle/wildflowers_backport/proxy/Proxy.java @@ -2,6 +2,7 @@ package dev.micle.wildflowers_backport.proxy; import dev.micle.wildflowers_backport.WildflowersBackport; import dev.micle.wildflowers_backport.block.ModBlocks; +import dev.micle.wildflowers_backport.item.ModItems; import dev.micle.wildflowers_backport.tab.ModCreativeTabs; import net.minecraft.client.Minecraft; import net.minecraft.server.MinecraftServer; @@ -24,6 +25,7 @@ public class Proxy implements IProxy { IEventBus modEventBus = WildflowersBackport.getFmlJavaModLoadingContext().getModEventBus(); ModBlocks.register(modEventBus); + ModItems.register(modEventBus); ModCreativeTabs.register(modEventBus); // Register mod event bus listeners diff --git a/src/main/resources/assets/wildflowers_backport/textures/item/wildflowers.png b/src/main/resources/assets/wildflowers_backport/textures/item/wildflowers.png new file mode 100644 index 0000000..ebcc688 --- /dev/null +++ b/src/main/resources/assets/wildflowers_backport/textures/item/wildflowers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f87d03cc998cbc0dfb81c208deb1308d472f7f4cd48e995c064a0aa2adc0f38 +size 192