From 6c815b8627669e41457cba4c899c319b368f5928 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Thu, 2 Nov 2017 21:20:37 +0100 Subject: [PATCH] Fusion and watz fluid retrofitting, multiblock fluid connectors, meteor --- assets/hbm/lang/de_DE.lang | 6 + assets/hbm/lang/en_US.lang | 8 +- .../textures/blocks/block_meteor_broken.png | Bin 0 -> 671 bytes .../textures/blocks/block_meteor_cobble.png | Bin 0 -> 706 bytes .../textures/blocks/block_meteor_molten.png | Bin 0 -> 854 bytes .../textures/blocks/block_meteor_treasure.png | Bin 0 -> 685 bytes assets/hbm/textures/gui/GUICoal.png | Bin 2130 -> 2248 bytes .../hbm/textures/gui/gui_cmb_manufactory.png | Bin 2722 -> 2704 bytes .../textures/gui/gui_fusion_multiblock.png | Bin 9666 -> 5630 bytes .../textures/gui/gui_reactor_multiblock.png | Bin 5049 -> 5051 bytes .../hbm/textures/gui/gui_watz_multiblock.png | Bin 3417 -> 3759 bytes .../hbm/textures/items/fragment_meteorite.png | Bin 0 -> 224 bytes com/hbm/blocks/ModBlocks.java | 14 +- com/hbm/blocks/generic/BlockOre.java | 81 +++ com/hbm/blocks/test/TestEventTester.java | 31 +- .../container/ContainerFusionMultiblock.java | 66 +-- .../container/ContainerWatzCore.java | 28 +- .../inventory/gui/GUIFusionMultiblock.java | 31 +- com/hbm/inventory/gui/GUIWatzCore.java | 21 +- com/hbm/items/ModItems.java | 3 + com/hbm/lib/Library.java | 39 +- com/hbm/main/MainRegistry.java | 9 + .../machine/TileEntityFusionMultiblock.java | 207 +++---- .../machine/TileEntityMachineGenerator.java | 11 +- .../machine/TileEntityReactorMultiblock.java | 40 +- .../machine/TileEntityWatzCore.java | 93 +++- com/hbm/world/Meteorite.java | 524 ++++++++++++++++++ 27 files changed, 992 insertions(+), 220 deletions(-) create mode 100644 assets/hbm/textures/blocks/block_meteor_broken.png create mode 100644 assets/hbm/textures/blocks/block_meteor_cobble.png create mode 100644 assets/hbm/textures/blocks/block_meteor_molten.png create mode 100644 assets/hbm/textures/blocks/block_meteor_treasure.png create mode 100644 assets/hbm/textures/items/fragment_meteorite.png create mode 100644 com/hbm/world/Meteorite.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index b011fc1b3..07c9b8b26 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -579,6 +579,7 @@ item.fragment_niobium.name=Niobium Ffragment item.fragment_cerium.name=Cerium Ffragment item.fragment_lanthanium.name=Lanthanfragment item.fragment_actinium.name=Actiniumfragment +item.fragment_meteorite.name=Meteoritenfragment item.battery_generic.name=Batterie item.battery_advanced.name=Fortgeschrittene Batterie @@ -1192,7 +1193,12 @@ item.desh_shovel.name=Arbeitslegierungsschaufel item.desh_hoe.name=Arbeitslegierungsfeldhacke tile.red_cable.name=Rotes Kupferkabel + tile.block_meteor.name=Meteoritenblock +tile.block_meteor_broken.name=Gebrochener Meteoritenblock +tile.block_meteor_cobble.name=Meteoritenpflasterstein +tile.block_meteor_molten.name=Heißer Meteoritenpflasterstein +tile.block_meteor_treasure.name=Meteoritenschatz item.cape_radiation.name=Cape (Radioaktiv) item.cape_gasmask.name=Cape (Gasmaske) diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index afc7248e8..092384775 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -579,6 +579,7 @@ item.fragment_niobium.name=Niobium Fragment item.fragment_cerium.name=Cerium Fragment item.fragment_lanthanium.name=Lanthanium Fragment item.fragment_actinium.name=Actinium Fragment +item.fragment_meteorite.name=Meteorite Fragment item.battery_generic.name=Battery item.battery_advanced.name=Advanced Battery @@ -1192,7 +1193,12 @@ item.desh_shovel.name=Worker's Alloy Shovel item.desh_hoe.name=Worker's Alloy Hoe tile.red_cable.name=Red Copper Cable -tile.block_meteor.name=Meteor Block + +tile.block_meteor.name=Meteorite Block +tile.block_meteor_broken.name=Broken Meteorite Block +tile.block_meteor_cobble.name=Meteorite Cobblestone +tile.block_meteor_molten.name=Hot Meteorite Cobblestone +tile.block_meteor_treasure.name=Meteorite Treasure Block item.cape_radiation.name=Cape (Radiation) item.cape_gasmask.name=Cape (Gas Mask) diff --git a/assets/hbm/textures/blocks/block_meteor_broken.png b/assets/hbm/textures/blocks/block_meteor_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1d23e6a88406232df79a3be4761d41473c60af GIT binary patch literal 671 zcmV;Q0$}}#P)bzL*hGndPS>-CEFp1Q8_-f#1|u344^ zfcyPUQ55X=d&FaKI2>r22CX#!ecz*$BF}T0reU6Enx^4&Isp(uU|AMq*L4UXxLhtc z=WxzZmL*ClQc5`IHrpWtetv#vnuc*45keqC2n@r3)|#&CFvcK+*c_ykczu1{#AA#A z91aKW_dDWzJ|l#{d%tCz=Xv8|jN$Y1lVKRh^PCtXQcC*1C(m=_!;beJV+=)6kWylv zXWF)s^ zs;XjLSG3lw>q=eMNNepz-Wan1`}+F&gCr%7dc@RP(=^TB9Y`q|h5=wBE~TWdYqZuZ z%fhlO|I7dK@s9#>oACM@q@t+Z)a~&gb)= zfDnSN>&UWM4~U^`@e&UQ86g?cc7HEPUl>3 z4ms}Iy;s)G`j+$b^kk36Bi35h>ovw0%Ce;Idy*u<7=zZDb$FhKQi>!=5JDh? z5LjzjtyYZVh}N36ZMnU@MQhDsu|P_Rl#;S60f^(6s;U4GbzQSuF3Iy8*L49nolXGw zzE75A0C=9qFbqg3*>1PQam?v-!Ug#J{N(ED3V>l4a2$uSEa|!qr4#^pp5r(UX_^A? z{rydz=ZKq|8>E!Hyu9%Lv~5cmhHST6T-W8{;eo#Isq303ifEdKD2fn45RhdVQ53OU zE*XXaAq4O5?^IPq7=}DPKC<8MX_^M56kXRbo6R^J4v5`uhm?}T;Xv1QG);ps=HfDr zBhSyzL{Ws45@QTXDY7iXT8nTThraI#!;sBpgE8j35Q6LLYo^mFbzP&i#&z9`nGgcs z_YrN|vRbWv;n7;NUax7}7RPaz&*w-f(ONT~&zVdn)OF1`jtGFVEb%-KV+>MChGF32 z;{zcCK@b3-wMHq$+uIvK5L`^%zVFdm<2VlgkSe7Z#}Q);udlC^Wr!u&GQ^7B|kqu z=McZXzL?Esgkgx*`iw>hq9|g&-(!rSZQEZ}*IEN0r9@1pQ+B)E<>i0jD5bc&ySp40 oMZsh;A&z4_&ttRM5JeGx0LwIFM-Eo^jQ{`u07*qoM6N<$f<3cIr~m)} literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/block_meteor_molten.png b/assets/hbm/textures/blocks/block_meteor_molten.png new file mode 100644 index 0000000000000000000000000000000000000000..041c564f90a1dac58aa29c688309218074ae93cd GIT binary patch literal 854 zcmV-c1F8IpP)%7~0eyi;y%^2vXA&gXo7cqdM(aGaWorYs9O`LW!Vv zdAS_Uc{o?u*w{!8)()u;O#V*4#(CKXplx>9v9^#>5(EKJ6!GJYE)A>7*!E=x;G_`Z+px}=(-N5iV}Pl1IzzQYaJv7>~y&&WIHp zMxzm`I(7GX=`o3};!IYk4@|zjvPZjYp=@t&C!ftf0Kh1D)1yuvqvTN^m^4Liw*TP% zHNr3iAPhsY*({k{E{DDz(XgsKKfb{D*%%{zOiS<5bbILQ5p~O?|L1wa@Dx>58I491 zi$zXPPf;^HE49P|Cfdzg=EWB@$RBb`norKF-w?Y7GniLUaYwKeO6s;cz+eSW_B zghW>{41-i0#{@xuq9|0fh?d!9=eIX7AJuR=dA>4tS;0Y7RraqxWVhmAyBZCvitqa< zlRIkSbn*Z*SoQy|kj-Wp4u@P?2x*rsoR@6w#H$D;hfk9ox3C-ua2Y20BUdFSe`EGP`8%#;as98KNlS=&XP(H1@AQ zL~%yguEtHLf)IkaxjAfCZcc~9djFQI} z`cw8U?av~4Aq2|i=4Nv5+I_C>ng}6~QgX0%NTRDWtSV2vDW8M2Lu^-@ gRot=@=I7^m0bhD}X9TghCjbBd07*qoM6N<$f+W|72><{9 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/block_meteor_treasure.png b/assets/hbm/textures/blocks/block_meteor_treasure.png new file mode 100644 index 0000000000000000000000000000000000000000..35f33552cae277b6e8df2cd4877b01c8932ce918 GIT binary patch literal 685 zcmV;e0#f~nP)>P1CG>v)K@1L>gnT*3xwyIcJno zgb;`^GS4$wYudKOIY&xqCAi&g07&mWZQC->GtM~xgb-{t8@%^;@3Gd>_dUPAzX&0i zrirSmFvcJNrfK4IIy~sJU-|vx9a=l*J@Ar)3h!6siQsQ>IA%x&?IM6f=bzL(I1NZx# zX_`<nY(LMeqDhJlLp_JmC*xS^)u8~qo{{H^x z`<|jGkW$ih9YP3RuNN^!s;Z*vI+kUjEK5EGkW^>EhyIn!Y?f_U6nzd-ExMewWgJ|MchibKk!EVeRp=H=okz^80jlc6N--T=Hn~ zfzD6o{Bn}_Q-9Fp$v8cG^J(e1O^+u}#zlW`jz`sRffj4qDZtC8>GJaO?#Y)=mxuhf zkK1tcPe}mKbzdIm{S>r%v`;Ce$>eX9qk>}+0CZc{2%zv4gqKfKO4mzI&5r(eqk`-8 zQNj@k0J?3T^Zm5|C^rI_5A%OqzMTK;DURe}DYF*ze9E0O+<|!~3r%%Rdd) z0B(l$*Xi?L|1f{}G`rZ6(H^SKV0993T|ItKUFx6vQwep&sn;fNeVk z=zm$|s*d6Tuv!DyHUbz72I(rJK2X*9SKliH9;n4r0G)ns#RH(uk$*54=#Z4rqN@O1 zbnqI$YUi)IRJ7|dP`}@=90}BU4;>}|vK+Jqu-f@YqfzBZpz1Qv?C4R_zkmV@z0A?Z3BuD-roC0Jy+B|^CWRhOIc#-wHR!;-!zQzM`pAmrh z0&_>12QcGHIb^F-127GEtImHHVApkiNB;m!1K|07h)bj7V`iOK*6s;MgUpV01DZ6XfG5BQ3J@L22jYR&Rq97GUN>7U4K5b9snJ; z&nbWozot_)fT|mb*0Jkmqx-TwE%47@ne3aPb2Wh61wgBAHo7m{Lzk%mKwuA|2H?H` z)mHbBeM3qutN{!LgLHm=UhBQH5B07)1Mhl0irFpF7WaqSrjb%hYXEgZpw0()_Il(G zyL%_HODk&t{eHh#2y8n&h<{|ZpBDF({X$9yt^w?GnW|0*tPX1ztqyl1+q4h1?U&JL z6n=k2a_}0!K10sBA&`Z;atX&+kH-$82tb#CtY{Q2{FXWlg_ zrEU>Rp=&=SZ@xMjjf%BJGY(n<*yrY+W~3cYsr@c|+pl%=08-NV;bTx*R|Dwx`?WiN z)oFku5bV~vc>taICRzt<3rXQfN)O<>0K2a9`+(orHV*(=Sp(RY4|6s9h)s3|K%L8W zhh%$pvpwvqmr|Ner#DL_sl3w#vzeh67Z)kH{b!cO?h634pOeo97n6Sm4JNRi-v%so zyXg|^%xfoZI~Iv)PUU(4C2lueV)YsA#BIm7RGZ@zlOG2blivmhlYa&gC>#%X z*N%2*r=7P4w<3^s+R)DGia>4;UXB%kwA1=_tO(Q`HIp0$9h2V%2a|sW4jn53X{Yt= z&>SlQX{Yt=SP`f>Rs_;c>)Wv+P;=Ci5eFob-v$She+CCNtO%r?*0)1*cCH8nZDd8D za-0G{U;+RF695p{&LW^yfwj|yc2-vfrW~sRYp32T2nE5SUeg zwbS}`XpU8Z=^U#9m*W%w0uulbm;j(tX2XBVI7un>dcEFsJRaM*5X@`@&^tXnJ?e(Q vJ`@1USlxlsqihB2Pv-}d;Rje4-~swSxicqk=H#1y00000NkvXXu0mjfBr(iO delta 1830 zcmV+>2if?@5z-KlG=B+6L_t(|obBDaZd}J12k=>$O65ZE3n*#AA}=73g{v4*p>FjO z>K0fvZj3Z)xB#2Lui%30R2Yb=6x^j>Ab`?@d4V8>J5$&c)g zd%X7i&z$efnbS*mrU|;CH~-W04|)IJ_Ws@5{-KAB$KxXX=6~quC~G?&>)`gE)9FTsBB%Pm*8IQ*)%|@)(2YHWzzIp#c(a+Uk3vH7{r<1>*S>lG!^-o+w;$8!;=6QweB8ulE_ibP ziOx^w{C1G{D1T`3Y@80?eq4BM-Sf$_anbM1@nri)pvBsD2=MB8y12Nwd-2ut#UcOg z^ET}LQxX7l-SyMFM?uSb`;=0eOn%xrDrk}bpxd%W0EN#Wyn3Eex>|T?w)ejq63 z5*j1`=(c^1_g4a-+z4Pk%>Q}ubpGLoe=UCS_WjrY_+Wk>MlLP?W){+3Yo9%bC^4@Uxw|mcS-oJmS&?Ess zx3y#*zkS5j>@Vo|`^Ekx+qOMyR?B~{!qa(ktbg0iU0-X;)?e>0zx=ZC{jX0>7M}n5 zZgFTcyu2)Wkx{?j&-(kr;m}1-HLCo-SBtI&?4qp!u-w5*e;%?tdIV5r4UDE%@+qaV z@zZ=HFdSC(6|j2^pwr#7I+X>$E+c`9i{^_UblgLS06nW*?V@-9EY|=Y8UYLjgLGNA zK7T+!_YVPd`n?qofL-?dgTWxXI0PxBR-FatqS|W!%bkDQsUoNC*hm0mskH{M-1$eN z(bkcG({^km0J79t1Gv1rOrxclQIN$vfGoAv049@38V-l^5Ewc|NUoMl1@5ZaYXHk3 zV0cd!hX7d`nFlZn0m$YMAWLKO049@3dVl%yW$CXcn#YU)%omtzWFEkb;Xm1SsR5V< z{2@Svpk%fE5k_vQ&0skYC@uTOAF2;f{}wSAXvK zy6(BXe?cv|F-TXb0nlyxjsVOTSfB<_(7OA*&qf9J_xeTw1#PPVmBW2|F+kS0t&c3(BU%_zcWzo-|M<_BY-Sw0EO&3v=<76 zr~zbA11Mx&XWsQSGUN>7oj$Z403El_A%G6QqEj`1Z8s9#Mai3u+MX8p=kHAR&Ct0T zK<;hDOW$nN_RwW&01%iOKoIBW=L^qsM+$ryDw_!O^~uSjMgt{|V_9^5et*8u;rspm zN+1wZ@c@|30L+;QC%eTf{5`?gxR+Pf9h{0QT9l z3xRUh?d=~L0gOf?;Sfme^8ofKJ_&(x_Wj+7q4o0sE-x>gmxhYeS_9bS=AJKJyqNES zOiHO=$(yf^Mx$bFQH@$_0Brl*+*9XoPO0Dhp)(M)M=P%d(D|Vrt*Zg_`+c1sYSOxS z0G+xLtpjGK`<92|hUcW@T7VE9ng;-_tN~D-4$nFp17Mfac6G8no7o=r)k`T&r_-CI zk`&+Qg4xW_v$M05-2O95WtRg3?I)8z2Og3K1}1Fd)qtgLH(g?#dF{k)$09M+*}5J; ziQ7$=Sbau2aocf~YIPg}lP?D@C; zlb#0-lRF0uHq44Z+G%||RA=LgK+r~31S-cN00brgATR*{fo&`TS`}D3ZD?nCRba}o zDzJ81-;UyRbsPedF9$A20RVwn6<9m1Z-?qw6`0PkDsVXt0U$5|0D%brI%PKer;LM? zQm@zRO~>Q09~Xj|jR1N_M@Nlr2<$@vu#Dv&aN5XL!2Wc8lVJ!?lW+(M7`{ON2V=y& U3Jb&cuK)l507*qoM6N<$f>6Me9RL6T diff --git a/assets/hbm/textures/gui/gui_cmb_manufactory.png b/assets/hbm/textures/gui/gui_cmb_manufactory.png index 596063df9fd1001bc19cc11de507b72ec7eb8a4a..e23738da681d9352594cceb044955d05fb619bea 100644 GIT binary patch literal 2704 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 Xw>W-Dd2I6SM*-jO{JhIOqfh+?mP^0X literal 2722 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 diff --git a/assets/hbm/textures/gui/gui_fusion_multiblock.png b/assets/hbm/textures/gui/gui_fusion_multiblock.png index c3ba9ce8a3d23fa4434ae68ad1fb56ec5219570c..0ac0e9ab630b23f9e5d705367017cb13e486c6d7 100644 GIT binary patch literal 5630 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 literal 9666 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

mq5k%WU`_wsq zGybt@PK_$)CRrkqtkrG^jS@y4i2ysrg`)njV~O^zjx>OvufhO+J(IYBURE;38A5?Y z(l`cg#psRW1|3-7a)(t&dW>!Ab{&S7LhN%cPO4USMASCI-^tc~+_TOxyY~G8;E;AB zbcNYlm}}rVhkF50=gN}yK2C-^=%Eq3DgHa1ht-m-sYdUVStEIPlq@I1dy^acYx4?b6>$f zT`T|j;)@y*lS%S5v`|Uf?6--YpP!H3vS-7VbNS-TaL%CqAW91)6)*&#(5`~k8QUHk zn~C6mr3_sG;d!xNy_q5P>(wx0^}v{m@EhV;1%dfUBx*GB=yGY?s(C|IwewEoaU}I> z@OBl~J_rj$IGhS10HXr?DL#hGDlDvn&jbu@QIEav%%!Wqg?lmpNu6*4pr1PsfNUK_ zB&KJ0^gB_U$&L|6wbZ9BXLzKCS7&(mQDQGtw&VRRVaL|p&0i3U_i7mu3p>~L7%Qo( z(R&Sv%{LL?zgo0)fVl)9L05#wEmTt+ObR9}F9fe1aE8%FnPCp1{<8wX`}1xKZyv;ce&ynX-mz>9e4FE*CD A`2YX_ delta 2518 zcmX|9dpy&7AO8;7Sh;nP>})uqBzHx~t&-z%l*&nElOvbJa+&M;4F}Ij7c8|zbRL(= zHFJ&GI+DtaglHK($EDC*W>{>VALn__?~mW>^Zk53pU?a9{WR$|>SmZBh?(ZPXgjBc z!)@4wT~nF-%zzL`_|QfawzPaK&2Lb=MRR1$NHI6UJ`ZJ)GCJ*U??%i@O46RmIZ$Tl z?DnI%7+Z0+9?GLepi{ad>lk-CiV6!>RctAyT_m{{i33R;H;9)vUqddXzMZ#Cdf5 zH9>jqy(D~H2cJKGjY{c?`Gc8;kE$iE8=nw>mQ zL%bh&JgZ-jFAZq>`E4g3sne~@dp=aks`Mc2^#AziDs} zEfO;R#Cu)2vsM!6sQJ5nB+<%}&+tOsY!QvC$43T{k3|4LZ?$~m;`ZKsQe^NkdLLIa zsStX#bT5uRX(FpS`pIEYnf7HtRES?2T0!sM@vXWqxKjxb!gDl+JEsrM_oS;1k)gj{ z^6I0d`Dd~OSyRWvp^wtji}*8ML!&-ysb*!w{SZP?pB_);PA{9AGCmad_@Tb=UiCS0 zR%HB2W2ee=1J7`DhmS9#Km2Pa`C7@?JmkRHU*laqb{-?BkCw~5yy-`dvi=U2Q~*3L z;zUvM@^0^seQ!etG5V+QWNv7~`QxS8y=Kms+$26;4qlS;32s@vsDB009=5FXLG?nA4*V_| z>8jod@lVDly5#XQ-<7Ui)hu5zW;nd(e1}9m@~rTnhw8W94IPUO3JkBp50jk$C~jpm zdkCWXc=PAun*coSg4b#c#>+AD#H81Tv}hG^;FL>y0)NqO z5b?SI%ksgvww#nr`-%us5vIxZVEAo+BTjCb2dk6|@>5fs^lK9N3IV)!a() zGlH`+8UYFsz{|_)x!MaX>6TxBI`xBegA*_rR}$G?TWyH0&G}_c)+!CErbk(Uu&W{VBDu7#W7KDJ4pg?F?0+I@{bN{xpgEA6=q;osW{No+8P0jE*DoK?PQHmT?p0*S~C{ZBaj{!#l>qK zih7zSO%V`aDHD=IvlU9B&$M+NmK0x_^xu#0KQq>SF`;0_!N^8IJtAV=JQy6uMnJ6Q zbWMc>ZzYZGzl(N)*mf}1yVH@OnGphs%lI67F zY2g75ZY`qhE_z(R9Ka}3%IbY&B|3i-gnC=Qxl)5=q zW?{pc+vx^g?dmYq1w?C-3gwEapsBgc6ecsE$lC-S(*lNMF@LE^)~5?%`>)vPtO8E* z+0!zAy62Hbi0le2CDJ6_@n}J-anp6XfhS!G+Y=R#(GUXYjfdz-W!KRNGBLS%G9&Fc z=#I8{wpB5CD&PA}fW8%JWq!LKR!0iH)swOrt;#GpBeSdZR_&69uksNiqzxY z;rd*-a3TN@keolXy1VO6ZG#)$=}CRd3BK(gFf0ba!Rwl>z%u`w^Y(3*4#YQnUP_rW4nVZ}=m@s}xJ>XS4xTf<_q*em^iG6bgCBou$M* zq{&(VT*mmuGCH@(?jv)cy|c4(&sgg-&&nTscH3e$BdES;bE*+qj>?cn>cE#gDT zh}qRF2b6u*0eM3YWt3G3p`;A8AQ8tq_oOM}3h9&b4AeG~llN0!L@gb_pYu`oBNYyW Gr2hg~O|ts{ diff --git a/assets/hbm/textures/gui/gui_watz_multiblock.png b/assets/hbm/textures/gui/gui_watz_multiblock.png index c644737c649ef757ec1e823db52d5c1628589055..a89e83f6b8ac47cd9240bb94adf86a232d6b9d97 100644 GIT binary patch literal 3759 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 literal 3417 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 VRr?2_)<7pRc)I$ztaD0e0st{ARI&g7 literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 0b79e4063..57058a799 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -119,8 +119,12 @@ public class ModBlocks { public static Block cmb_brick; public static Block cmb_brick_reinforced; - + public static Block block_meteor; + public static Block block_meteor_cobble; + public static Block block_meteor_broken; + public static Block block_meteor_molten; + public static Block block_meteor_treasure; public static Block tape_recorder; public static Block steel_poles; @@ -527,6 +531,10 @@ public class ModBlocks { cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.tabBlock).setHardness(25.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); block_meteor = new BlockOre(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor"); + block_meteor_cobble = new BlockOre(Material.rock).setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor_cobble"); + block_meteor_broken = new BlockOre(Material.rock).setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor_broken"); + block_meteor_molten = new BlockOre(Material.rock).setBlockName("block_meteor_molten").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor_molten"); + block_meteor_treasure = new BlockOre(Material.rock).setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor_treasure"); tape_recorder = new DecoTapeRecorder(Material.rock).setBlockName("tape_recorder").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); steel_poles = new DecoSteelPoles(Material.rock).setBlockName("steel_poles").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_poles"); @@ -862,6 +870,10 @@ public class ModBlocks { //Decoration Blocks GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_cobble, block_meteor_cobble.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_broken, block_meteor_broken.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_molten, block_meteor_molten.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_treasure, block_meteor_treasure.getUnlocalizedName()); GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName()); GameRegistry.registerBlock(steel_poles, steel_poles.getUnlocalizedName()); GameRegistry.registerBlock(pole_top, pole_top.getUnlocalizedName()); diff --git a/com/hbm/blocks/generic/BlockOre.java b/com/hbm/blocks/generic/BlockOre.java index 058511c97..df14d072e 100644 --- a/com/hbm/blocks/generic/BlockOre.java +++ b/com/hbm/blocks/generic/BlockOre.java @@ -20,16 +20,20 @@ import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityMooshroom; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class BlockOre extends Block { public BlockOre(Material p_i45394_1_) { super(p_i45394_1_); + //if(this == ModBlocks.block_meteor_molten) + this.setTickRandomly(true); } @Override @@ -71,6 +75,54 @@ public class BlockOre extends Block { { return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); } + if(this == ModBlocks.block_meteor_cobble) + { + return ModItems.fragment_meteorite; + } + if(this == ModBlocks.block_meteor_broken) + { + return ModItems.fragment_meteorite; + } + if(this == ModBlocks.block_meteor_treasure) + { + switch(rand.nextInt(35)) { + case 0: return ModItems.coil_advanced_alloy; + case 1: return ModItems.plate_advanced_alloy; + case 2: return ModItems.powder_desh_mix; + case 3: return ModItems.ingot_desh; + case 4: return ModItems.fusion_core; + case 5: return ModItems.battery_lithium_cell; + case 6: return ModItems.battery_schrabidium; + case 7: return ModItems.nugget_schrabidium; + case 8: return ModItems.ingot_pu238; + case 9: return ModItems.ingot_pu239; + case 10: return ModItems.ingot_u235; + case 11: return ModItems.turbine_tungsten; + case 12: return ModItems.ingot_dura_steel; + case 13: return ModItems.ingot_polymer; + case 14: return ModItems.ingot_tungsten; + case 15: return ModItems.ingot_combine_steel; + case 16: return ModItems.ingot_lanthanium; + case 17: return ModItems.ingot_actinium; + case 18: return Item.getItemFromBlock(ModBlocks.block_meteor); + case 19: return Item.getItemFromBlock(ModBlocks.fusion_heater); + case 20: return Item.getItemFromBlock(ModBlocks.fusion_core); + case 21: return Item.getItemFromBlock(ModBlocks.watz_element); + case 22: return Item.getItemFromBlock(ModBlocks.ore_rare); + case 23: return Item.getItemFromBlock(ModBlocks.fusion_conductor); + case 24: return Item.getItemFromBlock(ModBlocks.reactor_computer); + case 25: return Item.getItemFromBlock(ModBlocks.machine_diesel); + case 26: return Item.getItemFromBlock(ModBlocks.machine_rtg_grey); + case 27: return ModItems.pellet_rtg; + case 28: return ModItems.pellet_rtg_weak; + case 29: return ModItems.rtg_unit; + case 30: return ModItems.gun_spark_ammo; + case 31: return ModItems.gun_fatman_ammo; + case 32: return ModItems.gun_mirv_ammo; + case 33: return ModItems.gun_defabricator_ammo; + case 34: return ModItems.gun_osipr_ammo2; + } + } if(this == ModBlocks.ore_rare) { switch(rand.nextInt(6)) { @@ -109,6 +161,14 @@ public class BlockOre extends Block { { return 2 + p_149745_1_.nextInt(4); } + if(this == ModBlocks.block_meteor_broken) + { + return 1 + p_149745_1_.nextInt(3); + } + if(this == ModBlocks.block_meteor_treasure) + { + return 1 + p_149745_1_.nextInt(3); + } return 1; } @@ -221,6 +281,9 @@ public class BlockOre extends Block { ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.poison.id, 5 * 20, 1)); } } + + if(this == ModBlocks.block_meteor_molten) + entity.setFire(5); } @Override @@ -244,5 +307,23 @@ public class BlockOre extends Block { world.setBlock(x, y - 1, z, ModBlocks.ore_oil); } } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) + { + if(this == ModBlocks.block_meteor_molten && rand.nextInt(3) == 0) { + if(!world.isRemote) + world.setBlock(x, y, z, ModBlocks.block_meteor_cobble); + world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); + } + } + @Override + public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int i) { + + if(this == ModBlocks.block_meteor_molten) { + if(!world.isRemote) + world.setBlock(x, y, z, Blocks.lava); + } + } } diff --git a/com/hbm/blocks/test/TestEventTester.java b/com/hbm/blocks/test/TestEventTester.java index f040b2176..42c3745e4 100644 --- a/com/hbm/blocks/test/TestEventTester.java +++ b/com/hbm/blocks/test/TestEventTester.java @@ -1,19 +1,23 @@ package com.hbm.blocks.test; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.main.MainRegistry; +import com.hbm.world.Meteorite; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.enchantment.EnchantmentProtection; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; @@ -78,7 +82,12 @@ public class TestEventTester extends Block { bl.posY = y + 0.5F; bl.posZ = z + 0.5F; worldObj.spawnEntityInWorld(bl);*/ - if(!worldObj.isRemote) + + + + + + /*if(!worldObj.isRemote) { try { Chunk oldChunk = worldObj.getChunkFromBlockCoords(x1, z1); @@ -119,7 +128,25 @@ public class TestEventTester extends Block { System.out.println("Rejuvenation Failed!"); e.printStackTrace(); } - } + }*/ + + + if(!worldObj.isRemote) { + switch(itemRand.nextInt(3)) { + case 0: + (new Meteorite()).generateLarge(worldObj, itemRand, x1, y1, z1); + break; + case 1: + (new Meteorite()).generateMedium(worldObj, itemRand, x1, y1, z1); + break; + case 2: + (new Meteorite()).generateSmall(worldObj, itemRand, x1, y1, z1); + break; + } + } + + + } } diff --git a/com/hbm/inventory/container/ContainerFusionMultiblock.java b/com/hbm/inventory/container/ContainerFusionMultiblock.java index 2a86a765a..72a2c3539 100644 --- a/com/hbm/inventory/container/ContainerFusionMultiblock.java +++ b/com/hbm/inventory/container/ContainerFusionMultiblock.java @@ -23,15 +23,26 @@ public class ContainerFusionMultiblock extends Container { diFurnace = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 8, 108)); - this.addSlotToContainer(new Slot(tedf, 1, 26, 108)); - this.addSlotToContainer(new Slot(tedf, 2, 134, 108)); - this.addSlotToContainer(new Slot(tedf, 3, 152, 108)); + //Water Input + this.addSlotToContainer(new Slot(tedf, 0, 8, 108 - 18)); + //Battery + this.addSlotToContainer(new Slot(tedf, 1, 26, 108 - 18)); + //Deut Input + this.addSlotToContainer(new Slot(tedf, 2, 134, 108 - 18)); + //Trit Input + this.addSlotToContainer(new Slot(tedf, 3, 152, 108 - 18)); + //Startup this.addSlotToContainer(new Slot(tedf, 4, 53, 45)); this.addSlotToContainer(new Slot(tedf, 5, 107, 45)); this.addSlotToContainer(new Slot(tedf, 6, 53, 81)); this.addSlotToContainer(new Slot(tedf, 7, 107, 81)); this.addSlotToContainer(new Slot(tedf, 8, 80, 63)); + //Water Output + this.addSlotToContainer(new Slot(tedf, 9, 8, 108)); + //Deut Output + this.addSlotToContainer(new Slot(tedf, 10, 134, 108)); + //Trit Output + this.addSlotToContainer(new Slot(tedf, 11, 152, 108)); for(int i = 0; i < 3; i++) { @@ -50,11 +61,8 @@ public class ContainerFusionMultiblock extends Container { @Override public void addCraftingToCrafters(ICrafting crafting) { super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 0, this.diFurnace.water); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.deut); - crafting.sendProgressBarUpdate(this, 2, this.diFurnace.power); - crafting.sendProgressBarUpdate(this, 3, this.diFurnace.trit); - crafting.sendProgressBarUpdate(this, 4, isRunning ? 1 : 0); + crafting.sendProgressBarUpdate(this, 0, this.diFurnace.power); + crafting.sendProgressBarUpdate(this, 1, isRunning ? 1 : 0); } @Override @@ -68,8 +76,8 @@ public class ContainerFusionMultiblock extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if (par2 <= 8) { - if (!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) + if (par2 <= 11) { + if (!this.mergeItemStack(var5, 12, this.inventorySlots.size(), true)) { return null; } @@ -103,58 +111,28 @@ public class ContainerFusionMultiblock extends Container { { ICrafting par1 = (ICrafting)this.crafters.get(i); - if(this.water != this.diFurnace.water) - { - par1.sendProgressBarUpdate(this, 0, this.diFurnace.water); - } - - if(this.deut != this.diFurnace.deut) - { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.deut); - } - if(this.power != this.diFurnace.power) { - par1.sendProgressBarUpdate(this, 2, this.diFurnace.power); - } - - if(this.trit != this.diFurnace.trit) - { - par1.sendProgressBarUpdate(this, 3, this.diFurnace.trit); + par1.sendProgressBarUpdate(this, 0, this.diFurnace.power); } if(this.isRunning != this.diFurnace.isRunning()) { - par1.sendProgressBarUpdate(this, 4, this.diFurnace.isRunning() ? 1 : 0); + par1.sendProgressBarUpdate(this, 1, this.diFurnace.isRunning() ? 1 : 0); } } - this.water = this.diFurnace.water; - this.deut = this.diFurnace.deut; this.power = this.diFurnace.power; - this.trit = this.diFurnace.trit; this.isRunning = this.diFurnace.isRunning(); } @Override public void updateProgressBar(int i, int j) { if(i == 0) - { - diFurnace.water = j; - } - if(i == 1) - { - diFurnace.deut = j; - } - if(i == 2) { diFurnace.power = j; } - if(i == 3) - { - diFurnace.trit = j; - } - if(i == 4) + if(i == 1) { if(j == 0) { diff --git a/com/hbm/inventory/container/ContainerWatzCore.java b/com/hbm/inventory/container/ContainerWatzCore.java index 1464a13e8..c8b02b34c 100644 --- a/com/hbm/inventory/container/ContainerWatzCore.java +++ b/com/hbm/inventory/container/ContainerWatzCore.java @@ -13,9 +13,7 @@ public class ContainerWatzCore extends Container { private TileEntityWatzCore diFurnace; - private int water; private int power; - private int trit; public ContainerWatzCore(InventoryPlayer invPlayer, TileEntityWatzCore tedf) { @@ -57,9 +55,14 @@ public class ContainerWatzCore extends Container { this.addSlotToContainer(new Slot(tedf, 33, 62, 108)); this.addSlotToContainer(new Slot(tedf, 34, 80, 108)); this.addSlotToContainer(new Slot(tedf, 35, 98, 108)); - this.addSlotToContainer(new Slot(tedf, 36, 134, 108)); + //Mud Input + this.addSlotToContainer(new Slot(tedf, 36, 134, 108 - 18)); + //Battery this.addSlotToContainer(new Slot(tedf, 37, 152, 108)); + //Filter this.addSlotToContainer(new Slot(tedf, 38, 116, 63)); + //Mud Output + this.addSlotToContainer(new Slot(tedf, 39, 134, 108)); for(int i = 0; i < 3; i++) { @@ -78,8 +81,7 @@ public class ContainerWatzCore extends Container { @Override public void addCraftingToCrafters(ICrafting crafting) { super.addCraftingToCrafters(crafting); - crafting.sendProgressBarUpdate(this, 0, this.diFurnace.waste); - crafting.sendProgressBarUpdate(this, 1, this.diFurnace.power); + crafting.sendProgressBarUpdate(this, 0, this.diFurnace.power); } @Override @@ -93,8 +95,8 @@ public class ContainerWatzCore extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if (par2 <= 38) { - if (!this.mergeItemStack(var5, 39, this.inventorySlots.size(), true)) + if (par2 <= 39) { + if (!this.mergeItemStack(var5, 40, this.inventorySlots.size(), true)) { return null; } @@ -128,28 +130,18 @@ public class ContainerWatzCore extends Container { { ICrafting par1 = (ICrafting)this.crafters.get(i); - if(this.water != this.diFurnace.waste) - { - par1.sendProgressBarUpdate(this, 0, this.diFurnace.waste); - } - if(this.power != this.diFurnace.power) { - par1.sendProgressBarUpdate(this, 1, this.diFurnace.power); + par1.sendProgressBarUpdate(this, 0, this.diFurnace.power); } } - this.water = this.diFurnace.waste; this.power = this.diFurnace.power; } @Override public void updateProgressBar(int i, int j) { if(i == 0) - { - diFurnace.waste = j; - } - if(i == 1) { diFurnace.power = j; } diff --git a/com/hbm/inventory/gui/GUIFusionMultiblock.java b/com/hbm/inventory/gui/GUIFusionMultiblock.java index 9d52dc7c3..581a6f01d 100644 --- a/com/hbm/inventory/gui/GUIFusionMultiblock.java +++ b/com/hbm/inventory/gui/GUIFusionMultiblock.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; +import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerFusionMultiblock; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityFusionMultiblock; @@ -12,7 +13,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; -public class GUIFusionMultiblock extends GuiContainer { +public class GUIFusionMultiblock extends GuiFluidContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_fusion_multiblock.png"); private TileEntityFusionMultiblock diFurnace; @@ -25,6 +26,15 @@ public class GUIFusionMultiblock extends GuiContainer { this.ySize = 222; } + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + diFurnace.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 88 - 70, 16, 70); + diFurnace.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 88 - 70, 16, 70); + diFurnace.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 88 - 70, 16, 70); + } + @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); @@ -38,20 +48,17 @@ public class GUIFusionMultiblock extends GuiContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - int i = diFurnace.getWaterScaled(88); - drawTexturedModalRect(guiLeft + 8, guiTop + 106 - i, 176, 88 - i, 16, i); - - int j = diFurnace.getCoolantScaled(88); - drawTexturedModalRect(guiLeft + 134, guiTop + 106 - j, 208, 88 - j, 16, j); - + int k = diFurnace.getPowerScaled(88); - drawTexturedModalRect(guiLeft + 26, guiTop + 106 - k, 192, 88 - k, 16, k); - - int l = diFurnace.getHeatScaled(88); - drawTexturedModalRect(guiLeft + 152, guiTop + 106 - l, 224, 88 - l, 16, l); + drawTexturedModalRect(guiLeft + 26, guiTop + 88 - k, 192, 88 - k, 16, k); if(diFurnace.isRunning()) drawTexturedModalRect(guiLeft + 80, guiTop + 18, 240, 0, 16, 16); + + Minecraft.getMinecraft().getTextureManager().bindTexture(FluidTank.fluidTextures); + + diFurnace.tanks[0].renderTank(this, guiLeft + 8, guiTop + 88, diFurnace.tanks[0].getTankType().textureX() * FluidTank.x, diFurnace.tanks[0].getTankType().textureY() * FluidTank.y, 16, 70); + diFurnace.tanks[1].renderTank(this, guiLeft + 134, guiTop + 88, diFurnace.tanks[1].getTankType().textureX() * FluidTank.x, diFurnace.tanks[1].getTankType().textureY() * FluidTank.y, 16, 70); + diFurnace.tanks[2].renderTank(this, guiLeft + 152, guiTop + 88, diFurnace.tanks[2].getTankType().textureX() * FluidTank.x, diFurnace.tanks[2].getTankType().textureY() * FluidTank.y, 16, 70); } } diff --git a/com/hbm/inventory/gui/GUIWatzCore.java b/com/hbm/inventory/gui/GUIWatzCore.java index c05627f9c..8bc63c394 100644 --- a/com/hbm/inventory/gui/GUIWatzCore.java +++ b/com/hbm/inventory/gui/GUIWatzCore.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; +import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerWatzCore; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityWatzCore; @@ -12,7 +13,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; -public class GUIWatzCore extends GuiContainer { +public class GUIWatzCore extends GuiFluidContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_watz_multiblock.png"); private TileEntityWatzCore diFurnace; @@ -26,6 +27,13 @@ public class GUIWatzCore extends GuiContainer { this.ySize = 256; } + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + diFurnace.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 106 - 18 - 70, 16, 70); + } + @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); @@ -34,7 +42,7 @@ public class GUIWatzCore extends GuiContainer { this.fontRendererObj.drawString(I18n.format("container.inventory")/* + String.valueOf(diFurnace.powerList)*/, 8, this.ySize - 96 + 2 - 34, 4210752); this.fontRendererObj.drawString(String.valueOf(diFurnace.powerList + " HE/tick"), 8, this.ySize - 50 + 2 + 13, 4210752); this.fontRendererObj.drawString(String.valueOf(diFurnace.heatList + " heat"), 8, this.ySize - 50 + 2 + 22, 4210752); - this.fontRendererObj.drawString(String.valueOf((diFurnace.decayMultiplier * diFurnace.heat)/100 + " waste/tick"), 8, this.ySize - 50 + 2 + 31, 4210752); + this.fontRendererObj.drawString(String.valueOf((diFurnace.decayMultiplier * diFurnace.heat)/100 /100 + " waste/tick"), 8, this.ySize - 50 + 2 + 31, 4210752); this.fontRendererObj.drawString(String.valueOf(diFurnace.powerMultiplier + "% power"), 100, this.ySize - 50 + 2 + 13, 4210752); this.fontRendererObj.drawString(String.valueOf(diFurnace.heatMultiplier + "% heat"), 100, this.ySize - 50 + 2 + 22, 4210752); this.fontRendererObj.drawString(String.valueOf(diFurnace.decayMultiplier + "% decay"), 100, this.ySize - 50 + 2 + 31, 4210752); @@ -46,10 +54,11 @@ public class GUIWatzCore extends GuiContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int j = diFurnace.getWaterScaled(88); - drawTexturedModalRect(guiLeft + 134, guiTop + 106 - j, 176, 88 - j, 16, j); + int l = diFurnace.getPowerScaled(70); + drawTexturedModalRect(guiLeft + 152, guiTop + 106 - 18 - l, 192, 70 - l, 16, l); - int l = diFurnace.getPowerScaled(88); - drawTexturedModalRect(guiLeft + 152, guiTop + 106 - l, 192, 88 - l, 16, l); + Minecraft.getMinecraft().getTextureManager().bindTexture(FluidTank.fluidTextures); + + diFurnace.tank.renderTank(this, guiLeft + 134, guiTop + 106 - 18, diFurnace.tank.getTankType().textureX() * FluidTank.x, diFurnace.tank.getTankType().textureY() * FluidTank.y, 16, 70); } } diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 7139d6b9d..0828416dc 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -209,6 +209,7 @@ public class ModItems { public static Item fragment_cerium; public static Item fragment_lanthanium; public static Item fragment_actinium; + public static Item fragment_meteorite; public static Item biomass; @@ -1216,6 +1217,7 @@ public class ModItems { fragment_cerium = new Item().setUnlocalizedName("fragment_cerium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fragment_cerium"); fragment_lanthanium = new Item().setUnlocalizedName("fragment_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fragment_lanthanium"); fragment_actinium = new Item().setUnlocalizedName("fragment_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fragment_actinium"); + fragment_meteorite = new Item().setUnlocalizedName("fragment_meteorite").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fragment_meteorite"); biomass = new Item().setUnlocalizedName("biomass").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":biomass"); @@ -2164,6 +2166,7 @@ public class ModItems { GameRegistry.registerItem(fragment_cerium, fragment_cerium.getUnlocalizedName()); GameRegistry.registerItem(fragment_lanthanium, fragment_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(fragment_actinium, fragment_actinium.getUnlocalizedName()); + GameRegistry.registerItem(fragment_meteorite, fragment_meteorite.getUnlocalizedName()); //Things that look like rotten flesh but aren't GameRegistry.registerItem(biomass, biomass.getUnlocalizedName()); diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index 17694f283..25eea6fce 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -317,7 +317,10 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_fluidtank || world.getBlock(x, y, z) == ModBlocks.dummy_port_refinery || world.getBlock(x, y, z) == ModBlocks.dummy_port_pumpjack || - world.getBlock(x, y, z) == ModBlocks.dummy_port_turbofan) + world.getBlock(x, y, z) == ModBlocks.dummy_port_turbofan || + world.getBlock(x, y, z) == ModBlocks.reactor_hatch || + world.getBlock(x, y, z) == ModBlocks.fusion_hatch || + world.getBlock(x, y, z) == ModBlocks.watz_hatch) { return true; } @@ -980,6 +983,40 @@ public class Library { { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } + //Large Nuclear Reactor + if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z + 2) == ModBlocks.reactor_computer) + { + tileentity = worldObj.getTileEntity(x, y, z + 2); + } + if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x, y, z - 2) == ModBlocks.reactor_computer) + { + tileentity = worldObj.getTileEntity(x, y, z - 2); + } + if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x + 2, y, z) == ModBlocks.reactor_computer) + { + tileentity = worldObj.getTileEntity(x + 2, y, z); + } + if(block == ModBlocks.reactor_hatch && worldObj.getBlock(x - 2, y, z) == ModBlocks.reactor_computer) + { + tileentity = worldObj.getTileEntity(x - 2, y, z); + } + //Large Fusion Reactor + if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x, y, z + 8) == ModBlocks.fusion_core) + { + tileentity = worldObj.getTileEntity(x, y, z + 8); + } + if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x, y, z - 8) == ModBlocks.fusion_core) + { + tileentity = worldObj.getTileEntity(x, y, z - 8); + } + if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x + 8, y, z) == ModBlocks.fusion_core) + { + tileentity = worldObj.getTileEntity(x + 8, y, z); + } + if(block == ModBlocks.fusion_hatch && worldObj.getBlock(x - 8, y, z) == ModBlocks.fusion_core) + { + tileentity = worldObj.getTileEntity(x - 8, y, z); + } if(tileentity == that) tileentity = null; diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 5a212aabc..d90bbc2d5 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -899,6 +899,15 @@ public class MainRegistry FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_sas3), new ItemStack(ModItems.cell_empty), FluidType.SAS3, 1000)); FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_oil), new ItemStack(ModBlocks.ore_oil_empty), FluidType.OIL, 500)); + + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 1), new ItemStack(ModItems.tank_waste, 1, 0), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 2), new ItemStack(ModItems.tank_waste, 1, 1), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 3), new ItemStack(ModItems.tank_waste, 1, 2), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 4), new ItemStack(ModItems.tank_waste, 1, 3), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 5), new ItemStack(ModItems.tank_waste, 1, 4), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 6), new ItemStack(ModItems.tank_waste, 1, 5), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 7), new ItemStack(ModItems.tank_waste, 1, 6), FluidType.WATZ, 8000)); + FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 8), new ItemStack(ModItems.tank_waste, 1, 7), FluidType.WATZ, 8000)); for(int i = 1; i < FluidType.values().length; i++) { FluidContainerRegistry.instance.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, i), new ItemStack(ModItems.fluid_tank_empty), FluidType.getEnum(i), 1000)); diff --git a/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java b/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java index 0f4ef49da..c2e97f397 100644 --- a/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java +++ b/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java @@ -4,9 +4,13 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IReactor; import com.hbm.interfaces.ISource; +import com.hbm.inventory.FluidTank; import com.hbm.items.ModItems; import com.hbm.lib.Library; @@ -20,24 +24,23 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class TileEntityFusionMultiblock extends TileEntity implements ISidedInventory, IReactor, ISource { +public class TileEntityFusionMultiblock extends TileEntity implements ISidedInventory, IReactor, ISource, IFluidContainer, IFluidAcceptor { - public int water; - public final static int waterMax = 10000000; - public int deut; - public final static int deutMax = 10000000; - public int trit; - public final static int tritMax = 10000000; public int power; public final static int maxPower = 100000000; private ItemStack slots[]; public int age = 0; public List list = new ArrayList(); + public FluidTank tanks[]; private String customName; public TileEntityFusionMultiblock() { - slots = new ItemStack[9]; + slots = new ItemStack[12]; + tanks = new FluidTank[3]; + tanks[0] = new FluidTank(FluidType.WATER, 128000, 0); + tanks[1] = new FluidTank(FluidType.DEUTERIUM, 64000, 1); + tanks[2] = new FluidTank(FluidType.TRITIUM, 64000, 2); } @Override public int getSizeInventory() { @@ -152,10 +155,10 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - water = nbt.getInteger("water"); - deut = nbt.getInteger("deut"); power = nbt.getInteger("power"); - trit = nbt.getInteger("trit"); + tanks[0].readFromNBT(nbt, "water"); + tanks[1].readFromNBT(nbt, "deut"); + tanks[2].readFromNBT(nbt, "trit"); slots = new ItemStack[getSizeInventory()]; @@ -173,10 +176,12 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger("water", water); - nbt.setInteger("deut", deut); + nbt.setInteger("power", power); - nbt.setInteger("trit", trit); + tanks[0].writeToNBT(nbt, "water"); + tanks[1].writeToNBT(nbt, "deut"); + tanks[2].writeToNBT(nbt, "trit"); + NBTTagList list = new NBTTagList(); for(int i = 0; i < slots.length; i++) @@ -947,17 +952,17 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve @Override public int getWaterScaled(int i) { - return (water * i) / waterMax; + return 0; } @Override public int getCoolantScaled(int i) { - return (deut * i) / deutMax; + return 0; } @Override public int getHeatScaled(int i) { - return (trit * i) / tritMax; + return 0; } @Override @@ -976,97 +981,49 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve if(age == 9 || age == 19) ffgeuaInit(); - //if(!worldObj.isRemote) + if(!worldObj.isRemote) { - if(slots[0] != null && slots[0].getItem() == Items.water_bucket && this.water + 250000 <= waterMax) + tanks[0].loadTank(0, 9, slots); + tanks[1].loadTank(2, 10, slots); + tanks[2].loadTank(3, 11, slots); + + for(int i = 0; i < 3; i++) + tanks[i].updateTank(xCoord, yCoord, zCoord); + + if(slots[2] != null && slots[2].getItem() == ModItems.tritium_deuterium_cake) { - this.slots[0].stackSize--; - this.water += 250000; - if(this.slots[0].stackSize == 0) + this.slots[2].stackSize--; + if(this.slots[2].stackSize == 0) { - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); + this.slots[2] = null; } - } - if(slots[0] != null && slots[0].getItem() == ModItems.rod_water && this.water + 250000 <= waterMax) - { - this.slots[0].stackSize--; - this.water += 250000; - if(this.slots[0].stackSize == 0) - { - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } - } - if(slots[0] != null && slots[0].getItem() == ModItems.rod_dual_water && this.water + 500000 <= waterMax) - { - this.slots[0].stackSize--; - this.water += 500000; - if(this.slots[0].stackSize == 0) - { - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } - } - if(slots[0] != null && slots[0].getItem() == ModItems.rod_quad_water && this.water + 1000000 <= waterMax) - { - this.slots[0].stackSize--; - this.water += 1000000; - if(this.slots[0].stackSize == 0) - { - this.slots[0] = this.slots[0].getItem().getContainerItem(this.slots[0]); - } - } - if(slots[2] != null && slots[2].getItem() == ModItems.cell_deuterium && this.deut + 1000000 <= deutMax) - { - this.slots[2].stackSize--; - this.deut += 1000000; - if(this.slots[2].stackSize == 0) - { - this.slots[2] = null; - } + tanks[1].setFill(tanks[1].getFill() + 10000); + tanks[2].setFill(tanks[2].getFill() + 10000); + + if(tanks[1].getFill() > tanks[1].getMaxFill()) + tanks[1].setFill(tanks[1].getMaxFill()); + + if(tanks[2].getFill() > tanks[2].getMaxFill()) + tanks[2].setFill(tanks[2].getMaxFill()); } - if(slots[3] != null && slots[3].getItem() == ModItems.cell_tritium && this.trit + 1000000 <= tritMax) + + if(slots[3] != null && slots[3].getItem() == ModItems.tritium_deuterium_cake) { this.slots[3].stackSize--; - this.trit += 1000000; if(this.slots[3].stackSize == 0) { this.slots[3] = null; } - } - - if(slots[2] != null && slots[2].getItem() == ModItems.tritium_deuterium_cake && trit + 7500000 <= tritMax && deut + 7500000 <= deutMax) - { - this.slots[2].stackSize--; - this.deut += 7500000; - this.trit += 7500000; - if(this.slots[2].stackSize == 0) - { - this.slots[2] = null; - } - } - - if(slots[3] != null && slots[3].getItem() == ModItems.tritium_deuterium_cake && trit + 7500000 <= tritMax && deut + 7500000 <= deutMax) - { - this.slots[3].stackSize--; - this.deut += 7500000; - this.trit += 7500000; - if(this.slots[3].stackSize == 0) - { - this.slots[3] = null; - } - } - - if(slots[0] != null && slots[0].getItem() == ModItems.inf_water) - { - this.water = waterMax; - } - if(slots[2] != null && slots[2].getItem() == ModItems.inf_deuterium) - { - this.deut = deutMax; - } - if(slots[3] != null && slots[3].getItem() == ModItems.inf_tritium) - { - this.trit = tritMax; + + tanks[1].setFill(tanks[1].getFill() + 10000); + tanks[2].setFill(tanks[2].getFill() + 10000); + + if(tanks[1].getFill() > tanks[1].getMaxFill()) + tanks[1].setFill(tanks[1].getMaxFill()); + + if(tanks[2].getFill() > tanks[2].getMaxFill()) + tanks[2].setFill(tanks[2].getMaxFill()); } if(!isRunning() && @@ -1075,7 +1032,7 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve slots[6] != null && (slots[6].getItem() == ModItems.fusion_core || slots[6].getItem() == ModItems.energy_core) && slots[6].getItemDamage() == 0 && slots[7] != null && (slots[7].getItem() == ModItems.fusion_core || slots[7].getItem() == ModItems.energy_core) && slots[7].getItemDamage() == 0 && hasFuse() && - deut > 0 && trit > 0) + tanks[1].getFill() > 0 && tanks[2].getFill() > 0) { slots[4] = null; slots[5] = null; @@ -1085,12 +1042,12 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve } else { if(isStructureValid(worldObj) && isRunning()) { - deut -= 100; - trit -= 100; + tanks[1].setFill(tanks[1].getFill() - 1); + tanks[2].setFill(tanks[2].getFill() - 1); - if(water - 100 >= 0) + if(tanks[0].getFill() >= 20) { - water -= 100; + tanks[0].setFill(tanks[0].getFill() - 20); power += 100000; if(isCoatingValid(worldObj)) @@ -1115,7 +1072,7 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve emptyPlasma(); } - if(deut <= 0 || trit <= 0) + if(tanks[1].getFill() <= 0 || tanks[2].getFill() <= 0) { emptyPlasma(); } @@ -1286,4 +1243,50 @@ public class TileEntityFusionMultiblock extends TileEntity implements ISidedInve this.list.clear(); } + @Override + public void setFillstate(int fill, int index) { + if(index < 3 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + if(index < 3 && tanks[index] != null) + tanks[index].setTankType(type); + } + + @Override + public void setAFluidFill(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); + else if(type.name().equals(tanks[2].getTankType().name())) + tanks[2].setFill(i); + } + + @Override + public int getAFluidFill(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 if(type.name().equals(tanks[2].getTankType().name())) + return tanks[2].getFill(); + else + return 0; + } + + @Override + public int getMaxAFluidFill(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 if(type.name().equals(tanks[2].getTankType().name())) + return tanks[2].getMaxFill(); + else + return 0; + } + } diff --git a/com/hbm/tileentity/machine/TileEntityMachineGenerator.java b/com/hbm/tileentity/machine/TileEntityMachineGenerator.java index ec262e87b..159bb6cc6 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineGenerator.java +++ b/com/hbm/tileentity/machine/TileEntityMachineGenerator.java @@ -488,12 +488,17 @@ public class TileEntityMachineGenerator extends TileEntity implements ISidedInve } } } - + public void attemptPower(int i) { - if(this.tanks[0].getFill() - i >= 0) + + int j = (int) Math.ceil(i / 100); + + if(this.tanks[0].getFill() - j >= 0) { this.power += i; - this.tanks[0].setFill(tanks[0].getFill() - i); + if(j > tanks[0].getMaxFill() / 25) + j = tanks[0].getMaxFill() / 25; + this.tanks[0].setFill(tanks[0].getFill() - j); } } diff --git a/com/hbm/tileentity/machine/TileEntityReactorMultiblock.java b/com/hbm/tileentity/machine/TileEntityReactorMultiblock.java index a6a831041..8c044db62 100644 --- a/com/hbm/tileentity/machine/TileEntityReactorMultiblock.java +++ b/com/hbm/tileentity/machine/TileEntityReactorMultiblock.java @@ -12,6 +12,7 @@ import com.hbm.entity.mob.EntityNuclearCreeper; import com.hbm.explosion.ExplosionParticle; import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IReactor; import com.hbm.interfaces.ISource; @@ -38,7 +39,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityReactorMultiblock extends TileEntity implements ISidedInventory, ISource, IFluidContainer { +public class TileEntityReactorMultiblock extends TileEntity implements ISidedInventory, ISource, IFluidContainer, IFluidAcceptor { public int heat; public final static int heatMax = 1000000; @@ -633,10 +634,15 @@ public class TileEntityReactorMultiblock extends TileEntity implements ISidedInv } public void attemptPower(int i) { - if(this.tanks[0].getFill() - i >= 0) + + int j = (int) Math.ceil(i / 100); + + if(this.tanks[0].getFill() - j >= 0) { this.power += i; - this.tanks[0].setFill(tanks[0].getFill() - i); + if(j > tanks[0].getMaxFill() / 25) + j = tanks[0].getMaxFill() / 25; + this.tanks[0].setFill(tanks[0].getFill() - j); } } @@ -723,4 +729,32 @@ public class TileEntityReactorMultiblock extends TileEntity implements ISidedInv if(index < 2 && tanks[index] != null) tanks[index].setTankType(type); } + + @Override + public void setAFluidFill(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 getAFluidFill(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 int getMaxAFluidFill(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; + } } diff --git a/com/hbm/tileentity/machine/TileEntityWatzCore.java b/com/hbm/tileentity/machine/TileEntityWatzCore.java index 0f6fd33b0..76655539c 100644 --- a/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -6,9 +6,14 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.interfaces.IFluidSource; import com.hbm.interfaces.IReactor; import com.hbm.interfaces.ISource; +import com.hbm.inventory.FluidTank; import com.hbm.items.ModItems; import com.hbm.items.special.WatzFuel; import com.hbm.lib.Library; @@ -24,10 +29,8 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class TileEntityWatzCore extends TileEntity implements ISidedInventory, IReactor, ISource { +public class TileEntityWatzCore extends TileEntity implements ISidedInventory, IReactor, ISource, IFluidContainer, IFluidSource { - public int waste; - public final static int wasteMax = 10000000; public int power; public final static int maxPower = 100000000; public int heat; @@ -45,11 +48,14 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I private ItemStack slots[]; public int age = 0; public List list = new ArrayList(); + public List list1 = new ArrayList(); + public FluidTank tank; private String customName; public TileEntityWatzCore() { - slots = new ItemStack[39]; + slots = new ItemStack[40]; + tank = new FluidTank(FluidType.WATZ, 64000, 0); } @Override public int getSizeInventory() { @@ -164,8 +170,8 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - waste = nbt.getInteger("deut"); power = nbt.getInteger("power"); + tank.readFromNBT(nbt, "watz"); slots = new ItemStack[getSizeInventory()]; @@ -183,8 +189,10 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger("deut", waste); + nbt.setInteger("power", power); + tank.writeToNBT(nbt, "watz"); + NBTTagList list = new NBTTagList(); for(int i = 0; i < slots.length; i++) @@ -486,7 +494,7 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I @Override public int getWaterScaled(int i) { - return (waste * i) / wasteMax; + return 0; } @Override @@ -513,8 +521,10 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I age = 0; } - if (age == 9 || age == 19) + if (age == 9 || age == 19) { ffgeuaInit(); + fillFluidInit(tank.getTankType()); + } powerMultiplier = 100; heatMultiplier = 100; @@ -552,39 +562,30 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I powerList /= 100; power += powerList; - waste += ((decayMultiplier * heat) / 100); + tank.setFill(tank.getFill() + ((decayMultiplier * heat) / 100) / 100); if(power > maxPower) power = maxPower; //Gets rid of 1/4 of the total waste, if at least one access hatch is not occupied - if(waste > wasteMax) + if(tank.getFill() > tank.getMaxFill()) emptyWaste(); power = Library.chargeItemsFromTE(slots, 37, power, maxPower); - if(waste - 2500000 >= 0 && slots[36] != null && slots[36].getItem() == ModItems.tank_waste && slots[36].getItemDamage() < 8) - { - waste -= 2500000; - slots[36].setItemDamage(slots[36].getItemDamage() + 1); - } - - if(waste - 2500000 >= 0 && slots[36] != null && slots[36].getItem() == Items.bucket) - { - waste -= 2500000; - slots[36] = new ItemStack(ModItems.bucket_mud).copy(); - } + tank.updateTank(xCoord, yCoord, zCoord); + tank.unloadTank(36, 39, slots); if(slots[36] != null && slots[36].getItem() == ModItems.titanium_filter && slots[36].getItemDamage() + 100 <= slots[36].getMaxDamage()) { - if(waste - 10000 >= 0) + if(tank.getFill() - 10 >= 0) { - waste -= 10000; + tank.setFill(tank.getFill() - 10); slots[36].setItemDamage(slots[36].getItemDamage() + 100); } else { - if(waste > 0) + if(tank.getFill() > 0) { - waste = 0; + tank.setFill(0); slots[36].setItemDamage(slots[36].getItemDamage() + 100); } } @@ -627,8 +628,8 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I } public void emptyWaste() { - this.waste /= 4; - this.waste *= 3; + tank.setFill(tank.getFill() / 4); + tank.setFill(tank.getFill() * 3); if (!worldObj.isRemote) { if (this.worldObj.getBlock(this.xCoord + 4, this.yCoord, this.zCoord) == Blocks.air) { @@ -718,4 +719,42 @@ public class TileEntityWatzCore extends TileEntity implements ISidedInventory, I public void clearList() { this.list.clear(); } + + @Override + public void setFillstate(int fill, int index) { + tank.setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + tank.setTankType(type); + } + @Override + public void fillFluidInit(FluidType type) { + fillFluid(this.xCoord + 4, this.yCoord, this.zCoord, getTact(), type); + fillFluid(this.xCoord - 4, this.yCoord, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord, this.zCoord + 4, getTact(), type); + fillFluid(this.xCoord, this.yCoord, this.zCoord - 4, getTact(), type); + + } + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + @Override + public int getSFluidFill(FluidType type) { + return tank.getFill(); + } + @Override + public void setSFluidFill(int i, FluidType type) { + tank.setFill(i); + } + @Override + public List getFluidList(FluidType type) { + return list1; + } + @Override + public void clearFluidList(FluidType type) { + list1.clear(); + } } diff --git a/com/hbm/world/Meteorite.java b/com/hbm/world/Meteorite.java new file mode 100644 index 000000000..0ccca147b --- /dev/null +++ b/com/hbm/world/Meteorite.java @@ -0,0 +1,524 @@ +package com.hbm.world; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +public class Meteorite { + + public void generate(World world, Random rand, int x, int y, int z) { + + switch(rand.nextInt(3)) { + case 0: + generateLarge(world, rand, x, y, z); + break; + case 1: + generateMedium(world, rand, x, y, z); + break; + case 2: + generateSmall(world, rand, x, y, z); + break; + } + } + + public void generateLarge(World world, Random rand, int x, int y, int z) { + //0 - Molten + //1 - Cobble + //2 - Broken + //3 - Mix + int hull = rand.nextInt(4); + + //0 - Cobble + //1 - Broken + //2 - Mix + int outerPadding = 0; + + if(hull == 2) + outerPadding = 1 + rand.nextInt(2); + else if(hull == 3) + outerPadding = 2; + + //0 - Broken + //1 - Stone + //2 - Netherrack + int innerPadding = rand.nextInt(hull == 0 ? 3 : 2); + + //0 - Meteor + //1 - Treasure + //2 - Ore + int core = rand.nextInt(3); + + List hullL = new ArrayList(); + switch(hull) { + case 0: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + break; + case 1: + hullL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + break; + case 2: + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 3: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + } + + List opL = new ArrayList(); + switch(outerPadding) { + case 0: + opL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + break; + case 1: + opL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 2: + opL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + opL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + } + + List ipL = new ArrayList(); + switch(innerPadding) { + case 0: + ipL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 1: + ipL.add(new ItemStack(Blocks.stone)); + break; + case 2: + ipL.add(new ItemStack(Blocks.netherrack)); + break; + } + + List coreL = new ArrayList(); + switch(core) { + case 0: + coreL.add(new ItemStack(ModBlocks.block_meteor)); + break; + case 1: + coreL.add(new ItemStack(ModBlocks.block_meteor_treasure)); + break; + case 2: + coreL.addAll(this.getRandomOre(rand)); + break; + } + + switch(rand.nextInt(5)) { + case 0: + genL1(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 1: + genL2(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 2: + genL3(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 3: + genL4(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 4: + genL5(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + } + } + + public void generateMedium(World world, Random rand, int x, int y, int z) { + //0 - Molten + //1 - Cobble + //2 - Broken + //3 - Mix + int hull = rand.nextInt(4); + + //0 - Cobble + //1 - Broken + //2 - Mix + int outerPadding = 0; + + if(hull == 2) + outerPadding = 1 + rand.nextInt(2); + else if(hull == 3) + outerPadding = 2; + + //0 - Broken + //1 - Stone + //2 - Netherrack + int innerPadding = rand.nextInt(hull == 0 ? 3 : 2); + + //0 - Meteor + //1 - Treasure + //2 - Ore + int core = rand.nextInt(3); + + List hullL = new ArrayList(); + switch(hull) { + case 0: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + break; + case 1: + hullL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + break; + case 2: + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 3: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + } + + List opL = new ArrayList(); + switch(outerPadding) { + case 0: + opL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + break; + case 1: + opL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 2: + opL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + opL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + } + + List ipL = new ArrayList(); + switch(innerPadding) { + case 0: + ipL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 1: + ipL.add(new ItemStack(Blocks.stone)); + break; + case 2: + ipL.add(new ItemStack(Blocks.netherrack)); + break; + } + + List coreL = new ArrayList(); + switch(core) { + case 0: + coreL.add(new ItemStack(ModBlocks.block_meteor)); + break; + case 1: + coreL.add(new ItemStack(ModBlocks.block_meteor_treasure)); + break; + case 2: + coreL.addAll(this.getRandomOre(rand)); + break; + } + + List sCore = new ArrayList(); + switch(core) { + case 0: + sCore.add(new ItemStack(ModBlocks.block_meteor)); + break; + case 1: + sCore.add(new ItemStack(ModBlocks.block_meteor_treasure)); + break; + case 2: + sCore.add(new ItemStack(ModBlocks.block_meteor_treasure)); + sCore.add(new ItemStack(ModBlocks.block_meteor)); + break; + } + + switch(rand.nextInt(6)) { + case 0: + genM1(world, rand, x, y, z, hullL, opL, ipL, sCore); + break; + case 1: + genM2(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 2: + genM3(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 3: + genM4(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 4: + genM5(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + case 5: + genM6(world, rand, x, y, z, hullL, opL, ipL, coreL); + break; + } + } + + public void generateSmall(World world, Random rand, int x, int y, int z) { + //0 - Molten + //1 - Cobble + //2 - Broken + //3 - Mix + int hull = rand.nextInt(4); + + //0 - Meteor + //1 - Treasure + //2 - Ore + int core = rand.nextInt(3); + + List hullL = new ArrayList(); + switch(hull) { + case 0: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + break; + case 1: + hullL.add(new ItemStack(ModBlocks.block_meteor_cobble)); + break; + case 2: + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + case 3: + hullL.add(new ItemStack(ModBlocks.block_meteor_molten)); + hullL.add(new ItemStack(ModBlocks.block_meteor_broken)); + break; + } + + List sCore = new ArrayList(); + switch(core) { + case 0: + sCore.add(new ItemStack(ModBlocks.block_meteor)); + break; + case 1: + sCore.add(new ItemStack(ModBlocks.block_meteor_treasure)); + break; + case 2: + sCore.add(new ItemStack(ModBlocks.block_meteor_treasure)); + sCore.add(new ItemStack(ModBlocks.block_meteor)); + break; + } + + generateBox(world, rand, x, y, z, hullL); + ItemStack stack = sCore.get(rand.nextInt(sCore.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genL1(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere7x7(world, rand, x, y, z, hull); + generateStar5x5(world, rand, x, y, z, op); + generateStar3x3(world, rand, x, y, z, ip); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genL2(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere7x7(world, rand, x, y, z, hull); + generateSphere5x5(world, rand, x, y, z, op); + generateStar3x3(world, rand, x, y, z, ip); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genL3(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere7x7(world, rand, x, y, z, hull); + generateSphere5x5(world, rand, x, y, z, op); + generateBox(world, rand, x, y, z, ip); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genL4(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere7x7(world, rand, x, y, z, hull); + generateSphere5x5(world, rand, x, y, z, op); + generateBox(world, rand, x, y, z, ip); + generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genL5(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere7x7(world, rand, x, y, z, hull); + generateSphere5x5(world, rand, x, y, z, op); + generateStar5x5(world, rand, x, y, z, ip); + generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM1(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM2(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + generateStar3x3(world, rand, x, y, z, op); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM3(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + generateBox(world, rand, x, y, z, op); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM4(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + generateBox(world, rand, x, y, z, op); + generateStar3x3(world, rand, x, y, z, ip); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM5(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + generateBox(world, rand, x, y, z, ip); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void genM6(World world, Random rand, int x, int y, int z, List hull, List op, List ip, List core) { + generateSphere5x5(world, rand, x, y, z, hull); + generateBox(world, rand, x, y, z, ip); + generateStar3x3(world, rand, x, y, z, this.getRandomOre(rand)); + ItemStack stack = core.get(rand.nextInt(core.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void generateSphere7x7(World world, Random rand, int x, int y, int z, List set) { + for(int a = -3; a < 4; a++) + for(int b = -1; b < 2; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -1; a < 2; a++) + for(int b = -3; b < 4; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -1; a < 2; a++) + for(int b = -1; b < 2; b++) + for(int c = -3; c < 4; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + for(int a = -2; a < 3; a++) + for(int b = -2; b < 3; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -1; a < 2; a++) + for(int b = -2; b < 3; b++) + for(int c = -2; c < 3; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -2; a < 3; a++) + for(int b = -1; b < 2; b++) + for(int c = -2; c < 3; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + } + + public void generateSphere5x5(World world, Random rand, int x, int y, int z, List set) { + for(int a = -2; a < 3; a++) + for(int b = -1; b < 2; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -1; a < 2; a++) + for(int b = -2; b < 3; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + for(int a = -1; a < 2; a++) + for(int b = -1; b < 2; b++) + for(int c = -2; c < 3; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + } + + public void generateBox(World world, Random rand, int x, int y, int z, List set) { + for(int a = -1; a < 2; a++) + for(int b = -1; b < 2; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + } + + public void generateStar5x5(World world, Random rand, int x, int y, int z, List set) { + for(int a = -1; a < 2; a++) + for(int b = -1; b < 2; b++) + for(int c = -1; c < 2; c++) { + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + a, y + b, z + c, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x - 2, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y + 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y - 2, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y, z + 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y, z - 2, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public void generateStar3x3(World world, Random rand, int x, int y, int z, List set) { + + ItemStack stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x + 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x - 1, y, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y + 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y - 1, z, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y, z + 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + stack = set.get(rand.nextInt(set.size())); + world.setBlock(x, y, z - 1, Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 2); + } + + public List getRandomOre(Random rand) { + List ores = new ArrayList(); + + String[] names = OreDictionary.getOreNames(); + + for(int i = 0; i < names.length; i++) { + if(names[i].length() > 3 && names[i].substring(0, 3).equals("ore")) { + + List ota = OreDictionary.getOres(names[i]); + for(int j = 0; j < ota.size(); j++) { + ItemStack stack = ota.get(j); + if(Block.getBlockFromItem(stack.getItem()) != null) + ores.add(stack.copy()); + } + } + } + + if(ores.isEmpty()) { + List list = new ArrayList(); + list.add(new ItemStack(Blocks.iron_ore, 1).copy()); + return list; + } else { + return ores; + } + } + +}