001    package net.minecraft.command;
002    
003    import java.util.List;
004    import java.util.Random;
005    import net.minecraft.server.MinecraftServer;
006    import net.minecraft.world.WorldServer;
007    import net.minecraft.world.storage.WorldInfo;
008    
009    public class CommandWeather extends CommandBase
010    {
011        public String getCommandName()
012        {
013            return "weather";
014        }
015    
016        /**
017         * Return the required permission level for this command.
018         */
019        public int getRequiredPermissionLevel()
020        {
021            return 2;
022        }
023    
024        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
025        {
026            if (par2ArrayOfStr.length < 1)
027            {
028                throw new WrongUsageException("commands.weather.usage", new Object[0]);
029            }
030            else
031            {
032                int var3 = (300 + (new Random()).nextInt(600)) * 20;
033    
034                if (par2ArrayOfStr.length >= 2)
035                {
036                    var3 = parseIntBounded(par1ICommandSender, par2ArrayOfStr[1], 1, 1000000) * 20;
037                }
038    
039                WorldServer var4 = MinecraftServer.getServer().worldServers[0];
040                WorldInfo var5 = var4.getWorldInfo();
041                var5.setRainTime(var3);
042                var5.setThunderTime(var3);
043    
044                if ("clear".equalsIgnoreCase(par2ArrayOfStr[0]))
045                {
046                    var5.setRaining(false);
047                    var5.setThundering(false);
048                    notifyAdmins(par1ICommandSender, "commands.weather.clear", new Object[0]);
049                }
050                else if ("rain".equalsIgnoreCase(par2ArrayOfStr[0]))
051                {
052                    var5.setRaining(true);
053                    var5.setThundering(false);
054                    notifyAdmins(par1ICommandSender, "commands.weather.rain", new Object[0]);
055                }
056                else if ("thunder".equalsIgnoreCase(par2ArrayOfStr[0]))
057                {
058                    var5.setRaining(true);
059                    var5.setThundering(true);
060                    notifyAdmins(par1ICommandSender, "commands.weather.thunder", new Object[0]);
061                }
062            }
063        }
064    
065        /**
066         * Adds the strings available in this command to the given list of tab completion options.
067         */
068        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
069        {
070            return par2ArrayOfStr.length == 1 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"clear", "rain", "thunder"}): null;
071        }
072    }