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