@‘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);
}
}
}
:::