ProxioDev / ValioBungee

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

Send plugin message to all proxy from spigot #23

Closed Elikill58 closed 2 years ago

Elikill58 commented 2 years ago

What is your question?

Everything is in the title. I want to send one plugin message from the spigot to all proxy. How can I do ? I tried to use ReidsBungee as channel but it send it only to the player's proxy

ham1255 commented 2 years ago

you can't send a 'Plugin message' to all proxies it needs at least online player. could you tell me what exactly you are trying to do? sorry for the late response

Elikill58 commented 2 years ago

Sorry, I forgot to reply ...

It's mostly when, for example :

On a spigot server, someone use an item to report player. So, I have to report it to all mod on the over network. I send plugin channel to the actual bungee, but only one of proxies receive it.

So, I made something that when I receive it from the spigot, I publish redis message to all proxy. But it's one step more, new parsing etc and that sad and I would like to prevent it

BGHDDevelopment commented 2 years ago

I would just personally keep it easy and build redis sending into the report plugin. Why even send it through bungee? Just send a packet across the servers with the message containing the reported player information. As it's built into the report plugin you handle everything in one place and any server with the report plugin on it will receive the report.

Elikill58 commented 2 years ago

Because I can't send packet to player on other spigot, so I should pass through bungee. So I send to bungee <hich redirect it and manage evertyhing for me

BGHDDevelopment commented 2 years ago

Here is what I do for my report system:

First I have a server packet set up that sends a message when it's received to users who have a rank that I specify: image

Then on the report command, I send that packet: image

This way I can send all the information regarding the player (name, report reason, etc) but without ever needing to use bungee. That way I can have unlimited bungeecord proxies, but nothing is being sent through just one, all my commands that need to affect players across the network, can be done via Redis and within a core plugin.

You can even set it up in a way to detect players from all possible servers (even when they are on another bungee) by using Redis to check if they are online or not before doing the report: image

Elikill58 commented 2 years ago

So, you are using Redis on all your spigot, with RedisBungee values ? And it seems I made the same system than you, but on bungee. It seems good idea and good way to do.

BGHDDevelopment commented 2 years ago

I use RedisBungee but only on proxy level, this Redis handling is fully independent within a core plugin I developed. It does not use the RedisBungee API to send things, it just uses Redis overall. (can be the same database)

There should be no need for RedisBungee to be the thing sending the message unless you really for some reason want it handled on the bungee level. If you really want to use RedisBungee I would use #sendProxyCommand Then make a command on each proxy to send the message when it receives it.