add temporary "crushing" recipe variants.
using the new falling node hooks provided by `bg_api`, add alternative versions of existing stoneworking recipes, where instead of pummeling, a stoney node must fall onto the input nodes with sufficient force. note that since the only currently existing stoney node that can fall, loose cobblestone, is unobtainable without cheats, so are these recipes.
This commit is contained in:
parent
96ebbe8e0e
commit
87fba22f3b
1 changed files with 34 additions and 0 deletions
|
@ -30,3 +30,37 @@ blockgame.crafting.register_pummel_recipe({
|
|||
minetest.set_node(pos, {name = modname .. ":bricks"})
|
||||
end,
|
||||
})
|
||||
|
||||
local crush_recipes = {
|
||||
{
|
||||
input = {"bg_terrain:cobblestone", "bg_terrain:cobblestone_loose"},
|
||||
output = modname .. ":tile",
|
||||
},
|
||||
{
|
||||
input = {modname .. ":tile"},
|
||||
output = modname .. ":bricks",
|
||||
},
|
||||
}
|
||||
|
||||
blockgame.register_after_falling_node_lands(function (pos, node, entity)
|
||||
if not blockgame.item_matches(node.name, {"group:stoney"}) then return end
|
||||
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
local mass = def.mass or 1
|
||||
local force = math.abs(entity.fall_velocity.y) * mass
|
||||
|
||||
if force < 5 then return end
|
||||
|
||||
local below = pos + blockgame.vector.dirs.down
|
||||
local target = minetest.get_node(below).name
|
||||
if not blockgame.item_matches(target, {"group:stoney"}) then return end
|
||||
|
||||
for _, recipe in pairs(crush_recipes) do
|
||||
local input = recipe.input
|
||||
local output = recipe.output
|
||||
if blockgame.item_matches(target, input) then
|
||||
minetest.set_node(below, {name = output})
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Reference in a new issue