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 }