diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-10-11 12:09:07 +0200 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2023-11-26 12:59:38 +0000 |
| commit | 9aa600d33ef7537b472a552601a3b8204ce8a07d (patch) | |
| tree | 6a0f24471aa93a306462c024bf6e1f48cfe25d8d | |
| parent | 3f2261869686c0c65203a974e1b32c73cb054296 (diff) | |
Add cancel commands
Partially closes https://github.com/LMBishop/Quests/issues/558
3 files changed, 28 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 4ae992c9..5160ee73 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 @@ -267,6 +267,7 @@ public class BukkitQuestsLoader implements QuestsLoader { List<String> rewardString = config.getStringList("rewardstring"); List<String> startString = config.getStringList("startstring"); List<String> startCommands = config.getStringList("startcommands"); + List<String> cancelCommands = config.getStringList("cancelcommands"); boolean repeatable = config.getBoolean("options.repeatable", false); boolean cooldown = config.getBoolean("options.cooldown.enabled", false); boolean timeLimit = config.getBoolean("options.time-limit.enabled", false); @@ -297,6 +298,7 @@ public class BukkitQuestsLoader implements QuestsLoader { .withRewardString(rewardString) .withStartString(startString) .withStartCommands(startCommands) + .withCancelCommands(cancelCommands) .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 56b37f9a..01cc2788 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 @@ -294,6 +294,14 @@ public class NormalQuestController implements QuestController { Bukkit.getPluginManager().callEvent(questCancelEvent); // PlayerCancelQuestEvent -- end Messages.send(questCancelEvent.getQuestCancelMessage(), player); + for (String s : quest.getCancelCommands()) { + 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); + } + } SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-cancel")); } if (config.getBoolean("options.allow-quest-track") 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 45dfde96..6af3fcf3 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 @@ -21,6 +21,7 @@ public class Quest implements Comparable<Quest> { private List<String> rewardString; private List<String> startString; private List<String> startCommands; + private List<String> cancelCommands; private boolean repeatEnabled; private boolean cooldownEnabled; private int cooldown; @@ -162,6 +163,16 @@ public class Quest implements Comparable<Quest> { } /** + * Get the cancel commands for this quest. + * The cancel commands is a list of commands to be executed upon cancelling the quest. + * + * @return immutable list of commands + */ + public List<String> getCancelCommands() { + return Collections.unmodifiableList(cancelCommands); + } + + /** * Get if this quest can be repeated after completion. * * @return boolean @@ -294,6 +305,7 @@ public class Quest implements Comparable<Quest> { private List<String> rewardString = Collections.emptyList(); private List<String> startString = Collections.emptyList(); private List<String> startCommands = Collections.emptyList(); + private List<String> cancelCommands = Collections.emptyList(); private boolean repeatEnabled = false; private boolean cooldownEnabled = false; private int cooldown = 0; @@ -337,6 +349,11 @@ public class Quest implements Comparable<Quest> { return this; } + public Builder withCancelCommands(List<String> cancelCommands) { + this.cancelCommands = cancelCommands; + return this; + } + public Builder withSortOrder(int sortOrder) { this.sortOrder = sortOrder; return this; @@ -410,6 +427,7 @@ public class Quest implements Comparable<Quest> { quest.rewardString = this.rewardString; quest.startString = this.startString; quest.startCommands = this.startCommands; + quest.cancelCommands = this.cancelCommands; quest.repeatEnabled = this.repeatEnabled; quest.cooldownEnabled = this.cooldownEnabled; quest.cooldown = this.cooldown; |
