2023-10-13 02:25:46 +01:00

81 lines
2.6 KiB
Lua

-- flowerbeds = {}
-- local flowerbedNodes = {}
local baseMatsAndTextures = {
{"default:wood", "default_wood.png"},
{"default:junglewood", "default_junglewood.png"},
{"default:acacia_wood", "default_acacia_wood.png"},
{"default:pine_wood", "default_pine_wood.png"},
{"default:aspen_wood", "default_aspen_wood.png"}
-- perhaps too many, unecessary
-- {"default:stonebrick", "default_stone_brick.png"},
-- {"default:stone_block", "default_stone_block.png"},
-- {"default:desert_stonebrick", "default_desert_stone_brick.png"},
-- {"default:desert_stone_block", "default_desert_stone_block.png"},
-- {"default:sandstonebrick", "default_sandstone_brick.png"},
-- {"default:sandstone_block", "default_sandstone_block.png"},
-- {"default:desert_sandstone_brick", "default_desert_sandstone_brick.png"},
-- {"default:desert_sandstone_block", "default_desert_sandstone_block.png"},
-- {"default:silver_sandstone_brick", "default_silver_sandstone_brick.png"},
-- {"default:silver_sandstone_block", "default_silver_sandstone_block.png"}
}
local getBasicFlowerbedDef = function(baseTexture)
return {
drawtype = "normal",--"glasslike_framed",
description = "Basic Flowerbed",
tiles = {
baseTexture.."^flowerbed_basic.png",
baseTexture.."^flowerbed_trim.png"
},
connects_to = {"group:basicFlowerbed"},
groups = {choppy = 3, oddly_breakable_by_hand = 3, flowerbed = 1},
sounds = default.node_sound_wood_defaults()
}
end
local basic_flowerbed_abm = function(pos, node, active_object_count, active_object_count_wider)
local checkAdj = {{1, 1}, {1, 0}, {1, -1}, {0, 1}, {0, -1}, {-1, 1}, {-1, 0}, {-1, -1}}
pos.y = pos.y + 1
local nodeAbove = minetest.get_node_or_nil(pos)
if not nodeAbove or not nodeAbove.name == "air" then
return
end
for _, adj in pairs(checkAdj) do
local checkPos = {x = pos.x + adj[1], y = pos.y, z = pos.z + adj[2]}
local checkNode = minetest.get_node_or_nil(checkPos)
if checkNode and minetest.get_item_group(checkNode.name, "flower") > 0 then
minetest.set_node(pos, checkNode) -- copy the flower
return
end
end
end
--------------------------------
-- minetest calls
--------------------------------
for _, data in pairs(baseMatsAndTextures) do
local def = getBasicFlowerbedDef(data[2])
local name = "flowerbeds:basic_"..string.sub(data[1],9,-1)
minetest.register_node(name , def)
minetest.register_craft({
output = name,
recipe = {
{"default:coal_lump"},
{"default:dirt"},
{data[1]}
}
})
minetest.register_abm({
label = "ABM for "..name,
nodenames = {name},
neighbors = {"air"},
interval = 11.0,
chance = 40,
min_y = -50,
catch_up = true,
action = basic_flowerbed_abm
})
end