From 24eaf236e39138eeddfcbeb0cc5fb6ca7ca82bf5 Mon Sep 17 00:00:00 2001 From: Hedzer Kuijlman Date: Wed, 23 Apr 2025 01:48:58 +0200 Subject: [PATCH] Created Test Block & DataGen --- .../java/wtf/hak/SurvivalEnhancedClient.java | 2 +- .../hak/SurvivalEnhancedDataGenerator.java | 17 ++++- .../wtf/hak/datagen/ModBlockTagProvider.java | 22 +++++++ .../wtf/hak/datagen/ModEngLangProvider.java | 19 ++++++ .../wtf/hak/datagen/ModItemTagProvider.java | 19 ++++++ .../wtf/hak/datagen/ModLootTableProvider.java | 25 +++++++ .../wtf/hak/datagen/ModModelProvider.java | 23 +++++++ .../wtf/hak/datagen/ModRecipeProvider.java | 26 ++++++++ .../6310a5a229c2218b3f93eccb5bc535ef215280d4 | 2 + .../6cc7444c5d54546681289c4ba704e38ebcccf1d1 | 1 + .../9126c091c71799f95677dc74aa2df9305fd7b1c0 | 2 + .../ad12d3404359203536406edbf1a57572b7b3e81a | 4 ++ .../c3b515a45400172ff935d4e50a7627620df8c8d1 | 2 + .../blockstates/test_block.json | 7 ++ .../survivalenhanced/items/test_block.json | 6 ++ .../assets/survivalenhanced/lang/en_us.json | 3 + .../models/block/test_block.json | 6 ++ .../tags/block/mineable/pickaxe.json | 5 ++ .../loot_table/blocks/test_block.json | 20 ++++++ src/main/java/wtf/hak/SurvivalEnhanced.java | 10 +-- src/main/java/wtf/hak/blocks/ModBlocks.java | 62 ++++++++++++++++++ src/main/java/wtf/hak/blocks/TestBlock.java | 10 +++ .../textures/block/test_block.png | Bin 0 -> 269 bytes 23 files changed, 282 insertions(+), 11 deletions(-) create mode 100644 src/client/java/wtf/hak/datagen/ModBlockTagProvider.java create mode 100644 src/client/java/wtf/hak/datagen/ModEngLangProvider.java create mode 100644 src/client/java/wtf/hak/datagen/ModItemTagProvider.java create mode 100644 src/client/java/wtf/hak/datagen/ModLootTableProvider.java create mode 100644 src/client/java/wtf/hak/datagen/ModModelProvider.java create mode 100644 src/client/java/wtf/hak/datagen/ModRecipeProvider.java create mode 100644 src/main/generated/.cache/6310a5a229c2218b3f93eccb5bc535ef215280d4 create mode 100644 src/main/generated/.cache/6cc7444c5d54546681289c4ba704e38ebcccf1d1 create mode 100644 src/main/generated/.cache/9126c091c71799f95677dc74aa2df9305fd7b1c0 create mode 100644 src/main/generated/.cache/ad12d3404359203536406edbf1a57572b7b3e81a create mode 100644 src/main/generated/.cache/c3b515a45400172ff935d4e50a7627620df8c8d1 create mode 100644 src/main/generated/assets/survivalenhanced/blockstates/test_block.json create mode 100644 src/main/generated/assets/survivalenhanced/items/test_block.json create mode 100644 src/main/generated/assets/survivalenhanced/lang/en_us.json create mode 100644 src/main/generated/assets/survivalenhanced/models/block/test_block.json create mode 100644 src/main/generated/data/minecraft/tags/block/mineable/pickaxe.json create mode 100644 src/main/generated/data/survivalenhanced/loot_table/blocks/test_block.json create mode 100644 src/main/java/wtf/hak/blocks/ModBlocks.java create mode 100644 src/main/java/wtf/hak/blocks/TestBlock.java create mode 100644 src/main/resources/assets/survivalenhanced/textures/block/test_block.png diff --git a/src/client/java/wtf/hak/SurvivalEnhancedClient.java b/src/client/java/wtf/hak/SurvivalEnhancedClient.java index 0756f2f..a7b7590 100644 --- a/src/client/java/wtf/hak/SurvivalEnhancedClient.java +++ b/src/client/java/wtf/hak/SurvivalEnhancedClient.java @@ -5,6 +5,6 @@ import net.fabricmc.api.ClientModInitializer; public class SurvivalEnhancedClient implements ClientModInitializer { @Override public void onInitializeClient() { - // This entrypoint is suitable for setting up client-specific logic, such as rendering. + } } \ No newline at end of file diff --git a/src/client/java/wtf/hak/SurvivalEnhancedDataGenerator.java b/src/client/java/wtf/hak/SurvivalEnhancedDataGenerator.java index 00776f1..59af8f0 100644 --- a/src/client/java/wtf/hak/SurvivalEnhancedDataGenerator.java +++ b/src/client/java/wtf/hak/SurvivalEnhancedDataGenerator.java @@ -2,10 +2,23 @@ package wtf.hak; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import net.minecraft.registry.Registries; +import wtf.hak.blocks.ModBlocks; +import wtf.hak.datagen.*; public class SurvivalEnhancedDataGenerator implements DataGeneratorEntrypoint { - @Override - public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { + @Override + public void onInitializeDataGenerator(FabricDataGenerator generator) { + FabricDataGenerator.Pack pack = generator.createPack(); + + //System.out.println("MY_BLOCK ID: " + Registries.BLOCK.getId(ModBlocks.TEST_BLOCK)); + + pack.addProvider(ModBlockTagProvider::new); + pack.addProvider(ModItemTagProvider::new); + pack.addProvider(ModModelProvider::new); + pack.addProvider(ModLootTableProvider::new); + pack.addProvider(ModEngLangProvider::new); + //pack.addProvider(ModRecipeProvider::new); } } diff --git a/src/client/java/wtf/hak/datagen/ModBlockTagProvider.java b/src/client/java/wtf/hak/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..3c96232 --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModBlockTagProvider.java @@ -0,0 +1,22 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.BlockTags; +import wtf.hak.blocks.ModBlocks; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends FabricTagProvider.BlockTagProvider { + + public ModBlockTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE) + .add(ModBlocks.TEST_BLOCK); + } +} diff --git a/src/client/java/wtf/hak/datagen/ModEngLangProvider.java b/src/client/java/wtf/hak/datagen/ModEngLangProvider.java new file mode 100644 index 0000000..f570c3b --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModEngLangProvider.java @@ -0,0 +1,19 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider; +import net.minecraft.registry.RegistryWrapper; +import wtf.hak.blocks.ModBlocks; + +import java.util.concurrent.CompletableFuture; + +public class ModEngLangProvider extends FabricLanguageProvider{ + public ModEngLangProvider(FabricDataOutput dataOutput, CompletableFuture registryLookup) { + super(dataOutput, "en_us", registryLookup); + } + + @Override + public void generateTranslations(RegistryWrapper.WrapperLookup wrapperLookup, TranslationBuilder translationBuilder) { + translationBuilder.add(ModBlocks.TEST_BLOCK.asItem(), "Test Block"); + } +} diff --git a/src/client/java/wtf/hak/datagen/ModItemTagProvider.java b/src/client/java/wtf/hak/datagen/ModItemTagProvider.java new file mode 100644 index 0000000..7c0a745 --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModItemTagProvider.java @@ -0,0 +1,19 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.registry.RegistryWrapper; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { + public ModItemTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + + } +} diff --git a/src/client/java/wtf/hak/datagen/ModLootTableProvider.java b/src/client/java/wtf/hak/datagen/ModLootTableProvider.java new file mode 100644 index 0000000..fa607a1 --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModLootTableProvider.java @@ -0,0 +1,25 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider; +import net.minecraft.data.DataOutput; +import net.minecraft.loot.LootTable; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryWrapper; +import wtf.hak.blocks.ModBlocks; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +public class ModLootTableProvider extends FabricBlockLootTableProvider { + + public ModLootTableProvider(FabricDataOutput dataOutput, CompletableFuture registryLookup) { + super(dataOutput, registryLookup); + } + + @Override + public void generate() { + addDrop(ModBlocks.TEST_BLOCK); + } +} diff --git a/src/client/java/wtf/hak/datagen/ModModelProvider.java b/src/client/java/wtf/hak/datagen/ModModelProvider.java new file mode 100644 index 0000000..e350863 --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModModelProvider.java @@ -0,0 +1,23 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.minecraft.client.data.BlockStateModelGenerator; +import net.minecraft.client.data.ItemModelGenerator; +import wtf.hak.blocks.ModBlocks; + +public class ModModelProvider extends FabricModelProvider { + public ModModelProvider(FabricDataOutput output) { + super(output); + } + + @Override + public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.TEST_BLOCK); + } + + @Override + public void generateItemModels(ItemModelGenerator itemModelGenerator) { + + } +} diff --git a/src/client/java/wtf/hak/datagen/ModRecipeProvider.java b/src/client/java/wtf/hak/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..8d067fd --- /dev/null +++ b/src/client/java/wtf/hak/datagen/ModRecipeProvider.java @@ -0,0 +1,26 @@ +package wtf.hak.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.minecraft.data.recipe.RecipeExporter; +import net.minecraft.data.recipe.RecipeGenerator; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class ModRecipeProvider extends FabricRecipeProvider { + public ModRecipeProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected RecipeGenerator getRecipeGenerator(RegistryWrapper.WrapperLookup wrapperLookup, RecipeExporter recipeExporter) { + return null; + } + + + @Override + public String getName() { + return ""; + } +} diff --git a/src/main/generated/.cache/6310a5a229c2218b3f93eccb5bc535ef215280d4 b/src/main/generated/.cache/6310a5a229c2218b3f93eccb5bc535ef215280d4 new file mode 100644 index 0000000..eae3110 --- /dev/null +++ b/src/main/generated/.cache/6310a5a229c2218b3f93eccb5bc535ef215280d4 @@ -0,0 +1,2 @@ +// 1.21.5 -999999999-01-01T00:00:00 SurvivalEnhanced/Block Loot Tables +6d3d52fa8e565a8270b6ed73f2d41c45eb8f8ae1 data/survivalenhanced/loot_table/blocks/test_block.json diff --git a/src/main/generated/.cache/6cc7444c5d54546681289c4ba704e38ebcccf1d1 b/src/main/generated/.cache/6cc7444c5d54546681289c4ba704e38ebcccf1d1 new file mode 100644 index 0000000..b8ddb83 --- /dev/null +++ b/src/main/generated/.cache/6cc7444c5d54546681289c4ba704e38ebcccf1d1 @@ -0,0 +1 @@ +// 1.21.5 -999999999-01-01T00:00:00 SurvivalEnhanced/Tags for minecraft:item diff --git a/src/main/generated/.cache/9126c091c71799f95677dc74aa2df9305fd7b1c0 b/src/main/generated/.cache/9126c091c71799f95677dc74aa2df9305fd7b1c0 new file mode 100644 index 0000000..99a0228 --- /dev/null +++ b/src/main/generated/.cache/9126c091c71799f95677dc74aa2df9305fd7b1c0 @@ -0,0 +1,2 @@ +// 1.21.5 -999999999-01-01T00:00:00 SurvivalEnhanced/Tags for minecraft:block +5bfebfdb385a11ef08214d202811caf3d2ece770 data/minecraft/tags/block/mineable/pickaxe.json diff --git a/src/main/generated/.cache/ad12d3404359203536406edbf1a57572b7b3e81a b/src/main/generated/.cache/ad12d3404359203536406edbf1a57572b7b3e81a new file mode 100644 index 0000000..3fba616 --- /dev/null +++ b/src/main/generated/.cache/ad12d3404359203536406edbf1a57572b7b3e81a @@ -0,0 +1,4 @@ +// 1.21.5 -999999999-01-01T00:00:00 SurvivalEnhanced/Model Definitions +8a4568413ceea79afb6cd12a04d134475dc0a5dd assets/survivalenhanced/blockstates/test_block.json +4bf1b27ded399c3be7cd77d2c4687ea7771cd9eb assets/survivalenhanced/items/test_block.json +2c21fa4746f154853402115ecd8a85816b163592 assets/survivalenhanced/models/block/test_block.json diff --git a/src/main/generated/.cache/c3b515a45400172ff935d4e50a7627620df8c8d1 b/src/main/generated/.cache/c3b515a45400172ff935d4e50a7627620df8c8d1 new file mode 100644 index 0000000..6c2617b --- /dev/null +++ b/src/main/generated/.cache/c3b515a45400172ff935d4e50a7627620df8c8d1 @@ -0,0 +1,2 @@ +// 1.21.5 -999999999-01-01T00:00:00 SurvivalEnhanced/Language (en_us) +f92cdd9c2f07e8456fcc5d8040adfbcc626bbdcb assets/survivalenhanced/lang/en_us.json diff --git a/src/main/generated/assets/survivalenhanced/blockstates/test_block.json b/src/main/generated/assets/survivalenhanced/blockstates/test_block.json new file mode 100644 index 0000000..17e6966 --- /dev/null +++ b/src/main/generated/assets/survivalenhanced/blockstates/test_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "survivalenhanced:block/test_block" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/survivalenhanced/items/test_block.json b/src/main/generated/assets/survivalenhanced/items/test_block.json new file mode 100644 index 0000000..759015c --- /dev/null +++ b/src/main/generated/assets/survivalenhanced/items/test_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "survivalenhanced:block/test_block" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/survivalenhanced/lang/en_us.json b/src/main/generated/assets/survivalenhanced/lang/en_us.json new file mode 100644 index 0000000..ab7e02e --- /dev/null +++ b/src/main/generated/assets/survivalenhanced/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "item.survivalenhanced.test_block": "Test Block" +} \ No newline at end of file diff --git a/src/main/generated/assets/survivalenhanced/models/block/test_block.json b/src/main/generated/assets/survivalenhanced/models/block/test_block.json new file mode 100644 index 0000000..6afecce --- /dev/null +++ b/src/main/generated/assets/survivalenhanced/models/block/test_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "survivalenhanced:block/test_block" + } +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/block/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/block/mineable/pickaxe.json new file mode 100644 index 0000000..c8854c6 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,5 @@ +{ + "values": [ + "survivalenhanced:test_block" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/survivalenhanced/loot_table/blocks/test_block.json b/src/main/generated/data/survivalenhanced/loot_table/blocks/test_block.json new file mode 100644 index 0000000..37d90f1 --- /dev/null +++ b/src/main/generated/data/survivalenhanced/loot_table/blocks/test_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "survivalenhanced:test_block" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/java/wtf/hak/SurvivalEnhanced.java b/src/main/java/wtf/hak/SurvivalEnhanced.java index dcffbfa..836a5ee 100644 --- a/src/main/java/wtf/hak/SurvivalEnhanced.java +++ b/src/main/java/wtf/hak/SurvivalEnhanced.java @@ -4,21 +4,15 @@ import net.fabricmc.api.ModInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import wtf.hak.blocks.ModBlocks; public class SurvivalEnhanced implements ModInitializer { public static final String MOD_ID = "survivalenhanced"; - // This logger is used to write text to the console and the log file. - // It is considered best practice to use your mod id as the logger's name. - // That way, it's clear which mod wrote info, warnings, and errors. public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); @Override public void onInitialize() { - // This code runs as soon as Minecraft is in a mod-load-ready state. - // However, some things (like resources) may still be uninitialized. - // Proceed with mild caution. - - LOGGER.info("Hello Fabric world!"); + ModBlocks.registerBlocks(); } } \ No newline at end of file diff --git a/src/main/java/wtf/hak/blocks/ModBlocks.java b/src/main/java/wtf/hak/blocks/ModBlocks.java new file mode 100644 index 0000000..895d6fa --- /dev/null +++ b/src/main/java/wtf/hak/blocks/ModBlocks.java @@ -0,0 +1,62 @@ +package wtf.hak.blocks; + +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.ChestBlock; +import net.minecraft.block.TestBlock; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import wtf.hak.SurvivalEnhanced; + +import java.util.function.Function; + +public class ModBlocks { + + public static Block TEST_BLOCK; + + private static Block register(String name, Function blockFactory, AbstractBlock.Settings settings, boolean shouldRegisterItem) { + // Create a registry key for the block + RegistryKey blockKey = keyOfBlock(name); + // Create the block instance + Block block = blockFactory.apply(settings.registryKey(blockKey)); + + // Sometimes, you may not want to register an item for the block. + // Eg: if it's a technical block like `minecraft:moving_piston` or `minecraft:end_gateway` + if (shouldRegisterItem) { + // Items need to be registered with a different type of registry key, but the ID + // can be the same. + RegistryKey itemKey = keyOfItem(name); + + BlockItem blockItem = new BlockItem(block, new Item.Settings().registryKey(itemKey)); + Registry.register(Registries.ITEM, itemKey, blockItem); + } + + return Registry.register(Registries.BLOCK, blockKey, block); + } + + private static RegistryKey keyOfBlock(String name) { + return RegistryKey.of(RegistryKeys.BLOCK, Identifier.of(SurvivalEnhanced.MOD_ID, name)); + } + + private static RegistryKey keyOfItem(String name) { + return RegistryKey.of(RegistryKeys.ITEM, Identifier.of(SurvivalEnhanced.MOD_ID, name)); + } + + public static void registerBlocks(){ + TEST_BLOCK = register("test_block", + TestBlock::new, + AbstractBlock.Settings.create().strength(1f).requiresTool(), + true); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.BUILDING_BLOCKS).register(entries -> entries.add(TEST_BLOCK)); + } + +} diff --git a/src/main/java/wtf/hak/blocks/TestBlock.java b/src/main/java/wtf/hak/blocks/TestBlock.java new file mode 100644 index 0000000..9bfdb8c --- /dev/null +++ b/src/main/java/wtf/hak/blocks/TestBlock.java @@ -0,0 +1,10 @@ +package wtf.hak.blocks; + +import net.minecraft.block.Block; + +public class TestBlock extends Block { + + public TestBlock(Settings settings) { + super(settings); + } +} diff --git a/src/main/resources/assets/survivalenhanced/textures/block/test_block.png b/src/main/resources/assets/survivalenhanced/textures/block/test_block.png new file mode 100644 index 0000000000000000000000000000000000000000..76ef7e42353cd8ab8868c023d6db94966b97d470 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|yF6VSLo5W7FFa4Y_B@eKG?`m8 zd9!FjqjJ7r7!V1^i2)IJoj{jRdbdz|vO;k4WQEm0Bxb%@%-r~hO1WYf5Otgts8*Qf zoU7o-d}OV_X2o;OHv|+;i7A|7Gn78mHi1VayI}@<;r;iIC)dl*?~&mVn6GgAu)`)c z4+(o_=C(cjJeBej-ZpkPq$p}hdR${Ld~YwYBBy5YrjNWXEKW`?3Y!E3*^EpTW_Qi! z-O9LMDJAk&HUmSczLP-Fj(7v0FZfa;JkxxA8MJ_G4j=}BOTm*tl&7no%Q~loCIA@! BQC9!} literal 0 HcmV?d00001