    001package net.minecraft.command;
    002
    003import java.util.List;
    004import net.minecraft.entity.player.EntityPlayerMP;
    005import net.minecraft.server.MinecraftServer;
    006import net.minecraft.server.management.BanEntry;
    007
    008public class CommandServerBan extends CommandBase
    009{
    010    public String getCommandName()
    011    {
    012        return "ban";
    013    }
    014
    015    /**
    016     * Return the required permission level for this command.
    017     */
    018    public int getRequiredPermissionLevel()
    019    {
    020        return 3;
    021    }
    022
    023    public String getCommandUsage(ICommandSender par1ICommandSender)
    024    {
    025        return par1ICommandSender.translateString("commands.ban.usage", new Object[0]);
    026    }
    027
    028    /**
    029     * Returns true if the given command sender is allowed to use this command.
    030     */
    031    public boolean canCommandSenderUseCommand(ICommandSender par1ICommandSender)
    032    {
    033        return MinecraftServer.getServer().getConfigurationManager().getBannedPlayers().isListActive() && super.canCommandSenderUseCommand(par1ICommandSender);
    034    }
    035
    036    public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
    037    {
    038        if (par2ArrayOfStr.length >= 1 && par2ArrayOfStr[0].length() > 0)
    039        {
    040            EntityPlayerMP entityplayermp = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par2ArrayOfStr[0]);
    041            BanEntry banentry = new BanEntry(par2ArrayOfStr[0]);
    042            banentry.setBannedBy(par1ICommandSender.getCommandSenderName());
    043
    044            if (par2ArrayOfStr.length >= 2)
    045            {
    046                banentry.setBanReason(func_82360_a(par1ICommandSender, par2ArrayOfStr, 1));
    047            }
    048
    049            MinecraftServer.getServer().getConfigurationManager().getBannedPlayers().put(banentry);
    050
    051            if (entityplayermp != null)
    052            {
    053                entityplayermp.playerNetServerHandler.kickPlayerFromServer("You are banned from this server.");
    054            }
    055
    056            notifyAdmins(par1ICommandSender, "commands.ban.success", new Object[] {par2ArrayOfStr[0]});
    057        }
    058        else
    059        {
    060            throw new WrongUsageException("commands.ban.usage", new Object[0]);
    061        }
    062    }
    063
    064    /**
    065     * Adds the strings available in this command to the given list of tab completion options.
    066     */
    067    public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
    068    {
    069        return par2ArrayOfStr.length >= 1 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getAllUsernames()) : null;
    070    }
    071}