package net.minecraft.world; import java.util.Iterator; import java.util.Set; import java.util.TreeMap; import net.minecraft.nbt.NBTTagCompound; public class GameRules { private TreeMap theGameRules = new TreeMap(); private static final String __OBFID = "CL_00000136"; public GameRules() { this.addGameRule("doFireTick", "true"); this.addGameRule("mobGriefing", "true"); this.addGameRule("keepInventory", "false"); this.addGameRule("doMobSpawning", "true"); this.addGameRule("doMobLoot", "true"); this.addGameRule("doTileDrops", "true"); this.addGameRule("commandBlockOutput", "true"); this.addGameRule("naturalRegeneration", "true"); this.addGameRule("doDaylightCycle", "true"); } /** * Define a game rule and its default value. */ public void addGameRule(String p_82769_1_, String p_82769_2_) { this.theGameRules.put(p_82769_1_, new GameRules.Value(p_82769_2_)); } public void setOrCreateGameRule(String p_82764_1_, String p_82764_2_) { GameRules.Value value = (GameRules.Value)this.theGameRules.get(p_82764_1_); if (value != null) { value.setValue(p_82764_2_); } else { this.addGameRule(p_82764_1_, p_82764_2_); } } /** * Gets the string Game Rule value. */ public String getGameRuleStringValue(String p_82767_1_) { GameRules.Value value = (GameRules.Value)this.theGameRules.get(p_82767_1_); return value != null ? value.getGameRuleStringValue() : ""; } /** * Gets the boolean Game Rule value. */ public boolean getGameRuleBooleanValue(String p_82766_1_) { GameRules.Value value = (GameRules.Value)this.theGameRules.get(p_82766_1_); return value != null ? value.getGameRuleBooleanValue() : false; } /** * Return the defined game rules as NBT. */ public NBTTagCompound writeGameRulesToNBT() { NBTTagCompound nbttagcompound = new NBTTagCompound(); Iterator iterator = this.theGameRules.keySet().iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); GameRules.Value value = (GameRules.Value)this.theGameRules.get(s); nbttagcompound.setString(s, value.getGameRuleStringValue()); } return nbttagcompound; } /** * Set defined game rules from NBT. */ public void readGameRulesFromNBT(NBTTagCompound p_82768_1_) { Set set = p_82768_1_.getKeySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); String s1 = p_82768_1_.getString(s); this.setOrCreateGameRule(s, s1); } } /** * Return the defined game rules. */ public String[] getRules() { return (String[])this.theGameRules.keySet().toArray(new String[0]); } /** * Return whether the specified game rule is defined. */ public boolean hasRule(String p_82765_1_) { return this.theGameRules.containsKey(p_82765_1_); } static class Value { private String valueString; private boolean valueBoolean; private int valueInteger; private double valueDouble; private static final String __OBFID = "CL_00000137"; public Value(String p_i1949_1_) { this.setValue(p_i1949_1_); } /** * Set this game rule value. */ public void setValue(String p_82757_1_) { this.valueString = p_82757_1_; this.valueBoolean = Boolean.parseBoolean(p_82757_1_); try { this.valueInteger = Integer.parseInt(p_82757_1_); } catch (NumberFormatException numberformatexception1) { ; } try { this.valueDouble = Double.parseDouble(p_82757_1_); } catch (NumberFormatException numberformatexception) { ; } } /** * Gets the GameRule's value as String. */ public String getGameRuleStringValue() { return this.valueString; } /** * Gets the GameRule's value as boolean. */ public boolean getGameRuleBooleanValue() { return this.valueBoolean; } } }