diff options
author | Pierre-Yves Rollo <dev@pyrollo.com> | 2019-12-31 17:06:56 +0100 |
---|---|---|
committer | Pierre-Yves Rollo <dev@pyrollo.com> | 2019-12-31 17:06:56 +0100 |
commit | f27b5478b9b67d0867098ef9f30801a7fc0c04ee (patch) | |
tree | d08d97cee768091be2672301e3ca5768413006f9 /display_api/deprecation.lua | |
parent | 135cae721906d312cd0084f7343a15760e3aa722 (diff) | |
parent | 3a43e4ad81dc6595fabfa22c88e229c393f93529 (diff) | |
download | display_modpack_no_craft-f27b5478b9b67d0867098ef9f30801a7fc0c04ee.tar.gz display_modpack_no_craft-f27b5478b9b67d0867098ef9f30801a7fc0c04ee.zip |
Add 'display_api/' from commit '3a43e4ad81dc6595fabfa22c88e229c393f93529'
git-subtree-dir: display_api
git-subtree-mainline: 135cae721906d312cd0084f7343a15760e3aa722
git-subtree-split: 3a43e4ad81dc6595fabfa22c88e229c393f93529
Diffstat (limited to 'display_api/deprecation.lua')
-rw-r--r-- | display_api/deprecation.lua | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/display_api/deprecation.lua b/display_api/deprecation.lua new file mode 100644 index 0000000..b041f6f --- /dev/null +++ b/display_api/deprecation.lua @@ -0,0 +1,78 @@ +--[[ + display_api mod for Minetest - Library to add dynamic display + capabilities to nodes + (c) Pierre-Yves Rollo + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +--]] + +-- Deprecation + +function deprecated_group(deprecated_group, replacement_group) + for name, ndef in pairs(minetest.registered_nodes) do + if ndef.groups and ndef.groups[deprecated_group] then + minetest.log("warning", string.format( + 'Node %s belongs to deprecated "%s" group which should be replaced with new "%s" group.', + name, deprecated_group, replacement_group)) + end + end +end + +function deprecated_global_table(deprecated_global_name, replacement_global_name) + assert(type(deprecated_global_name) == 'string', "deprecated_global_name should be a string.") + assert(type(replacement_global_name) == 'string', "replacement_global_name should be a string.") + assert(deprecated_global_name ~= '', "deprecated_global_name should not be empty.") + assert(replacement_global_name ~= '', "replacement_global_name should not be empty.") + assert(rawget(_G, deprecated_global_name) == nil, "deprecated global does not exist.") + if _G[replacement_global_name] == nil then + minetest.log('warning', string.format( + 'Replacement global "%s" does not exists.', replacement_global_name)) + return + end + local meta = { + deprecated = deprecated_global_name, + replacement = replacement_global_name, + __index = function(table, key) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + return _G[meta.replacement][key] + end, + __newindex = function(table, key, value) + local meta = getmetatable(table) + local dbg = debug.getinfo(2, "lS") + minetest.log("warning", string.format( + 'Accessing deprecated "%s" table, "%s" should be used instead (%s:%d).', + meta.deprecated, meta.replacement, (dbg.short_src or 'unknown'), + (dbg.currentline or 0))) + _G[meta.replacement][key]=value + end, + } + rawset(_G, deprecated_global_name, {}) + setmetatable(_G[deprecated_global_name], meta) +end + + +-- deprecated(1) -- December 2018 - Deprecation of groups display_modpack_node and display_lib_node +-- Group to be removed from display API register_lbm +minetest.after(0, function() + deprecated_group("display_modpack_node", "display_api") + deprecated_group("display_lib_node", "display_api") +end) + +-- deprecated(2) -- December 2018 - Deprecation of display_lib +deprecated_global_table('display_lib', 'display_api') |