ProxioDev / ValioBungee

Synchronize players data between BungeeCord / Velocity proxies
Eclipse Public License 1.0
191 stars 50 forks source link

How to access RedisBungee channels in Bukkit? #98

Closed SheerYin closed 2 months ago

SheerYin commented 2 months ago

Your question?

I tried this:

        server.messenger.registerOutgoingPluginChannel(this, "RedisBungee")
        server.messenger.registerIncomingPluginChannel(this, "RedisBungee", this)

But bukkit said that capital letters cannot appear in the channel

I tried "legacy:redisbungee", but it didn't seem to parse any useful information:

    private fun deserializeWithMembers(message: ByteArray): Multimap<String, String> {
        DataInputStream(ByteArrayInputStream(message)).use { input ->
            val server = input.readInt()
            val multimap: Multimap<String, String> = HashMultimap.create()
            (0 until server).forEach { _ ->
                val key = input.readUTF()
                val player = input.readInt()
                (0 until player).forEach { _ ->
                    val name = input.readUTF()
                    multimap.put(key, name)
                }
            }
            return multimap
        }
    }

or

Bukkit.broadcastMessage(message.toString(Charsets.UTF_8))

PlayerCountALL

ham1255 commented 2 months ago

you might wana look at our fork of RedisBungee papi expansion code https://github.com/ProxioDev/RedisBungee-Expansion/blob/master/src/main/java/com/helpchat/redisbungeeexpansion/RedisBungeeExpansion.java

SheerYin commented 2 months ago

Solved, here is the example:

        if (channel != pluginChannel) {
            return
        }
        DataInputStream(ByteArrayInputStream(message)).use { input ->
            if (input.readUTF() != "") {
                return
            }

            val server = input.readUTF()
            var players = mutableListOf<String>()
            if (input.available() > 0) {
                players = input.readUTF().split(",").toMutableList()
            }

            Bukkit.broadcastMessage("server: $server | players: $players")
        }