Improve code style
This commit is contained in:
@@ -9,40 +9,29 @@ import java.io.DataInputStream
|
||||
internal class BungeePluginMessageResponseCallback(
|
||||
val subChannel: String,
|
||||
val timeoutSeconds: Int,
|
||||
val onResponse: (message: DataInputStream) -> Unit
|
||||
val onResponse: (message: DataInputStream) -> Unit,
|
||||
) {
|
||||
|
||||
init {
|
||||
|
||||
BungeePluginMessageReceiver.registered += this
|
||||
|
||||
taskRunLater(20L * timeoutSeconds) {
|
||||
BungeePluginMessageReceiver.registered -= this
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private object BungeePluginMessageReceiver : PluginMessageListener {
|
||||
|
||||
val registered = ArrayList<BungeePluginMessageResponseCallback>()
|
||||
|
||||
override fun onPluginMessageReceived(channel: String, player: Player, message: ByteArray) {
|
||||
|
||||
if (channel != "BungeeCord") return
|
||||
|
||||
val msgbytes = ByteArrayInputStream(message)
|
||||
val msgin = DataInputStream(msgbytes)
|
||||
|
||||
val subChannel = msgin.readUTF()
|
||||
|
||||
val callback = registered.find { it.subChannel == subChannel }
|
||||
if (callback != null) {
|
||||
registered -= callback
|
||||
callback.onResponse.invoke(msgin)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -8,7 +8,7 @@ import org.bukkit.entity.Player
|
||||
* Sends the sending player to the given server
|
||||
*/
|
||||
class PluginMessageConnect(
|
||||
val servername: String
|
||||
val servername: String,
|
||||
) : BungeePluginMessagePlayerSpecific {
|
||||
override fun sendWithPlayer(player: Player) = sendPluginMessageToBungeeCord(
|
||||
player, "Connect", listOf(servername)
|
||||
@@ -21,7 +21,7 @@ class PluginMessageConnect(
|
||||
*/
|
||||
class PluginMessagePlayerCount(
|
||||
val servername: String,
|
||||
private val response: (Int) -> Unit
|
||||
private val response: (Int) -> Unit,
|
||||
) : BungeePluginMessageRandomPlayer {
|
||||
override fun send() = sendPluginMessageToBungeeCordRandomPlayer(
|
||||
"PlayerCount", listOf(servername)
|
||||
@@ -35,7 +35,7 @@ class PluginMessagePlayerCount(
|
||||
* on all servers.
|
||||
*/
|
||||
class PluginMessagePlayerCountAllServers(
|
||||
private val response: (Int) -> Unit
|
||||
private val response: (Int) -> Unit,
|
||||
) : BungeePluginMessageRandomPlayer {
|
||||
override fun send() = sendPluginMessageToBungeeCordRandomPlayer(
|
||||
"PlayerCount", listOf("ALL")
|
||||
@@ -50,7 +50,7 @@ class PluginMessagePlayerCountAllServers(
|
||||
*/
|
||||
class PluginMessagePlayerList(
|
||||
val servername: String,
|
||||
private val response: (List<String>) -> Unit
|
||||
private val response: (List<String>) -> Unit,
|
||||
) : BungeePluginMessageRandomPlayer {
|
||||
override fun send() = sendPluginMessageToBungeeCordRandomPlayer(
|
||||
"PlayerList", listOf(servername)
|
||||
@@ -65,7 +65,7 @@ class PluginMessagePlayerList(
|
||||
*/
|
||||
class PluginMessagePlayerListAllServers(
|
||||
val servername: String,
|
||||
private val response: (List<String>) -> Unit
|
||||
private val response: (List<String>) -> Unit,
|
||||
) : BungeePluginMessageRandomPlayer {
|
||||
override fun send() = sendPluginMessageToBungeeCordRandomPlayer(
|
||||
"PlayerList", listOf("ALL")
|
||||
@@ -79,7 +79,7 @@ class PluginMessagePlayerListAllServers(
|
||||
* BungeeCord network.
|
||||
*/
|
||||
class PluginMessageGetServers(
|
||||
private val response: (List<String>) -> Unit
|
||||
private val response: (List<String>) -> Unit,
|
||||
) : BungeePluginMessageRandomPlayer {
|
||||
override fun send() = sendPluginMessageToBungeeCordRandomPlayer(
|
||||
"GetServers"
|
||||
|
@@ -19,7 +19,7 @@ fun sendPluginMessageToBungeeCordRandomPlayer(
|
||||
subChannel: String,
|
||||
content: List<String>? = null,
|
||||
responseTimeout: Int = 20,
|
||||
onResponse: ((message: DataInputStream) -> Unit)? = null
|
||||
onResponse: ((message: DataInputStream) -> Unit)? = null,
|
||||
): Boolean {
|
||||
val randomPlayer = onlinePlayers.randomOrNull()
|
||||
return if (randomPlayer != null) {
|
||||
@@ -43,20 +43,17 @@ fun sendPluginMessageToBungeeCord(
|
||||
subChannel: String,
|
||||
content: List<String>? = null,
|
||||
responseTimeout: Int = 20,
|
||||
onResponse: ((message: DataInputStream) -> Unit)? = null
|
||||
onResponse: ((message: DataInputStream) -> Unit)? = null,
|
||||
) {
|
||||
|
||||
val msgbytes = ByteArrayOutputStream()
|
||||
val msgout = DataOutputStream(msgbytes)
|
||||
|
||||
try {
|
||||
|
||||
msgout.writeUTF(subChannel)
|
||||
|
||||
if (content != null)
|
||||
for (messagePart in content)
|
||||
msgout.writeUTF(messagePart)
|
||||
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
@@ -65,5 +62,4 @@ fun sendPluginMessageToBungeeCord(
|
||||
BungeePluginMessageResponseCallback(subChannel, responseTimeout, onResponse)
|
||||
|
||||
player.sendPluginMessage(KSpigotMainInstance, "BungeeCord", msgbytes.toByteArray())
|
||||
|
||||
}
|
Reference in New Issue
Block a user