2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
3.7 KiB
Java

package com.zivilon.cinder_loe;
import lotr.common.LOTRMod;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import lotr.common.item.LOTRMaterial;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Field;
public class Materials {
public static void registerMaterials() {
modifyMaterial("RED_DWARF", 700, 3.0F, 0.7F, 3, 7.0F, 10, CinderLoE.redDwarfSteel);
modifyMaterial("WIZARD", 1000, 3.0F, 0.7F, 3, 7.0F, 10, null);
modifyMaterial("BONEMOLD", 674, 2.0F, 0.6F, 2, 6.0F, 10, CinderLoE.bonemold); //Original Durability = 350 | Add 162 | 2/4
modifyMaterial("LIMWAITH_WOOD", 230, 1.5F, 0.5F, 2, 5.0F, 10, Item.getItemFromBlock(LOTRMod.driedReeds));
modifyMaterial("EVENT", 2400, 5.0F, 0.8F, 0, 9.0F, 10, LOTRMod.emerald);
modifyMaterial("BREE", 350, 2.5F, 0.6F, 2, 6.0F, 10, Items.iron_ingot);
modifyMaterial("RHUDAUR", 300, 2.5F, 0.6F, 2, 6.0F, 10, LOTRMod.fur);
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);
modifyMaterial("JADE",2400, 5.0F, 0.8F, 0, 9.0F, 10, LOTRMod.emerald);
}
public static void modifyMaterial(String fieldName, int uses, float weapon_damage, float protection, int harvest_level, float speed, int enchantability, Item crafting_item) {
try {
Class<?> lotrMaterialClass = Class.forName("lotr.common.item.LOTRMaterial");
Field materialField = lotrMaterialClass.getField(fieldName);
// Reflection to access and instantiate the private constructor of LOTRMaterial
Constructor<?> constructor = lotrMaterialClass.getDeclaredConstructor(String.class);
constructor.setAccessible(true);
Object materialLocal = constructor.newInstance(fieldName);
// Reflection to call the private methods on the new instance
Method setUses = lotrMaterialClass.getDeclaredMethod("setUses", int.class);
Method setDamage = lotrMaterialClass.getDeclaredMethod("setDamage", float.class);
Method setProtection = lotrMaterialClass.getDeclaredMethod("setProtection", float.class);
Method setHarvestLevel = lotrMaterialClass.getDeclaredMethod("setHarvestLevel", int.class);
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);
setProtection.setAccessible(true);
setHarvestLevel.setAccessible(true);
setSpeed.setAccessible(true);
setEnchantability.setAccessible(true);
setCraftingItem.setAccessible(true);
// setManFlesh.setAccessible(true);
setUses.invoke(materialLocal, uses);
setDamage.invoke(materialLocal, weapon_damage);
setProtection.invoke(materialLocal, protection);
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);
}
materialField.set(null, materialLocal);
} catch (Exception e) {
e.printStackTrace();
}
}
}