Imported from trollstream "ContentDB"
commit
39dec2023a
|
@ -0,0 +1 @@
|
|||
default
|
|
@ -0,0 +1 @@
|
|||
Adds water erosion, so flowing water forms somewhat more realistic looking waterfalls.
|
|
@ -0,0 +1,123 @@
|
|||
local settings = Settings(minetest.get_modpath("waterfalls") .. "/waterfalls.conf")
|
||||
local ledgeh = settings:get('ledge_height') or 3
|
||||
|
||||
local neighbors_p = {
|
||||
{x=1},{x=-1},
|
||||
{z=1},{z=-1}
|
||||
}
|
||||
|
||||
local neighbors_p2 = {
|
||||
{x=2},{x=-2},
|
||||
{z=2},{z=-2}
|
||||
}
|
||||
|
||||
local neighbors_d = {
|
||||
{x=1,z=1},
|
||||
{x=1,z=-1},
|
||||
{x=-1,z=1},
|
||||
{x=-1,z=-1}
|
||||
}
|
||||
|
||||
local pos_shift = function(pos,vec)
|
||||
vec.x=vec.x or 0
|
||||
vec.y=vec.y or 0
|
||||
vec.z=vec.z or 0
|
||||
return {x=pos.x+vec.x,
|
||||
y=pos.y+vec.y,
|
||||
z=pos.z+vec.z}
|
||||
end
|
||||
|
||||
local get_nodename_off = function(pos,vec)
|
||||
return minetest.get_node(pos_shift(pos,vec)).name
|
||||
end
|
||||
|
||||
local get_neighbors_walkable = function(pos)
|
||||
local ret = 0
|
||||
for _,v in ipairs(neighbors_p) do
|
||||
if minetest.registered_nodes[get_nodename_off(pos,v)].walkable then
|
||||
ret = ret+1
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
label="Erosion_crumb",
|
||||
nodenames = {"group:crumbly","group:snowy"},
|
||||
neighbors = {"default:water_flowing"},
|
||||
interval = 0.2,
|
||||
chance = 1,
|
||||
catch_up = false,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
|
||||
local node1up = get_nodename_off(pos,{y=1})
|
||||
if minetest.registered_nodes[node1up].drawtype == "flowingliquid" then
|
||||
if get_neighbors_walkable(pos) < 4 then
|
||||
minetest.remove_node(pos)
|
||||
minetest.remove_node(pos_shift(pos,{y=1}))
|
||||
for _,v in ipairs(neighbors_p) do
|
||||
local node = get_nodename_off(pos,v)
|
||||
v2=pos_shift(v,{y=1})
|
||||
local node2 = get_nodename_off(pos,v2)
|
||||
if (minetest.get_item_group(node,"crumbly")>0 or
|
||||
minetest.get_item_group(node,"snowy")>0) and not
|
||||
minetest.registered_nodes[node2].walkable then
|
||||
minetest.remove_node(pos_shift(pos,v))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
label="Erosion_stone",
|
||||
nodenames = {"group:stone","default:ice"},
|
||||
neighbors = {"default:water_flowing"},
|
||||
interval = 1,
|
||||
chance = 2,
|
||||
catch_up = false,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
|
||||
local node2up = minetest.get_node(pos_shift(pos,{y=2}))
|
||||
local node1up = minetest.get_node(pos_shift(pos,{y=1}))
|
||||
|
||||
if pos.y % ledgeh ~= 0 then
|
||||
if minetest.registered_nodes[node1up.name].drawtype == "flowingliquid" and
|
||||
get_neighbors_walkable(pos) <= 2 then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.registered_nodes[node2up.name].drawtype ~= "flowingliquid" and
|
||||
minetest.registered_nodes[node1up.name].drawtype == "flowingliquid" then
|
||||
local node
|
||||
local vec
|
||||
|
||||
for _,v in ipairs(neighbors_p) do
|
||||
node = minetest.get_node(pos_shift(pos,v))
|
||||
if minetest.registered_nodes[node.name].drawtype == "flowingliquid" then
|
||||
vec = {x=v.x*-1,y=v.y+1,z=v.z*-1}
|
||||
node = minetest.get_node(pos_shift(pos,vec))
|
||||
if minetest.registered_nodes[node.name].walkable then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
label="Erosion_flora",
|
||||
nodenames = {"group:attached_node"},
|
||||
neighbors = {"default:water_flowing"},
|
||||
interval = 0.2,
|
||||
chance = 1,
|
||||
catch_up = false,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
})
|
Binary file not shown.
After Width: | Height: | Size: 119 KiB |
|
@ -0,0 +1 @@
|
|||
ledge_height=3
|
Loading…
Reference in New Issue