Add a Way of checking for specific Feature with Lua Adds minetest.get_feature() and...
authorSfan5 <sfan5@live.de>
Wed, 1 May 2013 10:31:21 +0000 (12:31 +0200)
committerSfan5 <sfan5@live.de>
Wed, 1 May 2013 13:06:01 +0000 (15:06 +0200)
builtin/builtin.lua
builtin/features.lua [new file with mode: 0644]
doc/lua_api.txt

index bf33cbe6bbd5555900a6e568e0a934a975891a4d..f10c6c7cf50037e173deaaf791d98c5b55821256 100644 (file)
@@ -24,4 +24,5 @@ dofile(minetest.get_modpath("__builtin").."/chatcommands.lua")
 dofile(minetest.get_modpath("__builtin").."/static_spawn.lua")
 dofile(minetest.get_modpath("__builtin").."/detached_inventory.lua")
 dofile(minetest.get_modpath("__builtin").."/falling.lua")
+dofile(minetest.get_modpath("__builtin").."/features.lua")
 
diff --git a/builtin/features.lua b/builtin/features.lua
new file mode 100644 (file)
index 0000000..0eef251
--- /dev/null
@@ -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
index 07fb1ccd684a353c1892ecf73c6230b72d39a91e..597f98c2cb27bc9a5c00bbd81f0de42e8bc1a538 100644 (file)
@@ -912,6 +912,11 @@ minetest.get_modnames() -> list of installed mods
 minetest.get_worldpath() -> eg. "/home/user/.minetest/world"
 ^ Useful for storing custom data
 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)
 ^ Always printed to stderr and logfile (print() is redirected here)