summaryrefslogtreecommitdiff
path: root/lua/api.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/api.lua')
-rwxr-xr-xlua/api.lua45
1 files 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 meta = core.get_meta(pos)
- local count = meta:get_int("count")
- local name = meta:get_string("name")
-
- -- remove node
- core.node_dig(pos, node, player)
+ local drawerType = 1
+ if core.registered_nodes[node.name] then
+ drawerType = core.registered_nodes[node.name].groups.drawer
+ end
- -- drop the items
- local stack_max = ItemStack(name):get_stack_max()
+ local meta = core.get_meta(pos)
- 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)
+ 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
- i = i + 1
+ k = k + 1
end
+
+ -- remove node
+ core.node_dig(pos, node, player)
end
function drawers.drawer_insert_object(pos, node, stack, direction)