From 992c6fbf07eeaa87f625b8b670ce1b86f80b31eb Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Mon, 2 Nov 2020 01:02:26 +0100 Subject: [PATCH] randomized command denied message --- pom.xml | 2 +- .../commandwhitelist/api/RandomStuff.java | 26 +++++++++++++++++++ .../bungee/config/BungeeConfigCache.java | 12 ++++++--- .../listeners/BungeeChatEventListener.java | 9 +++++-- .../spigot/CommandWhitelist.java | 2 +- .../spigot/config/ConfigCache.java | 15 +++++------ .../PlayerCommandPreProcessListener.java | 5 +++- 7 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 src/main/java/eu/endermite/commandwhitelist/api/RandomStuff.java diff --git a/pom.xml b/pom.xml index d7b408c..3d3aa43 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ eu.endermite CommandWhitelist - 1.3.2 + 1.3.4 jar CommandWhitelist diff --git a/src/main/java/eu/endermite/commandwhitelist/api/RandomStuff.java b/src/main/java/eu/endermite/commandwhitelist/api/RandomStuff.java new file mode 100644 index 0000000..1be13af --- /dev/null +++ b/src/main/java/eu/endermite/commandwhitelist/api/RandomStuff.java @@ -0,0 +1,26 @@ +package eu.endermite.commandwhitelist.api; + +import java.util.List; +import java.util.Random; + +public class RandomStuff { + + /** + * + * @param list List of strings to pick a random one from + * @param single String that will be used as fallback + * @return Randomized message + */ + + public static String getMessage(List list, String single) { + + if (list == null || list.size() == 0) { + return single; + } + + Random random = new Random(); + int r = random.nextInt(list.size()); + return list.get(r); + } + +} diff --git a/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java b/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java index a90fda2..b92c6b7 100644 --- a/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/config/BungeeConfigCache.java @@ -8,13 +8,15 @@ import java.util.List; public class BungeeConfigCache { - private HashMap> permList = new HashMap<>(); - private String prefix, commandDenied, noPermission, noSubCommand, configReloaded; + private final HashMap> permList = new HashMap<>(); + private final String prefix, commandDenied, noPermission, noSubCommand, configReloaded; + private List commandDeniedList; public BungeeConfigCache(Configuration config) { prefix = config.getString("messages.prefix"); - commandDenied = config.getString("messages.command-denied"); + commandDenied = config.getString("messages.command-denied", null); + commandDeniedList = config.getStringList("messages.command-denied"); noPermission = config.getString("messages.no-permission"); noSubCommand = config.getString("messages.no-such-subcommand"); configReloaded = config.getString("messages.config-reloaded"); @@ -28,9 +30,11 @@ public class BungeeConfigCache { public HashMap> getPermList() { return permList; } - public String getPrefix() {return prefix;} public String getCommandDenied() {return commandDenied;} + public List getCommandDeniedList() { + return commandDeniedList; + } public String getNoPermission() {return noPermission;} public String getNoSubCommand() {return noSubCommand;} public String getConfigReloaded() {return configReloaded;} diff --git a/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java index a8359d0..10c886d 100644 --- a/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java +++ b/src/main/java/eu/endermite/commandwhitelist/bungee/listeners/BungeeChatEventListener.java @@ -1,10 +1,14 @@ package eu.endermite.commandwhitelist.bungee.listeners; +import eu.endermite.commandwhitelist.api.RandomStuff; import eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee; -import net.md_5.bungee.api.ChatColor; +import eu.endermite.commandwhitelist.bungee.config.BungeeConfigCache; +import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; +import org.bukkit.ChatColor; + import java.util.List; import java.util.Map; @@ -47,7 +51,8 @@ public class BungeeChatEventListener implements Listener { } if (!found) { event.setCancelled(true); - player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelistBungee.getConfigCache().getPrefix() + CommandWhitelistBungee.getConfigCache().getCommandDenied())); + BungeeConfigCache config = CommandWhitelistBungee.getConfigCache(); + player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelist.getConfigCache().getPrefix() + RandomStuff.getMessage(config.getCommandDeniedList(), config.getCommandDenied()))); } } } diff --git a/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java b/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java index ba49345..280d84e 100644 --- a/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/CommandWhitelist.java @@ -49,7 +49,7 @@ public class CommandWhitelist extends JavaPlugin { public void reloadPluginConfig() { saveDefaultConfig(); reloadConfig(); - configCache = new ConfigCache(); + configCache = new ConfigCache(getConfig()); } public void reloadPluginConfig(CommandSender sender) { diff --git a/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java b/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java index 0292622..9c5699a 100644 --- a/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/config/ConfigCache.java @@ -1,6 +1,5 @@ package eu.endermite.commandwhitelist.spigot.config; -import eu.endermite.commandwhitelist.spigot.CommandWhitelist; import org.bukkit.configuration.Configuration; import java.util.HashMap; @@ -11,13 +10,13 @@ public class ConfigCache { private HashMap> permList = new HashMap<>(); private String prefix, commandDenied, noPermission, noSubCommand, configReloaded; + private List commandDeniedList; - public ConfigCache() { - - Configuration config = CommandWhitelist.getPlugin().getConfig(); + public ConfigCache(Configuration config) { prefix = config.getString("messages.prefix"); - commandDenied = config.getString("messages.command-denied"); + commandDenied = config.getString("messages.command-denied", null); + commandDeniedList = config.getStringList("messages.command-denied"); noPermission = config.getString("messages.no-permission"); noSubCommand = config.getString("messages.no-such-subcommand"); configReloaded = config.getString("messages.config-reloaded"); @@ -32,11 +31,11 @@ public class ConfigCache { return permList; } - public List getPerm(String s) { - return permList.get(s); - } public String getPrefix() {return prefix;} public String getCommandDenied() {return commandDenied;} + public List getCommandDeniedList() { + return commandDeniedList; + } public String getNoPermission() {return noPermission;} public String getNoSubCommand() {return noSubCommand;} public String getConfigReloaded() {return configReloaded;} diff --git a/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java index 23e3c84..a4b1e8f 100644 --- a/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java +++ b/src/main/java/eu/endermite/commandwhitelist/spigot/listeners/PlayerCommandPreProcessListener.java @@ -1,6 +1,8 @@ package eu.endermite.commandwhitelist.spigot.listeners; +import eu.endermite.commandwhitelist.api.RandomStuff; import eu.endermite.commandwhitelist.spigot.CommandWhitelist; +import eu.endermite.commandwhitelist.spigot.config.ConfigCache; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -35,7 +37,8 @@ public class PlayerCommandPreProcessListener implements Listener { } } event.setCancelled(true); - player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelist.getConfigCache().getPrefix() + CommandWhitelist.getConfigCache().getCommandDenied())); + ConfigCache config = CommandWhitelist.getConfigCache(); + player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelist.getConfigCache().getPrefix() + RandomStuff.getMessage(config.getCommandDeniedList(), config.getCommandDenied()))); } }