From 201f645c43f9084f5d2b2dd059709682a74d5e34 Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Tue, 12 Apr 2022 14:06:25 -0400 Subject: [PATCH] Cooldown world null fix --- .../player/commands/types/CmdQueue.java | 11 +++------- .../BetterRTP/player/rtp/RTP.java | 5 +++-- .../BetterRTP/player/rtp/RTPLoader.java | 2 +- .../BetterRTP/references/WarningHandler.java | 19 +++++++++++----- .../database/DatabaseCooldownsWorlds.java | 10 ++++----- .../helpers/HelperRTP_EditConfig.java | 6 ----- .../references/rtpinfo/CooldownData.java | 4 +--- .../references/rtpinfo/CooldownHandler.java | 22 +++++++++---------- 8 files changed, 37 insertions(+), 42 deletions(-) delete mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_EditConfig.java diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdQueue.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdQueue.java index a819aa4..3f67bd0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdQueue.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdQueue.java @@ -23,7 +23,7 @@ import java.sql.Time; import java.util.ArrayList; import java.util.List; -public class CmdQueue implements RTPCommand, RTPCommandHelpable { +public class CmdQueue implements RTPCommand { public String getName() { return "queue"; @@ -36,11 +36,6 @@ public class CmdQueue implements RTPCommand, RTPCommandHelpable { queueWorlds(sendi); } - @Override - public String getHelp() { - return null; - } - //World public static void sendInfo(CommandSender sendi, List list) { //Send info list.add(0, "&e&m-----&6 BetterRTP &8| Queue &e&m-----"); @@ -53,7 +48,7 @@ public class CmdQueue implements RTPCommand, RTPCommandHelpable { List info = new ArrayList<>(); for (World w : Bukkit.getWorlds()) info.addAll(queueGetWorld(w)); - info.add("&eTotal of &a%amount% generated locations".replace("%amount%", String.valueOf(QueueHandler.getCount()))); + info.add("&eTotal of &a%amount% &egenerated locations".replace("%amount%", String.valueOf(QueueHandler.getCount()))); sendInfo(sendi, info); } @@ -61,7 +56,7 @@ public class CmdQueue implements RTPCommand, RTPCommandHelpable { List info = new ArrayList<>(); info.add("&eWorld: &6" + world.getName()); for (QueueData queue : QueueHandler.getApplicable(world)) { - String str = "&7x= &b%x, &7z= &b%z"; + String str = "&8- &7x= &b%x, &7z= &b%z"; Location loc = queue.getLocation(); str = str.replace("%x", String.valueOf(loc.getBlockX())).replace("%z", String.valueOf(loc.getBlockZ())); info.add(str); 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 5e13824..a64191a 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -138,8 +138,9 @@ public class RTP { else { world_type = WORLD_TYPE.NORMAL; rtp.world_type.put(pWorld.getWorld().getName(), world_type); //Defaults this so the error message isn't spammed - WarningHandler.warn(WarningHandler.WARNING.NO_WORLD_TYPE_DECLARED, "Seems like the world `" + pWorld.getWorld() + "` does not have a `WorldType` declared. " + - "Please add/fix this in the config.yml file! This world will be treated as an overworld!"); + WarningHandler.warn(WarningHandler.WARNING.NO_WORLD_TYPE_DECLARED, "Seems like the world `" + pWorld.getWorld().getName() + "` does not have a `WorldType` declared. " + + "Please add/fix this in the config.yml file! This world will be treated as an overworld! " + + "If this world is a nether world, configure it to NETHER (example: `- " + pWorld.getWorld().getName() + ": NETHER`", false); } return world_type; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPLoader.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPLoader.java index 2ab8e5d..24e9264 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPLoader.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPLoader.java @@ -31,8 +31,8 @@ public class RTPLoader { exists.set(true); }); if (exists.get()) { + BetterRTP.debug("- Custom World '" + world + "' registered:"); customWorlds.put(world, new WorldCustom(Bukkit.getWorld(world))); - BetterRTP.debug("- Custom World '" + world + "' successfully registered"); } else BetterRTP.debug("[WARN] - Custom World '" + world + "' was not registered because world does NOT exist"); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java index cf0349c..e4582d5 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java @@ -9,13 +9,20 @@ public class WarningHandler { HashMap lastWarning = new HashMap<>(); public static void warn(WARNING type, String str) { + warn(type, str, true); + } + + public static void warn(WARNING type, String str, boolean auto_ignore) { 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); + if (auto_ignore) { //Ignored automatically every 30 minutes + Long lastTime = handler.lastWarning.getOrDefault(type, 0L); + if (lastTime <= System.currentTimeMillis()) { + BetterRTP.getInstance().getLogger().info(str); + lastTime += System.currentTimeMillis() + (1000 * 1800); + } + handler.lastWarning.put(type, lastTime); + } else + BetterRTP.getInstance().getLogger().warning(str); } public enum WARNING { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseCooldownsWorlds.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseCooldownsWorlds.java index 2395ae6..aeb28b5 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseCooldownsWorlds.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseCooldownsWorlds.java @@ -44,13 +44,13 @@ public class DatabaseCooldownsWorlds extends SQLite { } } - public boolean removePlayer(UUID uuid, World world) { + public void removePlayer(UUID uuid, World world) { String sql = "DELETE FROM " + world.getName() + " WHERE " + COLUMNS.UUID.name + " = ?"; List params = new ArrayList() {{ add(uuid.toString()); }}; - return sqlUpdate(sql, params); + sqlUpdate(sql, params); } public CooldownData getCooldown(UUID uuid, World world) { @@ -66,7 +66,7 @@ public class DatabaseCooldownsWorlds extends SQLite { if (rs.next()) { Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name); //int uses = rs.getInt(COLUMNS.USES.name); - return new CooldownData(uuid, time, world); + return new CooldownData(uuid, time); } } catch (SQLException ex) { BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); @@ -77,9 +77,9 @@ public class DatabaseCooldownsWorlds extends SQLite { } //Set a player Cooldown - public void setCooldown(CooldownData data) { + public void setCooldown(World world, CooldownData data) { String pre = "INSERT OR REPLACE INTO "; - String sql = pre + data.getWorld().getName() + " (" + String sql = pre + world.getName() + " (" + COLUMNS.UUID.name + ", " + COLUMNS.COOLDOWN_DATE.name + " " //+ COLUMNS.USES.name + " " diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_EditConfig.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_EditConfig.java deleted file mode 100644 index decd618..0000000 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_EditConfig.java +++ /dev/null @@ -1,6 +0,0 @@ -package me.SuperRonanCraft.BetterRTP.references.helpers; - -public class HelperRTP_EditConfig { - - -} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownData.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownData.java index 06ee387..bac6e22 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownData.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownData.java @@ -11,11 +11,9 @@ public class CooldownData { @Getter private final UUID uuid; @Getter @Setter private Long time; - @Getter private final @Nullable World world; - public CooldownData(UUID uuid, Long time, @Nullable World world) { + public CooldownData(UUID uuid, Long time) { this.uuid = uuid; this.time = time; - this.world = world; } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java index aa64c74..b58c180 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownHandler.java @@ -64,12 +64,12 @@ public class CooldownHandler { PlayerData playerData = getData(player); if (cooldownByWorld) { HashMap cooldowns = playerData.getCooldowns(); - CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L, world)); + CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L)); playerData.setRtpCount(playerData.getRtpCount() + 1); data.setTime(System.currentTimeMillis()); playerData.setGlobalCooldown(data.getTime()); cooldowns.put(world, data); - savePlayer(player, data, false); + savePlayer(player, world, data, false); } else add(player); } @@ -79,7 +79,7 @@ public class CooldownHandler { PlayerData playerData = getData(player); playerData.setRtpCount(playerData.getRtpCount() + 1); playerData.setGlobalCooldown(System.currentTimeMillis()); - savePlayer(player, null, false); + savePlayer(player, null, null, false); } @Nullable @@ -90,7 +90,7 @@ public class CooldownHandler { if (data != null) return cooldownData.getOrDefault(world, null); } else if (data.getGlobalCooldown() > 0) { - return new CooldownData(p.getUniqueId(), data.getGlobalCooldown(), null); + return new CooldownData(p.getUniqueId(), data.getGlobalCooldown()); } return null; } @@ -115,24 +115,24 @@ public class CooldownHandler { if (lockedAfter > 0) { //uses.put(id, uses.getOrDefault(id, 1) - 1); if (playerData.getRtpCount() <= 0) { //Remove from file as well - savePlayer(player, cooldownData, true); + savePlayer(player, world, cooldownData, true); getData(player).getCooldowns().put(world, null); } else { //Keep the player cached - savePlayer(player, cooldownData, false); + savePlayer(player, world, cooldownData, false); } } else { //Remove completely getData(player).getCooldowns().remove(world); - savePlayer(player, cooldownData, true); + savePlayer(player, world, cooldownData, true); } } - private void savePlayer(Player player, @Nullable CooldownData data, boolean remove) { + private void savePlayer(Player player, @Nullable World world, @Nullable CooldownData data, boolean remove) { Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> { - if (data != null && getDatabaseWorlds() != null) { //Per World enabled? + if (world != null && data != null && getDatabaseWorlds() != null) { //Per World enabled? if (!remove) - getDatabaseWorlds().setCooldown(data); + getDatabaseWorlds().setCooldown(world, data); else - getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld()); + getDatabaseWorlds().removePlayer(data.getUuid(), world); } DatabaseHandler.getPlayers().setData(getData(player)); });