From 69a974cb6be690ae71d011f5764472e4e0bccc54 Mon Sep 17 00:00:00 2001 From: LNJ Date: Mon, 3 Apr 2017 12:43:16 +0200 Subject: [PATCH] Adapt drop function for 2x2 drawers to drop *all* items --- lua/api.lua | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/lua/api.lua b/lua/api.lua index 99b2813..bf8c8c8 100755 --- a/lua/api.lua +++ b/lua/api.lua @@ -77,26 +77,39 @@ end -- drop all items function drawers.drawer_on_dig(pos, node, player) + local drawerType = 1 + if core.registered_nodes[node.name] then + drawerType = core.registered_nodes[node.name].groups.drawer + end + local meta = core.get_meta(pos) - local count = meta:get_int("count") - local name = meta:get_string("name") + + k = 1 + while k <= drawerType do + -- don't add a number in meta fields for 1x1 drawers + local vid = tostring(k) + if drawerType == 1 then vid = "" end + local count = meta:get_int("count"..vid) + local name = meta:get_string("name"..vid) + + -- drop the items + local stack_max = ItemStack(name):get_stack_max() + + local j = math.floor(count / stack_max) + 1 + local i = 1 + while i <= j do + if not (i == j) then + core.add_item(pos, name .. " " .. stack_max) + else + core.add_item(pos, name .. " " .. count % stack_max) + end + i = i + 1 + end + k = k + 1 + end -- remove node core.node_dig(pos, node, player) - - -- drop the items - local stack_max = ItemStack(name):get_stack_max() - - local j = math.floor(count / stack_max) + 1 - local i = 1 - while i <= j do - if not (i == j) then - core.add_item(pos, name .. " " .. stack_max) - else - core.add_item(pos, name .. " " .. count % stack_max) - end - i = i + 1 - end end function drawers.drawer_insert_object(pos, node, stack, direction)