2
0
Fork 0

Added protection to material modify

frozen
Shinare 1 year ago
parent c67e450dbd
commit 20c10a2a2e

@ -20,38 +20,38 @@ public class LOTRMaterialTransformer implements IClassTransformer {
reader.accept(classNode, 0);
modifyMaterial2("ANGMAR", 480, 0.6F, classNode); //Original Durability = 350 | Add 162 | 1/4
modifyMaterial2("URUK", 662, 0.7F, classNode); //Original Durability = 550 | Add 112 | 1/4
modifyMaterial2("BLACK_URUK", 774, 0.7F, classNode); //Original Durability = 550 | Add 112 | 2/4
modifyMaterial2("HALF_TROLL", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4
modifyMaterial("ANGMAR", 480, 0.6F, classNode); //Original Durability = 350 | Add 162 | 1/4
modifyMaterial("URUK", 662, 0.7F, classNode); //Original Durability = 550 | Add 112 | 1/4
modifyMaterial("BLACK_URUK", 774, 0.7F, classNode); //Original Durability = 550 | Add 112 | 2/4
modifyMaterial("HALF_TROLL", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4
// Good Humans
modifyMaterial2("DALE", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4
modifyMaterial2("GONDOR", 725, 0.6F, classNode); //Original Durability = 450 | Add 137 | 2/4
modifyMaterial2("DORWINION_ELF", 875, 0.6F, classNode); //Original Durability = 500 | Add 125 | 2/4
modifyMaterial2("ROHAN", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial2("TAUREDAIN", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial2("DORWINION", 400, 0.6F, classNode); //Original Durability = 400 | Add 150 | 0/4
modifyMaterial2("LOSSARNACH", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial2("LAMEDON", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial("DALE", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4
modifyMaterial("GONDOR", 725, 0.6F, classNode); //Original Durability = 450 | Add 137 | 2/4
modifyMaterial("DORWINION_ELF", 875, 0.6F, classNode); //Original Durability = 500 | Add 125 | 2/4
modifyMaterial("ROHAN", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial("TAUREDAIN", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial("DORWINION", 400, 0.6F, classNode); //Original Durability = 400 | Add 150 | 0/4
modifyMaterial("LOSSARNACH", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial("LAMEDON", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
// Evil Humans
modifyMaterial2("RHUN_GOLD", 558, 0.6F, classNode); //Original Durability = 450 | Add 137 | 1/4
modifyMaterial2("RHUN", 400, 0.6F, classNode); //Original Durability = 400 | Add 150 | 0/4
modifyMaterial2("DUNLENDING", 437, 0.6F, classNode); //Original Durability = 250 | Add 187 | 1/4
modifyMaterial2("NEAR_HARAD", 650, 0.6F, classNode); //Original Durability = 300 | Add 175 | 2/4
modifyMaterial2("HARNEDOR", 250, 0.6F, classNode); //Original Durability = 250 | Add 187 | 0/4
modifyMaterial2("CORSAIR", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial2("GULF_HARAD", 350, 0.6F, classNode); //Original Durability = 350 | Add 162 | 0/4
modifyMaterial2("UMBAR", 450, 0.6F, classNode); //Original Durability = 450 | Add 137 | 0/4
modifyMaterial2("MOREDAIN", 250, 0.6F, classNode); //Original Durability = 250 | Add 187 | 0/4
modifyMaterial("RHUN_GOLD", 558, 0.6F, classNode); //Original Durability = 450 | Add 137 | 1/4
modifyMaterial("RHUN", 400, 0.6F, classNode); //Original Durability = 400 | Add 150 | 0/4
modifyMaterial("DUNLENDING", 437, 0.6F, classNode); //Original Durability = 250 | Add 187 | 1/4
modifyMaterial("NEAR_HARAD", 650, 0.6F, classNode); //Original Durability = 300 | Add 175 | 2/4
modifyMaterial("HARNEDOR", 250, 0.6F, classNode); //Original Durability = 250 | Add 187 | 0/4
modifyMaterial("CORSAIR", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
modifyMaterial("GULF_HARAD", 350, 0.6F, classNode); //Original Durability = 350 | Add 162 | 0/4
modifyMaterial("UMBAR", 450, 0.6F, classNode); //Original Durability = 450 | Add 137 | 0/4
modifyMaterial("MOREDAIN", 250, 0.6F, classNode); //Original Durability = 250 | Add 187 | 0/4
//Elves
modifyMaterial2("WOOD_ELVEN", 1000, 0.6F, classNode); //Original Durability = 500 | Add 125 | 4/4
modifyMaterial("WOOD_ELVEN", 1000, 0.6F, classNode); //Original Durability = 500 | Add 125 | 4/4
// Custom
modifyMaterial2("UTUMNO", 1500, 0.7F, classNode); //Original Durability = 250 | Add 187 | 0/4
modifyMaterial("UTUMNO", 1500, 0.7F, classNode); //Original Durability = 250 | Add 187 | 0/4
addMaterial("RED_DWARF", classNode);
addMaterial("WIZARD", classNode);
@ -87,18 +87,22 @@ public class LOTRMaterialTransformer implements IClassTransformer {
}
public void modifyMaterial2(String fieldName, int durability, float protection, ClassNode classNode) {
System.out.println("[CinderLoE] Attempting to modify " + fieldName);
MethodNode clinit = null;
boolean foundField = false;
// First, find the <clinit> method
for (MethodNode method : classNode.methods) {
if (method.name.equals("<clinit>")) {
System.out.println("[CinderLoE] Found clinit");
clinit = method;
break;
}
}
if (clinit == null) {
System.out.println("[CinderLoE] clinit not found");
return;
}
@ -107,6 +111,11 @@ public class LOTRMaterialTransformer implements IClassTransformer {
while (iter.hasNext()) {
AbstractInsnNode insn = iter.next();
if (insn instanceof LdcInsnNode) {
System.out.println("[CinderLoE] Reading node " + ((LdcInsnNode) insn).cst);
}
if (insn instanceof LdcInsnNode && ((LdcInsnNode) insn).cst.equals(fieldName)) {
foundField = true;
}
@ -115,7 +124,7 @@ public class LOTRMaterialTransformer implements IClassTransformer {
if (foundField && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setProtection")) {
AbstractInsnNode protectionInsn = insn.getPrevious();
if (protectionInsn instanceof IntInsnNode) {
if (protectionInsn instanceof LdcInsnNode) {
((LdcInsnNode) protectionInsn).cst = protection;
System.out.println("[CinderLoE] Updated protection for " + fieldName + " to " + protection);
return;
@ -133,6 +142,8 @@ public class LOTRMaterialTransformer implements IClassTransformer {
public void modifyMaterial(String fieldName, int durability, ClassNode classNode) {
MethodNode clinit = null;
boolean foundField = false;
boolean durabilityModified = false;
boolean protectionModified = false;
// First, find the <clinit> method
for (MethodNode method : classNode.methods) {
@ -156,17 +167,29 @@ public class LOTRMaterialTransformer implements IClassTransformer {
}
if (foundField && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setUses")) {
if (foundField && !durabilityModified && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setUses")) {
AbstractInsnNode durabilityInsn = insn.getPrevious();
if (durabilityInsn instanceof IntInsnNode) {
((IntInsnNode) durabilityInsn).operand = durability;
System.out.println("[CinderLoE] Updated durability for " + fieldName + " to " + durability);
return;
durabilityModified = true;
}
}
if (foundField && !protectionModified && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setProtection")) {
AbstractInsnNode protectionInsn = insn.getPrevious();
if (protectionInsn instanceof LdcInsnNode) {
((LdcInsnNode) protectionInsn).cst = protection;
System.out.println("[CinderLoE] Updated protection for " + fieldName + " to " + protection);
protectionModified = true;
}
}
if (durabilityModified && protectionModified) {
return;
}
}
if (!foundField) {

Loading…
Cancel
Save