From b7df3a9bd42b612b25194d5bf8b002a047fb5ff1 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 13 Feb 2017 01:28:36 +0100 Subject: [PATCH] Trapdoors: Simplify nodeboxes, add metal sounds, refactor code --- mods/doors/init.lua | 294 ++++++------------ .../{door_close.ogg => doors_door_close.ogg} | Bin .../{door_open.ogg => doors_door_open.ogg} | Bin mods/doors/sounds/doors_steel_door_close.ogg | Bin 0 -> 8574 bytes mods/doors/sounds/doors_steel_door_open.ogg | Bin 0 -> 5510 bytes 5 files changed, 98 insertions(+), 196 deletions(-) rename mods/doors/sounds/{door_close.ogg => doors_door_close.ogg} (100%) rename mods/doors/sounds/{door_open.ogg => doors_door_open.ogg} (100%) create mode 100644 mods/doors/sounds/doors_steel_door_close.ogg create mode 100644 mods/doors/sounds/doors_steel_door_open.ogg diff --git a/mods/doors/init.lua b/mods/doors/init.lua index e86434a7..b7ecd08c 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -174,9 +174,9 @@ function doors:register_door(name, def) if check_player_priv(pos, clicker) then on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0}) if is_right(pos, clicker) then - minetest.sound_play("door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) else - minetest.sound_play("door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) end end end, @@ -210,9 +210,9 @@ function doors:register_door(name, def) if check_player_priv(pos, clicker) then on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0}) if is_right(pos, clicker) then - minetest.sound_play("door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) else - minetest.sound_play("door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) end end end, @@ -246,9 +246,9 @@ function doors:register_door(name, def) if check_player_priv(pos, clicker) then on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2}) if is_right(pos, clicker) then - minetest.sound_play("door_open", {gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_open", {gain = 0.3, max_hear_distance = 10}) else - minetest.sound_play("door_close", {gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_close", {gain = 0.3, max_hear_distance = 10}) end end end, @@ -282,9 +282,9 @@ function doors:register_door(name, def) if check_player_priv(pos, clicker) then on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2}) if is_right(pos, clicker) then - minetest.sound_play("door_open", {pos=pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_open", {pos=pos, gain = 0.3, max_hear_distance = 10}) else - minetest.sound_play("door_close", {gain = 0.3, max_hear_distance = 10}) + minetest.sound_play("doors_door_close", {gain = 0.3, max_hear_distance = 10}) end end end, @@ -464,116 +464,113 @@ minetest.register_alias("doors:door_wood_b_c", "doors:door_wood_b_1") minetest.register_alias("doors:door_wood_b_o", "doors:door_wood_b_1") -----trapdoor Wood---- +---- Trapdoor ---- -local me -local meta -local state = 0 +function doors:register_trapdoor(name, def) + local function update_door(pos, node) + minetest.set_node(pos, node) + end -local function update_door(pos, node) - minetest.set_node(pos, node) -end + local me + local meta + local state = 0 -local function punch(pos) - meta = minetest.get_meta(pos) - state = meta:get_int("state") - me = minetest.get_node(pos) - local tmp_node - local tmp_node2 - local oben = {x=pos.x, y=pos.y+1, z=pos.z} + if not def.sound_open then + def.sound_open = "doors_door_open" + end + if not def.sound_close then + def.sound_close = "doors_door_close" + end + + local function punch(pos) + meta = minetest.get_meta(pos) + state = meta:get_int("state") + me = minetest.get_node(pos) + local tmp_node + local tmp_node2 + local oben = {x=pos.x, y=pos.y+1, z=pos.z} if state == 1 then state = 0 - minetest.sound_play("door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) - tmp_node = {name="doors:trapdoor", param1=me.param1, param2=me.param2} + minetest.sound_play(def.sound_close, {pos = pos, gain = 0.3, max_hear_distance = 10}) + tmp_node = {name=name, param1=me.param1, param2=me.param2} else state = 1 - minetest.sound_play("door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) - tmp_node = {name="doors:trapdoor_open", param1=me.param1, param2=me.param2} + minetest.sound_play(def.sound_open, {pos = pos, gain = 0.3, max_hear_distance = 10}) + tmp_node = {name=name.."_open", param1=me.param1, param2=me.param2} end update_door(pos, tmp_node) meta:set_int("state", state) -end + end + minetest.register_node(name, { + description = def.description, + drawtype = "nodebox", + tiles = def.tiles, + inventory_image = def.inventory_image, + wield_image = def.wield_image, + is_ground_content = false, + paramtype = "light", + stack_max = 64, + paramtype2 = "facedir", + groups = def.groups, + sounds = def.sounds, + node_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -6/16, 8/16},}, + }, + on_creation = function(pos) + state = 0 + end, + mesecons = {effector = { + action_on = (function(pos, node) + punch(pos) + end), + }}, + on_rightclick = function(pos, node, clicker) + punch(pos) + end, + }) -minetest.register_node("doors:trapdoor", { - description = "Wooden Trapdoor", - drawtype = "nodebox", - tiles = {"door_trapdoor.png"}, - is_ground_content = false, - paramtype = "light", - stack_max = 64, - paramtype2 = "facedir", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,mesecon_effector_on=1,door=2}, - sounds = mcl_sounds.node_sound_wood_defaults(), - drop = "doors:trapdoor", - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, -5/16, -6/16, 8/16},--left - {5/16, -8/16, -8/16, 8/16, -6/16, 8/16}, --right - {-8/16, -8/16, -8/16, 8/16, -6/16, -5/16},--down - {-8/16, -8/16, 5/16, 8/16, -6/16, 8/16}, --up - {-2/16, -8/16, -5/16, 2/16, -6/16, 5/16}, --vert mid - {-5/16, -8/16, -2/16, 5/16, -6/16, 2/16}, --hori mid + minetest.register_node(name.."_open", { + drawtype = "nodebox", + tiles = def.tiles, + is_ground_content = false, + paramtype = "light", + paramtype2 = "facedir", + pointable = true, + groups = def.groups, + sounds = def.sounds, + drop = name, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} }, - }, - selection_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, -5/16, -6/16, 8/16},--left - {5/16, -8/16, -8/16, 8/16, -6/16, 8/16}, --right - {-8/16, -8/16, -8/16, 8/16, -6/16, -5/16},--down - {-8/16, -8/16, 5/16, 8/16, -6/16, 8/16}, --up - {-2/16, -8/16, -5/16, 2/16, -6/16, 5/16}, --vert mid - {-5/16, -8/16, -2/16, 5/16, -6/16, 2/16}, --hori mid + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} }, - }, - on_creation = function(pos) - state = 0 - end, - mesecons = {effector = { + on_rightclick = function(pos, node, clicker) + punch(pos) + end, + mesecons = {effector = { action_on = (function(pos, node) punch(pos) end), - }}, - on_rightclick = function(pos, node, clicker) - punch(pos) - end, -}) + }}, + }) -minetest.register_node("doors:trapdoor_open", { - drawtype = "nodebox", +end + +doors:register_trapdoor("doors:trapdoor", { + description = "Wooden Trapdoor", tiles = {"door_trapdoor.png"}, - is_ground_content = false, - paramtype = "light", - paramtype2 = "facedir", - pointable = true, + wield_image = "door_trapdoor.png", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,mesecon_effector_on=1,door=2}, sounds = mcl_sounds.node_sound_wood_defaults(), - drop = "doors:trapdoor", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} - }, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} - }, - on_rightclick = function(pos, node, clicker) - punch(pos) - end, - mesecons = {effector = { - action_on = (function(pos, node) - punch(pos) - end), - }}, - }) - - - minetest.register_craft({ output = 'doors:trapdoor 2', recipe = { @@ -588,109 +585,14 @@ minetest.register_craft({ burntime = 15, }) ---- Iron Trapdoor ---- -local me -local meta -local state = 0 - -local function update_door(pos, node) - minetest.set_node(pos, node) -end - -local function punch(pos) - meta = minetest.get_meta(pos) - state = meta:get_int("state") - me = minetest.get_node(pos) - local tmp_node - local tmp_node2 - local oben = {x=pos.x, y=pos.y+1, z=pos.z} - if state == 1 then - state = 0 - minetest.sound_play("door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) - tmp_node = {name="doors:iron_trapdoor", param1=me.param1, param2=me.param2} - else - state = 1 - minetest.sound_play("door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) - tmp_node = {name="doors:iron_trapdoor_open", param1=me.param1, param2=me.param2} - end - update_door(pos, tmp_node) - meta:set_int("state", state) -end - - -minetest.register_node("doors:iron_trapdoor", { +doors:register_trapdoor("doors:iron_trapdoor", { description = "Iron Trapdoor", - drawtype = "nodebox", - tiles = {"iron_trapdoor.png", "iron_trapdoor.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png"}, - paramtype = "light", - is_ground_content = false, - stack_max = 64, - paramtype2 = "facedir", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,mesecon_effector_on=1,door=2}, - sounds = mcl_sounds.node_sound_wood_defaults(), - drop = "doors:iron_trapdoor", - node_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, -5/16, -6/16, 8/16},--left - {5/16, -8/16, -8/16, 8/16, -6/16, 8/16}, --right - {-8/16, -8/16, -8/16, 8/16, -6/16, -5/16},--down - {-8/16, -8/16, 5/16, 8/16, -6/16, 8/16}, --up - {-2/16, -8/16, -5/16, 2/16, -6/16, 5/16}, --vert mid - {-5/16, -8/16, -2/16, 5/16, -6/16, 2/16}, --hori mid - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, -5/16, -6/16, 8/16},--left - {5/16, -8/16, -8/16, 8/16, -6/16, 8/16}, --right - {-8/16, -8/16, -8/16, 8/16, -6/16, -5/16},--down - {-8/16, -8/16, 5/16, 8/16, -6/16, 8/16}, --up - {-2/16, -8/16, -5/16, 2/16, -6/16, 5/16}, --vert mid - {-5/16, -8/16, -2/16, 5/16, -6/16, 2/16}, --hori mid - }, - }, - mesecons = {effector = { - action_on = (function(pos, node) - punch(pos) - end), - }}, - on_creation = function(pos) - state = 0 - end, - on_rightclick = function(pos, node, clicker) - punch(pos) - end, -}) - - -minetest.register_node("doors:iron_trapdoor_open", { - drawtype = "nodebox", - tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "iron_trapdoor.png", "iron_trapdoor.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - pointable = true, - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,door=2,mesecon_effector_on=1}, - sounds = mcl_sounds.node_sound_wood_defaults(), - drop = "doors:iron_trapdoor", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} - }, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5} - }, - mesecons = {effector = { - action_on = (function(pos, node) - punch(pos) - end), - }}, - on_rightclick = function(pos, node, clicker) - punch(pos) - end, + tiles = {"iron_trapdoor.png"}, + wield_image = "iron_trapdoor.png", + groups = {cracky=2,mesecon_effector_on=1,door=2}, + sounds = mcl_sounds.node_sound_metal_defaults(), + sound_open = "doors_steel_door_open", + sound_close = "doors_steel_door_close", }) minetest.register_craft({ diff --git a/mods/doors/sounds/door_close.ogg b/mods/doors/sounds/doors_door_close.ogg similarity index 100% rename from mods/doors/sounds/door_close.ogg rename to mods/doors/sounds/doors_door_close.ogg diff --git a/mods/doors/sounds/door_open.ogg b/mods/doors/sounds/doors_door_open.ogg similarity index 100% rename from mods/doors/sounds/door_open.ogg rename to mods/doors/sounds/doors_door_open.ogg diff --git a/mods/doors/sounds/doors_steel_door_close.ogg b/mods/doors/sounds/doors_steel_door_close.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aea7be670b0763259c269521e035966fa1a8d4e6 GIT binary patch literal 8574 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 LV#kaorVES!I$Eli literal 0 HcmV?d00001 diff --git a/mods/doors/sounds/doors_steel_door_open.ogg b/mods/doors/sounds/doors_steel_door_open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..de87477018cc1186834fa91ef930e45e5018f54c GIT binary patch literal 5510 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 M59>9ZmCJc;0B-Aw-~a#s literal 0 HcmV?d00001