diff options
| -rw-r--r-- | item_transport.lua | 8 | 
1 files changed, 4 insertions, 4 deletions
| 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 | 
