nodecore-cd2025/mods/nc_api/util_stack.lua

42 lines
1.2 KiB
Lua
Raw Normal View History

-- LUALOCALS < ---------------------------------------------------------
local ItemStack, ipairs, minetest, nodecore
= ItemStack, ipairs, minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
function nodecore.node_inv(pos)
return minetest.get_meta(pos):get_inventory()
end
function nodecore.stack_get(pos)
return nodecore.node_inv(pos):get_stack("solo", 1)
end
local function update(pos, ...)
for _, v in ipairs(nodecore.visinv_update_ents(pos)) do
v:get_luaentity():itemcheck()
end
return ...
end
function nodecore.stack_set(pos, stack)
return update(pos, nodecore.node_inv(pos):set_stack("solo", 1, ItemStack(stack)))
end
function nodecore.stack_add(pos, stack)
local node = minetest.get_node(pos)
local def = minetest.registered_items[node.name]
if def and def.stack_allow then
2019-03-02 22:53:28 -05:00
local ret = def.stack_allow(pos, node, stack)
if ret == false then return stack end
if ret and ret ~= true then return ret end
end
return update(pos, nodecore.node_inv(pos):add_item("solo", ItemStack(stack)))
end
function nodecore.stack_giveto(pos, player)
2019-02-23 10:21:27 -05:00
local stack = nodecore.stack_get(pos)
stack = player:get_inventory():add_item("main", stack)
2019-02-23 10:21:27 -05:00
nodecore.stack_set(pos, stack)
return stack:is_empty()
end