feat: Add Pride Cake

This commit is contained in:
Ampflower 🌺 2025-03-12 09:04:12 -07:00
parent 5be9b1e2d2
commit e02eb14921
No known key found for this signature in database
GPG Key ID: FC0397C90D508D7F
4 changed files with 65 additions and 3 deletions

View File

@ -7,13 +7,19 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.CakeBlock;
import net.minecraft.data.client.BlockStateModelGenerator;
import net.minecraft.data.client.BlockStateSupplier;
import net.minecraft.data.client.BlockStateVariant;
import net.minecraft.data.client.ItemModelGenerator;
import net.minecraft.data.client.Model;
import net.minecraft.data.client.ModelIds;
import net.minecraft.data.client.Models;
import net.minecraft.data.client.MultipartBlockStateSupplier;
import net.minecraft.data.client.TextureKey;
import net.minecraft.data.client.TextureMap;
import net.minecraft.data.client.VariantSettings;
import net.minecraft.data.client.When;
import net.minecraft.util.Identifier;
import java.util.Optional;
@ -58,6 +64,7 @@ public class JoyModelProvider extends FabricModelProvider {
gen.registerCandle(JoyBlocks.AROACE_CANDLE, JoyBlocks.AROACE_CANDLE_CAKE);
gen.registerCandle(JoyBlocks.LESBIAN_CANDLE, JoyBlocks.LESBIAN_CANDLE_CAKE);
gen.registerCandle(JoyBlocks.PROGRESS_CANDLE, JoyBlocks.PROGRESS_CANDLE_CAKE);
registerCake(gen, JoyBlocks.PRIDE_CAKE);
}
private static void registerBed(BlockStateModelGenerator gen, Block block) {
@ -72,6 +79,44 @@ public class JoyModelProvider extends FabricModelProvider {
gen.blockStateCollector.accept(BlockStateModelGenerator.createSingletonBlockState(block, ModelIds.getBlockModelId(block)));
}
public static void registerCake(BlockStateModelGenerator gen, Block cake) {
gen.registerItemModel(cake.asItem());
final var base = blockVanilla("cake", TextureKey.TOP);
base.upload(
ModelIds.getBlockModelId(cake),
TextureMap.top(cake),
gen.modelCollector
);
for (int i = 1; i <= 6; i++) {
final var slice = blockVanilla("cake_slice" + i, TextureKey.TOP);
slice.upload(
ModelIds.getBlockSubModelId(cake, "_slice" + i),
TextureMap.top(cake),
gen.modelCollector
);
}
gen.blockStateCollector.accept(cakeBlockState(cake, ModelIds.getBlockModelId(cake)));
}
private static BlockStateSupplier cakeBlockState(Block block, Identifier base) {
final var supplier = MultipartBlockStateSupplier.create(block)
.with(When.create().set(CakeBlock.BITES, 0), model(base));
for (int i = 1; i <= 6; i++) {
supplier.with(When.create().set(CakeBlock.BITES, i), model(base.withSuffixedPath("_slice" + i)));
}
return supplier;
}
private static BlockStateVariant model(Identifier model) {
return BlockStateVariant.create()
.put(VariantSettings.MODEL, model);
}
@Override
public void generateItemModels(ItemModelGenerator gen) {
for (final var bundle : JoyItems.BUNDLES) {
@ -102,6 +147,10 @@ public class JoyModelProvider extends FabricModelProvider {
return new Model(Optional.of(JoyUtil.id("block/" + parent)), Optional.empty(), requiredTextureKeys);// 191
}
private static Model blockVanilla(String parent, TextureKey... requiredTextureKeys) {
return new Model(Optional.of(Identifier.ofVanilla("block/" + parent)), Optional.empty(), requiredTextureKeys);// 191
}
private static Model item(String parent, TextureKey... requiredTextureKeys) {
return new Model(Optional.of(JoyUtil.id("item/" + parent)), Optional.empty(), requiredTextureKeys);// 195
}

View File

@ -96,6 +96,12 @@ public final class JoyItemGroups {
entries.add(JoyItems.PRIDE_ELYTRA);
});
public static final ItemGroup FOOD = register("food",
() -> new ItemStack(JoyBlocks.PRIDE_CAKE),
(ctx, entries) -> {
entries.add(JoyBlocks.PRIDE_CAKE);
});
public static final ItemGroup JOY_BUNDLES = register("bundles",
JoyItems.PROGRESS_BUNDLE::getDefaultStack,
(ctx, entries) -> JoyItems.BUNDLES.forEach(entries::add));

View File

@ -5,6 +5,7 @@ import gay.pridecraft.joy.block.JoyBedBlock;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.CakeBlock;
import net.minecraft.block.CandleBlock;
import net.minecraft.block.CandleCakeBlock;
import net.minecraft.item.BlockItem;
@ -159,15 +160,18 @@ public final class JoyBlocks {
new CandleCakeBlock(TRANS_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
public static final Block AROACE_CANDLE_CAKE = registerBlock("aroace_candle_cake",
new CandleCakeBlock(AROACE_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
new CandleCakeBlock(AROACE_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
public static final Block LESBIAN_CANDLE_CAKE = registerBlock("lesbian_candle_cake",
new CandleCakeBlock(LESBIAN_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
new CandleCakeBlock(LESBIAN_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
public static final Block PROGRESS_CANDLE_CAKE = registerBlock("progress_candle_cake",
new CandleCakeBlock(PROGRESS_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
new CandleCakeBlock(PROGRESS_CANDLE, AbstractBlock.Settings.copy(Blocks.CANDLE_CAKE)));
// endregion
public static final Block PRIDE_CAKE = registerBlock("pride_cake",
new CakeBlock(AbstractBlock.Settings.copy(Blocks.CAKE)));
// region Registration Helpers
private static Block registerBlock(String name, Block block) {
registerBlockItem(name, block);

View File

@ -5,6 +5,7 @@
"itemgroup.joy.entities": "Joy Entities",
"itemgroup.joy.hajs": "Håjs",
"itemgroup.joy.misc": "Joy Misc",
"itemgroup.joy.food": "Joy Food",
"block.joy.gay_bed": "Gay Bed",
"block.joy.enby_bed": "Enby Bed",
@ -41,6 +42,8 @@
"block.joy.lesbian_candle": "Lesbian Candle",
"block.joy.progress_candle": "Progress Candle",
"block.joy.pride_cake": "Pride Cake",
"item.joy.pride_elytra": "Pride Elytra",
"item.joy.totem_of_pride": "Totem of Pride",
"item.joy.pride_brush": "Pride Brush",