forked from MineClone5/MineClone5
Reduce chunk size to 4x4x4, add ruined portals beta
This commit is contained in:
parent
0ceb7fa013
commit
8272343084
|
@ -38,7 +38,7 @@ max_block_generate_distance = 13
|
||||||
|
|
||||||
# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
|
# Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
|
||||||
# type: int
|
# type: int
|
||||||
chunksize = 8
|
chunksize = 4
|
||||||
|
|
||||||
# MCL2-specific stuff
|
# MCL2-specific stuff
|
||||||
keepInventory = false
|
keepInventory = false
|
||||||
|
|
|
@ -2,11 +2,10 @@ local modname = minetest.get_current_modname()
|
||||||
local modpath = minetest.get_modpath(modname)
|
local modpath = minetest.get_modpath(modname)
|
||||||
|
|
||||||
local chance_per_chunk = 400
|
local chance_per_chunk = 400
|
||||||
chance_per_chunk = 1
|
|
||||||
local noise_multiplier = 2.5
|
local noise_multiplier = 2.5
|
||||||
local random_offset = 9159
|
local random_offset = 9159
|
||||||
local scanning_ratio = 0.0001
|
local scanning_ratio = 0.01
|
||||||
local struct_threshold = chance_per_chunk - 3
|
local struct_threshold = 390
|
||||||
|
|
||||||
local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level
|
local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level
|
||||||
|
|
||||||
|
@ -30,8 +29,18 @@ local node_top = {
|
||||||
"mcl_core:goldblock",
|
"mcl_core:goldblock",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local node_garbage = {
|
||||||
|
"mcl_nether:netherrack",
|
||||||
|
"mcl_core:lava_source",
|
||||||
|
"mcl_nether:netherrack",
|
||||||
|
"mcl_nether:netherrack",
|
||||||
|
"mcl_nether:magma",
|
||||||
|
"mcl_nether:netherrack",
|
||||||
|
}
|
||||||
|
|
||||||
local stone1 = {name = "mcl_core:stonebrickcracked"}
|
local stone1 = {name = "mcl_core:stonebrickcracked"}
|
||||||
local stone2 = {name = "mcl_core:stonebrickmossy"}
|
local stone2 = {name = "mcl_core:stonebrickmossy"}
|
||||||
|
local stone3 = {name = "mcl_nether:magma"}
|
||||||
local stone4 = {name = "mcl_core:stonebrick"}
|
local stone4 = {name = "mcl_core:stonebrick"}
|
||||||
|
|
||||||
local slab1 = {name = "mcl_stairs:slab_stonebrickcracked_top"}
|
local slab1 = {name = "mcl_stairs:slab_stonebrickcracked_top"}
|
||||||
|
@ -267,14 +276,83 @@ end
|
||||||
|
|
||||||
local possible_rotations = {"0", "90", "180", "270"}
|
local possible_rotations = {"0", "90", "180", "270"}
|
||||||
|
|
||||||
|
local function draw_trash(pos, width, height, lift, orientation, pr)
|
||||||
|
local slide_x = (1 - orientation)
|
||||||
|
local slide_z = orientation
|
||||||
|
local x1 = pos.x - lift - 1
|
||||||
|
local x2 = pos.x + (width - 1) * slide_x + lift + 1
|
||||||
|
local z1 = pos.z - lift - 1
|
||||||
|
local z2 = pos.z + (width - 1) * slide_z + lift + 1
|
||||||
|
local y1 = pos.y - pr:next(1, height) - 1
|
||||||
|
local y2 = pos.y
|
||||||
|
local opacity_layers = math.floor((y2 - y1) / 2)
|
||||||
|
local opacity_layer = -opacity_layers
|
||||||
|
for y = y1, y2 do
|
||||||
|
local inverted_opacity_0_5 = math.round(math.abs(opacity_layer) / opacity_layers * 5)
|
||||||
|
for x = x1 + pr:next(0, 2), x2 - pr:next(0, 2) do
|
||||||
|
for z = z1 + pr:next(0, 2), z2 - pr:next(0, 2) do
|
||||||
|
if inverted_opacity_0_5 == 0 or (x % inverted_opacity_0_5 ~= pr:next(0, 1) and z % inverted_opacity_0_5 ~= pr:next(0, 1)) then
|
||||||
|
minetest.swap_node({x = x, y = y, z = z}, {name = node_garbage[pr:next(1, #node_garbage)]})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
opacity_layer = opacity_layer + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local stair_replacement_list = {
|
||||||
|
"air",
|
||||||
|
"group:water",
|
||||||
|
"group:lava",
|
||||||
|
"group:buildable_to",
|
||||||
|
"group:deco_block",
|
||||||
|
}
|
||||||
|
|
||||||
|
local stair_offset_from_bottom = 3
|
||||||
|
local function draw_stairs(pos, width, height, lift, orientation, pr, is_chain)
|
||||||
|
local lift = lift + stair_offset_from_bottom
|
||||||
|
local slide_x = (1 - orientation)
|
||||||
|
local slide_z = orientation
|
||||||
|
local width = width + (is_chain and 2 or 0)
|
||||||
|
local x1 = pos.x - lift - (is_chain and 1 or 0) - 1
|
||||||
|
local x2 = pos.x + lift + width * slide_x + 1
|
||||||
|
local z1 = pos.z - lift - (is_chain and 1 or 0) - 1
|
||||||
|
local z2 = pos.z + lift + width * slide_z + 1
|
||||||
|
local y1 = pos.y - stair_offset_from_bottom
|
||||||
|
local y2 = pos.y + lift - stair_offset_from_bottom
|
||||||
|
local current_radius = lift
|
||||||
|
for y = y1, y2 do
|
||||||
|
for x = x1, x2 do
|
||||||
|
for z = z1, z2 do
|
||||||
|
--local stair1 = "mcl_stairs:stair_stonebrickcracked"
|
||||||
|
--local stair2 = "mcl_stairs:stair_stonebrickmossy"
|
||||||
|
--local stair3 = "mcl_stairs:stair_stone_rough"
|
||||||
|
--local stair4 = "mcl_stairs:stair_stonebrick"
|
||||||
|
local pos = {x = x, y = y, z = z}
|
||||||
|
if #minetest.find_nodes_in_area(pos, pos, stair_replacement_list, false) > 0 then
|
||||||
|
minetest.swap_node(pos, {name = "mcl_stairs:stair_stone_rough"})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
x1 = x1 + 1
|
||||||
|
x2 = x2 - 1
|
||||||
|
z1 = z1 + 1
|
||||||
|
z2 = z2 - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function place(pos, rotation, pr)
|
local function place(pos, rotation, pr)
|
||||||
local width = pr:next(2, 10)
|
local width = pr:next(2, 10)
|
||||||
local height = pr:next(((width < 3) and 3 or 2), 10)
|
local height = pr:next(((width < 3) and 3 or 2), 10)
|
||||||
local lift = pr:next(0, 4)
|
local lift = pr:next(0, 4)
|
||||||
local rotation = rotation or possible_rotations[pr:next(1, #possible_rotations)]
|
local rotation = rotation or possible_rotations[pr:next(1, #possible_rotations)]
|
||||||
local orientation = rotation_to_orientation[rotation]
|
local orientation = rotation_to_orientation[rotation]
|
||||||
local is_chain = pr:next(1, 3) > 1
|
|
||||||
assert(orientation)
|
assert(orientation)
|
||||||
|
local param2 = rotation_to_param2[rotation]
|
||||||
|
assert(param2)
|
||||||
|
local is_chain = pr:next(1, 3) > 1
|
||||||
|
draw_trash(pos, width, height, lift, orientation, pr)
|
||||||
|
draw_stairs(pos, width, height, lift, orientation, pr, is_chain)
|
||||||
draw_frame({x = pos.x, y = pos.y + lift, z = pos.z}, width + 2, height + 2, orientation, pr, is_chain, rotation)
|
draw_frame({x = pos.x, y = pos.y + lift, z = pos.z}, width + 2, height + 2, orientation, pr, is_chain, rotation)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -296,6 +374,7 @@ mcl_structures.register_structure({
|
||||||
flags = "all_floors",
|
flags = "all_floors",
|
||||||
fill_ratio = scanning_ratio,
|
fill_ratio = scanning_ratio,
|
||||||
height = 1,
|
height = 1,
|
||||||
|
place_on = {"mcl_core:sand", "mcl_core:dirt_with_grass", "mcl_core:water_source"},
|
||||||
},
|
},
|
||||||
on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list)
|
on_finished_chunk = function(minp, maxp, seed, vm_context, pos_list)
|
||||||
if maxp.y < mcl_mapgen.overworld.min then return end
|
if maxp.y < mcl_mapgen.overworld.min then return end
|
||||||
|
|
Loading…
Reference in New Issue