aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java
diff options
context:
space:
mode:
authorsnake <admin@viasnake.com>2022-12-19 00:31:17 +0900
committerGitHub <noreply@github.com>2022-12-18 15:31:17 +0000
commit5743352d1f41d6c097b80e9ac666da474295fcfb (patch)
tree772aca8d20a4353514d508068bb658a7bac30e28 /bukkit/src/main/java
parent2cad3195259a4b47fe9d61dd9263762b4dbbe46b (diff)
Add command permissions
Diffstat (limited to 'bukkit/src/main/java')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java5
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CategoryCommandHandler.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CommandSwitcher.java9
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestCommandHandler.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommandSwitcher.java24
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartCommandHandler.java57
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartedCommandHandler.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/TrackCommandHandler.java57
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/Messages.java1
9 files changed, 149 insertions, 10 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
index e2cba558..0eb16537 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CancelCommandHandler.java
@@ -52,11 +52,14 @@ public class CancelCommandHandler implements CommandHandler {
@Override
public List<String> tabComplete(CommandSender sender, String[] args) {
+ if (args.length == 2) {
+ return TabHelper.tabCompleteQuests(args[1]);
+ }
return Collections.emptyList();
}
@Override
public @Nullable String getPermission() {
- return null;
+ return "quests.command.cancel";
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CategoryCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CategoryCommandHandler.java
index a21e0ccd..d536b3ca 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CategoryCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CategoryCommandHandler.java
@@ -54,7 +54,7 @@ public class CategoryCommandHandler implements CommandHandler {
@Override
public @Nullable String getPermission() {
- return null;
+ return "quests.command.category";
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CommandSwitcher.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CommandSwitcher.java
index 1280ee5a..f920c8f2 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CommandSwitcher.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/CommandSwitcher.java
@@ -1,5 +1,6 @@
package com.leonardobishop.quests.bukkit.command;
+import com.leonardobishop.quests.bukkit.util.Messages;
import org.bukkit.command.CommandSender;
import java.util.*;
@@ -19,8 +20,12 @@ public abstract class CommandSwitcher implements CommandHandler {
if (args.length > switchingIndex) {
String subcommand = args[switchingIndex].toLowerCase();
CommandHandler handler = subcommands.getOrDefault(subcommand, subcommands.get(aliases.get(subcommand)));
- if (handler != null && (handler.getPermission() == null || sender.hasPermission(handler.getPermission()))) {
- handler.handle(sender, args);
+ if (handler != null) {
+ if ((handler.getPermission() == null || sender.hasPermission(handler.getPermission()))) {
+ handler.handle(sender, args);
+ } else {
+ Messages.COMMAND_NO_PERMISSION.send(sender);
+ }
return;
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestCommandHandler.java
index a827d7cb..882a38b2 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestCommandHandler.java
@@ -61,7 +61,7 @@ public class QuestCommandHandler implements CommandHandler {
@Override
public @Nullable String getPermission() {
- return null;
+ return "quests.command.quest";
}
}
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 d253a1a3..c880a851 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
@@ -27,6 +27,8 @@ 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("start", new StartCommandHandler(plugin));
+ super.subcommands.put("track", new TrackCommandHandler(plugin));
super.subcommands.put("cancel", new CancelCommandHandler(plugin));
super.aliases.put("q", "quest");
@@ -80,10 +82,24 @@ public class QuestsCommandSwitcher extends CommandSwitcher implements TabExecuto
.getDescription().getVersion() + " " + ChatColor.GRAY.toString() + ChatColor.STRIKETHROUGH + "]=------------");
sender.sendMessage(ChatColor.GRAY + "The following commands are available: ");
sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests " + ChatColor.DARK_GRAY + ": show quests");
- 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 by name");
+ if (sender.hasPermission(subcommands.get("category").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests c/category <categoryid> " + ChatColor.DARK_GRAY + ": open category by ID");
+ }
+ if (sender.hasPermission(subcommands.get("started").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests started " + ChatColor.DARK_GRAY + ": show started quests");
+ }
+ if (sender.hasPermission(subcommands.get("quest").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests q/quest <questid> (start|cancel|track) " + ChatColor.DARK_GRAY + ": start, cancel or track quest by ID");
+ }
+ if (sender.hasPermission(subcommands.get("start").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests start <questid>" + ChatColor.DARK_GRAY + ": start quest by name");
+ }
+ if (sender.hasPermission(subcommands.get("track").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests track <questid>" + ChatColor.DARK_GRAY + ": track quest by name");
+ }
+ if (sender.hasPermission(subcommands.get("cancel").getPermission())) {
+ sender.sendMessage(ChatColor.DARK_GRAY + " * " + ChatColor.RED + "/quests cancel [questid]" + ChatColor.DARK_GRAY + ": cancel active quest by 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/command/StartCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartCommandHandler.java
new file mode 100644
index 00000000..dae14d50
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartCommandHandler.java
@@ -0,0 +1,57 @@
+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.ChatColor;
+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 StartCommandHandler implements CommandHandler {
+
+ private final BukkitQuestsPlugin plugin;
+
+ public StartCommandHandler(BukkitQuestsPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public void handle(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ if (args.length >= 2) {
+ Quest quest = plugin.getQuestManager().getQuestById(args[1]);
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ Messages.COMMAND_DATA_NOT_LOADED.send(player);
+ return;
+ }
+ if (quest == null) {
+ Messages.COMMAND_QUEST_GENERAL_DOESNTEXIST.send(sender, "{quest}", args[1]);
+ return;
+ } else {
+ qPlayer.startQuest(quest);
+ }
+ return;
+ }
+ sender.sendMessage(ChatColor.RED + "/quests start <questid>");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String[] args) {
+ if (args.length == 2) {
+ return TabHelper.tabCompleteQuests(args[1]);
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public @Nullable String getPermission() {
+ return "quests.command.start";
+ }
+
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartedCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartedCommandHandler.java
index 5433f7b3..0eacba4a 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartedCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/StartedCommandHandler.java
@@ -36,6 +36,6 @@ public class StartedCommandHandler implements CommandHandler {
@Override
public @Nullable String getPermission() {
- return null;
+ return "quests.command.started";
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/TrackCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/TrackCommandHandler.java
new file mode 100644
index 00000000..75b19a84
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/TrackCommandHandler.java
@@ -0,0 +1,57 @@
+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.ChatColor;
+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 TrackCommandHandler implements CommandHandler {
+
+ private final BukkitQuestsPlugin plugin;
+
+ public TrackCommandHandler(BukkitQuestsPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ @Override
+ public void handle(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ if (args.length >= 2) {
+ Quest quest = plugin.getQuestManager().getQuestById(args[1]);
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) {
+ Messages.COMMAND_DATA_NOT_LOADED.send(player);
+ return;
+ }
+ if (quest == null) {
+ Messages.COMMAND_QUEST_GENERAL_DOESNTEXIST.send(sender, "{quest}", args[1]);
+ return;
+ } else {
+ qPlayer.trackQuest(quest);
+ }
+ return;
+ }
+ sender.sendMessage(ChatColor.RED + "/quests track <questid>");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String[] args) {
+ if (args.length == 2) {
+ return TabHelper.tabCompleteQuests(args[1]);
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public @Nullable String getPermission() {
+ return "quests.command.track";
+ }
+
+}
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 c6d3525e..d2aaf448 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
@@ -35,6 +35,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_NO_PERMISSION("messages.command-no-permission", "&7You do not have permission to use this command."),
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."),