package emasher.packethandling; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import emasher.api.SideConfig; import emasher.tileentities.TileSocket; import io.netty.buffer.ByteBuf; public class SocketStateMessage implements IMessage { public byte[] msg; byte side; TileSocket ts; public SocketStateMessage() { } public SocketStateMessage( TileSocket ts, byte side ) { this.ts = ts; this.side = side; } @Override public void fromBytes( ByteBuf buf ) { msg = new byte[buf.capacity()]; buf.readBytes( msg ); } @Override public void toBytes( ByteBuf buf ) { buf.capacity( 36 ); SideConfig c = ts.configs[side]; byte[] out = new byte[36]; out[0] = 0; out[2] = ( byte ) c.tank; out[3] = ( byte ) c.inventory; out[4] = ( byte ) ts.rsIndicatorIndex( side ); out[5] = ( byte ) ts.latchIndicatorIndex( side ); NetworkUtilities.toByte( out, c.meta, 6 ); NetworkUtilities.toByte( out, ts.xCoord, 10 ); NetworkUtilities.toByte( out, ts.yCoord, 14 ); NetworkUtilities.toByte( out, ts.zCoord, 18 ); NetworkUtilities.toByte( out, ts.facID[side], 27 ); NetworkUtilities.toByte( out, ts.facMeta[side], 31 ); out[1] = ( byte ) side; NetworkUtilities.toByte( out, ts.sides[side], 22 ); out[26] = NetworkUtilities.boolToByte( ts.sideLocked[side] ); buf.writeBytes( out ); msg = out; } public static class Handler implements IMessageHandler<SocketStateMessage, IMessage> { @Override public IMessage onMessage( SocketStateMessage message, MessageContext ctx ) { Handlers.onSocketStateMessage( message, ctx ); return null; } } }