diff --git a/src/main/java/dev/bailey/etplaceholders/DataManager.java b/src/main/java/dev/bailey/etplaceholders/DataManager.java index 0dcfda0..cd18582 100644 --- a/src/main/java/dev/bailey/etplaceholders/DataManager.java +++ b/src/main/java/dev/bailey/etplaceholders/DataManager.java @@ -7,8 +7,10 @@ import com.google.gson.JsonObject; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; -import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import org.bukkit.Bukkit; public class DataManager { @@ -25,6 +27,8 @@ public class DataManager { private final Map playerRankCache = new ConcurrentHashMap<>(); private final String[] trackedModes = {"overall", "vanilla", "mace", "axe", "sword", "smp", "diamondsmp", "uhc", "pot", "nethop", "cart"}; + + private ScheduledExecutorService executor; public DataManager(ETPlaceholdersPlugin plugin) { this.plugin = plugin; @@ -32,9 +36,15 @@ public class DataManager { public void startTasks() { int minutes = plugin.getConfig().getInt("cache-refresh-minutes", 15); - long ticks = minutes * 60 * 20L; + + executor = Executors.newScheduledThreadPool(2); + executor.scheduleAtFixedRate(this::refreshLeaderboards, 0, minutes, TimeUnit.MINUTES); + } - Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, this::refreshLeaderboards, 0L, ticks); + public void stopTasks() { + if (executor != null && !executor.isShutdown()) { + executor.shutdownNow(); + } } private String getApiUrl() { @@ -112,35 +122,37 @@ public class DataManager { } public void fetchPlayerAsync(String playerName) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { - try { - HttpURLConnection conn = createConnection("/players/" + playerName); - if (conn.getResponseCode() == 200) { - try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) { - JsonObject json = gson.fromJson(reader, JsonObject.class); - if (json != null) { - Map pTiers = new ConcurrentHashMap<>(); - - if (json.has("tiers") && !json.get("tiers").isJsonNull()) { - JsonObject tiersObj = json.getAsJsonObject("tiers"); - for (Map.Entry entry : tiersObj.entrySet()) { - if (!entry.getValue().isJsonNull()) { - pTiers.put(entry.getKey().toLowerCase(), entry.getValue().getAsString()); + if (executor != null && !executor.isShutdown()) { + executor.submit(() -> { + try { + HttpURLConnection conn = createConnection("/players/" + playerName); + if (conn.getResponseCode() == 200) { + try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) { + JsonObject json = gson.fromJson(reader, JsonObject.class); + if (json != null) { + Map pTiers = new ConcurrentHashMap<>(); + + if (json.has("tiers") && !json.get("tiers").isJsonNull()) { + JsonObject tiersObj = json.getAsJsonObject("tiers"); + for (Map.Entry entry : tiersObj.entrySet()) { + if (!entry.getValue().isJsonNull()) { + pTiers.put(entry.getKey().toLowerCase(), entry.getValue().getAsString()); + } } } - } - - playerTierCache.put(playerName.toLowerCase(), pTiers); + + playerTierCache.put(playerName.toLowerCase(), pTiers); - if (json.has("position") && !json.get("position").isJsonNull()) { - playerRankCache.put(playerName.toLowerCase(), json.get("position").getAsInt()); + if (json.has("position") && !json.get("position").isJsonNull()) { + playerRankCache.put(playerName.toLowerCase(), json.get("position").getAsInt()); + } } } } + } catch (Exception e) { } - } catch (Exception e) { - } - }); + }); + } } public String getPlayerTier(String playerName, String mode) { diff --git a/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java b/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java index 16b47f2..1c78a4d 100644 --- a/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java +++ b/src/main/java/dev/bailey/etplaceholders/ETPlaceholdersPlugin.java @@ -24,7 +24,9 @@ public class ETPlaceholdersPlugin extends JavaPlugin { @Override public void onDisable() { - Bukkit.getScheduler().cancelTasks(this); + if (dataManager != null) { + dataManager.stopTasks(); + } } public DataManager getDataManager() { diff --git a/target/ETPlaceholders-1.0.0.jar b/target/ETPlaceholders-1.0.0.jar deleted file mode 100644 index 9b966c8..0000000 Binary files a/target/ETPlaceholders-1.0.0.jar and /dev/null differ diff --git a/target/classes/dev/bailey/etplaceholders/DataManager.class b/target/classes/dev/bailey/etplaceholders/DataManager.class deleted file mode 100644 index 7ed886d..0000000 Binary files a/target/classes/dev/bailey/etplaceholders/DataManager.class and /dev/null differ diff --git a/target/classes/dev/bailey/etplaceholders/ETExpansion.class b/target/classes/dev/bailey/etplaceholders/ETExpansion.class deleted file mode 100644 index 00b18b4..0000000 Binary files a/target/classes/dev/bailey/etplaceholders/ETExpansion.class and /dev/null differ diff --git a/target/classes/dev/bailey/etplaceholders/ETPlaceholdersPlugin.class b/target/classes/dev/bailey/etplaceholders/ETPlaceholdersPlugin.class deleted file mode 100644 index c206ba5..0000000 Binary files a/target/classes/dev/bailey/etplaceholders/ETPlaceholdersPlugin.class and /dev/null differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties deleted file mode 100644 index 10097c9..0000000 --- a/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=ETPlaceholders -groupId=dev.bailey -version=1.0.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index f25342e..e69de29 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,3 +0,0 @@ -dev\bailey\etplaceholders\DataManager.class -dev\bailey\etplaceholders\ETExpansion.class -dev\bailey\etplaceholders\ETPlaceholdersPlugin.class