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.
76 lines
4.0 KiB
Java
76 lines
4.0 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", 512, 2.5F, 0.6F, 2, 6.0F, 10, CinderLoE.bonemold); //Original Durability = 350 | Add 81 | 162 if Upgraded Armory | 2/4 (Unupgraded)
|
|
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("SERPENT", 650, 2.0F, 0.6F, 2, 6.0F, 10, LOTRMod.bronze);
|
|
modifyMaterial("USURPER",650, 2.0F, 0.6F, 2, 6.0F, 10, Items.iron_ingot);
|
|
modifyMaterial("WARLORD", 650, 2.0F, 0.6F, 2, 6.0F, 10, LOTRMod.bronze);
|
|
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();
|
|
}
|
|
}
|
|
}
|