Never generate chests+woodbulk in dirt room
parent
1ef1b305e5
commit
b02b5c868e
17
init.lua
17
init.lua
|
@ -122,6 +122,15 @@ end
|
||||||
|
|
||||||
local carts_table = {}
|
local carts_table = {}
|
||||||
|
|
||||||
|
local dirt_room_coords
|
||||||
|
|
||||||
|
-- Returns true if pos is inside the dirt room of the current corridor system
|
||||||
|
local function IsInDirtRoom(pos)
|
||||||
|
local min = dirt_room_coords.min
|
||||||
|
local max = dirt_room_coords.max
|
||||||
|
return pos.x >= min.x and pos.x <= max.x and pos.y >= min.y and pos.y <= max.y and pos.z >= min.z and pos.z <= max.z
|
||||||
|
end
|
||||||
|
|
||||||
-- Checks if the mapgen is allowed to carve through this structure and only sets
|
-- Checks if the mapgen is allowed to carve through this structure and only sets
|
||||||
-- the node if it is allowed. Does never build in liquids.
|
-- the node if it is allowed. Does never build in liquids.
|
||||||
-- If check_above is true, don't build if the node above is attached (e.g. rail)
|
-- If check_above is true, don't build if the node above is attached (e.g. rail)
|
||||||
|
@ -293,6 +302,10 @@ end
|
||||||
local function DirtRoom(p, radius, height, dirt_mode)
|
local function DirtRoom(p, radius, height, dirt_mode)
|
||||||
local y_bottom = p.y
|
local y_bottom = p.y
|
||||||
local y_top = y_bottom + height + 1
|
local y_top = y_bottom + height + 1
|
||||||
|
dirt_room_coords = {
|
||||||
|
min = { x = p.x-radius, y = y_bottom, z = p.z-radius },
|
||||||
|
max = { x = p.x+radius, y = y_top, z = p.z+radius },
|
||||||
|
}
|
||||||
local built_all = true
|
local built_all = true
|
||||||
for xi = p.x-radius, p.x+radius do
|
for xi = p.x-radius, p.x+radius do
|
||||||
for zi = p.z-radius, p.z+radius do
|
for zi = p.z-radius, p.z+radius do
|
||||||
|
@ -700,7 +713,7 @@ local function create_corridor_section(waypoint, axis, sign, up_or_down, up_or_d
|
||||||
-- Chest
|
-- Chest
|
||||||
if i == chestplace then
|
if i == chestplace then
|
||||||
local cpos, offset = left_or_right(p, vek)
|
local cpos, offset = left_or_right(p, vek)
|
||||||
if minetest.get_node(cpos).name == post then
|
if minetest.get_node(cpos).name == post or IsInDirtRoom(p) then
|
||||||
chestplace = chestplace + 1
|
chestplace = chestplace + 1
|
||||||
else
|
else
|
||||||
PlaceChest(cpos, minetest.dir_to_facedir(offset))
|
PlaceChest(cpos, minetest.dir_to_facedir(offset))
|
||||||
|
@ -892,7 +905,7 @@ local function create_corridor_line(waypoint, axis, sign, length, wood, post, da
|
||||||
create_corridor_line(wp, fork_dirs[r][1], fork_dirs[r][2], pr:next(way_min,way_max), wood, post, damage, no_spawner)
|
create_corridor_line(wp, fork_dirs[r][1], fork_dirs[r][2], pr:next(way_min,way_max), wood, post, damage, no_spawner)
|
||||||
table.remove(fork_dirs, r)
|
table.remove(fork_dirs, r)
|
||||||
end
|
end
|
||||||
if is_crossing then
|
if is_crossing and not IsInDirtRoom(p) then
|
||||||
-- 4 large wooden pillars around the center rail
|
-- 4 large wooden pillars around the center rail
|
||||||
WoodBulk({x=p.x, y=p.y-1, z=p.z}, 4, wood)
|
WoodBulk({x=p.x, y=p.y-1, z=p.z}, 4, wood)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue