Add mods: technic, moreores, paintings, Nyancat (Pbj_pup). Small fix: sandwiches
This commit is contained in:
parent
15e8e696a2
commit
fb09deddc1
1404 changed files with 156555 additions and 211 deletions
194
mods/.cleaner/api.lua
Normal file
194
mods/.cleaner/api.lua
Normal file
|
@ -0,0 +1,194 @@
|
|||
|
||||
--- Cleaner API
|
||||
--
|
||||
-- @topic api
|
||||
|
||||
|
||||
local replace_items = {}
|
||||
local replace_nodes = {}
|
||||
|
||||
|
||||
--- Retrieves list of items to be replaced.
|
||||
--
|
||||
-- @treturn table Items to be replaced.
|
||||
function cleaner.get_replace_items()
|
||||
return replace_items
|
||||
end
|
||||
|
||||
--- Retrieves list of nodes to be replaced.
|
||||
--
|
||||
-- @treturn table Nodes to be replaced.
|
||||
function cleaner.get_replace_nodes()
|
||||
return replace_nodes
|
||||
end
|
||||
|
||||
|
||||
--- Registers an entity to be removed.
|
||||
--
|
||||
-- @tparam string src Entity technical name.
|
||||
function cleaner.register_entity_removal(src)
|
||||
core.register_entity(":" .. src, {
|
||||
on_activate = function(self, ...)
|
||||
self.object:remove()
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
--- Registers a node to be removed.
|
||||
--
|
||||
-- @tparam string src Node technical name.
|
||||
function cleaner.register_node_removal(src)
|
||||
core.register_node(":" .. src, {
|
||||
groups = {to_remove=1},
|
||||
})
|
||||
end
|
||||
|
||||
local function update_list(inv, listname, src, tgt)
|
||||
if not inv then
|
||||
cleaner.log("error", "cannot update list of unknown inventory")
|
||||
return
|
||||
end
|
||||
|
||||
local list = inv:get_list(listname)
|
||||
if not list then
|
||||
cleaner.log("warning", "unknown inventory list: " .. listname)
|
||||
return
|
||||
end
|
||||
|
||||
for idx, stack in pairs(list) do
|
||||
if stack:get_name() == src then
|
||||
local new_stack = ItemStack(tgt)
|
||||
new_stack:set_count(stack:get_count())
|
||||
inv:set_stack(listname, idx, new_stack)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Replaces an item with another registered item.
|
||||
--
|
||||
-- @tparam string src Technical name of item to be replaced.
|
||||
-- @tparam string tgt Technical name of item to be used in place.
|
||||
-- @tparam[opt] bool update_players `true` updates inventory lists associated with players (default: `false`).
|
||||
function cleaner.replace_item(src, tgt, update_players)
|
||||
update_players = not (update_players ~= true)
|
||||
|
||||
if not core.registered_items[tgt] then
|
||||
return false, S('Cannot use unknown item "@1" as replacement.', tgt)
|
||||
end
|
||||
|
||||
if not core.registered_items[src] then
|
||||
cleaner.log("info", "\"" .. src .. "\" not registered, not unregistering")
|
||||
else
|
||||
cleaner.log("warning", "overriding registered item \"" .. src .. "\"")
|
||||
|
||||
core.unregister_item(src)
|
||||
if core.registered_items[src] then
|
||||
cleaner.log("error", "could not unregister \"" .. src .. "\"")
|
||||
end
|
||||
end
|
||||
|
||||
core.register_alias(src, tgt)
|
||||
if core.registered_aliases[src] == tgt then
|
||||
cleaner.log("info", "registered alias \"" .. src .. "\" for \"" .. tgt .. "\"")
|
||||
else
|
||||
cleaner.log("error", "could not register alias \"" .. src .. "\" for \"" .. tgt .. "\"")
|
||||
end
|
||||
|
||||
local bags = core.get_modpath("bags") ~= nil
|
||||
local armor = core.get_modpath("3d_armor") ~= nil
|
||||
|
||||
-- update player inventories
|
||||
if update_players then
|
||||
for _, player in ipairs(core.get_connected_players()) do
|
||||
local pinv = player:get_inventory()
|
||||
update_list(pinv, "main", src, tgt)
|
||||
|
||||
if bags then
|
||||
for i = 1, 4 do
|
||||
update_list(pinv, "bag" .. i .. "contents", src, tgt)
|
||||
end
|
||||
end
|
||||
|
||||
if armor then
|
||||
local armor_inv = core.get_inventory({type="detached", name=player:get_player_name() .. "_armor"})
|
||||
update_list(armor_inv, "armor", src, tgt)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
--- Registeres an item to be replaced.
|
||||
--
|
||||
-- @tparam string src Technical name of item to be replaced.
|
||||
-- @tparam string tgt Technical name of item to be used in place.
|
||||
function cleaner.register_item_replacement(src, tgt)
|
||||
replace_items[src] = tgt
|
||||
end
|
||||
|
||||
--- Registers a node to be replaced.
|
||||
--
|
||||
-- @tparam string src Technical name of node to be replaced.
|
||||
-- @tparam string tgt Technical name of node to be used in place.
|
||||
function cleaner.register_node_replacement(src, tgt)
|
||||
core.register_node(":" .. src, {
|
||||
groups = {to_replace=1},
|
||||
})
|
||||
|
||||
replace_nodes[src] = tgt
|
||||
cleaner.register_item_replacement(src, tgt)
|
||||
end
|
||||
|
||||
|
||||
--- Unsafe Methods.
|
||||
--
|
||||
-- Enabled with [cleaner.unsafe](settings.html#cleaner.unsafe) setting.
|
||||
--
|
||||
-- @section unsafe
|
||||
|
||||
|
||||
if cleaner.unsafe then
|
||||
local remove_ores = {}
|
||||
|
||||
--- Retrieves list of ores to be removed.
|
||||
--
|
||||
-- @treturn table Ores to be removed.
|
||||
function cleaner.get_remove_ores()
|
||||
return remove_ores
|
||||
end
|
||||
|
||||
--- Registers an ore to be removed after server startup.
|
||||
--
|
||||
-- @tparam string src Ore technical name.
|
||||
function cleaner.register_ore_removal(src)
|
||||
table.insert(remove_ores, src)
|
||||
end
|
||||
|
||||
--- Removes an ore definition.
|
||||
--
|
||||
-- @tparam string src Ore technical name.
|
||||
function cleaner.remove_ore(src)
|
||||
local remove_ids = {}
|
||||
local total_removed = 0
|
||||
local registered = false
|
||||
|
||||
for id, def in pairs(core.registered_ores) do
|
||||
if def.ore == src then
|
||||
table.insert(remove_ids, id)
|
||||
registered = true
|
||||
end
|
||||
end
|
||||
|
||||
for _, id in ipairs(remove_ids) do
|
||||
core.registered_ores[id] = nil
|
||||
if core.registered_ores[id] then
|
||||
cleaner.log("error", "unable to unregister ore " .. id)
|
||||
else
|
||||
total_removed = total_removed + 1
|
||||
end
|
||||
end
|
||||
|
||||
return registered, total_removed
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue