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;
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<Item> FLOWER_CROWN =
ITEMS.registerItem("flower_crown",
(properties) -> new FlowerCrown(
properties.stacksTo(1)));
(properties) -> new FlowerCrown(
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
@ -29,28 +58,45 @@ public class CharmsAndFabricRegistries
public static final DeferredRegister<CreativeModeTab>
CREATIVE_MODE_TABS =
DeferredRegister.create(Registries.CREATIVE_MODE_TAB,
CharmsAndFabrics.MODID);
CharmsAndFabrics.MODID);
public static final DeferredHolder<CreativeModeTab, CreativeModeTab>
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<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)
{
Items.ITEMS.register(bus);
Blocks.BLOCKS.register(bus);
Entities.BLOCK_ENTITY_TYPES.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);
}
}