I think this may be because the values after quit/load are not being propagated from the server side to the client. I had a similar problem until I added:
public Packet getDescriptionPacket()
{
NBTTagCompound tag = new NBTTagCompound();
this.writeToNBT(tag);
return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 1, tag);
}
and
@Override
public void onDataPacket(INetworkManager net, Packet132TileEntityData packet)
{ This function looks similar to a readFromNBT function, Google some examples }
The first function is serverside, and the second is clientside.
In my updateEntity, I also have a call (when necessary) to:
PacketDispatcher.sendPacketToAllPlayers(getDescriptionPacket());
it keeps things in sync between the server and client. I didn't see an updateEntity in your code, so I don't know if that would be relevant to you.