aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-05 10:48:37 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-05 10:48:37 +0100
commit8645e88c5cb5132bfe8824b7f814e23a60b0f5c0 (patch)
treedfd68825ed71e48dea33124794dd17b5c2d315ac
parent0e33389d4f9ae1dc9067fd813dce2903868d294c (diff)
Improve autotrack and add more configuration
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/element/QuestMenuElement.java7
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java12
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java36
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java23
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml12
5 files changed, 60 insertions, 30 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);
}
}
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index 258fdf46..bc7cd0f9 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -186,8 +186,6 @@ options:
titles-enabled: true
# Players cannot start any more quests than this at a single time
quest-started-limit: 2
- # Hide locked quests, quests on cooldown and completed (but not repeatable) quests
- gui-hide-locked: false
# Allow players to cancel a quest (you may want to remove the cancel instructions in the global item lore)
allow-quest-cancel: true
# Allow players to track a quest (you may want to remove the tracking instructions in the global item lore)
@@ -206,15 +204,19 @@ options:
quest-complete: "UI_TOAST_CHALLENGE_COMPLETE:1.25:3"
gui:
open: "ITEM_BOOK_PAGE_TURN:1:3"
- interact: "ITEM_BOOK_PAGE_TURN1:3"
+ interact: ""
# Show when quests register in console - will only show if verbose-logging-level=2. Disable if you want less console spam at startup.
show-quest-registrations: true
+ # Hide locked quests, quests on cooldown and completed (but not repeatable) quests
+ gui-hide-locked: false
# Hide quests which a player cannot start due to permissions.
gui-hide-quests-nopermission: false
# Hide categories which a player cannot open due to permissions.
gui-hide-categories-nopermission: false
# Replace placeholders from PlaceholderAPI in Quests GUI items
gui-use-placeholderapi: false
+ # Truncate quest requirements when there are multiple requirements to prevent enormous display items
+ gui-truncate-requirements: true
# Make it so players do not have to start quest themselves
quest-autostart: false
# Automatically track quests on start, and stop tracking on completion
@@ -364,4 +366,6 @@ messages:
command-quest-admin-category-permission: "&7Category &c{category} &7 could not be opened for player &c{player}&7. They do not have permission to view it."
command-quest-admin-complete-success: "&7Quest &c{quest} &7completed for player &c{player}&7."
command-quest-admin-reset-success: "&7Successfully reset quest '&c{quest}&7' for player &c{player}&7."
-
+ ui-placeholder-completed-true: "true"
+ ui-placeholder-completed-false: "false"
+ ui-placeholder-truncated: " +{amount} more"