public void loadFolder(final File folder) {
    final Thread t = Thread.currentThread();
    if(t != iniLoader || t.isInterrupted()) return;
    synchronized(chunks) {
      chunks.clear();
    }
    MapReader.clearCache();
    final File[] files = folder.listFiles(new FileFilter() {

      @Override
      public boolean accept(final File f) {
        return f.isFile()
            && f.getName().endsWith(RegionFile.ANVIL_EXTENSION);
      }

    });
    Arrays.sort(files, new Comparator<File>() {

      @Override
      public int compare(final File left, final File right) {
        final String leftStr = left.getName().replace("-", "");
        final String rightStr = right.getName().replace("-", "");
        return leftStr.compareTo(rightStr);
      }

    });
    for(final File f : files) {
      final MapReader r = MapReader.getForFile(f);
      final List<ChunkInFilePosition> chunkList = r.getChunks();
      for(final ChunkInFilePosition p : chunkList) {
        if(t != iniLoader || t.isInterrupted()) return;
        final Chunk chunk = new Chunk(r.read(p), f, p);
        unloadChunk(chunk);
      }
      user.somethingChanged();
    }
  }