From e1c7f329458491652f8cdbbbd45cd1dc054a5a1e Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Thu, 7 Apr 2022 22:17:27 -0400 Subject: [PATCH] warning handler for time delayed warnings --- .../SuperRonanCraft/BetterRTP/BetterRTP.java | 2 ++ .../BetterRTP/player/rtp/RTP.java | 6 +++-- .../BetterRTP/references/WarningHandler.java | 24 +++++++++++++++++++ .../references/rtpinfo/QueueHandler.java | 6 +++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java index 71ce78d..7d2fee3 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.events.EventListener; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP; +import me.SuperRonanCraft.BetterRTP.references.WarningHandler; import me.SuperRonanCraft.BetterRTP.references.database.DatabaseHandler; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.QueueHandler; import me.SuperRonanCraft.BetterRTP.references.Permissions; @@ -39,6 +40,7 @@ public class BetterRTP extends JavaPlugin { @Getter private final CooldownHandler cooldowns = new CooldownHandler(); private final QueueHandler queue = new QueueHandler(); @Getter private final DatabaseHandler databaseHandler = new DatabaseHandler(); + @Getter private final WarningHandler warningHandler = new WarningHandler(); public void onEnable() { instance = this; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java index 3e6b164..96c53a0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdInfo; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdWorld; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; +import me.SuperRonanCraft.BetterRTP.references.WarningHandler; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; @@ -79,8 +80,9 @@ public class RTP { if (setup_info.getLocation() == null && BetterRTP.getInstance().getSettings().isUseLocationIfAvailable()) { setup_info.setLocation(HelperRTP.getRandomLocation(setup_info.getSender(), setup_info.getWorld())); if (setup_info.getLocation() == null) - BetterRTP.getInstance().getLogger().warning("UseLocationIfAvailable is set to `true`, but no location was found for " - + setup_info.getSender().getName() + "! Using world defaults!"); + WarningHandler.warn(WarningHandler.WARNING.USELOCATION_ENABLED_NO_LOCATION_AVAILABLE, + "This is not an error! UseLocationIfAvailable is set to `true`, but no location was found for " + + setup_info.getSender().getName() + "! Using world defaults! (Maybe they dont have permission?)"); } //Location if (setup_info.getLocation() != null) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java new file mode 100644 index 0000000..9600c6b --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java @@ -0,0 +1,24 @@ +package me.SuperRonanCraft.BetterRTP.references; + +import me.SuperRonanCraft.BetterRTP.BetterRTP; + +import java.util.HashMap; + +public class WarningHandler { + + HashMap lastWarning = new HashMap<>(); + + public static void warn(WARNING type, String str) { + WarningHandler handler = BetterRTP.getInstance().getWarningHandler(); + Long lastTime = handler.lastWarning.getOrDefault(type, 0L); + if (lastTime <= System.currentTimeMillis()) { + BetterRTP.getInstance().getLogger().info(str); + lastTime += System.currentTimeMillis() + (1000 * 120); + } + handler.lastWarning.put(type, lastTime); + } + + public enum WARNING { + USELOCATION_ENABLED_NO_LOCATION_AVAILABLE + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/QueueHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/QueueHandler.java index d78ed43..a894a1d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/QueueHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/QueueHandler.java @@ -21,11 +21,17 @@ public class QueueHandler implements Listener { //Randomly queues up some random private final int queueSize = 32; public void registerEvents(BetterRTP pl) { + //DEBUG ONLY FOR THE TIME BEING + if (!BetterRTP.getInstance().getSettings().isDebug()) + return; PluginManager pm = pl.getServer().getPluginManager(); pm.registerEvents(this, pl); } public void load() { + //DEBUG ONLY FOR THE TIME BEING + if (!BetterRTP.getInstance().getSettings().isDebug()) + return; loaded = false; queueDownload(); }