gt:             this.dimension = this.playerTag.getInteger("Dimension");
context: package net.minecraft.world.storage;
  
  import com.google.common.collect.Maps;
  import java.util.Map;
  import java.util.Map.Entry;
  import javax.annotation.Nullable;
  import net.minecraft.crash.CrashReportCategory;
  import net.minecraft.crash.ICrashReportDetail;
  import net.minecraft.nbt.NBTBase;
  import net.minecraft.nbt.NBTTagCompound;
  import net.minecraft.server.MinecraftServer;
  import net.minecraft.util.datafix.DataFixer;
  import net.minecraft.util.datafix.FixTypes;
  import net.minecraft.util.datafix.IDataFixer;
  import net.minecraft.util.datafix.IDataWalker;
  import net.minecraft.util.math.BlockPos;
  import net.minecraft.world.DimensionType;
  import net.minecraft.world.EnumDifficulty;
  import net.minecraft.world.GameRules;
  import net.minecraft.world.GameType;
  import net.minecraft.world.WorldSettings;
  import net.minecraft.world.WorldType;
  import net.minecraftforge.fml.relauncher.Side;
  import net.minecraftforge.fml.relauncher.SideOnly;
  
  public class WorldInfo
  {
      private String versionName;
      private int versionId;
      private boolean versionSnapshot;
      public static final EnumDifficulty DEFAULT_DIFFICULTY = EnumDifficulty.NORMAL;
      /** Holds the seed of the currently world. */
      private long randomSeed;
      private WorldType terrainType = WorldType.DEFAULT;
      private String generatorOptions = "";
      /** The spawn zone position X coordinate. */
      private int spawnX;
      /** The spawn zone position Y coordinate. */
      private int spawnY;
      /** The spawn zone position Z coordinate. */
      private int spawnZ;
      /** Total time for this world. */
      private long totalTime;
      /** The current world time in ticks, ranging from 0 to 23999. */
      private long worldTime;
      /** The last time the player was in this world. */
      private long lastTimePlayed;
      /** The size of entire save of current world on the disk, isn't exactly. */
      private long sizeOnDisk;
      private NBTTagCompound playerTag;
      private int dimension;
      /** The name of the save defined at world creation. */
      private String levelName;
      /** Introduced in beta 1.3, is the save version for future control. */
      private int saveVersion;
      private int cleanWeatherTime;
      /** True if it's raining, false otherwise. */
      private boolean raining;
      /** Number of ticks until next rain. */
      private int rainTime;
      /** Is thunderbolts failing now? */
      private boolean thundering;
      /** Number of ticks untils next thunderbolt. */
      private int thunderTime;
      /** The Game Type. */
      private GameType theGameType;
      /** Whether the map features (e.g. strongholds) generation is enabled or disabled. */
      private boolean mapFeaturesEnabled;
      /** Hardcore mode flag */
      private boolean hardcore;
      private boolean allowCommands;
      private boolean initialized;
      private EnumDifficulty difficulty;
      private boolean difficultyLocked;
      private double borderCenterX;
      private double borderCenterZ;
      private double borderSize = 6.0E7D;
      private long borderSizeLerpTime;
      private double borderSizeLerpTarget;
      private double borderSafeZone = 5.0D;
      private double borderDamagePerBlock = 0.2D;
      private int borderWarningDistance = 5;
      private int borderWarningTime = 15;
      private final Map<DimensionType, NBTTagCompound> dimensionData = Maps.newEnumMap(DimensionType.class);
      private GameRules theGameRules = new GameRules();
      private java.util.Map<String, net.minecraft.nbt.NBTBase> additionalProperties;
  
      protected WorldInfo()
      {
      }
  
      public static void func_189967_a(DataFixer p_189967_0_)
      {
          p_189967_0_.registerWalker(FixTypes.LEVEL, new IDataWalker()
          {
              public NBTTagCompound process(IDataFixer fixer, NBTTagCompound compound, int versionIn)
              {
                  if (compound.hasKey("Player", 10))
                  {
                      compound.setTag("Player", fixer.process(FixTypes.PLAYER, compound.getCompoundTag("Player"), versionIn));
                  }
  
                  return compound;
              }
          });
      }
  
      public WorldInfo(NBTTagCompound nbt)
      {
          if (nbt.hasKey("Version", 10))
          {
              NBTTagCompound nbttagcompound = nbt.getCompoundTag("Version");
              this.versionName = nbttagcompound.getString("Name");
              this.versionId = nbttagcompound.getInteger("Id");
              this.versionSnapshot = nbttagcompound.getBoolean("Snapshot");
          }
  
          this.randomSeed = nbt.getLong("RandomSeed");
  
          if (nbt.hasKey("generatorName", 8))
          {
              String s1 = nbt.getString("generatorName");
              this.terrainType = WorldType.parseWorldType(s1);
  
              if (this.terrainType == null)
              {
                  this.terrainType = WorldType.DEFAULT;
              }
              else if (this.terrainType.isVersioned())
              {
                  int i = 0;
  
                  if (nbt.hasKey("generatorVersion", 99))
                  {
                      i = nbt.getInteger("generatorVersion");
                  }
  
                  this.terrainType = this.terrainType.getWorldTypeForGeneratorVersion(i);
              }
  
              if (nbt.hasKey("generatorOptions", 8))
              {
                  this.generatorOptions = nbt.getString("generatorOptions");
              }
          }
  
          this.theGameType = GameType.getByID(nbt.getInteger("GameType"));
  
          if (nbt.hasKey("MapFeatures", 99))
          {
              this.mapFeaturesEnabled = nbt.getBoolean("MapFeatures");
          }
          else
          {
              this.mapFeaturesEnabled = true;
          }
  
          this.spawnX = nbt.getInteger("SpawnX");
          this.spawnY = nbt.getInteger("SpawnY");
          this.spawnZ = nbt.getInteger("SpawnZ");
          this.totalTime = nbt.getLong("Time");
  
          if (nbt.hasKey("DayTime", 99))
          {
              this.worldTime = nbt.getLong("DayTime");
          }
          else
          {
              this.worldTime = this.totalTime;
          }
  
          this.lastTimePlayed = nbt.getLong("LastPlayed");
          this.sizeOnDisk = nbt.getLong("SizeOnDisk");
          this.levelName = nbt.getString("LevelName");
          this.saveVersion = nbt.getInteger("version");
          this.cleanWeatherTime = nbt.getInteger("clearWeatherTime");
          this.rainTime = nbt.getInteger("rainTime");
          this.raining = nbt.getBoolean("raining");
          this.thunderTime = nbt.getInteger("thunderTime");
          this.thundering = nbt.getBoolean("thundering");
          this.hardcore = nbt.getBoolean("hardcore");
  
          if (nbt.hasKey("initialized", 99))
          {
              this.initialized = nbt.getBoolean("initialized");
          }
          else
          {
              this.initialized = true;
          }
  
          if (nbt.hasKey("allowCommands", 99))
          {
              this.allowCommands = nbt.getBoolean("allowCommands");
          }
          else
          {
              this.allowCommands = this.theGameType == GameType.CREATIVE;
          }
  
          if (nbt.hasKey("Player", 10))
          {
              this.playerTag = nbt.getCompoundTag("Player");
  