diff --git a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java index 48212c5aac..8ac337be97 100644 --- a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java @@ -122,7 +122,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev continue; if (depositItemInHand && i != inventory.selected) continue; - ItemStack item = inventory.getItem(i); + ItemStack item = depositItemInHand ? stack : inventory.getItem(i); if (item.isEmpty()) continue; if (!item.getItem() @@ -136,10 +136,15 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (remainder.getCount() == item.getCount()) continue; - ItemStack extracted = inventory.removeItem(i, item.getCount() - remainder.getCount()); + ItemStack extracted = depositItemInHand ? stack.copy() : inventory.removeItem(i, item.getCount() - remainder.getCount()); remainder = ItemHandlerHelper.insertItemStacked(targetInv, extracted, false); anyInserted = true; + if(depositItemInHand) { + stack.setCount(remainder.getCount()); + remainder.setCount(0); // clear it because we already set the count and don't want to duplicate it + } + // remainder might not be empty in itemhandler edge cases if (!remainder.isEmpty()) failedInsertions.add(remainder);