package matteroverdrive.network.packet.server; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import matteroverdrive.data.ItemPattern; import matteroverdrive.network.packet.TileEntityUpdatePacket; import matteroverdrive.tile.TileEntityMachinePatternMonitor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import java.util.ArrayList; import java.util.List; /** * Created by Simeon on 4/26/2015. */ public class PacketPatternMonitorCommands extends TileEntityUpdatePacket { public static final int COMMAND_SEARCH = 0; public static final int COMMAND_REQUEST = 1; int command; List<ItemPattern> patterns; public PacketPatternMonitorCommands() { super(); patterns = new ArrayList<>(); } public PacketPatternMonitorCommands(TileEntityMachinePatternMonitor monitor,int command,List<ItemPattern> patterns) { super(monitor); this.command = command; this.patterns = patterns; } @Override public void fromBytes(ByteBuf buf) { super.fromBytes(buf); command = buf.readInt(); if (command == COMMAND_REQUEST) { int size = buf.readInt(); for (int i = 0; i < size; i++) { patterns.add(new ItemPattern(buf)); } } } @Override public void toBytes(ByteBuf buf) { super.toBytes(buf); buf.writeInt(command); if (command == COMMAND_REQUEST) { buf.writeInt(patterns.size()); for (ItemPattern pattern : patterns) { pattern.writeToBuffer(buf); } } } public static class ServerHandler extends AbstractServerPacketHandler<PacketPatternMonitorCommands> { @Override public IMessage handleServerMessage(EntityPlayer player, PacketPatternMonitorCommands message, MessageContext ctx) { TileEntity entity = message.getTileEntity(player.worldObj); if (entity != null && entity instanceof TileEntityMachinePatternMonitor) { TileEntityMachinePatternMonitor monitor = (TileEntityMachinePatternMonitor)entity; if (message.command == COMMAND_SEARCH) { monitor.queueSearch(); } else if (message.command == COMMAND_REQUEST) { if (message.patterns != null) { monitor.queuePatternRequest(message.patterns); } } } return null; } } }