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

Résolu Synchro d'items TileEntity

1.8.x
1.8.9
2
3
799
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.
  • LeBossMax2
    LeBossMax2 dernière édition par 24 août 2016, 21:56

    J’ai un problème que je n’arrive pas à corriger :
    J’ai une tileEntity avec un rendu TESR qui affiche les items qu’il y a dans la tileEntity. Le problème c’est que, a un moment du code de la tileEntity, le client n’est pas correctement synchronisé avec le serveur (je supprime les items contenus dans la tileEntity coté serveur et il y sont encore coté client). J’ai donc ajouter “worldObj.markBlockForUpdate(this.pos);” et “this.markDirty();” (coté serveur) pour synchroniser le contenu de la tileEntity mais cela ne fonctionne pas. Quelque chose de très bizarre : si il y as des items coté client mais pas coté serveur, et que j’ajoute un item coté serveur, l’item vas arriver coté client mais les autres items serons toujours là.

    Class de la tileEntity : pastebin

    Class du block : pastebin

    Le problème est à la fin de ma fonction “checkForCrafting()”.

    EDIT : J’ai trouvé un autre endroit où j’ai ce problème : à la fin de ma fonction “ejectInvalidItems()”, car la aussi, je supprime des items de la table de craft coté serveur mais il restent coté client.

    1 réponse Dernière réponse Répondre Citer 0
    • SCAREX
      SCAREX dernière édition par 24 août 2016, 23:06

      Le problème de synchronisation se trouve dans le Gui si j’ai bien compris ?

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      1 réponse Dernière réponse Répondre Citer 0
      • LeBossMax2
        LeBossMax2 dernière édition par 25 août 2016, 09:34

        @‘SCAREX’:

        Le problème de synchronisation se trouve dans le Gui si j’ai bien compris ?

        Pas vraiment, il y a bien un Gui mais ce n’ai pas ici le problème : le Gui ne sert que à ajouter un filtre.
        Quand je dis que “j’ajoute un item” c’est dans la fonction getActualGrid() car elle permet de récupérer les EntityItem qui sont au sol devant ma machine et les met dans l’inventaire (buffedItems)
        Et quand je dis “je supprime des items de la table de craft” je veux dire que c’est la table de craft qui supprime les item ( soit pour réaliser le craft , soit pour éjecter de la table les items qui ne sont plus valide à cause du filtre) et c’est là où il y as le problème de synchro.

        Ps : J’ai mis des commentaires dans la class de la tileEntity pour que ce soit plus claire.

        EDIT : J’ai trouver la solution :
        Dans la fonction readFromNBT, j’ai oublié de réinitialiser les listes d’Items avant d’ajouter les items contenus dans le NBTTagCompound donc quand j’essayai de synchroniser, le client gardais les items qu’il avait et ajouter par dessus les items qu’il y a coté serveur.

        :::
        public void readFromNBT(NBTTagCompound tag)
        {
            super.readFromNBT(tag);

        this.clear(); // C’est cette ligne qu’il manquais.

        NBTTagList recipeItemsTag = tag.getTagList(“recipeItems”, Constants.NBT.TAG_COMPOUND);

        for (int i = 0; i < recipeItemsTag.tagCount(); ++i)
            {
                NBTTagCompound nbttagcompound = recipeItemsTag.getCompoundTagAt(i);
                int slot = nbttagcompound.getInteger(“Slot”);
                if (slot >= 0 && slot < this.recipeItems.length)
                {
                    this.recipeItems[slot] = ItemStack.loadItemStackFromNBT(nbttagcompound);
                }
            }

        NBTTagList buffedItemsTag = tag.getTagList(“buffedItems”, Constants.NBT.TAG_COMPOUND);

        for (int i = 0; i < buffedItemsTag.tagCount(); ++i)
            {
                NBTTagCompound nbttagcompound = buffedItemsTag.getCompoundTagAt(i);
                int slot = nbttagcompound.getInteger(“Slot”);
                if (slot >= 0 && slot < this.buffedItems.length)
                {
                    this.buffedItems[slot] = ItemStack.loadItemStackFromNBT(nbttagcompound);
                }
            }

        }
        :::

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

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB