diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java index 9c4720ad..1344f776 100644 --- a/api/src/main/java/net/md_5/bungee/api/ProxyServer.java +++ b/api/src/main/java/net/md_5/bungee/api/ProxyServer.java @@ -240,4 +240,11 @@ public abstract class ProxyServer * @return a new {@link CustomTabList} instance */ public abstract CustomTabList customTabList(ProxiedPlayer player); + + /** + * Gets the commands which are disabled and will not be run on this proxy. + * + * @return the set of disabled commands + */ + public abstract Collection getDisabledCommands(); } diff --git a/api/src/main/java/net/md_5/bungee/api/config/ConfigurationAdapter.java b/api/src/main/java/net/md_5/bungee/api/config/ConfigurationAdapter.java index c82e0c8d..8ee8d33f 100644 --- a/api/src/main/java/net/md_5/bungee/api/config/ConfigurationAdapter.java +++ b/api/src/main/java/net/md_5/bungee/api/config/ConfigurationAdapter.java @@ -43,6 +43,15 @@ public interface ConfigurationAdapter */ public boolean getBoolean(String path, boolean def); + /** + * Get a list from the specified path. + * + * @param path the path to retrieve the list form. + * @param def the default value + * @return the retrieved list + */ + public Collection getList(String path, Collection def); + /** * Get the configuration all servers which may be accessible via the proxy. * diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java index 5a537cc1..552c50d9 100644 --- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java +++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java @@ -86,7 +86,12 @@ public class PluginManager public boolean dispatchCommand(CommandSender sender, String commandLine) { String[] split = argsSplit.split( commandLine ); - Command command = commandMap.get( split[0].toLowerCase() ); + String commandName = split[0].toLowerCase(); + if ( proxy.getDisabledCommands().contains( commandName ) ) + { + return false; + } + Command command = commandMap.get( commandName ); if ( command == null ) { return false; diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index c5c08c12..a6f65076 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -518,4 +518,9 @@ public class BungeeCord extends ProxyServer { return new Custom( player ); } + + public Collection getDisabledCommands() + { + return config.getDisabledCommands(); + } } diff --git a/proxy/src/main/java/net/md_5/bungee/config/Configuration.java b/proxy/src/main/java/net/md_5/bungee/config/Configuration.java index a8ef0694..33855306 100644 --- a/proxy/src/main/java/net/md_5/bungee/config/Configuration.java +++ b/proxy/src/main/java/net/md_5/bungee/config/Configuration.java @@ -2,6 +2,7 @@ package net.md_5.bungee.config; import com.google.common.base.Preconditions; import gnu.trove.map.TMap; +import java.util.Arrays; import java.util.Collection; import java.util.Map; import java.util.UUID; @@ -14,6 +15,7 @@ import net.md_5.bungee.tab.GlobalPing; import net.md_5.bungee.tab.Global; import net.md_5.bungee.tab.ServerUnique; import net.md_5.bungee.util.CaseInsensitiveMap; +import net.md_5.bungee.util.CaseInsensitiveSet; /** * Core configuration for the proxy. @@ -43,6 +45,7 @@ public class Configuration */ private boolean onlineMode = true; private int playerLimit = -1; + private Collection disabledCommands; public void load() { @@ -55,6 +58,8 @@ public class Configuration onlineMode = adapter.getBoolean( "online_mode", onlineMode ); playerLimit = adapter.getInt( "player_limit", playerLimit ); + disabledCommands = new CaseInsensitiveSet( (Collection) adapter.getList( "disabled_commands", Arrays.asList( "find" ) ) ); + Preconditions.checkArgument( listeners != null && !listeners.isEmpty(), "No listeners defined." ); Map newServers = adapter.getServers(); diff --git a/proxy/src/main/java/net/md_5/bungee/config/YamlConfig.java b/proxy/src/main/java/net/md_5/bungee/config/YamlConfig.java index 5a03d6e8..74435e31 100644 --- a/proxy/src/main/java/net/md_5/bungee/config/YamlConfig.java +++ b/proxy/src/main/java/net/md_5/bungee/config/YamlConfig.java @@ -234,6 +234,12 @@ public class YamlConfig implements ConfigurationAdapter return ret; } + @Override + public Collection getList(String path, Collection def) + { + return get( path, def ); + } + @Override @SuppressWarnings("unchecked") public Collection getPermissions(String group)