diff --git a/basic_materials/sound_api_core/.luacheckrc b/basic_materials/sound_api_core/.luacheckrc new file mode 100644 index 0000000..dc03d95 --- /dev/null +++ b/basic_materials/sound_api_core/.luacheckrc @@ -0,0 +1,3 @@ +read_globals = { + "minetest", "mcl_sounds", "default", "ks_sounds", "nodes_nature", "fl_stone", "fl_topsoil", "fl_trees", +} \ No newline at end of file diff --git a/basic_materials/sound_api_core/LICENSE b/basic_materials/sound_api_core/LICENSE new file mode 100644 index 0000000..50e6e01 --- /dev/null +++ b/basic_materials/sound_api_core/LICENSE @@ -0,0 +1,19 @@ + +MIT Copyright 2021 wsor4035 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/basic_materials/sound_api_core/init.lua b/basic_materials/sound_api_core/init.lua new file mode 100644 index 0000000..9dc6b24 --- /dev/null +++ b/basic_materials/sound_api_core/init.lua @@ -0,0 +1,247 @@ +local sound_api = {} + +--convert some games for api usage + +--ks_sounds conversion +--currently loggy and bedrock are ignored +local ks = {} + +function ks.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.generalnode_sounds.footstep + table.dug = table.dug or ks_sounds.generalnode_sounds.dug + table.dig = table.dig or ks_sounds.generalnode_sounds.dig + table.place = table.place or ks_sounds.generalnode_sounds.place + return table +end + +function ks.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.woodennode_sounds.footstep + table.dug = table.dug or ks_sounds.woodennode_sounds.dug + table.dig = table.dig or ks_sounds.woodennode_sounds.dig + table.place = table.place or ks_sounds.woodennode_sounds.place + ks.node_sound_defaults(table) + return table +end + +function ks.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.leafynode_sounds.footstep + table.dug = table.dug or ks_sounds.leafynode_sounds.dug + table.dig = table.dig or ks_sounds.leafynode_sounds.dig + table.place = table.place or ks_sounds.leafynode_sounds.place + ks.node_sound_defaults(table) + return table +end + +function ks.node_sound_snow_defaults(table) + table = table or {} + table.footstep = table.footstep or ks_sounds.snowynode_sounds.footstep + table.dug = table.dug or ks_sounds.snowynode_sounds.dug + table.dig = table.dig or ks_sounds.snowynode_sounds.dig + table.place = table.place or ks_sounds.snowynode_sounds.place + ks.node_sound_defaults(table) + return table +end + + +--api +function sound_api.node_sound_default(table) + if minetest.get_modpath("default") then + return default.node_sound_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_default(table) + else + return table + end +end + +function sound_api.node_sound_stone_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_stone_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_stone_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_stone_defaults(table) + elseif minetest.get_modpath("fl_stone") then + return fl_stone.sounds.stone(table) + else + return table + end +end + +function sound_api.node_sound_dirt_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_dirt_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_dirt_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_dirt_defaults(table) + --s/dirt/grass + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.grass(table) + else + return table + end +end + +--return dirt as some games use dirt vs grass +function sound_api.node_sound_grass_defaults(table) + return sound_api.node_sound_dirt_defaults(table) +end + +function sound_api.node_sound_sand_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_sand_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_sand_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_sand_defaults(table) + elseif minetest.get_modpath("fl_stone") then + return fl_stone.sounds.sand(table) + else + return table + end +end + +function sound_api.node_sound_gravel_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_gravel_defaults(table) + --s/gravel/sand + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_sand_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_gravel_defaults(table) + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.gravel(table) + else + return table + end +end + +function sound_api.node_sound_wood_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_wood_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_wood_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_wood_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_wood_defaults(table) + elseif minetest.get_modpath("fl_trees") then + return fl_trees.sounds.wood(table) + else + return table + end +end + +function sound_api.node_sound_leaves_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_leaves_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_leaves_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_leaves_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_leaves_defaults(table) + else + return table + end +end + +function sound_api.node_sound_glass_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_glass_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_glass_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_glass_defaults(table) + else + return table + end +end + + +function sound_api.node_sound_ice_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_ice_defaults(table) + --s/ice/glass + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_glass_defaults(table) + --s/ice/glass + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_glass_defaults(table) + else + return table + end +end + +function sound_api.node_sound_metal_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_metal_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_metal_defaults(table) + else + return table + end +end + +function sound_api.node_sound_water_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_water_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_water_defaults(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_water_defaults(table) + else + return table + end +end + +function sound_api.node_sound_lava_defaults(table) + --s/lava/water + if minetest.get_modpath("default") then + return default.node_sound_water_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_lava_defaults(table) + --s/lava/water + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_water_defaults(table) + else + return table + end +end + +function sound_api.node_sound_snow_defaults(table) + if minetest.get_modpath("default") then + return default.node_sound_snow_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_snow_defaults(table) + elseif minetest.get_modpath("ks_sounds") then + return ks.node_sound_snow_default(table) + elseif minetest.get_modpath("nodes_nature") then + return nodes_nature.node_sound_snow_defaults(table) + elseif minetest.get_modpath("fl_topsoil") then + return fl_topsoil.sounds.snow(table) + else + return table + end +end + +function sound_api.node_sound_wool_defaults(table) + --s/wool/default + if minetest.get_modpath("default") then + return default.node_sound_defaults(table) + elseif minetest.get_modpath("mcl_sounds") then + return mcl_sounds.node_sound_wool_defaults(table) + else + return table + end +end + +return sound_api \ No newline at end of file