From d13501cc10059149cde3c266df7e623556e9a5ef Mon Sep 17 00:00:00 2001 From: Olivier Dragon Date: Fri, 12 Aug 2022 00:31:57 -0400 Subject: [PATCH] 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 --- init.lua | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index d61df8d..ec392e2 100644 --- a/init.lua +++ b/init.lua @@ -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) \ No newline at end of file +end)