Connaitre le contenu d'un slot, d'un inventaire player custom
-
tu as une methode genre getItemInSlot?
-
Non il faut faire getStackInSlot(SlotId).getItem() .
-
voila bha tu as le truc qu’il te faut
-
Oui, mais ca ne marche pas, ca ne detecte rien…
-
faut un system.out.println de ton itemStack amulette
-
J’ai fait et rien ne se passe
-
il te marque quoi? null?
-
Beh non il ne marque rien… Il ne détecte pas si il y a un truc dans le slot 19 de mon inventaire…
-
alors tu as un problème codé serveur je pense, il doit pas considérer tes nouveau slots comme existant
-
C’est en solo que j’ai testé
-
J’ai pas ta réponse, mais je vais faire un ajout hors sujet : Si tu compte faire un effet différent pour chaque amulette, je te conseil de mettre ton code liée a l’effet dans la classe de l’amulette, sinon ça va vite être le bordel dans ton code. Tu crée un interface Amulette qui possède une methode effet() par exemple, puis lors de chaque tick (ou autre, ça depend de ce que tu veux faire), tu appel la methode effet() si l’object dans le slot de l’amulette est différent de null.
La je parle pour l’amulette, mais tu peux faire encore plus général et faire une interface pour tes items customs.
-
En fait c’est un système de bonus: quand on porte un item d’une panoplie, ca augmente le bonus de 1, quand le bonus est 6, ça fait des effets bonus ^^ merci pour ta réponse meme si elle ne m’aide pas, actuellement ce code n’est pas dans un évent mais dans une class qui regroupe le reste de l’armure… Peut être que je dois passer par un évent ?
-
@‘sosoh’:
Beh non il ne marque rien… Il ne détecte pas si il y a un truc dans le slot 19 de mon inventaire…
Si ça affiche null, regarde doù vient le null, du slot, de l’item ou de l’itemStack. si ça n’affiche vraiment rien ça veut dire que ta méthode n’est pas appellée.
-
Salut, rien ne s’affiche j’ai donc fait ca dans mon event handler mais ca ne marche toujours pas

@SubscribeEvent public void onLivingUpdateEvent(LivingUpdateEvent event) { if (event.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entity; ItemStack amulette = minefusInventory.getStackInSlot(19); if(amulette != null && amulette.getItem() == ModDofusStuffs.StuffAmuletteBouftou) { player.setAbsorptionAmount(1); System.out.println("Ca marche amulette!"); } } } -
@‘sosoh’:
Salut, rien ne s’affiche j’ai donc fait ca dans mon event handler mais ca ne marche toujours pas

@SubscribeEvent public void onLivingUpdateEvent(LivingUpdateEvent event) { if (event.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entity; ItemStack amulette = minefusInventory.getStackInSlot(19); if(amulette != null && amulette.getItem() == ModDofusStuffs.StuffAmuletteBouftou) { player.setAbsorptionAmount(1); System.out.println("Ca marche amulette!"); } } }Utilise plutôt le tick event du player et tout devrait fonctionner car actuellement tu utilise un event très général et qui ne se met à jour que dans certains cas et qui n’est pas spécifique aux joueurs.
EDIT :
Et puis, d’où vient le minefusInventory.getStackInSlot(19) ?? Que fait cette fonction, je la trouve bizarre car tu ne lui donnes pas le joueur ni de tile entity. -
Ca ne marche pas, je pense que ca vient de mon inventaire custom tu saurais m’aider si je t’envoie mes class ?
-
@‘sosoh’:
Ca ne marche pas, je pense que ca vient de mon inventaire custom tu saurais m’aider si je t’envoie mes class ?
vas-y, personnellement j’ai réussi à le faire fonctionner avec ça :
@SubscribeEvent public void onPlayerTickEvent(PlayerTickEvent event) { if (event.phase == Phase.START) { ItemStack stack = event.player.inventory.getStackInSlot(19); if (stack != null && stack.getItem() == Items.cookie) event.player.setAbsorptionAmount(1.0F); } }NOTE : il faut utiliser FMLCommonHandler.instance().bus().register(new ClasseOuSeTrouveTonEvent()) pour l’enregistrer et non MinecraftForge.EVENT_BUS.register(new ClasseDeTonEvent())
-
toi ca marche car c’est l’inventory de base, la c’est un custom, et je me demandais: avec l’inventaire de base tu dois faire event.player.inventory moi je fais directement minefusInventory, peut qu’il ne sait pas quel joueur check ? mais je ne saurais pas lui dire quel joueur check
-
Heu ?
Attends, on reprend depuis 0.
Explique ce qui tu cherches à faire exactement et envoie toutes les classes en rapport avec. -
Donc, je travaille sur un mod qui rajoute un nouvel inventaire capable d’accueillir l’équipement de base mais aussi des anneaux, amulettes etc… Je souhaites que lorsque le joueur porte une nouvelle armure et l’amulette de cette armure ca donne un bonus. Donc je cherche à connaitre le contenu de mon slot à amulette, le slot 19 de mon Gui Container Custom. J’ai donc essayé avec les codes ci-dessus, mais en vain. Tu souhaites quelles classes ? Je peux t’envoyer mon dossier source si tu le souhaites.