package mcjty.rftools.dimension.network; import cpw.mods.fml.common.network.simpleimpl.IMessage; import io.netty.buffer.ByteBuf; import mcjty.lib.network.NetworkTools; import mcjty.lib.varia.Logging; import mcjty.rftools.items.dimlets.DimletKey; import mcjty.rftools.items.dimlets.DimletType; import java.util.HashMap; import java.util.Map; public class PacketCheckDimletConfig implements IMessage { private Map<Integer, DimletKey> dimlets; @Override public void fromBytes(ByteBuf buf) { int size = buf.readInt(); dimlets = new HashMap<Integer, DimletKey>(); for (int i = 0 ; i < size ; i++) { int id = buf.readInt(); String name = NetworkTools.readString(buf); int typeOrdinal = buf.readInt(); try { dimlets.put(id, new DimletKey(DimletType.values()[typeOrdinal], name)); } catch (Exception e) { Logging.logError("INTERNAL ERROR: name=" + name + ", i=" + i + ", size=" + size + "!"); throw new RuntimeException(e); } } } @Override public void toBytes(ByteBuf buf) { buf.writeInt(dimlets.size()); for (Map.Entry<Integer,DimletKey> me : dimlets.entrySet()) { DimletKey key = me.getValue(); buf.writeInt(me.getKey()); NetworkTools.writeString(buf, key.getName()); buf.writeInt(key.getType().ordinal()); } } public Map<Integer, DimletKey> getDimlets() { return dimlets; } public PacketCheckDimletConfig() { } public PacketCheckDimletConfig(Map<Integer, DimletKey> dimlets) { this.dimlets = new HashMap<Integer, DimletKey>(dimlets); } }