mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-17 08:31:08 +01:00
Add End biomes, fix island decorations
This commit is contained in:
parent
ce6c173c28
commit
cfb9a0cf56
3 changed files with 158 additions and 15 deletions
|
@ -1733,12 +1733,84 @@ local function register_dimension_biomes()
|
||||||
y_max = mcl_vars.mg_end_max + 80,
|
y_max = mcl_vars.mg_end_max + 80,
|
||||||
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
||||||
humidity_point = 1000,
|
humidity_point = 1000,
|
||||||
|
vertical_blend = 16,
|
||||||
|
_mcl_biome_type = "medium",
|
||||||
|
_mcl_palette_index = 0,
|
||||||
|
})
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "EndMidlands",
|
||||||
|
node_stone = "air",
|
||||||
|
node_filler = "air",
|
||||||
|
node_water = "air",
|
||||||
|
node_river_water = "air",
|
||||||
|
node_cave_liquid = "air",
|
||||||
|
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||||
|
-- Figure out why.
|
||||||
|
y_min = mcl_vars.mg_end_min,
|
||||||
|
y_max = mcl_vars.mg_end_max + 80,
|
||||||
|
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
||||||
|
humidity_point = 1000,
|
||||||
|
vertical_blend = 16,
|
||||||
|
_mcl_biome_type = "medium",
|
||||||
|
_mcl_palette_index = 0,
|
||||||
|
})
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "EndHighlands",
|
||||||
|
node_stone = "air",
|
||||||
|
node_filler = "air",
|
||||||
|
node_water = "air",
|
||||||
|
node_river_water = "air",
|
||||||
|
node_cave_liquid = "air",
|
||||||
|
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||||
|
-- Figure out why.
|
||||||
|
y_min = mcl_vars.mg_end_min,
|
||||||
|
y_max = mcl_vars.mg_end_max + 80,
|
||||||
|
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
||||||
|
humidity_point = 1000,
|
||||||
|
vertical_blend = 16,
|
||||||
|
_mcl_biome_type = "medium",
|
||||||
|
_mcl_palette_index = 0,
|
||||||
|
})
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "EndSmallIslands",
|
||||||
|
node_stone = "air",
|
||||||
|
node_filler = "air",
|
||||||
|
node_water = "air",
|
||||||
|
node_river_water = "air",
|
||||||
|
node_cave_liquid = "air",
|
||||||
|
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||||
|
-- Figure out why.
|
||||||
|
y_min = mcl_vars.mg_end_min,
|
||||||
|
y_max = mcl_vars.mg_end_max + 80,
|
||||||
|
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
||||||
|
humidity_point = 1000,
|
||||||
|
vertical_blend = 16,
|
||||||
_mcl_biome_type = "medium",
|
_mcl_biome_type = "medium",
|
||||||
_mcl_palette_index = 0,
|
_mcl_palette_index = 0,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "End Island",
|
name = "EndBorder",
|
||||||
|
node_stone = "air",
|
||||||
|
node_filler = "air",
|
||||||
|
node_water = "air",
|
||||||
|
node_river_water = "air",
|
||||||
|
node_cave_liquid = "air",
|
||||||
|
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||||
|
-- Figure out why.
|
||||||
|
y_min = mcl_vars.mg_end_min,
|
||||||
|
y_max = mcl_vars.mg_end_max + 80,
|
||||||
|
heat_point = 500,
|
||||||
|
humidity_point = 500,
|
||||||
|
vertical_blend = 16,
|
||||||
|
max_pos = {x = 1250, y = mcl_vars.mg_end_min + 512, z = 1250},
|
||||||
|
min_pos = {x = -1250, y = mcl_vars.mg_end_min, z = -1250},
|
||||||
|
_mcl_biome_type = "medium",
|
||||||
|
_mcl_palette_index = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_biome({
|
||||||
|
name = "EndIsland",
|
||||||
node_stone = "air",
|
node_stone = "air",
|
||||||
node_filler = "air",
|
node_filler = "air",
|
||||||
node_water = "air",
|
node_water = "air",
|
||||||
|
@ -1748,6 +1820,7 @@ local function register_dimension_biomes()
|
||||||
min_pos = {x = -1000, y = mcl_vars.mg_end_min, z = -1000},
|
min_pos = {x = -1000, y = mcl_vars.mg_end_min, z = -1000},
|
||||||
heat_point = 50,
|
heat_point = 50,
|
||||||
humidity_point = 50,
|
humidity_point = 50,
|
||||||
|
vertical_blend = 16,
|
||||||
_mcl_biome_type = "medium",
|
_mcl_biome_type = "medium",
|
||||||
_mcl_palette_index = 0,
|
_mcl_palette_index = 0,
|
||||||
})
|
})
|
||||||
|
@ -2397,11 +2470,47 @@ local function register_dimension_ores()
|
||||||
end_wherein = {"air"}
|
end_wherein = {"air"}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local mult = 1.0
|
||||||
|
|
||||||
|
minetest.register_ore({
|
||||||
|
ore_type = "blob",
|
||||||
|
ore = "mcl_end:end_stone",
|
||||||
|
wherein = end_wherein,
|
||||||
|
biomes = {"EndSmallIslands","Endborder"},
|
||||||
|
y_min = mcl_vars.mg_end_min+64,
|
||||||
|
y_max = mcl_vars.mg_end_min+80,
|
||||||
|
clust_num_ores = 3375,
|
||||||
|
clust_size = 15,
|
||||||
|
|
||||||
|
noise_params = {
|
||||||
|
offset = mcl_vars.mg_end_min+70,
|
||||||
|
scale = -1,
|
||||||
|
spread = {x=84, y=84, z=84},
|
||||||
|
seed = 145,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.6,
|
||||||
|
lacunarity = 2,
|
||||||
|
--flags = "defaults",
|
||||||
|
},
|
||||||
|
|
||||||
|
np_stratum_thickness = {
|
||||||
|
offset = 0,
|
||||||
|
scale = 15,
|
||||||
|
spread = {x=84, y=84, z=84},
|
||||||
|
seed = 145,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.6,
|
||||||
|
lacunarity = 2,
|
||||||
|
--flags = "defaults",
|
||||||
|
},
|
||||||
|
clust_scarcity = 1,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
biomes = {"End"},
|
biomes = {"End","EndMidlands","EndHighlands","EndBarrens"},
|
||||||
y_min = mcl_vars.mg_end_min+64,
|
y_min = mcl_vars.mg_end_min+64,
|
||||||
y_max = mcl_vars.mg_end_min+80,
|
y_max = mcl_vars.mg_end_min+80,
|
||||||
|
|
||||||
|
@ -2429,7 +2538,7 @@ local function register_dimension_ores()
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
biomes = {"End"},
|
biomes = {"End","EndMidlands","EndHighlands","EndBarrens"},
|
||||||
y_min = mcl_vars.mg_end_min+64,
|
y_min = mcl_vars.mg_end_min+64,
|
||||||
y_max = mcl_vars.mg_end_min+80,
|
y_max = mcl_vars.mg_end_min+80,
|
||||||
|
|
||||||
|
@ -2456,7 +2565,7 @@ local function register_dimension_ores()
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
biomes = {"End"},
|
biomes = {"End","EndMidlands","EndHighlands","EndBarrens"},
|
||||||
y_min = mcl_vars.mg_end_min+64,
|
y_min = mcl_vars.mg_end_min+64,
|
||||||
y_max = mcl_vars.mg_end_min+80,
|
y_max = mcl_vars.mg_end_min+80,
|
||||||
|
|
||||||
|
@ -4858,9 +4967,9 @@ local function register_dimension_decorations()
|
||||||
|
|
||||||
-- Chorus plant
|
-- Chorus plant
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
name = "mcl_biomes:chorus_plant",
|
name = "mcl_biomes:chorus",
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
place_on = {"mcl_end:end_stone", "air"},
|
place_on = {"mcl_end:end_stone"},
|
||||||
flags = "all_floors",
|
flags = "all_floors",
|
||||||
sidelen = 16,
|
sidelen = 16,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
|
@ -4873,9 +4982,31 @@ local function register_dimension_decorations()
|
||||||
},
|
},
|
||||||
y_min = mcl_vars.mg_end_min,
|
y_min = mcl_vars.mg_end_min,
|
||||||
y_max = mcl_vars.mg_end_max,
|
y_max = mcl_vars.mg_end_max,
|
||||||
|
decoration = "mcl_end:chorus_plant",
|
||||||
|
height = 1,
|
||||||
|
height_max = 8,
|
||||||
|
biomes = { "End", "EndIsland", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands" },
|
||||||
|
})
|
||||||
|
minetest.register_decoration({
|
||||||
|
name = "mcl_biomes:chorus_plant",
|
||||||
|
deco_type = "simple",
|
||||||
|
place_on = {"mcl_end:chorus_plant"},
|
||||||
|
flags = "all_floors",
|
||||||
|
sidelen = 16,
|
||||||
|
fill_ratio = 10,
|
||||||
|
--[[noise_params = {
|
||||||
|
offset = -0.012,
|
||||||
|
scale = 0.024,
|
||||||
|
spread = {x = 100, y = 100, z = 100},
|
||||||
|
seed = 257,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.6
|
||||||
|
},--]]
|
||||||
|
y_min = mcl_vars.mg_end_min,
|
||||||
|
y_max = mcl_vars.mg_end_max,
|
||||||
decoration = "mcl_end:chorus_flower",
|
decoration = "mcl_end:chorus_flower",
|
||||||
height = 1,
|
height = 1,
|
||||||
biomes = { "End" },
|
biomes = { "End", "EndIsland", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands" },
|
||||||
})
|
})
|
||||||
|
|
||||||
deco_id_chorus_plant = minetest.get_decoration_id("mcl_biomes:chorus_plant")
|
deco_id_chorus_plant = minetest.get_decoration_id("mcl_biomes:chorus_plant")
|
||||||
|
@ -4962,7 +5093,7 @@ if mg_name ~= "singlenode" then
|
||||||
if minp.y > -26900 then return end
|
if minp.y > -26900 then return end
|
||||||
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
if x < -2 or x > 2 or z < -2 or z > 2 then
|
if x < -10 or x > 10 or z < -10 or z > 10 then
|
||||||
local realpos = { x = x, y = y + 1, z = z }
|
local realpos = { x = x, y = y + 1, z = z }
|
||||||
local node = minetest.get_node(realpos)
|
local node = minetest.get_node(realpos)
|
||||||
if node and node.name == "mcl_end:chorus_flower" then
|
if node and node.name == "mcl_end:chorus_flower" then
|
||||||
|
|
|
@ -24,8 +24,14 @@ mcl_mapgen_core.register_generator("end_island", function(vm, data, data2, emin,
|
||||||
data[idx] = c_end_stone
|
data[idx] = c_end_stone
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--vm:calc_lighting()
|
return true,true,true
|
||||||
--vm:update_liquids()
|
end, function(minp,maxp,blockseed)
|
||||||
--vm:write_to_map()
|
local nn = minetest.find_nodes_in_area(minp,maxp,{"mcl_end:chorus_flower"})
|
||||||
return true,true
|
local pr = PseudoRandom(blockseed)
|
||||||
end, nil, 15, true)
|
for _,pos in pairs(nn) do
|
||||||
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
|
if x < -10 or x > 10 or z < -10 or z > 10 then
|
||||||
|
mcl_end.grow_chorus_plant(pos,{name="mcl_end:chorus_flower"},pr)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, 15, true)
|
||||||
|
|
|
@ -179,7 +179,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
minetest.log("action", "[mcl_mapgen_core] Generating chunk " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp))
|
minetest.log("action", "[mcl_mapgen_core] Generating chunk " .. minetest.pos_to_string(minp) .. " ... " .. minetest.pos_to_string(maxp))
|
||||||
local p1, p2 = {x=minp.x, y=minp.y, z=minp.z}, {x=maxp.x, y=maxp.y, z=maxp.z}
|
local p1, p2 = {x=minp.x, y=minp.y, z=minp.z}, {x=maxp.x, y=maxp.y, z=maxp.z}
|
||||||
if lvm > 0 then
|
if lvm > 0 then
|
||||||
local lvm_used, shadow = false, false
|
local lvm_used, shadow, deco_used = false, false
|
||||||
local lb2 = {} -- param2
|
local lb2 = {} -- param2
|
||||||
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
||||||
local e1, e2 = {x=emin.x, y=emin.y, z=emin.z}, {x=emax.x, y=emax.y, z=emax.z}
|
local e1, e2 = {x=emin.x, y=emin.y, z=emin.z}, {x=emax.x, y=emax.y, z=emax.z}
|
||||||
|
@ -192,13 +192,16 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
|
|
||||||
for _, rec in ipairs(registered_generators) do
|
for _, rec in ipairs(registered_generators) do
|
||||||
if rec.vf then
|
if rec.vf then
|
||||||
local lvm_used0, shadow0 = rec.vf(vm, data, data2, e1, e2, area, p1, p2, blockseed)
|
local lvm_used0, shadow0, deco = rec.vf(vm, data, data2, e1, e2, area, p1, p2, blockseed)
|
||||||
if lvm_used0 then
|
if lvm_used0 then
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
end
|
end
|
||||||
if shadow0 then
|
if shadow0 then
|
||||||
shadow = true
|
shadow = true
|
||||||
end
|
end
|
||||||
|
if deco then
|
||||||
|
deco_used = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -208,6 +211,9 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
if param2 > 0 then
|
if param2 > 0 then
|
||||||
vm:set_param2_data(data2)
|
vm:set_param2_data(data2)
|
||||||
end
|
end
|
||||||
|
if deco_used then
|
||||||
|
minetest.generate_decorations(vm)
|
||||||
|
end
|
||||||
vm:calc_lighting(p1, p2, shadow)
|
vm:calc_lighting(p1, p2, shadow)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
|
|
Loading…
Reference in a new issue