feat: block + blockentity
Some checks are pending
Build / build (push) Waiting to run

This commit is contained in:
SushiCannibale 2025-07-31 15:48:20 +02:00
parent 1a3d94f94e
commit 0776e4657c
3 changed files with 102 additions and 18 deletions

View file

@ -1,17 +1,28 @@
package fr.sushi.charmsnfabrics.common; package fr.sushi.charmsnfabrics.common;
import fr.sushi.charmsnfabrics.CharmsAndFabrics; 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 fr.sushi.charmsnfabrics.common.item.FlowerCrown;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component; 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.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item; 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.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredBlock;
import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister; import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.Set;
import java.util.function.Supplier;
public class CharmsAndFabricRegistries public class CharmsAndFabricRegistries
{ {
public static class Items public static class Items
@ -22,6 +33,24 @@ public class CharmsAndFabricRegistries
ITEMS.registerItem("flower_crown", ITEMS.registerItem("flower_crown",
(properties) -> new FlowerCrown( (properties) -> new FlowerCrown(
properties.stacksTo(1))); properties.stacksTo(1)));
/* BlockItems */
public static final DeferredItem<BlockItem> 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<Block> FLORAL_WORKSHOP =
BLOCKS.register("floral_workshop",
registry_name -> new FloralWorkshop(
BlockBehaviour.Properties.of()
.setId(ResourceKey.create(
Registries.BLOCK,
registry_name))));
} }
public static class Tabs public static class Tabs
@ -31,9 +60,9 @@ public class CharmsAndFabricRegistries
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, DeferredRegister.create(Registries.CREATIVE_MODE_TAB,
CharmsAndFabrics.MODID); CharmsAndFabrics.MODID);
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> public static final DeferredHolder<CreativeModeTab, CreativeModeTab>
EXAMPLE_TAB = CREATIVE_MODE_TABS.register("charmsnfabrics_tab", CHARMS_AND_FABRICS_TAB =
() -> CreativeModeTab CREATIVE_MODE_TABS.register("charmsnfabrics_tab",
.builder() () -> CreativeModeTab.builder()
.title(Component.translatable( .title(Component.translatable(
"itemGroup.charmsnfabrics")) "itemGroup.charmsnfabrics"))
.withTabsBefore( .withTabsBefore(
@ -44,13 +73,30 @@ public class CharmsAndFabricRegistries
{ {
output.accept( output.accept(
Items.FLOWER_CROWN.get()); Items.FLOWER_CROWN.get());
}) output.accept(
.build()); Blocks.FLORAL_WORKSHOP.toStack());
}).build());
}
public static class Entities
{
public static final DeferredRegister<BlockEntityType<?>>
BLOCK_ENTITY_TYPES =
DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE,
CharmsAndFabrics.MODID);
public static final Supplier<BlockEntityType<FloralWorkshopBlockEntity>>
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) public static void register(IEventBus bus)
{ {
Items.ITEMS.register(bus); Items.ITEMS.register(bus);
Blocks.BLOCKS.register(bus);
Entities.BLOCK_ENTITY_TYPES.register(bus);
Tabs.CREATIVE_MODE_TABS.register(bus); Tabs.CREATIVE_MODE_TABS.register(bus);
} }
} }

View file

@ -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);
}
}

View file

@ -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);
}
}