Compare commits
5 Commits
5579c0a1e2
...
236959a045
Author | SHA1 | Date |
---|---|---|
Wuzzy | 236959a045 | |
Wuzzy | 99d6673d7c | |
Wuzzy | 2f88237880 | |
Wuzzy | da510e1ab6 | |
Wuzzy | eca004cdb5 |
|
@ -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.
|
||||||
|
|
20
init.lua
20
init.lua
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue