From c57d9a9d181e1ef9127efde5d19f603d05beb046 Mon Sep 17 00:00:00 2001 From: Slava Zanko Date: Sun, 4 Feb 2024 22:41:46 +0100 Subject: [PATCH] Add "Tags Sorting Pneumatic Tube Segment". Signed-off-by: Slava Zanko --- crafts.lua | 11 ++ default_settings.lua | 1 + init.lua | 1 + textures/pipeworks_tag_tube.png | Bin 0 -> 1116 bytes textures/pipeworks_tag_tube_end.png | Bin 0 -> 875 bytes textures/pipeworks_tag_tube_inv.png | Bin 0 -> 496 bytes textures/pipeworks_tag_tube_noctr.png | Bin 0 -> 1116 bytes textures/pipeworks_tag_tube_noctr_1.png | Bin 0 -> 768 bytes textures/pipeworks_tag_tube_noctr_2.png | Bin 0 -> 744 bytes textures/pipeworks_tag_tube_noctr_3.png | Bin 0 -> 743 bytes textures/pipeworks_tag_tube_noctr_4.png | Bin 0 -> 747 bytes textures/pipeworks_tag_tube_noctr_5.png | Bin 0 -> 769 bytes textures/pipeworks_tag_tube_noctr_6.png | Bin 0 -> 753 bytes textures/pipeworks_tag_tube_plain_1.png | Bin 0 -> 864 bytes textures/pipeworks_tag_tube_plain_2.png | Bin 0 -> 865 bytes textures/pipeworks_tag_tube_plain_3.png | Bin 0 -> 863 bytes textures/pipeworks_tag_tube_plain_4.png | Bin 0 -> 864 bytes textures/pipeworks_tag_tube_plain_5.png | Bin 0 -> 871 bytes textures/pipeworks_tag_tube_plain_6.png | Bin 0 -> 860 bytes textures/pipeworks_tag_tube_short.png | Bin 0 -> 457 bytes tubes/tags.lua | 146 ++++++++++++++++++++++++ 21 files changed, 159 insertions(+) create mode 100644 textures/pipeworks_tag_tube.png create mode 100644 textures/pipeworks_tag_tube_end.png create mode 100644 textures/pipeworks_tag_tube_inv.png create mode 100644 textures/pipeworks_tag_tube_noctr.png create mode 100644 textures/pipeworks_tag_tube_noctr_1.png create mode 100644 textures/pipeworks_tag_tube_noctr_2.png create mode 100644 textures/pipeworks_tag_tube_noctr_3.png create mode 100644 textures/pipeworks_tag_tube_noctr_4.png create mode 100644 textures/pipeworks_tag_tube_noctr_5.png create mode 100644 textures/pipeworks_tag_tube_noctr_6.png create mode 100644 textures/pipeworks_tag_tube_plain_1.png create mode 100644 textures/pipeworks_tag_tube_plain_2.png create mode 100644 textures/pipeworks_tag_tube_plain_3.png create mode 100644 textures/pipeworks_tag_tube_plain_4.png create mode 100644 textures/pipeworks_tag_tube_plain_5.png create mode 100644 textures/pipeworks_tag_tube_plain_6.png create mode 100644 textures/pipeworks_tag_tube_short.png create mode 100644 tubes/tags.lua diff --git a/crafts.lua b/crafts.lua index 7ed9671..6cef9e5 100644 --- a/crafts.lua +++ b/crafts.lua @@ -223,6 +223,17 @@ if pipeworks.enable_mese_tube then }) end +if pipeworks.enable_item_tags and pipeworks.enable_tags_tube then + local book_item = "default:book" + minetest.register_craft({ + output = "pipeworks:tags_tube_000000", + recipe = { + { book_item, book_item, book_item }, + { book_item, "pipeworks:mese_tube_000000", book_item }, + { book_item, book_item, book_item }, + } + }) +end if pipeworks.enable_sand_tube then minetest.register_craft( { output = "pipeworks:sand_tube_1 2", diff --git a/default_settings.lua b/default_settings.lua index 616500f..72de318 100644 --- a/default_settings.lua +++ b/default_settings.lua @@ -5,6 +5,7 @@ local prefix = "pipeworks_" local settings = { enable_pipes = true, enable_item_tags = true, + enable_tags_tube = true, enable_lowpoly = false, enable_autocrafter = true, enable_deployer = true, diff --git a/init.lua b/init.lua index 5a86a01..c03f29e 100644 --- a/init.lua +++ b/init.lua @@ -70,6 +70,7 @@ dofile(pipeworks.modpath.."/tubes/sorting.lua") dofile(pipeworks.modpath.."/tubes/signal.lua") loadfile(pipeworks.modpath.."/tubes/embedded_tube.lua")(materials) dofile(pipeworks.modpath.."/tubes/pane_embedded_tube.lua") +dofile(pipeworks.modpath.."/tubes/tags.lua") if pipeworks.enable_teleport_tube then dofile(pipeworks.modpath.."/tubes/teleport.lua") diff --git a/textures/pipeworks_tag_tube.png b/textures/pipeworks_tag_tube.png new file mode 100644 index 0000000000000000000000000000000000000000..e93a7d70f0aaf409d23ab54a3e757ea63fa9093d GIT binary patch literal 1116 zcmV-i1f%&yY}+L^zh5^@7VY9xb*PJ_wuy&@v`^vu=nw<_VBCr@TvCir}poq_3one?x6MV zp7rgT^zE7S?3eWHmGtY8^y`oF>yGp5jPvS<^Xi83>4oy?f%52o^5}i?=zHyWWbfl*@8e$X;$80IS?=Le?ch?7kdWm*5jbY*O-)Sz z004MMBq#s?00DGTPE!Ct=GbNc00U@AL_t(|+Le`uaUj z`@h-+r1(cE%5->i)|?YYU77=$WgHnE?cXlK{=Dr;P^#NM%Wz0wm_}@nk;@ zVc(DdC{h#uNgpJvfdt?x)*Wc=hoU``0A1+~OC7dI>p);+^3zHKA^;&Y03E{F6GsvN z#JGvO#UMjK+7ZrUh>we#$(20`P|IQ%9yDN{rmGZfjBRS)&LJXkk@6d$nu^yF$5^|= zP50xqWs=qbD{O$rkd^_)gQZx}01`tR5b)og2hXTDXHr&|zD5p=)xi25rE3E`#sn*s zfVz@REl?^ff%Wq2G`y0~0p~Rc_9UJfCIQ3`LvLCkply2O>O49nw2FZQ=kIj4bK@-V zlS38<(KgDXFbKo%fNYxtS?apsUwKgYzUz;2gVcE+6}^AccfeJvyxN)p+0uGg2iz~+ znE|{X=Q{4}DnRRDD&xPJ_ZqO9>v-4b_rCzNE1#U>zfLdJ2$(;&Sak4S{07jj z{_5z@Ef*m?taPAF%Mf%2@B8;ZSyaCPj86Jxr$cb8;XSU7(N_LBMoYyiz}7(nO!Fqe z^C}>}E(0tyAk_vl!)g_v<1-_?KAIz>%MSKy0DFn9r42ATtO9B)ghT^&79d{*6yH;H ziYy7@lTmj((q0|Cxw(x=*U;a6qm>W`le|ZZ$L>Dve;M(JB}cr<;W0KFIe9- zEdz$XK2&2HaCaeoFJNHkO^htra6sRbH;h?4n z)=eNE5t$;;FT4l+)?khl!KBDVW^^{mlZ+r9hWw*h=-Jhyx++hcTJLS^6Uu zWC@7UA0jBM=QJ>s(mn+FN;H+b3g3S)SBgMqEoD4%fcuaCjqN9XV0JzBOu?BWcpA!; z!=W=tP$K~}=?5ke5KnrdAp+n(X|T*mopY?EMye`xEt@v~a5LwH(NtAUhZ}WFRkP_f zsB3Cbj>*OMv|&SalIES}7h?2pgsyH^u)dKsC*75kz`^VM=Zv-f% zDxZb9kFUkT*!09NeksREjdLTxr|j-PxfK%T*moP)_I>FTDgR(;?TK$-zX^t)dwbVS zu(mH8V%^(&ox7p5EskP*EeQ-K7WcV*BMRpM_x)|;+~?LPL(IW15pkm^6%hfrJdJrg>bbk}v66kkY6QeQ zMWBZG>PqsEtIRN_J;Qw5seuleQ5+J*ff0IkQOiwC+!Wn*Y48RHAjD zYmUIqXg()%8W?-*R-k87cpg-H5obpxQqW{0XFLB{RJTEoT4#002ovPDHLkV1l=@ Buj&8* literal 0 HcmV?d00001 diff --git a/textures/pipeworks_tag_tube_inv.png b/textures/pipeworks_tag_tube_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd2c314ae2b2d7f5c0aacacc3523795bde69a7c GIT binary patch literal 496 zcmV#w+#m)Z2%>Tg3{l3orzR3T%%>KB`|G35fx5WRl#{aCt|E9pc-@I-B z0004WQchCsm82l?LY?z-QpxxByX{d!f+$b?(Akcu|fOz=AmS0=!^2vl@aMgXu`a6$F}pPD}s= zi|NDyZ~>MBS>yV*My=}R1#MpgFp9vmF91B+fU@s`Bv`aY**97F0S_A5wiy5l2BvKR zKtQ4G%9Z)P`HbYf7zl0G1ArA4Za;P{07UcPX`50&1>qLBZ5qI82&TZto(7}Af~k=6 zeca%MX-fhC3s_jTGyn(#KU zL+mPF!j0Ru%a=hA+m9lGyeMZ>%jlm7z=Zp#lM080000&yY}+L^zh5^@7VY9xb*PJ_wuy&@v`^vu=nw<_VBCr@TvCir}poq_3one?x6MV zp7rgT^zE7S?3eWHmGtY8^y`oF>yGp5jPvS<^Xi83>4oy?f%52o^5}i?=zHyWWbfl*@8e$X;$80IS?=Le?ch?7kdWm*5jbY*O-)Sz z004MMBq#s?00DGTPE!Ct=GbNc00U@AL_t(|+Le`uaUj z`@h-+r1(cE%5->i)|?YYU77=$WgHnE?cXlK{=Dr;P^#NM%Wz0wm_}@nk;@ zVc(DdC{h#uNgpJvfdt?x)*Wc=hoU``0A1+~OC7dI>p);+^3zHKA^;&Y03E{F6GsvN z#JGvO#UMjK+7ZrUh>we#$(20`P|IQ%9yDN{rmGZfjBRS)&LJXkk@6d$nu^yF$5^|= zP50xqWs=qbD{O$rkd^_)gQZx}01`tR5b)og2hXTDXHr&|zD5p=)xi25rE3E`#sn*s zfVz@REl?^ff%Wq2G`y0~0p~Rc_9UJfCIQ3`LvLCkply2O>O49nw2FZQ=kIj4bK@-V zlS38<(KgDXFbKo%fNYxtS?apsUwKgYzUz;2gVcE+6}^AccfeJvyxN)p+0uGg2iz~+ znE|{X=Q{4}DnRRDD&xPJ_ZqO9>v-4b_rCzNE1#U>zfLdJ2$(;&Sak4S{07jj z{_5z@Ef*m?taPAF%Mf%2@B8;ZSyaCPj86Jxr$cb8;XSU7(N_LBMoYyiz}7(nO!Fqe z^C}>}E(0tyAk_vl!)g_v<1-_?KAIz>%MSKy0DFn9r42ATtO9B)ghT^&79d{*6yH;H ziYy7@lTmj((q0|Cxw(x=*U;a6qm>W`le|ZZ$L>Dve;M(JB}cr<;W0KFIe9- zEdz$XK2&2HaCaeoFJNHz^% z|Ns8k+W*ee|HaMz>j3}1$^W^_|G35fv%>$f$N#Lu{-nPDpuPT`y8oBA|B|}@i?%o4 zJOBUyPBQz-00001bW%=J06^y0W&i*Ja!Eu%RCwB*)`3pMI1B{P_G+B8u{|#Q|GysB zCaYS7a$ZYtq0|o=c!-f;Ip$O93kU8H7b8 z1^DQoyqjR}z&biWOLo9x<#7g|?3x2?0Nc3{mKj#b2cBx*muH709Ids90@#mjN>tlb66yq zKxza?@cvbPtAhYMejn_BnE>K0FclFMcYq>5A|~zl1E?4PG!=(TY65jN6E$hpRG?}< zjVBY>e5F)e=gb3vipk4qOK%FmBpMkiC4$SQWv}fR}+<=k0cOicO+r?=E zm_v|fAa)Ufxjq7M))OcJkVl~Y5Mkm3Py*2U7J^Wox6u9s=JgSf5P?si#12IC<@iiY%OvpK0Ryz{?l4in^$tMHOdOl;YHsQBAk=D7qq>Kni&IUwG|n!ZS8 z+j;@k4@v?qyp0wQfRQXwsb8Y*6!G*`ZhdKgOqx7K9xrKoD}m@Zg&u@dlgC&FP|u%8 y9;0?(L}2%H2O$C_OTP){L z|Ns8k+W*tm|IE?<#m)Zf0RO+q|GCEgxXb^u$N#Is{-nPDp1S{;zWM3)m;FH2*e%w7Z8C|1Ei`5poR)@l}S()4nP2@s3Ho$riX|DF!A-3xGKy9is`~R z6EhJPX5yJM(=Cqx&%Avf&6yJQ@U+~*%R?T4e=YUjm`9+z2g-3Z-+`rk4-6yJ4&(!n zKLGg|kd7VFTVU*v@4!+IKz$DkBX9?D@Bal*4o>aBG7Rz_7zY`FC4CL_Nv1pi@)pPg zkQ%^ahX7FT6$T-{uTVb%OL+^(FakFq4?unkq{m&H5;HOXM|=y>Wqq}N<`GywO_^>f zG+&r#d!8qOxv9Yn)!hvOHNzu-3P216KLQ6_p;|HNkBLD6z~vSQOaV>TA>>$NfB@zY zcQJwB^}jeHFuP8X0BHmm76JscE-O3W5(3P(3VRQNhX9dQA@6&D5CEfXUFtyeA5Gv7 zKw`l?Sb@Hce0xT`!VaVr@DSj_4d_LvNDLTnVhUd*pp*kpt^|u#xC5oVVng^CxdUsm z1UJ$7TCa!8$cRtSJ2W78kz_xGHc0eQo9#eqMNC5gI?zX8i~m9yMxbZ~-+_~-z$1`e a0sjL{*G?Sl;nt)80000?P)Hq)$I1|?I00001bW%=J06^y0W&i*JSxH1eRCwB**N2wsFbo9H@QCE1kwp3be|-ew zlX$7hY%jh?V|xqJ>qyPlAp}g3sL%)$Xb7lwyswiEFgyep+5~lP1@sDCm?0s+JHR_9 zkkbPweGjyT00sAzjUkU!06I{bLV_4zcc3R$l)5I`!bhyt+bDPjOje0e3V3NwLXI&#j$ zOvHtmc;?J>%QL_;-@lLMOo@7UI^V+Qr#u6fmUW0Ok;P zF@fOyzc?c>yH1e+X#^M+0tB=yD=Xj<0?h9f)*b{80V1tJUiSbY07mz9sRPk}G=V<= zi3Rsy0s1!b?HTb3E07kzLx2l6pckPcF<`ujDSVNDQZ_(25G-2Z0hIQN4dG+t4lKzM z+(hR?J!~!`BR)az(174YlJykYAkjx{wgRaYF%1FeKp%lE{tIOofua?B1$LeSk3f0{ Z{0F#~SgZ95&vO6(002ovPDHLkV1kDlJShMG literal 0 HcmV?d00001 diff --git a/textures/pipeworks_tag_tube_noctr_4.png b/textures/pipeworks_tag_tube_noctr_4.png new file mode 100644 index 0000000000000000000000000000000000000000..014303373ade9851b3b28ed91e7fd06154bbfcb9 GIT binary patch literal 747 zcmVsqGyB*qn*^uqrzBvU*+kJS7#gn%g$6&is84FS~-w{_A1hKB${o1pHkfL@^sGb99f z2YBZM@_PqL-vg~7K*4=wW5{C_fDV+VkRS%w4d}@~$%30$X}m`>5Ux-*08<#C4&2@d zp@e~-+<{#;k^3!dZ%91^h^7v-5y))!G3H$ruq@kFu$@1Ry~8XT1kwnQ#4pki4pvam zx4%>!28e2P7XTsxafki|L?G1wsVV}fp+a0`5>$l)5I`!bhyt+bAz}bbe0e3V3NwLX zI&jX!OvHtmc;?J>%_G1w-@cFLOo@7UI$gu3hdcu3mUJ}}Ykd7cF3rUo-qcQ**s437XR05KFC1rE4EwPMm=6N3VP%QX;~0-7#E$g#u# z0n8!pVgkYIe{n`&cAX*t(g-jt1PEwZR#w0z1eo6{tUU-G0z_JcyzT))0E}+yQU{{{ zXaau#5)1CZ0`zU<>oejNRv;~ahX5CDKrcc?V!(J4Q}`kQrEGw5Ay~A+9VqP;8^XuP z9axejxQWh}df8k?Mtp+ap#i~*BfwbK9q002ovPDHLkV1n$$JQ@H1 literal 0 HcmV?d00001 diff --git a/textures/pipeworks_tag_tube_noctr_5.png b/textures/pipeworks_tag_tube_noctr_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c33ba4d07fecba08f8ccea660a697a9f0cce29 GIT binary patch literal 769 zcmV+c1OEJpP)x=$o{y?|G35fv&jFm!vCwo{-nPDp1S{;zW@!Uk3vjv-2so##q=om50r2&}20L`Uo zf)Gj=m{T*z_?F1$R(M+h^$;MMx0Ocyv(#2xw-5P?(!q^by@h6-_&K~NPAKme(zA_~BUZy^T2#Fu~K zsxT8Mh6|@e%tTz6X&R?A(IdVCJo5TI8WUwYf`|Jfru(<}4t#D=Kl@k#ZkLw7f!wa< z9k`d*fzMk5+zuc$KzahC2B-&++ZyuUKxu18J8-WJaQhSJQ{V$gP5t!=kQ?W=08P~A zWBi&(58U%hK--KVb%6W{qz=d%zVIe?3%d+wxa0vnC)3R(j z0fNUekgbIDzX#E)G+Ni?1BhN|0$%_U3-(|EjyCe+7ts=0ATNN20GDP%S^&xt12A1X zVS+`s#L@ueO0Z}NJ5aWNYzU8$+d(D?HqobRy*3*oBc4IIHYu<~_r`OKxAlMYuFV#p z%^;bE04zY80$com(xpI<_|DWudx=$p5*<{=AtAs!z&}nP ze>b4^9cT*y3hpO2hCEgQ=s?{R62t&ofu3^87F=SZ@p?1^!3t>|zK1CcPzTm8La1Tj zR66j}HIe(ZaQi~)AwV>DU>kwVe!dvXPZh8n+gGq3Z;idfEE)vz2#_FrTNuK@3JUu6 zPSs(6s5W;2AR-WV=>LESq!}PhMF2H4h^tJ3rf>iPNJA4*05&~D41kFPCgQ3v6DXzw zmqN@$T$w4&sU*7Q5#X8E|D(B3rXHRy*QCos9)a_gb{?|=ygyps19g9zZ@{H~4U8kS z4wM~GJ^sxwF8OPqPcoGO zkhee?fV=@bb_f9NR$&mz`wHzNaH($r8Ajj@C<9R50{L-^Q)VXS1ErLh=)j3+`OPCh z%ijxKQ)xah(fU450&`P?8JfEr1Zsvy01bc`D*glxxI(pI(mxY}0)Wdk5SRj*k3-0@ z!~g-zA?{)V!Rx0uBQSgLaRGS*7#0Eqv>dB?*JZ~K(-3yz5|2+7_H}W z2cl0jf&Ty!3+`Y6`WpHAj(CMTkQcy1fD3OxFG5vf0Mc;~5-hmHT6aJ_5-eKb2Gs2n z8^RYOcVJ18;1WF@+i`bgWW*=v9X3Fsx5j=k-Uf-jYO_0#w<4w?03GNfu*L6Ch7kx7 jzA+79AY5Tceg*sk2y8oHJ|ChJ_lDq$k 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 literal 0 HcmV?d00001 diff --git a/textures/pipeworks_tag_tube_plain_6.png b/textures/pipeworks_tag_tube_plain_6.png new file mode 100644 index 0000000000000000000000000000000000000000..458fe5d27ec90b82c596635423338d0e37ea801b GIT binary patch literal 860 zcmV-i1Ec(jP)j3}0$p5*<{sqoY zN4vS0t|{y}`VEcm^0}nf*F^-Bj8td^G-wLY?Rokn01Qt73}*-Z(FlkLLD(QEfCqpd z>_A>FK#Lh@PXQDh&J#nPivR?mofHz}02Y9$`np?kh@IB`Xamv_+6Mqr8bAS<3n8>L z;I#(ep*@jfFFY5do&t#O0XSPAvxhfheJBEk?PCOc@Mw$-n`jcSuK<$#j> zld8i2QSI&mKtv$!Q0R*R1^@!c{Ja|=T}1#jbcm}IL0901m7m4}w((dJZIyNkad|()qbw5J%c9NjHr3x& z{SRoP7u%TzxD?BR|#0-8P! z0Be8yBtsp5p+4)qE_zv80D#+civv(2{{`q4fU`t|XdyT~0Ed=FM7DCP9ssoftc~1& zWf(8c(fv>_>{$KLNvR7!uBF)m*vkfuKMn0CfIrP(%ENYx;Qs>p6=5ON07)IuZ&md0 zd<%$u(y)!;-(u0@*Rr(0Ctw{y4FH!#6^PjD6wA&`%+JJ!h@M7aCV)C^#B>ze$C_b$ zRq0Tp?U{+@YbyeCQ-c}0yBh>*hBj8a2p}-QSm^-7(C{K~z!j<;MPEz|3IHyLhCu;E z_u-rXgLTJ{0Rosq++~3A^)1eyMVo8M2-sHu!%_eN4O_bbE-8TdjBw{5c&-CEBh-5a zNC99peR}}1H=4jd01`{iU;tu_e7um4a0B)M@D#u$Hoyg-CON>mC+_JT31}_cGYG-5 z5n6a>VMBT|asY;^B!}qyr(f1t8Tk$(!wE?4NOEt5K5O==%>od6b2ZIH2tc&JmOr5^ mEf6GqFfC#r9bwV_72q%S1!0AG{OC^r0000#z-#m)b~%KyH||GCEgxXb^t$N#Lu|Et3Ns=@xGzW<)O|Czr3m$(0v zy!u&k;Q#;t0d!JMQvg8b*k%9#0X|7YK~#9!?U7fa+b|3SZHo{@EO%k${)bJZ^gyrt zrEy%vGHAESpU7k~nTV+nNC2Y7uJIv50SJT+C_&@^^;8i+2{9>!asZiIs4Fuu06isX zXomzaSp~V;fj4V?yPMmmUvs-RU%Q8|Zq0gMt!He;|{|WHR{(^wAIy39)Ef00000NkvXXu0mjfkp0)Q literal 0 HcmV?d00001 diff --git a/tubes/tags.lua b/tubes/tags.lua new file mode 100644 index 0000000..ef3c18f --- /dev/null +++ b/tubes/tags.lua @@ -0,0 +1,146 @@ +local S = minetest.get_translator("pipeworks") +local fs_helpers = pipeworks.fs_helpers + +if not pipeworks.enable_tags_tube then return end + +local notag_name = "<>" +local tube_name = "pipeworks:tags_tube" +local tube_description = S("Tags Sorting Pneumatic Tube Segment") + +local safe_tags = function(tags) + local length_limit = tonumber(minetest.settings:get("pipeworks_item_tag_name_limit") or "30") + return tags:sub(1, length_limit * 6) +end + +local update_formspec = function(pos) + local meta = minetest.get_meta(pos) + local buttons_formspec = "" + for i = 0, 5 do + buttons_formspec = buttons_formspec .. fs_helpers.cycling_button(meta, + "image_button[9," .. (i + (i * 0.25) + 1.5) .. ";1,0.6", "l" .. (i + 1) .. "s", + { + pipeworks.button_off, + pipeworks.button_on + } + ) + end + local size = "10.2,10" + meta:set_string("formspec", + "formspec_version[2]" .. + "size[" .. size .. "]" .. + "item_image[0.2,0.2;1,1; " .. tube_name .. "]" .. + "label[1.5,0.75;" .. minetest.formspec_escape(tube_description) .. "]" .. + pipeworks.fs_helpers.get_prepends(size) .. + "field[1.5,1.25;7.25,1;tags1;;${tags1}]" .. + "field[1.5,2.5;7.25,1;tags2;;${tags2}]" .. + "field[1.5,3.75;7.25,1;tags3;;${tags3}]" .. + "field[1.5,5.0;7.25,1;tags4;;${tags4}]" .. + "field[1.5,6.25;7.25,1;tags5;;${tags5}]" .. + "field[1.5,7.5;7.25,1;tags6;;${tags6}]" .. + + "image[0.22,1.25;1,1;pipeworks_white.png]" .. + "image[0.22,2.50;1,1;pipeworks_black.png]" .. + "image[0.22,3.75;1,1;pipeworks_green.png]" .. + "image[0.22,5.00;1,1;pipeworks_yellow.png]" .. + "image[0.22,6.25;1,1;pipeworks_blue.png]" .. + "image[0.22,7.50;1,1;pipeworks_red.png]" .. + buttons_formspec .. + "button[6,8.75;1.5,1;set_items_tags;" .. S("Set") .. "]" .. + "button_exit[7.75,8.75;2,1;close;" .. S("Close") .. "]" + ) +end + +pipeworks.register_tube(tube_name, { + description = tube_description, + inventory_image = "pipeworks_tag_tube_inv.png", + noctr = { "pipeworks_tag_tube_noctr_1.png", "pipeworks_tag_tube_noctr_2.png", "pipeworks_tag_tube_noctr_3.png", + "pipeworks_tag_tube_noctr_4.png", "pipeworks_tag_tube_noctr_5.png", "pipeworks_tag_tube_noctr_6.png" }, + plain = { "pipeworks_tag_tube_plain_1.png", "pipeworks_tag_tube_plain_2.png", "pipeworks_tag_tube_plain_3.png", + "pipeworks_tag_tube_plain_4.png", "pipeworks_tag_tube_plain_5.png", "pipeworks_tag_tube_plain_6.png" }, + ends = { "pipeworks_tag_tube_end.png" }, + short = "pipeworks_tag_tube_short.png", + no_facedir = true, -- Must use old tubes, since the textures are rotated with 6d ones + node_def = { + tube = { + can_go = function(pos, node, velocity, stack) + local tbl, tbln = {}, 0 + local found, foundn = {}, 0 + local meta = minetest.get_meta(pos) + local stack_tag = pipeworks.get_item_tag(stack) + if not stack_tag or stack_tag == "" then + stack_tag = notag_name + end + stack_tag = pipeworks.safe_tag(stack_tag) + for i, vect in ipairs(pipeworks.meseadjlist) do + local npos = vector.add(pos, vect) + local node = minetest.get_node(npos) + local reg_node = minetest.registered_nodes[node.name] + if meta:get_int("l" .. i .. "s") == 1 and reg_node then + local tube_def = reg_node.tube + if not tube_def or not tube_def.can_insert or + tube_def.can_insert(npos, node, stack, vect) then + local tags_name = "tags" .. i + local tags = meta:get_string(tags_name) + local is_empty = tags == nil or tags == "" + if not is_empty then + for tag in string.gmatch(tags, "[^,]+") do + tag = pipeworks.safe_tag(tag) + if tag and tag == stack_tag then + foundn = foundn + 1 + found[foundn] = vect + end + end + end + if is_empty then + tbln = tbln + 1 + tbl[tbln] = vect + end + end + end + end + return (foundn > 0) and found or tbl + end + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for i = 1, 6 do + meta:set_int("l" .. tostring(i) .. "s", 1) + inv:set_size("line" .. tostring(i), 6 * 1) + end + update_formspec(pos) + meta:set_string("infotext", S("Tags Sorting pneumatic tube")) + end, + after_place_node = function(pos, placer, itemstack, pointed_thing) + if placer and placer:is_player() and placer:get_player_control().aux1 then + local meta = minetest.get_meta(pos) + for i = 1, 6 do + meta:set_int("l" .. tostring(i) .. "s", 0) + end + update_formspec(pos) + end + return pipeworks.after_place(pos, placer, itemstack, pointed_thing) + end, + on_receive_fields = function(pos, formname, fields, sender) + if (fields.quit and not fields.key_enter_field) + or not pipeworks.may_configure(pos, sender) then + return + end + + local meta = minetest.get_meta(pos) + for i = 1, 6 do + local field_name = "tags" .. tostring(i) + if fields[field_name] then + local safe_tags = safe_tags(fields[field_name]) + meta:set_string(field_name, safe_tags) + end + end + + fs_helpers.on_receive_fields(pos, fields) + update_formspec(pos) + end, + can_dig = function(pos, player) + return true + end, + }, +})