public Chunk loadChunk(World var1, int var2, int var3) throws IOException {
      File var4 = this.chunkFileForXZ(var2, var3);
      if(var4 != null && var4.exists()) {
         try {
            FileInputStream var5 = new FileInputStream(var4);
            NBTTagCompound var6 = CompressedStreamTools.loadGzippedCompoundFromOutputStream(var5);
            if(!var6.hasKey("Level")) {
               System.out.println("Chunk file at " + var2 + "," + var3 + " is missing level data, skipping");
               return null;
            }

            if(!var6.getCompoundTag("Level").hasKey("Blocks")) {
               System.out.println("Chunk file at " + var2 + "," + var3 + " is missing block data, skipping");
               return null;
            }

            Chunk var7 = loadChunkIntoWorldFromCompound(var1, var6.getCompoundTag("Level"));
            if(!var7.isAtLocation(var2, var3)) {
               System.out.println("Chunk file at " + var2 + "," + var3 + " is in the wrong location; relocating. (Expected " + var2 + ", " + var3 + ", got " + var7.xPosition + ", " + var7.zPosition + ")");
               var6.setInteger("xPos", var2);
               var6.setInteger("zPos", var3);
               var7 = loadChunkIntoWorldFromCompound(var1, var6.getCompoundTag("Level"));
            }

            var7.func_25124_i();
            return var7;
         } catch (Exception var8) {
            var8.printStackTrace();
         }
      }

      return null;
   }