From 24a69977f052693547b0547ad338adf6581a669a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 23 Feb 2017 15:41:46 +0100 Subject: [PATCH] Allow to set gain of fence gate sounds --- mods/ITEMS/mcl_fences/API.md | 8 ++++++-- mods/ITEMS/mcl_fences/init.lua | 17 ++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_fences/API.md b/mods/ITEMS/mcl_fences/API.md index 651b6e7c3b..5a1f66a50c 100644 --- a/mods/ITEMS/mcl_fences/API.md +++ b/mods/ITEMS/mcl_fences/API.md @@ -18,7 +18,7 @@ The full itemstring of the new fence node. Notes: Fences will always have the group `fence=1`. They will always connect to solid nodes (group `solid=1`). -## `mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close)` +## `mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close)` Adds a fence gate without crafting recipe. This will create 2 nodes. ### Parameters @@ -29,6 +29,8 @@ Adds a fence gate without crafting recipe. This will create 2 nodes. * `sounds`: Node sound table for the fence gate * `sound_open`: Sound to play when opening fence gate (optional, default is wooden sound) * `sound_close`: Sound to play when closing fence gate (optional, default is wooden sound) +* `sound_gain_open`: Gain (0.0-1.0) of the opening fence gate sound (optional, default is 0.3) +* `sound_gain_close`: Gain (0.0-1.0) of the closing fence gate sound (optional, default is 0.3) Notes: Fence gates will always have the group `fence_gate=1`. The open fence gate will always have the group `not_in_creative_inventory=1`. @@ -38,7 +40,7 @@ This function returns 2 values, in the following order: 1. Itemstring of the closed fence gate 2. Itemstring of the open fence gate -## `mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture, groups, connects_to, sounds, sound_open, sound_close)` +## `mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture, groups, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close)` Registers a fence and fence gate. This is basically a combination of the two functions above. This is the recommended way to add a fence / fence gate pair. This will register 3 nodes in total without crafting recipes. @@ -51,6 +53,8 @@ This will register 3 nodes in total without crafting recipes. * `sounds`: Node sound table for the fence and the fence gate * `sound_open`: Sound to play when opening fence gate (optional, default is wooden sound) * `sound_close`: Sound to play when closing fence gate (optional, default is wooden sound) +* `sound_gain_open`: Gain (0.0-1.0) of the opening fence gate sound (optional, default is 0.3) +* `sound_gain_close`: Gain (0.0-1.0) of the closing fence gate sound (optional, default is 0.3) ### Return value This function returns 3 values, in this order: diff --git a/mods/ITEMS/mcl_fences/init.lua b/mods/ITEMS/mcl_fences/init.lua index e6813ecbaa..6e0b9afe83 100644 --- a/mods/ITEMS/mcl_fences/init.lua +++ b/mods/ITEMS/mcl_fences/init.lua @@ -64,7 +64,7 @@ mcl_fences.register_fence = function(id, fence_name, texture, groups, connects_t return fence_id end -mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close, sound_gain) +mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) local meta2 local state2 = 0 @@ -80,8 +80,11 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, if not sound_close then sound_close = "doors_fencegate_close" end - if not sound_gain then - sound_gain = 0.3 + if not sound_gain_open then + sound_gain_open = 0.3 + end + if not sound_gain_close then + sound_gain_close = 0.3 end local function punch_gate(pos, node) meta2 = minetest.get_meta(pos) @@ -89,11 +92,11 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, local tmp_node2 if state2 == 1 then state2 = 0 - minetest.sound_play(sound_close, {gain = 0.5, max_hear_distance = 10}) + minetest.sound_play(sound_close, {gain = sound_gain_close, max_hear_distance = 10}) tmp_node2 = {name=gate_id, param1=node.param1, param2=node.param2} else state2 = 1 - minetest.sound_play(sound_open, {gain = 0.5, max_hear_distance = 10}) + minetest.sound_play(sound_open, {gain = sound_gain_open, max_hear_distance = 10}) tmp_node2 = {name=open_gate_id, param1=node.param1, param2=node.param2} end update_gate(pos, tmp_node2) @@ -207,9 +210,9 @@ mcl_fences.register_fence_gate = function(id, fence_gate_name, texture, groups, return gate_id, open_gate_id end -mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture, groups, connects_to, sounds, sound_open, sound_close) +mcl_fences.register_fence_and_fence_gate = function(id, fence_name, fence_gate_name, texture, groups, connects_to, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) local fence_id = mcl_fences.register_fence(id, fence_name, texture, groups, connects_to, sounds) - local gate_id, open_gate_id = mcl_fences.register_fence_gate(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close) + local gate_id, open_gate_id = mcl_fences.register_fence_gate(id, fence_gate_name, texture, groups, sounds, sound_open, sound_close, sound_gain_open, sound_gain_close) return fence_id, gate_id, open_gate_id end