From ddc9a69f4b19081dbd5fba84f96803341cb16f73 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 27 Dec 2021 10:46:56 -0800 Subject: [PATCH] Fix ScoreboardManager NPE and added locale messages relating to scoreboards --- Changelog.txt | 7 +++++-- .../gmail/nossr50/commands/McscoreboardCommand.java | 10 ++++++++++ .../nossr50/util/scoreboards/ScoreboardManager.java | 4 ++++ src/main/resources/locale/locale_en_US.properties | 4 +++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 6146ec210..4d90c234d 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,9 @@ Version 2.1.207 - Added unicode support to locale files (no more UTF-16 codes) - Temporarily rolling required Java version back to 16 until 1.18 is stable and everyone can migrate to it safely + Temporarily rolling required Java version back to 16 + Added unicode (UTF-8) support to locale files (no more UTF-16 codes needed) + Added locale key 'Scoreboard.Disabled' to en_US + Added locale key 'Scoreboard.NotSetupYet' to en_US + Fixed a bug where Salvage sent messages even though the event was cancelled (Thanks TheBusyBiscuit) Version 2.1.206 Fixed a memory leak involving Herbalism under specific circumstances diff --git a/src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java b/src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java index 4748a5708..ff5b4ab2d 100644 --- a/src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/McscoreboardCommand.java @@ -23,6 +23,16 @@ public class McscoreboardCommand implements TabExecutor { return true; } + if(!mcMMO.p.getGeneralConfig().getScoreboardsEnabled()) { + sender.sendMessage(LocaleLoader.getString("Scoreboard.Disabled")); + return true; + } + + if(!ScoreboardManager.isPlayerBoardSetup(sender.getName())) { + sender.sendMessage(LocaleLoader.getString("Scoreboard.NotSetupYet")); + return true; + } + switch (args.length) { case 1: if (args[0].equalsIgnoreCase("clear") || args[0].equalsIgnoreCase("reset")) { diff --git a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java index 9e081bcd6..1851f5479 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java @@ -574,6 +574,10 @@ public class ScoreboardManager { PLAYER_SCOREBOARDS.get(playerName).showBoardAndScheduleRevert(seconds * Misc.TICK_CONVERSION_FACTOR); } + public static boolean isPlayerBoardSetup(@NotNull String playerName) { + return PLAYER_SCOREBOARDS.get(playerName) != null; + } + public static @Nullable ScoreboardWrapper makeNewScoreboard(Player player) { if(getScoreboardManager() == null) return null; diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index a144f7803..992ea77a3 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -1142,4 +1142,6 @@ Chat.Channel.Off=&6(&amcMMO-Chat&6) &7Your chat messages will no longer be autom Chat.Spy.Party=&6[&eSPY&6-&a{2}&6] &r{0} &b\u2192 &r{1} Broadcasts.LevelUpMilestone=&6(&amcMMO&6) {0}&7 has reached level &a{1}&7 in &3{2}&7! Broadcasts.PowerLevelUpMilestone=&6(&amcMMO&6) {0}&7 has reached a Power level of &a{1}&7! -Scoreboard.Recovery=Attempting to recover mcMMO scoreboard... \ No newline at end of file +Scoreboard.Recovery=Attempting to recover mcMMO scoreboard... +Scoreboard.Disabled=The mcMMO scoreboards for this server are disabled, this setting is found in mcMMO/config.yml +Scoreboard.NotSetupYet=Your mcMMO scoreboard has not been setup yet, try again later. \ No newline at end of file