001    package net.minecraft.command;
002    
003    import java.util.List;
004    import net.minecraft.entity.player.EntityPlayerMP;
005    import net.minecraft.server.MinecraftServer;
006    import net.minecraft.server.management.BanEntry;
007    
008    public 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 var3 = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par2ArrayOfStr[0]);
041                BanEntry var4 = new BanEntry(par2ArrayOfStr[0]);
042                var4.setBannedBy(par1ICommandSender.getCommandSenderName());
043    
044                if (par2ArrayOfStr.length >= 2)
045                {
046                    var4.setBanReason(func_82360_a(par1ICommandSender, par2ArrayOfStr, 1));
047                }
048    
049                MinecraftServer.getServer().getConfigurationManager().getBannedPlayers().put(var4);
050    
051                if (var3 != null)
052                {
053                    var3.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    }