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;
}
}