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); reader.accept(classNode, 0);
modifyMaterial2("ANGMAR", 480, 0.6F, classNode); //Original Durability = 350 | Add 162 | 1/4 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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("HALF_TROLL", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4
// Good Humans // Good Humans
modifyMaterial2("DALE", 475, 0.6F, classNode); //Original Durability = 300 | Add 175 | 1/4 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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("LAMEDON", 300, 0.6F, classNode); //Original Durability = 300 | Add 175 | 0/4
// Evil Humans // Evil Humans
modifyMaterial2("RHUN_GOLD", 558, 0.6F, classNode); //Original Durability = 450 | Add 137 | 1/4 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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 modifyMaterial("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("MOREDAIN", 250, 0.6F, classNode); //Original Durability = 250 | Add 187 | 0/4
//Elves //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 // 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("RED_DWARF", classNode);
addMaterial("WIZARD", classNode); addMaterial("WIZARD", classNode);
@ -87,18 +87,22 @@ public class LOTRMaterialTransformer implements IClassTransformer {
} }
public void modifyMaterial2(String fieldName, int durability, float protection, ClassNode classNode) { public void modifyMaterial2(String fieldName, int durability, float protection, ClassNode classNode) {
System.out.println("[CinderLoE] Attempting to modify " + fieldName);
MethodNode clinit = null; MethodNode clinit = null;
boolean foundField = false; boolean foundField = false;
// First, find the <clinit> method // First, find the <clinit> method
for (MethodNode method : classNode.methods) { for (MethodNode method : classNode.methods) {
if (method.name.equals("<clinit>")) { if (method.name.equals("<clinit>")) {
System.out.println("[CinderLoE] Found clinit");
clinit = method; clinit = method;
break; break;
} }
} }
if (clinit == null) { if (clinit == null) {
System.out.println("[CinderLoE] clinit not found");
return; return;
} }
@ -107,6 +111,11 @@ public class LOTRMaterialTransformer implements IClassTransformer {
while (iter.hasNext()) { while (iter.hasNext()) {
AbstractInsnNode insn = iter.next(); 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)) { if (insn instanceof LdcInsnNode && ((LdcInsnNode) insn).cst.equals(fieldName)) {
foundField = true; foundField = true;
} }
@ -115,7 +124,7 @@ public class LOTRMaterialTransformer implements IClassTransformer {
if (foundField && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setProtection")) { if (foundField && insn instanceof MethodInsnNode && ((MethodInsnNode) insn).name.equals("setProtection")) {
AbstractInsnNode protectionInsn = insn.getPrevious(); AbstractInsnNode protectionInsn = insn.getPrevious();
if (protectionInsn instanceof IntInsnNode) { if (protectionInsn instanceof LdcInsnNode) {
((LdcInsnNode) protectionInsn).cst = protection; ((LdcInsnNode) protectionInsn).cst = protection;
System.out.println("[CinderLoE] Updated protection for " + fieldName + " to " + protection); System.out.println("[CinderLoE] Updated protection for " + fieldName + " to " + protection);
return; return;
@ -133,6 +142,8 @@ public class LOTRMaterialTransformer implements IClassTransformer {
public void modifyMaterial(String fieldName, int durability, ClassNode classNode) { public void modifyMaterial(String fieldName, int durability, ClassNode classNode) {
MethodNode clinit = null; MethodNode clinit = null;
boolean foundField = false; boolean foundField = false;
boolean durabilityModified = false;
boolean protectionModified = false;
// First, find the <clinit> method // First, find the <clinit> method
for (MethodNode method : classNode.methods) { 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(); AbstractInsnNode durabilityInsn = insn.getPrevious();
if (durabilityInsn instanceof IntInsnNode) { if (durabilityInsn instanceof IntInsnNode) {
((IntInsnNode) durabilityInsn).operand = durability; ((IntInsnNode) durabilityInsn).operand = durability;
System.out.println("[CinderLoE] Updated durability for " + fieldName + " to " + 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) { if (!foundField) {

Loading…
Cancel
Save