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/hook/papi/QuestsPlaceholders.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java31
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java2
3 files changed, 26 insertions, 9 deletions
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 728672e9..26b78f22 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
@@ -254,7 +254,7 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl
QuestProgress questProgress = qPlayer.getQuestProgressFile().getQuestProgressOrNull(quest);
assert questProgress != null;
- placeholder = QItemStack.processPlaceholders(Chat.legacyColor(placeholder), questProgress);
+ placeholder = QItemStack.processPlaceholders(plugin, Chat.legacyColor(placeholder), questProgress);
return placeholder;
} else {
return args[0] + "_" + args[1] + " is not a valid placeholder";
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java
index 8c7d5793..cb3d29fe 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java
@@ -9,6 +9,8 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress;
import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile;
import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress;
import com.leonardobishop.quests.common.quest.Quest;
+import com.leonardobishop.quests.common.quest.Task;
+import com.leonardobishop.quests.common.tasktype.TaskType;
import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
@@ -119,7 +121,7 @@ public class QItemStack {
}
if (questProgress != null) {
for (String s : tempLore) {
- s = processPlaceholders(s, questProgress);
+ s = processPlaceholders(plugin, s, questProgress);
s = processTimeLeft(s, quest, qPlayer.getQuestProgressFile());
if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) {
s = plugin.getPlaceholderAPIProcessor().apply(player, s);
@@ -134,11 +136,11 @@ public class QItemStack {
public static final Pattern TASK_PLACEHOLDER_PATTERN = Pattern.compile("\\{([^}]+):(progress|goal|complete|id)}");
- public static String processPlaceholders(String s, QuestProgress questProgress) {
- return processPlaceholders(s, questProgress, null);
+ public static String processPlaceholders(BukkitQuestsPlugin plugin, String s, QuestProgress questProgress) {
+ return processPlaceholders(plugin, s, questProgress, null);
}
- public static String processPlaceholders(String s, QuestProgress questProgress, TaskProgress taskProgress) {
+ public static String processPlaceholders(BukkitQuestsPlugin plugin, String s, QuestProgress questProgress, TaskProgress taskProgress) {
Matcher matcher = TASK_PLACEHOLDER_PATTERN.matcher(s);
while (matcher.find()) {
@@ -148,7 +150,7 @@ public class QItemStack {
if (taskProgress != null && taskIdPart.equals("this")) {
matchedTaskProgress = taskProgress;
} else {
- matchedTaskProgress = questProgress.getTaskProgress(taskIdPart);
+ matchedTaskProgress = questProgress.getTaskProgressOrNull(taskIdPart);
}
if (matchedTaskProgress == null) {
@@ -173,7 +175,22 @@ public class QItemStack {
}
}
- // TODO add goal
+ // goal placeholders
+ case "goal" -> {
+ Quest quest = plugin.getQuestManager().getQuestById(questProgress.getQuestId());
+ Task task = quest != null ? quest.getTaskById(matchedTaskProgress.getTaskId()) : null;
+ TaskType taskType = task != null ? plugin.getTaskTypeManager().getTaskType(task.getType()) : null;
+ Object goal = taskType != null ? taskType.getGoal(task) : null;
+ if (goal instanceof Float || goal instanceof Double || goal instanceof BigDecimal) {
+ replacement = FormatUtils.floating((Number) goal);
+ } else if (goal instanceof Integer || goal instanceof Long || goal instanceof BigInteger) {
+ replacement = FormatUtils.integral((Number) goal);
+ } else if (goal != null) {
+ replacement = String.valueOf(goal);
+ } else {
+ replacement = String.valueOf(0);
+ }
+ }
// completion placeholders
case "complete" -> {
@@ -211,4 +228,4 @@ public class QItemStack {
}
return s.replace("{timeleft}", timeLeft);
}
-} \ No newline at end of file
+}
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 02870462..5594211f 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
@@ -221,7 +221,7 @@ public class TaskUtils {
}
QuestProgress questProgress = pendingTask.questProgress();
- title = QItemStack.processPlaceholders(title, questProgress, taskProgress);
+ title = QItemStack.processPlaceholders(plugin, title, questProgress, taskProgress);
boolean usePlaceholderAPI = plugin.getQuestsConfig().getBoolean("options.progress-use-placeholderapi", false);
if (usePlaceholderAPI) {