123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- minetest.register_node("mesecons_noteblock:noteblock", {
- description = "Noteblock",
- tiles = {"mesecons_noteblock.png"},
- is_ground_content = false,
- groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
- on_punch = function(pos, node) -- change sound when punched
- node.param2 = (node.param2+1)%12
- mesecon.noteblock_play(pos, node.param2)
- minetest.set_node(pos, node)
- end,
- sounds = default.node_sound_wood_defaults(),
- mesecons = {effector = { -- play sound when activated
- action_on = function(pos, node)
- mesecon.noteblock_play(pos, node.param2)
- end
- }},
- on_blast = mesecon.on_blastnode,
- })
- minetest.register_craft({
- output = "mesecons_noteblock:noteblock 1",
- recipe = {
- {"group:wood", "group:wood", "group:wood"},
- {"group:mesecon_conductor_craftable", "default:steel_ingot", "group:mesecon_conductor_craftable"},
- {"group:wood", "group:wood", "group:wood"},
- }
- })
- local soundnames = {
- [0] = "mesecons_noteblock_csharp",
- "mesecons_noteblock_d",
- "mesecons_noteblock_dsharp",
- "mesecons_noteblock_e",
- "mesecons_noteblock_f",
- "mesecons_noteblock_fsharp",
- "mesecons_noteblock_g",
- "mesecons_noteblock_gsharp",
- "mesecons_noteblock_a",
- "mesecons_noteblock_asharp",
- "mesecons_noteblock_b",
- "mesecons_noteblock_c"
- }
- local node_sounds = {
- ["default:glass"] = "mesecons_noteblock_hihat",
- ["default:stone"] = "mesecons_noteblock_kick",
- ["default:lava_source"] = "fire_large",
- ["default:chest"] = "mesecons_noteblock_snare",
- ["default:tree"] = "mesecons_noteblock_crash",
- ["default:wood"] = "mesecons_noteblock_litecrash",
- ["default:coalblock"] = "tnt_explode",
- }
- mesecon.noteblock_play = function(pos, param2)
- pos.y = pos.y-1
- local nodeunder = minetest.get_node(pos).name
- local soundname = node_sounds[nodeunder]
- if not soundname then
- soundname = soundnames[param2]
- if not soundname then
- minetest.log("error", "[mesecons_noteblock] No soundname found, test param2")
- return
- end
- if nodeunder == "default:steelblock" then
- soundname = soundname.. 2
- end
- end
- pos.y = pos.y+1
- minetest.sound_play(soundname, {pos = pos})
- end
|