package buildcraft.core.tablet;
import java.io.IOException;
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTSizeTracker;
import net.minecraft.nbt.NBTTagCompound;
import buildcraft.api.core.BCLog;
import buildcraft.core.lib.network.Packet;
import buildcraft.core.network.PacketIds;
public class PacketTabletMessage extends Packet {
private NBTTagCompound tag;
public PacketTabletMessage() {
tag = new NBTTagCompound();
}
public PacketTabletMessage(NBTTagCompound tag) {
this.tag = tag;
}
@Override
public int getID() {
return PacketIds.TABLET_MESSAGE;
}
public NBTTagCompound getTag() {
return tag;
}
@Override
public void readData(ByteBuf data) {
int length = data.readUnsignedShort();
byte[] compressed = new byte[length];
data.readBytes(compressed);
try {
this.tag = CompressedStreamTools.func_152457_a(compressed, NBTSizeTracker.field_152451_a);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void writeData(ByteBuf data) {
try {
byte[] compressed = CompressedStreamTools.compress(tag);
if (compressed.length > 65535) {
BCLog.logger.error("NBT data is too large (" + compressed.length + " > 65535)! Please report!");
}
data.writeShort(compressed.length);
data.writeBytes(compressed);
} catch (IOException e) {
e.printStackTrace();
}
}
}