I haven't looked at all your code, but this doesn't look right to me?
https://github.com/bread88993/Mystiasdelight-1.19.2-Forge/blob/4729748b580fb72f94056d717c8278599fdab79d/src/main/java/com/bread88993/mystiasdelight/screen/BarbecuenetMenu.java#L37
Slots should be initialised to the block entity data on the server.
On the client, the slots should be backed by an empty container of the correct size ready to be filled with the data from the server.
The idea is the client side slots are just a proxy to the server data.
Instead you seem to be the using client side capability data of the block entity as the backing of the slots?
Maybe that is ok? But I haven't seen it done that way.
I imagine since your block entity also has code to synchronize the same data to the client, the 2 different channels could conflict with each other perhaps with inconsistent data since the networking is inherently asynchronous?
Is there some other reason why you would always synchronize the inventory the client?
The container gui processing does this for you and more efficently since it only happens when the GUI is open for that player and not everybody in range all the time.
You can see the basic idea of the normal way of doing it in this immersive engineering menu:
https://github.com/BluSunrize/ImmersiveEngineering/blob/1.19.2/src/main/java/blusunrize/immersiveengineering/common/gui/AlloySmelterMenu.java