package mcjty.rftools.items.netmonitor; 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 io.netty.buffer.ByteBuf; import mcjty.lib.varia.Coordinate; import mcjty.rftools.BlockInfo; import java.util.HashMap; import java.util.Map; public class PacketConnectedBlocksReady implements IMessage, IMessageHandler<PacketConnectedBlocksReady, IMessage> { private int minx; private int miny; private int minz; private Map<Coordinate,BlockInfo> blockInfoMap; @Override public void fromBytes(ByteBuf buf) { minx = buf.readInt(); miny = buf.readInt(); minz = buf.readInt(); int size = buf.readInt(); blockInfoMap = new HashMap<Coordinate, BlockInfo>(); for (int i = 0 ; i < size ; i++) { Coordinate coordinate = new Coordinate(buf.readShort() + minx, buf.readShort() + miny, buf.readShort() + minz); BlockInfo blockInfo = new BlockInfo(coordinate, buf.readInt(), buf.readInt()); blockInfoMap.put(coordinate, blockInfo); } } @Override public void toBytes(ByteBuf buf) { buf.writeInt(minx); buf.writeInt(miny); buf.writeInt(minz); buf.writeInt(blockInfoMap.size()); for (Map.Entry<Coordinate,BlockInfo> me : blockInfoMap.entrySet()) { Coordinate c = me.getKey(); buf.writeShort(c.getX() - minx); buf.writeShort(c.getY() - miny); buf.writeShort(c.getZ() - minz); buf.writeInt(me.getValue().getEnergyStored()); buf.writeInt(me.getValue().getMaxEnergyStored()); } } public PacketConnectedBlocksReady() { } public PacketConnectedBlocksReady(Map<Coordinate,BlockInfo> blockInfoMap, int minx, int miny, int minz) { this.blockInfoMap = new HashMap<Coordinate, BlockInfo>(blockInfoMap); this.minx = minx; this.miny = miny; this.minz = minz; } @Override public IMessage onMessage(PacketConnectedBlocksReady message, MessageContext ctx) { GuiNetworkMonitor.setServerConnectedBlocks(message.blockInfoMap); return null; } }