From b72383ceb5ca6415f03478feaf1032ea18efed5f Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Wed, 30 Mar 2022 05:31:46 -0700 Subject: [PATCH] '/denizen reload saves' should reload player flags --- .../denizen/utilities/command/DenizenCommandHandler.java | 4 ++++ .../denizen/utilities/flags/PlayerFlagHandler.java | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java index 64f3ef34d2..4faac39c93 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java @@ -8,6 +8,7 @@ import com.denizenscript.denizen.utilities.command.manager.exceptions.CommandException; import com.denizenscript.denizen.utilities.command.manager.messaging.Messaging; import com.denizenscript.denizen.utilities.debugging.Debug; +import com.denizenscript.denizen.utilities.flags.PlayerFlagHandler; import com.denizenscript.denizen.utilities.packets.NetworkInterceptHelper; import com.denizenscript.denizencore.DenizenCore; import com.denizenscript.denizencore.objects.notable.NoteManager; @@ -287,6 +288,7 @@ public void reload(CommandContext args, CommandSender sender) throws CommandExce if (args.hasFlag('a')) { Denizen.getInstance().reloadConfig(); DenizenCore.reloadScripts(); + PlayerFlagHandler.reloadAllFlagsNow(); NoteManager.reload(); Denizen.getInstance().reloadSaves(); Messaging.send(sender, "Denizen save data, config, and scripts reloaded from disk to memory."); @@ -298,6 +300,7 @@ public void reload(CommandContext args, CommandSender sender) throws CommandExce if (args.length() > 2) { if (args.getString(1).equalsIgnoreCase("saves")) { Denizen.getInstance().reloadSaves(); + PlayerFlagHandler.reloadAllFlagsNow(); Messaging.send(sender, "Denizen save data reloaded from disk to memory."); return; } @@ -325,6 +328,7 @@ else if (args.getString(1).equalsIgnoreCase("scripts")) { Messaging.send(sender, "Specify which parts to reload. Valid options are: SAVES, NOTES, CONFIG, SCRIPTS"); Messaging.send(sender, "Example: /denizen reload scripts"); Messaging.send(sender, "Use '-a' to reload all parts."); + Messaging.send(sender, "Note that you shouldn't use this command generally, instead use '/ex reload' - see also the Beginner's Guide @ https://guide.denizenscript.com/"); Messaging.send(sender, ""); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/PlayerFlagHandler.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/PlayerFlagHandler.java index f3dc024517..49705eee84 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/PlayerFlagHandler.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/PlayerFlagHandler.java @@ -6,6 +6,7 @@ import com.denizenscript.denizencore.flags.SavableMapFlagTracker; import com.denizenscript.denizencore.utilities.CoreUtilities; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; @@ -279,4 +280,12 @@ public void onPlayerLogin(AsyncPlayerPreLoginEvent event) { } } } + + public static void reloadAllFlagsNow() { + playerFlagTrackerCache.clear(); + secondaryPlayerFlagTrackerCache.clear(); + for (Player player : Bukkit.getOnlinePlayers()) { + getTrackerFor(player.getUniqueId()); + } + } }