diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-07-05 10:48:37 +0100 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-07-05 10:48:37 +0100 |
| commit | 8645e88c5cb5132bfe8824b7f814e23a60b0f5c0 (patch) | |
| tree | dfd68825ed71e48dea33124794dd17b5c2d315ac /bukkit/src/main/java/com | |
| parent | 0e33389d4f9ae1dc9067fd813dce2903868d294c (diff) | |
Improve autotrack and add more configuration
Diffstat (limited to 'bukkit/src/main/java/com')
4 files changed, 52 insertions, 26 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java index 8df5454a..577ac581 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java @@ -5,6 +5,7 @@ import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStack; import com.leonardobishop.quests.bukkit.util.Format; import com.leonardobishop.quests.bukkit.util.MenuUtils; +import com.leonardobishop.quests.bukkit.util.Messages; import com.leonardobishop.quests.bukkit.util.chat.Chat; import com.leonardobishop.quests.common.enums.QuestStartResult; import com.leonardobishop.quests.common.player.QPlayer; @@ -64,7 +65,11 @@ public class QuestMenuElement extends MenuElement { } Map<String, String> placeholders = new HashMap<>(); placeholders.put("{quest}", Chat.strip(qItemStack.getName())); - placeholders.put("{requirements}", String.join(", ", quests)); + if (quests.size() > 1 && plugin.getConfig().getBoolean("options.gui-truncate-requirements", true)) { + placeholders.put("{requirements}", quests.get(0) + Messages.UI_PLACEHOLDERS_TRUNCATED.getMessage().replace("{amount}", String.valueOf(quests.size() - 1))); + } else { + placeholders.put("{requirements}", String.join(", ", quests)); + } return MenuUtils.applyPlaceholders(plugin, owner.getPlayerUUID(), config.getItem("gui.quest-locked-display"), placeholders); } else if (status == QuestStartResult.QUEST_ALREADY_COMPLETED) { Map<String, String> placeholders = new HashMap<>(); 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 4275d934..1ac9b4ba 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,6 +1,7 @@ package com.leonardobishop.quests.bukkit.menu.itemstack; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +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; @@ -103,9 +104,7 @@ public class QItemStack { try { ism.addItemFlags(ItemFlag.HIDE_ENCHANTS); ism.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - } catch (Exception ignored) { - - } + } catch (Exception ignored) { } } else { tempLore.addAll(globalLoreAppendNotStarted); } @@ -139,7 +138,12 @@ public class QItemStack { s = s.replace("{" + m.group(1) + "}", (str.equals("null") ? String.valueOf(0) : str)); } if (parts[1].equals("complete")) { - String str = String.valueOf(questProgress.getTaskProgress(parts[0]).isCompleted()); + String str; + if (questProgress.getTaskProgress(parts[0]).isCompleted()) { + str = Messages.UI_PLACEHOLDERS_TRUE.getMessage(); + } else { + str = Messages.UI_PLACEHOLDERS_FALSE.getMessage(); + } s = s.replace("{" + m.group(1) + "}", str); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index b538c209..08ee62d2 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -100,8 +100,7 @@ public class NormalQuestController implements QuestController { taskProgress.setCompleted(false); taskProgress.setProgress(null); } - if (config.getBoolean("options.allow-quest-track") - && config.getBoolean("options.quest-autotrack")) { + if (config.getBoolean("options.allow-quest-track") && config.getBoolean("options.quest-autotrack")) { qPlayer.trackQuest(quest); } questProgress.setCompleted(false); @@ -191,9 +190,8 @@ public class NormalQuestController implements QuestController { questProgress.setCompleted(true); questProgress.setCompletedBefore(true); questProgress.setCompletionDate(System.currentTimeMillis()); - if (config.getBoolean("options.allow-quest-track") && config.getBoolean("options.quest-autotrack") - && !(quest.isRepeatable() && !quest.isCooldownEnabled())) { - qPlayer.trackQuest(null); + if (config.getBoolean("options.allow-quest-track")) { + trackNextQuest(qPlayer, quest); } Player player = Bukkit.getPlayer(qPlayer.getPlayerUUID()); if (player != null) { @@ -220,14 +218,6 @@ public class NormalQuestController implements QuestController { } SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-complete")); } - if ((config.getBoolean("options.allow-quest-track") && config.getBoolean("options.quest-autotrack") && !(quest.isRepeatable() && !quest.isCooldownEnabled())) - || (!config.getBoolean("options.allow-quest-track") && config.getBoolean("options.quest-autotrack"))) { - Quest nextQuest; - if (qPlayer.getQuestProgressFile().getStartedQuests().size() > 0) { - nextQuest = qPlayer.getQuestProgressFile().getStartedQuests().get(0); - qPlayer.trackQuest(nextQuest); - } - } return true; } @@ -271,6 +261,11 @@ public class NormalQuestController implements QuestController { } SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-cancel")); } + if (config.getBoolean("options.allow-quest-track") + && config.getBoolean("options.quest-autotrack") + && quest.getId().equals(qPlayer.getPlayerPreferences().getTrackedQuestId())) { + trackNextQuest(qPlayer, null); + } return true; } @@ -322,4 +317,19 @@ public class NormalQuestController implements QuestController { return startedQuests; } + private void trackNextQuest(QPlayer qPlayer, Quest previousQuest) { + if (config.getBoolean("options.quest-autotrack") + && (previousQuest == null || !(previousQuest.isRepeatable() && !previousQuest.isCooldownEnabled()))) { + Quest nextQuest; + if (qPlayer.getQuestProgressFile().getStartedQuests().size() > 0) { + nextQuest = qPlayer.getQuestProgressFile().getStartedQuests().get(0); + qPlayer.trackQuest(nextQuest); + } else { + qPlayer.trackQuest(null); + } + } else if (!config.getBoolean("options.quest-autotrack")) { + qPlayer.trackQuest(null); + } + } + } 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 f13d2d7b..02b5c164 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 @@ -57,7 +57,10 @@ public enum Messages { COMMAND_QUEST_ADMIN_START_SUCCESS("messages.command-quest-admin-start-success"), COMMAND_QUEST_ADMIN_CATEGORY_PERMISSION("messages.command-quest-admin-category-permission"), COMMAND_QUEST_ADMIN_COMPLETE_SUCCESS("messages.command-quest-admin-complete-success"), - COMMAND_QUEST_ADMIN_RESET_SUCCESS("messages.command-quest-admin-reset-success"); + COMMAND_QUEST_ADMIN_RESET_SUCCESS("messages.command-quest-admin-reset-success"), + UI_PLACEHOLDERS_TRUE("messages.ui-placeholders-completed-true", "true"), + UI_PLACEHOLDERS_FALSE("messages.ui-placeholders-completed-false", "false"), + UI_PLACEHOLDERS_TRUNCATED("messages.ui-placeholders-truncated", " +{amount} more"); static { plugin = BukkitQuestsPlugin.getPlugin(BukkitQuestsPlugin.class); @@ -66,18 +69,22 @@ public enum Messages { private static final BukkitQuestsPlugin plugin; private final String path; + private final String def; Messages(String path) { this.path = path; + this.def = path; + } + + Messages(String path, String def) { + this.path = path; + this.def = def; } public String getMessage() { - if (plugin.getConfig().contains(path)) { - String message = plugin.getQuestsConfig().getString(path); - if (message != null) { - return Chat.color(message); - } - } - return path; + String message = plugin.getQuestsConfig().getString(path); + if (message.equals(path)) message = def; + + return Chat.color(message); } } |
