Non résolu [1.16.5] Modifier la tileentity d'un bloc depuis le GUI (ContainerScreen)
-
Bonjour à tous !
Je suis entrain de travailler sur un coffre à code : lorsqu’on tente de l’ouvrir, une interface apparait avec des boutons pour entrer un code, si le code est bon, le coffre s’ouvre.
Toutes les données sont stockées dans la tileentity du coffre, mais je ne sais pas comment y accéder depuis le GUI (containerscreen), car on a accès qu’au container, qui lui meme n’a pas d’accès à la tileentity. Je voudrais donc pouvoir récupérer la tileentity depuis le GUI ou le container, afin de pouvoir la modifier à chaque fois qu’un bouton est pressé.
Pouvez vous m’aider ?mon mod : https://github.com/noclone/Mod16
-
Bonsoir,
Tu as deux constructeurs sur ton container, un pour le client et un pour le serveur.
Celui du serveur c’est facile =>
https://github.com/noclone/Mod16/blob/master/src/main/java/fr/noclone/lockdown/Safe/ContainerSafe.java#L28
https://github.com/noclone/Mod16/blob/c9304e721215fa8f000055da34e4e6c360d5b8a8/src/main/java/fr/noclone/lockdown/Safe/TileEntitySafe.java#L100
Il est déjà appelé avec un this depuis le tile entity, donc tu as juste à remplacer le type IInventory par ton TileEntity (ou faire un cast ensuite dans le constructeur).Pour constructeur du client, tu as un buffer contenant les données envoyés au client pour créer le container : https://github.com/noclone/Mod16/blob/master/src/main/java/fr/noclone/lockdown/Safe/ContainerSafe.java#L23
Dans ce dernier il faut encoder les coordonnées du tile entity pour puis les lire et enfin get la tile entity avec World#getTileEntity (tu peux utiliser Minecraft.getInstance().getWorld() pour récupérer une instance du world client). -
@robin4002
Merci pour ton aide ! J’ai réussi à récupérer la tileentity dans mon GUI, mais maintenant j’ai un autre problème : lorsque j’entre le mot de passe dans le GUI côté client, comment je fais pour envoyer les modifs que j’ai fais à la tileentity au côté serveur ? En 1.12.2 c’etait avec un système de network, mais j’ai l’impression que ça a pas mal changé car les librairies que j’utilisais n’existent plus…
Merci d’avance ! -
Pour les paquets en 1.13 et + récent, suis ce tutoriel : https://www.minecraftforgefrance.fr/topic/5343/communiquer-entre-le-client-et-le-serveur-le-réseau-et-les-paquets
-
Super merci beaucoup pour ton aide !