Loading mesecons/internal.lua +2 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ function mesecon.get_any_inputrules(node) end function mesecon.get_any_rules(node) return mesecon.mergetable(mesecon.get_any_inputrules(node) or {}, mesecon.get_any_outputrules(node) or {}) return mesecon.merge_rule_sets(mesecon.get_any_inputrules(node), mesecon.get_any_outputrules(node)) end -- Receptors Loading mesecons/presets.lua +2 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ mesecon.rules.default = { {x = 0, y = -1, z = -1}, } mesecon.rules.floor = mesecon.mergetable(mesecon.rules.default, {{x = 0, y = -1, z = 0}}) mesecon.rules.floor = mesecon.merge_rule_sets(mesecon.rules.default, {{x = 0, y = -1, z = 0}}) mesecon.rules.pplate = mesecon.mergetable(mesecon.rules.floor, {{x = 0, y = -2, z = 0}}) mesecon.rules.pplate = mesecon.merge_rule_sets(mesecon.rules.floor, {{x = 0, y = -2, z = 0}}) mesecon.rules.buttonlike = { {x = 1, y = 0, z = 0}, Loading mesecons/util.lua +30 −3 Original line number Diff line number Diff line Loading @@ -213,8 +213,9 @@ function mesecon.cmpAny(t1, t2) return true end -- does not overwrite values; number keys (ipairs) are appended, not overwritten -- Deprecated. Use `merge_tables` or `merge_rule_sets` as appropriate. function mesecon.mergetable(source, dest) minetest.log("warning", debug.traceback("Deprecated call to mesecon.mergetable")) local rval = mesecon.tablecopy(dest) for k, v in pairs(source) do Loading @@ -227,6 +228,32 @@ function mesecon.mergetable(source, dest) return rval end -- Merges several rule sets in one. Order may not be preserved. Nil arguments -- are ignored. -- The rule sets must be of the same kind (either all single-level or all two-level). -- The function may be changed to normalize the resulting set in some way. function mesecon.merge_rule_sets(...) local rval = {} for _, t in pairs({...}) do -- ignores nils automatically table.insert_all(rval, mesecon.tablecopy(t)) end return rval end -- Merges two tables, with entries from `replacements` taking precedence over -- those from `base`. Returns the new table. -- Values are deep-copied from either table, keys are referenced. -- Numerical indices aren’t handled specially. function mesecon.merge_tables(base, replacements) local ret = mesecon.tablecopy(replacements) -- these are never overriden so have to be copied in any case for k, v in pairs(base) do if ret[k] == nil then -- it could be `false` ret[k] = mesecon.tablecopy(v) end end return ret end function mesecon.register_node(name, spec_common, spec_off, spec_on) spec_common.drop = spec_common.drop or name .. "_off" spec_common.on_blast = spec_common.on_blast or mesecon.on_blastnode Loading @@ -234,8 +261,8 @@ function mesecon.register_node(name, spec_common, spec_off, spec_on) spec_on.__mesecon_state = "on" spec_off.__mesecon_state = "off" spec_on = mesecon.mergetable(spec_common, spec_on); spec_off = mesecon.mergetable(spec_common, spec_off); spec_on = mesecon.merge_tables(spec_common, spec_on); spec_off = mesecon.merge_tables(spec_common, spec_off); minetest.register_node(name .. "_on", spec_on) minetest.register_node(name .. "_off", spec_off) Loading mesecons_blinkyplant/init.lua +7 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,13 @@ mesecon.register_node("mesecons_blinkyplant:blinky_plant", { fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3}, }, on_timer = on_timer, on_rightclick = toggle_timer, on_rightclick = function(pos, node, clicker) if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then return end toggle_timer(pos) end, on_construct = toggle_timer },{ tiles = {"jeija_blinky_plant_off.png"}, Loading mesecons_delayer/init.lua +2 −2 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ local off_state = { wield_image = "mesecons_delayer_off_1.png", groups = off_groups, on_punch = function(pos, node, puncher) if minetest.is_protected(pos, puncher and puncher:get_player_name()) then if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then return end Loading Loading @@ -134,7 +134,7 @@ local on_state = { }, groups = {bendy = 2, snappy = 1, dig_immediate = 2, not_in_creative_inventory = 1}, on_punch = function(pos, node, puncher) if minetest.is_protected(pos, puncher and puncher:get_player_name()) then if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then return end Loading Loading
mesecons/internal.lua +2 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,8 @@ function mesecon.get_any_inputrules(node) end function mesecon.get_any_rules(node) return mesecon.mergetable(mesecon.get_any_inputrules(node) or {}, mesecon.get_any_outputrules(node) or {}) return mesecon.merge_rule_sets(mesecon.get_any_inputrules(node), mesecon.get_any_outputrules(node)) end -- Receptors Loading
mesecons/presets.lua +2 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ mesecon.rules.default = { {x = 0, y = -1, z = -1}, } mesecon.rules.floor = mesecon.mergetable(mesecon.rules.default, {{x = 0, y = -1, z = 0}}) mesecon.rules.floor = mesecon.merge_rule_sets(mesecon.rules.default, {{x = 0, y = -1, z = 0}}) mesecon.rules.pplate = mesecon.mergetable(mesecon.rules.floor, {{x = 0, y = -2, z = 0}}) mesecon.rules.pplate = mesecon.merge_rule_sets(mesecon.rules.floor, {{x = 0, y = -2, z = 0}}) mesecon.rules.buttonlike = { {x = 1, y = 0, z = 0}, Loading
mesecons/util.lua +30 −3 Original line number Diff line number Diff line Loading @@ -213,8 +213,9 @@ function mesecon.cmpAny(t1, t2) return true end -- does not overwrite values; number keys (ipairs) are appended, not overwritten -- Deprecated. Use `merge_tables` or `merge_rule_sets` as appropriate. function mesecon.mergetable(source, dest) minetest.log("warning", debug.traceback("Deprecated call to mesecon.mergetable")) local rval = mesecon.tablecopy(dest) for k, v in pairs(source) do Loading @@ -227,6 +228,32 @@ function mesecon.mergetable(source, dest) return rval end -- Merges several rule sets in one. Order may not be preserved. Nil arguments -- are ignored. -- The rule sets must be of the same kind (either all single-level or all two-level). -- The function may be changed to normalize the resulting set in some way. function mesecon.merge_rule_sets(...) local rval = {} for _, t in pairs({...}) do -- ignores nils automatically table.insert_all(rval, mesecon.tablecopy(t)) end return rval end -- Merges two tables, with entries from `replacements` taking precedence over -- those from `base`. Returns the new table. -- Values are deep-copied from either table, keys are referenced. -- Numerical indices aren’t handled specially. function mesecon.merge_tables(base, replacements) local ret = mesecon.tablecopy(replacements) -- these are never overriden so have to be copied in any case for k, v in pairs(base) do if ret[k] == nil then -- it could be `false` ret[k] = mesecon.tablecopy(v) end end return ret end function mesecon.register_node(name, spec_common, spec_off, spec_on) spec_common.drop = spec_common.drop or name .. "_off" spec_common.on_blast = spec_common.on_blast or mesecon.on_blastnode Loading @@ -234,8 +261,8 @@ function mesecon.register_node(name, spec_common, spec_off, spec_on) spec_on.__mesecon_state = "on" spec_off.__mesecon_state = "off" spec_on = mesecon.mergetable(spec_common, spec_on); spec_off = mesecon.mergetable(spec_common, spec_off); spec_on = mesecon.merge_tables(spec_common, spec_on); spec_off = mesecon.merge_tables(spec_common, spec_off); minetest.register_node(name .. "_on", spec_on) minetest.register_node(name .. "_off", spec_off) Loading
mesecons_blinkyplant/init.lua +7 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,13 @@ mesecon.register_node("mesecons_blinkyplant:blinky_plant", { fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3}, }, on_timer = on_timer, on_rightclick = toggle_timer, on_rightclick = function(pos, node, clicker) if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then return end toggle_timer(pos) end, on_construct = toggle_timer },{ tiles = {"jeija_blinky_plant_off.png"}, Loading
mesecons_delayer/init.lua +2 −2 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ local off_state = { wield_image = "mesecons_delayer_off_1.png", groups = off_groups, on_punch = function(pos, node, puncher) if minetest.is_protected(pos, puncher and puncher:get_player_name()) then if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then return end Loading Loading @@ -134,7 +134,7 @@ local on_state = { }, groups = {bendy = 2, snappy = 1, dig_immediate = 2, not_in_creative_inventory = 1}, on_punch = function(pos, node, puncher) if minetest.is_protected(pos, puncher and puncher:get_player_name()) then if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then return end Loading