diff --git a/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java b/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java index 303710c55..ff0623108 100644 --- a/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java +++ b/src/main/java/zmaster587/advancedRocketry/asm/ClassTransformer.java @@ -740,30 +740,23 @@ public byte[] transform(String name, String transformedName, if(onUpdate != null) { final InsnList nodeAdd = new InsnList(); AbstractInsnNode pos = null; - int numALoadsInARow = 0; - int firstALoadIndex = 0; + int lastReturnIndex = 0; AbstractInsnNode ain; - for(int i = 0; i < onUpdate.instructions.size(); i++) { + for(int i = 0; i < onUpdate.instructions.size() ; i++) { ain = onUpdate.instructions.get(i); - if(ain.getOpcode() == Opcodes.GETFIELD) { - if(numALoadsInARow == 0) - firstALoadIndex = i; - numALoadsInARow++; - if(numALoadsInARow == 4) { - break; - } + if(ain.getOpcode() == Opcodes.ALOAD) { + lastReturnIndex = i; + + break; } - else - numALoadsInARow = 0; } - int i = firstALoadIndex; - pos = onUpdate.instructions.get(i); + pos = onUpdate.instructions.get(lastReturnIndex); nodeAdd.add(new VarInsnNode(Opcodes.ALOAD, 0)); nodeAdd.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "zmaster587/advancedRocketry/util/GravityHandler", "applyGravity", "(L" + getName(CLASS_KEY_ENTITY) + ";)V", false)); - onUpdate.instructions.insert(pos, nodeAdd); + onUpdate.instructions.insertBefore(pos, nodeAdd); } return finishInjection(cn);