diff --git a/src/main/java/fr/sushi/charmsnfabrics/common/CharmsAndFabricRegistries.java b/src/main/java/fr/sushi/charmsnfabrics/common/CharmsAndFabricRegistries.java index b48376c..0b3aae0 100644 --- a/src/main/java/fr/sushi/charmsnfabrics/common/CharmsAndFabricRegistries.java +++ b/src/main/java/fr/sushi/charmsnfabrics/common/CharmsAndFabricRegistries.java @@ -1,17 +1,28 @@ package fr.sushi.charmsnfabrics.common; import fr.sushi.charmsnfabrics.CharmsAndFabrics; +import fr.sushi.charmsnfabrics.common.block.FloralWorkshop; +import fr.sushi.charmsnfabrics.common.entities.block.FloralWorkshopBlockEntity; import fr.sushi.charmsnfabrics.common.item.FlowerCrown; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.Set; +import java.util.function.Supplier; + public class CharmsAndFabricRegistries { public static class Items @@ -20,8 +31,26 @@ public class CharmsAndFabricRegistries DeferredRegister.createItems(CharmsAndFabrics.MODID); public static final DeferredItem FLOWER_CROWN = ITEMS.registerItem("flower_crown", - (properties) -> new FlowerCrown( - properties.stacksTo(1))); + (properties) -> new FlowerCrown( + properties.stacksTo(1))); + /* BlockItems */ + public static final DeferredItem FLORAL_WORKSHOP = + ITEMS.registerItem("floral_workshop", + properties -> new BlockItem( + Blocks.FLORAL_WORKSHOP.get(), properties)); + } + + public static class Blocks + { + public static final DeferredRegister.Blocks BLOCKS = + DeferredRegister.createBlocks(CharmsAndFabrics.MODID); + public static final DeferredBlock FLORAL_WORKSHOP = + BLOCKS.register("floral_workshop", + registry_name -> new FloralWorkshop( + BlockBehaviour.Properties.of() + .setId(ResourceKey.create( + Registries.BLOCK, + registry_name)))); } public static class Tabs @@ -29,28 +58,45 @@ public class CharmsAndFabricRegistries public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, - CharmsAndFabrics.MODID); + CharmsAndFabrics.MODID); public static final DeferredHolder - EXAMPLE_TAB = CREATIVE_MODE_TABS.register("charmsnfabrics_tab", - () -> CreativeModeTab - .builder() - .title(Component.translatable( - "itemGroup.charmsnfabrics")) - .withTabsBefore( - CreativeModeTabs.COMBAT) - .icon(Items.FLOWER_CROWN.get()::getDefaultInstance) - .displayItems( - (parameters, output) -> - { - output.accept( - Items.FLOWER_CROWN.get()); - }) - .build()); + CHARMS_AND_FABRICS_TAB = + CREATIVE_MODE_TABS.register("charmsnfabrics_tab", + () -> CreativeModeTab.builder() + .title(Component.translatable( + "itemGroup.charmsnfabrics")) + .withTabsBefore( + CreativeModeTabs.COMBAT) + .icon(Items.FLOWER_CROWN.get()::getDefaultInstance) + .displayItems( + (parameters, output) -> + { + output.accept( + Items.FLOWER_CROWN.get()); + output.accept( + Blocks.FLORAL_WORKSHOP.toStack()); + }).build()); + } + + public static class Entities + { + public static final DeferredRegister> + BLOCK_ENTITY_TYPES = + DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, + CharmsAndFabrics.MODID); + public static final Supplier> + FLORAL_BLOCK_ENTITY = + BLOCK_ENTITY_TYPES.register("floral_block_entity", + () -> new BlockEntityType<>( + FloralWorkshopBlockEntity::new, + Set.of(Blocks.FLORAL_WORKSHOP.get()))); } public static void register(IEventBus bus) { Items.ITEMS.register(bus); + Blocks.BLOCKS.register(bus); + Entities.BLOCK_ENTITY_TYPES.register(bus); Tabs.CREATIVE_MODE_TABS.register(bus); } } diff --git a/src/main/java/fr/sushi/charmsnfabrics/common/block/FloralWorkshop.java b/src/main/java/fr/sushi/charmsnfabrics/common/block/FloralWorkshop.java new file mode 100644 index 0000000..e09878a --- /dev/null +++ b/src/main/java/fr/sushi/charmsnfabrics/common/block/FloralWorkshop.java @@ -0,0 +1,23 @@ +package fr.sushi.charmsnfabrics.common.block; + +import fr.sushi.charmsnfabrics.common.entities.block.FloralWorkshopBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; + +public class FloralWorkshop extends Block implements EntityBlock +{ + public FloralWorkshop(Properties properties) + { + super(properties); + } + + @Override + public @Nullable BlockEntity newBlockEntity(BlockPos pos, BlockState state) + { + return new FloralWorkshopBlockEntity(pos, state); + } +} diff --git a/src/main/java/fr/sushi/charmsnfabrics/common/entities/block/FloralWorkshopBlockEntity.java b/src/main/java/fr/sushi/charmsnfabrics/common/entities/block/FloralWorkshopBlockEntity.java new file mode 100644 index 0000000..f0acb5f --- /dev/null +++ b/src/main/java/fr/sushi/charmsnfabrics/common/entities/block/FloralWorkshopBlockEntity.java @@ -0,0 +1,15 @@ +package fr.sushi.charmsnfabrics.common.entities.block; + +import fr.sushi.charmsnfabrics.common.CharmsAndFabricRegistries; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class FloralWorkshopBlockEntity extends BlockEntity +{ + public FloralWorkshopBlockEntity(BlockPos pos, BlockState blockState) + { + super(CharmsAndFabricRegistries.Entities.FLORAL_BLOCK_ENTITY.get(), pos, + blockState); + } +}