• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Changer le maxStackSize de minecraft (en général)

    1.11.x
    1.11.2
    2
    14
    1877
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Snyker
      Snyker dernière édition par Snyker

      Bonjour,

      Le titre risque d’être un peu confus mais je ne savais pas quoi mettre plus explicitement.
      Pour la faire détailler, lorsqu’on créer un item il est possible de changer le stack de celui-ci, il est également possible de modifier cela sur les containers, c’est la ou surgit mon problème.

      Ayant des items pouvant se stacker jusqu’a 256, je souhaiterais que celui-ci puisse être de 256 également dans le slot du container associé. Cependant, après une recherche et une aide sur le discord, (Merci à LeBossMax2 pour les classes recherchés et Ourten pour une lib qui outrepasserai cela [j’en parlerais un peu plus tard]) il semblerait que la classe qui me pose soucis est : PacketBuffer {#writeItemStack, #readItemStack}, dans ces méthodes le stackSize de l’item est limité en byte, soit 127 max en Java. (Il doit y en avoir d’autres à modifier également mais celle-ci est, je pense prioritaire)

      Suite à la lib de Ourten, j’ai regardé le contenu et je dois dire que je me suis très viiiite perdu, après m’être renseigné, la lib fait du Hack + de la Reflection et c’est la ou je bloque, je comprend un petit peu la reflection mais avec le coup du hack je suis perdu.
      Le problème également de la lib, c’est que si je l’utilise en mod, en modifiant le stackSize à 256, tous les autres items pourront également être à ce compte là (ce que je ne veux surtout pas).

      En résumé :

      • Je veux pouvoir modifier le stackSize de seulement mes items jusqu’en 256 (voir plus).
      • Aucun item de minecraft ne doit être modifié.
      • Eviter le hack et la reflection (si possible)
      • Eviter d’utiliser un autre mod (mais plutot une lib)

      Du coup si vous avez des pistes un peu plus facile à comprendre, je prend !

      Lib/Mod de Ourten

      Aucune signature n'est disponible pour une barre chocolatée.

      1 réponse Dernière réponse Répondre Citer 0
      • Snyker
        Snyker dernière édition par

        Bon j’ai enfin réussi ! Tout marche (enfin juste des problèmes style quand on double click pour tout ramener ou encore quand on split l’item en plusieurs slot)
        Je te remercie beaucoup LeBossMax2 (Le problème venait bien qu’il manquait un packet pour confirmer la transaction, a moi à le sécuriser maintenant).
        Merci beaucoup ahah!

        Aucune signature n'est disponible pour une barre chocolatée.

        1 réponse Dernière réponse Répondre Citer 0
        • LeBossMax2
          LeBossMax2 dernière édition par

          J’ai une petite idée de comment faire. En gros ce qui se passe normalement, c’est que le container envoie à tous ces listeners le contenu de l’inventaire. Parmi ses listeners, il y a le joueur qui va envoyer le contenu du container par un Packet au client. Le client utilise alors la fonction PacketBuffer.readItemStackFromBuffer qui pose problème. Une solution possible est donc d’enlever le joueurs des listeners et de mettre ton propre listener à la place qui va envoyer un packet custom au client.

          1 réponse Dernière réponse Répondre Citer 1
          • Snyker
            Snyker dernière édition par

            Ah ce serai une possibilité, mais en faisant cela j’aurais pas énormément de chose à refaire notamment sur la gestion des slots, des clicks etc… ?

            Aucune signature n'est disponible pour une barre chocolatée.

            1 réponse Dernière réponse Répondre Citer 0
            • LeBossMax2
              LeBossMax2 dernière édition par

              Non, tu as juste à recoder un listener custom (qui fait juste envoyer des packets) et les packets qui font comme les packets originaux, donc tu peux sûrement ne pas recoder ça, mais juste appeler les fonctions que les packets originaux appellent.

              1 réponse Dernière réponse Répondre Citer 0
              • Snyker
                Snyker dernière édition par

                D’accord merci, je verrais ça demain et je tiendrais ce post au courant

                Aucune signature n'est disponible pour une barre chocolatée.

                1 réponse Dernière réponse Répondre Citer 0
                • Snyker
                  Snyker dernière édition par Snyker

                  Ok alors j’ai réussi quelques trucs mais je sens que j’approche de la fin, cependant j’aurais besoin d’aide concernant la synchronisation du client au serveur.

                  Donc j’ai recoder 2-3 méthodes (notamment le openGui) et ainsi j’ai pu modifier certains packets.

                  Actuellement qu’est ce que j’ai fait ? :
                  openGui -> au lieu d’ajouter le entityPlayer en listener j’ai ajouté mon propre joueur implémentant IContainerListener et ainsi pouvoir accéder aux méthodes #sendAllContent, etc…
                  Depuis ces méthodes j’ai pu faire mes packets pour envoyer les données du contenu au client avec en prime la refonte du PacketBuffer pour augmenter la taille d’envoie des Items (donc jusqu’à la tout marche).

                  Problème : Quand j’ouvre l’inventaire, je vois bien tous les items avec la bonne taille, cependant, quand je clique sur les Items supérieur à 127 de quantité, ils disparaissent et repop en cliquant et autre part, DE PLUS, j’ai beau changé les items de place, ils ne s’updatent pas, (donc surement un packet à envoyer au serveur mais cela risque de faire une faille et un ajout important d’item sur le serveur juste en hackant le client ?)

                  Du coup est-ce que j’ai mal saisit un truc que tu m’avais dit plus haut ou j’ai fait des choses inutiles que j’aurais pu éviter ? Et je ne vois pas comment update le serveur lors du changement de slot avec une faille de ce packet.

                  Aucune signature n'est disponible pour une barre chocolatée.

                  1 réponse Dernière réponse Répondre Citer 0
                  • LeBossMax2
                    LeBossMax2 dernière édition par LeBossMax2

                    Je ne comprends ps ce que tu veux dire par “j’ai beau changé les items de place, ils ne s’updatent pas”.
                    Pour ce que tu as dit avant, ça doit juste être un problème de rendu, minecraft doit sûrement vérifier que la quantité d’item est normal avant de l’afficher sur la souris.

                    1 réponse Dernière réponse Répondre Citer 0
                    • Snyker
                      Snyker dernière édition par Snyker

                      En gros pour : “j’ai beau changé les items de place, ils ne s’updatent pas”, quand je souhaite les changer de slot, ça ne marche (suite à un manque de packet côté client surement) ils restent à leur place d’origine.
                      Concernant le rendu je vais vérifier cela, merci.

                      Aucune signature n'est disponible pour une barre chocolatée.

                      1 réponse Dernière réponse Répondre Citer 0
                      • Snyker
                        Snyker dernière édition par Snyker

                        Donc j’ai réussi à sauvegarder le nouvel emplacements des items avec le client et serveur (y’avait pas besoin de packet, c’est juste moi qui ai oublié de sauvegarder l’inventaire ahah)
                        Cependant j’ai toujours ce problème de disparation des items, voici un gif :
                        https://gyazo.com/e66d0aefa0dc74f5076be6d2c2681162
                        A la fin du gif bien évidemment quand je ferme l’inventaire, les items disparues réapparaissent et le changement de slot est effectif lui aussi.
                        Concernant le problème de rendu je n’ai rien trouvé dans la classe ItemRenderer ou encore dans le GuiContainer, cependant j’ai une petite idée, dans le drawScreen l’inventaire de minecraft est utilisé, je me dis donc que cette limite peut être prise en compte, sauf que celui-ci est limité à 64 et pas à 127, donc tous les items supérieur à 64 devrait disparaitre, non ? enfin bon je suis un peu confus moi même, il ne me reste plus que le render et j’ai tout bon x). Si vous avez une idée de quelle classe gère ça je prend.

                        Aucune signature n'est disponible pour une barre chocolatée.

                        1 réponse Dernière réponse Répondre Citer 0
                        • LeBossMax2
                          LeBossMax2 dernière édition par

                          Ah, là le problème, c’est peut-être qu’il save les items et n’arrive pas à les load

                          1 réponse Dernière réponse Répondre Citer 0
                          • Snyker
                            Snyker dernière édition par

                            Haaaan, ça expliquerait pourquoi quand je clique sur les items, il me fait comme un " reboot " de l’inventaire, du coup j’ai un problème dans le packet d’envoie ou juste dans le la lecture de l’inventaire/container ?

                            Aucune signature n'est disponible pour une barre chocolatée.

                            1 réponse Dernière réponse Répondre Citer 0
                            • LeBossMax2
                              LeBossMax2 dernière édition par

                              Plutôt un problème de saveToNBT et loadFromNBT de l’inventory (Enfin le nom des méthodes c’est probablement pas ça, mais tu vois ce que je veux dire)

                              1 réponse Dernière réponse Répondre Citer 0
                              • Snyker
                                Snyker dernière édition par

                                Non j’ai essayé ça ne vient pas de là, tout est bon de ce côté :/, en revanche j’ai trouvé le " handleWindowClick " donc je pense que ça vient de là, car à un moment il renvoie du contenue et vu qu’il repasse par un packet ou y’a le byte je me dis que c’est ça. Donc je suis en train de refaire 2-3 packets ahahahah (tuez moi)

                                Aucune signature n'est disponible pour une barre chocolatée.

                                1 réponse Dernière réponse Répondre Citer 0
                                • Snyker
                                  Snyker dernière édition par

                                  Bon j’ai enfin réussi ! Tout marche (enfin juste des problèmes style quand on double click pour tout ramener ou encore quand on split l’item en plusieurs slot)
                                  Je te remercie beaucoup LeBossMax2 (Le problème venait bien qu’il manquait un packet pour confirmer la transaction, a moi à le sécuriser maintenant).
                                  Merci beaucoup ahah!

                                  Aucune signature n'est disponible pour une barre chocolatée.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • 1 / 1
                                  • Premier message
                                    Dernier message
                                  Design by Woryk
                                  Contact / Mentions Légales

                                  MINECRAFT FORGE FRANCE © 2018

                                  Powered by NodeBB