В общем, дополню свой ответ. Я бы на твоем месте, раз ты открываешь сумку исходя из того, что она в руках, то в момент сохранения данных сумки в НБТ, я бы не обращался к final полю itemStack, а брал бы текущий предмет через игрока - player#getHeldItem()
Так ты получишь гарантированно тот стак, и...