fluids should fall through vapors

master
Izzy 2019-04-13 00:19:34 -06:00
parent 97b20b3f02
commit b1e28e734c
2 changed files with 11 additions and 5 deletions

View File

@ -269,7 +269,7 @@ local function register_fluid(modname, name, info)
-- flowing -- flowing
minetest.register_abm({ minetest.register_abm({
nodenames = {fname}, nodenames = {fname},
neighbors = {"group:"..gname, "air"}, neighbors = {"group:"..gname, "air", "group:bitumen_vapor"},
interval = info.flow_interval or 1, interval = info.flow_interval or 1,
chance = info.flow_chance or 1, chance = info.flow_chance or 1,
action = function(pos) action = function(pos)
@ -284,6 +284,11 @@ local function register_fluid(modname, name, info)
minetest.set_node_level(below, mylevel) minetest.set_node_level(below, mylevel)
minetest.set_node(pos, {name="air"}) minetest.set_node(pos, {name="air"})
return return
elseif (minetest.registered_nodes[nbelow].groups.bitumen_vapor or 0) > 0 then
-- fall through vapors
minetest.set_node(below, {name=fname})
minetest.set_node_level(below, mylevel)
minetest.set_node(pos, {name=nbelow})
elseif nbelow == fname then elseif nbelow == fname then
local blevel = minetest.get_node_level(below) local blevel = minetest.get_node_level(below)
if blevel < 64 then if blevel < 64 then
@ -321,7 +326,7 @@ local function register_fluid(modname, name, info)
local air_nodes = minetest.find_nodes_in_area( local air_nodes = minetest.find_nodes_in_area(
{x=pos.x - 1, y=pos.y - 1, z=pos.z - 1}, {x=pos.x - 1, y=pos.y - 1, z=pos.z - 1},
{x=pos.x + 1, y=pos.y, z=pos.z + 1}, {x=pos.x + 1, y=pos.y, z=pos.z + 1},
"air" {"air", "group:bitumen_vapor"}
) )

View File

@ -13,7 +13,7 @@ minetest.register_node("bitumen:vapor_2", {
-- post_effect_color = info.post_effect_color, -- post_effect_color = info.post_effect_color,
-- tiles = { "default_copper_block.png" }, -- tiles = { "default_copper_block.png" },
groups = { not_in_creative_inventory = 1 }, groups = { not_in_creative_inventory = 1, bitumen_vapor = 1 },
}) })
@ -28,7 +28,7 @@ minetest.register_node("bitumen:vapor_1", {
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
-- tiles = { "default_steel_block.png" }, -- tiles = { "default_steel_block.png" },
groups = { not_in_creative_inventory = 1 }, groups = { not_in_creative_inventory = 1, bitumen_vapor = 1 },
}) })
@ -57,6 +57,7 @@ minetest.register_abm({
]] ]]
-- move around randomly -- move around randomly
minetest.register_abm({ minetest.register_abm({
nodenames = {"bitumen:vapor_2", "bitumen:vapor_1"}, nodenames = {"bitumen:vapor_2", "bitumen:vapor_1"},
@ -91,7 +92,7 @@ minetest.register_abm({
) )
if #air_nodes > 0 then if #air_nodes > 0 then
off = math.random(#air_nodes) local off = math.random(#air_nodes)
minetest.set_node(pos, {name="air"}) minetest.set_node(pos, {name="air"})
minetest.set_node(air_nodes[off], {name=name}) minetest.set_node(air_nodes[off], {name=name})