CustomContainer : modifier les maxStackSize



  • Bonjour à tous !

    J'écris ce petit topic pour vous demander vos avis ou vos idées concernant un partie de mon mod.

    Pour faire simple, la totalité de mes Items ont un MaxStackSize de 1 et je souhaiterai faire un block (équivalent à un gros chest peut être ?) dans lequel les itemstack pourraient atteindre la size de 64 (Le top serait que lorsqu'un joueur retire un objet, un seul itemstack de size 1 lui est rendu).

    Pour l'instant la seule idée que j'ai eu serait plutot de faire un bloc avec GUI et tile entity qui peut "recevoir" les objets un par un. Il détecte l'objet et incrémente une variable (associée à l'objet détecté) dans la tileEntity. Inversement, le block serait capable de rendre les objets un par un (avec un bouton "retrait" sur le GUI par exemple ?) et décrémenterait la variable associée dans la tileEntity.

    Le soucis est que ça fait beaucoup puisque chaque item aurait une variable et un bouton associé …
    Du coup je suis ouvert à toutes vos propositions 😄

    Je vous remercie d'avance et je vous souhaite une bonne journée !
    ~Myrilandel



  • Même si tu as mis setMaxStackSize, quand tu fait lestack.stackSize = quelque chose, la limite n'es pas vérifiée donc tu n'as pas besoin de tembeter

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk



  • Salut AymericRed et merci de ta réponse.

    En fait, j'aimerai effectivement que le stackSize augmente dans le coffre indépendemment du MaxStackSize.
    Seulement comme ce coffre est associé à un Container, le container vérifie que le StackSize est bien inférieur ou égal au MaxStackSize de l'objet (dans les méthodes slotClick(), mergeItemStack(), isStackable() …).
    Du coup je me demande si ça vaudrait plus le coup de redéfinir les méthodes ou plutot de partir sur une "Machine" avec des entrées/sorties.



  • Ou sinon, tu peux te servir des metadatas. Genre si ton item se trouve hors de ton container, metadata 0, sinon c'est qu'il est dedans, alors metadata 1. Ensuite tu override la méthode onUpdate(blabla) et tu vérifies ton metadata, et en fonction de cela tu adaptes la paramètre de setMaxStackSize. Y'a sûrement une autre méthode moins dégueu après, j'pense ^^'



  • Non sinon redéfinir les fonctions peut être un bon moyen, tu les copies dans ton Container, tu fais ctrl+f (recherche) et tu recherches stackSize et à chaque endroit, si ça gène tu enlèves.



  • Salut Plaigon, merci à toi aussi !
    C'est vrai que je n'avais pas pensé à utiliser les metadatas pour ça. L'ennuie c'est que j'ai pas mal d'Items dans le mod et ça risque de me faire une sacrée dose de copier/coller, je garde quand même l'idée dans un coin de ma tête ça me sera certainement utile à un moment donné 😉

    Je suis en train de tester les redéfinitions de méthodes, je pars sur un customContainer pour pas que ça fasse trop fouilli, je vous tiens au courant de ce que ça donne !

    Hésitez pas si vous avez d'autres idées pendant ce temps, je suis preneur 😉
    Merci pour votre aide en tout cas !



  • Ah et aussi, pendant que j'y pense, si tu retires les vérifications, les limites de l'inventaire du joueur ne seront pas check non plus, il faudrait que tu vérifies si le slot est de l'inv du joueur ou de ton coffre au début des fonctions (si possible) et puis appelé la fonction de la superclass si c'est l'inv vanilla.



  • Justement j'en viens à cette étape 😉
    Pour l'instant les stacks s'empilent bien dans le coffre et il est uniquement possible de déposer et retirer les items un par un.
    Il ne reste plus qu'à faire en sorte qu'ils ne se stackent pas dans l'inventaire du joueur et le tour est joué !
    Quand ce sera fini je posterai la métode dans le post (au cas où ça puisse servir à quelqu'un… Et si j'y arrive !)

    Par contre j'ai un petit bug qui apparait de temps à autres (je n'arrive pas bien à cerner à quel moment). Mais en gros au bout d'un certains nombre de manipulation dans le coffre, je ne peux plus déplacer aucun item avec la souris (que ce soit de l'inventaire du joueur vers le coffre ou inversement. Les déplacements au sein du coffre ou au sein de l'inventaire du joueur sont eux aussi impossibles).  Si jamais vous avez des idées !

    A plus tard

    EDIT : Voilà, tout est modifié et tout fonctionne ! Encore merci pour votre aide 🙂
    Je pose ici les redéfinitions des méthodes si quelqu'un en a besoin !