001    package net.minecraft.command;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    import net.minecraft.server.MinecraftServer;
006    
007    public class CommandServerWhitelist extends CommandBase
008    {
009        public String getCommandName()
010        {
011            return "whitelist";
012        }
013    
014        /**
015         * Return the required permission level for this command.
016         */
017        public int getRequiredPermissionLevel()
018        {
019            return 3;
020        }
021    
022        public String getCommandUsage(ICommandSender par1ICommandSender)
023        {
024            return par1ICommandSender.translateString("commands.whitelist.usage", new Object[0]);
025        }
026    
027        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
028        {
029            if (par2ArrayOfStr.length >= 1)
030            {
031                if (par2ArrayOfStr[0].equals("on"))
032                {
033                    MinecraftServer.getServer().getConfigurationManager().setWhiteListEnabled(true);
034                    notifyAdmins(par1ICommandSender, "commands.whitelist.enabled", new Object[0]);
035                    return;
036                }
037    
038                if (par2ArrayOfStr[0].equals("off"))
039                {
040                    MinecraftServer.getServer().getConfigurationManager().setWhiteListEnabled(false);
041                    notifyAdmins(par1ICommandSender, "commands.whitelist.disabled", new Object[0]);
042                    return;
043                }
044    
045                if (par2ArrayOfStr[0].equals("list"))
046                {
047                    par1ICommandSender.sendChatToPlayer(par1ICommandSender.translateString("commands.whitelist.list", new Object[] {Integer.valueOf(MinecraftServer.getServer().getConfigurationManager().getWhiteListedPlayers().size()), Integer.valueOf(MinecraftServer.getServer().getConfigurationManager().getAvailablePlayerDat().length)}));
048                    par1ICommandSender.sendChatToPlayer(joinNiceString(MinecraftServer.getServer().getConfigurationManager().getWhiteListedPlayers().toArray(new String[0])));
049                    return;
050                }
051    
052                if (par2ArrayOfStr[0].equals("add"))
053                {
054                    if (par2ArrayOfStr.length < 2)
055                    {
056                        throw new WrongUsageException("commands.whitelist.add.usage", new Object[0]);
057                    }
058    
059                    MinecraftServer.getServer().getConfigurationManager().addToWhiteList(par2ArrayOfStr[1]);
060                    notifyAdmins(par1ICommandSender, "commands.whitelist.add.success", new Object[] {par2ArrayOfStr[1]});
061                    return;
062                }
063    
064                if (par2ArrayOfStr[0].equals("remove"))
065                {
066                    if (par2ArrayOfStr.length < 2)
067                    {
068                        throw new WrongUsageException("commands.whitelist.remove.usage", new Object[0]);
069                    }
070    
071                    MinecraftServer.getServer().getConfigurationManager().removeFromWhitelist(par2ArrayOfStr[1]);
072                    notifyAdmins(par1ICommandSender, "commands.whitelist.remove.success", new Object[] {par2ArrayOfStr[1]});
073                    return;
074                }
075    
076                if (par2ArrayOfStr[0].equals("reload"))
077                {
078                    MinecraftServer.getServer().getConfigurationManager().loadWhiteList();
079                    notifyAdmins(par1ICommandSender, "commands.whitelist.reloaded", new Object[0]);
080                    return;
081                }
082            }
083    
084            throw new WrongUsageException("commands.whitelist.usage", new Object[0]);
085        }
086    
087        /**
088         * Adds the strings available in this command to the given list of tab completion options.
089         */
090        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
091        {
092            if (par2ArrayOfStr.length == 1)
093            {
094                return getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"on", "off", "list", "add", "remove", "reload"});
095            }
096            else
097            {
098                if (par2ArrayOfStr.length == 2)
099                {
100                    if (par2ArrayOfStr[0].equals("add"))
101                    {
102                        String[] var3 = MinecraftServer.getServer().getConfigurationManager().getAvailablePlayerDat();
103                        ArrayList var4 = new ArrayList();
104                        String var5 = par2ArrayOfStr[par2ArrayOfStr.length - 1];
105                        String[] var6 = var3;
106                        int var7 = var3.length;
107    
108                        for (int var8 = 0; var8 < var7; ++var8)
109                        {
110                            String var9 = var6[var8];
111    
112                            if (doesStringStartWith(var5, var9) && !MinecraftServer.getServer().getConfigurationManager().getWhiteListedPlayers().contains(var9))
113                            {
114                                var4.add(var9);
115                            }
116                        }
117    
118                        return var4;
119                    }
120    
121                    if (par2ArrayOfStr[0].equals("remove"))
122                    {
123                        return getListOfStringsFromIterableMatchingLastWord(par2ArrayOfStr, MinecraftServer.getServer().getConfigurationManager().getWhiteListedPlayers());
124                    }
125                }
126    
127                return null;
128            }
129        }
130    }