001package net.minecraft.command;
002
003import java.util.List;
004import net.minecraft.server.MinecraftServer;
005import net.minecraft.world.GameRules;
006
007public 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 s;
030
031        if (par2ArrayOfStr.length == 2)
032        {
033            s = par2ArrayOfStr[0];
034            String s1 = par2ArrayOfStr[1];
035            GameRules gamerules = this.getGameRules();
036
037            if (gamerules.hasRule(s))
038            {
039                gamerules.setOrCreateGameRule(s, s1);
040                notifyAdmins(par1ICommandSender, "commands.gamerule.success", new Object[0]);
041            }
042            else
043            {
044                notifyAdmins(par1ICommandSender, "commands.gamerule.norule", new Object[] {s});
045            }
046        }
047        else if (par2ArrayOfStr.length == 1)
048        {
049            s = par2ArrayOfStr[0];
050            GameRules gamerules1 = this.getGameRules();
051
052            if (gamerules1.hasRule(s))
053            {
054                String s2 = gamerules1.getGameRuleStringValue(s);
055                par1ICommandSender.sendChatToPlayer(s + " = " + s2);
056            }
057            else
058            {
059                notifyAdmins(par1ICommandSender, "commands.gamerule.norule", new Object[] {s});
060            }
061        }
062        else if (par2ArrayOfStr.length == 0)
063        {
064            GameRules gamerules2 = this.getGameRules();
065            par1ICommandSender.sendChatToPlayer(joinNiceString(gamerules2.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}