From 6375971cfa7a35fd2ec928c3bfd430317b9a3fde Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Thu, 11 Aug 2022 00:09:34 +0700 Subject: [PATCH] Add datagen --- src/generated/resources/.cache/cache | 7 ++++ .../enchantrium/blockstates/enchanter.json | 7 ++++ .../assets/enchantrium/lang/en_us.json | 5 +++ .../enchantrium/models/block/enchanter.json | 11 ++++++ .../enchantrium/models/item/enchanter.json | 3 ++ .../enchantrium/models/item/test_item.json | 6 ++++ .../recipes/enchantrium/enchanter.json | 34 ++++++++++++++++++ .../data/enchantrium/recipes/enchanter.json | 22 ++++++++++++ .../nuark/enchantrium/block/ModBlocks.java | 4 +-- .../block/custom/EnchanterBlock.java | 6 ++-- .../datagen/BlockStatesGenerator.java | 25 +++++++++++++ .../enchantrium/datagen/DataGenerators.java | 23 ++++++++++++ .../datagen/ItemModelGenerator.java | 19 ++++++++++ .../datagen/LanguageGenerator.java | 21 +++++++++++ .../enchantrium/datagen/RecipesGenerator.java | 32 +++++++++++++++++ .../xyz/nuark/enchantrium/item/ModItems.java | 8 +++++ .../textures/block/enchanter_side.png | Bin 0 -> 216 bytes .../textures/block/enchanter_top.png | Bin 0 -> 189 bytes .../enchantrium/textures/item/test_item.png | Bin 0 -> 205 bytes 19 files changed, 228 insertions(+), 5 deletions(-) create mode 100644 src/generated/resources/.cache/cache create mode 100644 src/generated/resources/assets/enchantrium/blockstates/enchanter.json create mode 100644 src/generated/resources/assets/enchantrium/lang/en_us.json create mode 100644 src/generated/resources/assets/enchantrium/models/block/enchanter.json create mode 100644 src/generated/resources/assets/enchantrium/models/item/enchanter.json create mode 100644 src/generated/resources/assets/enchantrium/models/item/test_item.json create mode 100644 src/generated/resources/data/enchantrium/advancements/recipes/enchantrium/enchanter.json create mode 100644 src/generated/resources/data/enchantrium/recipes/enchanter.json create mode 100644 src/main/java/xyz/nuark/enchantrium/datagen/BlockStatesGenerator.java create mode 100644 src/main/java/xyz/nuark/enchantrium/datagen/DataGenerators.java create mode 100644 src/main/java/xyz/nuark/enchantrium/datagen/ItemModelGenerator.java create mode 100644 src/main/java/xyz/nuark/enchantrium/datagen/LanguageGenerator.java create mode 100644 src/main/java/xyz/nuark/enchantrium/datagen/RecipesGenerator.java create mode 100644 src/main/resources/assets/enchantrium/textures/block/enchanter_side.png create mode 100644 src/main/resources/assets/enchantrium/textures/block/enchanter_top.png create mode 100644 src/main/resources/assets/enchantrium/textures/item/test_item.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache new file mode 100644 index 0000000..90a88d4 --- /dev/null +++ b/src/generated/resources/.cache/cache @@ -0,0 +1,7 @@ +b61bd40379af029dc4a8918675a5340d82eb9614 assets/enchantrium/blockstates/enchanter.json +12c47b4ceba86e32ead7ed95c8cf1ebdf6097490 assets/enchantrium/lang/en_us.json +612cfe324c0a8f894098e57a492a11ea7a7af881 assets/enchantrium/models/block/enchanter.json +b3795796d7640d926777c42c84f36a561511f981 assets/enchantrium/models/item/enchanter.json +b5996790803bc6c5aa9e19868571b94ff2770cc8 assets/enchantrium/models/item/test_item.json +0dfde33a6966e8ce59687aa186ad4ae43952e3cc data/enchantrium/advancements/recipes/enchantrium/enchanter.json +2feeac4086afc49c70948894d952479c375c10e3 data/enchantrium/recipes/enchanter.json diff --git a/src/generated/resources/assets/enchantrium/blockstates/enchanter.json b/src/generated/resources/assets/enchantrium/blockstates/enchanter.json new file mode 100644 index 0000000..1dd9a69 --- /dev/null +++ b/src/generated/resources/assets/enchantrium/blockstates/enchanter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "enchantrium:block/enchanter" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/enchantrium/lang/en_us.json b/src/generated/resources/assets/enchantrium/lang/en_us.json new file mode 100644 index 0000000..16883c9 --- /dev/null +++ b/src/generated/resources/assets/enchantrium/lang/en_us.json @@ -0,0 +1,5 @@ +{ + "block.enchantrium.enchanter": "Enchanter", + "item.enchantrium.test_item": "Test Item :)", + "itemGroup.enchantrium": "Enchantrium" +} \ No newline at end of file diff --git a/src/generated/resources/assets/enchantrium/models/block/enchanter.json b/src/generated/resources/assets/enchantrium/models/block/enchanter.json new file mode 100644 index 0000000..5b5f58f --- /dev/null +++ b/src/generated/resources/assets/enchantrium/models/block/enchanter.json @@ -0,0 +1,11 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "down": "enchantrium:block/enchanter_side", + "up": "enchantrium:block/enchanter_top", + "north": "enchantrium:block/enchanter_side", + "south": "enchantrium:block/enchanter_side", + "east": "enchantrium:block/enchanter_side", + "west": "enchantrium:block/enchanter_side" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/enchantrium/models/item/enchanter.json b/src/generated/resources/assets/enchantrium/models/item/enchanter.json new file mode 100644 index 0000000..740ed45 --- /dev/null +++ b/src/generated/resources/assets/enchantrium/models/item/enchanter.json @@ -0,0 +1,3 @@ +{ + "parent": "enchantrium:block/enchanter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/enchantrium/models/item/test_item.json b/src/generated/resources/assets/enchantrium/models/item/test_item.json new file mode 100644 index 0000000..1464594 --- /dev/null +++ b/src/generated/resources/assets/enchantrium/models/item/test_item.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "enchantrium:item/test_item" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/enchantrium/advancements/recipes/enchantrium/enchanter.json b/src/generated/resources/data/enchantrium/advancements/recipes/enchantrium/enchanter.json new file mode 100644 index 0000000..1654d64 --- /dev/null +++ b/src/generated/resources/data/enchantrium/advancements/recipes/enchantrium/enchanter.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "enchantrium:enchanter" + ] + }, + "criteria": { + "enchanting": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "minecraft:enchanting_table" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "enchantrium:enchanter" + } + } + }, + "requirements": [ + [ + "enchanting", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/enchantrium/recipes/enchanter.json b/src/generated/resources/data/enchantrium/recipes/enchanter.json new file mode 100644 index 0000000..e733561 --- /dev/null +++ b/src/generated/resources/data/enchantrium/recipes/enchanter.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "xxx", + "x#x", + "#y#" + ], + "key": { + "x": { + "tag": "forge:gems/diamond" + }, + "#": { + "tag": "forge:storage_blocks/copper" + }, + "y": { + "item": "minecraft:enchanting_table" + } + }, + "result": { + "item": "enchantrium:enchanter" + } +} \ No newline at end of file diff --git a/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java b/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java index b022d74..3d3d33b 100644 --- a/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java +++ b/src/main/java/xyz/nuark/enchantrium/block/ModBlocks.java @@ -28,9 +28,7 @@ public class ModBlocks { public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Enchantrium.MOD_ID); - public static final RegistryObject ENCHANTER = registerBlock("enchanter", - () -> new EnchanterBlock(BlockBehaviour.Properties.copy(Blocks.ENCHANTING_TABLE).noOcclusion()) - ); + public static final RegistryObject ENCHANTER = registerBlockWithoutBlockItem("enchanter", EnchanterBlock::new); private static RegistryObject registerBlockWithoutBlockItem(String name, Supplier block) { return BLOCKS.register(name, block); diff --git a/src/main/java/xyz/nuark/enchantrium/block/custom/EnchanterBlock.java b/src/main/java/xyz/nuark/enchantrium/block/custom/EnchanterBlock.java index 9954d71..864232d 100644 --- a/src/main/java/xyz/nuark/enchantrium/block/custom/EnchanterBlock.java +++ b/src/main/java/xyz/nuark/enchantrium/block/custom/EnchanterBlock.java @@ -9,9 +9,11 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.network.NetworkHooks; import org.jetbrains.annotations.NotNull; @@ -19,8 +21,8 @@ import org.jetbrains.annotations.Nullable; import xyz.nuark.enchantrium.block.entity.custom.EnchanterBlockEntity; public class EnchanterBlock extends BaseEntityBlock { - public EnchanterBlock(BlockBehaviour.Properties properties) { - super(properties); + public EnchanterBlock() { + super(BlockBehaviour.Properties.of(Material.STONE).strength(2f).lightLevel((p_187435_) -> 14).sound(SoundType.STONE)); } @Override diff --git a/src/main/java/xyz/nuark/enchantrium/datagen/BlockStatesGenerator.java b/src/main/java/xyz/nuark/enchantrium/datagen/BlockStatesGenerator.java new file mode 100644 index 0000000..a28cfb0 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/datagen/BlockStatesGenerator.java @@ -0,0 +1,25 @@ +package xyz.nuark.enchantrium.datagen; + +import net.minecraft.data.DataGenerator; +import net.minecraftforge.client.model.generators.BlockStateProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import xyz.nuark.enchantrium.Enchantrium; +import xyz.nuark.enchantrium.block.ModBlocks; + +public class BlockStatesGenerator extends BlockStateProvider { + public BlockStatesGenerator(DataGenerator gen, ExistingFileHelper exFileHelper) { + super(gen, Enchantrium.MOD_ID, exFileHelper); + } + + @Override + protected void registerStatesAndModels() { + registerEnchanter(); + } + + private void registerEnchanter() { + var block = ModBlocks.ENCHANTER.get(); + var side = modLoc("block/enchanter_side"); + var top = modLoc("block/enchanter_top"); + simpleBlock(block, models().cube(block.getRegistryName().getPath(), side, top, side, side, side, side)); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/datagen/DataGenerators.java b/src/main/java/xyz/nuark/enchantrium/datagen/DataGenerators.java new file mode 100644 index 0000000..2c40d98 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/datagen/DataGenerators.java @@ -0,0 +1,23 @@ +package xyz.nuark.enchantrium.datagen; + +import net.minecraft.data.DataGenerator; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; +import xyz.nuark.enchantrium.Enchantrium; + +@Mod.EventBusSubscriber(modid = Enchantrium.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class DataGenerators { + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + if (event.includeServer()) { + generator.addProvider(new RecipesGenerator(generator)); + } + if (event.includeClient()) { + generator.addProvider(new BlockStatesGenerator(generator, event.getExistingFileHelper())); + generator.addProvider(new ItemModelGenerator(generator, event.getExistingFileHelper())); + generator.addProvider(new LanguageGenerator(generator, "en_us")); + } + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/datagen/ItemModelGenerator.java b/src/main/java/xyz/nuark/enchantrium/datagen/ItemModelGenerator.java new file mode 100644 index 0000000..f32e3ab --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/datagen/ItemModelGenerator.java @@ -0,0 +1,19 @@ +package xyz.nuark.enchantrium.datagen; + +import net.minecraft.data.DataGenerator; +import net.minecraftforge.client.model.generators.ItemModelProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import xyz.nuark.enchantrium.Enchantrium; +import xyz.nuark.enchantrium.item.ModItems; + +public class ItemModelGenerator extends ItemModelProvider { + public ItemModelGenerator(DataGenerator generator, ExistingFileHelper exFileHelper) { + super(generator, Enchantrium.MOD_ID, exFileHelper); + } + + @Override + protected void registerModels() { + basicItem(ModItems.TEST_ITEM.get()); + withExistingParent(ModItems.ENCHANTER_ITEM.get().getRegistryName().getPath(), modLoc("block/enchanter")); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/datagen/LanguageGenerator.java b/src/main/java/xyz/nuark/enchantrium/datagen/LanguageGenerator.java new file mode 100644 index 0000000..dd49ed6 --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/datagen/LanguageGenerator.java @@ -0,0 +1,21 @@ +package xyz.nuark.enchantrium.datagen; + +import net.minecraft.data.DataGenerator; +import net.minecraftforge.common.data.LanguageProvider; +import xyz.nuark.enchantrium.Enchantrium; +import xyz.nuark.enchantrium.block.ModBlocks; +import xyz.nuark.enchantrium.item.ModItems; + +public class LanguageGenerator extends LanguageProvider { + public LanguageGenerator(DataGenerator gen, String locale) { + super(gen, Enchantrium.MOD_ID, locale); + } + + @Override + protected void addTranslations() { + add("itemGroup." + Enchantrium.MOD_ID, "Enchantrium"); + + add(ModBlocks.ENCHANTER.get(), "Enchanter"); + add(ModItems.TEST_ITEM.get(), "Test Item :)"); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/datagen/RecipesGenerator.java b/src/main/java/xyz/nuark/enchantrium/datagen/RecipesGenerator.java new file mode 100644 index 0000000..8daa4bf --- /dev/null +++ b/src/main/java/xyz/nuark/enchantrium/datagen/RecipesGenerator.java @@ -0,0 +1,32 @@ +package xyz.nuark.enchantrium.datagen; + +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.world.item.Items; +import net.minecraftforge.common.Tags; +import org.jetbrains.annotations.NotNull; +import xyz.nuark.enchantrium.block.ModBlocks; + +import java.util.function.Consumer; + +public class RecipesGenerator extends RecipeProvider { + public RecipesGenerator(DataGenerator generator) { + super(generator); + } + + @Override + protected void buildCraftingRecipes(@NotNull Consumer consumer) { + ShapedRecipeBuilder.shaped(ModBlocks.ENCHANTER.get()) + .pattern("xxx") + .pattern("x#x") + .pattern("#y#") + .define('x', Tags.Items.GEMS_DIAMOND) + .define('#', Tags.Items.STORAGE_BLOCKS_COPPER) + .define('y', Items.ENCHANTING_TABLE) + .unlockedBy("enchanting", InventoryChangeTrigger.TriggerInstance.hasItems(Items.ENCHANTING_TABLE)) + .save(consumer); + } +} diff --git a/src/main/java/xyz/nuark/enchantrium/item/ModItems.java b/src/main/java/xyz/nuark/enchantrium/item/ModItems.java index f864941..5ceefac 100644 --- a/src/main/java/xyz/nuark/enchantrium/item/ModItems.java +++ b/src/main/java/xyz/nuark/enchantrium/item/ModItems.java @@ -1,19 +1,27 @@ package xyz.nuark.enchantrium.item; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import xyz.nuark.enchantrium.Enchantrium; +import xyz.nuark.enchantrium.block.ModBlocks; import xyz.nuark.enchantrium.setup.ModSetup; public class ModItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Enchantrium.MOD_ID); public static final RegistryObject TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(ModSetup.ITEM_GROUP))); + public static final RegistryObject ENCHANTER_ITEM = fromBlock(ModBlocks.ENCHANTER); public static void register(IEventBus eventBus) { ITEMS.register(eventBus); } + + public static RegistryObject fromBlock(RegistryObject block) { + return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties().tab(ModSetup.ITEM_GROUP))); + } } diff --git a/src/main/resources/assets/enchantrium/textures/block/enchanter_side.png b/src/main/resources/assets/enchantrium/textures/block/enchanter_side.png new file mode 100644 index 0000000000000000000000000000000000000000..81fc0b31562e331106e0be3bf9c3d02605fb7044 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFHp^oVw8YFoCO|{#S9F52SJ!|$HeTnK*1nS z7sn8Z%duw;@-`UoIA079I}j+Aaf-nuc0uUw|2`6p7GLJyJGkjjZor0SjmpM0Jq@!+ zmdKI;Vst E0Fu{7mH+?% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/enchantrium/textures/block/enchanter_top.png b/src/main/resources/assets/enchantrium/textures/block/enchanter_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8efc9bf7bbf75b8404fbf4e243d0f59afeb8694d GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFovY3H^?;r>>?wFYU7AR=z>Eak7aXGg4 zHZOw$2XnV@fZBw=(?#NYH`>QsVqPE-F4JZicwtgcoIq&Rug4Q4+3(Z^l%}kGy&x_o bon7MiU$(@CKYCd}gBUzr{an^LB{Ts5l3zN3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/enchantrium/textures/item/test_item.png b/src/main/resources/assets/enchantrium/textures/item/test_item.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b5a2e23bc61f4e1da488a8eeeb2667fa2553f9 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}c0G|-o|3FPo{{wlG51UH^Ddv(Ozu^D>8Lpq=1*&D>EbxddW? z8eR=RK|4L|mt5rT6MeD>`MIQics qj_aXE7fWm