001 package net.minecraft.src;
002
003 import java.util.Collection;
004 import java.util.Iterator;
005 import java.util.TreeMap;
006
007 public class GameRules
008 {
009 private TreeMap theGameRules = new TreeMap();
010
011 public GameRules()
012 {
013 this.addGameRule("doFireTick", "true");
014 this.addGameRule("mobGriefing", "true");
015 this.addGameRule("keepInventory", "false");
016 this.addGameRule("doMobSpawning", "true");
017 this.addGameRule("doMobLoot", "true");
018 this.addGameRule("doTileDrops", "true");
019 this.addGameRule("commandBlockOutput", "true");
020 }
021
022 /**
023 * Define a game rule and its default value.
024 */
025 public void addGameRule(String par1Str, String par2Str)
026 {
027 this.theGameRules.put(par1Str, new GameRuleValue(par2Str));
028 }
029
030 public void func_82764_b(String par1Str, String par2Str)
031 {
032 GameRuleValue var3 = (GameRuleValue)this.theGameRules.get(par1Str);
033
034 if (var3 != null)
035 {
036 var3.setValue(par2Str);
037 }
038 else
039 {
040 this.addGameRule(par1Str, par2Str);
041 }
042 }
043
044 /**
045 * Gets the string Game Rule value.
046 */
047 public String getGameRuleStringValue(String par1Str)
048 {
049 GameRuleValue var2 = (GameRuleValue)this.theGameRules.get(par1Str);
050 return var2 != null ? var2.getGameRuleStringValue() : "";
051 }
052
053 /**
054 * Gets the boolean Game Rule value.
055 */
056 public boolean getGameRuleBooleanValue(String par1Str)
057 {
058 GameRuleValue var2 = (GameRuleValue)this.theGameRules.get(par1Str);
059 return var2 != null ? var2.getGameRuleBooleanValue() : false;
060 }
061
062 /**
063 * Return the defined game rules as NBT.
064 */
065 public NBTTagCompound writeGameRulesToNBT()
066 {
067 NBTTagCompound var1 = new NBTTagCompound("GameRules");
068 Iterator var2 = this.theGameRules.keySet().iterator();
069
070 while (var2.hasNext())
071 {
072 String var3 = (String)var2.next();
073 GameRuleValue var4 = (GameRuleValue)this.theGameRules.get(var3);
074 var1.setString(var3, var4.getGameRuleStringValue());
075 }
076
077 return var1;
078 }
079
080 /**
081 * Set defined game rules from NBT.
082 */
083 public void readGameRulesFromNBT(NBTTagCompound par1NBTTagCompound)
084 {
085 Collection var2 = par1NBTTagCompound.getTags();
086 Iterator var3 = var2.iterator();
087
088 while (var3.hasNext())
089 {
090 NBTBase var4 = (NBTBase)var3.next();
091 String var5 = var4.getName();
092 String var6 = par1NBTTagCompound.getString(var4.getName());
093 this.func_82764_b(var5, var6);
094 }
095 }
096
097 /**
098 * Return the defined game rules.
099 */
100 public String[] getRules()
101 {
102 return (String[])this.theGameRules.keySet().toArray(new String[0]);
103 }
104
105 /**
106 * Return whether the specified game rule is defined.
107 */
108 public boolean hasRule(String par1Str)
109 {
110 return this.theGameRules.containsKey(par1Str);
111 }
112 }