ModdedMinecraftClub / Mmcc.Bot

Minecraft servers network management system disguised as a Discord bot.
GNU Affero General Public License v3.0
3 stars 2 forks source link

[FEATURE REQUEST] Polychat-server managed ban system #7

Open MommyHeather opened 3 years ago

MommyHeather commented 3 years ago

In order to consistently ban players across all severs, the server should maintain its own list of banned players. This will be updated when running the ban command in addition to executing /ban on all connected servers.

Upon a player trying to join, the polychat client should ask the server if the player's uuid is banned and the server will check its database to answer this.

If the player has been banned, the client will disconnect said player and to provide an additional safety net, it will execute its own ban command.

This allows for easier synchronisation of ban lists across servers, even persisting across server resets or new deployments. It could also in theory allow for easier management of timed bans. It will also prevent servers from being unable to ban a player if they're not connected to the polychat server, for example if they're midway through a restart.

In discord: staff runs ban command, bot executes the ban command on each connected polychat client, and updates its own database.

Ingame: when a player tries to join, the polychat server will check if they're banned and if so, they'll be disconnected.

This could also be extended to allow for polychat managed mutes, as currently all ingame muting is managed by other plugins or mods.

TraceLD commented 3 years ago

Can you /ban <uuid> since I assume we'd be storing in the database by UUID?

MommyHeather commented 3 years ago

Can you /ban <uuid> since I assume we'd be storing in the database by UUID?

If you're on about ingame, a quick test implies you can't. A solution to this would be having the bot take either a uuid or a username and if a uuid is given, then it'd get the username to pass to polychat clients/if a username is given, it'll retrieve the uuid for storing in the database.

TraceLD commented 3 years ago

If you're on about ingame, a quick test implies you can't. A solution to this would be having the bot take either a uuid or a username and if a uuid is given, then it'd get the username to pass to polychat clients/if a username is given, it'll retrieve the uuid for storing in the database.

You can get current player name from Mojang API, so we'll just do by UUID

MommyHeather commented 3 years ago

Do you think it's a good idea to have this same system work with mutes?

TraceLD commented 2 years ago

This is still being worked on btw, I haven't forgotten.