Compare commits

...

5 Commits

Author SHA1 Message Date
Wuzzy 236959a045 Version 0.14.3 2019-10-24 23:04:01 +02:00
Wuzzy 99d6673d7c Add even more nodedef checks 2019-10-24 01:14:54 +02:00
Wuzzy 2f88237880 Version 0.14.2 2019-09-30 23:24:51 +02:00
Wuzzy da510e1ab6 Fix more missing nodedef checks 2019-09-30 23:24:17 +02:00
Wuzzy eca004cdb5 Version 0.14.1 2019-09-29 01:59:47 +02:00
2 changed files with 11 additions and 11 deletions

View File

@ -1,6 +1,6 @@
# Railway corridors for Treasurer [`tsm_railcorridors`] # Railway corridors for Treasurer [`tsm_railcorridors`]
* Current version 0.14.0 * Current version 0.14.3
Minetest mod for adding underground corridors with rails and wood constructions with a few treasure chests now and then. Minetest mod for adding underground corridors with rails and wood constructions with a few treasure chests now and then.
Optional support for the Treasurer mod is available for adding treasures from various mods. Optional support for the Treasurer mod is available for adding treasures from various mods.

View File

@ -150,7 +150,7 @@ local function SetNodeIfCanBuild(pos, node, check_above, can_replace_rail)
if check_above then if check_above then
local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
local abovedef = minetest.registered_nodes[abovename] local abovedef = minetest.registered_nodes[abovename]
if abovename == "unknown" or abovename == "ignore" or if (not abovedef) or abovename == "unknown" or abovename == "ignore" or
(abovedef.groups and abovedef.groups.attached_node) or (abovedef.groups and abovedef.groups.attached_node) or
-- This is done because cobwebs are often fake liquids -- This is done because cobwebs are often fake liquids
(abovedef.liquidtype ~= "none" and abovename ~= tsm_railcorridors.nodes.cobweb) then (abovedef.liquidtype ~= "none" and abovename ~= tsm_railcorridors.nodes.cobweb) then
@ -159,7 +159,7 @@ local function SetNodeIfCanBuild(pos, node, check_above, can_replace_rail)
end end
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local def = minetest.registered_nodes[name] local def = minetest.registered_nodes[name]
if name ~= "unknown" and name ~= "ignore" and if name ~= "unknown" and name ~= "ignore" and def and
((def.is_ground_content and def.liquidtype == "none") or ((def.is_ground_content and def.liquidtype == "none") or
name == tsm_railcorridors.nodes.cobweb or name == tsm_railcorridors.nodes.cobweb or
name == tsm_railcorridors.nodes.torch_wall or name == tsm_railcorridors.nodes.torch_wall or
@ -189,7 +189,7 @@ end
local function IsGround(pos) local function IsGround(pos)
local nodename = minetest.get_node(pos).name local nodename = minetest.get_node(pos).name
local nodedef = minetest.registered_nodes[nodename] local nodedef = minetest.registered_nodes[nodename]
return nodename ~= "unknown" and nodename ~= "ignore" and nodedef.is_ground_content and nodedef.walkable and nodedef.liquidtype == "none" return nodename ~= "unknown" and nodename ~= "ignore" and nodedef and nodedef.is_ground_content and nodedef.walkable and nodedef.liquidtype == "none"
end end
-- Returns true if rails are allowed to be placed on top of this node -- Returns true if rails are allowed to be placed on top of this node
@ -197,7 +197,7 @@ local function IsRailSurface(pos)
local nodename = minetest.get_node(pos).name local nodename = minetest.get_node(pos).name
local nodename_above = minetest.get_node({x=pos.x,y=pos.y+2,z=pos.z}).name local nodename_above = minetest.get_node({x=pos.x,y=pos.y+2,z=pos.z}).name
local nodedef = minetest.registered_nodes[nodename] local nodedef = minetest.registered_nodes[nodename]
return nodename ~= "unknown" and nodename ~= "ignore" and nodedef.walkable and (nodedef.node_box == nil or nodedef.node_box.type == "regular") and nodename_above ~= tsm_railcorridors.nodes.rail return nodename ~= "unknown" and nodename ~= "ignore" and nodedef and nodedef.walkable and (nodedef.node_box == nil or nodedef.node_box.type == "regular") and nodename_above ~= tsm_railcorridors.nodes.rail
end end
-- Checks if the node is empty space which requires to be filled by a platform -- Checks if the node is empty space which requires to be filled by a platform
@ -208,7 +208,7 @@ local function NeedsPlatform(pos)
local falling = minetest.get_item_group(node.name, "falling_node") == 1 local falling = minetest.get_item_group(node.name, "falling_node") == 1
return return
-- Node can be replaced if ground content or rail -- Node can be replaced if ground content or rail
(node.name ~= "ignore" and node.name ~= "unknown" and nodedef.is_ground_content) and (nodedef and node.name ~= "ignore" and node.name ~= "unknown" and nodedef.is_ground_content) and
-- Node needs platform if node below is not walkable. -- Node needs platform if node below is not walkable.
-- Unless 2 nodes below there is dirt: This is a special case for the starter cube. -- Unless 2 nodes below there is dirt: This is a special case for the starter cube.
((nodedef.walkable == false and node2.name ~= tsm_railcorridors.nodes.dirt) or ((nodedef.walkable == false and node2.name ~= tsm_railcorridors.nodes.dirt) or
@ -234,7 +234,7 @@ end
local function Cube(p, radius, node, replace_air_only, wood, post) local function Cube(p, radius, node, replace_air_only, wood, post)
local y_top = p.y+radius local y_top = p.y+radius
local nodedef = minetest.registered_nodes[node.name] local nodedef = minetest.registered_nodes[node.name]
local solid = nodedef.walkable and (nodedef.node_box == nil or nodedef.node_box.type == "regular") and nodedef.liquidtype == "none" local solid = nodedef and nodedef.walkable and (nodedef.node_box == nil or nodedef.node_box.type == "regular") and nodedef.liquidtype == "none"
-- Check if all the nodes could be set -- Check if all the nodes could be set
local built_all = true local built_all = true
@ -274,7 +274,7 @@ local function Cube(p, radius, node, replace_air_only, wood, post)
elseif wood and (xi == p.x or zi == p.z) and thisnode.name == wood then elseif wood and (xi == p.x or zi == p.z) and thisnode.name == wood then
local topnode = minetest.get_node({x=xi,y=yi+1,z=zi}) local topnode = minetest.get_node({x=xi,y=yi+1,z=zi})
local topdef = minetest.registered_nodes[topnode.name] local topdef = minetest.registered_nodes[topnode.name]
if topdef.walkable and topnode.name ~= wood then if topdef and topdef.walkable and topnode.name ~= wood then
minetest.set_node({x=xi,y=yi,z=zi}, node) minetest.set_node({x=xi,y=yi,z=zi}, node)
-- Check for torches around the wood and schedule them -- Check for torches around the wood and schedule them
-- for removal -- for removal
@ -471,7 +471,7 @@ local function TryPlaceCobweb(pos, needs_check, side_vector)
local cpos = vector.add(pos, check_vectors[c]) local cpos = vector.add(pos, check_vectors[c])
local cname = minetest.get_node(cpos).name local cname = minetest.get_node(cpos).name
local cdef = minetest.registered_nodes[cname] local cdef = minetest.registered_nodes[cname]
if cname ~= "ignore" and cdef.walkable then if cname ~= "ignore" and cdef and cdef.walkable then
check_passed = true check_passed = true
break break
end end
@ -565,12 +565,12 @@ local function WoodSupport(p, wood, post, torches, dir, torchdir)
local nodedef1 = minetest.registered_nodes[minetest.get_node(pos1).name] local nodedef1 = minetest.registered_nodes[minetest.get_node(pos1).name]
local nodedef2 = minetest.registered_nodes[minetest.get_node(pos2).name] local nodedef2 = minetest.registered_nodes[minetest.get_node(pos2).name]
if nodedef1.walkable then if nodedef1 and nodedef1.walkable then
pos1.y = pos1.y + 1 pos1.y = pos1.y + 1
end end
SetNodeIfCanBuild(pos1, node, true) SetNodeIfCanBuild(pos1, node, true)
if nodedef2.walkable then if nodedef2 and nodedef2.walkable then
pos2.y = pos2.y + 1 pos2.y = pos2.y + 1
end end
SetNodeIfCanBuild(pos2, node, true) SetNodeIfCanBuild(pos2, node, true)