131 lines
2.6 KiB
Lua
131 lines
2.6 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local math, minetest, nodecore
|
|
= math, minetest, nodecore
|
|
local math_random
|
|
= math.random
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
local modname = minetest.get_current_modname()
|
|
|
|
nodecore.register_craft({
|
|
label = "melt sand to glass",
|
|
action = "cook",
|
|
touchgroups = {
|
|
coolant = 0,
|
|
flame = 3
|
|
},
|
|
duration = 20,
|
|
cookfx = true,
|
|
indexkeys = {"group:sand"},
|
|
nodes = {
|
|
{
|
|
match = {groups = {sand = true}},
|
|
replace = modname .. ":glass_hot_source"
|
|
}
|
|
},
|
|
after = function(pos)
|
|
nodecore.dnt_set(pos, "fluidwander_glass")
|
|
end
|
|
})
|
|
|
|
nodecore.register_cook_abm({
|
|
nodenames = {"group:sand"},
|
|
neighbors = {"group:flame"},
|
|
neighbors_invert = true
|
|
})
|
|
|
|
local src = modname .. ":glass_hot_source"
|
|
local flow = modname .. ":glass_hot_flowing"
|
|
|
|
local function near(pos, crit)
|
|
return #nodecore.find_nodes_around(pos, crit, {1, 1, 1}, {1, 0, 1}) > 0
|
|
end
|
|
|
|
nodecore.register_craft({
|
|
label = "cool clear glass",
|
|
action = "cook",
|
|
priority = -1,
|
|
duration = 120,
|
|
cookfx = {smoke = true, hiss = true},
|
|
check = function(pos)
|
|
return not near(pos, {flow})
|
|
end,
|
|
indexkeys = {src},
|
|
nodes = {
|
|
{
|
|
match = src,
|
|
replace = modname .. ":glass"
|
|
}
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "cool float glass",
|
|
action = "cook",
|
|
duration = 120,
|
|
cookfx = {smoke = true, hiss = true},
|
|
check = function(pos)
|
|
return not near(pos, {flow})
|
|
end,
|
|
indexkeys = {src},
|
|
nodes = {
|
|
{
|
|
match = src,
|
|
replace = modname .. ":glass_float"
|
|
},
|
|
{
|
|
y = -1,
|
|
match = {groups = {lava = true}}
|
|
}
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "quench opaque glass",
|
|
action = "cook",
|
|
cookfx = true,
|
|
check = function(pos)
|
|
return (not near(pos, {flow}))
|
|
and nodecore.quenched(pos)
|
|
end,
|
|
indexkeys = {src},
|
|
nodes = {
|
|
{
|
|
match = src,
|
|
replace = modname .. ":glass_opaque"
|
|
}
|
|
}
|
|
})
|
|
nodecore.register_craft({
|
|
label = "quench crude glass",
|
|
action = "cook",
|
|
cookfx = true,
|
|
check = function(pos)
|
|
return near(pos, {flow})
|
|
and nodecore.quenched(pos)
|
|
end,
|
|
indexkeys = {src},
|
|
nodes = {
|
|
{
|
|
match = src,
|
|
replace = modname .. ":glass_crude"
|
|
}
|
|
}
|
|
})
|
|
|
|
nodecore.register_cook_abm({nodenames = {src}})
|
|
|
|
nodecore.register_fluidwandering(
|
|
"glass",
|
|
{src},
|
|
2,
|
|
function(pos, _, gen)
|
|
if gen < 16 or math_random(1, 2) == 1 then return end
|
|
minetest.set_node(pos, {name = modname .. ":glass_crude"})
|
|
nodecore.sound_play("nc_api_craft_hiss", {gain = 1, pos = pos})
|
|
nodecore.smokefx(pos, 0.2, 80)
|
|
nodecore.fallcheck(pos)
|
|
return true
|
|
end
|
|
)
|