Вопрос по transferStackInSlot

Версия Minecraft
1.7.10
API
Forge
@Override public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { ItemStack itemstack = null; Slot slot = (Slot) this.inventorySlots.get(slotIndex); if (slot != null && slot.getHasStack()) { ItemStack stackInSlot = slot.getStack(); itemstack = stackInSlot.copy(); // Проверяем тип предмета Item itemInStack = stackInSlot.getItem(); if (itemInStack == Items.water_bucket) { if (!this.mergeItemStack(stackInSlot, 0, 1, false)) { return null; } } else if (itemInStack == ModItems.adamantite || itemInStack == ModItems.palladium || itemInStack == ModItems.cobalt) { if (!this.mergeItemStack(stackInSlot, 2, 3, false)) { return null; } } else { return null; } if (stackInSlot.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } } return itemstack; }

Как это можно улучшить (конкретно у меня не забираются предметы с блока)
если что то такое добавлю то всё ломается

if (player.inventory.addItemStackToInventory(stackInSlot)) { slot.putStack(null); slot.onSlotChanged(); }
 
Сверху