public MapDataBase loadData(Class var1, String var2) {
      MapDataBase var3 = (MapDataBase)this.loadedDataMap.get(var2);
      if(var3 != null) {
         return var3;
      } else {
         if(this.saveHandler != null) {
            try {
               File var4 = this.saveHandler.func_28113_a(var2);
               if(var4 != null && var4.exists()) {
                  try {
                     var3 = (MapDataBase)var1.getConstructor(new Class[]{String.class}).newInstance(new Object[]{var2});
                  } catch (Exception var7) {
                     throw new RuntimeException("Failed to instantiate " + var1.toString(), var7);
                  }

                  FileInputStream var5 = new FileInputStream(var4);
                  NBTTagCompound var6 = CompressedStreamTools.loadGzippedCompoundFromOutputStream(var5);
                  var5.close();
                  var3.readFromNBT(var6.getCompoundTag("data"));
               }
            } catch (Exception var8) {
               var8.printStackTrace();
            }
         }

         if(var3 != null) {
            this.loadedDataMap.put(var2, var3);
            this.loadedDataList.add(var3);
         }

         return var3;
      }
   }