package mcjty.rftools.blocks.teleporter;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import io.netty.buffer.ByteBuf;
import mcjty.lib.network.CommandHandler;
import mcjty.lib.network.NetworkTools;
import mcjty.lib.network.PacketRequestListFromServer;
import mcjty.lib.varia.Logging;
import net.minecraft.tileentity.TileEntity;
import java.util.List;
public class PacketGetPlayers extends PacketRequestListFromServer<PlayerName, PacketGetPlayers, PacketPlayersReady> {
private String clientcmd;
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
clientcmd = NetworkTools.readString(buf);
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
NetworkTools.writeString(buf, clientcmd);
}
public PacketGetPlayers() {
}
public PacketGetPlayers(int x, int y, int z, String cmd, String clientcmd) {
super(x, y, z, cmd);
this.clientcmd = clientcmd;
}
@Override
public PacketPlayersReady onMessage(PacketGetPlayers message, MessageContext ctx) {
TileEntity te = ctx.getServerHandler().playerEntity.worldObj.getTileEntity(message.x, message.y, message.z);
if(!(te instanceof CommandHandler)) {
Logging.log("createStartScanPacket: TileEntity is not a CommandHandler!");
return null;
}
CommandHandler commandHandler = (CommandHandler) te;
List<PlayerName> list = (List<PlayerName>) commandHandler.executeWithResultList(message.command, message.args);
if (list == null) {
Logging.log("Command " + message.command + " was not handled!");
return null;
}
return new PacketPlayersReady(message.x, message.y, message.z, message.clientcmd, list);
}
@Override
protected PacketPlayersReady createMessageToClient(int x, int y, int z, List<PlayerName> result) {
throw new RuntimeException("Something is wrong. Code should never come here!");
}
}