diff --git a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java index fa512e33..580919b8 100644 --- a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java +++ b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java @@ -57,9 +57,24 @@ public interface ServerInfo * * @param channel the channel to send this data via * @param data the data to send + * @deprecated use #sendData(String, byte[], boolean). Deprecated to highlight queuing behaviour of this method. + * @see #sendData(String, byte[], boolean) */ + @Deprecated void sendData(String channel, byte[] data); + /** + * Send data by any available means to this server. + * + * @param channel the channel to send this data via + * @param data the data to send + * @param queueIfEmpty if set to true and this server is empty, the data will be queued until a player + * joins that server. + * @return true if the message was sent immediately, false otherwise (if queueIfEmpty is + * true, it has been queued, if it is false it has been discarded). + */ + boolean sendData(String channel, byte[] data, boolean queueIfEmpty); + /** * Asynchronously gets the current player count on this server. * diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java index b59da887..a7062e50 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java @@ -88,9 +88,15 @@ public class BungeeServerInfo implements ServerInfo return address.hashCode(); } - // TODO: Don't like this method @Override public void sendData(String channel, byte[] data) + { + sendData( channel, data, true ); + } + + // TODO: Don't like this method + @Override + public boolean sendData(String channel, byte[] data, boolean queue) { Preconditions.checkNotNull( channel, "channel" ); Preconditions.checkNotNull( data, "data" ); @@ -101,10 +107,12 @@ public class BungeeServerInfo implements ServerInfo if ( server != null ) { server.sendData( channel, data ); - } else + return true; + } else if ( queue ) { packetQueue.add( new PluginMessage( channel, data ) ); } + return false; } }