package mcjty.rftools.items.devdelight;
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.network.NetworkTools;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PacketDelightingInfoReady implements IMessage, IMessageHandler<PacketDelightingInfoReady, IMessage> {
private List<String> blockClasses;
private List<String> teClasses;
private Map<String,DelightingInfoHelper.NBTDescription> nbtData;
private int metadata;
@Override
public void fromBytes(ByteBuf buf) {
int size = buf.readInt();
blockClasses = new ArrayList<String>(size);
for (int i = 0 ; i < size ; i++) {
blockClasses.add(NetworkTools.readString(buf));
}
size = buf.readInt();
teClasses = new ArrayList<String>(size);
for (int i = 0 ; i < size ; i++) {
teClasses.add(NetworkTools.readString(buf));
}
size = buf.readInt();
nbtData = new HashMap<String, DelightingInfoHelper.NBTDescription>(size);
for (int i = 0 ; i < size ; i++) {
String key = NetworkTools.readString(buf);
String type = NetworkTools.readString(buf);
String value = NetworkTools.readString(buf);
nbtData.put(key, new DelightingInfoHelper.NBTDescription(type, value));
}
metadata = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(blockClasses.size());
for (String c : blockClasses) {
NetworkTools.writeString(buf, c);
}
buf.writeInt(teClasses.size());
for (String c : teClasses) {
NetworkTools.writeString(buf, c);
}
buf.writeInt(nbtData.size());
for (Map.Entry<String,DelightingInfoHelper.NBTDescription> me : nbtData.entrySet()) {
String key = me.getKey();
DelightingInfoHelper.NBTDescription value = me.getValue();
NetworkTools.writeString(buf, key);
NetworkTools.writeString(buf, value.getType());
NetworkTools.writeString(buf, value.getValue());
}
buf.writeInt(metadata);
}
public PacketDelightingInfoReady() {
}
public PacketDelightingInfoReady(List<String> blockClasses, List<String> teClasses, Map<String,DelightingInfoHelper.NBTDescription> nbtData, int metadata) {
this.blockClasses = new ArrayList<String>(blockClasses);
this.teClasses = new ArrayList<String>(teClasses);
this.nbtData = new HashMap<String, DelightingInfoHelper.NBTDescription>(nbtData);
this.metadata = metadata;
}
@Override
public IMessage onMessage(PacketDelightingInfoReady message, MessageContext ctx) {
GuiDevelopersDelight.setServerBlockClasses(message.blockClasses);
GuiDevelopersDelight.setServerTEClasses(message.teClasses);
GuiDevelopersDelight.setServerNBTData(message.nbtData);
GuiDevelopersDelight.setMetadata(message.metadata);
return null;
}
}