dde05141d0
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.
111 lines
2.7 KiB
Lua
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
|