Aaron Suen cbea186eab Remove dungeon cobble name
Simplify things for translations
2021-03-11 07:58:07 -05:00

87 lines
2.5 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local ipairs, math, minetest, nodecore, table
= ipairs, math, minetest, nodecore, table
local math_floor, table_insert
= math.floor, table.insert
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
local cobble = modname .. ":cobble"
------------------------------------------------------------------------
-- REGISTER PRIORITIZED DUNGEON MODIFIERS
local dungens = {}
nodecore.registered_dungeongens = dungens
local counters = {}
function nodecore.register_dungeongen(def)
local label = def.label
if not label then
label = minetest.get_current_modname()
local i = (counters[label] or 0) + 1
counters[label] = i
label = label .. ":" .. i
end
local prio = def.priority or 0
def.priority = prio
local min = 1
local max = #dungens + 1
while max > min do
local try = math_floor((min + max) / 2)
local oldp = dungens[try].priority
if (prio < oldp) or (prio == oldp and label > dungens[try].label) then
min = try + 1
else
max = try
end
end
table_insert(dungens, min, def)
end
local function dungeonprocess(pos, node)
for _, def in ipairs(dungens) do
if def.enabled ~= false then
def.func(pos, node)
if minetest.get_node(pos).name ~= node.name then return end
end
end
return minetest.set_node(pos, {name = cobble})
end
------------------------------------------------------------------------
-- REGISTER DUNGEON NODES, BIOME DEFAULTS
local function regdungeon(name)
local def = nodecore.underride({groups = {dungeon_mapgen = 1}},
minetest.registered_nodes[cobble])
def.mapgen = nil
return minetest.register_node(modname .. ":" .. name, def)
end
regdungeon("dungeon_cobble")
regdungeon("dungeon_cobble_alt")
regdungeon("dungeon_cobble_stair")
local oldbiome = minetest.register_biome
function minetest.register_biome(def, ...)
if not def then return oldbiome(def, ...) end
def.node_dungeon = def.node_dungeon or modname .. ":dungeon_cobble"
def.node_dungeon_alt = def.node_dungeon_alt or modname .. ":dungeon_cobble_alt"
def.node_dungeon_stair = def.node_dungeon_stair or modname .. ":dungeon_cobble_stair"
return oldbiome(def, ...)
end
------------------------------------------------------------------------
-- DUNGEON MODIFIER HOOKS
minetest.register_abm({
label = modname .. " dungeon cleanup",
interval = 1,
chance = 1,
nodenames = {"group:dungeon_mapgen"},
action = dungeonprocess
})