diff options
| author | Krakenied <Krakenied1@gmail.com> | 2024-05-30 07:53:50 +0200 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2024-06-03 18:48:22 +0100 |
| commit | e46b65f799c660e02efff0190ed0e43bda838d3a (patch) | |
| tree | d4ba51626bd020270d2c0055419011b8ec746d04 /bukkit | |
| parent | 96e1d3ec796b02036d279a5c46c3f08e6e9704ff (diff) | |
Further debugging optimization
Actually refactor a large amount of code lol
Diffstat (limited to 'bukkit')
7 files changed, 72 insertions, 30 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index 22a5cc93..7ad36c08 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -165,6 +165,7 @@ import java.io.OutputStream; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.function.BiFunction; @@ -340,7 +341,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { questsConfig.setItemGetter(itemGetter); // Finish module initialisation - this.taskTypeManager = new BukkitTaskTypeManager(this, questsConfig.getStringList("options.task-type-exclusions")); + this.taskTypeManager = new BukkitTaskTypeManager(this, new HashSet<>(questsConfig.getStringList("options.task-type-exclusions"))); this.qPlayerManager = new QPlayerManager(this, storageProvider, questController); this.menuController = new MenuController(this); this.questItemRegistry = new QuestItemRegistry(); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugQuestCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugQuestCommandHandler.java index 0d64bcb1..df6ef7bf 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugQuestCommandHandler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugQuestCommandHandler.java @@ -11,13 +11,14 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class AdminDebugQuestCommandHandler implements CommandHandler { private final BukkitQuestsPlugin plugin; - public AdminDebugQuestCommandHandler(BukkitQuestsPlugin plugin) { this.plugin = plugin; } @@ -69,10 +70,18 @@ public class AdminDebugQuestCommandHandler implements CommandHandler { ". This may generate a lot of spam."); sender.sendMessage(ChatColor.GRAY + "Use '/quests admin debug " + questId + "' to disable."); } else { - preferences.setDebug(questId, null); + preferences.unsetDebug(questId); sender.sendMessage(ChatColor.GREEN + "Debugging disabled for " + questName + "."); } + // Set it here to optimize debugging on high player count servers + final Set<QPlayer> debuggers = new HashSet<>(); + for (final QPlayer debugger : this.plugin.getPlayerManager().getQPlayers()) { + if (debugger.getPlayerPreferences().isDebug()) { + debuggers.add(debugger); + } + } + QPlayerPreferences.setDebuggers(debuggers); } else { sender.sendMessage(ChatColor.RED + "You must be a player to use this command."); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java index e756fb55..6195e42f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java @@ -39,7 +39,7 @@ public class QuestsCommandSwitcher extends CommandSwitcher implements TabExecuto @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (plugin.getTaskTypeManager().areRegistrationsAccepted()) { + if (plugin.getTaskTypeManager().areRegistrationsOpen()) { sender.sendMessage(ChatColor.RED + "Quests is not ready yet."); return true; } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java index 8f867673..f3b8eac4 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java @@ -43,8 +43,10 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -222,7 +224,7 @@ public class BukkitQuestsLoader implements QuestsLoader { configValues.put(key, config.get(taskRoot + "." + key)); } - List<ConfigProblem> taskProblems = new ArrayList<>(); + Set<ConfigProblem> taskProblems = new HashSet<>(); for (TaskType.ConfigValidator validator : t.getConfigValidators()) { validator.validateConfig(configValues, taskProblems); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java index 179b39ac..aa2d751e 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype; import com.leonardobishop.quests.common.tasktype.TaskType; import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.UUID; @@ -10,20 +11,15 @@ public abstract class BukkitTaskType extends TaskType implements Listener { protected BukkitTaskTypeManager taskTypeManager; - public BukkitTaskType(@NotNull String type, String author, String description, String... aliases) { + public BukkitTaskType(final @NotNull String type, final @Nullable String author, final @Nullable String description, final @NotNull String @NotNull ... aliases) { super(type, author, description, aliases); } - public BukkitTaskType(@NotNull String type, String author, String description) { - super(type, author, description); - } - - public BukkitTaskType(@NotNull String type) { + public BukkitTaskType(final @NotNull String type) { super(type); } - public final void debug(@NotNull String message, String questId, String taskId, @NotNull UUID player) { - taskTypeManager.sendDebug(message, super.getType(), questId, taskId, player); + public final void debug(final @NotNull String message, final @NotNull String questId, final @NotNull String taskId, final @NotNull UUID player) { + this.taskTypeManager.sendDebug(message, this.type, questId, taskId, player); } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java index ec41039d..3b8eb7f8 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java @@ -5,55 +5,89 @@ import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.QPlayerPreferences; import com.leonardobishop.quests.common.tasktype.TaskType; import com.leonardobishop.quests.common.tasktype.TaskTypeManager; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.util.List; +import java.util.Set; import java.util.UUID; -public class BukkitTaskTypeManager extends TaskTypeManager { +/** + * The Bukkit task type manager stores all registered Bukkit-specific task types and registers individual quests to each task type. + * This manager ensures that task types specific to Bukkit are registered and handled correctly. + */ +public final class BukkitTaskTypeManager extends TaskTypeManager { private final BukkitQuestsPlugin plugin; - public BukkitTaskTypeManager(BukkitQuestsPlugin plugin) { + /** + * Constructs a new BukkitTaskTypeManager. + * + * @param plugin the Bukkit plugin instance + */ + public BukkitTaskTypeManager(final @NotNull BukkitQuestsPlugin plugin) { this.plugin = plugin; } - public BukkitTaskTypeManager(BukkitQuestsPlugin plugin, List<String> exclusions) { + /** + * Constructs a new BukkitTaskTypeManager with exclusions. + * + * @param plugin the Bukkit plugin instance + * @param exclusions the set of task type exclusions + */ + public BukkitTaskTypeManager(final @NotNull BukkitQuestsPlugin plugin, final @NotNull Set<String> exclusions) { super(exclusions); this.plugin = plugin; } + /** + * Registers a Bukkit-specific task type with the task type manager. + * + * @param taskType the task type to register + * @return true if the task type was successfully registered, false otherwise + * @throws RuntimeException if the task type is not an instance of {@link BukkitTaskType} + */ @Override - public boolean registerTaskType(@NotNull TaskType taskType) { - if (!(taskType instanceof BukkitTaskType bukkitTaskType)) throw new RuntimeException("BukkitTaskTypeManager implementation can only accept instances of BukkitTaskType!"); + public boolean registerTaskType(final @NotNull TaskType taskType) { + if (!(taskType instanceof final BukkitTaskType bukkitTaskType)) { + throw new RuntimeException("BukkitTaskTypeManager implementation can only accept instances of BukkitTaskType!"); + } if (super.registerTaskType(taskType)) { bukkitTaskType.taskTypeManager = this; - plugin.getServer().getPluginManager().registerEvents(bukkitTaskType, plugin); + this.plugin.getServer().getPluginManager().registerEvents(bukkitTaskType, this.plugin); return true; } + return false; } - public void sendDebug(@NotNull String message, @NotNull String taskType, @NotNull String questId, @NotNull String taskId, @NotNull UUID associatedPlayer) { + /** + * Sends a debug message to players based on their debug preferences. + * + * @param message the debug message to send + * @param taskType the type of task + * @param questId the quest ID + * @param taskId the task ID + * @param associatedPlayer the UUID of the associated player + */ + public void sendDebug(final @NotNull String message, final @NotNull String taskType, final @NotNull String questId, final @NotNull String taskId, final @NotNull UUID associatedPlayer) { String chatHeader = null; - for (QPlayer qPlayer : plugin.getPlayerManager().getQPlayers()) { - QPlayerPreferences.DebugType debugType = qPlayer.getPlayerPreferences().getDebug(questId); + + for (final QPlayer qPlayer : QPlayerPreferences.getDebuggers()) { + final QPlayerPreferences.DebugType debugType = qPlayer.getPlayerPreferences().getDebug(questId); if (debugType == null) { continue; } - Player player = Bukkit.getPlayer(qPlayer.getPlayerUUID()); + final Player player = this.plugin.getServer().getPlayer(qPlayer.getPlayerUUID()); if (player == null) { continue; } if (chatHeader == null) { - Player otherPlayer = Bukkit.getPlayer(associatedPlayer); - String associatedName = otherPlayer != null ? otherPlayer.getName() : associatedPlayer.toString(); + final Player otherPlayer = this.plugin.getServer().getPlayer(associatedPlayer); + final String associatedName = otherPlayer != null ? otherPlayer.getName() : associatedPlayer.toString(); chatHeader = ChatColor.GRAY + "[" + associatedName + " - " + questId + "/" + taskId + " - type '" + taskType + "']"; } @@ -71,5 +105,4 @@ public class BukkitTaskTypeManager extends TaskTypeManager { } } } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java index 8f1476ed..150bf16d 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java @@ -15,6 +15,7 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; import java.util.UUID; @@ -32,7 +33,7 @@ public final class EssentialsBalanceTaskType extends BukkitTaskType { } @Override - public void onStart(Quest quest, Task task, UUID playerUUID) { + public void onStart(final @NotNull Quest quest, final @NotNull Task task, final @NotNull UUID playerUUID) { Player player = Bukkit.getPlayer(playerUUID); if (player == null || !player.isOnline() || player.hasMetadata("NPC")) { return; |
