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 }