From 6ae10141943803d662aecac402a15c2b7d0b453a Mon Sep 17 00:00:00 2001 From: Krakenied Date: Sun, 20 Jul 2025 17:05:45 +0200 Subject: Add goal placeholder Closes https://github.com/LMBishop/Quests/issues/788 --- .../quests/bukkit/hook/papi/QuestsPlaceholders.java | 8 +++++++- .../quests/bukkit/tasktype/type/PlaytimeTaskType.java | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'bukkit/src') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java index 3da9db44..f4a778ea 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/papi/QuestsPlaceholders.java @@ -11,6 +11,7 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; import com.leonardobishop.quests.common.quest.Category; import com.leonardobishop.quests.common.quest.Quest; +import com.leonardobishop.quests.common.quest.Task; import me.clip.placeholderapi.expansion.Cacheable; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; @@ -76,7 +77,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl if (qPlayer == null) return Messages.PLACEHOLDERAPI_DATA_NOT_LOADED.getMessageLegacyColor(); String split = args[args.length - 1]; - String result = "null"; + String result; if (!args[0].contains(":") && !args[0].equalsIgnoreCase("tracked")) { if (args.length > 1 && split.equals(args[1])) split = ","; @@ -233,6 +234,11 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl case "c": result = String.valueOf(questProgress.getTaskProgress(t[1]).isCompleted() ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor()); break; + case "goal": + case "g": + final Task task = quest.getTaskById(t[1]); + result = (task != null ? String.valueOf(plugin.getTaskTypeManager().getTaskType(task.getType()).getGoal(task)) : "0"); + break; default: return args[0] + "_" + args[1] + "_" + args[2] + " is not a valid placeholder"; } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java index 3ca75a16..ea6cb339 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/PlaytimeTaskType.java @@ -14,6 +14,8 @@ import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; public final class PlaytimeTaskType extends BukkitTaskType { @@ -104,4 +106,9 @@ public final class PlaytimeTaskType extends BukkitTaskType { // this.poll.cancel(); // } } + + @Override + public @Nullable Object getGoal(final @NonNull Task task) { + return task.getConfigValue("minutes"); + } } -- cgit v1.2.3-70-g09d2