From cf97f02434af2d6342b3e11156d089f40a7a2460 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 9 Apr 2017 15:05:44 -0400 Subject: [PATCH] only reject part of itemtack from chest, if possible (e.g. if there's room for 50 of some item, and you send a stack of 99, 50 are added to the chest and a stack of 49 is rejected and sent on to the next destination) --- compat.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/compat.lua b/compat.lua index 9c956e6..c0e5e8c 100644 --- a/compat.lua +++ b/compat.lua @@ -26,12 +26,13 @@ minetest.override_item("default:furnace", { end end, can_insert = function(pos,node,stack,direction) + local onestack = stack:peek_item(1) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if direction.y == 1 then - return inv:room_for_item("fuel", stack) + return inv:room_for_item("fuel", onestack) else - return inv:room_for_item("src", stack) + return inv:room_for_item("src", onestack) end end, input_inventory = "dst", @@ -77,10 +78,11 @@ minetest.override_item("default:furnace_active", { can_insert = function(pos, node, stack, direction) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() + local onestack = stack:peek_item(1) if direction.y == 1 then - return inv:room_for_item("fuel", stack) + return inv:room_for_item("fuel", onestack) else - return inv:room_for_item("src", stack) + return inv:room_for_item("src", onestack) end end, input_inventory = "dst", @@ -109,7 +111,8 @@ minetest.override_item("default:chest", { can_insert = function(pos, node, stack, direction) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return inv:room_for_item("main", stack) + local onestack = stack:peek_item(1) + return inv:room_for_item("main", onestack) end, input_inventory = "main", connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} @@ -137,7 +140,8 @@ minetest.override_item("default:chest_locked", { can_insert = function(pos, node, stack, direction) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return inv:room_for_item("main", stack) + local onestack = stack:peek_item(1) + return inv:room_for_item("main", onestack) end, connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} },