package pneumaticCraft.common.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.ChunkPosition;
import pneumaticCraft.client.gui.GuiRemote;
import pneumaticCraft.common.remote.GlobalVariableManager;
import cpw.mods.fml.common.network.ByteBufUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class PacketSetGlobalVariable extends AbstractPacket<PacketSetGlobalVariable>{
private String varName;
private ChunkPosition value;
public PacketSetGlobalVariable(){}
public PacketSetGlobalVariable(String varName, ChunkPosition value){
this.varName = varName;
this.value = value;
}
public PacketSetGlobalVariable(String varName, int value){
this(varName, new ChunkPosition(value, 0, 0));
}
public PacketSetGlobalVariable(String varName, boolean value){
this(varName, value ? 1 : 0);
}
@Override
public void fromBytes(ByteBuf buf){
varName = ByteBufUtils.readUTF8String(buf);
value = new ChunkPosition(buf.readInt(), buf.readInt(), buf.readInt());
}
@Override
public void toBytes(ByteBuf buf){
ByteBufUtils.writeUTF8String(buf, varName);
buf.writeInt(value.chunkPosX);
buf.writeInt(value.chunkPosY);
buf.writeInt(value.chunkPosZ);
}
@Override
@SideOnly(Side.CLIENT)
public void handleClientSide(PacketSetGlobalVariable message, EntityPlayer player){
handleServerSide(message, player);
GuiScreen screen = Minecraft.getMinecraft().currentScreen;
if(screen instanceof GuiRemote) {
((GuiRemote)screen).onGlobalVariableChange(message.varName);
}
}
@Override
public void handleServerSide(PacketSetGlobalVariable message, EntityPlayer player){
GlobalVariableManager.getInstance().set(message.varName, message.value);
}
}