Comment puis-je détecter si un joueur porte une pièce d'armure spécifique? (En Java)

Klyernds

Architecte en herbe
27 Juin 2017
3
0
62
36
Bonjour, je cherche à savoir exactement comment repérer si un joueur a par exemple des bottes dans le slot d'armure de son inventaire? Enfin des bottes spécifique, bien sur, par exemple des bottes en diamant appelé Ragnar, donc si vous avez la moindre idée d'un événement qui puisse faire cela merci de me venir en aide au plus vite.
(J'ai déjà été voir sur le hubSpigot mais je n'est pas trouver ou bien pas correctement fait attention je l'espère.)
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Bonjour !

Oui cela est tout à fait possible. Tu peux vérifier en récupérant directement l'inventaire du joueur. A chaque case de l'inventaire est lié un numéro (c'est un tableau qui contient le stuff du joueur). Par exemple, les 9 premières cases de ce tableau (de 0 inclus à 8 inclus) ce sont les 9 slots de l'ItemBar en bas. Tu peux trouver les valeurs sur google facilement.

Pour checker l'item, je ne sais pas si un item possède un ID unique pour l'identifier ou non. Si non, tu peux checker le nom, les enchantements et les tags qu'il y a dessus ;)

Tu peux aussi récupérer l'item directement depuis l'inventaire je crois si c'est une pièce d'armure. Voici un bout de code qui date un petit peu pour t'aider (il est pas optimisé donc le copie colle pas ! Le but est de t'aider à voir les méthodes existantes ;) Puis je me rends compte en le relisant qu'il est pas sécurisé xD un détail tout ça... Avis aux dev, couvrez vos yeux x) ):
Java:
public static void equipKit (String kitName, Player player) {

        int slotNumber = 0;

        Kits kit = new Kits();
        kit.setKitName(kitName);

        if (kit != null && kit.getKitName().equals(kitName) && LoadKits.getLoadedKits().containsKey(kitName)) {

            kit = LoadKits.getLoadedKits().get(kitName);

            //Armor
            try {
                player.getInventory().setHelmet(kit.getArmor().getHelmet());
                player.getInventory().setChestplate(kit.getArmor().getChestplate());
                player.getInventory().setLeggings(kit.getArmor().getLeggings());
                player.getInventory().setBoots(kit.getArmor().getBoots());
            } catch (NullPointerException e) {
                e.printStackTrace();
            }

            //Armes
            for (int j = 0; j < kit.getWeapons().size(); j++) {
                if (kit.getWeapons().get(j) != null) {
                    player.getInventory().setItem(slotNumber, kit.getWeapons().get(j));
                    slotNumber += 1;
                }
            }

            //Potions
            for (int k = 0; k < kit.getPotionsLots().size(); k++) {
                if (kit.getPotionsLots().get(k) != null) {
                    player.getInventory().setItem(slotNumber, kit.getPotionsLots().get(k));
                    slotNumber += 1;
                }
            }

            //Consommables
            for (int l = 0; l < kit.getConsumables().size(); l++) {
                if (kit.getConsumables().get(l) != null) {
                    player.getInventory().setItem(slotNumber, kit.getConsumables().get(l));
                    slotNumber += 1;
                }
            }

            player.sendMessage(ChatColor.GRAY + "Kit " + kit.getKitName() + " recu avec succès !");
        }
    }

En espérant t'avoir aidé !

AlexFatta