diff --git a/src/generated/resources/.cache/2057a5fbf4536910f4a3021fe8f247710d27f3b9 b/src/generated/resources/.cache/2057a5fbf4536910f4a3021fe8f247710d27f3b9 new file mode 100644 index 0000000..a5ffd90 --- /dev/null +++ b/src/generated/resources/.cache/2057a5fbf4536910f4a3021fe8f247710d27f3b9 @@ -0,0 +1,8 @@ +// 1.21 2024-06-14T19:51:28.73686 Item Models: tutorialmod +dbe88821c499df623ebb7ff6923d9ba7c904d4d2 assets/tutorialmod/models/item/boots.json +5d0ea2821df43eeadbc82147b8ac34f4eadf454e assets/tutorialmod/models/item/chestplate.json +f0c403b69c925ad55cd36b4c90d185294fe9cee4 assets/tutorialmod/models/item/example_item.json +ad7e28aa62fa2a4cbc97b8e0c4e3fd9f6d43046b assets/tutorialmod/models/item/helmet.json +0c29e43fdd35ecf0cc68cd01c83cf94e7c5523ea assets/tutorialmod/models/item/leggings.json +da68147136ed63306459cfe96bf830739479cf3e assets/tutorialmod/models/item/raw_example.json +3375b8425083727f8d74a3b7354e99e7cca2f2ec assets/tutorialmod/models/item/sword.json diff --git a/src/generated/resources/.cache/2a28fcdbeac64b3f0fb1da9f964f3a73de497648 b/src/generated/resources/.cache/2a28fcdbeac64b3f0fb1da9f964f3a73de497648 new file mode 100644 index 0000000..d866c51 --- /dev/null +++ b/src/generated/resources/.cache/2a28fcdbeac64b3f0fb1da9f964f3a73de497648 @@ -0,0 +1,6 @@ +// 1.21 2024-06-14T20:00:45.576863 Tags for minecraft:item mod id tutorialmod +c83f9edda4547a4af3f0016fda0c2621839849b3 data/tutorialmod/tags/item/example_block.json +45f5e001644f26668bdf88ee06c051953b522b28 data/tutorialmod/tags/item/example_item.json +da2ee27128dcabd679c7a80668a17537bbce2482 data/tutorialmod/tags/item/ores/deepslate_example_ore.json +c87ceab65e9fee9e7098e332e5c7bcbd3bfe6e86 data/tutorialmod/tags/item/ores/example_ore.json +c7ad09f57364a0e760bc7f839e17e03a257634b8 data/tutorialmod/tags/item/raw/example_raw.json diff --git a/src/generated/resources/.cache/413029547eff04357dd66df1ba8615b193c39dc3 b/src/generated/resources/.cache/413029547eff04357dd66df1ba8615b193c39dc3 new file mode 100644 index 0000000..aeea34a --- /dev/null +++ b/src/generated/resources/.cache/413029547eff04357dd66df1ba8615b193c39dc3 @@ -0,0 +1,10 @@ +// 1.21 2024-06-14T19:51:28.736356 Block States: tutorialmod +dda480c6ef87c8ccc3b36e20d0294a037b6a0881 assets/tutorialmod/blockstates/deepslate_example_ore.json +a3356530b08bd3cdb3b57c3040ae1d91cd093bb4 assets/tutorialmod/blockstates/example_block.json +03c90ec2faf19c4828b297765e48c49809888da9 assets/tutorialmod/blockstates/example_ore.json +fe94726c43158210ecb1c3ac8e1bc4b1ef7dd939 assets/tutorialmod/models/block/deepslate_example_ore.json +1f63ade4fd62f4b546723d49dae685c065f07538 assets/tutorialmod/models/block/example_block.json +5c66dd122380bbca40691b502726711e25e923b6 assets/tutorialmod/models/block/example_ore.json +7e34b5999d3b9a3a586cd07b9d3abbecf8d4b3cc assets/tutorialmod/models/item/deepslate_example_ore.json +a4ba5aef7c12629ab6a8ead3120151083d1f8627 assets/tutorialmod/models/item/example_block.json +1408667875c176b552b3316d817c806dc50f2fdd assets/tutorialmod/models/item/example_ore.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 0000000..6d147b8 --- /dev/null +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1,4 @@ +// 1.21 2024-06-14T19:51:28.735097 Loot Tables +1bf82b0d74eb53d1620cfcf321d97992928eee23 data/tutorialmod/loot_table/blocks/deepslate_example_ore.json +3eea00e49eaa96daa00abd9020cfd7f9f198d9d9 data/tutorialmod/loot_table/blocks/example_block.json +9799f9b0ca7efd076615aadca332967fd286c300 data/tutorialmod/loot_table/blocks/example_ore.json diff --git a/src/generated/resources/.cache/9e626b95ebbec93dbf63c677d19e13e520c20d6b b/src/generated/resources/.cache/9e626b95ebbec93dbf63c677d19e13e520c20d6b new file mode 100644 index 0000000..15ea7d5 --- /dev/null +++ b/src/generated/resources/.cache/9e626b95ebbec93dbf63c677d19e13e520c20d6b @@ -0,0 +1,7 @@ +// 1.21 2024-06-14T20:00:45.574165 Tags for minecraft:block mod id tutorialmod +155db109f16b89eb19f46fd8f7dcf1fda23077ec data/minecraft/tags/block/mineable/pickaxe.json +c83f9edda4547a4af3f0016fda0c2621839849b3 data/minecraft/tags/block/needs_diamond_tool.json +f87db1c083848b3581af3e4d30218e08d966b56b data/minecraft/tags/block/needs_iron_tool.json +c83f9edda4547a4af3f0016fda0c2621839849b3 data/tutorialmod/tags/block/example_block.json +da2ee27128dcabd679c7a80668a17537bbce2482 data/tutorialmod/tags/block/ores/deepslate_example_ore.json +c87ceab65e9fee9e7098e332e5c7bcbd3bfe6e86 data/tutorialmod/tags/block/ores/example_ore.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e new file mode 100644 index 0000000..2621cea --- /dev/null +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -0,0 +1,17 @@ +// 1.21 2024-06-14T19:51:28.735681 Recipes +2c96737c971657219149ba5dc48e6b42ff747f65 data/tutorialmod/advancement/recipes/building_blocks/example_item_block_recipe.json +0a1564051e57367818967fae1b9e5f5511e7b621 data/tutorialmod/advancement/recipes/combat/example_item_boots_recipe.json +042d81df8f855653c14d58ff1b928067b81afb3f data/tutorialmod/advancement/recipes/combat/example_item_chestplate_recipe.json +0607c38e8672c5a2ac324af42f1fdc3ef10c63a8 data/tutorialmod/advancement/recipes/combat/example_item_helmet_recipe.json +2e95bff638439706262f221676fc4b92bfd23d00 data/tutorialmod/advancement/recipes/combat/example_item_leggings_recipe.json +003fda24a62e3755ced691e914621596695a06e1 data/tutorialmod/advancement/recipes/misc/raw_example_blasting.json +400a5982bd3adbc3bb1df76a684c64140092a4ad data/tutorialmod/advancement/recipes/misc/raw_example_smelting.json +83fb50d1375fa9f0edb1b6b3510149dbb391981b data/tutorialmod/advancement/recipes/tools/example_item_sword_recipe.json +82db86888704865949f5972aa399e7d1ff01fc63 data/tutorialmod/recipe/example_item_block_recipe.json +066edb9f867126fe9e088d6f0fc5853190e13fbd data/tutorialmod/recipe/example_item_boots_recipe.json +b4ff5b920151721adaf825707119d438034a266f data/tutorialmod/recipe/example_item_chestplate_recipe.json +e75b6f7980ddf8267827b77975a162f23cc9d31a data/tutorialmod/recipe/example_item_helmet_recipe.json +457df37d25580ca083ee8a6775f860c60dfbf07b data/tutorialmod/recipe/example_item_leggings_recipe.json +4bc95772e20bd2245206cfcadd9be25f0540f176 data/tutorialmod/recipe/example_item_sword_recipe.json +e90abe708f8f45ea02139e5d5e09d9f03e2fdcf8 data/tutorialmod/recipe/raw_example_blasting.json +4eb6f6e1a18a712d7739d8e9361878149495aa61 data/tutorialmod/recipe/raw_example_smelting.json diff --git a/src/generated/resources/.cache/cb90fbfab5cc598e4a105f1208c775d5d4eaaea5 b/src/generated/resources/.cache/cb90fbfab5cc598e4a105f1208c775d5d4eaaea5 new file mode 100644 index 0000000..75815ff --- /dev/null +++ b/src/generated/resources/.cache/cb90fbfab5cc598e4a105f1208c775d5d4eaaea5 @@ -0,0 +1,2 @@ +// 1.21 2024-06-14T19:51:28.733882 Languages: en_us for mod: tutorialmod +bf6a33971f37601022616ee88d0e1f10e2592da2 assets/tutorialmod/lang/en_us.json diff --git a/src/generated/resources/assets/tutorialmod/blockstates/deepslate_example_ore.json b/src/generated/resources/assets/tutorialmod/blockstates/deepslate_example_ore.json new file mode 100644 index 0000000..5a4f22a --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/blockstates/deepslate_example_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tutorialmod:block/deepslate_example_ore" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/blockstates/example_block.json b/src/generated/resources/assets/tutorialmod/blockstates/example_block.json new file mode 100644 index 0000000..19dc81e --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/blockstates/example_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tutorialmod:block/example_block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/blockstates/example_ore.json b/src/generated/resources/assets/tutorialmod/blockstates/example_ore.json new file mode 100644 index 0000000..2182b65 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/blockstates/example_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tutorialmod:block/example_ore" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/lang/en_us.json b/src/generated/resources/assets/tutorialmod/lang/en_us.json new file mode 100644 index 0000000..729c47e --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/lang/en_us.json @@ -0,0 +1,13 @@ +{ + "block.tutorialmod.deepslate_example_ore": "Deepslate Example Ore", + "block.tutorialmod.example_block": "Example Block", + "block.tutorialmod.example_ore": "Example Ore", + "item.tutorialmod.boots": "Boots", + "item.tutorialmod.chestplate": "Chestplate", + "item.tutorialmod.example_item": "Example Item", + "item.tutorialmod.helmet": "Helmet", + "item.tutorialmod.leggings": "Leggings", + "item.tutorialmod.raw_example": "Raw Example", + "item.tutorialmod.sword": "Sword", + "tutorialmod.tab.one": "Tutorial Mod" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/block/deepslate_example_ore.json b/src/generated/resources/assets/tutorialmod/models/block/deepslate_example_ore.json new file mode 100644 index 0000000..e2b23cd --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/block/deepslate_example_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tutorialmod:block/deepslate_example_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/block/example_block.json b/src/generated/resources/assets/tutorialmod/models/block/example_block.json new file mode 100644 index 0000000..3b2bae6 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/block/example_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tutorialmod:block/example_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/block/example_ore.json b/src/generated/resources/assets/tutorialmod/models/block/example_ore.json new file mode 100644 index 0000000..0ef6f74 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/block/example_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "tutorialmod:block/example_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/boots.json b/src/generated/resources/assets/tutorialmod/models/item/boots.json new file mode 100644 index 0000000..5de29cd --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/chestplate.json b/src/generated/resources/assets/tutorialmod/models/item/chestplate.json new file mode 100644 index 0000000..455c41d --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/chestplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/deepslate_example_ore.json b/src/generated/resources/assets/tutorialmod/models/item/deepslate_example_ore.json new file mode 100644 index 0000000..ddce39e --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/deepslate_example_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "tutorialmod:block/deepslate_example_ore" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/example_block.json b/src/generated/resources/assets/tutorialmod/models/item/example_block.json new file mode 100644 index 0000000..f22bdc9 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/example_block.json @@ -0,0 +1,3 @@ +{ + "parent": "tutorialmod:block/example_block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/example_item.json b/src/generated/resources/assets/tutorialmod/models/item/example_item.json new file mode 100644 index 0000000..a78435e --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/example_item.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/example_item" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/example_ore.json b/src/generated/resources/assets/tutorialmod/models/item/example_ore.json new file mode 100644 index 0000000..17076f1 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/example_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "tutorialmod:block/example_ore" +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/helmet.json b/src/generated/resources/assets/tutorialmod/models/item/helmet.json new file mode 100644 index 0000000..d1ea46f --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/leggings.json b/src/generated/resources/assets/tutorialmod/models/item/leggings.json new file mode 100644 index 0000000..43e2d25 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/leggings" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/raw_example.json b/src/generated/resources/assets/tutorialmod/models/item/raw_example.json new file mode 100644 index 0000000..132795d --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/raw_example.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "tutorialmod:item/raw_example" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/tutorialmod/models/item/sword.json b/src/generated/resources/assets/tutorialmod/models/item/sword.json new file mode 100644 index 0000000..45dd869 --- /dev/null +++ b/src/generated/resources/assets/tutorialmod/models/item/sword.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "tutorialmod:item/sword" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json new file mode 100644 index 0000000..c83af1e --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,7 @@ +{ + "values": [ + "tutorialmod:example_ore", + "tutorialmod:deepslate_example_ore", + "tutorialmod:example_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/needs_diamond_tool.json b/src/generated/resources/data/minecraft/tags/block/needs_diamond_tool.json new file mode 100644 index 0000000..69d4f01 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/needs_diamond_tool.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json new file mode 100644 index 0000000..72c6eb3 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -0,0 +1,6 @@ +{ + "values": [ + "tutorialmod:example_ore", + "tutorialmod:deepslate_example_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/building_blocks/example_item_block_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/building_blocks/example_item_block_recipe.json new file mode 100644 index 0000000..5660c5a --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/building_blocks/example_item_block_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_block_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_block_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_boots_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_boots_recipe.json new file mode 100644 index 0000000..e3e9458 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_boots_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_boots_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_boots_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_chestplate_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_chestplate_recipe.json new file mode 100644 index 0000000..919c3c9 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_chestplate_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_chestplate_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_chestplate_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_helmet_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_helmet_recipe.json new file mode 100644 index 0000000..edae053 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_helmet_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_helmet_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_helmet_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_leggings_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_leggings_recipe.json new file mode 100644 index 0000000..8e6e7ed --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/combat/example_item_leggings_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_leggings_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_leggings_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_blasting.json b/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_blasting.json new file mode 100644 index 0000000..53e6d64 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_blasting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:raw_example" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:raw_example_blasting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:raw_example_blasting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_smelting.json b/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_smelting.json new file mode 100644 index 0000000..2778287 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/misc/raw_example_smelting.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:raw_example" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:raw_example_smelting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:raw_example_smelting" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/advancement/recipes/tools/example_item_sword_recipe.json b/src/generated/resources/data/tutorialmod/advancement/recipes/tools/example_item_sword_recipe.json new file mode 100644 index 0000000..70919e5 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/advancement/recipes/tools/example_item_sword_recipe.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "tutorialmod:example_item" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "tutorialmod:example_item_sword_recipe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "tutorialmod:example_item_sword_recipe" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/loot_table/blocks/deepslate_example_ore.json b/src/generated/resources/data/tutorialmod/loot_table/blocks/deepslate_example_ore.json new file mode 100644 index 0000000..3f0be7c --- /dev/null +++ b/src/generated/resources/data/tutorialmod/loot_table/blocks/deepslate_example_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "tutorialmod:deepslate_example_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "tutorialmod:raw_example" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "tutorialmod:blocks/deepslate_example_ore" +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/loot_table/blocks/example_block.json b/src/generated/resources/data/tutorialmod/loot_table/blocks/example_block.json new file mode 100644 index 0000000..4fe1838 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/loot_table/blocks/example_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "tutorialmod:example_block" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "tutorialmod:blocks/example_block" +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/loot_table/blocks/example_ore.json b/src/generated/resources/data/tutorialmod/loot_table/blocks/example_ore.json new file mode 100644 index 0000000..c0d2f17 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/loot_table/blocks/example_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "tutorialmod:example_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "tutorialmod:raw_example" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "tutorialmod:blocks/example_ore" +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_block_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_block_recipe.json new file mode 100644 index 0000000..4b1caa9 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_block_recipe.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "building", + "ingredients": [ + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + }, + { + "item": "tutorialmod:example_item" + } + ], + "result": { + "count": 1, + "id": "tutorialmod:example_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_boots_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_boots_recipe.json new file mode 100644 index 0000000..512c72b --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_boots_recipe.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "x": { + "item": "tutorialmod:example_item" + } + }, + "pattern": [ + "x x", + "x x" + ], + "result": { + "count": 1, + "id": "tutorialmod:boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_chestplate_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_chestplate_recipe.json new file mode 100644 index 0000000..4cd06ec --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_chestplate_recipe.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "x": { + "item": "tutorialmod:example_item" + } + }, + "pattern": [ + "x x", + "xxx", + "xxx" + ], + "result": { + "count": 1, + "id": "tutorialmod:chestplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_helmet_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_helmet_recipe.json new file mode 100644 index 0000000..9bf8b7a --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_helmet_recipe.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "x": { + "item": "tutorialmod:example_item" + } + }, + "pattern": [ + "xxx", + "x x" + ], + "result": { + "count": 1, + "id": "tutorialmod:helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_leggings_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_leggings_recipe.json new file mode 100644 index 0000000..eac0132 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_leggings_recipe.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "x": { + "item": "tutorialmod:example_item" + } + }, + "pattern": [ + "xxx", + "x x", + "x x" + ], + "result": { + "count": 1, + "id": "tutorialmod:leggings" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/example_item_sword_recipe.json b/src/generated/resources/data/tutorialmod/recipe/example_item_sword_recipe.json new file mode 100644 index 0000000..a675f16 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/example_item_sword_recipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "s": { + "item": "minecraft:stick" + }, + "x": { + "item": "tutorialmod:example_item" + } + }, + "pattern": [ + " x ", + " x ", + " s " + ], + "result": { + "count": 1, + "id": "tutorialmod:sword" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/raw_example_blasting.json b/src/generated/resources/data/tutorialmod/recipe/raw_example_blasting.json new file mode 100644 index 0000000..0526e84 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/raw_example_blasting.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 300, + "experience": 0.3, + "ingredient": { + "tag": "tutorialmod:raw/example_raw" + }, + "result": { + "count": 1, + "id": "tutorialmod:example_item" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/recipe/raw_example_smelting.json b/src/generated/resources/data/tutorialmod/recipe/raw_example_smelting.json new file mode 100644 index 0000000..dfe4f58 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/recipe/raw_example_smelting.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 300, + "experience": 0.6, + "ingredient": { + "tag": "tutorialmod:raw/example_raw" + }, + "result": { + "count": 1, + "id": "tutorialmod:example_item" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/block/example_block.json b/src/generated/resources/data/tutorialmod/tags/block/example_block.json new file mode 100644 index 0000000..69d4f01 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/block/example_block.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/block/ores/deepslate_example_ore.json b/src/generated/resources/data/tutorialmod/tags/block/ores/deepslate_example_ore.json new file mode 100644 index 0000000..e5b53b0 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/block/ores/deepslate_example_ore.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:deepslate_example_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/block/ores/example_ore.json b/src/generated/resources/data/tutorialmod/tags/block/ores/example_ore.json new file mode 100644 index 0000000..123f227 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/block/ores/example_ore.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/item/example_block.json b/src/generated/resources/data/tutorialmod/tags/item/example_block.json new file mode 100644 index 0000000..69d4f01 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/item/example_block.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/item/example_item.json b/src/generated/resources/data/tutorialmod/tags/item/example_item.json new file mode 100644 index 0000000..f678dc2 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/item/example_item.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_item" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/item/ores/deepslate_example_ore.json b/src/generated/resources/data/tutorialmod/tags/item/ores/deepslate_example_ore.json new file mode 100644 index 0000000..e5b53b0 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/item/ores/deepslate_example_ore.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:deepslate_example_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/item/ores/example_ore.json b/src/generated/resources/data/tutorialmod/tags/item/ores/example_ore.json new file mode 100644 index 0000000..123f227 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/item/ores/example_ore.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:example_ore" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/tutorialmod/tags/item/raw/example_raw.json b/src/generated/resources/data/tutorialmod/tags/item/raw/example_raw.json new file mode 100644 index 0000000..986ecf3 --- /dev/null +++ b/src/generated/resources/data/tutorialmod/tags/item/raw/example_raw.json @@ -0,0 +1,5 @@ +{ + "values": [ + "tutorialmod:raw_example" + ] +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/TutorialMod.java b/src/main/java/io/github/realyusufismail/tutorialmod/TutorialMod.java index fcb8507..e712c7e 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/TutorialMod.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/TutorialMod.java @@ -1,5 +1,6 @@ package io.github.realyusufismail.tutorialmod; +import io.github.realyusufismail.tutorialmod.data.DataGenerators; import io.github.realyusufismail.tutorialmod.init.ArmorMaterialInit; import io.github.realyusufismail.tutorialmod.init.BlockInit; import io.github.realyusufismail.tutorialmod.init.CreativeModeTabInit; @@ -12,7 +13,6 @@ import org.slf4j.LoggerFactory; @Mod(TutorialMod.MOD_ID) - public class TutorialMod { public static final String MOD_ID = "tutorialmod"; public static Logger logger = LoggerFactory.getLogger(TutorialMod.class); @@ -23,6 +23,9 @@ public TutorialMod(IEventBus bus) { ArmorMaterialInit.ARMOR_MATERIALS.register(bus); CreativeModeTabInit.CREATIVE_MODE_TABS.register(bus); + // bus + bus.addListener(DataGenerators::gatherData); + bus.addListener(FMLClientSetupEvent.class, (fmlClientSetupEvent -> { fmlClientSetupEvent.enqueueWork(() -> { ModList.get().getModContainerById(MOD_ID).ifPresent(modContainer -> { diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/DataGenerators.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/DataGenerators.java index a0b64e1..3a61e4c 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/data/DataGenerators.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/DataGenerators.java @@ -1,6 +1,13 @@ package io.github.realyusufismail.tutorialmod.data; import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.data.lang.ModEnLangProvider; +import io.github.realyusufismail.tutorialmod.data.lootable.ModLootTables; +import io.github.realyusufismail.tutorialmod.data.recipe.MainModRecipeProvider; +import io.github.realyusufismail.tutorialmod.data.tags.ModBlockTagsProvider; +import io.github.realyusufismail.tutorialmod.data.tags.ModItemTagProvider; +import io.github.realyusufismail.tutorialmod.data.texture.ModBlockStateProvider; +import io.github.realyusufismail.tutorialmod.data.texture.ModItemStateProvider; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.neoforged.neoforge.common.data.ExistingFileHelper; @@ -13,8 +20,16 @@ public static void gatherData(GatherDataEvent event) { PackOutput output = event.getGenerator().getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - } catch (Exception e) { - TutorialMod.logger.error("Failed to gather data", e); + generator.addProvider(true, new ModEnLangProvider(output)); + generator.addProvider(true, new ModItemStateProvider(output, existingFileHelper)); + generator.addProvider(true, new ModBlockStateProvider(output, existingFileHelper)); + generator.addProvider(true, new ModLootTables(output, event.getLookupProvider())); + generator.addProvider(true, new MainModRecipeProvider(generator, event.getLookupProvider())); + ModBlockTagsProvider blockTagsProvider = new ModBlockTagsProvider(output, event.getLookupProvider(), existingFileHelper); + generator.addProvider(true, blockTagsProvider); + generator.addProvider(true, new ModItemTagProvider(output, event.getLookupProvider(), blockTagsProvider, existingFileHelper)); + } catch (RuntimeException e) { + TutorialMod.logger.error("Failed to generate data", e); } } } diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/lang/ModEnLangProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/lang/ModEnLangProvider.java index e960bde..3d5414d 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/data/lang/ModEnLangProvider.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/lang/ModEnLangProvider.java @@ -1,4 +1,38 @@ package io.github.realyusufismail.tutorialmod.data.lang; -public class ModEnLangProvider { -} +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.BlockInit; +import io.github.realyusufismail.tutorialmod.init.CreativeModeTabInit; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import net.minecraft.data.PackOutput; +import net.neoforged.neoforge.common.data.LanguageProvider; + +public class ModEnLangProvider extends LanguageProvider { + public ModEnLangProvider(PackOutput output) { + super(output, TutorialMod.MOD_ID, "en_us"); + } + + @Override + protected void addTranslations() { + + // items + addItem(ItemInit.EXAMPLE_ITEM, "Example Item"); + addItem(ItemInit.RAW_EXAMPLE, "Raw Example"); + + addItem(ItemInit.HELMET, "Helmet"); + addItem(ItemInit.CHESTPLATE, "Chestplate"); + addItem(ItemInit.LEGGINGS, "Leggings"); + addItem(ItemInit.BOOTS, "Boots"); + + // blocks + addBlock(BlockInit.EXAMPLE_BLOCK, "Example Block"); + addBlock(BlockInit.EXAMPLE_ORE, "Example Ore"); + addBlock(BlockInit.DEEPSLATE_EXAMPLE_ORE, "Deepslate Example Ore"); + + // tools + addItem(ItemInit.SWORD, "Sword"); + + // others + add(CreativeModeTabInit.TUTORIAL_MOD_TAB_ONE_TITLE, "Tutorial Mod"); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModBlockLootTables.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModBlockLootTables.java new file mode 100644 index 0000000..e59772e --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModBlockLootTables.java @@ -0,0 +1,43 @@ +package io.github.realyusufismail.tutorialmod.data.lootable; + + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.BlockInit; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.level.block.Block; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +public class ModBlockLootTables extends BlockLootSubProvider { + protected ModBlockLootTables(HolderLookup.Provider provider) { + super(Set.of(), FeatureFlags.REGISTRY.allFlags(), provider); + } + + @Override + protected void generate() { + + // normal ores + add(BlockInit.EXAMPLE_ORE.get(), createOreDrop(BlockInit.EXAMPLE_ORE.get(), ItemInit.RAW_EXAMPLE.get())); + + // deepslate ores + add(BlockInit.DEEPSLATE_EXAMPLE_ORE.get(), createOreDrop(BlockInit.DEEPSLATE_EXAMPLE_ORE.get(), ItemInit.RAW_EXAMPLE.get())); + + dropSelf(BlockInit.EXAMPLE_BLOCK.get()); + } + + @Override + public @NotNull Iterable getKnownBlocks() { + return BuiltInRegistries.BLOCK.stream() + .filter(block -> Optional.of(BuiltInRegistries.BLOCK.getKey(block)) + .filter(key -> key.getNamespace().equals(TutorialMod.MOD_ID)) + .isPresent()) + .collect(Collectors.toSet()); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModLootTables.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModLootTables.java new file mode 100644 index 0000000..e8fab26 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/lootable/ModLootTables.java @@ -0,0 +1,41 @@ +package io.github.realyusufismail.tutorialmod.data.lootable; + +import com.google.common.collect.Sets; +import io.github.realyusufismail.tutorialmod.TutorialMod; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.WritableRegistry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.ValidationContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +public class ModLootTables extends LootTableProvider { + public ModLootTables(PackOutput packOutput, CompletableFuture pRegistries) { + super(packOutput, Set.of(), List.of(new SubProviderEntry(ModBlockLootTables::new, LootContextParamSets.BLOCK)), pRegistries); + } + + @Override + public void validate(WritableRegistry writableregistry, ValidationContext validationContext, ProblemReporter.Collector problemreporter$collector) { + var modLootTablesId = BuiltInLootTables.all() + .stream() + .filter((id) -> id.registry().getNamespace().equals(TutorialMod.MOD_ID)) + .collect(Collectors.toSet()); + + for (var id : Sets.difference(modLootTablesId, writableregistry.keySet())) { + validationContext.reportProblem("Missing mod loot table: " + id); + } + + writableregistry.forEach((lootTable) -> lootTable.validate(validationContext)); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/MainModRecipeProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/MainModRecipeProvider.java new file mode 100644 index 0000000..4a7aa10 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/MainModRecipeProvider.java @@ -0,0 +1,35 @@ +package io.github.realyusufismail.tutorialmod.data.recipe; + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.data.recipe.provider.FurnaceRecipeProvider; +import io.github.realyusufismail.tutorialmod.data.recipe.provider.NormalCraftingTableRecipeProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; + +import java.util.concurrent.CompletableFuture; + +public class MainModRecipeProvider extends RecipeProvider { + protected final DataGenerator generator; + private final CompletableFuture pRegistries; + + public MainModRecipeProvider(@NotNull DataGenerator generator, CompletableFuture pRegistries) { + super(generator.getPackOutput(), pRegistries); + this.generator = generator; + this.pRegistries = pRegistries; + } + + + @Override + protected void buildRecipes(@NotNull RecipeOutput recipeOutput) { + new NormalCraftingTableRecipeProvider(generator, recipeOutput, pRegistries).build(); + new FurnaceRecipeProvider(generator, recipeOutput, pRegistries).build(); + } + + public ResourceLocation getModId(String path) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, path); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/FurnaceRecipeProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/FurnaceRecipeProvider.java new file mode 100644 index 0000000..727b408 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/FurnaceRecipeProvider.java @@ -0,0 +1,33 @@ +package io.github.realyusufismail.tutorialmod.data.recipe.provider; + + +import io.github.realyusufismail.tutorialmod.data.recipe.MainModRecipeProvider; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import io.github.realyusufismail.tutorialmod.init.TagsInit; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.concurrent.CompletableFuture; + +public class FurnaceRecipeProvider extends MainModRecipeProvider { + private final RecipeOutput output; + + public FurnaceRecipeProvider(DataGenerator generator, RecipeOutput output, CompletableFuture pRegistries) { + super(generator, pRegistries); + this.output = output; + } + + public void build() { + SimpleCookingRecipeBuilder.smelting(Ingredient.of(TagsInit.ItemTagsInit.EXAMPLE_RAW_TAG), RecipeCategory.MISC, ItemInit.EXAMPLE_ITEM, 0.6f, 300) + .unlockedBy("has_item", has(ItemInit.RAW_EXAMPLE.get())) + .save(output, getModId("raw_example_smelting")); + + SimpleCookingRecipeBuilder.blasting(Ingredient.of(TagsInit.ItemTagsInit.EXAMPLE_RAW_TAG), RecipeCategory.MISC, ItemInit.EXAMPLE_ITEM.get(), 0.3f, 300) + .unlockedBy("has_item", has(ItemInit.RAW_EXAMPLE.get())) + .save(output, getModId("raw_example_blasting")); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/NormalCraftingTableRecipeProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/NormalCraftingTableRecipeProvider.java new file mode 100644 index 0000000..775ffd4 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/recipe/provider/NormalCraftingTableRecipeProvider.java @@ -0,0 +1,74 @@ +package io.github.realyusufismail.tutorialmod.data.recipe.provider; + +import io.github.realyusufismail.tutorialmod.data.recipe.MainModRecipeProvider; +import io.github.realyusufismail.tutorialmod.init.BlockInit; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.world.item.Items; + +import java.util.concurrent.CompletableFuture; + +public class NormalCraftingTableRecipeProvider extends MainModRecipeProvider { + private final RecipeOutput output; + + public NormalCraftingTableRecipeProvider(DataGenerator generator, RecipeOutput output, CompletableFuture pRegistries) { + super(generator, pRegistries); + this.output = output; + } + + public void build() { + //ShapedRecipeBuilder has to be crafted in a certain order like a sword + //ShapelessRecipeBuilder like making an iron block. no order + + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, BlockInit.EXAMPLE_BLOCK.get(), 1) + .requires(ItemInit.EXAMPLE_ITEM.get(), 9) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_block_recipe")); + + + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, ItemInit.SWORD.get(), 1) + .pattern(" x ") + .pattern(" x ") + .pattern(" s ") + .define('s', Items.STICK) + .define('x', ItemInit.EXAMPLE_ITEM.get()) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_sword_recipe")); + + + ShapedRecipeBuilder.shaped(RecipeCategory.COMBAT, ItemInit.HELMET.get(), 1) + .pattern("xxx") + .pattern("x x") + .define('x', ItemInit.EXAMPLE_ITEM.get()) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_helmet_recipe")); + + ShapedRecipeBuilder.shaped(RecipeCategory.COMBAT, ItemInit.CHESTPLATE.get(), 1) + .pattern("x x") + .pattern("xxx") + .pattern("xxx") + .define('x', ItemInit.EXAMPLE_ITEM.get()) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_chestplate_recipe")); + + ShapedRecipeBuilder.shaped(RecipeCategory.COMBAT, ItemInit.LEGGINGS.get(), 1) + .pattern("xxx") + .pattern("x x") + .pattern("x x") + .define('x', ItemInit.EXAMPLE_ITEM.get()) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_leggings_recipe")); + + ShapedRecipeBuilder.shaped(RecipeCategory.COMBAT, ItemInit.BOOTS.get(), 1) + .pattern("x x") + .pattern("x x") + .define('x', ItemInit.EXAMPLE_ITEM.get()) + .unlockedBy("has_item", has(ItemInit.EXAMPLE_ITEM.get())) + .save(output, getModId("example_item_boots_recipe")); + } +} diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModBlockTagsProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModBlockTagsProvider.java new file mode 100644 index 0000000..4377732 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModBlockTagsProvider.java @@ -0,0 +1,61 @@ +package io.github.realyusufismail.tutorialmod.data.tags; + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.BlockInit; +import io.github.realyusufismail.tutorialmod.init.TagsInit; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + +import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagsProvider extends BlockTagsProvider { + + public ModBlockTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, TutorialMod.MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider provider) { + // ore + tag(TagsInit.BlockTagsInit.EXAMPLE_ORE_TAG).add(BlockInit.EXAMPLE_ORE.get()); + + // deepslate ore + tag(TagsInit.BlockTagsInit.DEEPSLATE_EXAMPLE_ORE_TAG).add(BlockInit.DEEPSLATE_EXAMPLE_ORE.get()); + + // block + tag(TagsInit.BlockTagsInit.EXAMPLE_BLOCK_TAG).add(BlockInit.EXAMPLE_BLOCK.get()); + + // Needed to allow the block to be mined with a pickaxe + tag(BlockTags.MINEABLE_WITH_PICKAXE) + .add(BlockInit.EXAMPLE_ORE.get()) + .add(BlockInit.DEEPSLATE_EXAMPLE_ORE.get()) + .add(BlockInit.EXAMPLE_BLOCK.get()); + + // determine if the block needs an iron tool to be mined + + // TagKey goldTags = createNeoForgeTag("needs_gold_tool"); + // TagKey netheriteTags = createNeoForgeTag("needs_netherite_tool"); + // TagKey woodTags = createNeoForgeTag("needs_wood_tool"); + + // can change the tag to any of the above or diamond or stone + + tag(BlockTags.NEEDS_IRON_TOOL) + .add(BlockInit.EXAMPLE_ORE.get()) + .add(BlockInit.DEEPSLATE_EXAMPLE_ORE.get()); + + tag(BlockTags.NEEDS_DIAMOND_TOOL) + .add(BlockInit.EXAMPLE_BLOCK.get()); + } + + private static TagKey createNeoForgeTag(String name) { + return TagKey.create(BuiltInRegistries.BLOCK.key(), ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name)); + } +} diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModItemTagProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModItemTagProvider.java new file mode 100644 index 0000000..59c8de0 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/tags/ModItemTagProvider.java @@ -0,0 +1,37 @@ +package io.github.realyusufismail.tutorialmod.data.tags; + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import io.github.realyusufismail.tutorialmod.init.TagsInit; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.ItemTagsProvider; +import net.neoforged.neoforge.common.data.BlockTagsProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + +import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends ItemTagsProvider { + public ModItemTagProvider(PackOutput p_275343_, CompletableFuture p_275729_, BlockTagsProvider blockTagsProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(p_275343_, p_275729_, blockTagsProvider.contentsGetter(), TutorialMod.MOD_ID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.Provider pProvider) { + // ore tag + copy(TagsInit.BlockTagsInit.EXAMPLE_ORE_TAG, TagsInit.ItemTagsInit.EXAMPLE_ORE_TAG); + + // deepslate ore tag + copy(TagsInit.BlockTagsInit.DEEPSLATE_EXAMPLE_ORE_TAG, TagsInit.ItemTagsInit.DEEPSLATE_EXAMPLE_ORE_TAG); + + // block tag + copy(TagsInit.BlockTagsInit.EXAMPLE_BLOCK_TAG, TagsInit.ItemTagsInit.EXAMPLE_BLOCK_TAG); + + // ingot tag + tag(TagsInit.ItemTagsInit.EXAMPLE_ITEM_TAG).add(ItemInit.EXAMPLE_ITEM.get()); + + // raw tag + tag(TagsInit.ItemTagsInit.EXAMPLE_RAW_TAG).add(ItemInit.RAW_EXAMPLE.get()); + } +} diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModBlockStateProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModBlockStateProvider.java new file mode 100644 index 0000000..068d671 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModBlockStateProvider.java @@ -0,0 +1,30 @@ +package io.github.realyusufismail.tutorialmod.data.texture; + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.BlockInit; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.neoforged.neoforge.client.model.generators.BlockStateProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + +public class ModBlockStateProvider extends BlockStateProvider { + public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) { + super(output, TutorialMod.MOD_ID, exFileHelper); + } + + @Override + protected void registerStatesAndModels() { + normalBlock(BlockInit.EXAMPLE_BLOCK.value()); + normalBlock(BlockInit.EXAMPLE_ORE.value()); + normalBlock(BlockInit.DEEPSLATE_EXAMPLE_ORE.value()); + } + + protected void normalBlock(Block block) { + ResourceLocation blockKey = BuiltInRegistries.BLOCK.getKey(block); + String path = blockKey.getPath(); + simpleBlock(block, models().cubeAll(path, modLoc("block/" + path))); + simpleBlockItem(block, models().getExistingFile(modLoc("block/" + path))); + } +} diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModItemStateProvider.java b/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModItemStateProvider.java new file mode 100644 index 0000000..de36a27 --- /dev/null +++ b/src/main/java/io/github/realyusufismail/tutorialmod/data/texture/ModItemStateProvider.java @@ -0,0 +1,49 @@ +package io.github.realyusufismail.tutorialmod.data.texture; + +import io.github.realyusufismail.tutorialmod.TutorialMod; +import io.github.realyusufismail.tutorialmod.init.ItemInit; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.world.item.Item; +import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.common.data.ExistingFileHelper; + +public class ModItemStateProvider extends ItemModelProvider { + public ModItemStateProvider(PackOutput output, ExistingFileHelper existingFileHelper) { + super(output, TutorialMod.MOD_ID, existingFileHelper); + } + + @Override + protected void registerModels() { + item(ItemInit.EXAMPLE_ITEM.get()); + item(ItemInit.RAW_EXAMPLE.get()); + + // example armour + item(ItemInit.HELMET.get()); + item(ItemInit.CHESTPLATE.get()); + item(ItemInit.LEGGINGS.get()); + item(ItemInit.BOOTS.get()); + + // tools + tool(ItemInit.SWORD.get()); + } + + + private void item(Item item) { + String name = getItemName(item); + getBuilder(name) + .parent(getExistingFile(mcLoc("item/generated"))) + .texture("layer0", "item/" + name); + } + + private void tool(Item item) { + String name = getItemName(item); + getBuilder(name) + .parent(getExistingFile(mcLoc("item/handheld"))) + .texture("layer0", "item/" + name); + } + + private String getItemName(Item item) { + return BuiltInRegistries.ITEM.getKey(item).toString().replace(TutorialMod.MOD_ID + ":", ""); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/init/ArmorMaterialInit.java b/src/main/java/io/github/realyusufismail/tutorialmod/init/ArmorMaterialInit.java index 9f17f27..190d537 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/init/ArmorMaterialInit.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/init/ArmorMaterialInit.java @@ -32,7 +32,7 @@ public class ArmorMaterialInit { // Gold uses 25, we put copper slightly below that. 15, SoundEvents.ARMOR_EQUIP_GENERIC, - () -> Ingredient.of(TagsInit.EXAMPLE_ITEM_TAG), + () -> Ingredient.of(TagsInit.ItemTagsInit.EXAMPLE_ITEM_TAG), List.of( // Creates a new armor texture that will be located at: // - 'assets/mod_id/textures/models/armor/copper_layer_1.png' for the outer texture diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/init/CreativeModeTabInit.java b/src/main/java/io/github/realyusufismail/tutorialmod/init/CreativeModeTabInit.java index 5892cde..6e00123 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/init/CreativeModeTabInit.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/init/CreativeModeTabInit.java @@ -1,37 +1,45 @@ package io.github.realyusufismail.tutorialmod.init; import io.github.realyusufismail.tutorialmod.TutorialMod; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.ArrayList; +import java.util.List; + public class CreativeModeTabInit { - public static final DeferredHolder TUTORIAL_MOD_TAB_ONE; public static DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, TutorialMod.MOD_ID); + public static String TUTORIAL_MOD_TAB_ONE_TITLE = "tutorialmod.tab.one"; - static { - TUTORIAL_MOD_TAB_ONE = CREATIVE_MODE_TABS.register("tutorial_mod_tab", () -> { - CreativeModeTab.Builder builder = CreativeModeTab.builder(); + public static final DeferredHolder TUTORIAL_MOD_TAB_ONE = CREATIVE_MODE_TABS.register("tutorial_mod_tab_one", () -> { + CreativeModeTab.Builder builder = CreativeModeTab.builder(); - builder.displayItems((itemDisplayParameters, output) -> { - ItemInit.ITEMS.getEntries() - .stream() - .map(DeferredHolder::get) - .forEach(output::accept); + builder.displayItems((itemDisplayParameters, output) -> { - BlockInit.BLOCKS.getEntries() - .stream() - .map(DeferredHolder::get) - .forEach(output::accept); - }); + ItemInit.ITEMS.getEntries() + .stream() + .map((item) -> item.get().asItem()) + .forEach(output::accept); - //builder.icon(() -> new ItemStack(ItemInit.EXAMPLE_ITEM.get())); - builder.title(Component.translatable(TUTORIAL_MOD_TAB_ONE_TITLE)); + var b = BlockInit.BLOCKS.getEntries() + .stream() + .map((block) -> block.get().asItem()) + .forEach(output::accept); - return builder.build(); + // TODO: find out why there is duplicate entries + //check for no duplicate entries }); - } + + builder.icon(() -> new ItemStack(ItemInit.EXAMPLE_ITEM.get())); + builder.title(Component.translatable(TUTORIAL_MOD_TAB_ONE_TITLE)); + + return builder.build(); + }); } diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/init/TagsInit.java b/src/main/java/io/github/realyusufismail/tutorialmod/init/TagsInit.java index b8dd42e..3521f29 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/init/TagsInit.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/init/TagsInit.java @@ -9,17 +9,63 @@ import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; public class TagsInit { - // ITEMS TAGS - public static final TagKey EXAMPLE_ITEM_TAG = - ItemTags.create(ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "example_item")); + public static class ItemTagsInit { - // BLOCKS TAGS - public static final TagKey EXAMPLE_BLOCK_TAG = - BlockTags.create(ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "example_block")); + // Item Tags + public static final TagKey EXAMPLE_ITEM_TAG = + ItemTags.create(createGenericItemsLocation("example_item")); - // ARMOUR TAGS - public static final TagKey EXAMPLE_ARMOUR_TAG = - TagKey.create(Registries.ARMOR_MATERIAL, ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "example_armour")); + public static final TagKey EXAMPLE_RAW_TAG = + ItemTags.create(createRawItemsLocation("example_raw")); + + // Blocks + public static final TagKey EXAMPLE_BLOCK_TAG = + ItemTags.create(createBlocksLocation("example_block")); + + public static final TagKey EXAMPLE_ORE_TAG = + ItemTags.create(createOresLocation("example_ore")); + + public static final TagKey DEEPSLATE_EXAMPLE_ORE_TAG = + ItemTags.create(createOresLocation("deepslate_example_ore")); + } + + public static class BlockTagsInit { + public static final TagKey EXAMPLE_BLOCK_TAG = + BlockTags.create(createBlocksLocation("example_block")); + + public static final TagKey EXAMPLE_ORE_TAG = + BlockTags.create(createOresLocation("example_ore")); + + public static final TagKey DEEPSLATE_EXAMPLE_ORE_TAG = + BlockTags.create(createOresLocation("deepslate_example_ore")); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation createOresLocation(String name) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "ores/" + name); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation createBlocksLocation(String name) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation createGenericItemsLocation(String name) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, name); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation createRawItemsLocation(String name) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "raw/" + name); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation createArmourLocation(String name) { + return ResourceLocation.fromNamespaceAndPath(TutorialMod.MOD_ID, "armour/" + name); + } } diff --git a/src/main/java/io/github/realyusufismail/tutorialmod/init/TierInit.java b/src/main/java/io/github/realyusufismail/tutorialmod/init/TierInit.java index 28009e4..988ad7e 100644 --- a/src/main/java/io/github/realyusufismail/tutorialmod/init/TierInit.java +++ b/src/main/java/io/github/realyusufismail/tutorialmod/init/TierInit.java @@ -4,6 +4,6 @@ import net.neoforged.neoforge.common.SimpleTier; public class TierInit { - public static SimpleTier SWORD = new SimpleTier(TagsInit.EXAMPLE_BLOCK_TAG, 3, 2000, 0f, 10, () -> - Ingredient.of(TagsInit.EXAMPLE_ITEM_TAG)); + public static SimpleTier SWORD = new SimpleTier(TagsInit.BlockTagsInit.EXAMPLE_BLOCK_TAG, 3, 2000, 0f, 10, () -> + Ingredient.of(TagsInit.ItemTagsInit.EXAMPLE_ITEM_TAG)); }