From 67e21a361d0ed54aa1c01399c6d011af497f9fc6 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Wed, 10 Feb 2021 14:57:24 +0300 Subject: [PATCH] Metal crafting (WIP) --- .../betterend/blocks/basis/EndAnvilBlock.java | 6 ++- .../blocks/complex/MetalMaterial.java | 48 +++++++++++++++--- .../textures/item/thallasium_hoe_head.png | Bin 0 -> 1716 bytes .../textures/item/thallasium_pickaxe_head.png | Bin 0 -> 1773 bytes .../textures/item/thallasium_shovel_head.png | Bin 0 -> 1747 bytes .../textures/item/thallasium_sword_blade.png | Bin 0 -> 1533 bytes .../textures/item/thallasium_sword_handle.png | Bin 0 -> 1807 bytes 7 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/assets/betterend/textures/item/thallasium_hoe_head.png create mode 100644 src/main/resources/assets/betterend/textures/item/thallasium_pickaxe_head.png create mode 100644 src/main/resources/assets/betterend/textures/item/thallasium_shovel_head.png create mode 100644 src/main/resources/assets/betterend/textures/item/thallasium_sword_blade.png create mode 100644 src/main/resources/assets/betterend/textures/item/thallasium_sword_handle.png 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 0000000000000000000000000000000000000000..eb1efc432b968cb02d9cc9ebb6062544fcece4c8 GIT binary patch literal 1716 zcmbVN-HY5*9L-p*wdIYRnR^NB7*-xUt9!HTw2iwMT_85EnHP=y3xY6RE)|#g`Tq3Sx0nAv@>>t_(>-D7L@WqX52i;(c<0>%f^gS2 zUZt8;-RB@?eiji{quH(>aBdJ}lIRgfI&QkE8y0BOE3HTL z*!p4xudiU6NOMn#vt7sue3~G!>$id!b{(nD3;8;|tw>@YlB_t=d@3kb-6gTWA}X5M zoQyRChJwy7Qb?&W|D+ZQ97MY zwxefR)KE0rwiOj90LUC6$7?}?x^fWDj2MbE#*r5$9t*^j5!F~baU||^5P~0$X@hu} zCY~^*i$X=qs%c1lAi-l?*p6C#ae@`vqCO3hm}9juHf*wl#Z7h#>ha^71bAv)cdW6a z7vCRC#L2=c4`Y~+9no=REu_jajafUwbYYd-oJpezVIiU@VNr##)~HZRBg^gmvP_C-%@HN~j|N6==LuO+&Lk|b7K^wrcc=GVxGpRQae@L&%SA`xVP`#$ zKy2m_M!Z`nRdceQH#FG-#FA^k%2U-gY}+tL`-=>>)8eN42YpT$<{ba1BFjJ)su?mh zYD5MoWy=91*KysXRI{}_A|tlvBagpos5Qx&x+0uW)j~Gs?(Z}y zC%sMa2Qo3MCmj^g`3BG3Zu(2PmH!y6-roK0syVPV>3+w4{GaZJ$-zw&G$@~-ij>Bq zq_bvF8s*pz>AOCvZRcIk3FW%M|=t&KK=a(KEcnHi}MxhOZ;cAH@D}} z)2F@_e%V_!zCJSrdOwoc%LkwRI3s?gKjA!l{*&H??ccAnjrMDA{9xYssc`+;XZK#Z zbR#o$bn`8B-?sMBwEe<+pO-c>;`X&G4{U6`KKIwmp*xoEGhW#|Qu+1OyAMTwTs^t* zzW$Sb<+~5wJXhIs5!6zx|OQBFyurEq|DI!RHih@rqJ`^FK63^_-t)w+LFf(Un zzVm(Gf0=)^Fnx4*&)z*8#|`JQnHhE;iOyXE?7IKfCSfWXL|)E&X;QJX zOFlWVG+jhX^T@!$_|yEMy2%I}5<t0->!KTsb{H}wK)&sTHg)-k5n6O1ObN_sD+I^u z(z-!AO)Ozj9eNUo$x%p6AVyuBx8PTs;uuM!N*v;b0mFhW)~nEv1{Hb->h9;;1XybG z`L4#6UL2<@5rmVAER1$SwnPWThDW3s63_)7k;z47b2N&^Gt)kSA@z%tRy&0%bS(4f zbW|9fKQL>%nAU&3-jl?PZNzVa9016%`=BG76a&1;lmH zN&;pQ=~zx`sz#D()X>cyF|&5Ss@G`$A}7d;?N!z0n{8o26t#OwKvA6u7TT}vE%LD~ z<@Wwsg)q{)6u+e&&{9}~KA9-9+-;}7q&xW!;NsogZ?BpyTfOeL?8pDOzZdNMQmzVE-_QS^V@Q?Dj$N7uTyq0}q=h$Z(oA)_mL)YJaWayppjdJ~^ zpAY_W^QM|pxXfSL^f6p`_o33<@gJ^u^ryo|W`?`BlMry JpB_H_>faV3G?)MY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..57fb43b2baebefb405c41e0b05d2fd6ab0e6c973 GIT binary patch literal 1747 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