From b19b5f39d8e093f3c453c083631ff123f3c41ba1 Mon Sep 17 00:00:00 2001 From: cheapie Date: Sat, 1 Jun 2019 16:50:42 -0500 Subject: [PATCH] Add timer --- README | 6 ++- init.lua | 1 + nic.lua | 1 + textures/digistuff_timer_top.png | Bin 0 -> 6301 bytes timer.lua | 80 +++++++++++++++++++++++++++++++ 5 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 textures/digistuff_timer_top.png create mode 100644 timer.lua diff --git a/README b/README index 0212160..824e50c 100644 --- a/README +++ b/README @@ -10,7 +10,7 @@ Textures WITH "adwaita" in the file name - These are icons by the GNOME Project, Depends: Required: digilines (base only) and mesecons (base only) -Only needed for craft recipes: default, mesecons_luacontroller, homedecor +Only needed for craft recipes: default, mesecons_luacontroller, basic_materials How to use digilines buttons: @@ -50,6 +50,10 @@ Every second while a player is within "radius" meters of that point, a table lis How to use the dimmable lights: After setting the channel, send a number from 0 to 14 to set the light level. + +How to use the timer: +Send a number representing a time in seconds, from 0.5 to 3600. When the time expires, the timer will send "done" back on the same channel. If the loop feature is enabled (use the commands "loop_on" and "loop_off" to set this) the timer will automatically be set for the same time again each time it expires. + How to use the junction box: These are just plain digilines conductors (like digimese) but can skip over one node to another junction box or certain other nodes. As in, [digiline][junction box][dirt][junction box][digiline] will work to transmit signals "through" the dirt. diff --git a/init.lua b/init.lua index dcf5e29..300a32c 100644 --- a/init.lua +++ b/init.lua @@ -12,6 +12,7 @@ local components = { "piezo", "detector", "piston", + "timer", } for _,name in ipairs(components) do dofile(string.format("%s%s%s.lua",minetest.get_modpath(minetest.get_current_modname()),DIR_DELIM,name)) diff --git a/nic.lua b/nic.lua index 8760bdf..50bf105 100644 --- a/nic.lua +++ b/nic.lua @@ -14,6 +14,7 @@ minetest.register_node("digistuff:nic", { "jeija_microcontroller_sides.png", "jeija_microcontroller_sides.png" }, + inventory_image = "digistuff_nic_top.png", drawtype = "nodebox", selection_box = { --From luacontroller diff --git a/textures/digistuff_timer_top.png b/textures/digistuff_timer_top.png new file mode 100644 index 0000000000000000000000000000000000000000..63bf5c0c383c916f1478c1c37ec82e84a29cec37 GIT binary patch literal 6301 zcmcgwcT`i^x4wi9N|B;;WE@mLuu>&K0Ria>D7^_vuY#071OXK#AfoipkrqHunh+2W zr1#K~-U+=VguIK+dh?w5jc?vRZ)IiOv(7zdpKpKr+xzU~nU;pqQ94dK0054vC@b6o z00=mQ05nwKWAjlD9suaxd+XeFzh&;p@9gSiZDVi6@9yPn#c%b<#u@+~4dzALyqb~@ zdqUb^b)#_n=E{w>b_T#@-5%R(=^T-hMmBAtdLHc_CX~`Rbd?W)y&U7n!Mv&v!2I@M^GjQ zf4Pw0H2YAYowzr%kE^a_c z&hj<^*X-%j{(h(218ed5_SfM!?~kr+r4cF?lE~koF{IC4P*hW9LH*SyD}*Zkv9)&R=deR^eUbp5a}F?thCBWL-Ux#C~Es|J+KhVY_!N zn_gm=Or_<;1{QzcmN6<)WV=k~C}(-wz&f6;;u96W^%+-ut1&RKy?k5hK$dTVO=6qA z9|&+AHtIJkBF3hK66*9MC8<|fxL#I%9+~#iM1AkqVKXvzMvf#B8=7>}J z&vk6hrbVAhe;w(n(|oc)L~1%-6KdI8f zIyAIX*!6i#USb*(qpb#O{5RnGGIJ1U;qyPgYmaDg2a<#t*9;d`2nLVPkCQkqp; zXT6b58lE>CiuK##MKY0gYl}NC+6~4pl7|lNOVxF6cpG$YVJ{O3SDR-#*N+67<|Xcy zd&w1#j?2ha&PMNWk3vt6OL5==?vdKr;QomiWSgu+X2a;Vy++ghitb{y_$*y)w1X8h zd8sj~gUN1VXg)vR)U4~nsj@eT$yoh^kDtRDI*2Dqj`|oMn9}JA{hH%7J7u@{(DQ{FC2DSkrX}o9EQaY$?8;rTar$ zMGmstHEM9r0y>-1T~bIXOI%pZ8;LB|#va+*$7|WY31h}{6DCaxdX;_h%Bfx4TTbwJ z_qzqF8~6#IPN&-3hU>h#-*IeE?&{3gxAAo z2TqnYBY!uNWV<6&A)_4X1&%s&QMZld5$?A`curwY z1;*P2z-UBPhbZLNZK-n=%MvSeR*&9#nAPuoHsPFP?n2L%Y%7k{2W{7GB=X(zq)sF6 zoPOz4C$6}@&EM>iB>tSE#^n-Uz1XX7MrmHtF(dYayzh<`v}7vJ&!$vA^t(Jio)IMm zUHTne9l08aJta4Vy{UXlgw}WAcX5Z#yIjP@&uX8E;}_n+UKGHW96#vYN@@$_5vBRf zoc9}Y&r%IUs~%s$j4VfO zI*Go;e$|XgR^AiTq{PyxV=~mn(A;P5JbPnaRMEA3gtk+??m<{_YsS);Yuy}M(`;Vu zgS7L)FADYME6r^StVD;EgBn|LY!nHxHx-{e#EU7PR}ryh-gZk`P;Iv#ISJPaI%*Rx z)8&wi)>Hm)+G;E;aii-Jr;CD6*bKl%cg%=tnz<)vipfI2;MRpS9d?;O0Vex0!7(3= zE3dDdF=Bo8Sa|l{dx4j)m6Y0SKjlPyp0H`|O1p>?p#8!v;(O77X~4N!BP)4aq1Eoy zgTae4$?%7s9tsmQn4VRqskfBT?p~Vm}*3c1yK(eKAF!j!xQ_v;T-DHJzUv(0znu zyu+O{o2HS?)+G8e#ILuHN9t-YJz&U!PJ9R5e8VFZThr6qZRf77^CVud^;1Gc`^~oP zCASZcnOx7EjjRS9ki9PZT{nu{xhA&uH5(^7ZhQ5}-TW}2yr98r^Y2sb@r@G^F&;xq zKyN;K7k?Vp;$2S4c$O}0d)d!IXO7MbTdv%7k3nmFve8bWK&iB-6(R2TsjVV)gyj~DU4ESP1NQ^}>CC$2za7T#t&M$tG|46QARP~+G) zfIG4#Xi+V&h%b%2eOi0PJL}U|G$neISCWifkX9zl*q!H5POXc1bPPv_Tj2->LR0VkSQe(r*r z%xRS1B&s6VTPTMYe)=-!i-;K(k@}?^tLGjt+j|Dfulw4?7rO=hrGqv<*f^n~6t6fB z?yFugnH{cl-P;#H1#7maRBghIJP4v4wIk|nN6tLos&Mo1DKlk{#eCQtFDq;A4JCCh zNgpeJ*-adiII%drTrk_tK&{XtgP<_ z0Q4+}Uos#z{scHl?XIG(NIgkK#>UAsj2v_T`(b+(g=;#G2A4;g9l7;+s>jhQ*_%hL zF0IM0iV|s*mo9Q>RzqIjOEgn}Ku+2RQ}Cu1Z3$@BkQd0kuM-HHs_L;~e;Q%_#VoVy z;7;!z^lR4x)}1UgdI6ts+fhaa26MXcxas{1ZokWMtvAlXNJKwAX+L9Z@}$_?W)qBG z77A7|g6`cxHcWObBY9!?{ZRHwQa&1Ofg;fW%3_Em2*3mY2oO320PuqkG60|f06B03 zw(!4x^{_jlzuD`j67ZiIgFwavkV1K>ARD?Zw($vHxI1Coo zYN3g^>U5`LvT!4_VOA4lc8HI75ND-7w>z}_5j*Q|$OrW;0IB+$#XqtAuSEU<>Ti7h zY2pv-@W{7T9OY!Xx;D1B$YZ3g3T@Lt*W;!JH9&rx=>fKMmFe8qZ z^!BfU!c5=l&h19dr}ge&e0@2~iDIKy9X$83%VDH3Zd4GIG@CypOR^ZnVM%)^aOA>F zI55O5cB~x_Rh-+6YZcrk!gld?pel}?`j;yG6X2iP{!erNQSZfXE8&EX&xR4xt{mm$ z9u>xOyBKNst4*>}qT!0jDgAD~JB3^wPpXJWKjI#rd;=&V_x*Yc^Z%o4D<_-^y9||- zlsq8gqN1Wp6chk)V-;}cDq&w;GeQ6AEsgsC_4u^IMXs*Pej4oJ4t%jxAu zVZAH2Cj!`h5Vg~E4w#GH@+MXe0dPYoj<6m0N}*6n;wzz2u-u z;s=F51{{I2RWI>YU=c#Zis1jVo~o!JthS7-qK5gO+;>hHDFZ0?Yvf98P7 z@q@w00*UN$T4ks0k*;G;nd40D#yiCN3X z;2dxJ!H`ko2;Gk)GMg*%KU{hk=(LN35<2jRxz2k3ca{(cP+I$=z5Z zLV!&L4dx-pOaR^&@|YitGe{9k^Yq5x`jmedd|E`(tPui^$U7dFGhkq*&*^PCO<7F` zobMU%pE|^HoW$TP4B%Tq6&J=?PoNeo>@yg_$cMEaR5-hQJVXG@F_!>lKoLp4^^=qL z@Zw}Xc9FE}31tTKz9Z$f*dC+wV+ZgJppnjcjPP;nkbR&bnHiX_bAxnp+N>%#M5}e= z=7#@vrdTTDwfp9w`W}3Vfx3t|S<;Nn+^+uW{4Acuhgb+6Mtck}+s2iF&_DvszAQ;S z{yqXaZbJhpc_uC05PxLeU+cddxXxxR6p>g5v=FaHl8$%7Yg!@l$_+h7_Ww@8xAD53=^e_ZrhZbWVv-To>R9!`_ z7q0lg(zc@yodY?qb}pp^c+91^z=U`w@5}vO3`v{iOb-CL0AL(v6ZZi^O^Xm|wvgb* z@<*6JpFP;6dhY**B7INc>Z5>-Wd zZRx&Mi2rY(2#}qhF1{rB^$eTq5=q(F9cv{+4s*K%_31Md*Y8F4OPOsFNQ51ne1oaz z+aDqRnY}-4$$?h?8V7`9^Kw8jeCusyjp6wAp!B1RvCzyWn;w&eb!g&e%82n=Upe(6;gyGR%DJq{dJ!jegH&M43^S21$ zd)ZJJ+JWSirQ`9(j5VzIAEf~1nZMKeBbk8ze1?brRqYo?^_>LDIHF^7RiA(DZrRHOchWwpE0)`e!@*{vQ5#jUm5tcr8nPU2j5lI6S-PZJNE{vUgc?@e83J=i+z`SMC1Oix?Q?Skaa zvw)h{8^eI5zr_Dy%qb%NihB0~K_X5)ABp+6P_BXB 0 + return loop + end, + digiline = + { + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + if meta:get_string("channel") ~= channel then return end + if msg == "loop_on" then + meta:set_int("loop",1) + elseif msg == "loop_off" then + meta:set_int("loop",0) + else + local time = tonumber(msg) + if time and time >= 0.5 and time <= 3600 then + local timer = minetest.get_node_timer(pos) + timer:start(time) + end + end + end + }, + }, + +}) +minetest.register_craft({ + output = "digistuff:timer 2", + recipe = { + {"","mesecons:wire_00000000_off","default:coal_lump"}, + {"digilines:wire_std_00000000","basic_materials:ic","mesecons:wire_00000000_off"}, + {"","mesecons:wire_00000000_off","default:paper"}, + } +})