delete unused ASM

This commit is contained in:
FalsePattern committed 2022-03-17 15:43:18 +01:00
1 parent 89d1e64a7e
commit 25341db821
7 files changed
-423

No files matched your search

@@ -7,22 +7,16 @@ import com.falsepattern.endlessids.asm.transformer.UndergroundBiomesBiomeUndergr
import com.falsepattern.endlessids.asm.transformer.UndergroundBiomesOreUBifier;
import com.falsepattern.endlessids.asm.transformer.CofhBlockHelper;
import com.falsepattern.endlessids.asm.transformer.FmlRegistry;
import com.falsepattern.endlessids.asm.transformer.VanillaWorld;
import com.falsepattern.endlessids.asm.transformer.VanillaItemInWorldManager;
import com.falsepattern.endlessids.asm.transformer.VanillaPlayerControllerMP;
import com.falsepattern.endlessids.asm.transformer.VanillaRenderGlobal;
import com.falsepattern.endlessids.asm.transformer.VanillaS26PacketMapChunkBulk;
import com.falsepattern.endlessids.asm.transformer.VanillaS24PacketBlockActivation;
import com.falsepattern.endlessids.asm.transformer.VanillaS22PacketMultiBlockChange;
import com.falsepattern.endlessids.asm.transformer.VanillaS21PacketChunkData;
import com.falsepattern.endlessids.asm.transformer.VanillaNetHandlerPlayClient;
import com.falsepattern.endlessids.asm.transformer.VanillaDataWatcher;
import com.falsepattern.endlessids.asm.transformer.VanillaExtendedBlockStorage;
import com.falsepattern.endlessids.asm.transformer.VanillaChunk;
import com.falsepattern.endlessids.asm.transformer.VanillaAnvilChunkLoader;
import com.falsepattern.endlessids.asm.transformer.VanillaStatList;
import com.falsepattern.endlessids.asm.transformer.VanillaBlockFire;
import com.falsepattern.endlessids.asm.transformer.SelfHooks;
import java.util.Map;
public enum ClassEdit
@@ -1,62 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import com.falsepattern.endlessids.asm.Name;
import org.objectweb.asm.tree.InsnList;
import org.objectweb.asm.tree.InsnNode;
import org.objectweb.asm.tree.FieldInsnNode;
import org.objectweb.asm.Type;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.VarInsnNode;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.AsmUtil;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class SelfHooks implements IClassNodeTransformer
{
public SelfHooks() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
MethodNode method = AsmUtil.findMethod(cn, "get");
this.transformGet(cn, method);
method = AsmUtil.findMethod(cn, "setBlockRefCount");
this.transformSetBlockRefCount(cn, method, obfuscated);
method = AsmUtil.findMethod(cn, "setTickRefCount");
this.transformSetTickRefCount(cn, method, obfuscated);
}
private void transformGet(final ClassNode cn, final MethodNode method) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new FieldInsnNode(180, Type.getArgumentTypes(method.desc)[0].getInternalName(), "block16BArray", "[S"));
code.add((AbstractInsnNode)new InsnNode(176));
method.localVariables = null;
method.maxStack = 1;
}
private void transformSetBlockRefCount(final ClassNode cn, final MethodNode method, final boolean isObf) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new VarInsnNode(21, 1));
code.add((AbstractInsnNode)Name.ebs_blockRefCount.virtualSet(isObf));
code.add((AbstractInsnNode)new InsnNode(177));
method.localVariables = null;
method.maxStack = 2;
}
private void transformSetTickRefCount(final ClassNode cn, final MethodNode method, final boolean isObf) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new VarInsnNode(21, 1));
code.add((AbstractInsnNode)Name.ebs_tickRefCount.virtualSet(isObf));
code.add((AbstractInsnNode)new InsnNode(177));
method.localVariables = null;
method.maxStack = 2;
}
}
@@ -1,85 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import org.objectweb.asm.tree.MethodInsnNode;
import java.util.ListIterator;
import org.objectweb.asm.tree.InsnList;
import com.falsepattern.endlessids.asm.AsmTransformException;
import org.objectweb.asm.tree.LdcInsnNode;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.AsmUtil;
import com.falsepattern.endlessids.asm.Name;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class VanillaAnvilChunkLoader implements IClassNodeTransformer
{
public VanillaAnvilChunkLoader() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
MethodNode method = AsmUtil.findMethod(cn, Name.acl_writeChunkToNBT);
this.transformWriteChunkToNBT(cn, method, obfuscated);
method = AsmUtil.findMethod(cn, Name.acl_readChunkFromNBT);
this.transformReadChunkFromNBT(cn, method, obfuscated);
}
private void transformWriteChunkToNBT(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
final ListIterator<AbstractInsnNode> iterator = (ListIterator<AbstractInsnNode>)code.iterator();
while (iterator.hasNext()) {
final AbstractInsnNode insn = (AbstractInsnNode)iterator.next();
if (insn.getOpcode() == 18 && ((LdcInsnNode)insn).cst.equals("Blocks")) {
iterator.remove();
iterator.next();
iterator.next();
iterator.remove();
iterator.next();
iterator.remove();
iterator.add((AbstractInsnNode)Name.hooks_writeChunkToNbt.staticInvocation(obfuscated));
return;
}
}
throw new AsmTransformException("can't find Blocks LDC");
}
private void transformReadChunkFromNBT(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
int part = 0;
final ListIterator<AbstractInsnNode> iterator = (ListIterator<AbstractInsnNode>)code.iterator();
while (iterator.hasNext()) {
final AbstractInsnNode insn = (AbstractInsnNode)iterator.next();
if (part == 0) {
if (insn.getOpcode() != 18 || !((LdcInsnNode)insn).cst.equals("Blocks")) {
continue;
}
iterator.set((AbstractInsnNode)Name.hooks_readChunkFromNbt.staticInvocation(obfuscated));
++part;
}
else if (part == 1) {
iterator.remove();
if (insn.getOpcode() != 182) {
continue;
}
final MethodInsnNode node = (MethodInsnNode)insn;
if (!Name.ebs_setBlockMSBArray.matches(node, obfuscated)) {
continue;
}
++part;
}
else {
if (insn.getType() == 14) {
iterator.remove();
++part;
break;
}
continue;
}
}
if (part != 3) {
throw new AsmTransformException("no match for part " + part);
}
}
}
@@ -1,69 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import java.util.ListIterator;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.AsmTransformException;
import org.objectweb.asm.tree.JumpInsnNode;
import org.objectweb.asm.tree.InsnNode;
import org.objectweb.asm.tree.LdcInsnNode;
import org.objectweb.asm.tree.VarInsnNode;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.AbstractInsnNode;
import com.falsepattern.endlessids.asm.AsmUtil;
import com.falsepattern.endlessids.asm.Name;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class VanillaChunk implements IClassNodeTransformer
{
public VanillaChunk() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
final MethodNode method = AsmUtil.findMethod(cn, Name.chunk_fillChunk, true);
if (method == null) {
return;
}
method.localVariables = null;
int part = 0;
final ListIterator<AbstractInsnNode> it = (ListIterator<AbstractInsnNode>)method.instructions.iterator();
while (it.hasNext()) {
AbstractInsnNode insn = (AbstractInsnNode)it.next();
if (part == 0) {
if (insn.getOpcode() != 182 || !Name.ebs_getBlockLSBArray.matches((MethodInsnNode)insn, obfuscated)) {
continue;
}
it.set((AbstractInsnNode)new VarInsnNode(25, 1));
it.add((AbstractInsnNode)new VarInsnNode(21, 6));
it.add((AbstractInsnNode)Name.hooks_setBlockData.staticInvocation(obfuscated));
++part;
}
else if (part == 1) {
if (insn.getOpcode() == 96) {
it.set((AbstractInsnNode)new VarInsnNode(21, 6));
it.add((AbstractInsnNode)new LdcInsnNode((Object)Integer.valueOf(8192)));
it.add((AbstractInsnNode)new InsnNode(96));
++part;
}
else {
it.remove();
}
}
else {
if (part == 2 && insn.getOpcode() == 182 && Name.ebs_getBlockMSBArray.matches((MethodInsnNode)insn, obfuscated)) {
while (((AbstractInsnNode)it.previous()).getOpcode() != 3) {}
while (((AbstractInsnNode)it.previous()).getType() != 8) {}
do {
insn = it.next();
} while (insn.getOpcode() != 161 && insn.getOpcode() != 162);
it.set((AbstractInsnNode)new JumpInsnNode((insn.getOpcode() == 161) ? 163 : 161, ((JumpInsnNode)insn).label));
return;
}
continue;
}
}
throw new AsmTransformException("no match for part " + part);
}
}
@@ -1,133 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import org.objectweb.asm.tree.MethodInsnNode;
import com.falsepattern.endlessids.asm.AsmTransformException;
import org.objectweb.asm.tree.InsnNode;
import java.util.ListIterator;
import org.objectweb.asm.tree.FieldInsnNode;
import org.objectweb.asm.tree.VarInsnNode;
import org.objectweb.asm.tree.InsnList;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.AsmUtil;
import com.falsepattern.endlessids.asm.Name;
import org.objectweb.asm.tree.FieldNode;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class VanillaExtendedBlockStorage implements IClassNodeTransformer
{
public VanillaExtendedBlockStorage() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
cn.fields.add(new FieldNode(1, "block16BArray", "[S", (String)null, (Object)null));
AsmUtil.makePublic(AsmUtil.findField(cn, Name.ebs_blockRefCount));
AsmUtil.makePublic(AsmUtil.findField(cn, Name.ebs_tickRefCount));
MethodNode method = AsmUtil.findMethod(cn, "<init>");
this.transformConstructor(cn, method, obfuscated);
method = AsmUtil.findMethod(cn, Name.ebs_getBlock);
this.transformGetBlock(cn, method, obfuscated);
method = AsmUtil.findMethod(cn, Name.ebs_setBlock);
this.transformSetBlock(cn, method, obfuscated);
method = AsmUtil.findMethod(cn, Name.ebs_getBlockMSBArray);
this.transformGetBlockMSBArray(cn, method);
method = AsmUtil.findMethod(cn, Name.ebs_removeInvalidBlocks);
this.transformRemoveInvalidBlocks(cn, method);
}
private void transformConstructor(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
final ListIterator<AbstractInsnNode> iterator = (ListIterator<AbstractInsnNode>)code.iterator();
if (iterator.hasNext()) {
AbstractInsnNode insn = (AbstractInsnNode)iterator.next();
insn = insn.getNext().getNext();
final InsnList toInsert = new InsnList();
toInsert.add((AbstractInsnNode)new VarInsnNode(25, 0));
toInsert.add((AbstractInsnNode)Name.hooks_create16BArray.staticInvocation(obfuscated));
toInsert.add((AbstractInsnNode)new FieldInsnNode(181, cn.name, "block16BArray", "[S"));
method.instructions.insert(insn, toInsert);
}
method.maxStack = Math.max(method.maxStack, 2);
}
private void transformGetBlock(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new VarInsnNode(21, 1));
code.add((AbstractInsnNode)new VarInsnNode(21, 2));
code.add((AbstractInsnNode)new VarInsnNode(21, 3));
code.add((AbstractInsnNode)Name.hooks_getBlockById.staticInvocation(obfuscated));
code.add((AbstractInsnNode)new InsnNode(176));
method.localVariables = null;
method.maxStack = 4;
}
private void transformSetBlock(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
int part = 0;
final ListIterator<AbstractInsnNode> iterator = (ListIterator<AbstractInsnNode>)code.iterator();
while (iterator.hasNext()) {
final AbstractInsnNode insn = (AbstractInsnNode)iterator.next();
if (part == 0) {
iterator.remove();
if (insn.getOpcode() != 184) {
continue;
}
++part;
iterator.add((AbstractInsnNode)new VarInsnNode(25, 0));
iterator.add((AbstractInsnNode)new VarInsnNode(21, 1));
iterator.add((AbstractInsnNode)new VarInsnNode(21, 2));
iterator.add((AbstractInsnNode)new VarInsnNode(21, 3));
iterator.add((AbstractInsnNode)Name.ebs_getBlock.virtualInvocation(obfuscated));
}
else if (part == 1) {
if (insn.getOpcode() != 184) {
continue;
}
iterator.set((AbstractInsnNode)new VarInsnNode(25, 6));
iterator.add((AbstractInsnNode)Name.hooks_getIdFromBlockWithCheck.staticInvocation(obfuscated));
++part;
}
else {
iterator.remove();
}
}
if (part != 2) {
throw new AsmTransformException("no match for part " + part);
}
code.add((AbstractInsnNode)new VarInsnNode(54, 5));
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new VarInsnNode(21, 1));
code.add((AbstractInsnNode)new VarInsnNode(21, 2));
code.add((AbstractInsnNode)new VarInsnNode(21, 3));
code.add((AbstractInsnNode)new VarInsnNode(21, 5));
code.add((AbstractInsnNode)Name.hooks_setBlockId.staticInvocation(obfuscated));
code.add((AbstractInsnNode)new InsnNode(177));
method.localVariables = null;
--method.maxLocals;
method.maxStack = Math.max(method.maxStack, 5);
}
private void transformGetBlockMSBArray(final ClassNode cn, final MethodNode method) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new InsnNode(1));
code.add((AbstractInsnNode)new InsnNode(176));
method.localVariables = null;
method.maxStack = 1;
}
private void transformRemoveInvalidBlocks(final ClassNode cn, final MethodNode method) {
final InsnList code = method.instructions;
code.clear();
code.add((AbstractInsnNode)new VarInsnNode(25, 0));
code.add((AbstractInsnNode)new MethodInsnNode(184, "com/falsepattern/endlessids/Hooks", "removeInvalidBlocksHook", "(L" + cn.name + ";)V", false));
code.add((AbstractInsnNode)new InsnNode(177));
method.localVariables = null;
method.maxStack = 1;
}
}
@@ -1,48 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import java.util.ListIterator;
import org.objectweb.asm.tree.InsnList;
import com.falsepattern.endlessids.asm.AsmTransformException;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.Name;
import com.falsepattern.endlessids.asm.AsmUtil;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class VanillaS21PacketChunkData implements IClassNodeTransformer
{
public VanillaS21PacketChunkData() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
MethodNode method = AsmUtil.findMethod(cn, "<clinit>");
AsmUtil.transformInlinedSizeMethod(cn, method, 196864, 229632, false);
method = AsmUtil.findMethod(cn, Name.s21_undefined1);
AsmUtil.transformInlinedSizeMethod(cn, method, 196864, 229632, false);
method = AsmUtil.findMethod(cn, Name.packet_readPacketData);
AsmUtil.transformInlinedSizeMethod(cn, method, 12288, 14336, false);
method = AsmUtil.findMethod(cn, Name.s21_undefined2);
this.transformCreateData(cn, method, obfuscated);
}
private void transformCreateData(final ClassNode cn, final MethodNode method, final boolean obfuscated) {
final InsnList code = method.instructions;
final ListIterator<AbstractInsnNode> iterator = (ListIterator<AbstractInsnNode>)code.iterator();
while (iterator.hasNext()) {
final AbstractInsnNode insn = (AbstractInsnNode)iterator.next();
if (insn.getOpcode() == 182) {
final MethodInsnNode node = (MethodInsnNode)insn;
if (Name.ebs_getBlockLSBArray.matches(node, obfuscated)) {
iterator.set((AbstractInsnNode)Name.hooks_getBlockData.staticInvocation(obfuscated));
return;
}
continue;
}
}
throw new AsmTransformException("can't find getBlockLSBArray INVOKEVIRTUAL");
}
}
@@ -1,20 +0,0 @@
package com.falsepattern.endlessids.asm.transformer;
import org.objectweb.asm.tree.MethodNode;
import com.falsepattern.endlessids.asm.AsmUtil;
import com.falsepattern.endlessids.asm.Name;
import org.objectweb.asm.tree.ClassNode;
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
public class VanillaWorld implements IClassNodeTransformer
{
public VanillaWorld() {
super();
}
@Override
public void transform(final ClassNode cn, final boolean obfuscated) {
final MethodNode method = AsmUtil.findMethod(cn, Name.world_breakBlock);
AsmUtil.transformInlinedSizeMethod(cn, method, 12, 16);
}
}