aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2024-02-20 11:39:40 +0100
committerLeonardo Bishop <13875753+LMBishop@users.noreply.github.com>2024-02-22 16:32:19 +0000
commit52ded1a703d94a0354bb6b28ba6b4946e51dbf97 (patch)
tree735e0ad3e99c9a4b3ab0e8d7ad3173d790ad59af
parent16794d9398de66a7625d5bb52b85b04271237abe (diff)
Add expiry commands option
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java8
-rw-r--r--common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java18
-rw-r--r--docs/configuration/creating-a-quest.md14
4 files changed, 42 insertions, 0 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
index 39146730..7c6a5be0 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsLoader.java
@@ -269,6 +269,7 @@ public class BukkitQuestsLoader implements QuestsLoader {
List<String> startString = config.getStringList("startstring");
List<String> startCommands = config.getStringList("startcommands");
List<String> cancelCommands = config.getStringList("cancelcommands");
+ List<String> expiryCommands = config.getStringList("expirycommands");
boolean repeatable = config.getBoolean("options.repeatable", false);
boolean cooldown = config.getBoolean("options.cooldown.enabled", false);
boolean timeLimit = config.getBoolean("options.time-limit.enabled", false);
@@ -300,6 +301,7 @@ public class BukkitQuestsLoader implements QuestsLoader {
.withStartString(startString)
.withStartCommands(startCommands)
.withCancelCommands(cancelCommands)
+ .withExpiryCommands(expiryCommands)
.withPlaceholders(placeholders)
.withProgressPlaceholders(progressPlaceholders)
.withCooldown(cooldownTime)
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 01cc2788..47f108b5 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
@@ -329,6 +329,14 @@ public class NormalQuestController implements QuestController {
Bukkit.getPluginManager().callEvent(questCancelEvent);
// PlayerCancelQuestEvent -- end
Messages.send(questCancelEvent.getQuestExpireMessage(), player);
+ for (String s : quest.getExpiryCommands()) {
+ s = s.replace("{player}", player.getName());
+ if (plugin.getConfig().getBoolean("options.quests-use-placeholderapi")) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), plugin.getPlaceholderAPIProcessor().apply(player, s));
+ } else {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s);
+ }
+ }
}
if (config.getBoolean("options.allow-quest-track")
&& config.getBoolean("options.quest-autotrack")
diff --git a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java
index 6af3fcf3..3e7fc193 100644
--- a/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java
+++ b/common/src/main/java/com/leonardobishop/quests/common/quest/Quest.java
@@ -22,6 +22,7 @@ public class Quest implements Comparable<Quest> {
private List<String> startString;
private List<String> startCommands;
private List<String> cancelCommands;
+ private List<String> expiryCommands;
private boolean repeatEnabled;
private boolean cooldownEnabled;
private int cooldown;
@@ -173,6 +174,16 @@ public class Quest implements Comparable<Quest> {
}
/**
+ * Get the expiry commands for this quest.
+ * The expiry commands is a list of commands to be executed upon expiring the quest.
+ *
+ * @return immutable list of commands
+ */
+ public List<String> getExpiryCommands() {
+ return Collections.unmodifiableList(expiryCommands);
+ }
+
+ /**
* Get if this quest can be repeated after completion.
*
* @return boolean
@@ -306,6 +317,7 @@ public class Quest implements Comparable<Quest> {
private List<String> startString = Collections.emptyList();
private List<String> startCommands = Collections.emptyList();
private List<String> cancelCommands = Collections.emptyList();
+ private List<String> expiryCommands = Collections.emptyList();
private boolean repeatEnabled = false;
private boolean cooldownEnabled = false;
private int cooldown = 0;
@@ -354,6 +366,11 @@ public class Quest implements Comparable<Quest> {
return this;
}
+ public Builder withExpiryCommands(List<String> expiryCommands) {
+ this.expiryCommands = expiryCommands;
+ return this;
+ }
+
public Builder withSortOrder(int sortOrder) {
this.sortOrder = sortOrder;
return this;
@@ -428,6 +445,7 @@ public class Quest implements Comparable<Quest> {
quest.startString = this.startString;
quest.startCommands = this.startCommands;
quest.cancelCommands = this.cancelCommands;
+ quest.expiryCommands = this.expiryCommands;
quest.repeatEnabled = this.repeatEnabled;
quest.cooldownEnabled = this.cooldownEnabled;
quest.cooldown = this.cooldown;
diff --git a/docs/configuration/creating-a-quest.md b/docs/configuration/creating-a-quest.md
index 6b47e3e6..eb9f1850 100644
--- a/docs/configuration/creating-a-quest.md
+++ b/docs/configuration/creating-a-quest.md
@@ -155,6 +155,20 @@ cancelcommands:
- "broadcast {player} has cancelled a quest"
```
+## Expiry commands
+
+
+*`expirycommands`*
+
+**Optional.** This is a list of commands which will be executed when the
+the player's quest expires. You can use `{player}` and the player's name
+will be substituted in place.
+
+``` yaml
+expirycommands:
+ - "broadcast {player}'s quest has expired"
+```
+
## Start string