mirror of https://github.com/minetest/minetest.git
Let falling blocks continue their fall into the water
This commit is contained in:
parent
c621fb337f
commit
4c366e1ca9
|
@ -1327,13 +1327,14 @@ minetest.add_to_creative_inventory('node "default:ladder" 0')
|
||||||
--
|
--
|
||||||
|
|
||||||
default.falling_node_names = {}
|
default.falling_node_names = {}
|
||||||
|
default.non_solid_node_names = {}
|
||||||
|
|
||||||
function nodeupdate_single(p)
|
function nodeupdate_single(p)
|
||||||
n = minetest.env:get_node(p)
|
n = minetest.env:get_node(p)
|
||||||
if default.falling_node_names[n.name] ~= nil then
|
if default.falling_node_names[n.name] ~= nil then
|
||||||
p_bottom = {x=p.x, y=p.y-1, z=p.z}
|
p_bottom = {x=p.x, y=p.y-1, z=p.z}
|
||||||
n_bottom = minetest.env:get_node(p_bottom)
|
n_bottom = minetest.env:get_node(p_bottom)
|
||||||
if n_bottom.name == "air" then
|
if default.non_solid_node_names[n_bottom.name] ~= nil then
|
||||||
minetest.env:remove_node(p)
|
minetest.env:remove_node(p)
|
||||||
minetest.env:add_entity(p, "default:falling_"..n.name)
|
minetest.env:add_entity(p, "default:falling_"..n.name)
|
||||||
nodeupdate(p)
|
nodeupdate(p)
|
||||||
|
@ -1374,7 +1375,7 @@ function default.register_falling_node(nodename, texture)
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point
|
local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point
|
||||||
local bcn = minetest.env:get_node(bcp)
|
local bcn = minetest.env:get_node(bcp)
|
||||||
if bcn.name ~= "air" then
|
if default.non_solid_node_names[bcn.name] == nil then
|
||||||
-- Turn to a sand node
|
-- Turn to a sand node
|
||||||
local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
|
local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
|
||||||
minetest.env:add_node(np, {name=nodename})
|
minetest.env:add_node(np, {name=nodename})
|
||||||
|
@ -1389,6 +1390,17 @@ end
|
||||||
default.register_falling_node("default:sand", "default_sand.png")
|
default.register_falling_node("default:sand", "default_sand.png")
|
||||||
default.register_falling_node("default:gravel", "default_gravel.png")
|
default.register_falling_node("default:gravel", "default_gravel.png")
|
||||||
|
|
||||||
|
function default.register_non_solid_node(nodename)
|
||||||
|
default.non_solid_node_names[nodename] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- list node types that falling stuff can fall through
|
||||||
|
default.register_non_solid_node("air")
|
||||||
|
default.register_non_solid_node("default:water_flowing")
|
||||||
|
default.register_non_solid_node("default:water_source")
|
||||||
|
default.register_non_solid_node("default:lava_flowing")
|
||||||
|
default.register_non_solid_node("default:lava_source")
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Global callbacks
|
-- Global callbacks
|
||||||
--
|
--
|
||||||
|
|
Loading…
Reference in New Issue