Add a Way of checking for specific Feature with Lua Adds minetest.get_feature() and minetest.has_feature()

This commit is contained in:
Sfan5 2013-05-01 12:31:21 +02:00
parent c824abd7b2
commit a4183994a4
3 changed files with 34 additions and 0 deletions

@ -24,4 +24,5 @@ dofile(minetest.get_modpath("__builtin").."/chatcommands.lua")
dofile(minetest.get_modpath("__builtin").."/static_spawn.lua") dofile(minetest.get_modpath("__builtin").."/static_spawn.lua")
dofile(minetest.get_modpath("__builtin").."/detached_inventory.lua") dofile(minetest.get_modpath("__builtin").."/detached_inventory.lua")
dofile(minetest.get_modpath("__builtin").."/falling.lua") dofile(minetest.get_modpath("__builtin").."/falling.lua")
dofile(minetest.get_modpath("__builtin").."/features.lua")

28
builtin/features.lua Normal file

@ -0,0 +1,28 @@
-- Minetest: builtin/features.lua
minetest.features = {
"glasslike_framed" = true,
"nodebox_as_selectionbox" = true,
"chat_send_player_param3" = true,
"get_all_craft_recipes_works" = true,
"use_texture_alpha" = true,
}
function minetest.has_feature(arg)
if type(arg) == "table" then
missing_features = {}
result = true
for ft, _ in pairs(arg) do
if not minetest.features[ftr] then
missing_features[ftr] = true
result = false
end
end
return result, missing_features
elseif type(arg) == "string" then
if not minetest.features[arg] then
return false, {[arg]=true}
end
return true, {}
end
end

@ -912,6 +912,11 @@ minetest.get_modnames() -> list of installed mods
minetest.get_worldpath() -> eg. "/home/user/.minetest/world" minetest.get_worldpath() -> eg. "/home/user/.minetest/world"
^ Useful for storing custom data ^ Useful for storing custom data
minetest.is_singleplayer() minetest.is_singleplayer()
minetest.features
^ table containing API feature flags: {foo=true, bar=true}
minetest.has_feature(arg) -> bool, missing_features
^ arg: string or table in format {foo=true, bar=true}
^ missing_features: {foo=true, bar=true}
minetest.debug(line) minetest.debug(line)
^ Always printed to stderr and logfile (print() is redirected here) ^ Always printed to stderr and logfile (print() is redirected here)