Idée Service de bannissement partagé

julescrepi

Aventurier
1 Mai 2020
9
0
1
39
Bonjour,
Tout d'abord, j'espère que vous allez tous bien.
Aujourd'hui, je lance un projet de base de données des joueurs multijoueurs de Minecraft.
En fait, mon projet serait de créer une base de données comportant un grand nombre d'informations, sur beaucoup de joueurs.
Pour l'utiliser, il suffit que le staff d'un serveur reporte un joueur sur la base de données, et, si le staff d'un autre serveur souhaite vérifier un joueur, il pourra écrire le pseudo de ce joueur, et ainsi visualiser les différentes informations disponibles sur le joueur et même en ajouter.
Ceci pourrait être très utile pour un serveur qui cherche à composer un staff (ce qui éviterai de choisir une personne qui a déjà été malpolie, qui a détruit beaucoup de serveurs, etc).
Afin d'éviter les abus de cette base (un staff beaucoup trop sévère, des fausses informations etc), l'accès à cette base de données se fait sur demande. Le fondateur du serveur doit remplir un formulaire après s'être inscrit sur un site, et une équipe viendra tester et vérifier que le serveur est correct.
Si vous avez la moindre question, n'hésitez pas à me contacter.
Bonne journée !

Site où s'inscrire d'abord : http://azot.alwaysdata.net (ce site n'est pas entièrement dédié à Minecraft, vous pouvez aussi faire beaucoup d'autres choses dessus)
Formulaire à remplir pour avoir accès à la base de données une fois inscrit sur Azot : https://forms.gle/1w9t3eVBV51qSfY39
 
Salut,

Du coup vous allez jugé si un serveur est "bien" ou pas. Okay, mais du coup, on ne pourra pas savoir de quel serveur vient l'information ?
Par exemple "Detobel36 a été ban 3 jours". Mais on ne saura pas sur quel serveur ?
Si on sait le serveur, pourquoi faire une sélection ?

Autre question, comment les serveurs vont-il rentrer les informations dans votre base de données ? Chaque serveur devra le faire manuellement ? C'est un peu utopiste non ?
Pourquoi ne pas demander aux serveurs de mettre en place une API où votre site pourra faire des requêtes ? (Limite fournir directement un plugin qui fait cela ;) ). Cela évite aux serveurs de devoir faire des "opérations" pour vous envoyer les données et cela permet également au serveur d'être inscrit sur d'autres initiatives que la votre...

Au passage, je ne pense pas que l'on est dans la bonne section... C'est pas vraiment un tutoriel. Je me demande si ce n'est pas considéré comme un "service" (et donc que cela devrait aller dans la section "cv/services").
Je signale à un modérateur qui déplacera s'il juge cela nécessaire ;)


Cordialement,
Detobel36
 
Bonjour,
Effectivement j'avais pensé à créer un plugin pour cela, mais je ne m'y connais pas du tout en plugins.
Par contre le serveur où le joueur à été banni est affiché. En fait le formulaire est une vérification pour ne pas avoir une surcharge du serveur avec un grand nombre de serveurs, et de ne pas avoir d'abus : même si le nom du serveur et le nom de la personne qui a crée l'avertissement y figurent, cela permet d'avoir une confiance en les données qui figurent dans la base.
Aussi, vous êtes créateur de plugins, vous serait-il possible de m'aider dans la création du plugin ? Si oui, puis-je vous contacter en message privé ?
Bonne journée
 
Salut,

Aussi, vous êtes créateur de plugins, vous serait-il possible de m'aider dans la création du plugin ? Si oui, puis-je vous contacter en message privé ?
Je créé des plugins mais je réserves mon temps libre au développement de plugin pour le serveur où je suis (PhoenixRebirth).

Mais avant de faire un plugin qui fait cela, il faut déjà que de votre côté vous réfléchissiez au protocole à mettre en place...

Pour parler de manière un petit peu plus technique, il y a plusieurs moyen de faire:
  • Soit votre système (le site) à une API où chaque serveur (par l'intermédiaire d'un plugin ou de n'importe quel autre système (web, js...)) envoie les sanctions qu'il fait.
  • Soit votre système (votre site donc) fait des requêtes aux serveurs (un plugin écoute un port bien précis à une adresse bien précis) en demandant les sanctions récentes (ban, mute, ...).
Quel que soit le système choisi, vous devez mettre en place la manière dont les données vont être structurées... Sous forme de JSON par exemple, mais du coup, comment on indique la sanction, les types de sanctions existantes, la manière d'indiquer un déban, la raison du ban, que faire lorsqu'il n'y a pas de raison, ...

Bref, l'idée peut être bonne mais faut préciser les choses.

Au passage, je voudrais donner mon point de vue concernant la possible utilisation de ce système par PhoenixRebirth (le serveur où je suis du coup). Si le système impose de donner la raison, on ne l'utilisera pas. Pour nous le ban ne regarde que le joueur et le staff. Si un joueur n'est pas d'accord avec son ban il peut faire une demande sur notre forum, mais nous ne devons pas justifié la sanction d'un joueur (et c'est justement pour défendre la réputation du joueur qu'on fait cela).
Sur notre site, la page de statistiques affiche par exemple un message "générique" lorsqu'un joueur est ban (disant simplement qu'il est banni). (lien: https://www.phoenix-rebirth.fr/stats/)


Cordialement,
Detobel36
 
Salut,
En fait, il n'est pas obligé de mettre un raison si le joueur est ban/mute. Je pense que le plugin serait plus quelque-chose du genre quand quelqu'un fait /mute ou /ban, mon plugin récupère aussi cette commande, et accède à une URL type http://azot.alwaysdata.net/ajoutsan...admin]&pour=[joueur_sanctionné]&motif=[motif]
Et le plugin récupérera le motif de la sanction, si il n'y en a pas, il mettra "Banissement (aucun motif)" dans raison.
Ensuite, une commande du type "/checkplayer [joueur]" cherchera dans la base de données tous les antécédents du joueur (cela sera encore à venir une fois la première partie du plugin fait. Pour le début, cette fonction ne sera seulement disponible sur l'interface internet).
 
Salut,

On a pas la raison de la sanction la :)
Mais en gros, si tu veux faire ça plus propre tu dois dire que c'est une requête GET avec comme argument:
Code:
- cle: token du serveur
- serveur: ip du serveur
- par: admin (uuid ou pseudo ?)
- pour: joueur (uuid ou pseudo, on interdit les crack ?)
- motif: motif (texte de quel longueur ? Prise en charge des couleurs ?)

Pour l'IP du serveur tu met le nom de domaine ou juste l'IP ? Est-ce que c'est utile vu qu'il y a le token ?
Attention aussi que quand tu fera ton plugin tu devra prendre en compte le fait que certains serveurs utilisent bungeecord (et donc il faut une version bungecord).

Dans ce que tu expliques la, on ne sait pas la sanction que reçoit le joueur... Juste la raison mais pas le type de sanction.
Il n'y a également aucune idée de "temporaire". Si on banni temporairement un joueur, il se passe quoi ? On enregistre pas ? Et si il se fait déban ?

Ensuite, une commande du type "/checkplayer [joueur]" cherchera dans la base de données tous les antécédents du joueur
Attention a bien limité le nombre de requêtes possibles sinon ta base de données pourrait "explosé" si un serveur test super souvent ses joueurs (à la connexion par exemple).


Cordialement,
Detobel36
 
Salut,
Effectivement il est possible d'optimiser le système en enlevant le champ "ip du serveur".
Par rapport aux joueurs je pense mettre le pseudo au lieu de l'uuid, c'est plus pratique à utiliser.
Par rapport à bungeecord, je pense d'abord faire juste un simple système qui met juste l'ip du serveur prinicpal (exemple : MC.PHOENIXR.FR). Plus tard, il serait cool de rajouter une case pour supporter les différents serveurs, il sera donc précisé où le joueur a été sanctionné.
Je suis aussi en train d'ajouter deux champs au GET : type (type de la sanction) / temps (durée)
Pour la première version je pense que le motif sera un champ de type TEXT (cela devrait donc suffire pour un motif qui ne dépassent généralement pas une phrase). Aussi dans la première version, les couleurs ne seront pas supportées.
Pour le /checkplayer je pense mettre un délai de cooldown (environ quelques minutes par token de serveur). Cela pourra aussi faire partie d'une version premium où le temps sera diminué entre deux /checkplayer.
Bonne jourée
 
Salut,

Par rapport à bungeecord, je pense d'abord faire juste un simple système qui met juste l'ip du serveur prinicpal (exemple : MC.PHOENIXR.FR). Plus tard, il serait cool de rajouter une case pour supporter les différents serveurs, il sera donc précisé où le joueur a été sanctionné.
Je parlais surtout du bungee parce que ce n'est pas la même manière de faire un plugin ;)

Sinon le projet semble intéressant... A voir dans les faits comme ça rend.

Une chose importante à noter cependant... Avec le système proposé ici, tu n'a pas la liste des précédents ban ;) C'est une question à résoudre si tu veux vraiment quelque chose de complet.


Cordialement,
Detobel36
 
Salut,
Merci beaucoup pour tous ces conseils, je vais me lancer dans la création d'un plugin Bungeecord (petite question : est-ce qu'un plugin Bungeecord est compatible avec un serveur sans Bungeecord ou dois-je faire deux versions du plugin ?)
Aussi, que voulez-vous dire par
Avec le système proposé ici, tu n'a pas la liste des précédents ban ;)
Bonne journée
 
Salut,

Merci beaucoup pour tous ces conseils, je vais me lancer dans la création d'un plugin Bungeecord (petite question : est-ce qu'un plugin Bungeecord est compatible avec un serveur sans Bungeecord ou dois-je faire deux versions du plugin ?)
Ce sont 2 API différentes BungeeCord et Spigot... Donc 2 plugins différents.
Enfin, rien ne t'empêche d'avoir des class en commun. Tu peux tout faire dans un seul projet avec un "Main" pour spigot et un autre pour Bungeecord ;)
Pour définir le main du plugin spigot il faut utiliser le fichier "plugin.yml". Pour un plugin bungee tu peux utiliser un fichier "bungee.yml". Les deux peuvent exister dans le même plugin et celui-ci s'adaptera donc automatiquement s'il est installé sur bungeecord ou sur spigot :D

Concernant les ban précédents:
Je prend un exemple concret: PhoenixRebirth existe depuis 2013. A ce jour nous avons plus de 8k joueurs banni ("à vie"). Ton plugin ne sera pas en mesure d'aller rechercher ces joueurs (ils sont stockés dans une base de données, pas dans un fichier auquel ton plugin pourrait accéder (par exemple le fichier banned-players.json que ton plugin pourrait consulter au lancement ;) )). Donc ces 8k joueurs ne seront jamais dans ta base de données...


Cordialement,
Detobel36