forked from Minetest/dynamic_liquid
77 lines
2.8 KiB
Lua
77 lines
2.8 KiB
Lua
|
local S = minetest.get_translator(minetest.get_current_modname())
|
||
|
|
||
|
local water_probability = dynamic_liquid.config.water_probability
|
||
|
local river_water_probability = dynamic_liquid.config.river_water_probability
|
||
|
local lava_probability = dynamic_liquid.config.lava_probability
|
||
|
local water_level = dynamic_liquid.config.water_level
|
||
|
local springs = dynamic_liquid.config.springs
|
||
|
|
||
|
-- Since lava cooling behaviour can't be overridden in Mineclone, disabling dynamic liquid behaviour for lava
|
||
|
-- otherwise you get lava nodes wandering around on top of oceans covering the whole thing in stone.
|
||
|
--if dynamic_liquid.config.lava then
|
||
|
-- dynamic_liquid.liquid_abm("mcl_core:lava_source", "mcl_core:lava_flowing", lava_probability)
|
||
|
--end
|
||
|
|
||
|
if dynamic_liquid.config.water then
|
||
|
-- override water_source and water_flowing with liquid_renewable set to false
|
||
|
local override_def = {liquid_renewable = false}
|
||
|
minetest.override_item("mcl_core:water_source", override_def)
|
||
|
minetest.override_item("mcl_core:water_flowing", override_def)
|
||
|
|
||
|
dynamic_liquid.liquid_abm("mcl_core:water_source", "mcl_core:water_flowing", water_probability)
|
||
|
end
|
||
|
|
||
|
if dynamic_liquid.config.river_water then
|
||
|
dynamic_liquid.liquid_abm("mclx_core:river_water_source", "mclx_core:river_water_flowing", river_water_probability)
|
||
|
end
|
||
|
|
||
|
if dynamic_liquid.config.springs then
|
||
|
local clay_def = dynamic_liquid.duplicate_def("mcl_core:clay")
|
||
|
clay_def.description = S("Damp Clay")
|
||
|
minetest.register_node("dynamic_liquid:clay", clay_def)
|
||
|
|
||
|
local c_clay = minetest.get_content_id("mcl_core:clay")
|
||
|
local c_spring_clay = minetest.get_content_id("dynamic_liquid:clay")
|
||
|
|
||
|
local spring_placement = function(minp, maxp, data)
|
||
|
if minp.y >= water_level or maxp.y <= -15 then
|
||
|
return false
|
||
|
end
|
||
|
local placed_spring = false
|
||
|
for voxelpos, voxeldata in pairs(data) do
|
||
|
if voxeldata == c_clay then
|
||
|
data[voxelpos] = c_spring_clay
|
||
|
placed_spring = true
|
||
|
end
|
||
|
end
|
||
|
return placed_spring
|
||
|
end
|
||
|
|
||
|
-- mineclone 5
|
||
|
if minetest.get_modpath("mcl_mapgen") and mcl_mapgen.register_on_generated then
|
||
|
mcl_mapgen.register_on_generated(function(vm_context)
|
||
|
if spring_placement(vm_context.minp, vm_context.maxp, vm_context.data) then
|
||
|
vm_context.write = true
|
||
|
end
|
||
|
end, 999999999+1)
|
||
|
end
|
||
|
--mineclone 2
|
||
|
if minetest.get_modpath("mcl_mapgen_core") and mcl_mapgen_core.register_generator then
|
||
|
mcl_mapgen_core.register_generator("dynamic_liquid_damp_clay", function(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||
|
return spring_placement(minp, maxp, data)
|
||
|
end, nil, 999999+1)
|
||
|
end
|
||
|
|
||
|
dynamic_liquid.spring({
|
||
|
nodenames = {"mcl_core:clay"},
|
||
|
water_source = "mcl_core:water_source",
|
||
|
water_flowing = "mcl_core:water_flowing",
|
||
|
y_max = water_level,
|
||
|
y_min = -15,
|
||
|
pressure = 15,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
if dynamic_liquid.config.mapgen_prefill then
|
||
|
dynamic_liquid.mapgen_prefill({liquid="mcl_core:water_source", liquid_level=water_level})
|
||
|
end
|