Use old node names instead of registering new ones
parent
fc8dcede55
commit
d43d88dcf2
|
@ -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)
|
||||
|
||||
|
||||
|
|
77
nodes.lua
77
nodes.lua
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue