Как сделать корректную Сериализацию/Десериализацию?
Сделал так:
Получил краш.
Сделал так:
Kotlin:
override fun fromBytes(buf: ByteBuf) {
val `in` = ByteBufInputStream(buf)
val img = ImageIO.read(`in`)
this.img = img
}
override fun toBytes(buf: ByteBuf) {
val out = ByteBufOutputStream(buf)
ImageIO.write(img, "png", out)
}
- Краш-лог
-
[Netty Client IO #0/ERROR] [FML]: NetworkDispatcher exception
java.lang.IllegalArgumentException: Payload may not be larger than 32k
at net.minecraft.network.play.client.C17PacketCustomPayload.<init>(C17PacketCustomPayload.java:39) ~[C17PacketCustomPayload.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.toC17Packet(FMLProxyPacket.java:129) ~[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$1.run(NetworkManager.java:197) [NetworkManager$1.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [SingleThreadEventExecutor.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:348) [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_161]
Краш-лог:
[Netty Client IO #0/ERROR] [FML]: NetworkDispatcher exception
java.lang.IllegalArgumentException: Payload may not be larger than 32k
at net.minecraft.network.play.client.C17PacketCustomPayload.<init>(C17PacketCustomPayload.java:39) ~[C17PacketCustomPayload.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.toC17Packet(FMLProxyPacket.java:129) ~[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$1.run(NetworkManager.java:197) [NetworkManager$1.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [SingleThreadEventExecutor.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:348) [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_161]