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