Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Slot#onSlotChanged
хук туда, дальше обнуляешь слот (куда положили предмет) при нужных условиях, не забывая вернуть предмет игроку
или
Slot#canTakeStack
ещё можно
Slot#isItemValid
Для выбрасывания ловишь ItemTossEvent, где у EntityItem можно легко поменять итемстак, лул
С выкидыванием разобрался, спасибо.
А как узнать, что игрок кладет предмет именно в слот сундука, например?
Просто будет глупо, если он не сможет перетаскивать предмет по своему инвентарю при открытом-то сундуке.
За slot.inventory. Проверяешь, что это за инвентарь, и если туда нельзя класть этот предмет, возвращай его игроку. Мне для этих целей пришлось в NBT предмета писать ник владельца и возвращать по нику. Дыр в способе пока не нашли