Commande de "vote"

Sala85

Massacreur de Mouton
12 Octobre 2020
36
2
18
22
Bonjour,
Je suis en train de coder un plugin Loup-Garou dans Minecraft et il faudrait que pendant la nuit, les Loups puissent éliminer un joueur avec une commande (imaginons /vote) et que le joueur ayant le plus de vote meurt à la fin des votes (30 secs) et que les votes soient reset quand ils sont changés. Cependant je n'ai pas trop d'idée de comment faire et je n'ai pas de début xd (le plugin est en spigot 1.8.8).
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 530
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Ca aurait été mieux, si tu nous avais donné ce que tu avais déjà fait...

C'est une action assez simple, pas sûr qu'il y ai besoin de créer des objects contenant pleins d'informations... Un simple HashMap liant deux joueurs (le votant et celui pour lequel on a voté) suffit. Du coup moi je partirais sur un singleton (genre "VoteManager").

Java:
public class VoteManager {

    private static VoteManager instance = null;
    private final HashMap<Player, Player> listeVote;

    private VoteManager() {
        listeVote = new HashMap<Player, Player>();
    }

    public void addVote(final Player votant, final Player joueurVote) {
        listeVote.put(votant, joueurVote);
    }

    public Player getResultat() {
        final HashMap listeOccurence = new HashMap();
        int maxOccurence = 0;
        Player resultat = null;

        for(final Player selectedPlayer : listeVote.values()) {
            final int nbrOccurence = listeOccurence.getOrDefault(selectedPlayer, 0) +1;
            listeOccurence.put(selectedPlayer, nbrOccurence);
            if(nbrOccurence > maxOccurence) {
                maxOccurence = nbrOccurence;
                resultat = selectedPlayer;
            }
        }

        return resultat;
    }

    private void reset() {
        listeVote.clear();
    }

    public static final VoteManager getInstance() {
        if(instance == null) {
            instance = new VoteManager();
        }
        return instance;
    }

}
Pour relié ce bout de code avec le reste, il faut que tu fasses la partie lié à la commande. Quand un joueur faire la commande "/vote", ça appel la méthode "addVote". Et A la fin de ton compteur tu peux faire un "getResultat" suivit d'un"reset".
Si tu veux récupérer le nombre de vote, tu as juste à changer la valeur de retour de "getResultat".


Cordialement,
Detobel36