Aaron Suen dde05141d0 Make wet concrete transmit light
While I'd like these to be opaque, The MT
engine unfortunately does not allow this
without introducing dark shadows inside the
node the fluid occupies, which is evident if
flowing opaque liquid is up against the side
of a container.
2020-11-28 20:02:42 -05:00

111 lines
2.7 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local minetest, nodecore
= minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
function nodecore.register_concrete(def)
def = nodecore.underride(def, {
name = def.description:lower():gsub("%W", "_"),
groups_powder = {
falling_node = 1,
falling_repose = 1,
concrete_powder = 1
},
groups_wet = {concrete_wet = 1},
swim_color = {a = 240, r = 32, g = 32, b = 32}
})
local basename = modname .. ":" .. def.name
def.basename = basename
if def.register_dry ~= false then
minetest.register_node(":" .. basename, {
description = def.description,
tiles = {def.tile_powder},
groups = def.groups_powder,
crush_damage = 1,
sounds = nodecore.sounds(def.sound),
concrete_def = def
})
end
if def.register_wet ~= false then
local wetdef = {
description = "Wet " .. def.description,
tiles = {def.tile_wet},
special_tiles = {def.tile_wet, def.tile_wet},
paramtype = "light",
liquid_viscosity = 15,
liquid_renewable = false,
liquid_range = 1,
liquid_alternative_flowing = basename .. "_wet_flowing",
liquid_alternative_source = basename .. "_wet_source",
walkable = false,
drowning = 2,
post_effect_color = def.swim_color,
groups = def.groups_wet,
sounds = nodecore.sounds(def.sound),
concrete_def = def
}
minetest.register_node(":" .. basename .. "_wet_source", nodecore.underride({
liquidtype = "source",
groups = {concrete_source = 1}
}, wetdef))
minetest.register_node(basename .. "_wet_flowing", nodecore.underride({
drawtype = "flowingliquid",
liquidtype = "flowing",
paramtype2 = "flowingliquid",
groups = {concrete_flow = 1}
}, wetdef))
end
if def.craft_mix ~= false then
nodecore.register_craft({
label = "mix " .. def.name .. " (fail)",
action = "pummel",
priority = 2,
toolgroups = {thumpy = 1},
normal = {y = 1},
indexkeys = def.craft_from_keys,
nodes = {
{
match = def.craft_from
},
{
x = 1,
y = -1,
match = {buildable_to = true}
},
{
y = -1,
match = "nc_fire:ash",
replace = "air"
}
},
before = function(pos)
nodecore.item_disperse(pos, "nc_fire:lump_ash", 8)
end
})
nodecore.register_craft({
label = "mix " .. def.name,
action = "pummel",
priority = 1,
toolgroups = {thumpy = 1},
normal = {y = 1},
indexkeys = def.craft_from_keys,
nodes = {
{
match = def.craft_from,
replace = "air"
},
{
y = -1,
match = "nc_fire:ash",
replace = basename
}
}
})
end
end