When you try to replace a drawer upgrade (such as the emerald one) with a flint upgrade, while the drawer is already over a stack full, the flint upgrade gets deleted and turns into a duplicate emerald one.
How to reproduce:
Place a 1x1 drawer
Insert 128x stone (two stacks)
Insert an emerald upgrade
Open the drawer GUI
Pick up a flint upgrade and try to click it on the emerald upgrade
❌ flint upgrade literally turned green
This doesn't happen if the stack limit implied by the flint upgrade hasn't been reached yet when doing this (e.g. with only 64x stone)
Expected behaviour:
When you attempt to exchange an upgrade for another upgrade, by clicking with an item in your cursor on an item in the GUI, and when that exchange would result in the drawer having an overflow of contents (illegal state as mandated by the upgrades), then that exchange should be refused altogether. Nothing should happen and the items in the GUI and in your cursor should remain unchanged. Exactly like what happens if you directly try to take out an upgrade that is required for the drawer to hold all of its current contents.
When you try to replace a drawer upgrade (such as the emerald one) with a flint upgrade, while the drawer is already over a stack full, the flint upgrade gets deleted and turns into a duplicate emerald one.
How to reproduce:
This doesn't happen if the stack limit implied by the flint upgrade hasn't been reached yet when doing this (e.g. with only 64x stone)
Expected behaviour: When you attempt to exchange an upgrade for another upgrade, by clicking with an item in your cursor on an item in the GUI, and when that exchange would result in the drawer having an overflow of contents (illegal state as mandated by the upgrades), then that exchange should be refused altogether. Nothing should happen and the items in the GUI and in your cursor should remain unchanged. Exactly like what happens if you directly try to take out an upgrade that is required for the drawer to hold all of its current contents.
Versions: Forge: 43.2.14 SD: 1.19-11.1.2
This issue exists in 1.16.5 too.