Advertisement
Guest User

Untitled

a guest
May 27th, 2015
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1. private byte[] transformBlockLeavesBase(byte[] bytecode, boolean obf) throws IOException {
  2.        
  3.         ClassNode classNode = new ClassNode();
  4.         ClassReader classReader = new ClassReader(bytecode);
  5.         classReader.accept(classNode, 0);
  6.  
  7.         //Решил рассмотреть добавление 1-го метода в тело класса
  8.         String getCollisionBox = obf ? "b" : "getCollisionBoundingBoxFromPool";
  9.         String world = obf ? "Labw;" : "Lnet/minecraft/world/World;";
  10.         String axisAlignedBB = obf ? "Lasx;" : "Lnet/minecraft/util/AxisAlignedBB;";
  11.        
  12.  
  13.         MethodNode method = new MethodNode(Opcodes.ASM4);
  14.         method.name = getCollisionBox;
  15.         method.desc = "(" + world + "III)" + axisAlignedBB;
  16.         method.access = 1;          //число доступа ?
  17.         method.maxLocals = 5;       //число локальных переменных?Если нет считать самому в конце байт кода
  18.         method.maxStack = 1;        // Если метод НЕ абстрактный - то пишем                                                       
  19.         method.instructions.add(new LabelNode());     //Добавление метки на которую можно будет прыгнуть с помощью инструкции JUMP
  20.         method.instructions.add(new InsnNode(1));    //не понял почему 1,но что то вроде инструкции?
  21.         method.instructions.add(new InsnNode(Opcodes.ARETURN));         //возврат значения соответствующего типа.Если чесно не понял,нашел таблицу со списком всех Opcodes и цифрами
  22.         method.instructions.add(new LabelNode());                                           // http://asm.ow2.org/jdiff223to31/ASM%202.2.3/constant-values.html#org.objectweb.asm.Opcodes.ARETURN
  23.         method.exceptions = new ArrayList<String>();
  24.         classNode.methods.add(method);
  25.  
  26.        
  27.         ClassWriter writer = new ClassWriter(0);
  28.         classNode.accept(writer);
  29.         return writer.toByteArray();
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement