From ad8c6e3731dd70ad6d11fe720249eb0df8772586 Mon Sep 17 00:00:00 2001 From: RealBadAngel Date: Thu, 9 May 2013 16:00:43 +0200 Subject: [PATCH 1/3] Add stained glass textures --- framedglass/textures/framedglass_blackglass.png | Bin 0 -> 346 bytes framedglass/textures/framedglass_blueglass.png | Bin 0 -> 432 bytes framedglass/textures/framedglass_brownglass.png | Bin 0 -> 403 bytes framedglass/textures/framedglass_cyanglass.png | Bin 0 -> 442 bytes .../textures/framedglass_darkgreenglass.png | Bin 0 -> 414 bytes .../textures/framedglass_darkgreyglass.png | Bin 0 -> 436 bytes framedglass/textures/framedglass_greenglass.png | Bin 0 -> 445 bytes framedglass/textures/framedglass_greyglass.png | Bin 0 -> 349 bytes framedglass/textures/framedglass_orangeglass.png | Bin 0 -> 410 bytes framedglass/textures/framedglass_pinkglass.png | Bin 0 -> 412 bytes framedglass/textures/framedglass_redglass.png | Bin 0 -> 444 bytes framedglass/textures/framedglass_violetglass.png | Bin 0 -> 418 bytes framedglass/textures/framedglass_whiteglass.png | Bin 0 -> 348 bytes framedglass/textures/framedglass_yellowglass.png | Bin 0 -> 400 bytes framedglass/textures/stained_glass_lime.png | Bin 0 -> 444 bytes framedglass/textures/stained_glass_magenta.png | Bin 0 -> 313 bytes 16 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 framedglass/textures/framedglass_blackglass.png create mode 100644 framedglass/textures/framedglass_blueglass.png create mode 100644 framedglass/textures/framedglass_brownglass.png create mode 100644 framedglass/textures/framedglass_cyanglass.png create mode 100644 framedglass/textures/framedglass_darkgreenglass.png create mode 100644 framedglass/textures/framedglass_darkgreyglass.png create mode 100644 framedglass/textures/framedglass_greenglass.png create mode 100644 framedglass/textures/framedglass_greyglass.png create mode 100644 framedglass/textures/framedglass_orangeglass.png create mode 100644 framedglass/textures/framedglass_pinkglass.png create mode 100644 framedglass/textures/framedglass_redglass.png create mode 100644 framedglass/textures/framedglass_violetglass.png create mode 100644 framedglass/textures/framedglass_whiteglass.png create mode 100644 framedglass/textures/framedglass_yellowglass.png create mode 100644 framedglass/textures/stained_glass_lime.png create mode 100644 framedglass/textures/stained_glass_magenta.png diff --git a/framedglass/textures/framedglass_blackglass.png b/framedglass/textures/framedglass_blackglass.png new file mode 100644 index 0000000000000000000000000000000000000000..4e820278cb22a199f97a6cbeeefb170d9f798e7c GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@3?Dns!62CcpwM+s7sn8b z)2)-d`3@QIxWo&KYn6Gd*(vzlo`XAJf6lQ>E4Fy4XlL5~J6Cdmdq&FUn@l#1ycG;{ z@2%dTY`|JDaWk_MLxa|Ru9`2gWf4p-L<4kooCvt;Y3Cng>?o>{Z{M9W?fzN@)3V08 z^bbp{SEpUKz0iKZayol{SnV~Axo@9wxp0K!KD%1B@vYF)|M~_D&L;|uXYHvf3p-=4 zeNcKwd)gPluEbP0l+XkK4K#t# literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_blueglass.png b/framedglass/textures/framedglass_blueglass.png new file mode 100644 index 0000000000000000000000000000000000000000..2768017a4d268241dc2c1e61255faa8732284b8b GIT binary patch literal 432 zcmV;h0Z;ykP)HK~y-)g_65&!!Qg*j~-^Ut6lp?UHkt_r$AeaIJ6~o5S^w& zEdewHnBwD}>-hM32R4hHkal1PD!0!!BzNxD7o2xU?r3S2tH2fkL5oAOBcw=O8{-5d z3(#=>hU5Tvz*$7>vmhBl^1$)fTL5$(-o{^)En&M)+~080cqbv^bvMy^jq4pAGDoi!A+T+k9DTI!QP z*shKH6`b!+1xJyPpsp*D6Izl-@@~}xSkN-oy1Wj>N7qCB4s3+M)IjoB3e#4qotks#Lqa- aeDVXce$DX!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46l)apO=gU0|TRgr;B5V z#p%{b-g$=&cwFQ)&3JcdUno6)q5F&7&T?_yr0N^3D;+cvPBZ9AJxez+F8lpRIzlVV zJS>5ATWHO$iC%ULt7AfcGfZR9^E$&@th|b0!OlWPmOr~LGO({vT5-KwddI_1AJM9( zFOLQNpC!HSh?csR=hHeSjf1=mYm-7Rt=e`_*th%Fi{6{t`ObDvTAN`0v~QO?L*#^< zhCRH_Rx68cw~OSj_fndY!|Zq^c4>{$OXlAKQ|{c|p|!J3diA93j?2#G=D&Ky^CsQ1 zmc4Gu9`{VExPw#uMHdOAK7V=t^NSXlS20iIeyOBc9oBm}(LZTfv984z&od?SegcKA re{-JS@+l@=)#@`)sLVOt?kDr2iO1&Oi4=4O1{Z^;tDnm{r-UW|RG6KU literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_cyanglass.png b/framedglass/textures/framedglass_cyanglass.png new file mode 100644 index 0000000000000000000000000000000000000000..31edcc60e3a73ade2ef966398c2269252b095dfa GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46lej!<$D@n-$ez!?8^z>R%5}?AyIvO|Dyx7 zCpT)p;}u+5&bo!Mxg&Rd?vtmjDZ*Qm!!|u^`OW(MT0wjqi&FVp8#x7|IF4|k(2gGm z-*o*BHJCj)mr3M%>Dt@5p*3%Jt+a1&xElDE>DjbJA}*)iHT-_&bh`7{y37AR$K=|4 zkbIz_{`O3I!{RwxVl%(ba-DilTWM4D8mo>KEBfYisKnozc|P4TGu!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46mrgtPr()1_nlHPZ!4! zi_@)>Z1WBq@U+^`>XCNHey(ThuYX0m{FTF&4%gMqD~`w}aV~H@_^0wo^`Ym#**7c= z_0bAwe6V|8;FgCUxjcSVAG_CZwn3DC;fjQ$E88yj2bHjvJ!oIVrPHuP^5@O~5ua&1 zYRuEWNV{(Tvs@(h!-Ow}4u+XmuH`fEYj6o*tHkty`Ioi5J0 z8unn4!0$~~rA0UDn9Y1-ChISVDyou6Jea&8p>xIE?_d7kIp#F))0{OnS3A#EuvuIN zk+)|0mdKI;Vst E04vO^MF0Q* literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_darkgreyglass.png b/framedglass/textures/framedglass_darkgreyglass.png new file mode 100644 index 0000000000000000000000000000000000000000..78c394b836f3317323bc407080d6dd43d3e90c9d GIT binary patch literal 436 zcmV;l0ZaagP)~0MQvd4 z7l{EG1}upZ$#}h9zkt0*&CCi^;CR2^KP9zwU4KMGNNTpvp1T2i0*mdC6q%W|)|3Bd zlC%J4MEsF70R@O2Nxx=EWM%|BQL-Mc-WqS2{?Lewl~`w zu(#HZF=h6|22g8l1NEbLw|(@nC)*hjb8Bq|<^)=;b?h}pK0cZZQcp?I0TkkgZ@`|JYi9liYIag0 zBE|~E_D~`FL~Zc&?Q99mS2_b+`6Taj2DtJ`xzqX1CwZsyolo*kXGxbnN!yn?+di*+ eQtouV^T|KsyZ{{P7(e>}0000) literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_greenglass.png b/framedglass/textures/framedglass_greenglass.png new file mode 100644 index 0000000000000000000000000000000000000000..0886c74a05cd4f89cb798e2d8b9e4c1ecdb3a406 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@43Dwa>W}+O7#J9>JY5_^ zEKavh@?9lnDB$Y!I{a+&)sdeE@|hJv1z(Aca?=fBmcp7Odx!N@2mgI z7IV5iRQdqJqhFP^VV8Tpf8^A5^);?~@~fI@I@%`KNs)_f;cowW%L%Vl!mzrrGL+WpG~E+NZSQRXKN z4V)9w&&7UK{m~`2@mAQEf;BQvY#I(X&P;!|v+VT8Nh$iKS3|-MO4-`E@PB_HsL!2r zcGgF`1E*>{EgH6DJ(;=x>K8HFdp^F&sjCkN+R99@+r^j~diVDH1F2Vch5lybVb?1X zTk}Rxrz(eQpVh2t|Nl2$9whKy9z$TjGI+ZBxvX!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@3?BnepK#Z7pwKN(7sn8b z)2)-v@--OZg=8yde?jx{rS(vmcU`D=QcU~ z{JE~5>8ce>*Dv(gIT?CKU7yR!TvMdjZu45^l}eP&?VDFUw^VHVR$eNkJ1^R*Q|!F% nT$k?WXY>A*00mg>uAJnT&&+fCqnmI5=t~AqS3j3^P6!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46mNYBB;*ag^Plrr^ZNlj~>ntSpnYeZwbIFs0dP>HXF;wv_W7>4c$ zv5Rr}JGonRQkW&1NAJYs+l)#FSslW@c!W%6v6hOIWpn7uUH^HH%*2#~VNcqs+8C9O z+g)#&lg(4M`nNn)OMf-YxwxxMp9JIuExYeMtx?rfFoM_t$Fi67uz6eIok z>#LM{hK0v`d-E4WXa2G|B(!sNLTiT4ynkztt2|kHZs{rS`8Q^s+u-@@lzQ1RV}rh$ zq;#wKKaZR%DU!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46nREC|{a90|TR^r;B5V z#p%{b-dQY$JTCL?*Unrj7Wv$5XZeXhwb{2?SiT>RbZJXd$ZhU9uqkBKsxJqBOK)(? zY0Evp_J&_>eP8)PaRt{pmt5v+Tr&cSY$U^^-#&ORa-7$qA^$k{ghr9T&g?>&!$l&( zt(KqO{gBE(`cY?!k~*`hnsfnko)dRKgY6qP^>5Z2q`sxzP~UJ>;prYHF)6Jp4p-Ry{g?AP{ktmp;FNmlGUEeN{Xh9U xpXvV!LZlzpuMKL|D;2X^S2HQy>U_;7?$1g`)F<~&+zt#k22WQ%mvv4FO#m@(oZ|oh literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_redglass.png b/framedglass/textures/framedglass_redglass.png new file mode 100644 index 0000000000000000000000000000000000000000..1d209207b3d69f2e217bfa7f3d39ebc0702dfb65 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@439BGfmit>1_nk;PZ!4! zi_@)>Hs&2R;BlF+ag%4_)?$10=>PwfccmCc9Nl*1;Fj5X+Zv2nB5Wp=PyhA!BkP$) z)~l=$4O5?g7T$c$q*h^)!RsB{D}FOQW9r$Venx0jYn1fulQVi9oR1iuZeY+1=s4dX zxq@qhxHrRsWV7S@duBeE_o$D-(yG6Ksp~gGN&@emg8K}{YuEmsqAFL$koDI6`u<0f z-%XF5+ad147A4)VkYR4r_r2dHUN@f%WAu!++Ig=pHmih3yKdzOA?`Jk%CA{kXfgq;e$~g# z?p3#Ap7V4`%uk+zX_JdI-p*UBaXHG(g|9o*dTUxpwU5h$^-oVdUp;4v_IyL@vz`b4 kUP-@mJJRn7NbC=j!{^hJ-~2lj1q@dPPgg&ebxsLQ02qt9DgXcg literal 0 HcmV?d00001 diff --git a/framedglass/textures/framedglass_violetglass.png b/framedglass/textures/framedglass_violetglass.png new file mode 100644 index 0000000000000000000000000000000000000000..aec8ce01844fe225ebe5bccdfc6dced9518ca601 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46l@VZ?U=|0|TSHr;B5V z#p%{b-hM|7cwGBs_kU=UG;qu5Xx%J2qoT>-?+u=UC0sAJPK>e4dKB|Jrt;}u-Uw~8 zh4}~A-dM})pE_}1KI2N8S8tfsuzfk;DydZBJ?%lhX=;f=Lw>4>1LI1ASH;0>PS>q` zWUrhGmdyT}ed@x2rA0g$PUllHo%|aP1hO57+sJzFRS@&CS!r868&XdGeD&~?)Q`AL z(GS?}q)ALTY4m&6r0>oXEw2Q$U1_%cu>8PTru+QNi>i7LET0rv!0hxw<#fN%yT<#W zlF^~B53E%&OU+m~`S2Ivh}M6qU;Gm`CspM*GS3%TBl2|4<^5aFG}=6g36cACWSzzT znU6O5zv(ibkZ!k8`&>APIA!s*leO-Y!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46h|y5=%f9Q0S(oi(`nz z>DEbS`I-y_TI_GR_L>Wy-#797e+4;{hAXFYj2t~?=S1DOd4J}@t>0MEZYF(Wm2+Tz zcVNMHtv4)Z80S2ZX%JvoaB4eKe(iMLX$)?xBHVgLA*IvKPrl+4z8%s&!~4m^~nw?-#A-q z?Pu{*9!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@46l*_O9x*j0|O(kr;B5V z#p%|`dxMS`@U-l|p%n8_DC%Cv_j(Q~uDdeDg-Kkwbs9akk0XpHhF^MDwd(C(;fO8T z5xtW|_t`Hn`Cy(9v`6zhrw-eh2f|Z0&n(D0aw;G#fmtrVXaZ9Qr@@!XMy7}$BQKvW z=_#)Nji!jOo($N)vBvQ#=K~gv)n%;bcP*LBlES#4d+XfL{?pt)R&6uhv8yk4V$AoQ z-=LD%x2=z+uA!K7s#_LjNC5KT*fHU!T6Q^6z`vD3qls2y*TZ*r&!SQg#AZ7 z%GiH1t@6D5nuD_@{NR;9>&jo7=UFSp&RyztUES=GW!QZX$@Qf+NqMfj-NuRMJ~sTa oGyG6r+IRi>cTcI8HlI%FXJzopr08TxeK>z>% literal 0 HcmV?d00001 diff --git a/framedglass/textures/stained_glass_lime.png b/framedglass/textures/stained_glass_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..782edc993fa745817d11bf8a8b1cdc44a9ddf0ed GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* z4F5rJ!QSPQfg+p*9+AZi4BWyX%*Zfnjs#GUy~NYkmHjS@439e7_IB1L1_nk;PZ!4! zi_@)>Hs&2R;BlF+ag%4_)?$10=>PwfccmCc9Nl*1;Fj5X+Zv2nB5Wp=PyhA!BkP$) z)~l=$4O5?g7T$c$q*h^)!RsB{D}FOQW9r$Venx0jYn1fulQVi9oR1iuZeY+1=s4dX zxq@qhxHrRsWV7S@duBeE_o$D-(yG6Ksp~gGN&@emg8K}{YuEmsqAFL$koDI6`u<0f z-%XF5+ad147A4)VkYR4r_r2dHUN@f%WAu!++Ig=pHmih3yKdzOA?`Jk%CA{kXfgq;e$~g# z?p3#Ap7V4`%uk+zX_JdI-p*UBaXHG(g|9o*dTUxpwU5h$^-oVdUp;4v_IyL@vz`b4 kUP-@mJJRn7NbC=j!{^hJ-~2lj1q@dPPgg&ebxsLQ0IE&7)&Kwi literal 0 HcmV?d00001 diff --git a/framedglass/textures/stained_glass_magenta.png b/framedglass/textures/stained_glass_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..43e28b7f190ea3bc8717f15bee3e61a9fe854d8e GIT binary patch literal 313 zcmWkoy=uZ>0K8y}tr9A9k>XyLPT$t46@#YOAnMXhD0D99)UjKipisJY^&NClgn~bq zDn^Z(Xw)QXjQ?Oihr8qM;JA;d5Mo_dE&wba4#uc@jyQ8r_TOB@sW7QnD1gkbPow51 z8cA>_%qga0j1?#{1umssl12N;MDE2z{_H()44F^I9k zN+xm>O_P{I4C(&ia7bN?56AcEm=MRE`u9T3`D^$o1-LJdVDR Date: Thu, 9 May 2013 16:01:18 +0200 Subject: [PATCH 2/3] Add stained glass code --- framedglass/init.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/framedglass/init.lua b/framedglass/init.lua index ebe88ea..6bb92ae 100644 --- a/framedglass/init.lua +++ b/framedglass/init.lua @@ -75,3 +75,33 @@ minetest.register_node("framedglass:steel_framed_obsidian_glass", { groups = {cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) + +function add_coloured_framedglass(name, desc, dye, texture) +minetest.register_node( "framedglass:steel_framed_obsidian_glass"..name, { + description = "Steel-framed "..desc.." Obsidian Glass", + tiles = {"framedglass_steel_frame.png",texture}, + drawtype = "glasslike_framed", + paramtype = "light", + sunlight_propagates = true, + is_ground_content = true, + use_texture_alpha = true, + groups = {cracky=3}, + sounds = default.node_sound_glass_defaults(), +}) +end + +add_coloured_framedglass ("red","Red","","framedglass_redglass.png") +add_coloured_framedglass ("green","Green","","framedglass_greenglass.png") +add_coloured_framedglass ("blue","Blue","","framedglass_blueglass.png") +add_coloured_framedglass ("cyan","Cyan","","framedglass_cyanglass.png") +add_coloured_framedglass ("darkgreen","Dark Green","","framedglass_darkgreenglass.png") +add_coloured_framedglass ("violet","Violet","","framedglass_violetglass.png") +add_coloured_framedglass ("pink","Pink","","framedglass_pinkglass.png") +add_coloured_framedglass ("yellow","Yellow","","framedglass_yellowglass.png") +add_coloured_framedglass ("orange","Orange","","framedglass_orangeglass.png") +add_coloured_framedglass ("brown","Brown","","framedglass_brownglass.png") +add_coloured_framedglass ("white","White","","framedglass_whiteglass.png") +add_coloured_framedglass ("grey","Grey","","framedglass_greyglass.png") +add_coloured_framedglass ("darkgrey","Dark Grey","","framedglass_darkgreyglass.png") +add_coloured_framedglass ("black","Black","","framedglass_blackglass.png") + From 64207baa4563db90fa80ed23f3b8f41f96f0260d Mon Sep 17 00:00:00 2001 From: RealBadAngel Date: Thu, 9 May 2013 16:02:02 +0200 Subject: [PATCH 3/3] Add HV battery box --- technic/battery_box_hv.lua | 357 +++++++++++++++++++++++++++++++++++++ technic/init.lua | 1 + 2 files changed, 358 insertions(+) create mode 100644 technic/battery_box_hv.lua diff --git a/technic/battery_box_hv.lua b/technic/battery_box_hv.lua new file mode 100644 index 0000000..05166eb --- /dev/null +++ b/technic/battery_box_hv.lua @@ -0,0 +1,357 @@ +HV_machines = {} + +registered_HV_machines_count=0 + +function register_HV_machine (string1,string2) +registered_HV_machines_count=registered_HV_machines_count+1 +HV_machines[registered_HV_machines_count]={} +HV_machines[registered_HV_machines_count].machine_name=string1 +HV_machines[registered_HV_machines_count].machine_type=string2 +end + +minetest.register_craft({ + output = 'technic:hv_battery_box 1', + recipe = { + {'technic:mv_battery_box', 'technic:mv_battery_box', 'mv_technic:battery_box'}, + {'technic:mv_battery_box', 'technic:transformer', 'mv_technic:battery_box'}, + {'', 'technic:hv_cable', ''}, + } +}) + +hv_battery_box_formspec = + "invsize[8,9;]".. + "image[1,1;1,2;technic_power_meter_bg.png]".. + "list[current_name;src;3,1;1,1;]".. + "image[4,1;1,1;technic_battery_reload.png]".. + "list[current_name;dst;5,1;1,1;]".. + "label[0,0;HV Battery Box]".. + "label[3,0;Charge]".. + "label[5,0;Discharge]".. + "label[1,3;Power level]".. + "list[current_player;main;0,5;8,4;]" + +minetest.register_node("technic:hv_battery_box", { + description = "HV Battery Box", + tiles = {"technic_hv_battery_box_top.png", "technic_hv_battery_box_bottom.png", "technic_hv_battery_box_side0.png", + "technic_hv_battery_box_side0.png", "technic_hv_battery_box_side0.png", "technic_hv_battery_box_side0.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + technic_mv_power_machine=1, + last_side_shown=0, + drop="technic:hv_battery_box", + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "HV Battery Box") + meta:set_float("technic_hv_power_machine", 1) + meta:set_string("formspec", battery_box_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 1) + battery_charge = 0 + max_charge = 1500000 + last_side_shown=0 + end, + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("dst") then + return false + elseif not inv:is_empty("src") then + return false + end + return true + end, +}) + + +for i=1,8,1 do +minetest.register_node("technic:hv_battery_box"..i, { + description = "HV Battery Box", + tiles = {"technic_hv_battery_box_top.png", "technic_hv_battery_box_bottom.png", "technic_hv_battery_box_side0.png^technic_power_meter"..i..".png", + "technic_hv_battery_box_side0.png^technic_power_meter"..i..".png", "technic_hv_battery_box_side0.png^technic_power_meter"..i..".png", "technic_hv_battery_box_side0.png^technic_power_meter"..i..".png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + paramtype="light", + light_source=9, + technic_power_machine=1, + last_side_shown=0, + drop="technic:hv_battery_box", + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "hv Battery box") + meta:set_float("technic_hv_power_machine", 1) + meta:set_string("formspec", battery_box_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 1) + battery_charge = 0 + max_charge = 1500000 + last_side_shown=0 + end, + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("dst") then + return false + elseif not inv:is_empty("src") then + return false + end + return true + end, +}) +end + + +HV_nodes_visited = {} + + +minetest.register_abm({ + nodenames = {"technic:hv_battery_box","technic:hv_battery_box1","technic:hv_battery_box2","technic:hv_battery_box3","technic:hv_battery_box4", + "technic:hv_battery_box5","technic:hv_battery_box6","technic:hv_battery_box7","technic:hv_battery_box8" + }, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.env:get_meta(pos) + charge= meta:get_int("battery_charge") + max_charge= 1500000 + local i=math.ceil((charge/max_charge)*8) + if i>8 then i=8 end + j=meta:get_float("last_side_shown") + if i~=j then + if i>0 then hacky_swap_node(pos,"technic:hv_battery_box"..i) + elseif i==0 then hacky_swap_node(pos,"technic:hv_battery_box") end + meta:set_float("last_side_shown",i) + end + +--loading registered power tools + local inv = meta:get_inventory() + if inv:is_empty("src")==false then + local srcstack = inv:get_stack("src", 1) + local src_item=srcstack:to_table() + local src_meta=get_item_meta(src_item["metadata"]) + + local item_max_charge=nil + for i=1,registered_power_tools_count,1 do + if power_tools[i].tool_name==src_item["name"] then + src_meta=get_item_meta(src_item["metadata"]) + if src_meta==nil then + src_meta={} + src_meta["technic_power_tool"]=true + src_meta["charge"]=0 + else + if src_meta["technic_power_tool"]==nil then + src_meta["technic_power_tool"]=true + src_meta["charge"]=0 + end + end + item_max_charge=power_tools[i].max_charge + end + end + + if item_max_charge then + load1=src_meta["charge"] + load_step=16000 + if load10 then + if charge-load_step<0 then load_step=charge end + if load1+load_step>item_max_charge then load_step=item_max_charge-load1 end + load1=load1+load_step + charge=charge-load_step + set_RE_wear(src_item,load1,item_max_charge) + src_meta["charge"]=load1 + src_item["metadata"]=set_item_meta(src_meta) + inv:set_stack("src", 1, src_item) + end + meta:set_int("battery_charge",charge) + end + end + +-- dischargin registered power tools + if inv:is_empty("dst") == false then + srcstack = inv:get_stack("dst", 1) + src_item=srcstack:to_table() + local src_meta=get_item_meta(src_item["metadata"]) + local item_max_charge=nil + for i=1,registered_power_tools_count,1 do + if power_tools[i].tool_name==src_item["name"] then + src_meta=get_item_meta(src_item["metadata"]) + if src_meta==nil then + src_meta={} + src_meta["technic_power_tool"]=true + src_meta["charge"]=0 + else + if src_meta["technic_power_tool"]==nil then + src_meta["technic_power_tool"]=true + src_meta["charge"]=0 + end + end + item_max_charge=power_tools[i].max_charge + end + end + + if item_max_charge then + local load1=src_meta["charge"] + load_step=16000 + if load1>0 and chargemax_charge then load_step=max_charge-charge end + if load1-load_step<0 then load_step=load1 end + load1=load1-load_step + charge=charge+load_step + set_RE_wear(src_item,load1,item_max_charge) + src_meta["charge"]=load1 + src_item["metadata"]=set_item_meta(src_meta) + inv:set_stack("dst", 1, src_item) + end + end + end + + meta:set_int("battery_charge",charge) + + local load = math.floor((charge/1500000) * 100) + meta:set_string("formspec", + hv_battery_box_formspec.. + "image[1,1;1,2;technic_power_meter_bg.png^[lowpart:".. + (load)..":technic_power_meter_fg.png]" + ) + + local pos1={} + + pos1.y=pos.y-1 + pos1.x=pos.x + pos1.z=pos.z + + + meta1 = minetest.env:get_meta(pos1) + if meta1:get_float("hv_cablelike")~=1 then return end + + local HV_nodes = {} + local PR_nodes = {} + local RE_nodes = {} + + HV_nodes[1]={} + HV_nodes[1].x=pos1.x + HV_nodes[1].y=pos1.y + HV_nodes[1].z=pos1.z + HV_nodes[1].visited=false + +table_index=1 + repeat + check_HV_node (PR_nodes,RE_nodes,HV_nodes,table_index) + table_index=table_index+1 + if HV_nodes[table_index]==nil then break end + until false + + +local pos1={} +i=1 + repeat + if PR_nodes[i]==nil then break end -- gettin power from all connected producers + pos1.x=PR_nodes[i].x + pos1.y=PR_nodes[i].y + pos1.z=PR_nodes[i].z + local meta1 = minetest.env:get_meta(pos1) + local internal_EU_buffer=meta1:get_float("internal_EU_buffer") + if charge0 then + charge=charge+charge_to_take + internal_EU_buffer=internal_EU_buffer-charge_to_take + meta1:set_float("internal_EU_buffer",internal_EU_buffer) + end + end + i=i+1 + until false + +if charge>max_charge then charge=max_charge end + +i=1 + repeat + if RE_nodes[i]==nil then break end + pos1.x=RE_nodes[i].x -- loading all conected machines buffers + pos1.y=RE_nodes[i].y + pos1.z=RE_nodes[i].z + local meta1 = minetest.env:get_meta(pos1) + local internal_EU_buffer=meta1:get_float("internal_EU_buffer") + local internal_EU_buffer_size=meta1:get_float("internal_EU_buffer_size") + + local charge_to_give=4000 + if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then + charge_to_give=internal_EU_buffer_size-internal_EU_buffer + end + if charge-charge_to_give<0 then charge_to_give=charge end + + internal_EU_buffer=internal_EU_buffer+charge_to_give + meta1:set_float("internal_EU_buffer",internal_EU_buffer) + charge=charge-charge_to_give; + + i=i+1 + until false + charge=math.floor(charge) + charge_string=tostring(charge) + meta:set_string("infotext", "HV Battery Box: \n"..charge_string.."/"..max_charge); + meta:set_int("battery_charge",charge) + +end +}) + +function add_new_HVcable_node (HV_nodes,pos1) +local i=1 + repeat + if HV_nodes[i]==nil then break end + if pos1.x==HV_nodes[i].x and pos1.y==HV_nodes[i].y and pos1.z==HV_nodes[i].z then return false end + i=i+1 + until false +HV_nodes[i]={} +HV_nodes[i].x=pos1.x +HV_nodes[i].y=pos1.y +HV_nodes[i].z=pos1.z +HV_nodes[i].visited=false +return true +end + +function check_HV_node (PR_nodes,RE_nodes,HV_nodes,i) + local pos1={} + pos1.x=HV_nodes[i].x + pos1.y=HV_nodes[i].y + pos1.z=HV_nodes[i].z + HV_nodes[i].visited=true + new_node_added=false + + pos1.x=pos1.x+1 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.x=pos1.x-2 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.x=pos1.x+1 + + pos1.y=pos1.y+1 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.y=pos1.y-2 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.y=pos1.y+1 + + pos1.z=pos1.z+1 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.z=pos1.z-2 + check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) + pos1.z=pos1.z+1 +return new_node_added +end + +function check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) +meta = minetest.env:get_meta(pos1) +if meta:get_float("HV_cablelike")==1 then new_node_added=add_new_HVcable_node(HV_nodes,pos1) end +for i in ipairs(HV_machines) do + if minetest.env:get_node(pos1).name == HV_machines[i].machine_name then + if HV_machines[i].machine_type == "PR" then + new_node_added=add_new_HVcable_node(PR_nodes,pos1) + end + if HV_machines[i].machine_type == "RE" then + new_node_added=add_new_HVcable_node(RE_nodes,pos1) + end + end +end +end + diff --git a/technic/init.lua b/technic/init.lua index ff904e2..eabf48e 100644 --- a/technic/init.lua +++ b/technic/init.lua @@ -41,6 +41,7 @@ dofile(modpath.."/forcefield.lua") --HV machines dofile(modpath.."/wires_hv.lua") +dofile(modpath.."/battery_box_hv.lua") --Tools if technic.config:getBool("enable_mining_drill") then dofile(modpath.."/mining_drill.lua") end