From 06ce200ee09a648902f045592b5178c71e7c5423 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 29 Mar 2020 18:05:51 +0200 Subject: [PATCH] new ammo textures, injector functionality, core model --- assets/hbm/lang/de_DE.lang | 3 + assets/hbm/lang/en_US.lang | 3 + assets/hbm/textures/blocks/dfc_core.png | Bin 0 -> 170 bytes assets/hbm/textures/gui/dfc/gui_injector.png | Bin 0 -> 4271 bytes .../hbm/textures/items/ammo_20gauge_sleek.png | Bin 333 -> 349 bytes assets/hbm/textures/items/ammo_22lr.png | Bin 211 -> 218 bytes assets/hbm/textures/items/ammo_22lr_ap.png | Bin 255 -> 239 bytes assets/hbm/textures/items/ammo_50ae.png | Bin 178 -> 318 bytes assets/hbm/textures/items/ammo_50ae_ap.png | Bin 182 -> 337 bytes assets/hbm/textures/items/ammo_50ae_du.png | Bin 229 -> 348 bytes assets/hbm/textures/items/ammo_50ae_star.png | Bin 227 -> 369 bytes assets/hbm/textures/items/ammo_50bmg.png | Bin 185 -> 331 bytes assets/hbm/textures/items/ammo_50bmg_du.png | Bin 234 -> 384 bytes .../textures/items/ammo_50bmg_explosive.png | Bin 250 -> 362 bytes .../textures/items/ammo_50bmg_incendiary.png | Bin 225 -> 349 bytes assets/hbm/textures/items/ammo_50bmg_star.png | Bin 235 -> 382 bytes assets/hbm/textures/items/ammo_5mm.png | Bin 199 -> 221 bytes assets/hbm/textures/items/ammo_5mm_du.png | Bin 225 -> 230 bytes .../hbm/textures/items/ammo_5mm_explosive.png | Bin 266 -> 264 bytes assets/hbm/textures/items/ammo_5mm_star.png | Bin 246 -> 266 bytes assets/hbm/textures/items/ammo_9mm.png | Bin 170 -> 321 bytes assets/hbm/textures/items/ammo_9mm_ap.png | Bin 208 -> 337 bytes assets/hbm/textures/items/ammo_9mm_du.png | Bin 207 -> 340 bytes assets/hbm/textures/items/gun_jack_ammo.png | Bin 304 -> 392 bytes .../items/gun_revolver_nightmare2_ammo.png | Bin 263 -> 301 bytes com/hbm/blocks/ModBlocks.java | 3 + com/hbm/blocks/machine/CoreComponent.java | 6 + com/hbm/blocks/machine/CoreCore.java | 19 ++ com/hbm/handler/GUIHandler.java | 36 +++ .../container/ContainerCoreInjector.java | 74 ++++++ .../container/ContainerCoreReceiver.java | 36 +++ com/hbm/inventory/gui/GUICoreEmitter.java | 5 +- com/hbm/inventory/gui/GUICoreInjector.java | 55 +++++ com/hbm/inventory/gui/GUICoreReceiver.java | 57 +++++ com/hbm/items/weapon/ItemAmmo.java | 2 +- com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 1 + com/hbm/render/entity/RenderLaser.java | 4 +- com/hbm/render/tileentity/RenderCore.java | 215 ++++++++++++++++++ .../tileentity/RenderCoreComponent.java | 14 +- .../render/tileentity/RendererObjTester.java | 4 +- com/hbm/render/util/BeamPronter.java | 2 +- com/hbm/render/util/RenderSparks.java | 62 +++++ .../tileentity/machine/TileEntityCore.java | 44 ++++ .../machine/TileEntityCoreEmitter.java | 36 ++- .../machine/TileEntityCoreInjector.java | 174 +++++++++++++- .../machine/TileEntityCoreReceiver.java | 28 +++ 47 files changed, 870 insertions(+), 14 deletions(-) create mode 100644 assets/hbm/textures/blocks/dfc_core.png create mode 100644 assets/hbm/textures/gui/dfc/gui_injector.png create mode 100644 com/hbm/inventory/container/ContainerCoreInjector.java create mode 100644 com/hbm/inventory/container/ContainerCoreReceiver.java create mode 100644 com/hbm/inventory/gui/GUICoreInjector.java create mode 100644 com/hbm/inventory/gui/GUICoreReceiver.java create mode 100644 com/hbm/render/tileentity/RenderCore.java create mode 100644 com/hbm/render/util/RenderSparks.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 7294d9d24..a50a7a3fd 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -555,9 +555,12 @@ tile.ams_base.name=AMS-Basis [WIP] container.amsBase=AMS-Basis [WIP] tile.dfc_emitter.name=DFC-Emitter +container.dfcEmitter=DFC-Emitter tile.dfc_receiver.name=DFC-Receiver +container.dfcReceiver=DFC-Receiver tile.dfc_injector.name=DFC-Brennstoffinjektor tile.dfc_core.name=Dunkler Fusionskern +container.dfcCore.name=Dunkler Fusionskern item.template_folder.name=Produktionsvorlagen-Zeichenmappe item.fluid_identifier.name=Flüssigkeits-Kennzeichnung diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index e7a6f04f2..16b0e6f54 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -555,9 +555,12 @@ tile.ams_base.name=AMS Base [WIP] container.amsBase=AMS Base [WIP] tile.dfc_emitter.name=DFC Emitter +container.dfcEmitter=DFC Emitter tile.dfc_receiver.name=DFC Receiver +container.dfcReceiver=DFC Receiver tile.dfc_injector.name=DFC Fuel Injector tile.dfc_core.name=Dark Fusion Core +container.dfcCore.name=Dark Fusion Core item.template_folder.name=Machine Template Folder item.fluid_identifier.name=Fluid Identifier diff --git a/assets/hbm/textures/blocks/dfc_core.png b/assets/hbm/textures/blocks/dfc_core.png new file mode 100644 index 0000000000000000000000000000000000000000..8af6fe16df8a116be9bf9acf8178853e3bdd0bd4 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfd*&h#@+!LP=a_jsAHE*N72YF9c3anS+XMg(k`bOq2X0WV*rB!30Scpf|OA}Mq&&h zK*Ru%fFz2DkRf!q2qYjil!RUqLf+@x``*mD>#cj&djGuh&&fI`YoGn?{VRJvaB{Gb zlTns|AV|*k%qeFGf`OkfNLmuye2@h};3gh<($-ZPTyfHuk|1bvknO1xt}!{&{k`s6 zZEL^G;-6XV-Mn>+3DemrJ-I~jIr+IUiyjMOC50V>4<_!&?;bSg?`| zhQaTAZb%6m?XN;@`Pm)rQ7D@rT3@DpjNknmjD(H$Oh=h&VRn%K0EX`zv`IQs9nu@mfgLS z2w$zS9&+%xtoDZm!9JP#u)VoPNkP?dtIiSZnobP(ZX~8e&`ET`=&#K&I7qZ`(VDg} zY%Q#g7j$I|ML(NdeKT_yQa+CvIYw0M`f1>i&(hdrF^NPZksPO|r_W_XDpmS8JUI2; znKl$GG(uLleA^(GFt7Y{cYli)GlM(AuowENZ)xr5NVm4J>1=Nwnn3Y0?Qr=S8A>Xu zs(xlrNnt8~c0T5#T8*UDQ}|<|AIF)HzJ2?4BSS;1If^^Z`VhO6=K4}|`=b}Rxo)K% z9V;vEgY#T?Mf^b-%={`#%#^6uBiHmu(jAi$+oNjb?VTOoPsR23`+_uevKW`+;(Sz8 zRP@k{t-E*c_VV&_#yOwY+~%yEffO1}__|u6)$~`0xGzv>54N?*g=;T zi`~nq)WYY_cYy;Es;a!%7}1Buk$1X`xvTWn>+VAF8`T3TnKxxFh_bW$zk-up;Y4}e zJ$a(%iu-{B2PP&akdl*c@c6}nk79D0HW|5gef*d>Iy#!(JQnDgdGFpmBU96Yrlxal zM7PC-1=F8lB;PmaHB-MCIO7TI47U$XjZVq7!3N0>Yl*@f(eChaoXF^krK`(X@ zlmX{#D-;TE@)rpHrN1sMFE0+(N?pBj#gs;=sv<7)*prMbeTR_8DJeSJWR6`-YYGA# zOh2RE(bd(}v0VKyqSMi-UUog?fp-G`-tZ{>nRfuxW(yS+7i&Fh2#JaD82rV<#l;0= z@3KF&WqA0t1$ymAIS=dUX=gDASnS`z!ot#CbGhL^-&{D;8sZuo8w)VrS$khW!`9o| zJ8k$Iw$9oYhps*jN^UQnkY&j1tFE8sa@~!TI|m0}&8=2{pMAeSHEDfq-m(8fEd2KE z+seCkod;k0{yjg^*}iRH;5SJrDbP#{%z69W;CApEcU zVj{)2L+lCnn=y4N{J^$phOYYB1m1cN`LZgxVOA7$nqNAe52L`OtqT=F;R#$JF#-0zpBLWW$4Gr-@a`$R4 z;st7-hb((N7q<=rih@|d%`YV?Oz&g|KozdqIM5A{R-OM*T>E7p7xrz0U_pl6X@D%i zs24doQ3vIF0`HvM2g0P(D!wRnF22?(!QyxE3!5eAkl+9mZ zzuadEB*RA!@1gq!@0e#smY8lu$NqLCDOgnASES~nmS`za;9JjRL=X2(ZB&0|d$;x? zz%vJA4eAPL$!zcyc#+hFv-N7qd-im+v^0(xV z)YFDXAdsrqQwN7%1j8&As|&@B$0sHxlB`#yBqcjoEbeiQuOmpN%LdNyIXbd(YHf9C zy7wH0!Uzpgg(la1F^3f)KjeI4gu+bEq4)9M?b`sfEaFyv!(tBryd*zdFL6n3rzJ zY#!6dy>kNSs$N!meTtf~g+&RAyr4D?056qFX>O zc8QsqnYH!x0x8P%b7}7-zv-d%3_P)?^0ezF61E)rDDDT9SaB$tfs= z0Z{>!la-bI1{%Gvus|>t>-&%Q+fYl!YuuX>P?2F>|r3QL729bdfchAnwKBt9AS()Wp zlv5*$`IVx@iL4#5bHfjQh)6}n8<1GA?c99$#_A%qzT=7Fbc#vo8V8@3V_9X~@VYg& z@9aVB-MbPhYHFBr*Q_W57hb&@rg~%9_w>fVdVI3Td&u=YwSofVkSyv}~ z_~2XWaTe#y`CX${4=GxYKYaKw!BzWmP|#>c!X-oH$~ggWQ4&2IR?}Hf9eOsnf2b?G zHjvDlC*=bz3ywk^ii?VT2y0$I-@o5(NcD- zDUR>7ipS2qJKBlhJgm#l%*yHnoLykjIz!#SAl2L33&3E9Z%0U2356IGilSqJq z=%-<5oXzj;921_2__A@ETf$vw>wF>wj_ws927!I4TB4`Eja6eres%s}({rE2lGCw{ESuB8*ODFvVv0F&`0$QVCIQ1#8r~SdCl z^73UA3LcmSa0!4fDJlE28rLOo53Es;F)_MG&YKYl5f0ZpscK%w(a){b~3f#57&d+C&N0BVWb;0 zHj)fq1Cz`*HXClF9L>@SspHbT7l*q3IxDu3#`?-1p)VQix*8Ed^wE>5n6<$w7pu{p z{E<}$&zOhj!bx$tN}9Q6WkN@|m}2t8p|7ADWgRY%fZaD`Em=C6`{CLdi#*G6B@Z3y zS>ehxfY(eFv8R2Nq)q;~Y$wgvKnVb`kd;LMo=m0#n`UzWcoCSp^8S17Ql*ViyRWZ$ ze-P*!yIZ1F^;c?_p#mDI=&F^U$wA9{==C!#+R|=J_dck`&GLkb{t8wj95%5#EnCd- zL~*RzgHvEKDg(w03XHIr*M8BnyXA}3;9}<%*ucnR@?LmVdAD>(Ae^8UB+c5BC_$%C zGyFFC_X|M#J#M_z>%a`8=z@&Vn{%3JAyIlJ|pU#$mHt+e%TJ#^brt93^gz&3dr@uTr znjR2-?1~{bR~8|4JJRhN(kA*8R zA6lii%Zzl8q(3hWa4(+T+jw~u>7n@5{4wm`?soqg_phs;Qlch)gpr8yP)tI4)$DN> zpOe?waNdEDRr}D2b#c@GIrk#zQ^yV?&){zdlBMbsR%`Keo?7G9~5 zfKb}Wz36t~$5D3XEXh;;_x1GO9pRtLZNNW*45+wEd?~Ljq;vnQJiXi>B^rE^1f02O zq6)<;@Sz{Mu0ZFnj^&97_tOK9K;uvNGDVVehZ7h>!%|@3|Np=GtVB}OcstH{>!Y$i PvavnwaH{0wg z6HMbDuuPdhVPj*dg@UDa+u213q;c-9b}T~7p4q#g;)5*)-uw2=0RJHUiP?k$5vjEn zMNvRROf2A>(E44ZAO*0!3x6yCN<;vFvMgI6her;J z27s@@m57v?m6`Q@3T0*`qSl*)D;N<`0PxR({VuOvr%AtR5{10I&cn_*Wo8{;?5#jH z8URK_;0~6Dy*&HCpx;9bvbIT{L3MVeIvMKh@x0a~Y!D-x)2`s;xP$4-1F*G&>zg|a z`aR@X-LJu0Q7fK7Z%3VZlgUuOhua!NA#J`^{VCj}PgJvt>dIfjH~;_u07*qoM6N<$ Ef-_~0#sB~S delta 290 zcmV+-0p0%H0?h)DG=Bt1L_t(Ijir&XO2j}AhQB+kLd-T=g~fgg%e;Z5Z{cJ36xP;u zmOg`EDUvR5as*Da$Yw*Z8;g)*&&+~{KP=14&iwn&Kk!eiQV-Tz>HB^kd+*g+HEE2I zIQHHr>(?4VQ51`2V~ncwM9l(aS(4{D!!Qs+ARcEy;GC1WxPPweq%TQyJ48mL+aUmL zgE;4;sw#2LiM3Wz z;O$QLAYP-yBR${N6dCm6bo{7)wvL+j_xq=!>Psh>6|7vmkTq?d|`kq@*z1zI~g4 zfq~)w>eZ_m2^qkIE^zzyZHA8@KQf4ki7`womL}*D6c-#kc#x5Sf#JW7jt+x1#|DPX zifjf3hN=IvdY=+>2?|JdVfeqbPv`&hT^|4czi#_aj7vs}At%#{r71Tg*@c00&B%t3 ct(j&30Mol;5>mDOr~m)}07*qoM6N<$g3)YJrT_o{ delta 167 zcmV;Y09gOp0n-7HG=GXoL_t(IjbmV-C8(&V_}|db@E@NVCVZMXI5-%7{P@98P*8x= z5S#`O3s`VT{P^($PXGM*lXL?(I5-$MI5^06fsXJ&25wFkhOgiMFns&|2d4oPhry@; zcwzw-^54GyVfgj~cP!vEfQyrbftwSjG#p^{!jf*w|Hx_J+aQlW4DCgFcrz8*002s_ VGT=Kx0uBHG002ovPDHLkV1l0gOF94m diff --git a/assets/hbm/textures/items/ammo_22lr_ap.png b/assets/hbm/textures/items/ammo_22lr_ap.png index a78f15e463006a80390c184aa33765f4d1d324d8..a919ea35d50c45d64d19890e951b67461b4f30cc 100644 GIT binary patch delta 195 zcmV;!06hQy0q+5jG=HW^L_t(IjbmUKen44S`MZaggkOX)Ya9oN)ly=y1M#* x7{+G^-hjoW8QqX%7Y5Q@fNTg(NkW=w1^@^=ZIMO9zNG*F002ovPDHLkV1h^sT)F@N delta 211 zcmV;^04)FS0sjGzG=H{9L_t(IjkS@x4Z|Q5MXxO+J|2WF5+$8y$Pj7LWr-A7Bm1Og z5W_FIiM2M5*vNgpAr~jthc8bN5g$y9#^n;z+mM3n54J8xV^`MOaV?>n zV8pjcz6iQX>?T1axm#pBWb3+4k}i?ZCkoj4pAZG;eClcxpt`=&PH>Z?GrTGJHTzY=l|(7F8}eVVZx`Go0FA+i-VN`pCLF6 zAQrITl91D2WZ>auWcczGf=M=jhntmwmxq;n7x411GVt-T5j23}Fc<~~;0(m)FTXK- n{_>mQ%U1{{*#Kgrao_;};M*E4R*A`l00000NkvXXu0mjf@hd*H diff --git a/assets/hbm/textures/items/ammo_50ae_ap.png b/assets/hbm/textures/items/ammo_50ae_ap.png index 3b5dfbbcb38733671a0f9e89292ef6994fec23ec..5d370b1057321919154441f6d70ee006c83b0c7e 100644 GIT binary patch delta 295 zcmV+?0oeYw0nq}GGk*aHNklYU9EDFx!J*tiDM83k${j9~c8Tv!B(WG0yczTBcLu(0%coGfZ;bvvv$nfI) zAqEC^AqEjeF}yB;8=zLt@SlN!fnn|*2F7*Ut}vXt@`NZu7?CwIFfcIOYJ`X-yDHn_}$Nf)sK~t+%&+s3H zaT${A!tnq9lPeNT&G=k^%@CZLak&855L|KuT|iR+0E^m*Ezg-Zv;Y7A07*qoM6N<$ Ef>F$rd;kCd delta 186 zcmV;r07d`Y0_6daGk*Y_NklKXpuYGhz!U|?WyRldf+!_CU@ct1F*S(Sb)<7Br_R6u?xu6%)kJRMr`2u o%Wn*yzx;+rBgqE9qH*v806ncVn1RPmc>n+a07*qoM6N<$g2$Fw761SM diff --git a/assets/hbm/textures/items/ammo_50ae_star.png b/assets/hbm/textures/items/ammo_50ae_star.png index 78f6bc437fdcaecc7a2f748360263312e9fd2c31..0553cb5ef658a607b1fde1ca5dc57d0c8d5b8bee 100644 GIT binary patch delta 327 zcmV-N0l5C-0r3KmGk*anNkl#UyH0oZBZ8>?95G^(3aQ*>x;w|B7S5qJ@HN7o)=%-~Z(X)Kt`|&+Lp67*sC#9;Q zR8@ZZ-_*^O$`-xe6M!_ERbv()F}&pSJF$5%c*U}oI6q9!On;IX9fsy8ipVBws8V4j zB(C85bpsIFUL%{Vv3Gm`?=PrQ0cgqo>EqNoV+nk}ZoED0vYejh`MwQv3#2mEw@FO> z;o=qpLIGH%&Em>BsSIBxnE?D25?AoNuIP}f*A>@o zO!O=lk?S*C%0NX#`bVOhO#sKqF?vp`v$mZNi~3no0Wl=hn0L6@ba)S@bR({G=SnTpq>Fs zmtMvj-*^px#WSHqgAK4SFfcF}80a$~(+ms@49{PFWBB~#H!;JPuMmva1s5({WI(1F m7!c9O!wta%0l8s7F#rI7=r476g38hW0000y77_SS^ zwk=tf0SJIG#<3;^K_F#WN}8rtX-2!3qA2ivAJ6l6TAm#QaesdfbzM7rSGYXM(Qyb= z0&w^6F<7bdkVMGsjbfqBaZfz}OkNE_-2K67jRTDUEELQx)Nh(T$Y_7i(Rjji?xEwb zcQ2g;ofK@CU0pMs)0?ChU<3KH!fK84{Mzu=Z25fOz<7emD|8%^L>&HelL&cvRFXu9 nZ12U&+y}8X?;1jmHV^3w^W0|B delta 142 zcmV;90CE4z0=WT@Gk*YZNklv0VFAppEF5u;1W#HpwBWS?D2jajR wfHM%Ezx>AV`O9yHFJB>;WCMteMv4Id_3;`p%GA@z00000Ne4wvM6N<$g4>fnf&c&j diff --git a/assets/hbm/textures/items/ammo_50bmg_du.png b/assets/hbm/textures/items/ammo_50bmg_du.png index 2702520cb03f7b1a2db465d6d8d7222fac3eac84..38ccdfffbd4321bc238d222012c204438c36f43f 100644 GIT binary patch delta 342 zcmV-c0jd7#0e}OLGk*a$NklVdu2%d&gj^j18df{gc3{l%FevC$>C z4KzUVJ9(_<8=R5_cml9jf6}G`Mv#p}AWKD)k3sJn0^rFcNG#fDw9&v9fSd{GRdeh{ z1sP|sa)A2J@gxh&DV&m}%tece9}d5Iu8nLLO>$<2^jZOi@4P+sXtq3cCMpN6jhr8w z@^ZN;(mxUjs!!6t-j%QuJuHqw8f~<*3!knZ@OpOz@g&Wbhf}g}?a0E38HAj;HX=b) ol;Y8u1)?1INgReuo0+>l0SMKLODEY+761SM07*qoM6N<$f>zm=uK)l5 delta 191 zcmV;w06_nM1L^^gGk*Y~Nkl5X(q=I76t|ehFgscjB51^|8F%iFv28Um9H`IaI-Re`TCpT z%h%rwy`;K;hntmwmxq;shZ}^ok_;eMGl~J^ t0v22n&tHCH`26KJJQ_(h02Ylj2LQb?H01fLsB{1T002ovPDHLkV1o6+QN;iN diff --git a/assets/hbm/textures/items/ammo_50bmg_explosive.png b/assets/hbm/textures/items/ammo_50bmg_explosive.png index 0f8481ce5136b1714ca0119eb761be433c5879c3..1dc79f9e0c6835fad7f2139444d883e33c80754e 100644 GIT binary patch delta 320 zcmV-G0l)tG0qO#fGk*agNkllpwotf{U$ILz~LE2X;P<+^w!k#pqv|X{_yfTW_201Hh~ z#KIDlMit+4a{H2Tka59~+WIDy2DwgV4%Cm7hTINDJdP%OJPiw-m;ef=b5GXqAl+V! z?>PkSoK{gJg*ix3lso&tMRymr0vBm=tS`mM%j!=dd4Mz|SCH;O5#%RL>G%X@Y=X+z SDsWu@0000v delta 207 zcmV;=05JdR0{Q`vGk*ZFNkl?J&il^|Gq z5J5z=$tD&l)*?RyWj9I)PBX25y&rh+F~Fc{nHn zaGNTj;kPD1!~iT(*qe$m0Gy61R3fo?iOoyk5HPqISk@*rR7fJxN`~W`6~q?NWdN-t zGd)2oiAwxN?GeS=2(PNI!4Ul4AodL|*MiKJoj3ky@a-E1;{{9?IC}`0fUE!j002ov JPDHLkV1i}=Rr3G< diff --git a/assets/hbm/textures/items/ammo_50bmg_incendiary.png b/assets/hbm/textures/items/ammo_50bmg_incendiary.png index 51ebe58f501e9e29171db26e9e30d89c04346930..240346f90c2adf72f68649cff5adba8b0af2bbff 100644 GIT binary patch delta 307 zcmV-30nGm40o?+SGk*aTNklXnSzkH zLpGt4?mmHzZq9-M$)KH@r4NuU5&8gCx>bt%aZyQ=+uB;sb`R(O?*AVS{70pIB<&-A z(V75n3uvEuJAruWA@bnK{AxRhnSZ>$3^>@|!?xh|qO}pkD1W**IfDC-7J=^&#R&lC z*RO_7Tmk@uE^_86I_i*0tpPw3Co3V9V&iUz0hs`F6f}<&f$so`=pbgXQL3s%-EI*0 zj&?6U4g|#binQc{5zTg&x{cOJDS|f28i@J*I}<(RagdQ_Q)c54R4t-7A@ChSH+L%n zB9qm}6S~OrjVzMTMPzy@OX560*bJf_SSQXyew*34J^@mKdbo`ZGjIR^002ovPDHLk FV1g?%jHUnp delta 182 zcmV;n07?Jd0^tFWGk*Y>Nkl5>MZbT?Hgx)<09lmjl-aiE}Fz5{If z3fEK4BNlue@O6M=F%D2r0|vmxg0nKsfdQjgI}G5gkhtwApf5S%=kOe@_XmFi^u~C* kzj*r4#yA%+HO9qy16nyI=^Cv7UH||907*qoM6N<$f=dZb`~Uy| diff --git a/assets/hbm/textures/items/ammo_50bmg_star.png b/assets/hbm/textures/items/ammo_50bmg_star.png index c5432573ef5d82614afa815acdfee5fb22e4edb3..6f3248455598496a02bd9445dbb2e1666dcb4336 100644 GIT binary patch delta 340 zcmV-a0jvJ&0saDzGk*a!NklY5Qd+G1F?{xgb>gstsHm;Yg6P%ktzhX z7f%puH6W?3NvD=}T6xuhq);JXilh#DA*oVI1WDmv7#njQ_n}67VcDJ8nRlOA_zx*% zi&D1yrB?%(&0c6WPXPqLb?wx`PNmYmbUG7hweA+8Ne6?$V1Gg;vw~slaCyA`D-&&g z==H8sfK)1VR^Ja%wKC8ZfTQ!*#E~KwmWkA>Iz@d0Z8-;k+wLZsXyL@wBPkdQKv9SM zrtZ_knWV#sh?dsK7ILUsIrd*71Q81QEEAFGi3FQ90M8p@7+ZMWFs|SKlX_L> mVDIcR4k_vNFv(9f3+n@gGk*Z0NklGQ7)&tHCH uc=75RegnF@V;GTX1_nel@^C{i%>V!+$S&p|Ft^+Q000042B1#u9ij_1@nIh75 zdwagIfq}sv^Wi$5EpoRbd002ov JPDHLkV1lwtMmqoi diff --git a/assets/hbm/textures/items/ammo_5mm_du.png b/assets/hbm/textures/items/ammo_5mm_du.png index dce1564485240c653eac9868399cb9294a399d3d..3e5de3d14b5c99f26c4d264dee0c5b48acfc595e 100644 GIT binary patch delta 186 zcmV;r07d`d0pLY`gsu;txV(I_HxB>;pn9BUOOt$<#tyud1 z|JQB*$ucC_h2j6!KAr#1cX<$Rh*~`ZiXxH>QLAV855p80LNm5^aJc~85WE44OEbD5 o$u3yb5pn^tAvh%oX{H$f0A?|G+S&kQ=>Px#07*qoM6N<$f?u{)X#fBK delta 181 zcmV;m080Pn0pS6VG=G>$L_t(IjbmUK)S#-fE0~ZqqZ>lB3vM+sFe1|=8$gK*;5Mq&GyF$(!HvTq|M_^?7(RXe z#qjydZw6D(jaXebNWy?z%?u0-3@o@LK7aWQr@wstO}YWRJT9yZe7tM~U4S(yqsPFP jufG{KFLWh2fQbSC{|-ZPbo~0K00000NkvXXu0mjfbh=UU diff --git a/assets/hbm/textures/items/ammo_5mm_explosive.png b/assets/hbm/textures/items/ammo_5mm_explosive.png index f5037f07d150a83900c6eda015da6e6c92b8d992..9ee89e1e5c305a0a1c7f0b67e81d2d9b6d6c0599 100644 GIT binary patch delta 220 zcmV<203-j30*C^TG=INIL_t(Ijn$H|4#7|ug};io=qNFW$LQcax^PX>g&4Xq(Mcy> zqKTp6Aq*yo!GOUiVLXOPP;H3B&@=t_o_oKX`~MdTFDtcH&`XNW@XhCl7v)NS%sSj*+hDmpf>id zL9i9<#1!U>DaPUviIR`M!qePhhC6o{2L75fKqNt$dOF_@xf{sJeVCL6NWTwR2Ipga ziVlFxbwi;AYWQk`i3=M~YY9nUFn-10^HgO=3%@(#rxmV&fhmMM_nwl*P5Vmh5go%@&%$eXT6v<{=~=J Y0L2L Y07_qcj(0KHU;qFB07*qoM6N<$f_S212LJ#7 delta 202 zcmeBT`o=iHq<*cZi(`mIZ*qdfm4ug@0awkHBSolw$;~(t&+^Id2Grc=G!8~ zYj)t!fddB;5*D0q@G&+pFsS+WN!qXe=P&8~+2d$$W!IiQaiBqxIewqhhWtNyb2hq}F)&zWI&Q11P!whW0#8>zmvv4FO#nMJ BT#Wz# diff --git a/assets/hbm/textures/items/ammo_9mm.png b/assets/hbm/textures/items/ammo_9mm.png index e09cffa6c11c77060f464a500026b7e886539029..60950815d8a29cd66711c7a09368d11a96e1b591 100644 GIT binary patch delta 278 zcmV+x0qOp#0l@;0G=KO>L_t(Ijn$B`PQp+ag})jSSS6$(VKB^efd{Zd`v6_;6SRvu z;^0f@rkhXDgmlqKhRXxM(#6~r8z+-)I{i*1&|WZ@IC!Re&%Ni%`G5HLa_WXsN~&|3 zrj7TyTH6=j_a#XZ0E{sJ@)P95W*TEC%M#ahd6*8w_Gd4k3V#pf?KQ{Gn#Xm{xi-Mvj(bpzn>1qX5g zn6RKfKBqUt+QhoV3Nm}nS?23alQf&7qJTK$;9_?ahse{NCvk|#`dW?(+aO1Ww;{g{ c|EazK+<0JI_z!K+$^ZZW07*qoM6N<$f|9U?LI3~& delta 125 zcmX@ew2Ebo@_W-u~zK@;1)-X?|s5Y#?0I_Q0ee!eJw$ z&JGoouk{8SHgFsM`T4W;;rH$CTZ#{^V5~@D6#KM)zirZw&!1&qvTZ0jX$VxK*lDA1 cx3Ywhp(I&GRISP^m;nepUHx3vIVCg!03xJzzHW#JDCJ2N{U9}E9JR=450 zt~B>N&wKN3M(c%AO42k1Kx+*kLy(v->-BWItV&n4_0FrL^(lTo(;aQ})0nE;%z z-xBi#U2E;$Akb{-)lkq4wZk1hZJ+(#{1 TIc+vV00000NkvXXu0mjf7sEx& diff --git a/assets/hbm/textures/items/ammo_9mm_du.png b/assets/hbm/textures/items/ammo_9mm_du.png index 7e91e207680c3c318224d67cc06b703d35b941f9..c388b044e96ca748ff35055ca7bae5f2f8553670 100644 GIT binary patch delta 298 zcmX@lc!g<#aXllqr;B5VMQ?I~#HR+qScjW_Kka*Jzh8*usVq6rbY`OA)SvT>G+P^i z;NiEYw|RizKd0oO7T*sbo_u_5ia@Yv@{BN@zw)!C=CB~ z@ME4&mzsF=&&ekxB#0*o1d1GfDdd)N7G(Q&DaE9ddOZJ|_moKVl%zN#d1_Y z!lNwl$NsJU&;NgpmHYpHf8KBVwGqGmzdl^}e{$@FE31GOv?s>2sq8lR^Z)-6mSAH$ s@dRTQ<>hHHdJbkR(`6jRFNiQOXh~IjN}ro@h5-mXUHx3vIVCg!08?Xvod5s; delta 164 zcmV;V09*gm0?z@EGk*YvNklAs=6u|L+!UdWo2nHc1*ToDsNSzAB&8e>a z8h)dGigv6YqC>^O!A*!L2AYC8RCpcISc6K^x7=~Z``x<-4^Cp-LjWeje615sv3Y+$ z&=3irn~I5_GOP*)&IDT(8l?RHBX$E??DTCEnd*$itftJSJ{W|UH5trcU83i+i w5@U=2)x%OCrU#ms(uU%JI&TEMPJ`Rf6Q?6 z0d`%gTxTs#Jm(Vd{QX!v5VKN)+1sRo_wUn2YXdmv0C-pq(0Yf+0PnkiM6GCGjKNx4 z*sd-;r|S?+7yX$2@_1SgeVsS0|NuYi+3y}83K1E%n(swh#m={ zKMXJ4u@LkQiUc`^U8R#w94zpq>Ue_08q{}Y<`{U=E?HbY3(jBE(mnsEUD+md#uCw`{>00000NkvXX Hu0mjf`@d`U delta 219 zcmV<103`pd0*3;SG=IKHL_t(IjbmV-5HRABSU*$Y|LeC1>9nf*Sk+<`oYkiIADRE+ z^*06v1_p+@{+Af)nXnlkDvZz%(<~v%h1I1jSVb8a7<5&CGYIlCFuecB%JAYH3&ZQT z*wtZm0V!bA02~H%%(KT3o3X|Ws{uHpv22nr11l>#!|&fe8B~7#`o_S(@Pl|4eEISQ zi`Z-8UBJU5!tnX?D+X3pPKMvVzcc*){eyvrM-;08I5U&2ZRUSuFPuEN5T{y-006ZW VJRd$syO96@002ovPDHLkV1k3BXLSGo diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 7ee83ba6b..210ec0cf1 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -467,8 +467,11 @@ public class ModBlocks { public static Block dfc_emitter; public static final int guiID_dfc_emitter = 87; public static Block dfc_injector; + public static final int guiID_dfc_injector = 90; public static Block dfc_receiver; + public static final int guiID_dfc_receiver = 88; public static Block dfc_core; + public static final int guiID_dfc_core = 89; public static Block machine_converter_he_rf; public static final int guiID_converter_he_rf = 28; diff --git a/com/hbm/blocks/machine/CoreComponent.java b/com/hbm/blocks/machine/CoreComponent.java index 05eb1493d..ff3e4ebaa 100644 --- a/com/hbm/blocks/machine/CoreComponent.java +++ b/com/hbm/blocks/machine/CoreComponent.java @@ -66,6 +66,12 @@ public class CoreComponent extends BlockContainer { if(this == ModBlocks.dfc_emitter) FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_emitter, world, x, y, z); + if(this == ModBlocks.dfc_receiver) + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_receiver, world, x, y, z); + + if(this == ModBlocks.dfc_injector) + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_injector, world, x, y, z); + return true; } else { diff --git a/com/hbm/blocks/machine/CoreCore.java b/com/hbm/blocks/machine/CoreCore.java index be3fba10b..61f5a70ea 100644 --- a/com/hbm/blocks/machine/CoreCore.java +++ b/com/hbm/blocks/machine/CoreCore.java @@ -1,9 +1,13 @@ package com.hbm.blocks.machine; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityCore; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -32,5 +36,20 @@ public class CoreCore extends BlockContainer { public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_dfc_core, world, x, y, z); + return true; + + } else { + return false; + } + } } diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index dcd25fbd8..a58364db6 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -786,6 +786,24 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_dfc_receiver: + { + if(entity instanceof TileEntityCoreReceiver) + { + return new ContainerCoreReceiver(player.inventory, (TileEntityCoreReceiver) entity); + } + return null; + } + + case ModBlocks.guiID_dfc_injector: + { + if(entity instanceof TileEntityCoreInjector) + { + return new ContainerCoreInjector(player.inventory, (TileEntityCoreInjector) entity); + } + return null; + } } } else { //NON-TE CONTAINERS @@ -1571,6 +1589,24 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_dfc_receiver: + { + if(entity instanceof TileEntityCoreReceiver) + { + return new GUICoreReceiver(player.inventory, (TileEntityCoreReceiver) entity); + } + return null; + } + + case ModBlocks.guiID_dfc_injector: + { + if(entity instanceof TileEntityCoreInjector) + { + return new GUICoreInjector(player.inventory, (TileEntityCoreInjector) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/inventory/container/ContainerCoreInjector.java b/com/hbm/inventory/container/ContainerCoreInjector.java new file mode 100644 index 000000000..59e301183 --- /dev/null +++ b/com/hbm/inventory/container/ContainerCoreInjector.java @@ -0,0 +1,74 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.TileEntityCoreInjector; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCoreInjector extends Container { + + private TileEntityCoreInjector nukeBoy; + + public ContainerCoreInjector(InventoryPlayer invPlayer, TileEntityCoreInjector tedf) { + + nukeBoy = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 26, 17)); + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 1, 26, 53)); + this.addSlotToContainer(new Slot(tedf, 2, 134, 17)); + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 3, 134, 53)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 3) { + if (!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) + { + return null; + } + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/container/ContainerCoreReceiver.java b/com/hbm/inventory/container/ContainerCoreReceiver.java new file mode 100644 index 000000000..16953d61e --- /dev/null +++ b/com/hbm/inventory/container/ContainerCoreReceiver.java @@ -0,0 +1,36 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.TileEntityCoreReceiver; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerCoreReceiver extends Container { + + private TileEntityCoreReceiver te; + + public ContainerCoreReceiver(InventoryPlayer invPlayer, TileEntityCoreReceiver te) { + + this.te = te; + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return te.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/gui/GUICoreEmitter.java b/com/hbm/inventory/gui/GUICoreEmitter.java index 8ac34de76..38e90334e 100644 --- a/com/hbm/inventory/gui/GUICoreEmitter.java +++ b/com/hbm/inventory/gui/GUICoreEmitter.java @@ -43,14 +43,13 @@ public class GUICoreEmitter extends GuiInfoContainer { this.field.setTextColor(-1); this.field.setDisabledTextColour(-1); this.field.setEnableBackgroundDrawing(false); - this.field.setMaxStringLength(5); + this.field.setMaxStringLength(3); this.field.setText(String.valueOf(emitter.watts)); } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.field.drawTextBox(); emitter.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 17, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 17, 16, 52, emitter.power, emitter.maxPower); @@ -102,6 +101,8 @@ public class GUICoreEmitter extends GuiInfoContainer { int i = (int) emitter.getPowerScaled(52); drawTexturedModalRect(guiLeft + 26, guiTop + 69 - i, 176, 52 - i, 16, i); + + this.field.drawTextBox(); Minecraft.getMinecraft().getTextureManager().bindTexture(emitter.tank.getSheet()); emitter.tank.renderTank(this, guiLeft + 8, guiTop + 69, emitter.tank.getTankType().textureX() * FluidTank.x, emitter.tank.getTankType().textureY() * FluidTank.y, 16, 52); diff --git a/com/hbm/inventory/gui/GUICoreInjector.java b/com/hbm/inventory/gui/GUICoreInjector.java new file mode 100644 index 000000000..850e10eb2 --- /dev/null +++ b/com/hbm/inventory/gui/GUICoreInjector.java @@ -0,0 +1,55 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerCoreInjector; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityCoreInjector; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICoreInjector extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_injector.png"); + private TileEntityCoreInjector injector; + + public GUICoreInjector(InventoryPlayer invPlayer, TileEntityCoreInjector tedf) { + super(new ContainerCoreInjector(invPlayer, tedf)); + injector = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + injector.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 17, 16, 52); + injector.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 17, 16, 52); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.injector.hasCustomInventoryName() ? this.injector.getInventoryName() : I18n.format(this.injector.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + Minecraft.getMinecraft().getTextureManager().bindTexture(injector.tanks[0].getSheet()); + injector.tanks[0].renderTank(this, guiLeft + 44, guiTop + 69, injector.tanks[0].getTankType().textureX() * FluidTank.x, injector.tanks[0].getTankType().textureY() * FluidTank.y, 16, 52); + Minecraft.getMinecraft().getTextureManager().bindTexture(injector.tanks[1].getSheet()); + injector.tanks[1].renderTank(this, guiLeft + 116, guiTop + 69, injector.tanks[1].getTankType().textureX() * FluidTank.x, injector.tanks[1].getTankType().textureY() * FluidTank.y, 16, 52); + } +} diff --git a/com/hbm/inventory/gui/GUICoreReceiver.java b/com/hbm/inventory/gui/GUICoreReceiver.java new file mode 100644 index 000000000..c2a0db956 --- /dev/null +++ b/com/hbm/inventory/gui/GUICoreReceiver.java @@ -0,0 +1,57 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerCoreReceiver; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityCoreReceiver; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICoreReceiver extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/dfc/gui_receiver.png"); + private TileEntityCoreReceiver receiver; + + public GUICoreReceiver(InventoryPlayer invPlayer, TileEntityCoreReceiver tedf) { + super(new ContainerCoreReceiver(invPlayer, tedf)); + receiver = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + receiver.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 17, 16, 52); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.receiver.hasCustomInventoryName() ? this.receiver.getInventoryName() : I18n.format(this.receiver.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + + this.fontRendererObj.drawString("Input:", 40, 25, 0xFF7F7F); + this.fontRendererObj.drawString(Library.getShortNumber(receiver.joules) + "Spk", 50, 35, 0xFF7F7F); + this.fontRendererObj.drawString(Library.getShortNumber(receiver.joules * 5000) + "HE", 50, 45, 0xFF7F7F); + + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + Minecraft.getMinecraft().getTextureManager().bindTexture(receiver.tank.getSheet()); + receiver.tank.renderTank(this, guiLeft + 8, guiTop + 69, receiver.tank.getTankType().textureX() * FluidTank.x, receiver.tank.getTankType().textureY() * FluidTank.y, 16, 52); + } +} diff --git a/com/hbm/items/weapon/ItemAmmo.java b/com/hbm/items/weapon/ItemAmmo.java index 134218181..c8eee5f66 100644 --- a/com/hbm/items/weapon/ItemAmmo.java +++ b/com/hbm/items/weapon/ItemAmmo.java @@ -90,7 +90,7 @@ public class ItemAmmo extends Item { if(this == ModItems.ammo_44_star) { list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly decreased damage"); + list.add(EnumChatFormatting.RED + "- Highly increased wear"); } //5mm diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 09ce4431f..9f958b28d 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -345,6 +345,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreEmitter.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreReceiver.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreInjector.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCore.class, new RenderCore()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 2e9c6d210..273df4016 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -521,6 +521,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityCoreEmitter.class, "tileentity_v0_emitter"); GameRegistry.registerTileEntity(TileEntityCoreReceiver.class, "tileentity_v0_receiver"); GameRegistry.registerTileEntity(TileEntityCoreInjector.class, "tileentity_v0_injector"); + GameRegistry.registerTileEntity(TileEntityCore.class, "tileentity_v0"); GameRegistry.registerTileEntity(TileEntityMachineArcFurnace.class, "tileentity_arc_furnace"); GameRegistry.registerTileEntity(TileEntityMachineAmgen.class, "tileentity_amgen"); GameRegistry.registerTileEntity(TileEntityGeysir.class, "tileentity_geysir"); diff --git a/com/hbm/render/entity/RenderLaser.java b/com/hbm/render/entity/RenderLaser.java index 4d28a913c..4cc75fab4 100644 --- a/com/hbm/render/entity/RenderLaser.java +++ b/com/hbm/render/entity/RenderLaser.java @@ -42,8 +42,8 @@ public class RenderLaser extends Render { int init = (int) -(System.currentTimeMillis() % 360); //BeamPronter.prontHelix(skeleton, 0, 0, 0, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0x8080ff, 0, (int)(skeleton.lengthVector() * 5), 0.2F); - BeamPronter.prontHelix(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff5000, 0xff5000, init, (int) skeleton.lengthVector() + 1, 0.1F, 4, 0.05F); - BeamPronter.prontHelix(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff3000, 0xff3000, init, 1, 0F, 4, 0.05F); + BeamPronter.prontBeam(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff5000, 0xff5000, init, (int) skeleton.lengthVector() + 1, 0.1F, 4, 0.05F); + BeamPronter.prontBeam(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff3000, 0xff3000, init, 1, 0F, 4, 0.05F); } GL11.glPopMatrix(); diff --git a/com/hbm/render/tileentity/RenderCore.java b/com/hbm/render/tileentity/RenderCore.java new file mode 100644 index 000000000..abd740d57 --- /dev/null +++ b/com/hbm/render/tileentity/RenderCore.java @@ -0,0 +1,215 @@ +package com.hbm.render.tileentity; + +import java.nio.FloatBuffer; +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.util.RenderSparks; +import com.hbm.tileentity.machine.TileEntityCore; + +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class RenderCore extends TileEntitySpecialRenderer { + + private static final ResourceLocation sky = new ResourceLocation("textures/environment/end_sky.png"); + private static final ResourceLocation portal = new ResourceLocation("textures/entity/end_portal.png"); + private static final Random random = new Random(31100L); + FloatBuffer buffer = GLAllocation.createDirectFloatBuffer(16); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + TileEntityCore core = (TileEntityCore)tileEntity; + renderStandby(x, y, z); + } + + public void renderStandby(double x, double y, double z) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + GL11.glScalef(0.25F, 0.25F, 0.25F); + GL11.glColor3f(0.5F, 0.5F, 0.5F); + ResourceManager.sphere_uv.renderAll(); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glScalef(1.25F, 1.25F, 1.25F); + GL11.glColor3f(0.1F, 0.1F, 0.1F); + ResourceManager.sphere_uv.renderAll(); + GL11.glDisable(GL11.GL_BLEND); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_LIGHTING); + + if((System.currentTimeMillis() / 100) % 10 == 0) { + for(int i = 0; i < 3; i++) { + RenderSparks.renderSpark((int) System.currentTimeMillis() / 100 + i * 10000, 0, 0, 0, 1.5F, 5, 10, 0xFFFF00, 0xFFFFFF); + RenderSparks.renderSpark((int) System.currentTimeMillis() / 50 + i * 10000, 0, 0, 0, 1.5F, 5, 10, 0xFFFF00, 0xFFFFFF); + } + } + + GL11.glPopMatrix(); + } + + public void renderVoid(TileEntity tile, double x, double y, double z) { + + World world = tile.getWorldObj(); + GL11.glPushMatrix(); + + GL11.glDisable(GL11.GL_LIGHTING); + + random.setSeed(31110L); + + GL11.glDisable(GL11.GL_LIGHTING); + + GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + GL11.glEnable(GL11.GL_TEXTURE_GEN_S); + GL11.glEnable(GL11.GL_TEXTURE_GEN_T); + GL11.glEnable(GL11.GL_TEXTURE_GEN_R); + GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + float f100 = world.getTotalWorldTime() % 500L / 500F; + GL11.glTranslatef(random.nextFloat(), f100, random.nextFloat()); + + Tessellator tessellator = Tessellator.instance; + + final int end = 10; + for (int i = 0; i < end; ++i) { + float f5 = end - i; + float f7 = 1.0F / (f5 + 1.0F); + + if (i == 0) { + this.bindTexture(sky); + f7 = 0.0F; + f5 = 65.0F; + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } + + if (i == 1) { + this.bindTexture(portal); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + } + + GL11.glTranslatef(random.nextFloat() * (1 - f7), random.nextFloat() * (1 - f7), random.nextFloat() * (1 - f7)); + float scale = 0.9F; + GL11.glScalef(scale, scale, scale); + float ang = 360 / end; + GL11.glRotatef(ang * i + ang * random.nextFloat(), 0.0F, 0.0F, 1.0F); + + float f11 = (float) random.nextDouble() * 0.5F + 0.9F; + float f12 = (float) random.nextDouble() * 0.5F + 0.1F; + float f13 = (float) random.nextDouble() * 0.5F + 0.9F; + if (i == 0) { + f13 = 1.0F; + f12 = 1.0F; + f11 = 1.0F; + } + f13 *= f7; + f12 *= f7; + f11 *= f7; + + GL11.glTexGen(GL11.GL_S, GL11.GL_EYE_PLANE, this.func_147525_a(1, 0, 0, 0)); + GL11.glTexGen(GL11.GL_T, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 1, 0)); + GL11.glTexGen(GL11.GL_R, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 0, 1)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.func_147525_a(0, 1, 0, 0)); + + GL11.glRotatef(180, 0, 0, 1); + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(f11, f12, f13); + tessellator.setBrightness(0xF000F0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 1.0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 0.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 0.0, z + 1.0); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(f11, f12, f13); + tessellator.setBrightness(0xF000F0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 1.0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 1.0); + tessellator.draw(); + + GL11.glTexGen(GL11.GL_S, GL11.GL_EYE_PLANE, this.func_147525_a(0, 1, 0, 0)); + GL11.glTexGen(GL11.GL_T, GL11.GL_EYE_PLANE, this.func_147525_a(1, 0, 0, 0)); + GL11.glTexGen(GL11.GL_R, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 0, 1)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 1, 0)); + + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(f11, f12, f13); + tessellator.setBrightness(0xF000F0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 0.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 0.0, z + 0.0); + + tessellator.addVertex(x + 1.0, y + 0.0, z + 1.0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 1.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 1.0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 1.0); + tessellator.draw(); + + GL11.glTexGen(GL11.GL_S, GL11.GL_EYE_PLANE, this.func_147525_a(0, 1, 0, 0)); + GL11.glTexGen(GL11.GL_T, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 1, 0)); + GL11.glTexGen(GL11.GL_R, GL11.GL_EYE_PLANE, this.func_147525_a(0, 0, 0, 1)); + GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.func_147525_a(1, 0, 0, 0)); + + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(f11, f12, f13); + tessellator.setBrightness(0xF000F0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 1.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 1.0); + tessellator.addVertex(x + 0.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 0.0, y + 0.0, z + 0.0); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(f11, f12, f13); + tessellator.setBrightness(0xF000F0); + tessellator.addVertex(x + 1.0, y + 0.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 0.0); + tessellator.addVertex(x + 1.0, y + 1.0, z + 1.0); + tessellator.addVertex(x + 1.0, y + 0.0, z + 1.0); + tessellator.draw(); + } + + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_GEN_S); + GL11.glDisable(GL11.GL_TEXTURE_GEN_T); + GL11.glDisable(GL11.GL_TEXTURE_GEN_R); + GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + + private FloatBuffer func_147525_a(float x, float y, float z, float w) { + + this.buffer.clear(); + this.buffer.put(x).put(y).put(z).put(w); + this.buffer.flip(); + return this.buffer; + } + +} diff --git a/com/hbm/render/tileentity/RenderCoreComponent.java b/com/hbm/render/tileentity/RenderCoreComponent.java index 810c16541..68bc8f87c 100644 --- a/com/hbm/render/tileentity/RenderCoreComponent.java +++ b/com/hbm/render/tileentity/RenderCoreComponent.java @@ -54,9 +54,9 @@ public class RenderCoreComponent extends TileEntitySpecialRenderer { int range = ((TileEntityCoreEmitter)tileEntity).beam; if(range > 0) { - BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0x404000, 0x404000, 0, 1, 0F, 2, 0.0625F); - BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range * 2, 0.125F, 4, 0.0625F); - BeamPronter.prontHelix(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range * 2, 0.125F, 4, 0.0625F); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0x404000, 0x404000, 0, 1, 0F, 2, 0.0625F); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range * 2, 0.125F, 4, 0.0625F); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range * 2, 0.125F, 4, 0.0625F); } } @@ -68,6 +68,14 @@ public class RenderCoreComponent extends TileEntitySpecialRenderer { if(tileEntity instanceof TileEntityCoreInjector) { bindTexture(ResourceManager.dfc_injector_tex); ResourceManager.dfc_injector.renderAll(); + + GL11.glTranslated(0, 0.5, 0); + int range = ((TileEntityCoreInjector)tileEntity).beam; + + if(range > 0) { + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x0000ff, 0x8080ff, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range, 0.0625F, 0, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.LINE, 0x0000ff, 0x8080ff, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range, 0.0625F, 0, 0); + } } GL11.glEnable(GL11.GL_LIGHTING); diff --git a/com/hbm/render/tileentity/RendererObjTester.java b/com/hbm/render/tileentity/RendererObjTester.java index f578345ca..a063d6926 100644 --- a/com/hbm/render/tileentity/RendererObjTester.java +++ b/com/hbm/render/tileentity/RendererObjTester.java @@ -108,8 +108,8 @@ public class RendererObjTester extends TileEntitySpecialRenderer { //SoyuzPronter.prontSoyuz(); //TomPronter.prontTom(); - BeamPronter.prontHelix(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff8000, 0xff8000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 25, 0.1F, 4, 0.05F); - BeamPronter.prontHelix(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xffff00, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 1, 0F, 4, 0.05F); + BeamPronter.prontBeam(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff8000, 0xff8000, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 25, 0.1F, 4, 0.05F); + BeamPronter.prontBeam(Vec3.createVectorHelper(5, 5, 5), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xffff00, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25, 1, 0F, 4, 0.05F); //BeamPronter.prontHelix(Vec3.createVectorHelper(0, 5, 0), 0.5, 0.5, 0.5, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0xffff00, (int)tileEntity.getWorldObj().getTotalWorldTime() % 360 * 25 + 180, 25, 0.25F); GL11.glPopMatrix(); diff --git a/com/hbm/render/util/BeamPronter.java b/com/hbm/render/util/BeamPronter.java index 3a3a8d96f..660cb1369 100644 --- a/com/hbm/render/util/BeamPronter.java +++ b/com/hbm/render/util/BeamPronter.java @@ -20,7 +20,7 @@ public class BeamPronter { LINE } - public static void prontHelix(Vec3 skeleton, EnumWaveType wave, EnumBeamType beam, int outerColor, int innerColor, int start, int segments, float size, int layers, float thickness) { + public static void prontBeam(Vec3 skeleton, EnumWaveType wave, EnumBeamType beam, int outerColor, int innerColor, int start, int segments, float size, int layers, float thickness) { GL11.glPushMatrix(); diff --git a/com/hbm/render/util/RenderSparks.java b/com/hbm/render/util/RenderSparks.java new file mode 100644 index 000000000..40ecdeff0 --- /dev/null +++ b/com/hbm/render/util/RenderSparks.java @@ -0,0 +1,62 @@ +package com.hbm.render.util; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.Vec3; + +public class RenderSparks { + + public static void renderSpark(int seed, double x, double y, double z, float length, int min, int max, int color1, int color2) { + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glLineWidth(3F); + Tessellator tessellator = Tessellator.instance; + + Random rand = new Random(seed); + Vec3 vec = Vec3.createVectorHelper(rand.nextDouble() - 0.5, rand.nextDouble() - 0.5, rand.nextDouble() - 0.5); + vec = vec.normalize(); + + double prevX; + double prevY; + double prevZ; + + for(int i = 0; i < min + rand.nextInt(max); i++) { + + prevX = x; + prevY = y; + prevZ = z; + + Vec3 dir = vec.normalize(); + dir.xCoord *= length * rand.nextFloat(); + dir.yCoord *= length * rand.nextFloat(); + dir.zCoord *= length * rand.nextFloat(); + + x = prevX + dir.xCoord; + y = prevY + dir.yCoord; + z = prevZ + dir.zCoord; + + GL11.glLineWidth(5F); + tessellator.startDrawing(3); + tessellator.setColorOpaque_I(color1); + tessellator.addVertex(prevX, prevY, prevZ); + tessellator.addVertex(x, y, z); + tessellator.draw(); + GL11.glLineWidth(2F); + tessellator.startDrawing(3); + tessellator.setColorOpaque_I(color2); + tessellator.addVertex(prevX, prevY, prevZ); + tessellator.addVertex(x, y, z); + tessellator.draw(); + } + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + } + +} diff --git a/com/hbm/tileentity/machine/TileEntityCore.java b/com/hbm/tileentity/machine/TileEntityCore.java index cac49d0ce..2ecc2e8d7 100644 --- a/com/hbm/tileentity/machine/TileEntityCore.java +++ b/com/hbm/tileentity/machine/TileEntityCore.java @@ -1,11 +1,21 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.inventory.FluidTank; import com.hbm.tileentity.TileEntityMachineBase; public class TileEntityCore extends TileEntityMachineBase { + + public int field; + public int heat; + public int color; + public FluidTank[] tanks; public TileEntityCore() { super(3); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(FluidType.DEUTERIUM, 128000, 0); + tanks[1] = new FluidTank(FluidType.TRITIUM, 128000, 1); } @Override @@ -17,5 +27,39 @@ public class TileEntityCore extends TileEntityMachineBase { public void updateEntity() { } + + public long burn(long joules) { + + return 0; + } + + public float getFuelEfficiency(FluidType type) { + + switch(type) { + + case HYDROGEN: + return 1.0F; + case DEUTERIUM: + return 1.5F; + case TRITIUM: + return 1.7F; + case OXYGEN: + return 1.2F; + case ACID: + return 1.4F; + case XENON: + return 1.5F; + case SAS3: + return 2.0F; + case BALEFIRE: + return 2.5F; + case AMAT: + return 2.2F; + case ASCHRAB: + return 2.7F; + default: + return 0; + } + } } diff --git a/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 8b11dccfd..7b843ecaf 100644 --- a/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -80,6 +80,9 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon prev = joules; if(joules > 0) { + + long out = joules * 98 / 100; + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); for(int i = 1; i <= range; i++) { @@ -93,10 +96,15 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon if(te instanceof ILaserable) { - ((ILaserable)te).addEnergy(joules * 98 / 100, dir); + ((ILaserable)te).addEnergy(out * 98 / 100, dir); break; } + if(te instanceof TileEntityCore) { + ((TileEntityCore)te).burn(out); + continue; + } + Block b = worldObj.getBlock(x, y, z); if(b != Blocks.air) { @@ -131,6 +139,8 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon joules = 0; prev = 0; } + + this.markDirty(); NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); @@ -233,5 +243,29 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements ICon { return 65536.0D; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + power = nbt.getLong("power"); + watts = nbt.getInteger("watts"); + joules = nbt.getLong("joules"); + prev = nbt.getLong("prev"); + isOn = nbt.getBoolean("isOn"); + tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setInteger("watts", watts); + nbt.setLong("joules", joules); + nbt.setLong("prev", prev); + nbt.setBoolean("isOn", isOn); + tank.writeToNBT(nbt, "tank"); + } } diff --git a/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/com/hbm/tileentity/machine/TileEntityCoreInjector.java index af86ea190..bb4d51086 100644 --- a/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -1,7 +1,177 @@ package com.hbm.tileentity.machine; -import net.minecraft.tileentity.TileEntity; +import java.util.ArrayList; +import java.util.List; -public class TileEntityCoreInjector extends TileEntity { +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.inventory.FluidTank; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor { + + public FluidTank[] tanks; + public static final int range = 15; + public int beam; + + public TileEntityCoreInjector() { + super(4); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(FluidType.DEUTERIUM, 128000, 0); + tanks[1] = new FluidTank(FluidType.TRITIUM, 128000, 1); + } + + @Override + public String getName() { + return "container.dfcInjector"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + tanks[0].setType(0, 1, slots); + tanks[1].setType(2, 3, slots); + + beam = 0; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + for(int i = 1; i <= range; i++) { + + int x = xCoord + dir.offsetX * i; + int y = yCoord + dir.offsetY * i; + int z = zCoord + dir.offsetZ * i; + + TileEntity te = worldObj.getTileEntity(x, y, z); + + if(te instanceof TileEntityCore) { + + TileEntityCore core = (TileEntityCore)te; + + for(int t = 0; t < 2; t++) { + + if(core.tanks[t].getTankType() == tanks[t].getTankType()) { + + int f = Math.min(tanks[t].getFill(), core.tanks[t].getMaxFill() - core.tanks[t].getFill()); + + tanks[t].setFill(tanks[t].getFill() - f); + core.tanks[t].setFill(core.tanks[t].getFill() + f); + core.markDirty(); + + } else if(core.tanks[t].getFill() == 0) { + + core.tanks[t].setTankType(tanks[t].getTankType()); + int f = Math.min(tanks[t].getFill(), core.tanks[t].getMaxFill() - core.tanks[t].getFill()); + + tanks[t].setFill(tanks[t].getFill() - f); + core.tanks[t].setFill(core.tanks[t].getFill() + f); + core.markDirty(); + } + } + + beam = i; + break; + } + } + + this.markDirty(); + + tanks[0].updateTank(xCoord, yCoord, zCoord); + tanks[1].updateTank(xCoord, yCoord, zCoord); + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("beam", beam); + this.networkPack(data, 250); + } + } + + public void networkUnpack(NBTTagCompound data) { + beam = data.getInteger("beam"); + } + + @Override + public int getMaxFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getMaxFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getMaxFill(); + else + return 0; + } + + @Override + public void setFluidFill(int i, FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + tanks[0].setFill(i); + else if (type.name().equals(tanks[1].getTankType().name())) + tanks[1].setFill(i); + } + + @Override + public int getFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getFill(); + else + return 0; + } + + @Override + public void setFillstate(int fill, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setTankType(type); + } + + @Override + public List getTanks() { + List list = new ArrayList(); + list.add(tanks[0]); + list.add(tanks[1]); + + return list; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + tanks[0].readFromNBT(nbt, "fuel1"); + tanks[1].readFromNBT(nbt, "fuel2"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + tanks[0].writeToNBT(nbt, "fuel1"); + tanks[1].writeToNBT(nbt, "fuel2"); + } } diff --git a/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index bda7d756c..b8457ec2a 100644 --- a/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -15,6 +15,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @@ -55,6 +56,10 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements ISo return; } } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("joules", joules); + this.networkPack(data, 50); joules = 0; @@ -72,6 +77,11 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements ISo } } } + + public void networkUnpack(NBTTagCompound data) { + + joules = data.getLong("joules"); + } @Override public void ffgeua(int x, int y, int z, boolean newTact) { @@ -182,4 +192,22 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements ISo { return 65536.0D; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + power = nbt.getLong("power"); + joules = nbt.getLong("joules"); + tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setLong("joules", joules); + tank.writeToNBT(nbt, "tank"); + } }