command "num_items" added to Warehouse Boxes

This commit is contained in:
Joachim Stolberg 2019-01-15 22:06:08 +01:00
parent 1206e5a461
commit 952b0f1284
5 changed files with 34 additions and 6 deletions

@ -82,6 +82,18 @@ sl_controller.register_function("get_fuel_status", {
' example: sts = $get_fuel_status("1234")' ' example: sts = $get_fuel_status("1234")'
}) })
sl_controller.register_function("get_num_items", {
cmnd = function(self, num, idx)
num = tostring(num or "")
idx = tonumber(idx)
return tubelib.send_request(num, "num_items", idx)
end,
help = " $get_num_items(num)\n"..
" Read number of stored items in one\n"..
" storage (1..8) from a Warehouse Box.\n"..
' example: cnt = $get_num_items("1234", 4)\n'
})
sl_controller.register_function("time_as_str", { sl_controller.register_function("time_as_str", {
cmnd = function(self) cmnd = function(self)
local t = minetest.get_timeofday() local t = minetest.get_timeofday()

@ -152,6 +152,8 @@ tubelib.register_node(NODE_NAME,
local resp = Box.State:on_receive_message(pos, topic, payload) local resp = Box.State:on_receive_message(pos, topic, payload)
if resp then if resp then
return resp return resp
elseif topic == "num_items" then
return wh.get_num_items(M(pos), payload)
else else
return "unsupported" return "unsupported"
end end

@ -152,6 +152,8 @@ tubelib.register_node(NODE_NAME,
local resp = Box.State:on_receive_message(pos, topic, payload) local resp = Box.State:on_receive_message(pos, topic, payload)
if resp then if resp then
return resp return resp
elseif topic == "num_items" then
return wh.get_num_items(M(pos), payload)
else else
return "unsupported" return "unsupported"
end end

@ -152,6 +152,8 @@ tubelib.register_node(NODE_NAME,
local resp = Box.State:on_receive_message(pos, topic, payload) local resp = Box.State:on_receive_message(pos, topic, payload)
if resp then if resp then
return resp return resp
elseif topic == "num_items" then
return wh.get_num_items(M(pos), payload)
else else
return "unsupported" return "unsupported"
end end

@ -63,12 +63,14 @@ local function move_to_main(pos, index)
local main_stack = inv:get_stack("main", index) local main_stack = inv:get_stack("main", index)
local inp_stack = inv:get_stack("input", index) local inp_stack = inv:get_stack("input", index)
local stack = ItemStack(inp_stack:get_name()) if inp_stack:get_name() ~= "" then
stack:set_count(inp_stack:get_count() + main_stack:get_count()) local stack = ItemStack(inp_stack:get_name())
inp_stack:clear() stack:set_count(inp_stack:get_count() + main_stack:get_count())
inp_stack:clear()
inv:set_stack("main", index, stack) inv:set_stack("main", index, stack)
inv:set_stack("input", index, inp_stack) inv:set_stack("input", index, inp_stack)
end
end end
function techpack_warehouse.tiles(background_img) function techpack_warehouse.tiles(background_img)
@ -309,3 +311,11 @@ function techpack_warehouse.after_dig_node(self, pos, oldnode, oldmetadata, digg
self.State:after_dig_node(pos, oldnode, oldmetadata, digger) self.State:after_dig_node(pos, oldnode, oldmetadata, digger)
end end
end end
function techpack_warehouse.get_num_items(meta, index)
index = index and tonumber(index)
if index < 1 then index = 1 end
if index > 8 then index = 8 end
local inv = meta:get_inventory()
return inv:get_stack("main", index):get_count()
end