From 9f66fd40ad45d80d7f3e3a7dd61a6789e101a9e5 Mon Sep 17 00:00:00 2001 From: Novatux Date: Sat, 11 Jan 2014 08:04:11 +0100 Subject: allow_metadata_inventory_take returns a number, not a bool --- item_transport.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'item_transport.lua') diff --git a/item_transport.lua b/item_transport.lua index e67ef35..b97d5bb 100644 --- a/item_transport.lua +++ b/item_transport.lua @@ -38,7 +38,7 @@ function pipeworks.tube_item(pos, item) end -- adding two tube functions --- can_remove(pos,node,stack,dir) returns true if an item can be removed from that stack on that node +-- can_remove(pos,node,stack,dir) returns the maximum number of items of that stack that can be removed -- remove_items(pos,node,stack,dir,count) removes count items and returns them -- both optional w/ sensible defaults and fallback to normal allow_* function -- XXX: possibly change insert_object to insert_item @@ -48,18 +48,18 @@ end local function grabAndFire(frominv,frominvname,frompos,fromnode,sname,tube,idef,dir,all) for spos,stack in ipairs(frominv:get_list(frominvname)) do if (sname == nil and stack:get_name() ~= "") or stack:get_name() == sname then - local doRemove = true + local doRemove = stack:get_count() if tube.can_remove then doRemove = tube.can_remove(frompos, fromnode, stack, dir) elseif idef.allow_metadata_inventory_take then doRemove = idef.allow_metadata_inventory_take(frompos,"main",spos, stack, fakePlayer) end -- stupid lack of continue statements grumble - if doRemove then + if doRemove > 0 then local item local count if all then - count = stack:get_count() + count = math.min(stack:get_count(), doRemove) else count = 1 end -- cgit v1.2.3