From d43bde0750fdd6a617de502870569e49ffe43fa5 Mon Sep 17 00:00:00 2001 From: kforbro Date: Tue, 26 Oct 2021 12:48:59 +0300 Subject: [PATCH] Custom command denied message for the group --- CommandWhitelistBukkit/pom.xml | 2 +- .../bukkit/CommandWhitelistBukkit.java | 15 +++++++++++++++ .../PlayerCommandPreProcessListener.java | 7 ++++++- .../PacketCommandPreProcessListener.java | 9 ++++++++- .../commandwhitelist/common/CWGroup.java | 11 ++++++----- .../commandwhitelist/common/ConfigCache.java | 9 +++++++-- 6 files changed, 43 insertions(+), 10 deletions(-) diff --git a/CommandWhitelistBukkit/pom.xml b/CommandWhitelistBukkit/pom.xml index 01c2306..606a2ab 100644 --- a/CommandWhitelistBukkit/pom.xml +++ b/CommandWhitelistBukkit/pom.xml @@ -34,7 +34,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.3.0-SNAPSHOT + 3.2.4 package diff --git a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java index 4470ac2..0b0fb16 100644 --- a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java +++ b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java @@ -126,4 +126,19 @@ public class CommandWhitelistBukkit extends JavaPlugin { } return suggestionList; } + + /** + * @param command command + * @return custom command denied message + */ + public static String getCommandDeniedMessage(String command) { + String commandDeniedMessage = ""; + HashMap groups = configCache.getGroupList(); + for (Map.Entry s : groups.entrySet()) { + if (s.getValue().getCommands().contains(command)) { + commandDeniedMessage = s.getValue().getCustomCommandDeniedMessage(); + } + } + return commandDeniedMessage; + } } diff --git a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/PlayerCommandPreProcessListener.java b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/PlayerCommandPreProcessListener.java index 96006cd..eed5454 100644 --- a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/PlayerCommandPreProcessListener.java +++ b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/PlayerCommandPreProcessListener.java @@ -24,7 +24,12 @@ public class PlayerCommandPreProcessListener implements Listener { HashSet commands = CommandWhitelistBukkit.getCommands(player); if (!commands.contains(label)) { event.setCancelled(true); - audiences.player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + config.command_denied)); + String customCommandDeniedMessage = CommandWhitelistBukkit.getCommandDeniedMessage(label); + if (!customCommandDeniedMessage.equals("")) { + audiences.player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + customCommandDeniedMessage)); + } else { + audiences.player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + config.command_denied)); + } return; } diff --git a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/protocollib/PacketCommandPreProcessListener.java b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/protocollib/PacketCommandPreProcessListener.java index 2ba481b..28e5c77 100644 --- a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/protocollib/PacketCommandPreProcessListener.java +++ b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/listeners/protocollib/PacketCommandPreProcessListener.java @@ -12,6 +12,7 @@ import eu.endermite.commandwhitelist.common.CWPermission; import eu.endermite.commandwhitelist.common.CommandUtil; import eu.endermite.commandwhitelist.common.ConfigCache; import eu.endermite.commandwhitelist.common.commands.CWCommand; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -37,9 +38,15 @@ public class PacketCommandPreProcessListener { ConfigCache config = CommandWhitelistBukkit.getConfigCache(); String label = CommandUtil.getCommandLabel(string.toLowerCase()); HashSet commands = CommandWhitelistBukkit.getCommands(player); + BukkitAudiences audiences = CommandWhitelistBukkit.getAudiences(); if (!commands.contains(label)) { event.setCancelled(true); - CommandWhitelistBukkit.getAudiences().player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + config.command_denied)); + String customCommandDeniedMessage = CommandWhitelistBukkit.getCommandDeniedMessage(label); + if (!customCommandDeniedMessage.equals("")) { + audiences.player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + customCommandDeniedMessage)); + } else { + audiences.player(player).sendMessage(CWCommand.miniMessage.parse(config.prefix + config.command_denied)); + } return; } diff --git a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/CWGroup.java b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/CWGroup.java index 3563b8e..f3cc4b0 100644 --- a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/CWGroup.java +++ b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/CWGroup.java @@ -4,14 +4,15 @@ import java.util.*; public class CWGroup { - private final String id, permission; + private final String id, permission, custom_command_denied_message; private final HashSet commands = new HashSet<>(); private final HashSet subCommands = new HashSet<>(); - public CWGroup(String id, Collection commands, Collection subCommands) { + public CWGroup(String id, Collection commands, Collection subCommands, String custom_command_denied_message) { this.id = id; this.permission = "commandwhitelist.group."+id; this.commands.addAll(commands); + this.custom_command_denied_message = custom_command_denied_message; this.subCommands.addAll(subCommands); } @@ -23,9 +24,9 @@ public class CWGroup { return permission; } - public HashSet getCommands() { - return commands; - } + public HashSet getCommands() { return commands; } + + public String getCustomCommandDeniedMessage() { return custom_command_denied_message; } public void addCommand(String command) { commands.add(command); diff --git a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/ConfigCache.java b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/ConfigCache.java index 32d0042..c45cf77 100644 --- a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/ConfigCache.java +++ b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/ConfigCache.java @@ -51,9 +51,11 @@ public class ConfigCache { exampleCommands.add("example"); List exampleSubCommands = new ArrayList<>(); exampleSubCommands.add("example of"); + String exampleCustomCommandDeniedMessage = "You don't have commandwhitelist.group.example permission."; config.addExample("groups.example.commands", exampleCommands, "This is the WHITELIST of commands that players will be able to see/use in the group \"example\""); config.addExample("groups.example.subcommands", exampleSubCommands, "This is the BLACKLIST of subcommands that players will NOT be able to see/use in the group \"example\""); + config.addExample("groups.example.custom_command_denied_message", exampleCustomCommandDeniedMessage, "This is a custom message that players will see if they do not have commandwhitelist.group. permission.\ncommandwhitelist.group.example in this case\nIf you don't want to use a custom message, set custom_command_denid_message: \"\""); config.addComment("groups.example", "All groups except from default require commandwhitelist.group. permission\ncommandwhitelist.group.example in this case\n If you wish to leave the list empty, put \"commands: []\" or \"subcommands: []\""); } @@ -75,7 +77,9 @@ public class ConfigCache { List defaultSubcommands = new ArrayList<>(); defaultSubcommands.add("help about"); - config.addDefault("groups.default", new CWGroup("default", defaultCommands, defaultSubcommands).serialize()); + String defaultCustomCommandDeniedMessage = ""; + + config.addDefault("groups.default", new CWGroup("default", defaultCommands, defaultSubcommands, defaultCustomCommandDeniedMessage).serialize()); prefix = config.getString("messages.prefix"); command_denied = config.getString("messages.command_denied"); @@ -130,7 +134,8 @@ public class ConfigCache { } List subCommands = section.getStringList(id + ".subcommands"); - return new CWGroup(id, commands, subCommands); + String customCommandDeniedMessage = section.getString(id + ".custom_command_denied_message"); + return new CWGroup(id, commands, subCommands, customCommandDeniedMessage); } public void saveCWGroup(String id, CWGroup group) {