Savoir si un joueur a un item renommé dans son inventaire

Ad2100

Architecte en herbe
21 Septembre 2016
9
0
62
17
Bonjour, je pense que tout est dans la question
ps: c'est une question au cas où ^^
Merci d'avance ^^
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Bonsoir,

Es-tu en train de faire un plugin ou es-tu à la recherche d'un plugin pour faire ce que dit le titre de ta discussion ?

Cordialement,
ShE3py
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Bah il suffit de faire une boucle sur tous les items de l'inventaire du joueur et de regarder si ceux-ci ont un nom custom avec ItemStack#hasCustomName().

Quelle version du jeu vises-tu ?
 

Ad2100

Architecte en herbe
21 Septembre 2016
9
0
62
17
Bah il suffit de faire une boucle sur tous les items de l'inventaire du joueur et de regarder si ceux-ci ont un nom custom avec ItemStack#hasCustomName().

Quelle version du jeu vises-tu ?
Je veux bien savoir si ils ont un nom custom mais comment je vérifie après que ce nom custom est égal a un nom custom que j'ai choisis et aussi savoir combien j'en ai , et si possible verif aussi Material?
 

Ad2100

Architecte en herbe
21 Septembre 2016
9
0
62
17
J'ai fais ça mais ça marche pas
Code:
public ItemStack getPlayerHaveCustomItem(Material equalAsMaterial, String equalAsCustomName, Player getPlayer) {
    ItemStack returnItemStack = new ItemStack(Material.ACACIA_BOAT);
    for(int i = 0; i < 104 ;i++){
        ItemStack Item = getPlayer.getInventory().getItem(i);
        if(Item != null && Item.getItemMeta().getDisplayName() == equalAsCustomName && Item.getType() == equalAsMaterial) {
            returnItemStack = getPlayer.getInventory().getItem(i);
        }else {
            returnItemStack = null;
        }
        
    }
    return returnItemStack;
}
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Tous les identifiants en Java commencent par une minuscule et non pas par une majuscule ; car là ta variable Item indique plutôt que tu appelles une fonction de la classe org.bukkit.entity.Item.

De plus, en Java tu ne peux utiliser l'opérateur de comparaison == uniquement pour les nombres ; pour les chaînes de caractères, tu dois utiliser x.equals(y).
Java:
@Nullable
public static ItemStack getRenamedItem(Inventory inventory, Material expectedMaterial, String expectedName) {
   for(ItemStack stack : inventory.getStorageContents()) {
      if(stack != null && stack.getType() == expectedMaterial && stack.hasItemMeta()) {
         ItemMeta meta = stack.getItemMeta();
         
         if(meta.hasDisplayName() && meta.getDisplayName().equals(expectedName)) {
            return stack;
         }
      }
   }
   
   return null;
}


Player player = ...;
ItemStack myCake = getRenamedItem(player.getInventory(), Material.CAKE, "Kougelhopf");
if(myCake != null) {
   ...
}
 

Ad2100

Architecte en herbe
21 Septembre 2016
9
0
62
17
Tous les identifiants en Java commencent par une minuscule et non pas par une majuscule ; car là ta variable Item indique plutôt que tu appelles une fonction de la classe org.bukkit.entity.Item.

De plus, en Java tu ne peux utiliser l'opérateur de comparaison == uniquement pour les nombres ; pour les chaînes de caractères, tu dois utiliser x.equals(y).
Java:
@Nullable
public static ItemStack getRenamedItem(Inventory inventory, Material expectedMaterial, String expectedName) {
   for(ItemStack stack : inventory.getStorageContents()) {
      if(stack != null && stack.getType() == expectedMaterial && stack.hasItemMeta()) {
         ItemMeta meta = stack.getItemMeta();
        
         if(meta.hasDisplayName() && meta.getDisplayName().equals(expectedName)) {
            return stack;
         }
      }
   }
  
   return null;
}


Player player = ...;
ItemStack myCake = getRenamedItem(player.getInventory(), Material.CAKE, "Kougelhopf");
if(myCake != null) {
   ...
}
Merci bg !