don't crash when a node is not found

master
Rubberduck 2017-09-02 15:00:45 +02:00
parent b2c2993137
commit 761fa087cf
2 changed files with 87 additions and 79 deletions

161
lamps.lua
View File

@ -460,103 +460,106 @@ minetest.register_craft({
function meseconductors:register_lamp(mod, node)
if minetest.get_modpath(mod) then
local node2 = node
local node2 = node
if minetest.registered_nodes[mod ..":"..node] == nil then
print("[Meseconductors] - Warning: The mod " .. mod .." has no node ".. node .. " (anymore?)")
return false
end
local offstate = "meseconductors:"..mod.."_"..node .. "_off"
local onstate = "meseconductors:"..mod.."_"..node
local description = minetest.registered_nodes[mod ..":"..node].description .. " (mesecons)"
local description_on = minetest.registered_nodes[mod ..":"..node].description .. " (mesecons on)"
local textures = minetest.registered_nodes[mod ..":"..node].tiles
local groups = table.copy(minetest.registered_nodes[mod ..":"..node].groups)
if node == "lava_source" then
groups = {snappy=3}
description = "Fake Lava Source"
description_on = "Fake Lava Source"
end
local offstate = "meseconductors:"..mod.."_"..node .. "_off"
local onstate = "meseconductors:"..mod.."_"..node
local description = minetest.registered_nodes[mod ..":"..node].description .. " (mesecons)"
local description_on = minetest.registered_nodes[mod ..":"..node].description .. " (mesecons on)"
local textures = minetest.registered_nodes[mod ..":"..node].tiles
local groups = table.copy(minetest.registered_nodes[mod ..":"..node].groups)
if node == "lava_source" then
groups = {snappy=3}
description = "Fake Lava Source"
description_on = "Fake Lava Source"
end
local drawtype = minetest.registered_nodes[mod ..":"..node].drawtype
local paramtype = minetest.registered_nodes[mod ..":"..node].paramtype
local paramtype2 = minetest.registered_nodes[mod ..":"..node].paramtype2
local sounds = minetest.registered_nodes[mod ..":"..node].sounds
local sunlight_propagates = minetest.registered_nodes[mod ..":"..node].sunlight_propagates
local light_source = minetest.registered_nodes[mod ..":"..node].light_source
local selection_box = minetest.registered_nodes[mod ..":"..node].selection_box
local collision_box = minetest.registered_nodes[mod ..":"..node].collision_box
local node_box = minetest.registered_nodes[mod ..":"..node].node_box
local on_place = minetest.registered_nodes[mod ..":"..node].on_place
local mesh = minetest.registered_nodes[mod ..":"..node].mesh
local wield_image = minetest.registered_nodes[mod ..":"..node].wield_image
local inventory_image = minetest.registered_nodes[mod ..":"..node].inventory_image
local walkable = minetest.registered_nodes[mod ..":"..node].walkable
local drawtype = minetest.registered_nodes[mod ..":"..node].drawtype
local paramtype = minetest.registered_nodes[mod ..":"..node].paramtype
local paramtype2 = minetest.registered_nodes[mod ..":"..node].paramtype2
local sounds = minetest.registered_nodes[mod ..":"..node].sounds
local sunlight_propagates = minetest.registered_nodes[mod ..":"..node].sunlight_propagates
local light_source = minetest.registered_nodes[mod ..":"..node].light_source
local selection_box = minetest.registered_nodes[mod ..":"..node].selection_box
local collision_box = minetest.registered_nodes[mod ..":"..node].collision_box
local node_box = minetest.registered_nodes[mod ..":"..node].node_box
local on_place = minetest.registered_nodes[mod ..":"..node].on_place
local mesh = minetest.registered_nodes[mod ..":"..node].mesh
local wield_image = minetest.registered_nodes[mod ..":"..node].wield_image
local inventory_image = minetest.registered_nodes[mod ..":"..node].inventory_image
local walkable = minetest.registered_nodes[mod ..":"..node].walkable
minetest.register_node(offstate, {
tiles = textures,
description = description,
drawtype = drawtype,
paramtype = paramtype,
paramtype2 = paramtype2,
--paramtype2 = "wallmounted",
groups = groups,
sounds = sounds,
sunlight_propagates = sunlight_propagates,
selection_box = selection_box,
collision_box = collision_box,
node_box = node_box,
on_place = on_place,
mesh = mesh,
wield_image = wield_image,
inventory_image = inventory_image,
walkable = walkable,
minetest.register_node(offstate, {
tiles = textures,
description = description,
drawtype = drawtype,
paramtype = paramtype,
paramtype2 = paramtype2,
--paramtype2 = "wallmounted",
groups = groups,
sounds = sounds,
sunlight_propagates = sunlight_propagates,
selection_box = selection_box,
collision_box = collision_box,
node_box = node_box,
on_place = on_place,
mesh = mesh,
wield_image = wield_image,
inventory_image = inventory_image,
walkable = walkable,
mesecons = {effector = {
rules = rules_all,
mesecons = {effector = {
rules = rules_all,
action_on = function (pos, node)
action_on = function (pos, node)
minetest.swap_node(pos, {name = "meseconductors:"..mod.."_"..node2, param2 = node.param2})
end,
}}
end,
}}
})
})
local groups_on = table.copy(groups)
groups_on["not_in_creative_inventory"] = 1
local groups_on = table.copy(groups)
groups_on["not_in_creative_inventory"] = 1
minetest.register_node(onstate, {
tiles = textures,
drop = offstate,
description = description_on,
drawtype = drawtype,
groups = groups_on,
paramtype = paramtype,
paramtype2 = paramtype2,
sounds = sounds,
selection_box = selection_box,
collision_box = collision_box,
node_box = node_box,
on_place = on_place,
mesh = mesh,
wield_image = wield_image,
inventory_image = inventory_image,
sunlight_propagates = sunlight_propagates,
light_source = light_source,
walkable = walkable,
mesecons = {effector = {
rules = rules_all,
action_off = function (pos, node)
minetest.register_node(onstate, {
tiles = textures,
drop = offstate,
description = description_on,
drawtype = drawtype,
groups = groups_on,
paramtype = paramtype,
paramtype2 = paramtype2,
sounds = sounds,
selection_box = selection_box,
collision_box = collision_box,
node_box = node_box,
on_place = on_place,
mesh = mesh,
wield_image = wield_image,
inventory_image = inventory_image,
sunlight_propagates = sunlight_propagates,
light_source = light_source,
walkable = walkable,
mesecons = {effector = {
rules = rules_all,
action_off = function (pos, node)
minetest.swap_node(pos, {name = "meseconductors:"..mod.."_"..node2.."_off", param2 = node.param2})
end,
}}
--groups = {cracky=2,not_in_creative_inventory=1, mesecon = 2},
})
end
})
end
end

View File

@ -4,6 +4,11 @@ function meseconductors:register_wire_block(mod, node)
if minetest.get_modpath(mod) then
if minetest.registered_nodes[mod ..":"..node] == nil then
print("[Meseconductors] - Warning: The mod " .. mod .." has no node ".. node .. " (anymore?)")
return false
end
local offstate = "meseconductors:"..mod.."_"..node
local onstate = "meseconductors:"..mod.."_"..node.."_on"
local description = minetest.registered_nodes[mod ..":"..node].description .. " (conductable)"