87 lines
2.0 KiB
Lua
87 lines
2.0 KiB
Lua
core.register_abm({
|
|
label = "Water freezing/evaporating",
|
|
nodenames = { "group:water" },
|
|
interval = 1.2,
|
|
chance = 1.8,
|
|
catch_up = true,
|
|
action = function(pos)
|
|
if pos.y < PyuTest.OVERWORLD_SURFACE_BOTTOM and pos.y >= PyuTest.OVERWORLD_DEEP_OCEAN_MIN then
|
|
return
|
|
end
|
|
|
|
local def = PyuTest.get_biome_def(pos)
|
|
if not def then return end
|
|
|
|
local heat = def.heat_point or 50
|
|
local found = core.find_node_near(pos, 2, { "group:emits_heat" }) ~= nil
|
|
|
|
if heat <= 12 and not found then
|
|
core.set_node(pos, { name = "pyutest_blocks:ice_block" })
|
|
end
|
|
end
|
|
})
|
|
|
|
core.register_abm({
|
|
label = "Water evaporating",
|
|
nodenames = { "group:water" },
|
|
interval = 0.1,
|
|
chance = 1,
|
|
action = function(pos)
|
|
local def = PyuTest.get_biome_def(pos)
|
|
if not def then return end
|
|
|
|
local heat = def.heat_point or 50
|
|
|
|
if heat >= 85 then
|
|
core.remove_node(pos)
|
|
end
|
|
end
|
|
})
|
|
|
|
core.register_abm({
|
|
label = "Ice thawing",
|
|
nodenames = { "group:thawable" },
|
|
neighbors = { "group:emits_heat" },
|
|
interval = 3,
|
|
chance = 2.5,
|
|
catch_up = true,
|
|
action = function(pos, node)
|
|
local def = core.registered_nodes[node.name]
|
|
local thaw_into = def.__thaw_into or "pyutest_blocks:water_source"
|
|
core.set_node(pos, { name = thaw_into })
|
|
end
|
|
})
|
|
|
|
core.register_abm({
|
|
nodenames = { "group:lava" },
|
|
interval = 0.25,
|
|
chance = 1,
|
|
action = function(pos)
|
|
local function is_water(p)
|
|
local name = core.get_node(p).name
|
|
|
|
if core.get_item_group(name, "water") ~= 0 then
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
local function replace(name, p)
|
|
core.set_node(p or pos, { name = name })
|
|
end
|
|
|
|
PyuTest.dorange(pos, 1, function(p)
|
|
if is_water(p) then
|
|
if p.y > pos.y then
|
|
replace("pyutest_blocks:obsidian_block")
|
|
elseif p.y < pos.y then
|
|
replace("pyutest_blocks:stone_block", p)
|
|
else
|
|
replace("pyutest_blocks:stone_block")
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
})
|