Plugin Résolu Besoin d'aide pour une "Diamond Limit"...

  • Auteur de la discussion Auteur de la discussion ShayFox_
  • Date de début Date de début

ShayFox_

Pack de texture & Plugin maker
1 Mars 2020
38
1
3
8
Bonjour,
Je suis en ce moment même entrain de coder un plugin Minecaft Uhc en 1.8.9(1.8.8).
J'ai donc crée des scénarios désactivable, voici mon problème: en me penchant sur la question d'un diamond limite (scénario permettant de limiter le nombre de diamant minable par le joueur, quand il a dépasser la limite cela transforme le diamant en lingot d'or) j'ai fait en sorte que quand le joueur a plus de x diamant dans son inventaire le block qu'il casse se transforme en or mais j'y est bien réfléchie et si la personne met dans un coffre les diamant elle pourras continuer d'en miner.
Voici ma question: Comment limiter le nombre de diamant minable ? Sans passer par une recherche dans l'inventaire du joueur ?
 
Pourrais tu m'en dire plus ? Je ne comprend pas trop ou tu veut en venir car je ne connais pas ce que tu m'a décris
 
Ce que tu veux faire, c'est avoir un nombre entier (int) associé à chaque joueur.
Le plus simple serait de rajouter une variable à la classe (composition), mais tu ne peux pas modifier les classes de Bukkit/Minecraft.

La solution est d'utiliser un tableau associatif (Map<K, V>), qui permet d'associer une clef unique (le joueur) à une valeur (le nombre de diamants minés). Cela suit le même principe qu'une liste, sauf qu'au lieu d'accéder aux éléments par son indice (sa position), on le fait par un autre type.

Java:
Map<Player, Integer> map = new WeakHashMap<>();

@EventHandler(ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent e) {
    if(e.getBlock().getType() != Material.DIAMOND_ORE)
        return;
    
    Player player = e.getPlayer();
    
    int mined = map.getOrDefault(player, 0);
    map.put(player, ++mined);
    
    if(mined >= 6)
        // todo: replace diamond by iron
}


https://www.jmdoudoux.fr/java/dej/chap-collections.htm#collections-5
 
  • J'aime
Reactions: ShayFox_
Après vérification cela ne fonctionne pas quand je mine un diamant même si je n'en est encore jamais miner cela me donne de l'or a la place
 
Enfaite sa marche je te remercie énormément pour le temps que je t'est pris ^^

Coucou,
J'ai réalisé une vidéo qui montre comment faire ça si ça peut t'aider :)
Si t'as plus de questions, je suis dispo pour qu'on discute sur discord
Tu as gagner un abonner ^^