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