    001package net.minecraft.server.integrated;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.net.SocketAddress;
    006import net.minecraft.entity.player.EntityPlayerMP;
    007import net.minecraft.nbt.NBTTagCompound;
    008import net.minecraft.server.MinecraftServer;
    009import net.minecraft.server.management.ServerConfigurationManager;
    010
    011@SideOnly(Side.CLIENT)
    012public class IntegratedPlayerList extends ServerConfigurationManager
    013{
    014    /**
    015     * Holds the NBT data for the host player's save file, so this can be written to level.dat.
    016     */
    017    private NBTTagCompound hostPlayerData = null;
    018
    019    public IntegratedPlayerList(IntegratedServer par1IntegratedServer)
    020    {
    021        super(par1IntegratedServer);
    022        this.viewDistance = 10;
    023    }
    024
    025    /**
    026     * also stores the NBTTags if this is an intergratedPlayerList
    027     */
    028    protected void writePlayerData(EntityPlayerMP par1EntityPlayerMP)
    029    {
    030        if (par1EntityPlayerMP.getCommandSenderName().equals(this.getIntegratedServer().getServerOwner()))
    031        {
    032            this.hostPlayerData = new NBTTagCompound();
    033            par1EntityPlayerMP.writeToNBT(this.hostPlayerData);
    034        }
    035
    036        super.writePlayerData(par1EntityPlayerMP);
    037    }
    038
    039    /**
    040     * checks ban-lists, then white-lists, then space for the server. Returns null on success, or an error message
    041     */
    042    public String allowUserToConnect(SocketAddress par1SocketAddress, String par2Str)
    043    {
    044        return par2Str.equalsIgnoreCase(this.getIntegratedServer().getServerOwner()) ? "That name is already taken." : super.allowUserToConnect(par1SocketAddress, par2Str);
    045    }
    046
    047    /**
    048     * get the associated Integrated Server
    049     */
    050    public IntegratedServer getIntegratedServer()
    051    {
    052        return (IntegratedServer)super.getServerInstance();
    053    }
    054
    055    /**
    056     * On integrated servers, returns the host's player data to be written to level.dat.
    057     */
    058    public NBTTagCompound getHostPlayerData()
    059    {
    060        return this.hostPlayerData;
    061    }
    062
    063    public MinecraftServer getServerInstance()
    064    {
    065        return this.getIntegratedServer();
    066    }
    067}