Avoid crash when sound_api function for a key is undefined (#4)

* Avoid crash when sound_api function for a key is undefined

* Refactor function to override sounds using sound_api

* Change override_sounds for validate_sounds
This commit is contained in:
Olivier Dragon 2022-08-12 00:31:57 -04:00 committed by GitHub
parent 42d876fa75
commit d13501cc10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,9 +2,20 @@ local modpath = minetest.get_modpath("sound_api")
sound_api = dofile(modpath .. "/sound_api_core/init.lua")
local function validate_sound(key)
if key and sound_api[key] then
return true
elseif key then
minetest.log("warning", "attempted to call invalid sound: "..key)
else
minetest.log("warning", "sound_def is missing a sound_api key")
end
return false
end
minetest.register_on_mods_loaded(function()
for name, def in pairs(minetest.registered_nodes) do
if def._sound_def and def._sound_def.key then
if def._sound_def and validate_sound(def._sound_def.key) then
minetest.override_item(name, {
sounds = sound_api[def._sound_def.key](def._sound_def.input)
})
@ -13,10 +24,10 @@ minetest.register_on_mods_loaded(function()
local old_reg_node = minetest.register_node
function minetest.register_node(name, def)
if def._sound_def and def._sound_def.key then
if def._sound_def and validate_sound(def._sound_def.key) then
def.sounds = sound_api[def._sound_def.key](def._sound_def.input)
end
old_reg_node(name, def)
end
end)
end)