From 33953fd989385a8815d96bb953fb0c5df08e07b6 Mon Sep 17 00:00:00 2001 From: ZeroHD Date: Sun, 20 Oct 2019 04:05:02 +0200 Subject: [PATCH] Switched from using an async task to using a timer task (#16) --- .../minecraftmanager/MinecraftManager.java | 6 +- .../minecraftmanager/objects/OreAlert.java | 60 ++++++++----------- 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java b/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java index 314d9ed..20f3cbe 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java +++ b/src/main/java/xyz/etztech/minecraftmanager/MinecraftManager.java @@ -89,16 +89,12 @@ public class MinecraftManager extends JavaPlugin implements IMinecraftManager { getServer().getPluginManager().registerEvents(commandPreprocessListener, this); oreAlert = new OreAlert(this); - Bukkit.getScheduler().runTaskAsynchronously(this, () -> oreAlert.monitor()); + Bukkit.getScheduler().runTaskTimer(this, () -> oreAlert.monitor(), 0, 20); Bukkit.getConsoleSender().sendMessage("MinecraftManager has started successfully."); } } - public void onDisable() { - oreAlert.setRunning(false); - } - public void loadConfig() { config = Bukkit.getPluginManager().getPlugin("MinecraftManager").getConfig(); } diff --git a/src/main/java/xyz/etztech/minecraftmanager/objects/OreAlert.java b/src/main/java/xyz/etztech/minecraftmanager/objects/OreAlert.java index 9b40c5c..e9b7f42 100644 --- a/src/main/java/xyz/etztech/minecraftmanager/objects/OreAlert.java +++ b/src/main/java/xyz/etztech/minecraftmanager/objects/OreAlert.java @@ -15,7 +15,6 @@ public class OreAlert { private Map> players = new HashMap<>(); private List diamonds = new ArrayList<>(); private List queue = new ArrayList<>(); - private boolean running; private MinecraftManager plugin; @@ -27,14 +26,6 @@ public class OreAlert { return this.queue; } - public boolean isRunning() { - return running; - } - - public void setRunning(boolean running) { - this.running = running; - } - public void addStrike(UUID uuid) { ArrayList strikes = players.getOrDefault(uuid, new ArrayList<>()); strikes.add(new Date()); @@ -89,39 +80,36 @@ public class OreAlert { public void monitor() { Strike strike; - running = true; - while (running) { - if (queue.size() > 0) { - strike = queue.get(0); - if (addDiamond(getLocationString(strike.getBlock()))) { - addStrike(strike.getPlayer().getUniqueId()); - purge(strike.getPlayer().getUniqueId(), plugin.getConfig().getInt("orealert.purge", 30)); + if (queue.size() > 0) { + strike = queue.get(0); + if (addDiamond(getLocationString(strike.getBlock()))) { + addStrike(strike.getPlayer().getUniqueId()); + purge(strike.getPlayer().getUniqueId(), plugin.getConfig().getInt("orealert.purge", 30)); - int alertable = getStrikes(strike.getPlayer().getUniqueId()); + int alertable = getStrikes(strike.getPlayer().getUniqueId()); - double start = (double) alertable / plugin.getConfig().getInt("orealert.notify.start", 5); - // Start - if (start == 1) { + double start = (double) alertable / plugin.getConfig().getInt("orealert.notify.start", 5); + // Start + if (start == 1) { + alert(strike.getPlayer().getName(), alertable, true); + } else if (start > 1) { + // Ping + if (alertable % plugin.getConfig().getInt("orealert.notify.ping", 5) == 0) { alert(strike.getPlayer().getName(), alertable, true); - } else if (start > 1) { - // Ping - if (alertable % plugin.getConfig().getInt("orealert.notify.ping", 5) == 0) { - alert(strike.getPlayer().getName(), alertable, true); - // Alert - } else if (alertable % plugin.getConfig().getInt("orealert.notify.each", 1) == 0) { - alert(strike.getPlayer().getName(), alertable, false); - } + // Alert + } else if (alertable % plugin.getConfig().getInt("orealert.notify.each", 1) == 0) { + alert(strike.getPlayer().getName(), alertable, false); } - - for (Block radiusBlock : getBlocks(strike.getBlock(), 5)) { - if (Material.DIAMOND_ORE == radiusBlock.getType()) { - addDiamond(getLocationString(radiusBlock)); - } - } - } - queue.remove(0); + + for (Block radiusBlock : getBlocks(strike.getBlock(), 5)) { + if (Material.DIAMOND_ORE == radiusBlock.getType()) { + addDiamond(getLocationString(radiusBlock)); + } + } + } + queue.remove(0); } }