feat: flower color data component
Some checks failed
Build / build (push) Has been cancelled

This commit is contained in:
SushiCannibale 2025-08-08 22:51:18 +02:00
parent 3afde78414
commit 1f633e88be
2 changed files with 47 additions and 2 deletions

View file

@ -2,8 +2,10 @@ package fr.sushi.charmsnfabrics.common;
import fr.sushi.charmsnfabrics.CharmsAndFabrics;
import fr.sushi.charmsnfabrics.common.block.FloralWorkbench;
import fr.sushi.charmsnfabrics.common.data.SavedColors;
import fr.sushi.charmsnfabrics.common.entities.block.FloralWorkbenchBlockEntity;
import fr.sushi.charmsnfabrics.common.item.FlowerCrown;
import net.minecraft.core.component.DataComponentType;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
@ -22,6 +24,7 @@ import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
@ -33,8 +36,11 @@ public class CnFRegistries
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)
.component(
DataComponents.SAVED_FLOWERS,
new SavedColors(
List.of()))));
/* BlockItems */
public static final DeferredItem<BlockItem> FLORAL_WORKBENCH =
ITEMS.registerItem("floral_workbench",
@ -100,11 +106,26 @@ public class CnFRegistries
Set.of(Blocks.FLORAL_WORKBENCH.get())));
}
public static class DataComponents
{
public static final DeferredRegister.DataComponents COMPONENT_TYPES =
DeferredRegister.createDataComponents(
Registries.DATA_COMPONENT_TYPE, CharmsAndFabrics.MODID);
public static final Supplier<DataComponentType<SavedColors>>
SAVED_FLOWERS =
COMPONENT_TYPES.registerComponentType("saved_flowers",
builder -> builder.persistent(SavedColors.CODEC)
.networkSynchronized(
SavedColors.STREAM_CODEC));
}
public static void register(IEventBus bus)
{
Items.ITEMS.register(bus);
Blocks.BLOCKS.register(bus);
Tabs.CREATIVE_MODE_TABS.register(bus);
Entities.BLOCK_ENTITY_TYPES.register(bus);
DataComponents.COMPONENT_TYPES.register(bus);
}
}

View file

@ -0,0 +1,24 @@
package fr.sushi.charmsnfabrics.common.data;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.netty.buffer.ByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.item.DyeColor;
import java.util.List;
public record SavedColors(List<DyeColor> flowers)
{
public static final Codec<SavedColors> CODEC = RecordCodecBuilder.create(
instance -> instance
.group(DyeColor.CODEC.listOf().fieldOf("flowers")
.forGetter(SavedColors::flowers))
.apply(instance, SavedColors::new));
public static final StreamCodec<ByteBuf, SavedColors> STREAM_CODEC =
StreamCodec.composite(
DyeColor.STREAM_CODEC.apply(ByteBufCodecs.list(256)),
SavedColors::flowers, SavedColors::new);
}