From 78d183011ec5d33867e63e124e6c25785e5df14c Mon Sep 17 00:00:00 2001 From: Novatux Date: Wed, 16 Jan 2013 20:16:14 +0100 Subject: [PATCH] Added a function to register tubes. Added the mese pipe. --- autoplace.lua | 29 ++-- item_transport.lua | 9 +- textures/black.png | Bin 0 -> 150 bytes textures/blue.png | Bin 0 -> 160 bytes textures/green.png | Bin 0 -> 160 bytes textures/pipeworks_mese_tube_end.png | Bin 0 -> 2532 bytes textures/pipeworks_mese_tube_inv.png | Bin 0 -> 1212 bytes textures/pipeworks_mese_tube_noctr_1.png | Bin 0 -> 2063 bytes textures/pipeworks_mese_tube_noctr_2.png | Bin 0 -> 2011 bytes textures/pipeworks_mese_tube_noctr_3.png | Bin 0 -> 2055 bytes textures/pipeworks_mese_tube_noctr_4.png | Bin 0 -> 2056 bytes textures/pipeworks_mese_tube_noctr_5.png | Bin 0 -> 2059 bytes textures/pipeworks_mese_tube_noctr_6.png | Bin 0 -> 2056 bytes textures/pipeworks_mese_tube_plain_1.png | Bin 0 -> 2464 bytes textures/pipeworks_mese_tube_plain_2.png | Bin 0 -> 2468 bytes textures/pipeworks_mese_tube_plain_3.png | Bin 0 -> 2501 bytes textures/pipeworks_mese_tube_plain_4.png | Bin 0 -> 2484 bytes textures/pipeworks_mese_tube_plain_5.png | Bin 0 -> 2497 bytes textures/pipeworks_mese_tube_plain_6.png | Bin 0 -> 2499 bytes textures/pipeworks_mese_tube_short.png | Bin 0 -> 1209 bytes textures/red.png | Bin 0 -> 160 bytes textures/white.png | Bin 0 -> 160 bytes textures/yellow.png | Bin 0 -> 160 bytes tubes.lua | 166 ++++++++++++++++++----- 24 files changed, 161 insertions(+), 43 deletions(-) create mode 100644 textures/black.png create mode 100644 textures/blue.png create mode 100644 textures/green.png create mode 100644 textures/pipeworks_mese_tube_end.png create mode 100644 textures/pipeworks_mese_tube_inv.png create mode 100644 textures/pipeworks_mese_tube_noctr_1.png create mode 100644 textures/pipeworks_mese_tube_noctr_2.png create mode 100644 textures/pipeworks_mese_tube_noctr_3.png create mode 100644 textures/pipeworks_mese_tube_noctr_4.png create mode 100644 textures/pipeworks_mese_tube_noctr_5.png create mode 100644 textures/pipeworks_mese_tube_noctr_6.png create mode 100644 textures/pipeworks_mese_tube_plain_1.png create mode 100644 textures/pipeworks_mese_tube_plain_2.png create mode 100644 textures/pipeworks_mese_tube_plain_3.png create mode 100644 textures/pipeworks_mese_tube_plain_4.png create mode 100644 textures/pipeworks_mese_tube_plain_5.png create mode 100644 textures/pipeworks_mese_tube_plain_6.png create mode 100644 textures/pipeworks_mese_tube_short.png create mode 100644 textures/red.png create mode 100644 textures/white.png create mode 100644 textures/yellow.png diff --git a/autoplace.lua b/autoplace.lua index 6ff5b90..2b297f2 100644 --- a/autoplace.lua +++ b/autoplace.lua @@ -41,10 +41,21 @@ function tube_scanforobjects(pos) tube_autoroute(pos) end +function in_table(table,element) + for _,el in ipairs(table) do + if el==element then return true end + end + return false +end + +function is_tube(nodename) + return in_table(tubenodes,nodename) +end + function tube_autoroute(pos) nctr = minetest.env:get_node(pos) print ("minetest.get_item_group("..nctr.name..',"tubedevice") == '..minetest.get_item_group(nctr.name, "tubedevice")) - if (string.find(nctr.name, "pipeworks:tube_") == nil) + if (is_tube(nctr.name) == nil) and minetest.get_item_group(nctr.name, "tubedevice") ~= 1 then return end pxm=0 @@ -61,22 +72,22 @@ function tube_autoroute(pos) nzm = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z-1 }) nzp = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z+1 }) - if (string.find(nxm.name, "pipeworks:tube_") ~= nil) + if is_tube(nxm.name) or minetest.get_item_group(nxm.name, "tubedevice") == 1 then pxm=1 end - if (string.find(nxp.name, "pipeworks:tube_") ~= nil) + if is_tube(nxp.name) or minetest.get_item_group(nxp.name, "tubedevice") == 1 then pxp=1 end - if (string.find(nym.name, "pipeworks:tube_") ~= nil) + if is_tube(nym.name) or minetest.get_item_group(nym.name, "tubedevice") == 1 then pym=1 end - if (string.find(nyp.name, "pipeworks:tube_") ~= nil) + if is_tube(nyp.name) or minetest.get_item_group(nyp.name, "tubedevice") == 1 then pyp=1 end - if (string.find(nzm.name, "pipeworks:tube_") ~= nil) + if is_tube(nzm.name) or minetest.get_item_group(nzm.name, "tubedevice") == 1 then pzm=1 end - if (string.find(nzp.name, "pipeworks:tube_") ~= nil) + if is_tube(nzp.name) or minetest.get_item_group(nzp.name, "tubedevice") == 1 then pzp=1 end nsurround = pxm..pxp..pym..pyp..pzm..pzp - if minetest.get_item_group(nctr.name, "tubedevice") ~= 1 then - minetest.env:add_node(pos, { name = "pipeworks:tube_"..nsurround }) + if is_tube(nctr.name) then + minetest.env:add_node(pos, { name = string.sub(nctr.name,1,-7)..nsurround }) end end diff --git a/item_transport.lua b/item_transport.lua index 9f7f726..db057aa 100644 --- a/item_transport.lua +++ b/item_transport.lua @@ -269,6 +269,7 @@ function go_next(pos,velocity,stack) --print(dump(pos)) local chests={} local tubes={} + local cnode=minetest.env:get_node(pos) local cmeta=minetest.env:get_meta(pos) local node local meta @@ -276,7 +277,13 @@ function go_next(pos,velocity,stack) local tube_receiver local len=1 local n - for _,vect in ipairs(adjlist) do + local can_go + if minetest.registered_nodes[cnode.name].tube and minetest.registered_nodes[cnode.name].tube.can_go then + can_go=minetest.registered_nodes[cnode.name].tube.can_go(pos,node,velocity,stack) + else + can_go=adjlist + end + for _,vect in ipairs(can_go) do if vect.x~=-velocity.x or vect.y~=-velocity.y or vect.z~=-velocity.z then npos=addVect(pos,vect) node=minetest.env:get_node(npos) diff --git a/textures/black.png b/textures/black.png new file mode 100644 index 0000000000000000000000000000000000000000..9e58d8c20ec07462d6d445f6d57d2fc5d5fbc9e9 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E~9`jyH3s*8=yRcWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyvF pfTxRNh{pNk1PRu~2_gp=7?=eZ7&9j39tO%Wc)I$ztaD0e0sx!TA>9A~ literal 0 HcmV?d00001 diff --git a/textures/blue.png b/textures/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..aa346d453783027036b2469e26198d3abd487292 GIT binary patch literal 160 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 literal 0 HcmV?d00001 diff --git a/textures/pipeworks_mese_tube_noctr_2.png b/textures/pipeworks_mese_tube_noctr_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c73b2d9ee704855acb33d46460cef6adc0cbd058 GIT binary patch literal 2011 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

879)yKXn&&|{80 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 literal 0 HcmV?d00001 diff --git a/textures/pipeworks_mese_tube_plain_3.png b/textures/pipeworks_mese_tube_plain_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f315ea28a5f5d3070cbe0c5b2d92e7bcc9a213b8 GIT binary patch literal 2501 zcmV;$2|D(PP)*+>QpExU%?d<_0P!alm6|SEQBtx9 zO&UOLLlCGXm0C!VV1*D=fgpiY(PY_0m!L|h6dFR)%w)zh;~CrI@w|8MVR5gY$MJji zvlENFw@Suup5Hz9obPMdVW9vN+41oE~GC2Mpx`2D1N6^ zW?$cDh^axuhnN(W0DB7vTK@!K;uolE0|L+hWC!fcr!N4aH{fMI45K$=?YE=U>V%%eJM4)t4t22vkd~CMIxQ?^DiVLD~X9T!0B~hPzo`xiH-Ct0{=7VcgdkOTd6A z2hiZJXoFri4gR+)AGSDYGY2n!rLxP=ur4R$e2dn8W z5+i0kwjI`%&qo9?4>66gmcsamkeY-EmSIdi(bvT>Mu7k{F~(jsHY!|)KwBJWx4ij2 z3Xrl9S=1cZM(<$|4D7DTPD1}+DF#PcT|rDy02r($!QMimyC)ZZh}z0eZ;QYLSe4Vs z0{{aN4IM1r0g`Tqv^t$s*wm~qknk$ao$OJAMz5t51MbG|QPy>b@nrz5{r79aYQ~Y4 zd`E`r^^UIJc@IPcl{pBbs{lL@sSvq|lqF2Lr zB+7%md9bCK9+bBakZlktm|)q87@C05Re0G$U{!|En;7pe^6DTw$` zxsTWdkO$5zfYpo(09%se7BA8aMUw?Q50D**X*p-fIA5Rv6D+yFH39OV{rBxX?p*-} zaUmp61OibG+P@ZZ5?19-P#YU>3iP`nV^f&}&WdVPTKmw533(@Nk zQ?olp>~_qcRlf@6BC>@~0mKl~3~SoUKG?C$xC9d{gVhX#4}ozDM%Qf{i z6O+f>#^l}N7_4SGe1T_S{P#d=FN|J;^5%9?ogh-Gi)p~Ce*SY^AMO3qD_H-+6L(x& zrQbgR9V|izizv=MHqua|x%s*nQwLEFpFa8V$b0_!>@RWTnMd9KK6>XMIEn{9b?FC@ zP7hHY%#%Hz)hjPc(oWJ=gz>U_c#?GW{Ga0kP(AuxOkFyA=k0}yAkIflh7yY#*|NY# zD)yF#Pk#$K49rJnj_H6339mitqbncB4| z*@4l6JJZ9bzu6~~dO`HzGmng}1vbC*lb)Kt{qnc}0TV321QoZl7ZSC;!t8OXEuWKi zw=iZavXu^Vedc>dapn2nMrZoeAD$ac?D{wQBePfT>J9>(ygt>ed&Yh!Z>|gEuKwuq zhDA~}RF9s(^yL?aU;coJ zt@8F+tzcTak#gwHBH}}3?(ZP}(_bE%_}IY7-Sq=Dj-835z#S^QXvbsO`+Gft#I33T z;(U)^IEqbvpCYb?@&@t17I z5hKtGVEMa~^f?$^3As(%ydf@uHkVF|(bZ5N6Bj^G&PmCK0K{AbsaXWAw>v70JP_qO zfin#|$bbR!BsjAle)Df2B7i19lyeJk8P}fsQ#SMZu^y0U^MTv1M&+f1 zy}JdYt3&Jk;iea3x{O`}#6)WKq{rS^O+$HeT@FraGJsVXDzgv9^d6JTPk$AS)n6n? zqdgY<5*(|&=K>(61|6(KmOxV1$plNb3#oGYO5kpcw22EKHFakL*8f)q7_;d{R6&d- zb{vh$&w75owf^gFmq~(jo)2K2bhXPvef@5^OQhV`Z6kdpV06VXv-t6Lq5SQETta0J zLv%5H8PHa9gDmaH(pY;n^bhpTbw`g=M}(#Tc+kNIiHT1qeYO+H?R&fpHb9&Qt9kT0 zF&+hkoif^VC&g0816WPF^8(W-l)ux3?p=Y3;Q4KA5Yw>oIp%=nz1;?N1x8mwDr_Zp zgaKMUfyU}9u{=ObbF4&YtW>yjXaao?OT~}m1AF4sY^JaaP}ZIGZw_vGF@F)l-h5aF zspJ8c!40;;r_wGF`?)95-{hs~o z#3JvlM&mor@1A$gcfRjCcL)=@wpY#w;6eF^Fum~fSohf3ehcl!y8wW>Lzih1&&iVt zfC;M*X@k`K*!R$#8}EQ1Y8r{(*t_ z5L1Up05KUX0rvJIY<~d2ByUjHhXkMrNC)gKXDy3Y6d1;g)xm(Uzfxf1p?621bfxQsBi-UZE>L6@|J!upk{J0 zS=1WZMjv1h4DDN$PD=k^B>_j;JweP+02r)hz~25;tIPXdL8JQfPefn}tSZ^$0f2#s zh7RxC1Cs7Uv^twq*wn2rkn$>3p6^qGMsH*k1MbJ$qnzswlgj|w`0o?KYQd3~!mbR} zo4dNc^B)iqlz$jT*8q4RQW0_!DckQU2NT|o+#E<~*GLCCxCQq2M}Q_0fVl*b_MZEB zfP@zKxa^c9N7+DJ1aTQUxCx>>h%CcM{y#dqF_tgS~?gy&gRyQ332N zgDuVUta&LrAW|^lsueLb1*2>5a!0_b0;9JtHS+SNsA%3^A>!roG%FyOtT3VZv3gS^)d@Eg9XgZIp`$?!E_O8km|n;a*I^ zZH~ceA>s?H7N9#fKx*E((Mx-%P8ciI#Wdlqf8}`3NAqv}5}RLr=ALV-{KsdY!#mL7 z9h4SNjy2S1ZNDSNG(eQc7f*jKcFkXY^jjQzxjT4y^xi>m91ni>>MOBM4^aWkGcoG# zvZNDKDpG{WvU_xrbp68H$pNSxe;%_}&)s`_;Sz`ov6G>+;zo?c1|pTX=J7M%#=Eb+ zJ{m&_SBJF0QN>3rj}M%#ztLYF%P&xK{WmGHAcUCq&{o>Tg7j`xYghnAqX%0jUc&63 zFZ4M=kPz%u5>3kii&G0LXLgE&2NLnJ1$SrMK(~gPGu7Yq}rw&J9efNXbDGM`K;R&{WWYgFvURPqpaoaS+N|>H)dyKY4S^z8v4#c>Jl$ z@Z_;>uW{-A95vRjq{@OWbL{eky(KpoQwD+bdi*YG$4_DI&5NUNf5^mEc?YakFzvla zIdW$a384Ikb`k%jZ;VWQY~bYn`T<)f&c;&UT`GLXj>mEj^?L-VTU8Ong+9M<9Gm>u z%TMF_g?HiuFzx|_VaHsE@;&^Zv~+4DQDkQV?LMZ-{*f`upr5NyWBrO)!Qt5rNe3bt z{?uoogIhfS)b#*}@*p+qfRF)V5cyW}iUx5W!QJ;DqLC|p9^uaW@C%OuH0|2jhNG`0 z((WQU`aN;ko(T|xcJn%j3dl`A7Rg?b047|u(%renB5jyp#bz8anCB37K5&vg52LFQ zx9OTU#AVR-${8`b7U^T+A_&SkDTN4tm`fnFh_L;>b8visJP;Lj1816ckO2ec8L)p4 zLF;cIB7mkqly@6&8P}crQ!er#l()|rFGXvFxEEjznT@DwS(TjP%)`q)0v&t^9o&S< zJq$5z=TQ`$LsWCmn~Rt!`vdDOkpDG(^~_PfTW?)(GFKMds`0DF}^ zBE+~>Cy@gq51a^ngT{5A+M3*HZTGHjJ)~toKKoUQFmR zdIJy>tJTvUdt)^R@(O-7?yCC&e7p4G=YJKrIJVTp*?YGwlmlTDCf@lw}!X8g#QR(Z#gQ1O!5HB;D%e_N&j7Hg4-~r z;oPaLwLvPRrm&^Olc=v=NbnTQNK>T;M+|WxGFeltkI4e-=oTi*2PRkoHS5f#Jndat yJQ;hBuHBwNIa~mHC3oa)Ofn@cH}{_$R{swtnR!hfzxs{<0000Y{D{ literal 0 HcmV?d00001 diff --git a/textures/pipeworks_mese_tube_plain_5.png b/textures/pipeworks_mese_tube_plain_5.png new file mode 100644 index 0000000000000000000000000000000000000000..885300bd31606d9fdab78282d14dc592754b3345 GIT binary patch literal 2497 zcmV;y2|o6TP)F4Wa8L>qQpkxGoMJ25aD4=5__}W$L!9`&dzjKT|TO&cgNE` zFMEW$zwDjbo~m2-o_o%zTEd8)wfPeQcu@Xsd|~xhL%riqGv7g@`W66Sa`!7Vih1&= z0$`#=h%`WIYUp?9=2iO-iAFWe(FK70y)b$i%G;Uv`Gw%qJ>NlU21I#?)Uy`=9bNA(X%m5w-CJvF$x5ru@UyFkx}6)1lr<2tL0TM zb*Y(LLKf9~w$Zy71S7kv((Kbem`}lxMq3aw6aWUR39z@Luh9qBFXLkIky|1#23E7# z>lM@cNkp;(DHx3BCMtz zX$dxEs9xFB_04~Sh@kvEFuDxD1Cff6n@HJyPdS+AdhF&vB0EN!(BTJQe@6^xA|aT^ zA=23LJ`a${0v{KhlH@oWhzlStLWkEtln0UTtThiNng^*8hn9O8yKH?VyHun`q~>}Ocg|VeD>%k6UV&y!(U+kvyZ#~-GBQaIE)8hI{*Ddr-vv2 z^F+sI)x}q&KS8BpMVKzT2Pa8a&io-g0Odp9M(O;i+ix#C4&os3WT;=F^7(R+F2fR$EmjT^FFd5f|y3nR@%aX{@tp2uK)~2 z4^|I9gVJkfIvgQL1omcAP1D|js_Z&b&|^V^QRV%op2X$TucilJ^^xN!zIt@9sOpvE ziKU34!t`TQx%rZG$AADJ&$YMo=kq7N8ZW4S%P#271h-n#ouGHBYg)xh4w8B_*3t_d z0D1FeY0DyTUqEL$Me=j`^!ZdA@Y2)zWS1}N>=czFKkcYrR+H%^0HC=2C?%PxZHtm7 zjPBi;9z5}A*KX1={^VoBYk{>d{kWs%Z+*gzzrjTFFwvsh*`M^)`U*2&r^>=|)@ z))QOlAkXK%dkB|b_-%5gmwx~JaAG%nzdJH}vu)i$p!=^+HRIl~3(DKx269(kyf9>6 zPVQ_x{HaUtzWHuzKtJ@Z-06qQDn~q8XZiN{k=n$K_^$C>e5-U zg2S^5lBT_v<9z}o|7ioDmIpwT2dR<+LI#LIu*CuBUktoqK$Xp2loTC z&9${-9>c#bK;`C6CehS+7%E5$ZdNdmc1e&OtfI7yK{|28ZhC!%{XE(Pam+?1MlZ(Pre)p`7eQ&2{>eDT-8i+uIzR%wzzoStx%ejOn~47ewDcjb7{{jka0v z>*HGOT^9f`73k<@>SgJETqhIF+b*PLvsVIl;z*mg08*vfJ7E2PWq>hj?uaV6*bC+u zYWQBq&)3yU?Jko<*}NaXJmG4W2m1Q0a+gTCW4G1pm4MNUj+vz&Zx<3W;8rf7a{C~9 zJbM|?Qggj5?ZndHAI1KGZeDZrICDg(1i*uiKIohHY^KjfUvm2{Z-X@u2VgaaZa2nj zUCO}dHFr}igFJxMq`NOLi2|N$L-)2oCGh+fHi)TN`J8gW^6qYfdJ#r1##Go!?gRrA zKR}IMNaX=y>LVpWBc;NdmnP8lvQ+w!d}ME&nzame0m`|%{`KB1FXb;n*qe*XAd@`6 zGPvGWIH{?`VJ5r|W2(-b%32$wpl=FWFvn1p<0+nk8R%5$?h!*A#3pM$^H0hG>*xj} zZB4)u6KTxFcW00000 LNkvXXu0mjfY-X;R literal 0 HcmV?d00001 diff --git a/textures/pipeworks_mese_tube_plain_6.png b/textures/pipeworks_mese_tube_plain_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3d13ef967b063d845b1d36ca506d37ca4d8ea475 GIT binary patch literal 2499 zcmV;!2|V_RP)Q`}I)IcyH!8G^&3A08H+BgGRAV9#sHL zxD1g7NKFm>483{9{zJl1Epv1M;LIKvy#g(JW4}M^f4S!~NX>vK2a$UE0-%GdU@pMp zYw??7zjpxGhlmF8L<%#23jk#y62yN0MC}6pn18HC0E!?|AkL>R07fs{O;GZiR+$}L zpCP6KkpN;+SOV}ue=kJ`gMmRCFt;G zIzdoO1uC<5sKp;F{}$(qNA2HJ&SF8@0zjOH39mV1KVBAf|#*Un4951EL&2 zy?>$!dhIm$->!Vv;y~&$fN~HCA`CcKc?;*qzY%{gR3}kde?P*IaPwa&!~hAvYO;;Q zh*?c+hvy0hV}j^IOl_p4FghZn#$m!G7*p-*=aLwsKmZyWVXqn)6|O>{Ee z0AL`Zp~D+@futJ|txhKuHWlj&^m#pAIn$vAjb2G92HcCcM_Jb$MwbD!^53U~)wClm zeoKbx)t0W`{1`+8mDvrWO8`6&sR+4=l9>hiH;3|l6Aj&vv&4URSL23d-87IMweHH{n8L+n#qHjlQ zB=W)D9N5xK56asC$OecMOt@r442{9)61?mlu$qO@We^v^o(mZJQLRVjg_;HN1VjR; z+~@5E$OC8Q!D`wCfGtUKn-{4^qR9fD2goMGG@P?!oG(y=2^U@9>HvAr!6)_}w^o2b zoR7#8fk2dl4z5I;gw<>-sI|4f3iL-2V^f)3&WdV8o}AHDh+YM$qT}~jKthn3g6LI< zsn|D0?B19`qk0L<1!VJI0f-@{9@Vs$eW+!baSSs?FUEJ9W3ZZT@dciN2|fm?DHy#1>ivXO`iQ(asc)nJAjKP-n{$v!UYifv6G>`#f_|6;3JiI zOZo5#jQ?R_FoqH?^=N~GijP8 zJ=p*JVO)IWOot-`3BlfMqG{S&P?cO~@_TG(FsfWR`U_0F`;+7V?Ek?bTzL6cgGE)Z z#xE>E4CSZ4NtIi#Nq1Al2gq~nE%{nId_3Av|CXKKoe6HWraM9J&8}$`DLF{uXsoFh zIso$4&!sJkzmyx$tg};m?T62F)Gw>ac?BE)fC(32!e#enU+=5+=wqX$F|ZzuF|0eOuX~s_)Nce^6lZoZg8zTGJCUa-9e!HuTM4Op0N|k+ujCplV?s1 z*_Y!x8xKEq>76{*?KLjlzfaZMr~Ar+CUb1^g{>vm9aFl2^zHav>^t@tF8%bq!MERI zVynCzRx6msR-_!bvxo#xnFm^k|Ky7U6CWEmxwn46{^yUxQs5R9zG25>*#|m3g1%c- z9>ji!UpS0SUODnACeOYeAAn&GAoM!sLX>Oc2Zin58%Pw{nLwk1X>w-IkY&)xRj7LV zv{=F6*$v4iL^J|?5jpi?8vr#u0HPcWW_0w86G=;(9eqCFEJ294S!5c$Y%djukNG|d|mE?MdBTw{?2Ot5G( zju@ey2g~1`q|d?V<%ruf%^Tt(sJ!@s7+s3=F>xLQ<(w2h0wCrBNX;N@TyCi}@<8Ob z0%vM=kO2ecad2iQg8JV;L;#I}DCaidGOjuIr)=awDDN}Qc*$EM#JvD($gD(F%c|fM zXAWNWA?V-}=-?_;_CbhgIFBOl9HNq2Z#H74oY`r82oo+t2RC4ckbB)59Rqdgnx*vS0`_0sRbybY6|J)N$TqD{5eJ{ueqwAQS52pQQjM|wb_$p`MdYIv#7 z-ra!FrGfSSVAG2cT}H0}Vq&#Advl#WWr8AA-u5;JCp8(sY8EQ91IBb7lk>yxphmCs zkw)7r`1NtD_Pz^%mWI(;01rC+v~S|mN}r9sRJe6$0$mSFC6DAod*alTQ`iM4>(2Vud$+uV{}IC8TvP_B zfEWcwL$Xxrm%UlfT|oz@D$8IQ>FVy46z@Xto^J%E(@%q z>yMNVjIabs)|u_|w0GVt#6F{Gx2I4J`(Ur&j=T*?rljuX{-eX{{{db;b|($JW{>~? N002ovPDHLkV1lz}regpA literal 0 HcmV?d00001 diff --git a/textures/pipeworks_mese_tube_short.png b/textures/pipeworks_mese_tube_short.png new file mode 100644 index 0000000000000000000000000000000000000000..1851dcff0b985ec634b6f0bf291678fed3fefce4 GIT binary patch literal 1209 zcmV;q1V;ObP)3mdj+HnLA*4ym1qmv|g%jU{uYr0%;(#hu2vrqQg%Ec>0}|rO zrvUBwGRmPcZnVEdpkQj^PioCL?V$$Boc{4B9TZW z5{X12kx2Z1kXZw|kG^tH+hIy<49VKyC1AJ>5M8hSHgFrn|9e2BhI@fX1NR{!wQ6i1(8>ml^ZE!VvGN4X zciG&#cjX#&wu{!{VgSvy2<0In4Xk_wfcp^q9FZpYIToHpV`L4;QQg3;hvs|aYagN6 zRve3A#Q~u>Bos#=YjJVf#NBZ(u=1pu+YrfsviiNC9Q`?YCOV}tG1)>F&G&FGW-c$E zHNe9uwdN;?HYbh%trlKZyEp==!zf2)uh%~YA1kJYM_u7r;JFe?h#9d(Jakb$egXD;|2*rbFl{Csfu138#skhqHy>6YKnPg8KS*AI!Bpoi9}FrTiL96{AIs+`M*2 zmW`y>&hO=FBEUii&9+|(xo;O1vEJkF<{H1Tb4$99?kpVzn(s~3hBwfF&8cNjbkWkc zzLcszKSO*umvh{QAo&VXKwDGu+r#NX4%pcFOu9$k%w_!M-d$N%w%q!2oj2w<2lS>! zz?G##?!UX1hzM&1E0?1?Qa~9UoPTRz#zyU37o(@r8t256yNcM}JhWE)i|T z9=^KZh?gtzvuG2|_a-fFY=^h;@D$13nzX>B=G4!iXz2ER^1FP22b$^%5(l;v-iZf9~NYvI<%%472SO)NaY%9Bcv47Wa6{R7;d z5{g4K+lnVmA0gS>xb^VRgYq$BhmRdQcAACGw%$~Y=C z+X5L!o`ETDCoy_z`?w8J-NM3?s8yoihP$t{>r5mPi9{liNF)-8L?V$$Boc|le}R7h Xd88R64>0n>00000NkvXXu0mjf&2>l5 literal 0 HcmV?d00001 diff --git a/textures/red.png b/textures/red.png new file mode 100644 index 0000000000000000000000000000000000000000..1275e5df68d1844cd621cf488b5c39e499654503 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E~9`jyG5Da3qGKbWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyvF zl&6bhh{pNknk@Ab4qORI3W7aZ5?2jMOc)p*zGMu!e}G33sEWbU)z4*}Q$iB}9t|d? literal 0 HcmV?d00001 diff --git a/textures/white.png b/textures/white.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8340355b972e7c8ef65f987a974b1712b2d968 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E~9`jyHdB0U!MP|ku_QG`p**uBL&4qCHz2%`PaLR7 z%G1R$MB{w&pa1{unKc_a8(j=mC59ZnaFKx_G?!U+zMkkJpehDWS3j3^P6{XE z)7O>#E~9`jhv=5f6S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw zQl2i3AsXkC|NM_?XcRec#6d~os==zn7a0r;_N+`&o10d+097$~y85}Sb4q9e0HUBM A^8f$< literal 0 HcmV?d00001 diff --git a/tubes.lua b/tubes.lua index a22c8a9..d788493 100644 --- a/tubes.lua +++ b/tubes.lua @@ -17,6 +17,8 @@ minetest.register_node("pipeworks:testobject", { end, }) +tubenodes={} + -- tables minetest.register_alias("pipeworks:tube", "pipeworks:tube_000000") @@ -64,7 +66,7 @@ function tube_addbox(t, b) end -- now define the nodes! - +function register_tube(name,desc,plain_textures,noctr_textures,end_textures,short_texture,inv_texture,special) for xm = 0, 1 do for xp = 0, 1 do for ym = 0, 1 do @@ -78,44 +80,44 @@ for zp = 0, 1 do if yp==1 then tube_addbox(outboxes, tube_topstub) table.insert(outsel, tube_selectboxes[4]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[4]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[4]) end if ym==1 then tube_addbox(outboxes, tube_bottomstub) table.insert(outsel, tube_selectboxes[3]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[3]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[3]) end if xp==1 then tube_addbox(outboxes, tube_rightstub) table.insert(outsel, tube_selectboxes[2]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[2]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[2]) end if xm==1 then tube_addbox(outboxes, tube_leftstub) table.insert(outsel, tube_selectboxes[1]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[1]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[1]) end if zp==1 then tube_addbox(outboxes, tube_backstub) table.insert(outsel, tube_selectboxes[6]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[6]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[6]) end if zm==1 then tube_addbox(outboxes, tube_frontstub) table.insert(outsel, tube_selectboxes[5]) - table.insert(outimgs, "pipeworks_tube_noctr.png") + table.insert(outimgs, noctr_textures[5]) else - table.insert(outimgs, "pipeworks_tube_plain.png") + table.insert(outimgs, plain_textures[5]) end local jx = xp+xm @@ -125,27 +127,27 @@ for zp = 0, 1 do if (jx+jy+jz) == 1 then if xm == 1 then table.remove(outimgs, 3) - table.insert(outimgs, 3, "pipeworks_tube_end.png") + table.insert(outimgs, 3, end_textures[3]) end if xp == 1 then table.remove(outimgs, 4) - table.insert(outimgs, 4, "pipeworks_tube_end.png") + table.insert(outimgs, 4, end_textures[4]) end if ym == 1 then table.remove(outimgs, 1) - table.insert(outimgs, 1, "pipeworks_tube_end.png") + table.insert(outimgs, 1, end_textures[1]) end if xp == 1 then table.remove(outimgs, 2) - table.insert(outimgs, 2, "pipeworks_tube_end.png") + table.insert(outimgs, 2, end_textures[2]) end if zm == 1 then table.remove(outimgs, 5) - table.insert(outimgs, 5, "pipeworks_tube_end.png") + table.insert(outimgs, 5, end_textures[5]) end if zp == 1 then table.remove(outimgs, 6) - table.insert(outimgs, 6, "pipeworks_tube_end.png") + table.insert(outimgs, 6, end_textures[6]) end end @@ -154,27 +156,26 @@ for zp = 0, 1 do if tname ~= "000000" then tgroups = {snappy=3, tube=1, not_in_creative_inventory=1} - tubedesc = "Pneumatic tube segment ("..tname..")... You hacker, you." + tubedesc = desc.." ("..tname..")... You hacker, you." iimg=nil wscale = {x=1,y=1,z=1} else tgroups = {snappy=3, tube=1} - tubedesc = "Pneumatic tube segment" - iimg="pipeworks_tube_inv.png" + tubedesc = desc + iimg=inv_texture outimgs = { - "pipeworks_tube_short.png", - "pipeworks_tube_short.png", - "pipeworks_tube_end.png", - "pipeworks_tube_end.png", - "pipeworks_tube_short.png", - "pipeworks_tube_short.png" + short_texture,short_texture, + end_textures[3],end_textures[4], + short_texture,short_texture } outboxes = { -24/64, -9/64, -9/64, 24/64, 9/64, 9/64 } outsel = { -24/64, -10/64, -10/64, 24/64, 10/64, 10/64 } wscale = {x=1,y=1,z=0.01} end - minetest.register_node("pipeworks:tube_"..tname, { + table.insert(tubenodes,name.."_"..tname) + + nodedef={ description = tubedesc, drawtype = "nodebox", tiles = outimgs, @@ -194,19 +195,39 @@ for zp = 0, 1 do sounds = default.node_sound_wood_defaults(), walkable = true, stack_max = 99, - drop = "pipeworks:tube_000000", + drop = name.."_000000", tubelike=1, on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - meta:set_int("tubelike",1) + local meta = minetest.env:get_meta(pos) + meta:set_int("tubelike",1) + if minetest.registered_nodes[name.."_"..tname].on_construct_ then + minetest.registered_nodes[name.."_"..tname].on_construct_(pos) + end end, after_place_node = function(pos) tube_scanforobjects(pos) + if minetest.registered_nodes[name.."_"..tname].after_place_node_ then + minetest.registered_nodes[name.."_"..tname].after_place_node_(pos) + end end, after_dig_node = function(pos) tube_scanforobjects(pos) + if minetest.registered_nodes[name.."_"..tname].after_dig_node_ then + minetest.registered_nodes[name.."_"..tname].after_dig_node_(pos) + end end - }) + } + + if special==nil then special={} end + + for key,value in pairs(special) do + if key=="on_construct" or key=="after_dig_node" or key=="after_place_node" then + key=key.."_" + end + nodedef[key]=value + end + + minetest.register_node(name.."_"..tname, nodedef) end end @@ -214,4 +235,83 @@ end end end end +end + +noctr_textures={"pipeworks_tube_noctr.png","pipeworks_tube_noctr.png","pipeworks_tube_noctr.png", + "pipeworks_tube_noctr.png","pipeworks_tube_noctr.png","pipeworks_tube_noctr.png"} +plain_textures={"pipeworks_tube_plain.png","pipeworks_tube_plain.png","pipeworks_tube_plain.png", + "pipeworks_tube_plain.png","pipeworks_tube_plain.png","pipeworks_tube_plain.png"} +end_textures={"pipeworks_tube_end.png","pipeworks_tube_end.png","pipeworks_tube_end.png", + "pipeworks_tube_end.png","pipeworks_tube_end.png","pipeworks_tube_end.png"} +short_texture="pipeworks_tube_short.png" +inv_texture="pipeworks_tube_inv.png" +register_tube("pipeworks:tube","Pneumatic tube segment",plain_textures,noctr_textures,end_textures,short_texture,inv_texture) + +mese_noctr_textures={"pipeworks_mese_tube_noctr_1.png","pipeworks_mese_tube_noctr_2.png","pipeworks_mese_tube_noctr_3.png", + "pipeworks_mese_tube_noctr_4.png","pipeworks_mese_tube_noctr_5.png","pipeworks_mese_tube_noctr_6.png"} + +mese_plain_textures={"pipeworks_mese_tube_plain_1.png","pipeworks_mese_tube_plain_2.png","pipeworks_mese_tube_plain_3.png", + "pipeworks_mese_tube_plain_4.png","pipeworks_mese_tube_plain_5.png","pipeworks_mese_tube_plain_6.png"} +mese_end_textures={"pipeworks_mese_tube_end.png","pipeworks_mese_tube_end.png","pipeworks_mese_tube_end.png", + "pipeworks_mese_tube_end.png","pipeworks_mese_tube_end.png","pipeworks_mese_tube_end.png"} +mese_short_texture="pipeworks_mese_tube_short.png" +mese_inv_texture="pipeworks_mese_tube_inv.png" + + +meseadjlist={{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=0,y=1,z=0},{x=0,y=-1,z=0},{x=1,y=0,z=0},{x=-1,y=0,z=0}} + +register_tube("pipeworks:mese_tube","Mese pneumatic tube segment",mese_plain_textures,mese_noctr_textures, + mese_end_textures,mese_short_texture,mese_inv_texture, + {tube={can_go=function(pos,node,velocity,stack) + tbl={} + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + local found=false + local name=stack:get_name() + for i,vect in ipairs(meseadjlist) do + for _,st in ipairs(inv:get_list("line"..tostring(i))) do + if st:get_name()==name then + found=true + table.insert(tbl,vect) + end + end + end + if found==false then + for i,vect in ipairs(meseadjlist) do + if inv:is_empty("line"..tostring(i)) then + table.insert(tbl,vect) + end + end + end + return tbl + end}, + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("formspec", + "size[8,11]".. + "list[current_name;line1;1,0;7,1;]".. + "list[current_name;line2;1,1;7,1;]".. + "list[current_name;line3;1,2;7,1;]".. + "list[current_name;line4;1,3;7,1;]".. + "list[current_name;line5;1,4;7,1;]".. + "list[current_name;line6;1,5;7,1;]".. + "image[0,0;1,1;white.png]".. + "image[0,1;1,1;black.png]".. + "image[0,2;1,1;green.png]".. + "image[0,3;1,1;yellow.png]".. + "image[0,4;1,1;blue.png]".. + "image[0,5;1,1;red.png]".. + "list[current_player;main;0,7;8,4;]") + meta:set_string("infotext", "Mese pneumatic tube") + local inv = meta:get_inventory() + for i=1,6 do + inv:set_size("line"..tostring(i), 7*1) + end + end, + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + return (inv:is_empty("line1") and inv:is_empty("line2") and inv:is_empty("line3") and + inv:is_empty("line4") and inv:is_empty("line5") and inv:is_empty("line6")) + end}) -- 2.30.2