MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Client et serveur pas d'accord

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    4 Messages 3 Publieurs 798 Vues 1 Watching
    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.
    • S Hors-ligne
      Samsoule63
      dernière édition par

      Bonjour , j’ai un probleme dont je ne trouve pas la source :
      J’ai un tileentity IIventory qui stocke trois ints et du=eux itemstacks.
      J’ai une classe Container et guicontainer qui font biens leur boulot (les stacks sont biens places et les ints du tile entity sont afichés (sous forme de jauge).
      Sauf que , voila mon probème : lorsque j’entre dans ma session(singleplayer) et que je modifie les ints , les jauges se remplissent : parfait.
      Mais lorsque je deco-reco(du singleplayer),les jauges sont remises avec les valeurs par defaut du tileentity ! Pourtant , les tags NBT stockés le sont avec les bonnes valeurs et le traitement des valeurs se font correctement.
      J’ai donc cherché sur la source du problème et je suis tombé sur la classe GUIHandler :

      package com.bernard.torch.gui;
      
      import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity;
      
      import cpw.mods.fml.common.network.IGuiHandler;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.world.World;
      
      public class TorchGuiHandler implements IGuiHandler {
      
      @Override
      public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
      if (ID == 0) {
      TileEntity te = world.getTileEntity(x, y, z);
      if (te instanceof TorchRechargerTileEntity) {
      System.out.println("S:"+te.toString());
      return new TorchRechargerContainer((TorchRechargerTileEntity) te, player.inventory);
      }
      }
      
      return null;
      }
      
      @Override
      public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
      if (ID == 0) {
      TileEntity te = world.getTileEntity(x, y, z);
      if (te instanceof TorchRechargerTileEntity) {
      System.out.println("C:"+te.toString());
      return new TorchRechargerGuiContainer((TorchRechargerTileEntity) te, player.inventory);
      }
      }
      
      return null;
      }
      
      }
      
      

      (J’ai redefini la methode toString de mon tileentity pour qu’il affiche les ints)

      Et là, minecraft m’affiche S:vraies valeurs et C:valeurs par defaut

      Je ne vois pas du tout d’où le problème peut venir , j’ai compris que le monde serveur conservait les donnees NBT après un deco-reco alors que le client ne conservait pas les donnees sur la durée

      Si vous pouviez m’aider je n’ai pas trouve de solution , ni sur le forum, ni sur google

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Salut,
        Le tutoriel à la réponse à ton problème :
        https://www.minecraftforgefrance.fr/showthread.php?tid=1113

        Deux autres fonctions qui pourront vous être utile :

            public Packet getDescriptionPacket()
            {
            NBTTagCompound nbttagcompound = new NBTTagCompound();
            this.writeToNBT(nbttagcompound);
            return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
            }
        
            public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
            {
            this.readFromNBT(pkt.func_148857_g());
            }
        

        Elles permettent d’envoyer au client toutes les valeurs qui ont été enregistrées dans le tag nbt lorsque l’entité de bloc est chargée.
        Attention, elles ne permettent pas d’envoyer les valeurs du client vers le serveur, pour cela il faut utiliser un paquet, ce que nous verrons plus tard dans un autre tutoriel.

        1 réponse Dernière réponse Répondre Citer 0
        • BrokenSwingB Hors-ligne
          BrokenSwing Moddeurs confirmés Rédacteurs
          dernière édition par

          Il faut tu syncro les données avec les méthode addCraftingToCrafters il me semble

          1 réponse Dernière réponse Répondre Citer 0
          • S Hors-ligne
            Samsoule63
            dernière édition par

            Merci beaucoup ! pourtant j’avais relu le tuto 3 fois mais je suis passé devant …

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

            MINECRAFT FORGE FRANCE © 2024

            Powered by NodeBB