    001    package net.minecraft.command;
    002
    003    import java.util.List;
    004    import net.minecraft.server.MinecraftServer;
    005    import net.minecraft.world.GameRules;
    006
    007    public class CommandGameRule extends CommandBase
    008    {
    009        public String getCommandName()
    010        {
    011            return "gamerule";
    012        }
    013
    014        /**
    015         * Return the required permission level for this command.
    016         */
    017        public int getRequiredPermissionLevel()
    018        {
    019            return 2;
    020        }
    021
    022        public String getCommandUsage(ICommandSender par1ICommandSender)
    023        {
    024            return par1ICommandSender.translateString("commands.gamerule.usage", new Object[0]);
    025        }
    026
    027        public void processCommand(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
    028        {
    029            String var6;
    030
    031            if (par2ArrayOfStr.length == 2)
    032            {
    033                var6 = par2ArrayOfStr[0];
    034                String var7 = par2ArrayOfStr[1];
    035                GameRules var8 = this.getGameRules();
    036
    037                if (var8.hasRule(var6))
    038                {
    039                    var8.setOrCreateGameRule(var6, var7);
    040                    notifyAdmins(par1ICommandSender, "commands.gamerule.success", new Object[0]);
    041                }
    042                else
    043                {
    044                    notifyAdmins(par1ICommandSender, "commands.gamerule.norule", new Object[] {var6});
    045                }
    046            }
    047            else if (par2ArrayOfStr.length == 1)
    048            {
    049                var6 = par2ArrayOfStr[0];
    050                GameRules var4 = this.getGameRules();
    051
    052                if (var4.hasRule(var6))
    053                {
    054                    String var5 = var4.getGameRuleStringValue(var6);
    055                    par1ICommandSender.sendChatToPlayer(var6 + " = " + var5);
    056                }
    057                else
    058                {
    059                    notifyAdmins(par1ICommandSender, "commands.gamerule.norule", new Object[] {var6});
    060                }
    061            }
    062            else if (par2ArrayOfStr.length == 0)
    063            {
    064                GameRules var3 = this.getGameRules();
    065                par1ICommandSender.sendChatToPlayer(joinNiceString(var3.getRules()));
    066            }
    067            else
    068            {
    069                throw new WrongUsageException("commands.gamerule.usage", new Object[0]);
    070            }
    071        }
    072
    073        /**
    074         * Adds the strings available in this command to the given list of tab completion options.
    075         */
    076        public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
    077        {
    078            return par2ArrayOfStr.length == 1 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, this.getGameRules().getRules()) : (par2ArrayOfStr.length == 2 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"true", "false"}): null);
    079        }
    080
    081        /**
    082         * Return the game rule set this command should be able to manipulate.
    083         */
    084        private GameRules getGameRules()
    085        {
    086            return MinecraftServer.getServer().worldServerForDimension(0).getGameRules();
    087        }
    088    }