@Override
public Packet getDescriptionPacket(){
NBTTagCompound tag = new NBTTagCompound();
writeToNBT(tag);
return new Packet132TileEntityData(xCoord, yCoord, zCoord, 0, tag);
}
@Override
public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt){
readFromNBT(pkt.data);
}
public void sendDescriptionPacket(){
PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 64D, worldObj.provider.dimensionId, getDescriptionPacket());
}
sendDescriptionPacket() is a 'homemade' method with which you can send the nbt packet to the client whenever you want. The fewer packets you send the better though. So the best that you can do is simulating the same behaviour on the client and on the server and only send a packet when you know the client will be desynched.