aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main/java')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java46
4 files changed, 53 insertions, 11 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 db1fe34c..b3932f82 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -53,6 +53,7 @@ import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHand
import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler11;
import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler16;
import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler17;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler20;
import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler8;
import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler9;
import com.leonardobishop.quests.bukkit.item.ParsedQuestItem;
@@ -301,7 +302,8 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
case 9, 10 -> versionSpecificHandler = new VersionSpecificHandler9();
case 11, 12, 13, 14, 15 -> versionSpecificHandler = new VersionSpecificHandler11();
case 16 -> versionSpecificHandler = new VersionSpecificHandler16();
- default -> versionSpecificHandler = new VersionSpecificHandler17();
+ case 17, 18, 19 -> versionSpecificHandler = new VersionSpecificHandler17();
+ default -> versionSpecificHandler = new VersionSpecificHandler20();
}
questsConfig.setItemGetter(itemGetter);
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 fd362c88..653fefa7 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
@@ -265,6 +265,7 @@ public class BukkitQuestsLoader implements QuestsLoader {
int sortOrder = config.getInt("options.sort-order", 1);
String category = config.getString("options.category");
Map<String, String> placeholders = new HashMap<>();
+ Map<String, String> progressPlaceholders = new HashMap<>();
if (category != null && category.equals("")) category = null;
@@ -283,6 +284,7 @@ public class BukkitQuestsLoader implements QuestsLoader {
.withStartString(startString)
.withStartCommands(startCommands)
.withPlaceholders(placeholders)
+ .withProgressPlaceholders(progressPlaceholders)
.withCooldown(cooldownTime)
.withTimeLimit(timeLimtTime)
.withSortOrder(sortOrder)
@@ -344,6 +346,11 @@ public class BukkitQuestsLoader implements QuestsLoader {
findInvalidTaskReferences(quest, config.getString("placeholders." + p), problems, "placeholders." + p);
}
}
+ if (config.isConfigurationSection("progress-placeholders")) {
+ for (String p : config.getConfigurationSection("progress-placeholders").getKeys(false)) {
+ progressPlaceholders.put(p, config.getString("progress-placeholders." + p));
+ }
+ }
questManager.registerQuest(quest);
taskTypeManager.registerQuestTasksWithTaskTypes(quest);
qItemStackRegistry.register(quest, displayItem);
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java
index 6238ae46..a3072549 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java
@@ -23,6 +23,13 @@ public class BossBar_Bukkit implements QuestsBossBar {
public BossBar_Bukkit(BukkitQuestsPlugin plugin) {
this.plugin = plugin;
+
+ //noinspection CodeBlock2Expr (for readability)
+ plugin.getScheduler().runTaskTimerAsynchronously(() -> {
+ playerQuestBarCache.asMap()
+ .values()
+ .forEach(Cache::cleanUp);
+ }, 0L, 2L);
}
@Override
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
index 11f80d4b..3d98519b 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
@@ -150,27 +150,53 @@ public class TaskUtils {
taskProgress.setProgress(--progress);
return progress;
}
-
- public static void sendTrackAdvancement(Player player, Quest quest, Task task, TaskProgress taskProgress) {
- String title = quest.getPlaceholders().get("progress");
- if (title == null) {
- return;
- }
+ public static void sendTrackAdvancement(Player player, Quest quest, Task task, TaskProgress taskProgress) {
boolean useBossBarProgress = plugin.getConfig().getBoolean("options.bossbar.progress", false);
boolean useBossBarComplete = plugin.getConfig().getBoolean("options.bossbar.complete", false);
boolean useActionBarProgress = plugin.getConfig().getBoolean("options.actionbar.progress", false);
boolean useActionBarComplete = plugin.getConfig().getBoolean("options.actionbar.complete", false);
if (!(useBossBarProgress || useBossBarComplete || useActionBarProgress || useActionBarComplete)) {
- return; // skip title coloring and placeholders application if all options are disabled
+ return; // skip title processing if all options are disabled
+ }
+
+ String title;
+
+ titleSearch:
+ {
+ title = quest.getProgressPlaceholders().get(task.getId()); // custom title
+ if (title != null) {
+ break titleSearch;
+ }
+
+ title = quest.getProgressPlaceholders().get("*"); // one title for all tasks
+ if (title != null) {
+ break titleSearch;
+ }
+
+ boolean useProgressAsFallback = plugin.getQuestsConfig().getBoolean("options.use-progress-as-fallback", true);
+ if (!useProgressAsFallback) {
+ return;
+ }
+
+ title = quest.getPlaceholders().get("progress"); // fallback title
+ if (title != null) {
+ break titleSearch;
+ }
+
+ return; // no valid title format found
}
- title = ChatColor.translateAlternateColorCodes('&', QItemStack.processPlaceholders(title, taskProgress));
- if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) {
+ title = QItemStack.processPlaceholders(title, taskProgress);
+
+ boolean usePlaceholderAPI = plugin.getQuestsConfig().getBoolean("options.progress-use-placeholderapi", false);
+ if (usePlaceholderAPI) {
title = plugin.getPlaceholderAPIProcessor().apply(player, title);
}
+ title = Chat.legacyColor(title);
+
if (useBossBarProgress || (useBossBarComplete && taskProgress.isCompleted())) {
Object progress = taskProgress.getProgress();
Double bossBarProgress = null;
@@ -186,7 +212,7 @@ public class TaskUtils {
}
}
- int bossBarTime = plugin.getConfig().getInt("options.bossbar.time", 10);
+ int bossBarTime = plugin.getConfig().getInt("options.bossbar.time", 5);
if (bossBarProgress != null) {
float bossBarFloatProgress = (float) Math.min(1.0d, Math.max(0.0d, bossBarProgress));