aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugQuestCommandHandler.java13
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskType.java14
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/BukkitTaskTypeManager.java63
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/EssentialsBalanceTaskType.java3
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;