package matteroverdrive.network.packet.client;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf;
import matteroverdrive.api.network.IMatterNetworkDispatcher;
import matteroverdrive.matter_network.MatterNetworkTaskQueue;
import matteroverdrive.network.packet.TileEntityUpdatePacket;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
/**
* Created by Simeon on 12/30/2015.
*/
public class PacketSyncTaskQueue extends TileEntityUpdatePacket
{
int queueID;
ByteBuf byteBuf;
MatterNetworkTaskQueue taskQueue;
public PacketSyncTaskQueue(){}
public PacketSyncTaskQueue(IMatterNetworkDispatcher tileEntity, int taskQueue)
{
super(tileEntity.getPosition().x,tileEntity.getPosition().y,tileEntity.getPosition().z);
this.taskQueue = tileEntity.getTaskQueue(taskQueue);
this.queueID = taskQueue;
}
@Override
public void fromBytes(ByteBuf buf)
{
super.fromBytes(buf);
queueID = buf.readByte();
byteBuf = buf;
}
@Override
public void toBytes(ByteBuf buf)
{
super.toBytes(buf);
buf.writeByte(queueID);
taskQueue.writeToBuffer(buf);
}
public static class ClientHandler extends AbstractClientPacketHandler<PacketSyncTaskQueue>
{
@Override
public IMessage handleClientMessage(EntityPlayer player, PacketSyncTaskQueue message, MessageContext ctx)
{
TileEntity tileEntity = message.getTileEntity(player.worldObj);
if (tileEntity != null && tileEntity instanceof IMatterNetworkDispatcher)
{
((IMatterNetworkDispatcher) tileEntity).getTaskQueue(message.queueID).readFromBuffer(message.byteBuf);
}
return null;
}
}
}