Résolu Mettre à jour l'inventaire côté server
-
Bonjour je m’appelle clément je suis débutant dans les mods forge
voila mon problème
j’ai fait un Gui (côté client du coup) ou j’ai fait un gui qui donne tel ou tel truc avec des boutons, mon problème est que les items sont donné seulement du côté client dès que j’ouvre un four coffre etc les items s’enlève
j’ai chercher du coté des packets pour envoyer l’inventaire de mon joueur au server à la fermeture du Gui mais je n’y arrive pas je trouve très peu de tuto
avez vous une idée pour mettre à jour l’inventaire ?
pour ajouter un inventaire j’utilise minecraft.getminecraft.player.inventory.addItemStackToInventory mais il est éxecuté seulement du coté client à cause du Gui -
Ah mais oui x)
ligne 14ItemStack toSend = ByteBufUtils.readItemStack(buf);
devrait êtrethis.toSend = ByteBufUtils.readItemStack(buf);
-
Bonsoir,
En fait il faudrait surtout un paquet pour exécuter addItemStackToInventory sur le serveur au lieu de le faire sur le client.
Tu peux suivre ce tutoriel : https://www.minecraftforgefrance.fr/topic/1000/1-7-2-le-network -
Ce message a été supprimé ! -
@robin4002 donc il faut dans le tutoriel je fasse passer un ItemStack à la place du String c’est ça?
-
public class Inventory implements IMessage { public Inventory() { } public ItemStack toSend; public Inventory(ItemStack toSend) { this.toSend = toSend; } @Override public void fromBytes(ByteBuf buf) { ItemStack toSend = ByteBufUtils.readItemStack(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeItemStack(buf,toSend); } public static class Handler implements IMessageHandler<Inventory, IMessage> { @Override public IMessage onMessage(Inventory message, MessageContext ctx) { System.out.println(message.toSend); System.out.println(String.format("Received %s from %s", message.toSend, ctx.getServerHandler().player.getDisplayName())); return null; // no response in this case } } }
j’ai fait ça pour voir si l’itemstack passe mais le problème quand je mets
network.sendToServer(new Inventory(new ItemStack(Items.APPLE,1)));
ça me retourn null
-
Le paquet me semble bon.
à quel endroit tu reçois null ? -
ça me renvoi null ici sur leSystem.out.println(message.toSend); System.out.println(String.format("Received %s from %s", message.toSend, ctx.getServerHandler().player.getDisplayName()));
message.toSend = null
je cromprend pas pourquoi -
Ah mais oui x)
ligne 14ItemStack toSend = ByteBufUtils.readItemStack(buf);
devrait êtrethis.toSend = ByteBufUtils.readItemStack(buf);
-
@robin4002
oh merci c’est ça t’es un dieu! -
passe ton truc en résolu nn?