public void run() {
            while (true) {
                try {
                    loadWorlds();
                } catch (DynmapInitException e) {
                    logger.warn("Error in getting new Worlds", e);
                }

                players = new ArrayList<>();
                alreadyPlayers = new ArrayList<>();

                for (Map.Entry<String, DynmapWorldConfig> dynmapWorldConfig : new HashMap<>(dynmapWorldConfigs).entrySet()) {
                    try (BufferedReader reader = new BufferedReader(new InputStreamReader(getFile("standalone" + File.separator + "dynmap_" + dynmapWorldConfig.getKey() + ".json").getInputStream()))) {
                        dynmapWorldConfig.setValue(gson.fromJson(reader, DynmapWorldConfig.class));
                        dynmapWorldConfigs.put(dynmapWorldConfig.getKey(), dynmapWorldConfig.getValue());

                        for (Player player : dynmapWorldConfig.getValue().getPlayers()) {
                            if (!alreadyPlayers.contains(player.getName())) {
                                alreadyPlayers.add(player.getName());
                                players.add(player);
                            }
                        }
                    } catch (FileNotFoundException e) {
                        logger.warn("Could not update Dynmap World", e);
                    } catch (IOException e) {
                        logger.warn("Could not update Dynmap World", e);
                    }
                }

                try {
                    Thread.sleep(updateInterval * 1000);
                } catch (InterruptedException e) {
                    logger.warn("Interrupted", e);
                    return;
                }
            }
        }