Java tutorial
/* * This file is part of Storehouse. Copyright (c) 2016, TheRogue, All rights reserved. * * Storehouse is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. * * Storehouse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with Storehouse. If not, see <http://www.gnu.org/licenses/gpl>. */ package therogue.storehouse.network; import java.io.IOException; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; import io.netty.buffer.ByteBufOutputStream; import io.netty.handler.codec.EncoderException; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTSizeTracker; import net.minecraft.nbt.NBTTagCompound; public class NetworkUtils { public static void writeNBTTagCompoundToBuffer(ByteBuf buf, NBTTagCompound nbt) { if (nbt == null) { buf.writeByte(0); } else { try { CompressedStreamTools.write(nbt, new ByteBufOutputStream(buf)); } catch (IOException ioexception) { throw new EncoderException(ioexception); } } } public static NBTTagCompound readNBTTagCompound(ByteBuf buf) { int i = buf.readerIndex(); byte b0 = buf.readByte(); if (b0 == 0) { return null; } else { buf.readerIndex(i); try { return CompressedStreamTools.read(new ByteBufInputStream(buf), new NBTSizeTracker(2097152L)); } catch (IOException ioexception) { throw new EncoderException(ioexception); } } } }