/** * Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team * http://www.mod-buildcraft.com * <p/> * BuildCraft is distributed under the terms of the Minecraft Mod Public * License 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ package buildcraft.core.lib.network; 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; public class PacketNBT extends PacketCoordinates { private NBTTagCompound nbttagcompound; public PacketNBT() { } public PacketNBT(int id, NBTTagCompound nbttagcompound, int xCoord, int yCoord, int zCoord) { super(id, xCoord, yCoord, zCoord); this.nbttagcompound = nbttagcompound; } @Override public void writeData(ByteBuf data) { super.writeData(data); try { byte[] compressed = CompressedStreamTools.compress(nbttagcompound); 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(); } } @Override public void readData(ByteBuf data) { super.readData(data); int length = data.readUnsignedShort(); byte[] compressed = new byte[length]; data.readBytes(compressed); try { this.nbttagcompound = CompressedStreamTools.func_152457_a(compressed, NBTSizeTracker.field_152451_a); } catch (IOException e) { e.printStackTrace(); } } public NBTTagCompound getTagCompound() { return this.nbttagcompound; } }