Non résolu [1.12.2] Problème de synchronisation des données d'une tileentity entre le client et le server
-
Salut à tous,
Je suis nouveau dans le modding et j’ai commencé à suivre un tuto pour apprendre les bases. J’ai créé un four rapide et d’autres blocks, et j’essaie maintenant d’ajouter moi-même une porte avec un mot de passe (dossier coded_door)
J’ai créé un GUI dans lequel je peux cliquer sur des boutons pour entrer le code. Il est stocké sous forme d’une String dans la TileEntity. J’ai suivi le même schéma que les machines précédentes pour synchroniser les données du côté client vers le côté serveur, mais pour une raison quelconque, cela ne fonctionne pas. La string est bien modifiée côté client, mais la synchronisation ne se fait pas côté server.
J’ai passé environ 15 heures à essayer de debug le code, mais comme je l’ai dit, je suis nouveau dans ce domaine, donc je ne sais pas vraiment où chercher.
Voici le lien du tuto que j’ai suivi : https://www.youtube.com/watch?v=rVis_D00afc&list=PLmaTwVFUUXiBE7m5d_uLIRyujqsPTYX4C&index=1
Et voici mon code : https://github.com/noclone/testmodC’est peut-être une erreur stupide, peut-être pas, je n’en ai aucune idée.
N’hésitez pas à me dire si vous avez besoin de plus d’informations, c’est mon tout premier post ^^Merci pour votre aide
-
Bonjour,
Ton code la synchronisation du serveur vers le client, mais pas l’inverse.
Ici : https://github.com/noclone/testmod/blob/master/src/main/java/noclone/testmod/CodedDoor/GuiCodedDoor.java#L64
Il faudrait envoyer un paquet vers le serveur, dans lequel tu gère la définition du mot de passe. -
@robin4002 ah d’accord je savais pas, il y a une fonction particulière qui fait ça ?
Merci ! -
Tu peux réutiliser le paquet que tu as déjà fait, comme tu as dans le container : https://github.com/noclone/testmod/blob/d47cd23eab65427e09b34c2a4749cd74b6e079a1/src/main/java/noclone/testmod/CodedDoor/ContainerCodedDoor.java#L41
Simplement il faut utiliser un sendToServer sur le guiEt aussi enregistrer le paquet https://github.com/noclone/testmod/blob/d47cd23eab65427e09b34c2a4749cd74b6e079a1/src/main/java/noclone/testmod/network/Messages.java#L23 une deuxième fois avec cette fois le serveur qui reçoit le paquet et non le client, et donc créé un handler dédié pour le paquet reçu par le serveur (car il faut adapter le code pour obtenir le joueur =>
ctx.getServerHandler().playerEntity
). -
@robin4002 super merci beaucoup pour ton aide ! ça marche !! et ça m’a permis de mieux comprendre le fonctionnement des paquets donc tout benef
merci bcp !