diff --git a/src/generated/resources/data/neoforge/data_maps/item/compostables.json b/src/generated/resources/data/neoforge/data_maps/item/compostables.json new file mode 100644 index 0000000..161f7c2 --- /dev/null +++ b/src/generated/resources/data/neoforge/data_maps/item/compostables.json @@ -0,0 +1,7 @@ +{ + "values": { + "firefly_bush_backport:firefly_bush": { + "chance": 0.3 + } + } +} \ No newline at end of file diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java b/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java index d4289d9..3640480 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java +++ b/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java @@ -1,9 +1,6 @@ package dev.micle.firefly_bush_backport.block; import dev.micle.firefly_bush_backport.FireflyBushBackport; -import dev.micle.firefly_bush_backport.item.ModItems; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -13,12 +10,10 @@ import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; -import java.util.function.Supplier; - public class ModBlocks { public static final DeferredRegister BLOCKS = DeferredRegister.createBlocks(FireflyBushBackport.MOD_ID); - public static DeferredHolder FIREFLY_BUSH = registerBlock("firefly_bush", + public static DeferredHolder FIREFLY_BUSH = BLOCKS.register("firefly_bush", () -> new FireflyBushBlock(BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .ignitedByLava() @@ -32,14 +27,4 @@ public class ModBlocks { public static void register(IEventBus modEventBus) { BLOCKS.register(modEventBus); } - - private static DeferredHolder registerBlockItem(String name, DeferredHolder block) { - return ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties())); - } - - private static DeferredHolder registerBlock(String name, Supplier block) { - DeferredHolder ret = BLOCKS.register(name, block); - registerBlockItem(name, ret); - return ret; - } } diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java index 0c0ecec..b6dd1e9 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java +++ b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java @@ -1,6 +1,7 @@ package dev.micle.firefly_bush_backport.data; import dev.micle.firefly_bush_backport.data.client.ModBlockStateProvider; +import dev.micle.firefly_bush_backport.data.client.ModDataMapProvider; import dev.micle.firefly_bush_backport.data.client.ModItemModelProvider; import dev.micle.firefly_bush_backport.data.client.ModSoundDefinitionsProvider; import dev.micle.firefly_bush_backport.data.server.ModLootTableProvider; @@ -25,6 +26,7 @@ public class DataGenerators { generator.addProvider(event.includeClient(), new ModBlockStateProvider(generator, existingFileHelper)); generator.addProvider(event.includeClient(), new ModItemModelProvider(generator, existingFileHelper)); generator.addProvider(event.includeClient(), new ModSoundDefinitionsProvider(generator, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModDataMapProvider(generator, lookupProvider)); generator.addProvider(event.includeServer(), new ModLootTableProvider(generator, lookupProvider)); generator.addProvider(event.includeServer(), new ModWorldGenProvider(generator, lookupProvider)); diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/client/ModDataMapProvider.java b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModDataMapProvider.java new file mode 100644 index 0000000..ddef081 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModDataMapProvider.java @@ -0,0 +1,24 @@ +package dev.micle.firefly_bush_backport.data.client; + +import dev.micle.firefly_bush_backport.item.ModItems; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.neoforged.neoforge.common.data.DataMapProvider; +import net.neoforged.neoforge.registries.datamaps.builtin.Compostable; +import net.neoforged.neoforge.registries.datamaps.builtin.NeoForgeDataMaps; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.concurrent.CompletableFuture; + +public class ModDataMapProvider extends DataMapProvider { + public ModDataMapProvider(DataGenerator generator, CompletableFuture lookupProvider) { + super(generator.getPackOutput(), lookupProvider); + } + + @Override + @ParametersAreNonnullByDefault + protected void gather(HolderLookup.Provider provider) { + this.builder(NeoForgeDataMaps.COMPOSTABLES) + .add(ModItems.FIREFLY_BUSH, new Compostable(0.3F), false); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java b/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java index c474dc5..a6f0fe2 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java +++ b/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java @@ -1,14 +1,26 @@ package dev.micle.firefly_bush_backport.item; import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.Objects; + public class ModItems { public static final DeferredRegister ITEMS = DeferredRegister.createItems(FireflyBushBackport.MOD_ID); + public static final DeferredHolder FIREFLY_BUSH = registerBlock(ModBlocks.FIREFLY_BUSH); + public static void register(IEventBus modEventBus) { ITEMS.register(modEventBus); } + + private static DeferredHolder registerBlock(DeferredHolder block) { + return ITEMS.register(Objects.requireNonNull(block.getId()).getPath(), () -> new BlockItem(block.get(), new Item.Properties())); + } }