From c1877300da99d154f34cd027e4c481e2c137df7b Mon Sep 17 00:00:00 2001 From: bluefireoly Date: Mon, 2 Nov 2020 18:36:14 +0100 Subject: [PATCH] Create PluginMessagePresets.kt --- .../pluginmessages/PluginMessagePresets.kt | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/main/kotlin/net/axay/kspigot/pluginmessages/PluginMessagePresets.kt diff --git a/src/main/kotlin/net/axay/kspigot/pluginmessages/PluginMessagePresets.kt b/src/main/kotlin/net/axay/kspigot/pluginmessages/PluginMessagePresets.kt new file mode 100644 index 00000000..ec82a5e0 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/pluginmessages/PluginMessagePresets.kt @@ -0,0 +1,89 @@ +@file:Suppress("MemberVisibilityCanBePrivate") + +package net.axay.kspigot.pluginmessages + +import org.bukkit.entity.Player + +/** + * Sends the sending player to the given server + */ +class PluginMessageConnect( + val servername: String +) : BungeePluginMessagePlayerSpecific { + override fun sendWithPlayer(player: Player) = sendPluginMessageToBungeeCord( + player, "Connect", listOf(servername) + ) +} + +/** + * Responds with the amount of players currently online + * on the given server. + */ +class PluginMessagePlayerCount( + val servername: String, + private val response: (Int) -> Unit +) : BungeePluginMessageRandomPlayer { + override fun send() = sendPluginMessageToBungeeCordRandomPlayer( + "PlayerCount", listOf(servername) + ) { + response.invoke(it.readInt()) + } +} + +/** + * Responds with the amount of players currently online + * on all servers. + */ +class PluginMessagePlayerCountAllServers( + private val response: (Int) -> Unit +) : BungeePluginMessageRandomPlayer { + override fun send() = sendPluginMessageToBungeeCordRandomPlayer( + "PlayerCount", listOf("ALL") + ) { + response.invoke(it.readInt()) + } +} + +/** + * Responds with the names of all players currently online + * on the given server. + */ +class PluginMessagePlayerList( + val servername: String, + private val response: (List) -> Unit +) : BungeePluginMessageRandomPlayer { + override fun send() = sendPluginMessageToBungeeCordRandomPlayer( + "PlayerList", listOf(servername) + ) { + response.invoke(it.readUTF().split(", ")) + } +} + +/** + * Responds with the names of all players currently online + * on all servers. + */ +class PluginMessagePlayerListAllServers( + val servername: String, + private val response: (List) -> Unit +) : BungeePluginMessageRandomPlayer { + override fun send() = sendPluginMessageToBungeeCordRandomPlayer( + "PlayerList", listOf("ALL") + ) { + response.invoke(it.readUTF().split(", ")) + } +} + +/** + * Responds with the names of all servers in the + * BungeeCord network. + */ +class PluginMessageGetServers( + private val response: (List) -> Unit +) : BungeePluginMessageRandomPlayer { + override fun send() = sendPluginMessageToBungeeCordRandomPlayer( + "GetServers" + ) { + response.invoke(it.readUTF().split(", ")) + } +} \ No newline at end of file