diff --git a/TODO.txt b/TODO.txt index 5a6089a..94fbf99 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,4 +1,3 @@ TODO: - add chat commands to update cleaning in-game -- add API diff --git a/api.lua b/api.lua new file mode 100644 index 0000000..5f9bbbe --- /dev/null +++ b/api.lua @@ -0,0 +1,39 @@ + +local replace_items = {} +local replace_nodes = {} + + +function cleaner.get_replace_items() + return replace_items +end + +function cleaner.get_replace_nodes() + return replace_nodes +end + + +function cleaner.remove_entity(src) + core.register_entity(":" .. src, { + on_activate = function(self, staticdata) + self.object:remove() + end, + }) +end + +function cleaner.remove_node(src) + core.register_node(":" .. src, { + groups = {to_remove=1}, + }) +end + +function cleaner.replace_item(src, tgt) + replace_items[src] = tgt +end + +function cleaner.replace_node(src, tgt) + core.register_node(":" .. src, { + groups = {to_replace=1}, + }) + + replace_nodes[src] = tgt +end diff --git a/changelog.txt b/changelog.txt index 619fa94..0019bbf 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,8 @@ +v1.2 +---- +- added API + v1.1 ---- - uses "register_lbm" with "run_at_every_load" instead of "register_abm" to save resources diff --git a/entities.lua b/entities.lua index a0276e5..b47faed 100644 --- a/entities.lua +++ b/entities.lua @@ -46,10 +46,5 @@ end for _, e in ipairs(e_list.remove) do cleaner.log("debug", "Cleaning entity: " .. e) - - core.register_entity(":" .. e, { - on_activate = function(self, staticdata) - self.object:remove() - end, - }) + cleaner.remove_entity(e) end diff --git a/init.lua b/init.lua index cde2fe8..fd6715f 100644 --- a/init.lua +++ b/init.lua @@ -32,6 +32,7 @@ end local scripts = { + "api", "entities", "nodes", "items", diff --git a/items.lua b/items.lua index b68bd04..8972d64 100644 --- a/items.lua +++ b/items.lua @@ -25,9 +25,13 @@ if i_file then i_file:close() end +for i_old, i_new in pairs(i_list.replace) do + cleaner.replace_item(i_old, i_new) +end + -- register actions for after server startup core.register_on_mods_loaded(function() - for i_old, i_new in pairs(i_list.replace) do + for i_old, i_new in pairs(cleaner.get_replace_items()) do cleaner.log("action", "replacing item \"" .. i_old .. "\" with \"" .. i_new .. "\"") if not core.registered_items[i_old] then diff --git a/nodes.lua b/nodes.lua index 8a03203..a5cc699 100644 --- a/nodes.lua +++ b/nodes.lua @@ -50,10 +50,7 @@ end for _, n in ipairs(n_list.remove) do cleaner.log("debug", "Cleaning node: " .. n) - - core.register_node(":" .. n, { - groups = {to_remove=1}, - }) + cleaner.remove_node(n) end core.register_lbm({ @@ -67,10 +64,7 @@ core.register_lbm({ for n_old, n_new in pairs(n_list.replace) do cleaner.log("debug", "Replacing node \"" .. n_old .. "\" with \"" .. n_new .. "\"") - - core.register_node(":" .. n_old, { - groups = {to_replace=1}, - }) + cleaner.replace_node(n_old, n_new) end core.register_lbm({ @@ -80,7 +74,7 @@ core.register_lbm({ action = function(pos, node) core.remove_node(pos) - local new_node_name = n_list.replace[node.name] + local new_node_name = cleaner.get_replace_nodes()[node.name] local new_node = core.registered_nodes[new_node_name] if new_node then core.place_node(pos, new_node)