Use old node names instead of registering new ones

master
Jordan Irwin 2021-04-20 03:16:35 -07:00
parent fc8dcede55
commit d43d88dcf2
2 changed files with 37 additions and 43 deletions

View File

@ -6,6 +6,8 @@
Minetest mod that replaces glass nodes from the [default][] mod in [minetest_game][] & adds colored glass & other enhancements.
- [Forum thread](https://forum.minetest.net/viewtopic.php?t=18307)
***NOTE:*** *This mod is a **work-in-progress**. Not all glass nodes have been yet added.*
![Screenshot](screenshot.png)
@ -22,7 +24,6 @@ Minetest mod that replaces glass nodes from the [default][] mod in [minetest_gam
### ***Licensing:***
- LGPL
- CC BY-SA
- See: [LICENSE.md](LICENSE.md)

View File

@ -20,72 +20,65 @@ local S = core.get_translator()
local enable_colors = core.global_exists('unifieddyes') or core.get_modpath('unifieddyes')
--- Extracts glass type from string.
--
-- @function get_glass_type
-- @local
-- @param g string to be parsed
-- @return string representing glass type or `nil`
local function get_glass_type(g)
local glass_type = nil
local idx = g:find(':')
if idx then
glass_type = g:sub(idx+1)
end
idx = glass_type:find('_glass')
if idx then
glass_type = glass_type:sub(1, idx-1)
end
if glass_type == 'glass' then
glass_type = 'plain'
end
return glass_type
end
if enable_colors then
local to_color = {
'default:glass',
'default:glass_cube',
'default:glass_doublepanel',
'default:glass_halfstair',
'default:glass_innerstair',
'default:glass_micropanel',
'default:glass_microslab',
'default:glass_nanoslab',
'default:glass_outerstair',
'default:glass_panel',
'default:glass_thinstair',
'default:obsidian_glass',
'default:obsidian_glass_cube',
'default:obsidian_glass_doublepanel',
'default:obsidian_glass_halfstair',
'default:obsidian_glass_innerstair',
'default:obsidian_glass_micropanel',
'default:obsidian_glass_microslab',
'default:obsidian_glass_nanoslab',
'default:obsidian_glass_outerstair',
'default:obsidian_glass_panel',
'default:obsidian_glass_thinstair',
}
local next = next
for _, old_glass in ipairs(to_color) do
local glass_type = get_glass_type(old_glass)
if not glass_type then goto continue end
local new_glass = 'glass:' .. glass_type
local glass_def = {}
for k, v in pairs(core.registered_nodes[old_glass]) do
glass_def[k] = v
end
if next(glass_def) == nil then
core.log('warning', old_glass .. ' not registered, skipping ...')
goto continue
end
glass_def.paramtype2 = 'color'
glass_def.palette = 'unifieddyes_palette_extended.png'
glass_def.groups['ud_param2_colorable'] = 1
glass_def.on_dig = unifieddyes.on_dig
-- register new node
core.register_node(new_glass, glass_def)
-- unregister old node
core.unregister_item(old_glass)
core.registered_nodes[old_glass] = nil
core.registered_aliases[old_glass] = nil
core.register_alias(old_glass, new_glass)
-- register new node
core.register_node(':' .. old_glass, glass_def)
::continue::
end
-- misc. aliases
if core.registered_nodes['glass:plain'] then
core.register_alias('glass', 'glass:plain')
core.register_alias('glass:glass', 'glass:plain')
-- backward compat (1.0)
if core.registered_nodes['default:glass'] then
core.register_alias('glass:plain', 'default:glass')
end
if core.registered_nodes['glass:obsidian'] then
core.register_alias('obsidian_glass', 'glass:obsidian')
if core.registered_nodes['default:obsidian_glass'] then
core.register_alias('glass:obsidian', 'default:obsidian_glass')
end
end