Créer un plugin Minecraft (Spigot/Paper) qui implémente un système simple et sécurisé d’élévation de privilèges via une commande. Compatibilité Minecraft : 1.21.x Serveur : Spigot / Paper Java : 17 Dépendance : LuckPerms (obligatoire) Commandes /sudo <mot_de_passe> Commande principale permettant d’obtenir des permissions administrateur temporaires. Accessible à tous les joueurs connectés Syntaxe stricte : /sudo <mot_de_passe> /unsudo Retire immédiatement les permissions temporaires. Permission requise : sudo.unsudo /createsudo <mot_de_passe> Définit ou modifie le mot de passe d’accès admin. Permission requise : sudo.create Le mot de passe doit être stocké sous forme de hash sécurisé Permissions sudo.use → autorise l’utilisation de /sudo (optionnel, activé par défaut) sudo.create → permet de définir le mot de passe sudo.unsudo → permet de retirer les permissions temporaires Comportement attendu 1. /sudo <mot_de_passe> Vérifier que le joueur est authentifié (compatibilité AuthMe ou équivalent) Vérifier le cooldown et les tentatives échouées Comparer le mot de passe fourni avec le hash stocké Si incorrect : Envoyer un message d’erreur Incrémenter le compteur de tentatives Appliquer un cooldown après plusieurs échecs Si correct : Réinitialiser les tentatives Donner le groupe temp-admin via LuckPerms : /lp user <player> parent add temp-admin 10m Envoyer un message de confirmation 2. Expiration Après 10 minutes : retirer automatiquement le groupe temp-admin Ou via /unsudo Sécurité Le mot de passe doit être stocké en SHA-256 uniquement NE PAS utiliser bcrypt ou toute autre librairie externe Aucune dépendance externe pour le hash (Java standard uniquement) Protection brute-force : Maximum 3 tentatives échouées Cooldown de 30 secondes après échec Reset des tentatives après succès Configuration (config.yml) password_hash: "" group: "temp-admin" duration: 600 max_attempts: 3 cooldown: 30 require_auth_plugin: true messages: success: "Accès admin temporaire accordé." failure: "Mot de passe incorrect." cooldown: "Trop de tentatives. Réessaie plus tard." Événements à gérer PlayerCommandPreprocessEvent → éviter l’affichage du mot de passe dans les logs PlayerQuitEvent (optionnel) → possibilité de retirer les permissions à la déconnexion Scheduler Bukkit → gérer la durée des permissions temporaires Intégration LuckPerms Utiliser l’API officielle LuckPerms pour : ajouter un joueur au groupe temp-admin retirer automatiquement après expiration Objectif global Permettre à un utilisateur autorisé d’obtenir des permissions administrateur temporaires depuis n’importe quel compte Minecraft, via une commande /sudo <mot_de_passe>, sans dépendre du pseudo ou du compte utilisé.