From ee05696fd76b2d2ee999d1c97be85a4c0774178e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 28 Dec 2021 04:11:20 +0100 Subject: [PATCH] Fix broken takable update --- mods/lzr_laser/blocks.lua | 4 +++- mods/lzr_laser/physics.lua | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mods/lzr_laser/blocks.lua b/mods/lzr_laser/blocks.lua index ec7e995..948fd98 100644 --- a/mods/lzr_laser/blocks.lua +++ b/mods/lzr_laser/blocks.lua @@ -133,12 +133,14 @@ local register_element = function(subname, def, options) def_takable.groups.takable = 1 def_takable.groups.dig_immediate = 3 def_takable.description = S("@1 (takable)", def.description) + def_takable._lzr_active = "lzr_laser:"..subname.."_takable_on" local def_takable_on = table.copy(def_core_on) def_takable_on.tiles = def.tiles_takable_on def_takable_on.groups.takable = 1 def_takable_on.groups.dig_immediate = 3 def_takable_on.description = S("@1 (takable, active)", def.description) def_takable_on.drop = "lzr_laser:"..subname.."_takable" + def_takable_on._lzr_inactive = "lzr_laser:"..subname.."_takable" minetest.register_node("lzr_laser:"..subname.."_takable", def_takable) minetest.register_node("lzr_laser:"..subname.."_takable_on", def_takable_on) end @@ -187,7 +189,7 @@ register_element("mirror", { }, { allow_take = true }) register_element("transmissive_mirror", { - description = S("Transissive Mirror"), + description = S("Transmissive Mirror"), paramtype2 = "facedir", tiles_takable_off = { "lzr_laser_transmissive_mirror_top.png", diff --git a/mods/lzr_laser/physics.lua b/mods/lzr_laser/physics.lua index b20a0bb..808d421 100644 --- a/mods/lzr_laser/physics.lua +++ b/mods/lzr_laser/physics.lua @@ -28,8 +28,10 @@ function lzr_laser.add_laser(pos, dir) elseif minetest.get_item_group(node.name, "mirror") > 0 then local mirror_dir = lzr_laser.get_mirrored_laser_dir(pos, dir) if mirror_dir then + local def = minetest.registered_nodes[node.name] + local active = def._lzr_active -- Activate mirror node - minetest.set_node(pos, {name="lzr_laser:mirror_on", param2 = node.param2}) + minetest.set_node(pos, {name=def._lzr_active, param2 = node.param2}) -- Set new pos and dir pos = vector.add(pos, mirror_dir) dir = mirror_dir @@ -41,8 +43,10 @@ function lzr_laser.add_laser(pos, dir) elseif minetest.get_item_group(node.name, "transmissive_mirror") > 0 then local mirror_dir = lzr_laser.get_mirrored_laser_dir(pos, dir) if mirror_dir then + local def = minetest.registered_nodes[node.name] + local active = def._lzr_active -- Activate mirror node - minetest.set_node(pos, {name="lzr_laser:transmissive_mirror_on", param2 = node.param2}) + minetest.set_node(pos, {name=active, param2 = node.param2}) -- Set new pos and dir local pos_straight = vector.add(pos, dir) local dir_straight = dir @@ -58,8 +62,10 @@ function lzr_laser.add_laser(pos, dir) elseif minetest.get_item_group(node.name, "detector") > 0 then local detected = lzr_laser.check_detector(pos, dir) if detected then + local def = minetest.registered_nodes[node.name] + local active = def._lzr_active -- Activate node - minetest.set_node(pos, {name="lzr_laser:detector_on", param2 = node.param2}) + minetest.set_node(pos, {name=active, param2 = node.param2}) local done = lzr_laser.check_detectors_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) if done then lzr_levels.next_level()