blockgame/mods/bg_api/wrappers.lua

74 lines
1.7 KiB
Lua

local function create_plain_wrapper (function_name)
local wrapper = function (...)
--[[
local args = {...}
-- labels will be used later, probably.
local label = #args > 1 and args[1] or "unlabeled"
local callback = #args > 1 and args[2] or args[1]
minetest[function_name](callback)
]]--
minetest[function_name](...)
end
blockgame[function_name] = wrapper
end
for name in pairs({
register_abm = true,
register_lbm = true,
register_on_joinplayer = true,
register_item = true,
register_on_placenode = true,
register_on_dignode = true,
register_on_punchnode = true,
register_globalstep = true,
}) do
create_plain_wrapper(name)
end
local function capitalize (str)
return string.upper(string.sub(str, 1, 1)) .. string.sub(str, 2)
end
local events = blockgame.events.namespace("api")
function blockgame.register_node (fullname, def)
-- make sure the right names are used in the right contexts, by manually extracting them here.
-- this makes `blockgame.register_node` more flexible/reliable.
local modname
local basename
local colon_pos = string.find(fullname, ":")
if colon_pos then
modname = string.sub(fullname, 1, colon_pos - 1)
basename = string.sub(fullname, colon_pos + 1)
else
modname = minetest.get_current_modname()
basename = fullname
fullname = modname .. ":" .. basename
end
def.description = def.description or capitalize(basename)
def.tiles = def.tiles or {
modname .. "_" .. basename .. ".png",
}
events.broadcast("before_register_node", {
name = fullname,
def = def,
mod = modname,
basename = basename
})
minetest.register_node(fullname, def)
events.broadcast("after_register_node", {
name = fullname,
def = def,
mod = modname,
basename = basename
})
end