mirror of
https://codeberg.org/AntumLuanti/mod-cleaner.git
synced 2025-05-31 04:46:28 -04:00
Added ability to replace nodes
This commit is contained in:
parent
68222b1479
commit
d4bccf722d
1 changed files with 151 additions and 104 deletions
255
init.lua
255
init.lua
|
@ -1,104 +1,151 @@
|
||||||
--[[ Cleaner mod
|
--[[ Cleaner mod
|
||||||
License: CC0
|
License: CC0
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
|
||||||
cleaner = {}
|
cleaner = {}
|
||||||
cleaner.name = core.get_current_modname()
|
cleaner.name = core.get_current_modname()
|
||||||
|
|
||||||
local debug = core.settings:get_bool('enable_debug_mods')
|
local debug = core.settings:get_bool('enable_debug_mods')
|
||||||
|
|
||||||
local function log(level, msg)
|
local function log(level, msg)
|
||||||
core.log(level, '[' .. cleaner.name .. '] ' .. msg)
|
core.log(level, '[' .. cleaner.name .. '] ' .. msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function logDebug(msg)
|
local function logDebug(msg)
|
||||||
if debug then
|
if debug then
|
||||||
core.log('DEBUG: [' .. cleaner.name .. '] ' .. msg)
|
core.log('DEBUG: [' .. cleaner.name .. '] ' .. msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- ENTITIES
|
-- ENTITIES
|
||||||
|
|
||||||
local old_entities = {}
|
local old_entities = {}
|
||||||
|
|
||||||
-- Populate entities list from file in world path
|
-- Populate entities list from file in world path
|
||||||
local e_list = nil
|
local e_list = nil
|
||||||
local e_path = core.get_worldpath() .. '/clean_entities.txt'
|
local e_path = core.get_worldpath() .. '/clean_entities.txt'
|
||||||
local e_file = io.open(e_path, 'r')
|
local e_file = io.open(e_path, 'r')
|
||||||
if e_file then
|
if e_file then
|
||||||
e_list = e_file:read('*a')
|
e_list = e_file:read('*a')
|
||||||
e_file:close()
|
e_file:close()
|
||||||
else
|
else
|
||||||
-- Create empty file
|
-- Create empty file
|
||||||
e_file = io.open(e_path, 'w')
|
e_file = io.open(e_path, 'w')
|
||||||
if e_file then
|
if e_file then
|
||||||
e_file:close()
|
e_file:close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if e_list then
|
if e_list then
|
||||||
logDebug('Loading entities to clean from file ...')
|
logDebug('Loading entities to clean from file ...')
|
||||||
|
|
||||||
e_list = string.split(e_list, '\n')
|
e_list = string.split(e_list, '\n')
|
||||||
for _, entity_name in ipairs(e_list) do
|
for _, entity_name in ipairs(e_list) do
|
||||||
table.insert(old_entities, entity_name)
|
table.insert(old_entities, entity_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, entity_name in ipairs(old_entities) do
|
for _, entity_name in ipairs(old_entities) do
|
||||||
logDebug('Cleaning entity: ' .. entity_name)
|
logDebug('Cleaning entity: ' .. entity_name)
|
||||||
|
|
||||||
core.register_entity(':' .. entity_name, {
|
core.register_entity(':' .. entity_name, {
|
||||||
on_activate = function(self, staticdata)
|
on_activate = function(self, staticdata)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- NODES
|
-- NODES
|
||||||
|
|
||||||
local old_nodes = {}
|
local old_nodes = {}
|
||||||
|
|
||||||
-- Populate nodes list from file in world path
|
-- Populate nodes list from file in world path
|
||||||
local n_list = nil
|
local n_list = nil
|
||||||
local n_path = core.get_worldpath() .. '/clean_nodes.txt'
|
local n_path = core.get_worldpath() .. '/clean_nodes.txt'
|
||||||
local n_file = io.open(n_path, 'r')
|
local n_file = io.open(n_path, 'r')
|
||||||
if n_file then
|
if n_file then
|
||||||
n_list = n_file:read('*a')
|
n_list = n_file:read('*a')
|
||||||
n_file:close()
|
n_file:close()
|
||||||
else
|
else
|
||||||
-- Create empty file
|
-- Create empty file
|
||||||
n_file = io.open(n_path, 'w')
|
n_file = io.open(n_path, 'w')
|
||||||
if n_file then
|
if n_file then
|
||||||
n_file:close()
|
n_file:close()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if n_list then
|
|
||||||
logDebug('Loading nodes to clean from file ...')
|
if n_list then
|
||||||
|
logDebug('Loading nodes to clean from file ...')
|
||||||
n_list = string.split(n_list, '\n')
|
|
||||||
for _, node_name in ipairs(n_list) do
|
n_list = string.split(n_list, '\n')
|
||||||
table.insert(old_nodes, node_name)
|
for _, node_name in ipairs(n_list) do
|
||||||
end
|
table.insert(old_nodes, node_name)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
for _, node_name in ipairs(old_nodes) do
|
|
||||||
logDebug('Cleaning node: ' .. node_name)
|
for _, node_name in ipairs(old_nodes) do
|
||||||
|
logDebug('Cleaning node: ' .. node_name)
|
||||||
core.register_node(':' .. node_name, {
|
|
||||||
groups = {old=1},
|
core.register_node(':' .. node_name, {
|
||||||
})
|
groups = {old=1},
|
||||||
end
|
})
|
||||||
|
end
|
||||||
core.register_abm({
|
|
||||||
nodenames = {'group:old'},
|
|
||||||
interval = 1,
|
local replace_nodes = {}
|
||||||
chance = 1,
|
|
||||||
action = function(pos, node)
|
|
||||||
core.remove_node(pos)
|
local n_list = nil
|
||||||
end,
|
local n_path = core.get_worldpath() .. '/replace_nodes.txt'
|
||||||
})
|
local n_file = io.open(n_path, 'r')
|
||||||
|
if n_file then
|
||||||
|
n_list = n_file:read('*a')
|
||||||
|
n_file:close()
|
||||||
|
else
|
||||||
|
-- Create empty file
|
||||||
|
n_file = io.open(n_path, 'w')
|
||||||
|
if n_file then
|
||||||
|
n_file:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if n_list then
|
||||||
|
logDebug('Loading nodes to replace from file ...')
|
||||||
|
|
||||||
|
n_list = string.split(n_list, '\n')
|
||||||
|
for _, node_def in ipairs(n_list) do
|
||||||
|
node_list = string.split(node_def, '->')
|
||||||
|
replace_nodes[node_list[1]] = node_list[2]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for old_node, new_node in pairs(replace_nodes) do
|
||||||
|
logDebug('Replacing node ' .. old_node .. ' with ' .. new_node)
|
||||||
|
|
||||||
|
core.register_node(':' .. old_node, {
|
||||||
|
groups = {old_replaced=1},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
core.register_lbm({
|
||||||
|
name = "cleaner:remove_old_nodes",
|
||||||
|
nodenames = {'group:old'},
|
||||||
|
run_at_every_load = true,
|
||||||
|
action = function(pos, node)
|
||||||
|
logDebug('Replacing?')
|
||||||
|
core.remove_node(pos)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
core.register_lbm({
|
||||||
|
name = "cleaner:replace_old_nodes",
|
||||||
|
nodenames = {'group:old_replaced'},
|
||||||
|
run_at_every_load = true,
|
||||||
|
action = function(pos, node)
|
||||||
|
core.set_node(pos, {name = replace_nodes[node.name]})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue