Make more nodes trigger special noteblock sounds (#506)

This commit is contained in:
Wuzzy 2020-08-08 11:22:51 +02:00 committed by GitHub
parent c1eccba247
commit 16836b16d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 13 deletions

View File

@ -1,12 +1,13 @@
This effector makes a sound if powered and can be used for making music. Normally it makes piano sounds. The sound frequency can be changed by punching the block. There are some special sounds that depend on the block below: This effector makes a sound if powered and can be used for making music. Normally it makes piano sounds. The sound frequency can be changed by punching the block (only works for piano). There are some special sounds that depend on the block below:
<table colspace="5"> <table colspace="5">
<tr><th>Block Below</th><th>Effect</th></tr> <tr><th>Block Below</th><th>Effect</th></tr>
<tr><td>Glass</td><td>Hihat</td></tr> <tr><td>Glass or Obsidian Glass</td><td>Hi-hat</td></tr>
<tr><td>Stone</td><td>Kick</td></tr> <tr><td>Any stone</td><td>Kick</td></tr>
<tr><td>Chest</td><td>Snare</td></tr> <tr><td>Chest or Locked Chest</td><td>Snare</td></tr>
<tr><td>Tree</td><td>Crash</td></tr> <tr><td>Any tree</td><td>Crash</td></tr>
<tr><td>Wood</td><td>Lite Crash</td></tr> <tr><td>Any wooden planks</td><td>Lite Crash</td></tr>
<tr><td>Coal Block</td><td>Explosion Sound </td></tr> <tr><td>Coal Block</td><td>Explosion sound</td></tr>
<tr><td>Lava Source</td><td>Fire Sound</td></tr> <tr><td>Lava Source</td><td>Fire sound</td></tr>
<tr><td>Steel Block</td><td>Raises the pitch by one octave</td></tr> <tr><td>Steel Block</td><td>Piano (high pitch, one octave higher than normal)</td></tr>
<tr><td>Any other block</td><td>Piano (low pitch)</td></tr>
</table> </table>

View File

@ -43,19 +43,33 @@ local soundnames = {
} }
local node_sounds = { local node_sounds = {
["default:glass"] = "mesecons_noteblock_hihat",
["default:stone"] = "mesecons_noteblock_kick",
["default:lava_source"] = "fire_fire", ["default:lava_source"] = "fire_fire",
["default:chest"] = "mesecons_noteblock_snare", ["default:chest"] = "mesecons_noteblock_snare",
["default:tree"] = "mesecons_noteblock_crash", ["default:chest_locked"] = "mesecons_noteblock_snare",
["default:wood"] = "mesecons_noteblock_litecrash",
["default:coalblock"] = "tnt_explode", ["default:coalblock"] = "tnt_explode",
["default:glass"] = "mesecons_noteblock_hihat",
["default:obsidian_glass"] = "mesecons_noteblock_hihat",
}
local node_sounds_group = {
["stone"] = "mesecons_noteblock_kick",
["tree"] = "mesecons_noteblock_crash",
["wood"] = "mesecons_noteblock_litecrash",
} }
mesecon.noteblock_play = function(pos, param2) mesecon.noteblock_play = function(pos, param2)
pos.y = pos.y-1 pos.y = pos.y-1
local nodeunder = minetest.get_node(pos).name local nodeunder = minetest.get_node(pos).name
local soundname = node_sounds[nodeunder] local soundname = node_sounds[nodeunder]
if not soundname then
for k,v in pairs(node_sounds_group) do
local g = minetest.get_item_group(nodeunder, k)
if g ~= 0 then
soundname = v
break
end
end
end
if not soundname then if not soundname then
soundname = soundnames[param2] soundname = soundnames[param2]
if not soundname then if not soundname then