feat: datagen floral workbench block + flower crown item

This commit is contained in:
SushiCannibale 2025-08-02 16:25:43 +02:00
parent 33e659fa47
commit b91e4aae21
9 changed files with 62 additions and 29 deletions

View file

@ -1,6 +1,7 @@
package fr.sushi.charmsnfabrics.client; package fr.sushi.charmsnfabrics.client;
import fr.sushi.charmsnfabrics.CharmsAndFabrics; import fr.sushi.charmsnfabrics.CharmsAndFabrics;
import fr.sushi.charmsnfabrics.client.datagen.CnFModelProvider;
import fr.sushi.charmsnfabrics.client.model.FlowerCrownModel; import fr.sushi.charmsnfabrics.client.model.FlowerCrownModel;
import fr.sushi.charmsnfabrics.client.renderer.FloralWorkstationRenderer; import fr.sushi.charmsnfabrics.client.renderer.FloralWorkstationRenderer;
import fr.sushi.charmsnfabrics.client.renderer.FlowerCrownRenderer; import fr.sushi.charmsnfabrics.client.renderer.FlowerCrownRenderer;
@ -14,6 +15,7 @@ import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent;
import net.neoforged.neoforge.client.gui.ConfigurationScreen; import net.neoforged.neoforge.client.gui.ConfigurationScreen;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import net.neoforged.neoforge.data.event.GatherDataEvent;
import top.theillusivec4.curios.api.client.ICurioRenderer; import top.theillusivec4.curios.api.client.ICurioRenderer;
@Mod(value = CharmsAndFabrics.MODID, dist = Dist.CLIENT) @Mod(value = CharmsAndFabrics.MODID, dist = Dist.CLIENT)
@ -50,4 +52,9 @@ public class CharmsFabricsClient
CharmsAndFabricRegistries.Entities.FLORAL_BLOCK_ENTITY.get(), CharmsAndFabricRegistries.Entities.FLORAL_BLOCK_ENTITY.get(),
FloralWorkstationRenderer::new); FloralWorkstationRenderer::new);
} }
@SubscribeEvent
private static void onGatherClientData(final GatherDataEvent.Client event) {
event.createProvider(CnFModelProvider::new);
}
} }

View file

@ -0,0 +1,53 @@
package fr.sushi.charmsnfabrics.client.datagen;
import fr.sushi.charmsnfabrics.CharmsAndFabrics;
import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.client.data.models.BlockModelGenerators;
import net.minecraft.client.data.models.ItemModelGenerators;
import net.minecraft.client.data.models.ModelProvider;
import net.minecraft.client.data.models.MultiVariant;
import net.minecraft.client.data.models.model.ModelLocationUtils;
import net.minecraft.client.data.models.model.ModelTemplates;
import net.minecraft.client.renderer.item.BlockModelWrapper;
import net.minecraft.client.renderer.item.ClientItem;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import java.util.Collections;
public class CnFModelProvider extends ModelProvider
{
public CnFModelProvider(PackOutput output)
{
super(output, CharmsAndFabrics.MODID);
}
private void registerFloralWorkbench(BlockModelGenerators blockModels)
{
Block block = CnFRegistries.Blocks.FLORAL_WORKSTATION.get();
ResourceLocation model = ModelLocationUtils.getModelLocation(block);
MultiVariant variants = BlockModelGenerators.plainVariant(model);
blockModels.blockStateOutput.accept(
BlockModelGenerators.createSimpleBlock(block, variants)
.with(BlockModelGenerators.ROTATION_HORIZONTAL_FACING_ALT));
// blockModels.modelOutput.accept(ModelLocationUtils.getModelLocation(block));
}
private void registerFlowerCrown(ItemModelGenerators itemModels)
{
Item item = CnFRegistries.Items.FLOWER_CROWN.get();
itemModels.generateFlatItem(item, ModelTemplates.FLAT_ITEM);
}
@Override
protected void registerModels(BlockModelGenerators blockModels,
ItemModelGenerators itemModels)
{
this.registerFlowerCrown(itemModels);
this.registerFloralWorkbench(blockModels);
}
}

View file

@ -1,9 +1,7 @@
package fr.sushi.charmsnfabrics.common.entities.block; package fr.sushi.charmsnfabrics.common.entities.block;
import fr.sushi.charmsnfabrics.common.CharmsAndFabricRegistries; import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -11,7 +9,7 @@ public class FloralWorkshopBlockEntity extends BlockEntity
{ {
public FloralWorkshopBlockEntity(BlockPos pos, BlockState blockState) public FloralWorkshopBlockEntity(BlockPos pos, BlockState blockState)
{ {
super(CharmsAndFabricRegistries.Entities.FLORAL_BLOCK_ENTITY.get(), pos, super(CnFRegistries.Entities.FLORAL_BLOCK_ENTITY.get(), pos,
blockState); blockState);
} }

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "charmsnfabrics:block/floral_workstation"
}
}
}

View file

@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "charmsnfabrics:block/floral_workstation"
}
}

View file

@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "charmsnfabrics:item/flower_crown"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "charmsnfabrics:item/flower_crown"
}
}