mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-28 22:25:20 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			210 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local simple_nodes = {
 | |
| 	footstep = { "Footstep Sound Node", "soundstuff_node_footstep.png", "Plays sound when you step on it" },
 | |
| 	dig = { "Dig Sound Node", "soundstuff_node_dig.png", "Plays sound when you dig it" },
 | |
| 	dug = { "Dug Sound Node", "soundstuff_node_dug.png", "Plays sound when you've dug it" },
 | |
| 	place = { "Place Sound Node", "soundstuff_node_place.png", "Plays sound when you place it" },
 | |
| 	place_failed = { "Place Failed Sound Node", "soundstuff_node_place_failed.png", "Plays sound when you try to place it but failed" },
 | |
| }
 | |
| 
 | |
| for k,v in pairs(simple_nodes) do
 | |
| 	core.register_node("soundstuff:"..k, {
 | |
| 		description = v[1].."\n"..v[3],
 | |
| 		tiles = {"soundstuff_node_sound.png","soundstuff_node_sound.png",v[2]},
 | |
| 		groups = {dig_immediate=2},
 | |
| 		sounds = {
 | |
| 			[k] = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 		}
 | |
| 	})
 | |
| end
 | |
| 
 | |
| core.register_node("soundstuff:place_failed_attached", {
 | |
| 	description = "Attached Place Failed Sound Node".."\n"..
 | |
| 		"Attached to the floor; plays a sound when you try to place it but failed",
 | |
| 	tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_place_failed.png"},
 | |
| 	groups = {dig_immediate=2, attached_node=1},
 | |
| 	drawtype = "nodebox",
 | |
| 	paramtype = "light",
 | |
| 	node_box = { type = "fixed", fixed = {
 | |
| 		{ -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 },
 | |
| 		{ -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 },
 | |
| 	}},
 | |
| 	sounds = {
 | |
| 		place_failed = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	},
 | |
| })
 | |
| 
 | |
| core.register_node("soundstuff:fall", {
 | |
| 	description = "Fall Sound Node".."\n"..
 | |
| 		"Falls and plays sound if node below is gone",
 | |
| 	tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"},
 | |
| 	groups = {dig_immediate=2, falling_node=1},
 | |
| 	sounds = {
 | |
| 		fall = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	}
 | |
| })
 | |
| 
 | |
| core.register_node("soundstuff:fall_attached", {
 | |
| 	description = "Attached Fall Sound Node".."\n"..
 | |
| 		"Drops as item and plays sound if node below is gone",
 | |
| 	tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"},
 | |
| 	groups = {dig_immediate=2, attached_node=1},
 | |
| 	drawtype = "nodebox",
 | |
| 	paramtype = "light",
 | |
| 	node_box = { type = "fixed", fixed = {
 | |
| 		{ -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 },
 | |
| 		{ -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 },
 | |
| 	}},
 | |
| 	sounds = {
 | |
| 		fall = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	}
 | |
| })
 | |
| 
 | |
| core.register_node("soundstuff:footstep_liquid", {
 | |
| 	description = "Liquid Footstep Sound Node".."\n"..
 | |
| 		"Plays sound when moving inside it; swimmable",
 | |
| 	drawtype = "liquid",
 | |
| 	tiles = {
 | |
| 		"soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
 | |
| 	},
 | |
| 	special_tiles = {
 | |
| 		{name = "soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
 | |
| 			backface_culling = false},
 | |
| 		{name = "soundstuff_node_sound.png^[colorize:#0000FF:127^[opacity:190",
 | |
| 			backface_culling = true},
 | |
| 	},
 | |
| 	liquids_pointable = true,
 | |
| 	liquidtype = "source",
 | |
| 	liquid_alternative_flowing = "soundstuff:footstep_liquid",
 | |
| 	liquid_alternative_source = "soundstuff:footstep_liquid",
 | |
| 	liquid_renewable = false,
 | |
| 	liquid_range = 0,
 | |
| 	liquid_viscosity = 0,
 | |
| 	use_texture_alpha = "blend",
 | |
| 	paramtype = "light",
 | |
| 	walkable = false,
 | |
| 	pointable = false,
 | |
| 	diggable = false,
 | |
| 	buildable_to = true,
 | |
| 	is_ground_content = false,
 | |
| 	post_effect_color = {a = 64, r = 0, g = 0, b = 200},
 | |
| 	sounds = {
 | |
| 		footstep = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	}
 | |
| })
 | |
| 
 | |
| core.register_node("soundstuff:footstep_climbable", {
 | |
| 	description = "Climbable Footstep Sound Node".."\n"..
 | |
| 		"Plays sound when moving inside it; can climb up and down here",
 | |
| 	drawtype = "allfaces",
 | |
| 	tiles = {
 | |
| 		"soundstuff_node_climbable.png",
 | |
| 	},
 | |
| 	paramtype = "light",
 | |
| 	sunlight_propagates = true,
 | |
| 	walkable = false,
 | |
| 	climbable = true,
 | |
| 	is_ground_content = false,
 | |
| 	groups = { dig_immediate = 2 },
 | |
| 	sounds = {
 | |
| 		footstep = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	}
 | |
| })
 | |
| 
 | |
| 
 | |
| 
 | |
| core.register_craftitem("soundstuff:eat", {
 | |
| 	description = "Eat Sound Item".."\n"..
 | |
| 		"Makes a sound when 'eaten' (with punch key)",
 | |
| 	inventory_image = "soundstuff_eat.png",
 | |
| 	on_use = core.item_eat(0),
 | |
| 	sound = {
 | |
| 		eat = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	}
 | |
| })
 | |
| 
 | |
| core.register_tool("soundstuff:breaks", {
 | |
| 	description = "Break Sound Tool".."\n"..
 | |
| 		"Digs cracky=3 and more".."\n"..
 | |
| 		"Makes a sound when it breaks",
 | |
| 	inventory_image = "soundstuff_node_dug.png",
 | |
| 	sound = {
 | |
| 		breaks = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	},
 | |
| 	tool_capabilities = {
 | |
| 		max_drop_level=0,
 | |
| 		groupcaps={
 | |
| 			cracky={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
 | |
| 			choppy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
 | |
| 			snappy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
 | |
| 			crumbly={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0},
 | |
| 		},
 | |
| 	},
 | |
| })
 | |
| 
 | |
| 
 | |
| core.register_tool("soundstuff:punch_use", {
 | |
| 	description = "Punch Use Sound Tool\n"..
 | |
| 		"Digs cracky=3 and more\n"..
 | |
| 		"Makes a sound when used on node or entity",
 | |
| 	inventory_image = "soundstuff_node_dig.png",
 | |
| 	sound = {
 | |
| 		punch_use = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	},
 | |
| 	tool_capabilities = {
 | |
| 		max_drop_level=0,
 | |
| 		groupcaps={
 | |
| 			cracky={times={[2]=2.00, [3]=1.20}, uses=0, maxlevel=0},
 | |
| 			choppy={times={[2]=2.00, [3]=1.20}, uses=0, maxlevel=0},
 | |
| 			snappy={times={[2]=2.00, [3]=1.20}, uses=0, maxlevel=0},
 | |
| 			crumbly={times={[2]=2.00, [3]=1.20}, uses=0, maxlevel=0},
 | |
| 		},
 | |
| 	},
 | |
| })
 | |
| 
 | |
| core.register_tool("soundstuff:punch_use_air", {
 | |
| 	description = "Punch Use (Air) Sound Tool\n"..
 | |
| 		"Makes a sound when used pointing at nothing",
 | |
| 	inventory_image = "soundstuff_node_dig.png",
 | |
| 	sound = {
 | |
| 		punch_use_air = { name = "soundstuff_mono", gain = 1.0 },
 | |
| 	},
 | |
| })
 | |
| 
 | |
| -- Plays sound repeatedly
 | |
| core.register_node("soundstuff:positional", {
 | |
| 	description = "Positional Sound Node".."\n"..
 | |
| 		"Repeatedly plays a sound at the node location",
 | |
| 	on_construct = function(pos)
 | |
| 		local timer = core.get_node_timer(pos)
 | |
| 		timer:start(0)
 | |
| 	end,
 | |
| 	on_timer = function(pos, elapsed)
 | |
| 		local node = core.get_node(pos)
 | |
| 		local dist = node.param2
 | |
| 		if dist == 0 then
 | |
| 			dist = nil
 | |
| 		end
 | |
| 		core.sound_play("soundstuff_mono", { pos = pos, max_hear_distance = dist })
 | |
| 		local timer = core.get_node_timer(pos)
 | |
| 		timer:start(0.7)
 | |
| 	end,
 | |
| 	on_rightclick = function(pos, node, clicker)
 | |
| 		node.param2 = (node.param2 + 1) % 64
 | |
| 		core.set_node(pos, node)
 | |
| 		if clicker and clicker:is_player() then
 | |
| 			local dist = node.param2
 | |
| 			local diststr
 | |
| 			if dist == 0 then
 | |
| 				diststr = "<default>"
 | |
| 			else
 | |
| 				diststr = tostring(dist)
 | |
| 			end
 | |
| 			core.chat_send_player(clicker:get_player_name(), "max_hear_distance = " .. diststr)
 | |
| 		end
 | |
| 	end,
 | |
| 
 | |
| 	groups = { dig_immediate = 2 },
 | |
| 	tiles = { "soundstuff_node_sound.png" },
 | |
| })
 | |
| 
 |