public void generateTopTen(final CommandSender sender) { List<IslandLevel> topTen = new ArrayList<>(); final File folder = directoryIslands; final String[] listOfFiles = folder.list(FileUtil.createIslandFilenameFilter()); for (String file : listOfFiles) { String islandName = FileUtil.getBasename(file); try { boolean wasLoaded = islands.containsKey(islandName); IslandInfo islandInfo = getIslandInfo(islandName); double level = islandInfo != null ? islandInfo.getLevel() : 0; if (islandInfo != null && level > 10) { IslandLevel islandLevel = createIslandLevel(islandInfo, level); topTen.add(islandLevel); } if (!wasLoaded) { islands.remove(islandName); } } catch (Exception e) { plugin.getLogger().log(Level.WARNING, "Error during rank generation", e); } } Collections.sort(topTen); synchronized (ranks) { lastGenerate = System.currentTimeMillis(); ranks.clear(); ranks.addAll(topTen); } plugin.fireChangeEvent(sender, uSkyBlockEvent.Cause.RANK_UPDATED); }