52 lines
1.2 KiB
Lua
52 lines
1.2 KiB
Lua
-- Schematics that NPCs can build MUST have a metadata file.
|
|
-- Metadata files are in the format of minetest.conf
|
|
-- Here are the required params:
|
|
--[[
|
|
# Schematic file name. NOT A PATH! Relative paths work.
|
|
schematic (Schematic) string
|
|
|
|
# Size of the bounding box. If the box is too big, you may see
|
|
# unwanted nodes appear.
|
|
size (Bounding Box Size) v3f
|
|
|
|
# Floor of the building. Decides how much of the build is inset into the ground.
|
|
floor (Floor Offset) int 0
|
|
]]
|
|
|
|
nbq.schemmetacache = {}
|
|
|
|
function nbq.get_schematic_data(schemfile)
|
|
if nbq.schemmetacache[schemfile] then
|
|
return nbq.schemmetacache[schemfile]
|
|
end
|
|
|
|
-- Use minetest's Settings class.
|
|
local stn = Settings(schemfile)
|
|
|
|
local schem = stn:get("schematic")
|
|
local size = stn:get("size")
|
|
local floor = stn:get("floor") or 0
|
|
|
|
if not schem then
|
|
error("Schematic file name is not defined in the schematic metadata file.")
|
|
end
|
|
|
|
if not size or not minetest.string_to_pos(size) then
|
|
error("Size parameter is required.")
|
|
end
|
|
|
|
size = minetest.string_to_pos(size)
|
|
local dir = schemfile:gsub("/([%w._]+)$", "")
|
|
|
|
local resp = {
|
|
schematic = schem,
|
|
path = dir .. "/" .. schem,
|
|
size = size,
|
|
floor = floor,
|
|
}
|
|
|
|
nbq.schemmetacache[schemfile] = resp
|
|
|
|
return resp
|
|
end
|