Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SyntaxClassTransformer implements IClassTransformer {
- /*
- * The vanilla method
- public void a(iy paramiy)
- {
- ig.a(paramiy, this, this.f);
- String[] arrayOfString = paramiy.a();
- if ((this.f.m instanceof bvx)) {
- bvx localbvx = (bvx)this.f.m;
- localbvx.a(arrayOfString);
- }
- }
- */
- @Override
- public byte[] transform(String name, String transformedName,
- byte[] basicClass) {
- try {
- if(name.equals("cee")) { //TODO: get obfus name
- return patchClass(name, basicClass, true);
- }
- else if(name.equals("net.minecraft.client.network.NetHandlerPlayClient")) {
- return patchClass(name, basicClass, false);
- }
- } catch(Exception e) {
- e.printStackTrace();
- }
- return basicClass;
- }
- private byte[] patchClass(String name, byte[] bytes, boolean obfuscated) throws NotFoundException, CannotCompileException, IOException {
- System.out.println("Inside class "+name);
- ClassPool cp = ClassPool.getDefault();
- CtClass cc = cp.get(name);
- String packetClassName = S3APacketTabComplete.class.getName(); //TODO: Works with obfuscation?
- CtClass packetClass = cp.get(packetClassName);
- String methodName = obfuscated ? "a" : "handleTabComplete";
- CtMethod cm = cc.getDeclaredMethod(methodName, new CtClass[]{packetClass});
- int lineNum = 10;
- String toAdd = "if($0.gameController.currentScreen instanceof eu.crushedpixel.commandsyntax.gui.GuiSyntaxCommandBlock) { "
- + "eu.crushedpixel.commandsyntax.gui.GuiSyntaxCommandBlock guiCMD = (eu.crushedpixel.commandsyntax.gui.GuiSyntaxCommandBlock)$0.gameController.currentScreen;"
- + "guiCMD.onAutocompleteResponse(packetIn.func_149630_c());"
- + "}";
- if(obfuscated) toAdd = "if($0.f.m instanceof bvx)) {"
- + "eu.crushedpixel.commandsyntax.gui.GuiSyntaxCommandBlock guiCMD = (eu.crushedpixel.commandsyntax.gui.GuiSyntaxCommandBlock)$0.f.m;"
- + "guiCMD.onAutocompleteResponse(paramiy.a());"
- + "}";
- cm.insertAt(lineNum, toAdd);
- cc.writeFile();
- return cc.toBytecode();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement