diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2023-08-07 18:39:10 +0100 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2023-08-07 18:39:53 +0100 |
| commit | ae262e0a4f4d10ace61350c7033a6aa85966e8e7 (patch) | |
| tree | ca2b885779b0d45c5d4d0871646d07d2574ed742 /bukkit/src | |
| parent | 104e1f66a99f0bea00828e51d8c8ceb19a61904d (diff) | |
Add time limit placeholder (closes #524)
Diffstat (limited to 'bukkit/src')
4 files changed, 29 insertions, 1 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 040f8821..7adfcaf6 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 @@ -188,6 +188,14 @@ public class QuestsPlaceholders extends PlaceholderExpansion implements Cacheabl result = "0"; } break; + case "timeleft": + if (qPlayer.hasStartedQuest(quest)) { + long timeLeft = qPlayer.getQuestProgressFile().getTimeRemainingFor(quest); + result = timeLeft != -1 ? Format.formatTime(TimeUnit.SECONDS.convert(timeLeft, TimeUnit.MILLISECONDS)) : Messages.PLACEHOLDERAPI_NO_TIME_LIMIT.getMessage(); + } else { + result = "0"; + } + break; case "canaccept": result = (qPlayer.canStartQuest(quest) == QuestStartResult.QUEST_SUCCESS ? Messages.PLACEHOLDERAPI_TRUE.getMessageLegacyColor() : Messages.PLACEHOLDERAPI_FALSE.getMessageLegacyColor()); break; 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 f82ba0fe..48439fed 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 @@ -1,10 +1,12 @@ package com.leonardobishop.quests.bukkit.menu.itemstack; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.util.Format; import com.leonardobishop.quests.bukkit.util.Messages; import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; +import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile; import com.leonardobishop.quests.common.quest.Quest; import org.bukkit.Bukkit; import org.bukkit.enchantments.Enchantment; @@ -16,6 +18,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -115,6 +118,7 @@ public class QItemStack { if (questProgress != null) { for (String s : tempLore) { s = processPlaceholders(s, questProgress); + s = processTimeLeft(s, quest, qPlayer.getQuestProgressFile()); if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { s = plugin.getPlaceholderAPIProcessor().apply(player, s); } @@ -158,4 +162,14 @@ public class QItemStack { } return s; } -} + + public static String processTimeLeft(String s, Quest quest, QuestProgressFile questProgressFile) { + String timeLeft; + if (quest.isTimeLimitEnabled()) { + timeLeft = Format.formatTime(TimeUnit.SECONDS.convert(questProgressFile.getTimeRemainingFor(quest), TimeUnit.MILLISECONDS)); + } else { + timeLeft = Chat.legacyColor(Messages.UI_PLACEHOLDERS_NO_TIME_LIMIT.getMessageLegacyColor()); + } + return s.replace("{timeleft}", timeLeft); + } +}
\ No newline at end of file diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java index d2aaf448..fc0035c9 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java @@ -71,9 +71,12 @@ public enum Messages { UI_PLACEHOLDERS_TRUE("messages.ui-placeholder-completed-true", "true"), UI_PLACEHOLDERS_FALSE("messages.ui-placeholder-completed-false", "false"), UI_PLACEHOLDERS_TRUNCATED("messages.ui-placeholder-truncated", " +{amount} more"), + UI_PLACEHOLDERS_NO_TIME_LIMIT("messages.ui-placeholder-no-time-limit", "No time limit"), PLACEHOLDERAPI_TRUE("messages.placeholderapi-true", "true"), PLACEHOLDERAPI_FALSE("messages.placeholderapi-false", "false"), PLACEHOLDERAPI_NO_TRACKED_QUEST("messages.placeholderapi-no-tracked-quest", "No tracked quest"), + PLACEHOLDERAPI_QUEST_NOT_STARTED("messages.placeholderapi-quest-not-started", "Quest not started"), + PLACEHOLDERAPI_NO_TIME_LIMIT("messages.placeholderapi-no-time-limit", "No time limit"), PLACEHOLDERAPI_DATA_NOT_LOADED("messages.placeholderapi-data-not-loaded", "Data not loaded"); static { diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml index bdad74a5..e15732ad 100644 --- a/bukkit/src/main/resources/resources/bukkit/config.yml +++ b/bukkit/src/main/resources/resources/bukkit/config.yml @@ -415,9 +415,12 @@ messages: ui-placeholder-completed-true: "true" ui-placeholder-completed-false: "false" ui-placeholder-truncated: " +{amount} more" + ui-placeholder-no-time-limit: "No time limit" placeholderapi-true: "true" placeholderapi-false: "false" placeholderapi-no-tracked-quest: "No tracked quest" + placeholderapi-quest-not-started: "Quest not started" + placeholderapi-no-time-limit: "No time limit" placeholderapi-data-not-loaded: "Data not loaded" |
