diff --git a/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java b/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java index 29c50a5c0..a0c327f3e 100644 --- a/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/event/ChatEvent.java @@ -30,4 +30,14 @@ public class ChatEvent extends TargetedEvent implements Cancellable super( sender, receiver ); this.message = message; } + + /** + * Checks whether this message is valid as a command + * + * @return if this message is a command + */ + public boolean isCommand() + { + return message.charAt( 0 ) == '/'; + } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java index b503116dd..95f0d509b 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java @@ -67,19 +67,17 @@ public class UpstreamBridge extends PacketHandler @Override public void handle(Packet3Chat chat) throws Exception { - if ( chat.message.charAt( 0 ) == '/' ) + ChatEvent chatEvent = new ChatEvent( con, con.getServer(), chat.message ); + if ( bungee.getPluginManager().callEvent( chatEvent ).isCancelled() ) + { + throw new CancelSendSignal(); + } + if ( chatEvent.isCommand() ) { if ( bungee.getPluginManager().dispatchCommand( con, chat.message.substring( 1 ) ) ) { throw new CancelSendSignal(); } - } else - { - ChatEvent chatEvent = new ChatEvent( con, con.getServer(), chat.message ); - if ( bungee.getPluginManager().callEvent( chatEvent ).isCancelled() ) - { - throw new CancelSendSignal(); - } } }