From 6f4b5853733a40aa1bb4fe6a1e830efccd5134b7 Mon Sep 17 00:00:00 2001 From: KeyLime17 Date: Mon, 6 May 2024 22:51:21 -0400 Subject: [PATCH] materials work, but crafting material is mad --- .gradle/8.2.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../com/zivilon/cinder_loe/CinderLoE.java | 23 +++++++++++ .../com/zivilon/cinder_loe/Materials.java | 33 +++++++++++++++ .../cinder_loe/blocks/CinderBlock.java | 11 +++++ .../zivilon/cinder_loe/blocks/FishBarrel.java | 7 ++++ .../zivilon/cinder_loe/blocks/FurBundle.java | 9 ++++ .../cinder_loe/blocks/LeatherBundle.java | 9 ++++ .../zivilon/cinder_loe/blocks/ReedBale.java | 9 ++++ .../cinder_loe/blocks/RunedDwarvenBrick.java | 9 ++++ .../cinder_loe/blocks/cobbleDrystone.java | 9 ++++ .../cinder_loe/blocks/cutDrystone.java | 9 ++++ .../zivilon/cinder_loe/blocks/plaster.java | 9 ++++ .../cinder_loe/blocks/reeflessCoral.java | 9 ++++ .../cinder_loe/mixins/MixinLOTRMaterial.java | 39 ++++-------------- 14 files changed, 155 insertions(+), 30 deletions(-) diff --git a/.gradle/8.2.1/fileHashes/fileHashes.lock b/.gradle/8.2.1/fileHashes/fileHashes.lock index cca2beac732b20c556123e563af5b0ca58a4fe5f..cb884fa3851a5a56d17a49300082166ff7e46013 100644 GIT binary patch literal 17 WcmZRc9z7+~bjR9%3?RTLv>X68SOrA@ literal 17 WcmZRc9z7+~bjR9%3?RVBpAP^x8U+df diff --git a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java index 8f639fe..ab72f13 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java @@ -97,6 +97,29 @@ public class CinderLoE { public static LOTRMaterial MATERIAL_BREE; public static LOTRMaterial MATERIAL_BATTLENUN; public static LOTRMaterial MATERIAL_ASH; + public static LOTRMaterial WOOD_ELVEN; + public static LOTRMaterial MOREDAIN; + public static LOTRMaterial UMBAR; + public static LOTRMaterial GULF_HARAD; + public static LOTRMaterial CORSAIR; + public static LOTRMaterial HARNEDOR; + public static LOTRMaterial NEAR_HARAD; + public static LOTRMaterial DUNLENDING; + public static LOTRMaterial RHUN; + public static LOTRMaterial RHUN_GOLD; + public static LOTRMaterial LOSSARNACH; + public static LOTRMaterial DORWINION; + public static LOTRMaterial TAUREDAIN; + public static LOTRMaterial ROHAN; + public static LOTRMaterial DORWINION_ELF; + public static LOTRMaterial GONDOR; + public static LOTRMaterial DALE; + public static LOTRMaterial HALF_TROLL; + public static LOTRMaterial BLACK_URUK; + public static LOTRMaterial URUK; + public static LOTRMaterial ANGMAR; + public static LOTRMaterial LAMEDON; + // Blocks public static Block cinderBlock; diff --git a/src/main/java/com/zivilon/cinder_loe/Materials.java b/src/main/java/com/zivilon/cinder_loe/Materials.java index 4ded833..f9d5cc1 100644 --- a/src/main/java/com/zivilon/cinder_loe/Materials.java +++ b/src/main/java/com/zivilon/cinder_loe/Materials.java @@ -26,6 +26,36 @@ public class Materials { modifyMaterial("BATTLENUN", 300, 3F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); modifyMaterial("ASH", 2000, 0.0F, 0.6F, 2, 7.0F, 10, CinderLoE.ingotAsh); +// Modified Vanilla Material, for Royal armor and prot (1000 - Original Durability) * 0.25 + // Orcs + modifyMaterial("ANGMAR", 480, 2.5F, 0.6F, 2, 6.0F, 10, LOTRMod.orcSteel); //Original Durability = 350 | Add 162 | 1/4 + modifyMaterial("URUK", 662, 3.0F, 0.7F, 2, 6.0F, 5, LOTRMod.urukSteel); //Original Durability = 550 | Add 112 | 1/4 + modifyMaterial("BLACK_URUK", 774, 3.0F, 0.7F, 2, 6.0F, 6, LOTRMod.blackUrukSteel); //Original Durability = 550 | Add 112 | 2/4 + modifyMaterial("HALF_TROLL", 475, 2.5F, 0.6F, 1, 5.0F, 6, LOTRMod.gemsbokHide); //Original Durability = 300 | Add 175 | 1/4 + + // Good Humans + modifyMaterial("DALE", 475, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 300 | Add 175 | 1/4 + modifyMaterial("GONDOR", 725, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 450 | Add 137 | 2/4 + modifyMaterial("DORWINION_ELF", 875, 3.0F, 0.6F, 2, 7.0F, 15, LOTRMod.elfSteel); //Original Durability = 500 | Add 125 | 2/4 + modifyMaterial("ROHAN", 300, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 300 | Add 175 | 0/4 + modifyMaterial("TAUREDAIN", 300, 2.5F, 0.6F, 3, 8.0F, 10, LOTRMod.bronze); //Original Durability = 300 | Add 175 | 0/4 + modifyMaterial("DORWINION", 400, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 400 | Add 150 | 0/4 + modifyMaterial("LOSSARNACH", 300, 2.5F, 0.6F, 3, 8.0F, 10, Items.iron_ingot); //Original Durability = 300 | Add 175 | 0/4 + modifyMaterial("LAMEDON", 300, 2.5F, 0.6F, 3, 8.0F, 10, Items.iron_ingot); //Original Durability = 300 | Add 175 | 0/4 + + // Evil Humans + modifyMaterial("RHUN_GOLD", 558, 2.5F, 0.6F, 2, 6.0F, 10, LOTRMod.gildedIron); //Original Durability = 450 | Add 137 | 1/4 + modifyMaterial("RHUN", 400, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 400 | Add 150 | 0/4 + modifyMaterial("DUNLENDING", 437, 2.0F, 0.6F, 2, 6.0F, 8, Items.iron_ingot); //Original Durability = 250 | Add 187 | 1/4 + modifyMaterial("NEAR_HARAD", 650, 2.5F, 0.6F, 2, 6.0F, 10, LOTRMod.bronze); //Original Durability = 300 | Add 175 | 2/4 + modifyMaterial("HARNEDOR", 250, 2.0F, 0.6F, 2, 6.0F, 8, LOTRMod.bronze); //Original Durability = 250 | Add 187 | 0/4 + modifyMaterial("CORSAIR", 300, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 300 | Add 175 | 0/4 + modifyMaterial("GULF_HARAD", 350, 2.5F, 0.6F, 2, 6.0F, 10, LOTRMod.bronze); //Original Durability = 350 | Add 162 | 0/4 + modifyMaterial("UMBAR", 450, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot); //Original Durability = 450 | Add 137 | 0/4 + modifyMaterial("MOREDAIN", 250, 2.0F, 0.6F, 2, 6.0F, 8, LOTRMod.gemsbokHide); //Original Durability = 250 | Add 187 | 0/4 + + //Elves + modifyMaterial("WOOD_ELVEN", 1000, 3.0F, 0.6F, 2, 9.0F, 15, LOTRMod.elfSteel); //Original Durability = 500 | Add 125 | 4/4 } public static void modifyMaterial(String fieldName, int uses, float weapon_damage, float protection, int harvest_level, float speed, int enchantability, Item crafting_item) { @@ -46,6 +76,7 @@ public class Materials { Method setSpeed = lotrMaterialClass.getDeclaredMethod("setSpeed", float.class); Method setEnchantability = lotrMaterialClass.getDeclaredMethod("setEnchantability", int.class); Method setCraftingItem = lotrMaterialClass.getDeclaredMethod("setCraftingItem", Item.class); + // Method setManFlesh = lotrMaterialClass.getDeclaredMethod("canHarvestManFlesh", boolean.class); setUses.setAccessible(true); setDamage.setAccessible(true); @@ -54,6 +85,7 @@ public class Materials { setSpeed.setAccessible(true); setEnchantability.setAccessible(true); setCraftingItem.setAccessible(true); + // setManFlesh.setAccessible(true); setUses.invoke(materialLocal, uses); setDamage.invoke(materialLocal, weapon_damage); @@ -61,6 +93,7 @@ public class Materials { setHarvestLevel.invoke(materialLocal, harvest_level); setSpeed.invoke(materialLocal, speed); setEnchantability.invoke(materialLocal, enchantability); + // setManFlesh.invoke(materialLocal, canHarvestManFlesh); if (crafting_item != null) { setCraftingItem.invoke(materialLocal, crafting_item); } diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/CinderBlock.java b/src/main/java/com/zivilon/cinder_loe/blocks/CinderBlock.java index 202e3cc..c0884f4 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/CinderBlock.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/CinderBlock.java @@ -1,18 +1,29 @@ package com.zivilon.cinder_loe.blocks; +import lotr.common.LOTRCreativeTabs; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import java.lang.reflect.Field; + public class CinderBlock extends Block { public CinderBlock() { super(Material.rock); + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabBlock"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setHardness(2.0F); setResistance(5.0F); setBlockTextureName("lotr:cinder_block"); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/FishBarrel.java b/src/main/java/com/zivilon/cinder_loe/blocks/FishBarrel.java index 3e77197..30b483a 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/FishBarrel.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/FishBarrel.java @@ -15,6 +15,13 @@ public class FishBarrel extends StaticBlockBase3 { public FishBarrel() { super(Material.wood, "lotr:fishbarrel"); + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setStepSound(Block.soundTypeWood); setBlockName("lotr:fishbarrel"); setHardness(1.0F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/FurBundle.java b/src/main/java/com/zivilon/cinder_loe/blocks/FurBundle.java index 3218168..b05ebb7 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/FurBundle.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/FurBundle.java @@ -7,9 +7,18 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class FurBundle extends RotatableBlockBase3 { public FurBundle() { super(Material.cloth, "lotr:furBundle"); + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setStepSound(Block.soundTypeCloth); setBlockName("lotr:furBundle"); setHardness(0.5F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/LeatherBundle.java b/src/main/java/com/zivilon/cinder_loe/blocks/LeatherBundle.java index de10486..a841847 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/LeatherBundle.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/LeatherBundle.java @@ -7,9 +7,18 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class LeatherBundle extends RotatableBlockBase3 { public LeatherBundle() { super(Material.cloth, "lotr:leatherBundle"); + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setStepSound(Block.soundTypeCloth); setBlockName("lotr:leatherBundle"); setHardness(0.5F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/ReedBale.java b/src/main/java/com/zivilon/cinder_loe/blocks/ReedBale.java index 452a008..467767b 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/ReedBale.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/ReedBale.java @@ -7,9 +7,18 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class ReedBale extends RotatableBlockBase3 { public ReedBale() { super(Material.grass, "lotr:reedBale"); + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setStepSound(Block.soundTypeGrass); setBlockName("lotr:reedBale"); setHardness(0.5F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/RunedDwarvenBrick.java b/src/main/java/com/zivilon/cinder_loe/blocks/RunedDwarvenBrick.java index 0f7fb6b..3b0541f 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/RunedDwarvenBrick.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/RunedDwarvenBrick.java @@ -13,10 +13,19 @@ import cpw.mods.fml.relauncher.SideOnly; import com.zivilon.cinder_loe.util.Utilities; +import java.lang.reflect.Field; + public class RunedDwarvenBrick extends Block { public RunedDwarvenBrick() { super(Material.rock); // Choose the appropriate material + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } // Set other properties like hardness, resistance, name, etc. setHardness(2.0F); setResistance(5.0F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/cobbleDrystone.java b/src/main/java/com/zivilon/cinder_loe/blocks/cobbleDrystone.java index 7f83184..ea88acc 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/cobbleDrystone.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/cobbleDrystone.java @@ -9,10 +9,19 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class cobbleDrystone extends Block { public cobbleDrystone() { super(Material.rock); // Choose the appropriate material + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabBlock"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } // Set other properties like hardness, resistance, name, etc. setHardness(2.0F); setResistance(5.0F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/cutDrystone.java b/src/main/java/com/zivilon/cinder_loe/blocks/cutDrystone.java index a586938..7697104 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/cutDrystone.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/cutDrystone.java @@ -9,11 +9,20 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class cutDrystone extends Block { public cutDrystone() { super(Material.rock); // Choose the appropriate material // Set other properties like hardness, resistance, name, etc. + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabBlock"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } setHardness(2.0F); setResistance(5.0F); setBlockTextureName(Utilities.toSnakeCase("lotr:cut_drystone")); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/plaster.java b/src/main/java/com/zivilon/cinder_loe/blocks/plaster.java index 59dbcef..326ad4d 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/plaster.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/plaster.java @@ -9,10 +9,19 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class plaster extends Block { public plaster() { super(Material.rock); // Choose the appropriate material + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabBlock"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } // Set other properties like hardness, resistance, name, etc. setHardness(2.0F); setResistance(5.0F); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/reeflessCoral.java b/src/main/java/com/zivilon/cinder_loe/blocks/reeflessCoral.java index 766e2cc..3ad20a2 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/reeflessCoral.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/reeflessCoral.java @@ -9,10 +9,19 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import java.lang.reflect.Field; + public class reeflessCoral extends Block { public reeflessCoral() { super(Material.rock); // Choose the appropriate material + try { + Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabDeco"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to + LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); + setCreativeTab((CreativeTabs)tab); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } // Set other properties like hardness, resistance, name, etc. setHardness(2.0F); setResistance(5.0F); diff --git a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRMaterial.java b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRMaterial.java index 2b79e7d..865f938 100644 --- a/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRMaterial.java +++ b/src/main/java/com/zivilon/cinder_loe/mixins/MixinLOTRMaterial.java @@ -1,5 +1,7 @@ package com.zivilon.cinder_loe.mixins; +import lotr.common.LOTRMod; +import net.minecraft.block.Block; import net.minecraft.item.Item; import org.spongepowered.asm.mixin.Mixin; @@ -22,47 +24,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(LOTRMaterial.class) public abstract class MixinLOTRMaterial { - @Shadow - public static LOTRMaterial BRONZE; - - @Inject(method = "", at = @At("RETURN")) - private static void modifyMaterial(CallbackInfo ci) { - try { - // Get the BRONZE field from LOTRMaterial - Field bronzeField = LOTRMaterial.class.getDeclaredField("BRONZE"); - bronzeField.setAccessible(true); - - // Get the current BRONZE instance - LOTRMaterial bronze = (LOTRMaterial) bronzeField.get(null); - - // Use reflection to set the 'uses' field of the BRONZE instance to 2000 - Field usesField = LOTRMaterial.class.getDeclaredField("uses"); - usesField.setAccessible(true); - usesField.setInt(bronze, 2000); - - // Use reflection to set the 'protection' field of the BRONZE instance to 0.8f - Field protectionField = LOTRMaterial.class.getDeclaredField("protection"); - protectionField.setAccessible(true); - float[] protectionValues = (float[]) protectionField.get(null); - int bronzeIndex = LOTRMaterial.allLOTRMaterials.indexOf(bronze); - protectionValues[bronzeIndex] = 0.8f; - - } catch (NoSuchFieldException | IllegalAccessException e) { - e.printStackTrace(); - } - } - static { try { Class lotrMaterialClass = Class.forName("lotr.common.item.LOTRMaterial"); Field redDwarfSteelField = lotrMaterialClass.getField("RED_DWARF_STEEL"); + // Reflection to access and instantiate the private constructor of LOTRMaterial Constructor constructor = lotrMaterialClass.getDeclaredConstructor(String.class); constructor.setAccessible(true); Object redDwarfSteelMaterial = constructor.newInstance("RED_DWARF_STEEL"); + // Reflection to call the private methods on the new instance Method setUses = lotrMaterialClass.getDeclaredMethod("setUses", int.class); Method setDamage = lotrMaterialClass.getDeclaredMethod("setDamage", float.class); @@ -78,6 +52,7 @@ public abstract class MixinLOTRMaterial { setSpeed.setAccessible(true); setEnchantability.setAccessible(true); + // Red Dwarf setUses.invoke(redDwarfSteelMaterial, 700); setDamage.invoke(redDwarfSteelMaterial, 3.0F); setProtection.invoke(redDwarfSteelMaterial, 0.7F); @@ -85,13 +60,17 @@ public abstract class MixinLOTRMaterial { setSpeed.invoke(redDwarfSteelMaterial, 7.0F); setEnchantability.invoke(redDwarfSteelMaterial, 10); + + // Assuming a public method to set the crafting item exists Method setCraftingItem = lotrMaterialClass.getDeclaredMethod("setCraftingItem", Item.class); setCraftingItem.setAccessible(true); setCraftingItem.invoke(redDwarfSteelMaterial, CinderLoE.redDwarfSteel); + // Now, assign the created and configured LOTRMaterial instance to the static field redDwarfSteelField.set(null, redDwarfSteelMaterial); + } catch (Exception e) { e.printStackTrace(); }