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 d556869e..4ecadcd9 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 @@ -247,4 +247,11 @@ public abstract class ProxyServer * @return the server's {@link AsyncHttpClient} instance */ public abstract AsyncHttpClient getHttpClient(); + + /** + * Send a message to all connected players. + * + * @param message the message to send + */ + public abstract void broadcast(String message); } 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 7c1786fc..22d6a3c2 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -403,4 +403,13 @@ public class BungeeCord extends ProxyServer { return ConsoleCommandSender.getInstance(); } + + @Override + public void broadcast(String message) + { + for ( ProxiedPlayer player : getPlayers() ) + { + player.sendMessage( message ); + } + } } diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 07d5ab4a..0d92b13e 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -10,6 +10,7 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.socket.nio.NioSocketChannel; import java.net.InetSocketAddress; +import java.text.MessageFormat; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -85,6 +86,9 @@ public final class UserConnection implements ProxiedPlayer { addGroups( s ); } + + //TODO: Here? + bungee.broadcast( MessageFormat.format( BungeeCord.getInstance().config.getJoinMessage(), getDisplayName() ) ); } public void sendPacket(DefinedPacket p) @@ -188,6 +192,8 @@ public final class UserConnection implements ProxiedPlayer { server.disconnect( "Quitting" ); } + + bungee.broadcast( MessageFormat.format( BungeeCord.getInstance().config.getPartMessage(), getDisplayName() ) ); } } @@ -195,13 +201,19 @@ public final class UserConnection implements ProxiedPlayer public void chat(String message) { Preconditions.checkState( server != null, "Not connected to server" ); - server.getCh().write( new Packet3Chat( message ) ); + if ( message != null && !message.isEmpty() ) + { + server.getCh().write( new Packet3Chat( message ) ); + } } @Override public void sendMessage(String message) { - ch.write( new Packet3Chat( message ) ); + if ( message != null && !message.isEmpty() ) + { + ch.write( new Packet3Chat( message ) ); + } } @Override 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 aacff219..c8ea26ff 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 @@ -5,6 +5,7 @@ import java.util.Collection; import java.util.Map; import java.util.UUID; import lombok.Getter; +import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ConfigurationAdapter; import net.md_5.bungee.api.config.ListenerInfo; @@ -49,6 +50,8 @@ public class Configuration */ private boolean onlineMode = true; private int playerLimit = -1; + private String joinMessage = "&b{0} has joined the network"; + private String partMessage = "&b{0} has left the network"; public void load() { @@ -60,7 +63,10 @@ public class Configuration onlineMode = adapter.getBoolean( "online_mode", onlineMode ); playerLimit = adapter.getInt( "player_limit", playerLimit ); - DefaultTabList tab = DefaultTabList.valueOf( adapter.getString( "tab_list", "GLOBAL_PING" ) ); + joinMessage = ChatColor.translateAlternateColorCodes( '&', adapter.getString( "messages.join", joinMessage ) ); + partMessage = ChatColor.translateAlternateColorCodes( '&', adapter.getString( "messages.part", partMessage ) ); + + DefaultTabList tab = DefaultTabList.valueOf( adapter.getString( "tab_list", "GLOBAL_PING" ).toUpperCase() ); if ( tab == null ) { tab = DefaultTabList.GLOBAL_PING;