Merge remote-tracking branch 'upstream/master'

This commit is contained in:
bri cassa 2021-06-20 17:21:30 +02:00
commit 7ee74133e1
3 changed files with 21 additions and 6 deletions

View File

@ -193,8 +193,9 @@ local function update_meta(meta, enabled)
"listring[context;dst]" .. "listring[context;dst]" ..
"listring[current_player;main]" "listring[current_player;main]"
if minetest.get_modpath("digilines") then if minetest.get_modpath("digilines") then
fs = fs.."field[1,3.5;4,1;channel;"..S("Channel")..";${channel}]" fs = fs.."field[0.3,3.5;4.5,1;channel;"..S("Channel")..";${channel}]"..
fs = fs.."button_exit[5,3.2;2,1;save;"..S("Save").."]" "button[4.5,3.2;1.5,1;set_channel;"..S("Set").."]"..
"button_exit[6,3.2;2,1;close;"..S("Close").."]"
end end
meta:set_string("formspec",fs) meta:set_string("formspec",fs)
@ -279,7 +280,7 @@ minetest.register_node("pipeworks:autocrafter", {
update_meta(meta, false) update_meta(meta, false)
end, end,
on_receive_fields = function(pos, formname, fields, sender) on_receive_fields = function(pos, formname, fields, sender)
if (fields.quit and not fields.key_enter_field) if not fields.channel or (fields.quit and not fields.key_enter_field)
or not pipeworks.may_configure(pos, sender) then or not pipeworks.may_configure(pos, sender) then
return return
end end
@ -291,7 +292,8 @@ minetest.register_node("pipeworks:autocrafter", {
if update_meta(meta, true) then if update_meta(meta, true) then
start_crafter(pos) start_crafter(pos)
end end
elseif fields.save then end
if fields.channel then
meta:set_string("channel", fields.channel) meta:set_string("channel", fields.channel)
end end
end, end,

View File

@ -151,7 +151,7 @@ minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
-- Unified Inventory categories integration -- Unified Inventory categories integration
if unified_inventory and unified_inventory.registered_categories then if minetest.global_exists("unified_inventory") and unified_inventory.registered_categories then
if not unified_inventory.registered_categories["automation"] then if not unified_inventory.registered_categories["automation"] then
unified_inventory.register_category("automation", { unified_inventory.register_category("automation", {
symbol = "pipeworks:lua_tube000000", symbol = "pipeworks:lua_tube000000",

View File

@ -4,6 +4,9 @@ local filename=minetest.get_worldpath() .. "/teleport_tubes"
local tp_tube_db = nil -- nil forces a read local tp_tube_db = nil -- nil forces a read
local tp_tube_db_version = 2.0 local tp_tube_db_version = 2.0
-- cached rceiver list: hash(pos) => {receivers}
local cache = {}
local function hash(pos) local function hash(pos)
return string.format("%.30g", minetest.hash_node_position(pos)) return string.format("%.30g", minetest.hash_node_position(pos))
end end
@ -18,6 +21,8 @@ local function save_tube_db()
else else
error(err) error(err)
end end
-- reset tp-tube cache
cache = {}
end end
local function migrate_tube_db() local function migrate_tube_db()
@ -101,6 +106,12 @@ local function read_node_with_vm(pos)
end end
local function get_receivers(pos, channel) local function get_receivers(pos, channel)
local hash = minetest.hash_node_position(pos)
if cache[hash] then
-- re-use cached result
return cache[hash]
end
local tubes = tp_tube_db or read_tube_db() local tubes = tp_tube_db or read_tube_db()
local receivers = {} local receivers = {}
local dirty = false local dirty = false
@ -121,6 +132,8 @@ local function get_receivers(pos, channel)
if dirty then if dirty then
save_tube_db() save_tube_db()
end end
-- cache the result for next time
cache[hash] = receivers
return receivers return receivers
end end