diff options
Diffstat (limited to 'mesecons_noteblock')
| -rw-r--r-- | mesecons_noteblock/init.lua | 112 | ||||
| -rw-r--r-- | mesecons_noteblock/textures/mesecons_noteblock.png | bin | 900 -> 889 bytes | 
2 files changed, 47 insertions, 65 deletions
| diff --git a/mesecons_noteblock/init.lua b/mesecons_noteblock/init.lua index 6321882..d5e49ff 100644 --- a/mesecons_noteblock/init.lua +++ b/mesecons_noteblock/init.lua @@ -1,21 +1,15 @@  minetest.register_node("mesecons_noteblock:noteblock", {  	description = "Noteblock",  	tiles = {"mesecons_noteblock.png"}, -	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, -	visual_scale = 1.3, -	paramtype="light", -	after_place_node = function(pos) -		minetest.add_node(pos, {name="mesecons_noteblock:noteblock", param2=0}) -	end, -	on_punch = function (pos, node) -- change sound when punched -		local param2 = node.param2+1 -		if param2==12 then param2=0 end -		minetest.add_node(pos, {name = node.name, param2 = param2}) -		mesecon.noteblock_play(pos, param2) +	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.add_node(pos, node)  	end,  	sounds = default.node_sound_wood_defaults(),  	mesecons = {effector = { -- play sound when activated -		action_on = function (pos, node) +		action_on = function(pos, node)  			mesecon.noteblock_play(pos, node.param2)  		end  	}} @@ -30,58 +24,46 @@ minetest.register_craft({  	}  }) -mesecon.noteblock_play = function (pos, param2) -	local soundname -	if param2==8 then -		soundname="mesecons_noteblock_a" -	elseif param2==9 then -		soundname="mesecons_noteblock_asharp" -	elseif param2==10 then -		soundname="mesecons_noteblock_b" -	elseif param2==11 then -		soundname="mesecons_noteblock_c" -	elseif param2==0 then -		soundname="mesecons_noteblock_csharp" -	elseif param2==1 then -		soundname="mesecons_noteblock_d" -	elseif param2==2 then -		soundname="mesecons_noteblock_dsharp" -	elseif param2==3 then -		soundname="mesecons_noteblock_e" -	elseif param2==4 then -		soundname="mesecons_noteblock_f" -	elseif param2==5 then -		soundname="mesecons_noteblock_fsharp" -	elseif param2==6 then -		soundname="mesecons_noteblock_g" -	elseif param2==7 then -		soundname="mesecons_noteblock_gsharp" -	end -	local block_below_name = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name -	if block_below_name == "default:glass" then -		soundname="mesecons_noteblock_hihat" -	end -	if block_below_name == "default:steelblock" then -		soundname=soundname.."2" -- Go up an octave. -	end -	if block_below_name == "default:stone" then -		soundname="mesecons_noteblock_kick" -	end -	if block_below_name == "default:lava_source" then -		soundname="fire_large" -	end -	if block_below_name == "default:chest" then -		soundname="mesecons_noteblock_snare" -	end -	if block_below_name == "default:tree" then -		soundname="mesecons_noteblock_crash" -	end -	if block_below_name == "default:wood" then -		soundname="mesecons_noteblock_litecrash" -	end -	if block_below_name == "default:coalblock" then -		soundname="tnt_explode" +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 -	minetest.sound_play(soundname, -	{pos = pos, gain = 1.0, max_hear_distance = 32,}) +	pos.y = pos.y+1 +	minetest.sound_play(soundname, {pos = pos})  end diff --git a/mesecons_noteblock/textures/mesecons_noteblock.png b/mesecons_noteblock/textures/mesecons_noteblock.pngBinary files differ index d13e61b..7158a49 100644 --- a/mesecons_noteblock/textures/mesecons_noteblock.png +++ b/mesecons_noteblock/textures/mesecons_noteblock.png | 
