У меня есть NBTTagCompound, который должен передаваться между клиентом и сервером.
Есть лимит пакета, 32к.
Вопрос: как заюзать CompressedStreamTools#writeCompressed для NBTTagCompound и PacketBuff?
Данный код был взят из мода AE2, в котором все корректно работает.
Но, у при копипасте получаю ошибку в чтении:
P.S. Это вроде не считается "помощь в декомпилировании" и тому подобное. Хотя бы потому что делаю аддон к AE2.
Есть лимит пакета, 32к.
Вопрос: как заюзать CompressedStreamTools#writeCompressed для NBTTagCompound и PacketBuff?
Данный код был взят из мода AE2, в котором все корректно работает.
Код:
@Override
public void fromBytes(ByteBuf buf) {
final ByteArrayInputStream bytes = this.getPacketByteArray( buf );
bytes.skip( buf.readerIndex() );
try {
tag = CompressedStreamTools.readCompressed( bytes );
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void toBytes(ByteBuf buf) {
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
final DataOutputStream outputStream = new DataOutputStream( bytes );
try {
CompressedStreamTools.writeCompressed( tag, outputStream );
} catch (IOException e) {
e.printStackTrace();
}
buf.writeBytes( bytes.toByteArray() );
buf.capacity( buf.readableBytes() );
}
public ByteArrayInputStream getPacketByteArray( ByteBuf stream )
{
return this.getPacketByteArray( stream, 0, stream.readableBytes() );
}
public ByteArrayInputStream getPacketByteArray( ByteBuf stream, int readerIndex, int readableBytes )
{
final ByteArrayInputStream bytes;
if( stream.hasArray() )
{
bytes = new ByteArrayInputStream( stream.array(), readerIndex, readableBytes );
}
else
{
byte[] data = new byte[stream.capacity()];
stream.getBytes( readerIndex, data, 0, readableBytes );
bytes = new ByteArrayInputStream( data );
}
return bytes;
}
Но, у при копипасте получаю ошибку в чтении:
Код:
java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
at net.minecraft.nbt.CompressedStreamTools.readCompressed(CompressedStreamTools.java:29)
P.S. Это вроде не считается "помощь в декомпилировании" и тому подобное. Хотя бы потому что делаю аддон к AE2.