- 235
- 3
- 21
вот так выглядит майновский класс с пакетом, который юзается форжем, мне нужно снять ограничение на размер пакета в 32кб
я вытужил из себя (ненавижу гребаный asm) вот такой трансформер
отладка работает мне в консоль выводится
после чего при попытке захода на сервер я получаю эксцепшен и уведомление на экране о макс. размере пакета 32кб
что делать дальше я хз
C17PacketCustomPayload:
public class C17PacketCustomPayload extends Packet
{
private String field_149562_a;
private int field_149560_b;
private byte[] field_149561_c;
private static final String __OBFID = "CL_00001356";
public C17PacketCustomPayload() {}
@SideOnly(Side.CLIENT)
public C17PacketCustomPayload(String p_i45248_1_, ByteBuf p_i45248_2_)
{
this(p_i45248_1_, p_i45248_2_.array());
}
@SideOnly(Side.CLIENT)
public C17PacketCustomPayload(String p_i45249_1_, byte[] p_i45249_2_)
{
this.field_149562_a = p_i45249_1_;
this.field_149561_c = p_i45249_2_;
if (p_i45249_2_ != null)
{
this.field_149560_b = p_i45249_2_.length;
if (this.field_149560_b >= 32767)
{
throw new IllegalArgumentException("Payload may not be larger than 32k");
}
}
}
/**
* Reads the raw packet data from the data stream.
*/
public void readPacketData(PacketBuffer p_148837_1_) throws IOException
{
this.field_149562_a = p_148837_1_.readStringFromBuffer(20);
this.field_149560_b = p_148837_1_.readShort();
if (this.field_149560_b > 0 && this.field_149560_b < 32767)
{
this.field_149561_c = new byte[this.field_149560_b];
p_148837_1_.readBytes(this.field_149561_c);
}
}
/**
* Writes the raw packet data to the data stream.
*/
public void writePacketData(PacketBuffer p_148840_1_) throws IOException
{
p_148840_1_.writeStringToBuffer(this.field_149562_a);
p_148840_1_.writeShort((short)this.field_149560_b);
if (this.field_149561_c != null)
{
p_148840_1_.writeBytes(this.field_149561_c);
}
}
/**
* Passes this Packet on to the NetHandler for processing.
*/
public void processPacket(INetHandlerPlayServer p_148833_1_)
{
p_148833_1_.processVanilla250Packet(this);
}
public String func_149559_c()
{
return this.field_149562_a;
}
public byte[] func_149558_e()
{
return this.field_149561_c;
}
/**
* Passes this Packet on to the NetHandler for processing.
*/
public void processPacket(INetHandler p_148833_1_)
{
this.processPacket((INetHandlerPlayServer)p_148833_1_);
}
}
я вытужил из себя (ненавижу гребаный asm) вот такой трансформер
мой трансформер:
public class ClassTransformer implements IClassTransformer
{
@Override
public byte[] transform(String name, String transformedName, byte[] basicClass)
{
if(transformedName.equals("net.minecraft.network.play.client.C17PacketCustomPayload")) {
return transformC17PacketCustomPayload(basicClass);
}
return basicClass;
}
private byte[] transformC17PacketCustomPayload(byte[] basicClass)
{
ClassReader cr = new ClassReader(basicClass);
ClassWriter cw = new ClassWriter(cr, 0);
cr.accept(new ClassVisitor(Opcodes.ASM5, cw)
{
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions)
{
MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
if(name.equals("<init>") && desc.equals("(Ljava/lang/String;[B)V"))
{
System.out.println("mark1");
return new MethodVisitor(Opcodes.ASM5, mv)
{
@Override
public void visitIntInsn(int opcode, int operand)
{
System.out.println(opcode + " | " + operand);
if(opcode == Opcodes.SIPUSH && operand == 32767) {
System.out.println("mark2");
operand = 2097151;
}
super.visitIntInsn(opcode, operand);
}
};
}
return mv;
}
}, 0);
return cw.toByteArray();
}
}
отладка работает мне в консоль выводится
Java:
[00:25:02] [Netty Client IO #0/INFO] [STDOUT]: [ru.pa4ok.anticheat.common.asm.ClassTransformer$1:visitMethod:31]: mark1
[00:25:02] [Netty Client IO #0/INFO] [STDOUT]: [ru.pa4ok.anticheat.common.asm.ClassTransformer$1$1:visitIntInsn:37]: 17 | 32767
[00:25:02] [Netty Client IO #0/INFO] [STDOUT]: [ru.pa4ok.anticheat.common.asm.ClassTransformer$1$1:visitIntInsn:39]: mark2
после чего при попытке захода на сервер я получаю эксцепшен и уведомление на экране о макс. размере пакета 32кб
Java:
00:25:05] [Netty Client IO #1/ERROR] [FML]: NetworkDispatcher exception
java.lang.IllegalArgumentException: Payload may not be larger than 32k
at net.minecraft.network.play.client.C17PacketCustomPayload.<init>(SourceFile:38) ~[iz.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.toC17Packet(FMLProxyPacket.java:120) ~[FMLProxyPacket.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.write(NetworkDispatcher.java:434) ~[NetworkDispatcher.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:644) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:698) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:688) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:717) ~[DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:893) ~[DefaultChannelPipeline.class:?]
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:239) ~[AbstractChannel.class:?]
at net.minecraft.network.NetworkManager.func_150732_b(NetworkManager.java:160) [ej.class:?]
at net.minecraft.network.NetworkManager.func_150725_a(NetworkManager.java:134) [ej.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.sendProxy(NetworkDispatcher.java:365) [NetworkDispatcher.class:?]
at cpw.mods.fml.common.network.handshake.HandshakeInjector.write(HandshakeInjector.java:20) [HandshakeInjector.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:644) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:698) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:637) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:102) [MessageToMessageEncoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:644) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:698) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:688) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:717) [DefaultChannelHandlerContext.class:?]
at cpw.mods.fml.common.network.handshake.FMLHandshakeClientState$2.accept(FMLHandshakeClientState.java:45) [FMLHandshakeClientState$2.class:?]
at cpw.mods.fml.common.network.handshake.FMLHandshakeClientState$2.accept(FMLHandshakeClientState.java:39) [FMLHandshakeClientState$2.class:?]
at cpw.mods.fml.common.network.handshake.HandshakeMessageHandler.channelRead0(HandshakeMessageHandler.java:27) [HandshakeMessageHandler.class:?]
at cpw.mods.fml.common.network.handshake.HandshakeMessageHandler.channelRead0(HandshakeMessageHandler.java:9) [HandshakeMessageHandler.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at cpw.mods.fml.common.network.handshake.ChannelRegistrationHandler.channelRead0(ChannelRegistrationHandler.java:32) [ChannelRegistrationHandler.class:?]
at cpw.mods.fml.common.network.handshake.ChannelRegistrationHandler.channelRead0(ChannelRegistrationHandler.java:15) [ChannelRegistrationHandler.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:274) [NetworkDispatcher.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:202) [NetworkDispatcher.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:47) [NetworkDispatcher.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:149) [ReadTimeoutHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100) [AbstractNioByteChannel$NioByteUnsafe.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:480) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:447) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:341) [NioEventLoop.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
что делать дальше я хз