001    package net.minecraft.src;
002    
003    import java.util.List;
004    import net.minecraft.server.MinecraftServer;
005    
006    public class CommandTime extends CommandBase
007    {
008        public String getCommandName()
009        {
010            return "time";
011        }
012    
013        /**
014         * Return the required permission level for this command.
015         */
016        public int getRequiredPermissionLevel()
017        {
018            return 2;
019        }
020    
021        public String getCommandUsage(ICommandSender par1ICommandSender)
022        {
023            return par1ICommandSender.translateString("commands.time.usage", new Object[0]);
024        }
025    
026        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
027        {
028            if (par2ArrayOfStr.length > 1)
029            {
030                int var3;
031    
032                if (par2ArrayOfStr[0].equals("set"))
033                {
034                    if (par2ArrayOfStr[1].equals("day"))
035                    {
036                        var3 = 0;
037                    }
038                    else if (par2ArrayOfStr[1].equals("night"))
039                    {
040                        var3 = 12500;
041                    }
042                    else
043                    {
044                        var3 = parseIntWithMin(par1ICommandSender, par2ArrayOfStr[1], 0);
045                    }
046    
047                    this.setTime(par1ICommandSender, var3);
048                    notifyAdmins(par1ICommandSender, "commands.time.set", new Object[] {Integer.valueOf(var3)});
049                    return;
050                }
051    
052                if (par2ArrayOfStr[0].equals("add"))
053                {
054                    var3 = parseIntWithMin(par1ICommandSender, par2ArrayOfStr[1], 0);
055                    this.addTime(par1ICommandSender, var3);
056                    notifyAdmins(par1ICommandSender, "commands.time.added", new Object[] {Integer.valueOf(var3)});
057                    return;
058                }
059            }
060    
061            throw new WrongUsageException("commands.time.usage", new Object[0]);
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, new String[] {"set", "add"}): (par2ArrayOfStr.length == 2 && par2ArrayOfStr[0].equals("set") ? getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"day", "night"}): null);
070        }
071    
072        /**
073         * Set the time in the server object.
074         */
075        protected void setTime(ICommandSender par1ICommandSender, int par2)
076        {
077            for (int var3 = 0; var3 < MinecraftServer.getServer().worldServers.length; ++var3)
078            {
079                MinecraftServer.getServer().worldServers[var3].setWorldTime((long)par2);
080            }
081        }
082    
083        /**
084         * Adds (or removes) time in the server object.
085         */
086        protected void addTime(ICommandSender par1ICommandSender, int par2)
087        {
088            for (int var3 = 0; var3 < MinecraftServer.getServer().worldServers.length; ++var3)
089            {
090                WorldServer var4 = MinecraftServer.getServer().worldServers[var3];
091                var4.setWorldTime(var4.getWorldTime() + (long)par2);
092            }
093        }
094    }