diff --git a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java index 105b1a1c..b63cd2d0 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java @@ -25,9 +25,11 @@ import ru.betterend.patterns.Patterns; public class EndAnvilBlock extends AnvilBlock implements BlockPatterned { public static final IntProperty DESTRUCTION = BlockProperties.DESTRUCTION; + private final int level; - public EndAnvilBlock(MaterialColor color) { + public EndAnvilBlock(MaterialColor color, int level) { super(FabricBlockSettings.copyOf(Blocks.ANVIL).materialColor(color)); + this.level = level; } @Override @@ -37,7 +39,7 @@ public class EndAnvilBlock extends AnvilBlock implements BlockPatterned { } public int getCraftingLevel() { - return 1; + return level; } @Override diff --git a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java index a2acc88c..51710a29 100644 --- a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java @@ -12,6 +12,7 @@ import net.minecraft.item.Items; import net.minecraft.item.ToolMaterial; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.tag.BlockTags; +import net.minecraft.tag.ItemTags; import ru.betterend.blocks.BulbVineLanternBlock; import ru.betterend.blocks.BulbVineLanternColoredBlock; import ru.betterend.blocks.ChandelierBlock; @@ -33,8 +34,10 @@ import ru.betterend.item.EndShovelItem; import ru.betterend.item.EndSwordItem; import ru.betterend.item.PatternedItem; import ru.betterend.recipe.builders.AlloyingRecipe; +import ru.betterend.recipe.builders.AnvilRecipe; import ru.betterend.recipe.builders.FurnaceRecipe; import ru.betterend.recipe.builders.GridRecipe; +import ru.betterend.recipe.builders.SmithingTableRecipe; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; import ru.betterend.util.TagHelper; @@ -58,6 +61,14 @@ public class MetalMaterial { public final Item nugget; public final Item ingot; + + public final Item shovelHead; + public final Item pickaxeHead; + public final Item axeHead; + public final Item hoeHead; + public final Item swordBlade; + public final Item swordHandle; + public final Item shovel; public final Item sword; public final Item pickaxe; @@ -88,6 +99,7 @@ public class MetalMaterial { private MetalMaterial(String name, boolean hasOre, FabricBlockSettings settings, Settings itemSettings, ToolMaterial material, ArmorMaterial armor) { FabricBlockSettings lantern = FabricBlockSettings.copyOf(settings).sounds(BlockSoundGroup.LANTERN).hardness(1).resistance(1).luminance(15); + final int level = material.getMiningLevel(); ore = hasOre ? EndBlocks.registerBlock(name + "_ore", new BlockBase(FabricBlockSettings.copyOf(Blocks.END_STONE))) : null; block = EndBlocks.registerBlock(name + "_block", new BlockBase(settings)); @@ -96,7 +108,7 @@ public class MetalMaterial { slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(tile)); door = EndBlocks.registerBlock(name + "_door", new EndDoorBlock(block)); trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new EndTrapdoorBlock(block)); - anvil = EndBlocks.registerBlock(name + "_anvil", new EndAnvilBlock(block.getDefaultMaterialColor())); + anvil = EndBlocks.registerBlock(name + "_anvil", new EndAnvilBlock(block.getDefaultMaterialColor(), level)); bars = EndBlocks.registerBlock(name + "_bars", new EndMetalPaneBlock(block)); chain = EndBlocks.registerBlock(name + "_chain", new EndChainBlock(block.getDefaultMaterialColor())); plate = EndBlocks.registerBlock(name + "_plate", new EndWoodenPlateBlock(block)); @@ -107,6 +119,14 @@ public class MetalMaterial { nugget = EndItems.registerItem(name + "_nugget", new PatternedItem(itemSettings)); ingot = EndItems.registerItem(name + "_ingot", new PatternedItem(itemSettings)); + + shovelHead = EndItems.registerItem(name + "_shovel_head"); + pickaxeHead = EndItems.registerItem(name + "_pickaxe_head"); + axeHead = EndItems.registerItem(name + "_axe_head"); + hoeHead = EndItems.registerItem(name + "_hoe_head"); + swordBlade = EndItems.registerItem(name + "_sword_blade"); + swordHandle = EndItems.registerItem(name + "_sword_handle"); + shovel = EndItems.registerTool(name + "_shovel", new EndShovelItem(material, 1.5F, -3.0F, itemSettings)); sword = EndItems.registerTool(name + "_sword", new EndSwordItem(material, 3, -2.4F, itemSettings)); pickaxe = EndItems.registerTool(name + "_pickaxe", new EndPickaxeItem(material, 1, -2.8F, itemSettings)); @@ -124,10 +144,12 @@ public class MetalMaterial { AlloyingRecipe.Builder.create(name + "_ingot_alloy").setInput(ore, ore).setOutput(ingot, 3).setExpiriense(2.1F).build(); } + // Basic recipes GridRecipe.make(name + "_ingot_from_nuggets", ingot).setShape("###", "###", "###").addMaterial('#', nugget).setGroup("end_metal_ingots_nug").build(); GridRecipe.make(name + "_block", block).setShape("###", "###", "###").addMaterial('#', ingot).setGroup("end_metal_blocks").build(); GridRecipe.make(name + "_ingot_from_block", ingot).setOutputCount(9).setList("#").addMaterial('#', block).setGroup("end_metal_ingots").build(); + // Block recipes GridRecipe.make(name + "_tile", tile).setOutputCount(4).setShape("##", "##").addMaterial('#', block).setGroup("end_metal_tiles").build(); GridRecipe.make(name + "_bars", bars).setOutputCount(16).setShape("###", "###").addMaterial('#', ingot).setGroup("end_metal_bars").build(); GridRecipe.make(name + "_plate", plate).setShape("##").addMaterial('#', ingot).setGroup("end_metal_plates").build(); @@ -139,14 +161,10 @@ public class MetalMaterial { GridRecipe.make(name + "_anvil", anvil).setOutputCount(3).setShape("###", " I ", "III").addMaterial('#', block, tile).addMaterial('I', ingot).setGroup("end_metal_anvil").build(); GridRecipe.make(name + "bulb_lantern", bulb_lantern).setShape("C", "I", "#").addMaterial('C', chain).addMaterial('I', ingot).addMaterial('#', EndItems.GLOWING_BULB).build(); - GridRecipe.make(name + "_axe", axe).setShape("##", "#I", " I").addMaterial('#', ingot).addMaterial('I', Items.STICK).setGroup("end_metal_axes").build(); - GridRecipe.make(name + "_hoe", hoe).setShape("##", " I", " I").addMaterial('#', ingot).addMaterial('I', Items.STICK).setGroup("end_metal_hoes").build(); - GridRecipe.make(name + "_pickaxe", pickaxe).setShape("###", " I ", " I ").addMaterial('#', ingot).addMaterial('I', Items.STICK).setGroup("end_metal_picks").build(); - GridRecipe.make(name + "_sword", sword).setShape("#", "#", "I").addMaterial('#', ingot).addMaterial('I', Items.STICK).setGroup("end_metal_swords").build(); - + GridRecipe.make(name + "_smith_table", Blocks.SMITHING_TABLE).setShape("II", "##", "##").addMaterial('#', ItemTags.PLANKS).addMaterial('I', ingot).setGroup("smith_table").build(); GridRecipe.make(name + "_chandelier", chandelier).setShape("I#I", " # ").addMaterial('#', ingot).addMaterial('I', EndItems.LUMECORN_ROD).setGroup("end_metal_chandelier").build(); - GridRecipe.make(name + "_hammer", hammer).setShape("III", "ISI", " S ").addMaterial('I', ingot).addMaterial('S', Items.STICK).setGroup("end_metal_hammers").build(); + // Tools & armor into nuggets FurnaceRecipe.make(name + "_axe_nugget", axe, nugget).setGroup("end_nugget").build(true); FurnaceRecipe.make(name + "_hoe_nugget", hoe, nugget).setGroup("end_nugget").build(true); FurnaceRecipe.make(name + "_pickaxe_nugget", pickaxe, nugget).setGroup("end_nugget").build(true); @@ -157,6 +175,22 @@ public class MetalMaterial { FurnaceRecipe.make(name + "_leggings_nugget", leggings, nugget).setGroup("end_nugget").build(true); FurnaceRecipe.make(name + "_boots_nugget", boots, nugget).setGroup("end_nugget").build(true); + // Tool parts from ingots + AnvilRecipe.Builder.create(name + "_shovel_head").setInput(ingot).setOutput(shovelHead).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + AnvilRecipe.Builder.create(name + "_pickaxe_head").setInput(ingot).setInputCount(3).setOutput(pickaxeHead).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + AnvilRecipe.Builder.create(name + "_axe_head").setInput(ingot).setInputCount(3).setOutput(axeHead).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + AnvilRecipe.Builder.create(name + "_hoe_head").setInput(ingot).setInputCount(2).setOutput(hoeHead).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + AnvilRecipe.Builder.create(name + "_sword_blade").setInput(ingot).setOutput(swordBlade).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + AnvilRecipe.Builder.create(name + "_sword_handle").setInput(ingot).setOutput(swordHandle).setAnvilLevel(level).setToolLevel(level).setDamage(level).build(); + + // Tools from parts + SmithingTableRecipe.create(name + "_hammer").setResult(hammer).setBase(block).setAddition(Items.STICK).build(); + SmithingTableRecipe.create(name + "_axe").setResult(axe).setBase(axeHead).setAddition(Items.STICK).build(); + SmithingTableRecipe.create(name + "_pickaxe").setResult(pickaxe).setBase(pickaxeHead).setAddition(Items.STICK).build(); + SmithingTableRecipe.create(name + "_hoe").setResult(hoe).setBase(hoeHead).setAddition(Items.STICK).build(); + SmithingTableRecipe.create(name + "_sword_handle").setResult(swordHandle).setBase(ingot).setAddition(Items.STICK).build(); + SmithingTableRecipe.create(name + "_sword").setResult(sword).setBase(swordBlade).setAddition(swordHandle).build(); + TagHelper.addTag(BlockTags.ANVIL, anvil); } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/item/thallasium_hoe_head.png b/src/main/resources/assets/betterend/textures/item/thallasium_hoe_head.png new file mode 100644 index 00000000..eb1efc43 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/thallasium_hoe_head.png differ diff --git a/src/main/resources/assets/betterend/textures/item/thallasium_pickaxe_head.png b/src/main/resources/assets/betterend/textures/item/thallasium_pickaxe_head.png new file mode 100644 index 00000000..67b34a1b Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/thallasium_pickaxe_head.png differ diff --git a/src/main/resources/assets/betterend/textures/item/thallasium_shovel_head.png b/src/main/resources/assets/betterend/textures/item/thallasium_shovel_head.png new file mode 100644 index 00000000..57fb43b2 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/thallasium_shovel_head.png differ diff --git a/src/main/resources/assets/betterend/textures/item/thallasium_sword_blade.png b/src/main/resources/assets/betterend/textures/item/thallasium_sword_blade.png new file mode 100644 index 00000000..addc8489 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/thallasium_sword_blade.png differ diff --git a/src/main/resources/assets/betterend/textures/item/thallasium_sword_handle.png b/src/main/resources/assets/betterend/textures/item/thallasium_sword_handle.png new file mode 100644 index 00000000..66da9d93 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/thallasium_sword_handle.png differ