package com.fredtargaryen.floocraft.network.messages; import com.fredtargaryen.floocraft.client.gui.GuiTeleport; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MessageFireplaceList implements IMessage, IMessageHandler<MessageFireplaceList, IMessage> { public HashMap<String, int[]> placeList; public List<Boolean> enabledList; @Override public IMessage onMessage(final MessageFireplaceList message, MessageContext ctx) { final IThreadListener clientListener = Minecraft.getMinecraft(); clientListener.addScheduledTask(new Runnable() { @Override public void run() { GuiScreen s = ((Minecraft)clientListener).currentScreen; if(s instanceof GuiTeleport) { ((GuiTeleport) s).onMessageReceived(message); } } }); return null; } @Override public void fromBytes(ByteBuf buf) { this.placeList = new HashMap<String, int[]>(); this.enabledList = new ArrayList<Boolean>(); int y = buf.readInt(); if(y > 0) { for(int x = 0; x < y; x++) { int nameLength = buf.readInt(); String name = new String(buf.readBytes(nameLength).array()); int[] coords = new int[]{buf.readInt(), buf.readInt(), buf.readInt()}; this.placeList.put(name, coords); this.enabledList.add(buf.readBoolean()); } } } @Override public void toBytes(ByteBuf buf) { int y = this.placeList.size(); buf.writeInt(y); int keyCount = 0; for(String s : this.placeList.keySet()) { buf.writeInt(s.length()); buf.writeBytes(s.getBytes()); int[] coords = this.placeList.get(s); buf.writeInt(coords[0]); buf.writeInt(coords[1]); buf.writeInt(coords[2]); buf.writeBoolean(this.enabledList.get(keyCount)); keyCount++; } } }