tox1cozZ
aka Agravaine
- 8,453
- 599
- 2,906
Собсна, нужно перенести пару строку кода в другое место.
Если что, это 711 строка в классе Chunk.
Я тут немного пытался... Просьба не смеяться)

Если что, это 711 строка в классе Chunk.
Я тут немного пытался... Просьба не смеяться)
Java:
@Override
public byte[] transform(String name, String transformedName, byte[] basicClass) {
if(name.equals("net.minecraft.world.chunk.Chunk") || transformedName.equals("net.minecraft.world.chunk.Chunk")){
ClassNode classNode = new ClassNode();
ClassReader classReader = new ClassReader(basicClass);
classReader.accept(classNode, 0);
for(MethodNode method : classNode.methods){
if(method.name.equals("func_150807_a")){
InsnList insns = method.instructions;
if (insns.size() == 0) {
continue;
}
Iterator<AbstractInsnNode> j = insns.iterator();
List<AbstractInsnNode> code = Lists.newArrayList();
while (j.hasNext()) {
AbstractInsnNode in = j.next();
if (in instanceof MethodInsnNode) {
MethodInsnNode min = (MethodInsnNode)in;
if(min.owner.equals("net/minecraft/block/Block") && min.name.equals("onBlockAdded") && min.desc.equals("(Lnet/minecraft/world/World;III)V")){
for(int i = 0; i < 11; i++){
AbstractInsnNode prev = min.getPrevious();
code.add(prev);
insns.remove(prev);
}
code.add(min);
insns.remove(min);
}
}else if(in instanceof FieldInsnNode) {
FieldInsnNode fin = (FieldInsnNode)in;
if(fin.owner.equals("net/minecraft/world/chunk/Chunk") && fin.name.equals("isModified") && fin.desc.equals("Z") && fin.getPrevious().getOpcode() == Opcodes.ICONST_1){
for(AbstractInsnNode node : code){
insns.insertBefore(fin, node);
}
}
}
}
}
}
ClassWriter classWriter = new ClassWriter(0);
classNode.accept(classWriter);
return classWriter.toByteArray();
}
return basicClass;
}