Résolu Problème de pickup dans inventaire custom
-
Bonjour,
j’ai un problème de drop sur mon inventaire custom je passe par l’event EntityItemPickupEvent mais ceci ne fonctionne pas tout le temps car par moment le drop passe en priorité sur l’inventaire de base.
Et le second problème et que je n’arrive pas à trouvé un moyen de vérifié si l’entité que je ramasse est déjà stocké dans un slot pour l’ajouté a celui ci au lieu de remplir a chaque fois un slot vide…
Voici mon code actuelle
@SubscribeEvent public void Drop(EntityItemPickupEvent event) { if ((event.entityLiving instanceof EntityPlayer)) { int j = 0; for (int i = 11; (i <= 50) && (j == 0); i++) { EntityPlayer player = (EntityPlayer)event.entity; ExtendedEntityPropCaracteristique ext = ExtendedEntityPropCaracteristique.get(player); if (ext.inventory.getStackInSlot(i) == null) { ext.inventory.setInventorySlotContents(i, event.item.getEntityItem()); event.item.setDead(); System.out.println(event.item.getEntityItem().getDisplayName()); System.out.println(i); j = 1; } else { event.setCanceled(true); } } } }
Voila merci d’avance pour votre aide.
-
Salut,
Si tu veux que l’inventaire de base soit remplit avant le tient, il faut d’abord vérifier s’il y a de place dans ce dernier.
Et si oui, il faut rien faire (le code qui remplit l’inventaire de base est appelé après EntityItemPickupEvent).Pour stacker avec un item existant, il faut vérifier si l’item en question est déjà présent dans l’inventaire. Rien de compliqué.
(le mot drop n’est pas du tout adapté à la situation. drop = laisser tomber. Là on parle du ramassage, donc pickup serait plus adapté comme nom de fonction et pour le titre de la discussion).
-
Merci mais je voudrais ignoré le pick up dans l’inventaire de base.
et pour stacker je ne trouve pas la fonction pour vérifier si l’item est déjà présent …
-
InventoryPlayer#hasItem, il me semble
-
Ou encore :
if(ext.inventory.getStackInSlot(i) != null && ext.inventory.getStackInSlot(i).getItem() == event.item.getEntityItem().getItem()) -
Merci pour ton aide Robin,
Je suis vraiment bête je n’avais pas fait attention que ext.inventory.getStackInSlot(i) avait des sous fonction
Tout fonctionne merci beaucoup j’ai enfin finit complètement mon inventaire custom !!! et il marche en multijoueur