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 e86434a713..b7ecd08ce5 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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 H?j`ykI$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 zcmai1dpy(M|9?-?T&iI-nwo4eQ6|)c4=Z7r%b07U$gQ=CnUX}zCAW}EX-R6u+;W>+ zx(K;Mtq?=rcI zxw{wV~Y0$xh7C0)<>Z&C~jA*s=L`o83vmz~YmlRn(CTHbW*Fc+? zCr65zv>;dqO+XFA@YQfuyGfoROC1m0%0lTJlLL|gASYKXE>}$grdTEcv;Y9i*cSfG zAK99MY%N7fLf1R51&skf!FlF!cg&MU%u~_MsTg4$yTsLKFB4X6p}08!*w{*$`oq@= z<&FUWG-q!d$0?5E8#f-C1Z71RiU8pNAPO#{v)|6ZEbYJxdrCi#{^mcbYlfGCP#m-& z?4_S~zF4f*8U-=oIe=<}OUG$7hW}&aa0GEfu6PlCi2X6gc|#Vl6tBcKuMAGT9#?}O zXEXS%V{9BBq;lELQd!`HcJ*>Z-v-0Ar|f6r61SPva4* z9E}KQ!`{n@Agbr*aE-A2JBk{~c68l7C)zB2JS(!o!G%^- zNhV@BX=DkZ{ZOFo31SMzl5GXZ9;MV%yj63e1V;k^)(glkX{GR?Y1+eFunRSn9fz9uCJn~-$Mt%y2L!{l;P$4f9mSi!3&N8oqcs9*k%Ny13!UI zgZ;Bj@IZmna5JI5S(KpUnkRQtkAp6bHIv z2Hlm%e3R+*=6mSSe^lx^;TB~8KtELlo4O5~`f+a(+QQhkMIA5}6WqwS4{Avt_okvP zQZat1KEWAz*Rm$BWvg?AQvjG?ilD^ZJsX#QHZJdM(nM^k@3oA){Hz^qcV}vgr~g}( z6goH>00Plw0cbNa+LR0uLhFW039O5JibI0ootRZMn$H3J`#E>hi2}CZy~4HN8j%5f+bOguAFr;&X~vu7-|n#`mfl6| zCSrK@w2y4CJEg`^JQT0QfqTZ4f{eOUxJ#>F;f7h3Jjk{KEI+v zf@4Usrq*z3udHcry3TVQU0Zt!2~O&@r#Q=#debqa-6Rs6Vkc`#k)zmUkSOV1FLdYw z_LM<+3Z=@+brJLv=Fo1^fIOwQk3^|tg5AM%`e5e2P?UaqimM)_m#1qRNVTPSIfKYS zUj00ZV;_?Qr}o>C2IMG|49Y;S7bSz~9!Q}&Qv3TUj*FoKeWBDo=23(Ixxbf531YhU z(T6gbRHyAit*8`GD_sy7)QS#5IsUCPW#AjLmr19}n)VBjO)2SAPex@G?umBp4|TVvxI20c>~U~j z1n*%fa|m&e(#y09igIUqxmPpYoljE7AMg@SEVtpNAMRc`80fw?qnC#*IVt(HaC)g> zR-*&Pyc6#VFVQ#E*TUJ_^*#;d)>R<6DSxD&RyvY}!i~EQV)8 zj4!Hmv7?nnlU*b^6;4DyT&062t*AK`Cw`4V)*io;Mt0f3smQ>aaTv+ub;_Jnay*8E z*fDW)46QvMydry8a?m7IX#D7waJRv{Q0Kq&I1QjigkeJ1b8m-e&)p}@tl zoC*ix@uC1LA_&!CVgW)OvcP)tEv8U+dQ8j&P!?EFs}ms9AqyN2!8nQKDH8oaD4GSf z8HCd0z14>nMcI2uaT;HFbktNj(1eQ@VmPlo3M;|I*K-=3$oT?^g3^A3=W{IYuwA@v z6(Xcqv&xOJ!Kl)K5r^%U_ngI5p=kX2Gca)HjR@kU(k2I5JZ{{EDA>m#i&AiLdQsmN zkRez+zZv1lFKu?SqgC<{Ay%4whZ(c=&B(~(MPncomdBUQF8I=dX~q0??o=%}Quax*V7jeL;|=fR z=BHD&V8+3tPq+Dlla?QrBF%Wk%e7i7&8NY4*Wd{R$a@^!D{U3mEFvj*3Xg#*HlvQg z$So)q7*DaRG%^^H#E<|WVyU)9sCF*+=5H&k>~rxf0-JaNMJobBrZ8^)zYPQ+%WeS3 z8})pN8XH#aC?~KZ_AW9~O8;pZqtikS!vW38j!Y#J(-~x5|7bS5FkTpfJ|AD%_m%;6ks&WkpjXHRm19WO25zMbjgMbKS<*`T6a!%d z1Q6a0n*ZF9r&CZ>Q_qY48~~J+=FtHzx}S&}6Qn9Jt6hc_t{Lo_KyL}Sf`}~O3KG!{ z@XRB@3weXFL70;23%O9`z|}4R%t3{@YUkfs>n*`#LH-H>!qkK-bvs} zf;=(eb$|wLw>f@HLr+wBZ4Jd7+f?CwP+_#1BB6Xo=a?1l*quffMm~4~Km;hR3<1QT z65c@g6G+22YC;s6qz3>du^q5W(NV+mIWnkicSXV*MWYS_dH1W$>#Dnuxlr>b<)HKww*oFp_vO2cDiuW*or7fXB?Cq{}UE{AD^{>}*QpQE7hy1${ zPzBkF0^gWzqOCK8w~uCH#UiYKf7K(Yln(oGDRes_aXN$RZwq{x z3rd;K-J~$md3oo~xgeQOWr4rx;_Knr_U)019CnYc-#5fN> z48Yq(jU)=D4(z-dre{{*CO2|hbE$5*O+>WiBc?7W?*@Qum*AiH?jPi3;`>{RQDbY^ zD)+qMt64rH28%i_zmz}I*7;#_kD;z2jBf3I_Zi*Vcha>upK$)7)^ez^+djw$@e~6x zR04l|LSv{GHkGvZuS`FV(PADuC-xrax zfM1;ejxc2&H%&48$>RG%;Ev-IF~L(jYu7B=k}TI-VhZWMwxOL)n1``w`#>83HdRD`{C=5p&< z#_`d-i)mWp_k65QxeWL(EQ`z=X6*`d@mn$++bfU zJfaM;;f4eRZZ~VP-w?1@b;;ROeb{(YUA056spU#XL)pSl`yt1%gWo*L+m#|p9_rl_ zL%JS?w1&N{-CQ=Kq%gnh{QKXJ+*B0qR5v}`mDr_Pa%+L{V))$9AD*h16ul$0QR^zs?nxR6>S!?4^yN1HMcAJY+@#{$ z`P>8}K*JM!EhYASa;1INrRq%8E9Hu8@$BJUc#;=2Rt#S|@AhTpSJj@IZX>qTPk(0F zUAMZFJ&U0p8FMJ19`M2;fWghal&*!ox{ziYcJ)^yi;4N2Gsug z7$$0Dlz#xIez3nUUkZ#7z_2LLq9YriIZ!^9SK+bEI&_2>3e7TqNN#=1%<9i7%>LTh z_Kvh^rSHbp(Ds!Ym7QPwjHU;XH9zWK&JPB;AU)n>6df@_8A=(RZ#T_K;hJ@KJ&Sdo zR;teRR}Ma4f1EE#>B!>_F1KTvTUJzqlcyGzE@yO>`V9q6019IMNZiXS;5Y3JRqD`RP^ zEZ#)2MnpU&|62OIEl?$ZDW~-4dcWmyI|W^OGsM7J9C5m8luLxP9^jm!me4Ps8K-@I zmB;&hP=;AOgOM|^F3q@9ICX^yoYW}#DwiLY|UJkB`HP@Pu%QF zfzEw*f9SGEc~%$p*=T3-x)xR$rQR2(Y&kdympxTh$omWZN_R{BbLQ2>%9uyj#>T$j zwyGY6$yJ#@H`~#dFym#YZgtJ^M|2=|q5i1M7T5_NxV^1T{`S$|bk;I)xvpFT8pf=I zK0|EY*0E(FSkJDfZfeBsm~_;QkjnX=V#D&rkDzm5@OQN0_%mT_zctzIZQapx`hU;-o|qH{uBlh}#bDpg8iXw-66TbaYQ z!qzMI7iHd@seJI}b!9xBe|$o@#Q)2f!GMD2oLFC0N^zpY;X z=ao_RUuP;1DWS2y?C+LU?76oyTQV^?@ofF#xfoG)MTMIFN27ZwE_Eq3em4fLXOidT z7us-LH)>+ND^2-vO~JtE`O-7%A!^6W^BDCCez)_V2VUV0gjxS2ho<+8u)9FsjwDeKEjuqBcvXiB;7{nx&2fw4ZNDhr-WTFO zO4OY@k#