aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-28 13:47:40 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-28 13:47:40 +0100
commit6f21bc6a50603cc9bc82b099633455b9ef915b7b (patch)
treea532fb8af45b1ea177c3f741fdee353e1bad70b7
parent0f20e39d4f29770e7aaf6b83ab398b70142b3e32 (diff)
Add cancel shortcut command (closes #283)
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java56
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java1
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml1
4 files changed, 60 insertions, 0 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java
new file mode 100644
index 00000000..73d2fd61
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java
@@ -0,0 +1,56 @@
+package com.leonardobishop.quests.bukkit.command;
+
+import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
+import com.leonardobishop.quests.bukkit.util.Messages;
+import com.leonardobishop.quests.common.player.QPlayer;
+import com.leonardobishop.quests.common.quest.Quest;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collections;
+import java.util.List;
+
+public class CancelCommandHandler implements CommandHandler {
+
+ private final BukkitQuestsPlugin plugin;
+
+ public CancelCommandHandler(BukkitQuestsPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public void handle(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ player.sendMessage(Messages.COMMAND_DATA_NOT_LOADED.getMessage());
+ return;
+ }
+
+ Quest quest;
+ if (qPlayer.getQuestProgressFile().getStartedQuests().size() == 1) {
+ quest = qPlayer.getQuestProgressFile().getStartedQuests().get(0);
+ } else if (args.length >= 2) {
+ quest = plugin.getQuestManager().getQuestById(args[1]);
+ if (quest == null) {
+ sender.sendMessage(Messages.COMMAND_QUEST_GENERAL_DOESNTEXIST.getMessage().replace("{quest}", args[1]));
+ return;
+ }
+ } else {
+ sender.sendMessage(Messages.COMMAND_QUEST_CANCEL_SPECIFY.getMessage());
+ return;
+ }
+ qPlayer.cancelQuest(quest);
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String[] args) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public @Nullable String getPermission() {
+ return null;
+ }
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java
index 993b686b..e1216293 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java
@@ -28,6 +28,7 @@ public class QuestsCommandSwitcher extends CommandSwitcher implements TabExecuto
super.subcommands.put("random", new RandomCommandHandler(plugin));
super.subcommands.put("started", new StartedCommandHandler(plugin));
super.subcommands.put("admin", new AdminCommandSwitcher(plugin));
+ super.subcommands.put("cancel", new CancelCommandHandler(plugin));
super.aliases.put("q", "quest");
super.aliases.put("c", "category");
@@ -83,6 +84,7 @@ public class QuestsCommandSwitcher extends CommandSwitcher implements TabExecuto
sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests c/category <categoryid> " + ChatColor.DARK_GRAY + ": open category by ID");
sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests q/quest <questid> (start|cancel|track) " + ChatColor.DARK_GRAY + ": start, cancel or track quest by ID");
sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests started " + ChatColor.DARK_GRAY + ": show started quests");
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests cancel [questid]" + ChatColor.DARK_GRAY + ": cancel active quest/quest bu name");
if (sender.hasPermission(subcommands.get("random").getPermission())) {
sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests random " + ChatColor.DARK_GRAY + ": show random quests");
}
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 7d87a399..a3cf4bee 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
@@ -32,6 +32,7 @@ public enum Messages {
QUEST_UPDATER("messages.quest-updater", "&cQuests > &7A new version &c{newver} &7was found on Spigot (your version: &c{oldver}&7). Please update me! <3 - Link: {link}"),
COMMAND_DATA_NOT_LOADED("messages.command-data-not-loaded", "&4Your quests progress file has not been loaded; you cannot use quests. If this issue persists, contact an admin."),
COMMAND_SUB_DOESNTEXIST("messages.command-sub-doesntexist", "&7The specified subcommand '&c{sub}' &7does not exist."),
+ COMMAND_QUEST_CANCEL_SPECIFY("messages.quest-cancel-specify", "&7You must specify a quest to cancel."),
COMMAND_QUEST_START_DOESNTEXIST("messages.command-quest-start-doesntexist", "&7The specified quest '&c{quest}&7' does not exist."),
COMMAND_QUEST_GENERAL_DOESNTEXIST("messages.command-quest-general-doesntexist", "&7The specified quest '&c{quest}&7' does not exist."),
COMMAND_QUEST_OPENCATEGORY_ADMIN_SUCCESS("messages.command-quest-opencategory-admin-success", "&7Opened category &c{category} &7for player &c{player}&7."),
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index bd1b281a..6f961778 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -316,6 +316,7 @@ messages:
quest-updater: "&cQuests > &7A new version &c{newver} &7was found on Spigot (your version: &c{oldver}&7). Please update me! <3 - Link: {link}"
command-data-not-loaded: "&4Your quests progress file has not been loaded; you cannot use quests. If this issue persists, contact an admin."
command-sub-doesntexist: "&7The specified subcommand '&c{sub}' &7does not exist."
+ command-quest-cancel-specify: "&7You must specify a quest to cancel."
command-quest-start-doesntexist: "&7The specified quest '&c{quest}&7' does not exist."
command-quest-general-doesntexist: "&7The specified quest '&c{quest}&7' does not exist."
command-category-open-disabled: "&7Categories are disabled."