From ca58bfa74a40c9855a7af61bf5bb1efd52771adc Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 3 May 2020 00:04:35 +0200 Subject: [PATCH] finished new sat system, schrab and euph clusters, gerald recipe --- assets/hbm/lang/de_DE.lang | 3 + assets/hbm/lang/en_US.lang | 3 + assets/hbm/sounds.json | 3 +- assets/hbm/sounds/alarm/chime.ogg | Bin 0 -> 48416 bytes .../hbm/textures/blocks/block_euphemium.png | Bin 0 -> 297 bytes .../blocks/block_euphemium_cluster_side.png | Bin 0 -> 290 bytes .../blocks/block_euphemium_cluster_top.png | Bin 0 -> 857 bytes .../blocks/block_schrabidium_cluster_side.png | Bin 0 -> 290 bytes .../blocks/block_schrabidium_cluster_top.png | Bin 0 -> 299 bytes .../textures/gui/satellites/gui_sat_coord.png | Bin 3020 -> 3173 bytes .../hbm/textures/items/new/scrap_advanced.png | Bin 0 -> 424 bytes .../textures/items/new/scrap_aluminium.png | Bin 0 -> 462 bytes .../textures/items/new/scrap_beryllium.png | Bin 0 -> 454 bytes assets/hbm/textures/items/new/scrap_cmb.png | Bin 0 -> 442 bytes .../hbm/textures/items/new/scrap_copper.png | Bin 0 -> 428 bytes assets/hbm/textures/items/new/scrap_desh.png | Bin 0 -> 366 bytes .../textures/items/new/scrap_dineutronium.png | Bin 0 -> 488 bytes .../textures/items/new/scrap_dura_steel.png | Bin 0 -> 420 bytes assets/hbm/textures/items/new/scrap_iron.png | Bin 0 -> 457 bytes assets/hbm/textures/items/new/scrap_lead.png | Bin 0 -> 447 bytes .../items/new/scrap_magnetized_tungsten.png | Bin 0 -> 507 bytes .../textures/items/new/scrap_neptunium.png | Bin 0 -> 453 bytes .../textures/items/new/scrap_plutonium.png | Bin 0 -> 459 bytes .../textures/items/new/scrap_red_copper.png | Bin 0 -> 457 bytes .../textures/items/new/scrap_saturnite.png | Bin 0 -> 454 bytes .../textures/items/new/scrap_schrabidium.png | Bin 0 -> 443 bytes assets/hbm/textures/items/new/scrap_steel.png | Bin 0 -> 429 bytes .../hbm/textures/items/new/scrap_titanium.png | Bin 0 -> 423 bytes .../hbm/textures/items/new/scrap_tungsten.png | Bin 0 -> 397 bytes .../hbm/textures/items/new/scrap_uranium.png | Bin 0 -> 475 bytes com/hbm/blocks/ModBlocks.java | 23 ++- .../blocks/generic/BlockGenericPillar.java | 15 +- com/hbm/blocks/generic/WasteLog.java | 17 +- com/hbm/entity/projectile/EntityTom.java | 10 +- com/hbm/explosion/ExplosionBalefire.java | 6 +- com/hbm/inventory/MachineRecipes.java | 13 +- com/hbm/inventory/gui/GUIScreenSatCoord.java | 66 +++++-- com/hbm/items/ModItems.java | 6 +- .../{special => block}/ItemBlockLore.java | 17 +- .../{special => block}/ItemTaintBlock.java | 2 +- com/hbm/items/food/ItemAppleEuphemium.java | 4 +- com/hbm/items/gear/ArmorEuphemium.java | 47 +---- com/hbm/items/special/ItemPlasmaBlock.java | 20 --- .../items/special/ItemSchrabidiumBlock.java | 20 --- com/hbm/items/tool/ItemAssemblyTemplate.java | 18 +- com/hbm/items/tool/ItemSatChip.java | 9 +- com/hbm/main/CraftingManager.java | 5 +- com/hbm/main/ModEventHandler.java | 14 ++ com/hbm/packet/SatCoordPacket.java | 2 +- .../render/entity/projectile/RenderTom.java | 2 +- com/hbm/saveddata/SatelliteSavedData.java | 4 - com/hbm/saveddata/satellites/Satellite.java | 3 +- .../satellites/SatelliteHorizons.java | 38 ++++ .../satellites/SatelliteResonator.java | 14 ++ .../machine/TileEntityMachineAssembler.java | 136 +++++++++++---- .../machine/TileEntityMachineChemplant.java | 164 ++++++++++++------ 56 files changed, 458 insertions(+), 226 deletions(-) create mode 100644 assets/hbm/sounds/alarm/chime.ogg create mode 100644 assets/hbm/textures/blocks/block_euphemium.png create mode 100644 assets/hbm/textures/blocks/block_euphemium_cluster_side.png create mode 100644 assets/hbm/textures/blocks/block_euphemium_cluster_top.png create mode 100644 assets/hbm/textures/blocks/block_schrabidium_cluster_side.png create mode 100644 assets/hbm/textures/blocks/block_schrabidium_cluster_top.png create mode 100644 assets/hbm/textures/items/new/scrap_advanced.png create mode 100644 assets/hbm/textures/items/new/scrap_aluminium.png create mode 100644 assets/hbm/textures/items/new/scrap_beryllium.png create mode 100644 assets/hbm/textures/items/new/scrap_cmb.png create mode 100644 assets/hbm/textures/items/new/scrap_copper.png create mode 100644 assets/hbm/textures/items/new/scrap_desh.png create mode 100644 assets/hbm/textures/items/new/scrap_dineutronium.png create mode 100644 assets/hbm/textures/items/new/scrap_dura_steel.png create mode 100644 assets/hbm/textures/items/new/scrap_iron.png create mode 100644 assets/hbm/textures/items/new/scrap_lead.png create mode 100644 assets/hbm/textures/items/new/scrap_magnetized_tungsten.png create mode 100644 assets/hbm/textures/items/new/scrap_neptunium.png create mode 100644 assets/hbm/textures/items/new/scrap_plutonium.png create mode 100644 assets/hbm/textures/items/new/scrap_red_copper.png create mode 100644 assets/hbm/textures/items/new/scrap_saturnite.png create mode 100644 assets/hbm/textures/items/new/scrap_schrabidium.png create mode 100644 assets/hbm/textures/items/new/scrap_steel.png create mode 100644 assets/hbm/textures/items/new/scrap_titanium.png create mode 100644 assets/hbm/textures/items/new/scrap_tungsten.png create mode 100644 assets/hbm/textures/items/new/scrap_uranium.png rename com/hbm/items/{special => block}/ItemBlockLore.java (68%) rename com/hbm/items/{special => block}/ItemTaintBlock.java (96%) delete mode 100644 com/hbm/items/special/ItemPlasmaBlock.java delete mode 100644 com/hbm/items/special/ItemSchrabidiumBlock.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 7d68af631..e2de021c8 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -1607,6 +1607,9 @@ item.clip_defabricator.name=Gürtel mit Defabrikator-Energiezellen item.ammo_container.name=Munitionsbehälter tile.block_schrabidium.name=Schrabidiumblock +tile.block_euphemium.name=Euphemiumblock +tile.block_schrabidium_cluster.name=Schrabidium-Cluster +tile.block_euphemium_cluster.name=Euphemiumgeätzter Schrabidium-Cluster item.plate_gold.name=Goldplatte item.syringe_empty.name=Leere Spritze diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index bb8e0415c..976d8457a 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -1607,6 +1607,9 @@ item.clip_defabricator.name=Belt with Defabricator Energy Cells item.ammo_container.name=Ammo Container tile.block_schrabidium.name=Block of Schrabidium +tile.block_euphemium.name=Block of Euphemium +tile.block_schrabidium_cluster.name=Schrabidium Cluster +tile.block_euphemium_cluster.name=Euphemium-Etched Schrabidium Cluster item.plate_gold.name=Gold Plate item.syringe_empty.name=Empty Syringe diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 2fbea25a9..53602e42e 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -169,5 +169,6 @@ "alarm.airRaid": {"category": "record", "sounds": [{"name": "alarm/airRaid", "stream": true}]}, "alarm.classic": {"category": "record", "sounds": [{"name": "alarm/classicSiren", "stream": false}]}, "alarm.gambit": {"category": "record", "sounds": [{"name": "alarm/gambit", "stream": true}]}, - "alarm.soyuzed": {"category": "record", "sounds": [{"name": "alarm/soyuzed", "stream": false}]} + "alarm.soyuzed": {"category": "record", "sounds": [{"name": "alarm/soyuzed", "stream": false}]}, + "alarm.chime": {"category": "record", "sounds": [{"name": "alarm/chime", "stream": false}]} } diff --git a/assets/hbm/sounds/alarm/chime.ogg b/assets/hbm/sounds/alarm/chime.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5aa1c283545f78bee49f3b05fbf6d36ea65e30bf GIT binary patch literal 48416 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 HP6xUzHcvmDvXZ|pM{wtTN|*>kz| z!%aye8%O1ivn$)n_laC!XFKs`RnX&0Tz)dCJFY!W4}EjywV-G!R}tUlwB8oZ``^#4 zI4C6E(InXtntI!;yk(-t!Iv}FeSi7F>_=mdKI;Vst05m#kvj6}9 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/satellites/gui_sat_coord.png b/assets/hbm/textures/gui/satellites/gui_sat_coord.png index 808b651f6d21ab9b851cd51bfcb65e72f1f2558a..8b329b3f4ac9643439a9f485ea5e309170fbc0ea 100644 GIT binary patch literal 3173 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 Od{DNI$E%L{-1s*i<)e`R literal 3020 zcmd5;cTm$?7XGCGiJ>Tp*nlVqh$x6Og+NeBB2q*}iU`uA1|Fa>2q6?#K_nqT5RtME z8zMv^h!B#H_XI_hjwld_qC%*VUP7{YTV`ixc4lX1|JgJ1-E-#7{o~A;?|k=5cXf79 z*sx;*000VDjIA30fTSe|fXPbJ`Islc(gck?hCKt5MglDGCIBE(v9>m6uHK*Gal&_o zs=xV3zT)%XDCWiWSEhYs#$MP>*CbpMTKRjM#`+6vr(gIah`s7t|1YMV{xMBH7bT#5 zjOVuwFiodTzh>~CyxJcq?_6VZF0*-uOR(|bE>X`MG5NXi;oPFT37mE^p~yky!%1k) z@g_n{eEhvJ$$)+7FKeR7$&=Kc2-E#GeR;h8`O!e5-QrV01z78CmPa1T;?*+#*3~y`pM>@}StbTrfaA zQ_edwQ!T3{2n~Ly_p-+eI2A@r(ZJq4slEEDZeI%yoBa-vFZ)l-D4dw`9{oJqs zv2=a94{A*{-le!#U<$`vQC>z`>^3LoRSpvjS&Jf(WvScNZZ~)%UE=(KY?*1VxpwJs zX|Y9N+AZryvz|bfCx+&8nfb(t0SY@o9F43mB#916Ls=}bOHl!)|O_Xmw>h42*BaRidraun;m>n1cd&F<-aLF~{Fin)dzZzIrHe#g&g&42S z49?xQKi>bj%GdJRBknB&v-;@TjMa7aO!y^S!<^-q$EP)0g4$(uvEIx_+V$&EkUu$% zC>)jY>aMt8ca)TGOD-a_`mv=oJh**l8j-VkA@P3SP_a!P-QTR@roRs9N$d*m0H8Bg z7=V2#KUng{4E?g@uKJ8>)-;sutY=Q4`{D9+Nj+ z*nhS2-shRbAFRCL1+D85XTJ4sF%F3{AIrVaG4Xt&i|=GKXGI^F8kbIKzX@#lv4eN4 z!xAesGU!K+L@0DUaS`uFOB<58Tbu5Xjawm%>hLQWa;UCDwTO)`pSI7`)JkTicOb2A z+m9@Q%)y({J%tG=_m(`BL@PWQ($u0mzb)%b*|IqCKJiueSy=oO+iGmIVacXy`3mUQ z$uFvx7)nmFBIpOm^2bX^!*>(9khs<%74#K$2uT0*+^EUSFmGw8Kozj7SJ`$&)vvRY z5GMJ$x(8%CHFvr^50l1UYHNlCO1Q zC;QqU0eIUkJqUyC=u3Gsdr+3b#H@jyxd|N?IX9dRkuo`I+t5`M07%XLA7IzNDWvz=SH+s# zpo+mZCroiR98Dc+AQs^_DaWGNJ@Mh13z2P7iDAFtSfQL2VzZ07bVznDW$@3sUh+d@ zz>MN?*=8lj3WW6GnEW9|8jkVbj|^uAj}|ypWJ6CpoKGbYhrwGOE;_twujE^2 ztBH~dt;G8*mVKStu~+uM#Dk`42GfxXPN%VdpW*2nJTpeHKy&-En zK7UN>VvsUvZD(fLI&HzZOT!ouN6*`yE7RhY4<*ef-W7{_FHc$%wm{P_ZrsS$rlniq zaLrimn04CADMC)R!sEw(Dn$gkGvK)9zDT0J9?Zotkoh@~C(8MMsd@qy@ zWcCR#3~vQ!QXK{0m-kJC;_>ICkEmxV+!yAIJ9yJAilQ&kPYMclV!Om*Vy<12G6sNE zvse{8o)5OGx3_odr%SQbid7y=%-9X`tDKsO#C8o04Gm7jvo36HviZ$j5A?cDl7wQP zOjP0NeeUmn$An>Q#^H@9RNsC&+#)w9lvR`6dI@4j4FhkJmyJ!eoJ{cYs&F4KxC8`I z#w|(D`N8iFQs^g}0Z}~&YE9w%QKg{hKdedlJ&(b1GDo;d-wa+1kRm>Uwzvcb0MjLp zSCqCK*DeRKxXwaI6GafiC(u%WK=S(EDHoIrgoq(c#}RB^@NYlm% z(-Mp5buUmV7a4tsvUYxlQ&LzGk}Vb3_=4#nufoX2V#kr`6-d+Oav8q*@?5!RVZg;<*!{q8zs{vP zbzeq?V)HGY4CYsDC9g)>*;w9R7u;w?zvQhRRh!mgO9h+dywx+W^SP-j)qX9huW)5Z zlmcwBn*qi+=dd#nxIab}d7Cf4!=Yp^5U9C`^~}NiYSLfDG4{ zla;pz1OEo-GV^O7nKPRP?d)H`nG6&3l!t&9SYHrC!se%c!~tMA}X z#7mY4svunj90V+@2?G8rc+)2Dke>YtdH*8VGxwwSPC_08t@tr3D=RK8E(d=^ImlD` zIRhvD>_+d?u@)}}41LGEziR2uPec-J#_s7KO=0bvZ7YxYrThh;lT%0l diff --git a/assets/hbm/textures/items/new/scrap_advanced.png b/assets/hbm/textures/items/new/scrap_advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..2d51d0029433f993d3555708ad8d886c5a95a31d GIT binary patch literal 424 zcmV;Z0ayNsP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0X<1XK~y+Tt&%-X z!$1&)-*SYIk{p4^CqN2EfIFmy10alY0H|r{kf2FV0d=Gx+H{dpg(y|p#ou_xv575F z@TBqVjOXXg?CM`|D@7!kooJ225hq#v94TIP6!FC6r7W&qBw(DKO53gUv6LPPU;1Z> z=!=om>q(o9G(6Aj-}TLWA4_NN9%D2i*_qLqGd|?$xSMU6mBaIi3NSNO4qgQEMm?D+aP*KQ}xzRj$<+sCQ*`_g(Xy%!^R z5&WywVPXRWI#o1OeH65x+i;Y0V@c3;uuLSG1{xxqs{$ukRwXkl2q82CkeE+0yBU~S z0p`t%Yk7O#C)eTK9KPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b@x-K~y+Tt&*`y z#6S>+XGN@Xjm=>dhY5DOC&>f`X!X04)Nd*O)@m zSgrTZ?Zgf4b$+nf-PxJh`Ljd+!qV!7#xUElIQ?J%FYljvZhpa;L;?q2-|S~6nZzf% zf2KUo*Z~$uEIWwB3fTrWZQ1HPi0xMb|Cus72q7lG5NkvMNz<{kpy!P1e9gjpTGt# zogxLZtX)i)x$({@S9rKQQy6B;;6jni5&+)0-5Lc$D^R00X@EfK4>S{30KI6E{ln8b z*hX#>(79=vnwzR14zw}IuzIRF3v07*qoM6N<$ Ef-{iDzW@LL literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_beryllium.png b/assets/hbm/textures/items/new/scrap_beryllium.png new file mode 100644 index 0000000000000000000000000000000000000000..276ab7129d4d43e36bf255233e67746f317e4298 GIT binary patch literal 454 zcmV;%0XhDOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b5B#K~y+Tty3*; zgHRN`bn|T(x;1Emnj{OlVnG*2P>8Difc}Ome!v8>cm!zv0jdH;2sNlJtmlsR@@Q#h zc9L7({W$mD^YTjng7sP-V59pGb9D;@j>jW;o=3~&(`*w#41$2`)Fv7n$8o6ZIx32S zE|+g@%*jHKbX}*mZOL_A&iTI2wOlMFBQOlV%{QAD-Ym;9Cfl}6Q512`G)*eYaxzQ; zQ_%$9?e=Xroj!Se*x~Ro?DxUs9wr@-fSfc!BrAm2&=;y9+h@1=yh z3j@yQmM_<`EDFPrV=564`uRt!ZWsnNO+$H}%O;4|b$v$^kPU8iLL;QCR?oZ{&R5_# z!D9SQ$XHhZMA+yuFc5~bY=BD=WM~C2Q8fTW_2qH{=*1&Rl0=eKh-m_-tEy`BMxY1} w$8}!^^*@35ZudTk;jH=+D4t8q7Bh%`00|r0lQZO6EdT%j07*qoM6N<$f{M<&wEzGB literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_cmb.png b/assets/hbm/textures/items/new/scrap_cmb.png new file mode 100644 index 0000000000000000000000000000000000000000..660030c2e4f1148f0d6964f1cff1b0e2aed5ce7c GIT binary patch literal 442 zcmV;r0Y(0aP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Z&OpK~y+Tty3{h z#4r$C(_MK{n(Kl@8a>pI!*Uo_Ne z%z+0%ilRuGrjb0)`YD0?|KM@UhecNS;~%%Cgj2ed>%B4hlxR zYaA9%r6`I%5)uLW9|V|s9LG}EwOV-A7)5C5L)RhELHmFJ8L8rp)M@3-pdKK@)?C#` z0l!E{*8xP5eekPbHVU9fj!duU1rrP+>|9UT_Y3%qg4<9N&cn_f!Nw6e*Wv#YAY4yk kn9u$Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0YOPbK~y+Tt&$;6 z13?gl-{A=2L=gmo;6xn>h%@|wDhM7?kHX?e&hir=`~(!f!PJo85G5Fbf}jX;*>Adg z*=@JM@RG^w&di&gH+T9M>`M*{*Oe&N5qRoacR#A#?usUnI62+2y0l5f<*bq3zNFhv z>BYxF&WQMKRBK~%UEd!++CCgw?&M->wN@NoCg9w>`9W2=o37RS!?Tg=;f}_h1opg5 zyrqxz;8mL7F9&mZoUx*W;0+{@)6Jxra}`q%|5HK=*K2DwSYF5M+-^V5XYn7CqD+!!P*~{r+$@1%Ik)Y^?sGG<0zTXfH2{q+n*!b4! zch0N=an}Q_-{#th_%gq$uG$&nQ!gl>c-^A^1k>4K@y%x$H%m)%@CA5IV!ICvBL+`b KKbLh*2~7Z3#ga_` literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_dineutronium.png b/assets/hbm/textures/items/new/scrap_dineutronium.png new file mode 100644 index 0000000000000000000000000000000000000000..19f19034030e8aff89467e6b9d71f278e9b40bc1 GIT binary patch literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ewkCK~y+Ttx_>d z#4s5BBHSPj!ch(fQ3N9>B7(zhB83}VPZtL#rGq%Qh}(f~a)XOg|A32|lS>CT2e-pP zhvNhbS4ubQ;1KhYrq^71xcDG#@+I$m-}@5!Cvc(1UnrlOLg4)Bmio;zxok`j(Zp8! zn6`G>*;+#i5PjXf(&lHN0yZ=eBqT_Zgk0ApBs9qwKBLSL6GBfJTTzt-K|syn9L*f8 zQMYrd_GY-iV_;K08JjZ0QkO7X`1F13Ie0Dh~8x!7BmS?>=@=2*#McU eHYyKG5d8w~P{gT>Zf}GD0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Xa!TK~y+Tt&+`7 z!$1s#oitQ!BPAt5v`4t|{!hYz3kNuYK&6S&OPU|}-1V}gL0lMVvs$lb*5g?I1xcO{ zEO-1BQ+Y9gtJ^!77lq8ybW+5K%j>P?g(8t&W|<6aD{WOtcQ{1u&L^sPGMBDxB+IvY z_x5iSzC1g{?V`v`&AY9*JO8&AXn zRW!Suv}LK>9|C6QNJ3q!2=PBHgusrG#}>fH>$41fe{Lb{Eah=F3m_x{$n5&D(&HqN z-u(>|A>KF58PO2CUCETnPU%>one+oPw#H=O1;Qp#t^p#;9Ti%cv+MPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bWT&K~y+Tty3|M zgD?=>obrM+e1JMiLmD~+AD~YcrJ~|3h=LEm3ur(*07Orb52T5NkZ7IEhP4cr>uw|m zdw0j4Sv&ME@O@ulEXzOft!|G%k|fkL4UOZdx~|(TISnCQuUC3LpO~t;uDNcHpFGcL znkGzF5MmgHbT}NC?0FuK%jLp{@h*kpp}7qI-MwrBF@>iO?}^UJqJwS zRBVE89LH)H2KJ3n6opFDbk&E|4oJAJOJ!M7+qOHXKzwTfcw1lvza+qpkhd0qEX!z~ zXKg`mV9G*=u|6J;bi3U+W)cDM&$l4bEz6?E*m{HWCVrOhs!5P501;zZGN4#2YX#dT0pCsp(R{hA0DkdE;8(~dPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0aQsuK~y+Tty8gX zgFp;5N%mG`U~3m<#FT|4Vr~|;4s3{tp;JDf-@wENzXc?Z)?h_!W+pZAq0hC$hkOGZ+t!;Z)ItBg0}9*ho1Ku%efbUuGs*aGpp5_CY0B+n%PMN!Z&3`)YU z3j>7sdm`((we*TfGJB~wL*HP0nstMwV&507K!CWUaLds_I$eY2x0R{})XbYx&448CfBOOj-01u#)J07U)es?NGzKz}I6;ZCHlzgz_*@Njm!aMb@3 ph#wBGMhw1wRzUGmVzHP(^aFDw;Ab$`T2uf4002ovPDHLkV1hP1!La}U literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_magnetized_tungsten.png b/assets/hbm/textures/items/new/scrap_magnetized_tungsten.png new file mode 100644 index 0000000000000000000000000000000000000000..0370d4fd587a7648e28016915fdae3f15df117ce GIT binary patch literal 507 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TVK~y+Tt&+b_ z!cY*$za=3JF#&@J(FE-#1c@vv3xf@ti6-vI;_Bk$%0gIKjNy;)FW^6LsX+#}B9nuO zBnBbIoOiE3pcHlSlU!fl_3qw%uMhu2wm|$8`<*3m5jJYI+o)EnUO*T(v3z8P;xsnO zRE`lF_F;dm0K>lc93+ta`O_MT`V_sXj@n@!k=y~U&$y72&&;((M9So~b=M_6k;>3rWF62{ZUZX)Oxt^%L~`sA*ffe@X}zaF7l(MkJtn z)57~^9w)gCm3Vt~fq}jbdb*d`K)&Cqvzv>2%up9+Kd;KHV-tAM}(2^*3Dq z!$;IPFW|05@002ovPDHLkV1fp!-KhWo literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_neptunium.png b/assets/hbm/textures/items/new/scrap_neptunium.png new file mode 100644 index 0000000000000000000000000000000000000000..b20e602db2ef9a85a5d435c0f5532283455e4061 GIT binary patch literal 453 zcmV;$0XqJPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a{5!K~y+Tty3*; zgHRN`wDnskdNXK(sw541qCpQwP>8Aifc*v(KcE6RJOVWT05yRkgc(#DwsXgOd9*Y$ zJIO8Yew=&nd3mLOf&QeAu*toPrMeXYaU7H9d9;35FE$axAPBflZKA<(9EbY8r?M>R z@^#UsoGfILu2a`_ZQG_Oia2MQCRJ568zzCN zXoBzlWj~%iPP{(s_SY$Dj-LYuO$FUlF%>=Qo_xJ z0o`ZEmup!Tg<;4sl?Vv^{3BL341?OXrJ^Wg6U3XQxgiS32G=^F5mGjf8{Q1(AK*B{ zYWmK|SXTf<*yJ)W5QejCfJ+i&Xaz7)H2_5Q<#Ge)#Un}6RFYMQX#%LL>w5Agpa>6V v=k7-JKY{q+^)QR!tojltUP>$$Gl;$c9Y)#{92{vN00000NkvXXu0mjfCakxf literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_plutonium.png b/assets/hbm/textures/items/new/scrap_plutonium.png new file mode 100644 index 0000000000000000000000000000000000000000..c919776be07cc50ff34c68095a2bedb71380ecf8 GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bof)K~y+Ttx~^F zgkTIU7iSW~;EzEAGb;71^jT8vvqyxm*BxaU^-3k7OOvO@O?* zuKE8s0f2J`^edAE%eA5z_Og5S3?xgUjyc~JL_a{J<-qir3kd)K002ovPDHLkV1n5) BxzYdt literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_red_copper.png b/assets/hbm/textures/items/new/scrap_red_copper.png new file mode 100644 index 0000000000000000000000000000000000000000..596564154f8382524bd47196e810eb6e71fae9aa GIT binary patch literal 457 zcmV;)0XF`LP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bWT&K~y+Tty7^+ z13?gdhrrboaeTl9TvLClCrL=lI_mU%$u1vx#C~2ID_Uf&tK7+M~8kLY5kb$m$&EFGRL(bk;gm*Y{*0VP=HG^WNIbY(LaPtTP>FpbKz2edijy;r&CAvVY^u{Z=2`l zWxynUIPVvo;6FkC*L@QBX!~ymCbtDzlLf#xsm9}hGdns~00000NkvXXu0mjfAg;kT literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_saturnite.png b/assets/hbm/textures/items/new/scrap_saturnite.png new file mode 100644 index 0000000000000000000000000000000000000000..45e3b41b1706d2d8d50c8d71273069c3fe4c4938 GIT binary patch literal 454 zcmV;%0XhDOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b5B#K~y+Tty8gX z!Y~j$vj(YE#MZJgqez{hQnn6R*g7y&LQHh(2k;Y2to;Cn>=|I@FIpxPrE1FR-a9+S zDVExyPjcei-8;W`a_E0>b)#kdhCp2hfo!#+Xfol?Zn%jh_GdFw=QUCCF&-0D713_T zp<0;~!xn-R$1#;)6P!MJ(An$8_~zArS?cKNxiyD&2P9x8&q?b~1r-SY!Ge!23ozuL7Jz)cCOVy* zg^Pg+KHkl6heOKda|yMHfbnk{Sm{x(M_P761SM07*qoM6N<$g7+=KRsaA1 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_schrabidium.png b/assets/hbm/textures/items/new/scrap_schrabidium.png new file mode 100644 index 0000000000000000000000000000000000000000..f07269017ee5df493d04c64a024326f4a053c41e GIT binary patch literal 443 zcmV;s0Yv_ZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Z>UqK~y+Ttx`LV z0x=AILEBIvAr3MciI##RP$O{w<^-GrdJr_w(gFns7(`16EkdHA+iafmA=%Apn|+dJ zG9EwM&oTZ7ORq1j%MSVC3xhM+MRVDw>Y5~`)#9K!UQ&p0%`h0HX z@oX$7Aq9V|*D{Ncgl0&d%!HEkw|T{6KU|Un(R78$BqVrih})XYlzex)C`Ti4)r$pi zxmfLl({B?nxYq+Z9pHWkj>mTr`p@Sd#1sttrZY%ktNxrp!@ZMxmUbQVa;a$U(}D$Q z2C_&5@0kc%4U}7x1cvDM17?|Q2SzWKBqk?t)jVW#Z#Ovy34&(RzT+(;nS*rKCd1us lf!!`MPzL+J7&)H+_yP`@^+@d%+Ohxu002ovPDHLkV1hPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0YXVcK~y+Tty3|M zgfI*=`v9N?Ix2cTz&?O(>FJS{4^Z+2-oY0TJud)JLJI|Tj~gy1M)Iy>dmN7y z=wIObzJST&uehswAkZ`oWm!g!k;#O(FrIv`A}Z(xpE{utQe4;N$>5)Wd%;8gU&t6&0YsQQGH@XbzHWde zDKfMIxY0BKMDyk9&Zb_#d??6aC(1{idbt`hA)+V}<~MZ+eDkb<;=9CcF@xv_ Xl?ve981QzU00000NkvXXu0mjfM6$Po literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_titanium.png b/assets/hbm/textures/items/new/scrap_titanium.png new file mode 100644 index 0000000000000000000000000000000000000000..d7005bdb20bb2b737ec491b55794893d67c152c4 GIT binary patch literal 423 zcmV;Y0a*TtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0X#`WK~y+Tt&*{k zgD?<9*Eg3EGmyCeaw;IF2kL-<0^9(u!7jt(cFYjLIB?_wFmKPRkhQ6^EXyPeL%CkBlBTJSg}JJ# z%?8T?aV*7PO4BrRS(eguohEO$TYUO22m-m^?;5WTAH)!0Zrc`HOJ=OK@B%*$hl2)~ z2!kX`HvSY@u-PRWRJGgfoPg`WSEM)AaU4rg6zbdW_u4lDtbcciNs>quMKVp3oX=+` zf`1r>w?sp)5lH5=A^UQ1hh+!pm(3xMXDtY{TrR1?BB4w_VL8;i_>`W@J}+>yYv74}?~QyX_gBu~2%My{DR=gi)RWEIayLrMf1@pxefOHg;d5f^)H!{~giUD+TlWo{^MNdUzU~`t^?vt^X?)!CxI^n!OX8z=w;fG<8h!2zwf9dK z$|SZNZ=I{qC%7b2icLvz!8P%O*O{|U?OG?}m?(JUd1W1kZ3R0^(v~jKwc0YQM-`66 zC7T;^u&$flQf4bK?~(RH{}!f-%z|-yy(M& p$r6QY&Z%ycudx0xLr3Wo_kGC?If1$Jy?{Z;;OXk;vd$@?2>>=Dp0WS{ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/new/scrap_uranium.png b/assets/hbm/textures/items/new/scrap_uranium.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd1b99a1c457ed35c953b517492bd0ca30e4f32 GIT binary patch literal 475 zcmV<10VMv3P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dPq~K~y+Tty4Wu z!cY{wHT;D73ov#t0i!O$&>w-T5hn<4{Rs|kc64BZpU@E#2L~W&#Asp@O;?<3f=d&e zo}NqZyYPp9INhBDT<=pV;XoBmta2co~rxl9s9=U4{y}f^<}OOxf>9Gozd-xUS_Wr zRN(wi3npMk$eR{`!EiunnraJ$f&r*7_O*JA+GlM(Gl_usui!_d+uJ`fKXRW*1wlab z_j!RR*ve)mLn>xShn0uPlZASK3|nPYUteGp333G>Vq{we6pLlH0H8=1;uWxpHD getDrops(World world, int x, int y, int z, int metadata, int fortune) { + + if(this == ModBlocks.waste_log && world.rand.nextInt(1000) == 0) { + ArrayList ret = new ArrayList(); + ret.add(new ItemStack(ModItems.burnt_bark)); + return ret; + } + + return super.getDrops(world, x, y, z, metadata, fortune); + } @Override public int quantityDropped(Random p_149745_1_) diff --git a/com/hbm/entity/projectile/EntityTom.java b/com/hbm/entity/projectile/EntityTom.java index a863f1cc5..7ded15ecd 100644 --- a/com/hbm/entity/projectile/EntityTom.java +++ b/com/hbm/entity/projectile/EntityTom.java @@ -24,13 +24,9 @@ public class EntityTom extends EntityThrowable { this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - /*this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ;*/ + if(this.ticksExisted % 100 == 0) { + worldObj.playSoundEffect(posX, posY, posZ, "hbm:alarm.chime", 10000, 1.0F); + } motionY = -0.5; diff --git a/com/hbm/explosion/ExplosionBalefire.java b/com/hbm/explosion/ExplosionBalefire.java index c0f422121..804e2e4da 100644 --- a/com/hbm/explosion/ExplosionBalefire.java +++ b/com/hbm/explosion/ExplosionBalefire.java @@ -93,8 +93,12 @@ public class ExplosionBalefire while(y > 0) { if(strength <= 10) { - if(worldObj.rand.nextInt(10) == 0) + if(worldObj.rand.nextInt(10) == 0) { worldObj.setBlock(pX, y + 1, pZ, ModBlocks.balefire); + + if(worldObj.getBlock(pX, y, pZ) == ModBlocks.block_schrabidium_cluster) + worldObj.setBlock(pX, y, pZ, ModBlocks.block_euphemium_cluster, worldObj.getBlockMetadata(pX, y, pZ), 3); + } if(worldObj.getBlock(pX, y, pZ) == Blocks.stone) worldObj.setBlock(pX, y, pZ, ModBlocks.sellafield_slaked); diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 370c2c500..c3ca2cb40 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -215,6 +215,10 @@ public class MachineRecipes { ItemStack[] starmetal = new ItemStack[] { new ItemStack(ModItems.powder_dura_steel, 3), new ItemStack(ModItems.powder_astatine, 1), new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(Blocks.gravel, 1) }; + + ItemStack[] euphCluster = new ItemStack[] { new ItemStack(ModItems.nugget_euphemium, 7), + new ItemStack(ModItems.powder_schrabidium, 4), new ItemStack(ModItems.ingot_starmetal, 2), + new ItemStack(ModItems.nugget_solinium, 2) }; if (MainRegistry.enableDebugMode) { if (item.getItem() == Item.getItemFromBlock(ModBlocks.test_render)) { @@ -366,6 +370,10 @@ public class MachineRecipes { return starmetal; } + if (item.getItem() == Item.getItemFromBlock(ModBlocks.block_euphemium_cluster)) { + return euphCluster; + } + return null; } @@ -1316,6 +1324,8 @@ public class MachineRecipes { getCentrifugeOutput(new ItemStack(ModBlocks.ore_lignite))); recipes.put(new ItemStack(ModBlocks.ore_meteor_starmetal), getCentrifugeOutput(new ItemStack(ModBlocks.ore_meteor_starmetal))); + recipes.put(new ItemStack(ModBlocks.block_euphemium_cluster), + getCentrifugeOutput(new ItemStack(ModBlocks.block_euphemium_cluster))); return recipes; } @@ -5031,6 +5041,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.dynosphere_schrabidium_charged, 1)); list.add(new ItemStack(ModItems.ingot_plutonium, 1)); list.add(new ItemStack(ModItems.catalyst_clay, 16)); + list.add(new ItemStack(ModItems.ingot_euphemium, 1)); break; case DYN_DNT: list.add(new ItemStack(ModItems.dynosphere_euphemium_charged, 2)); @@ -5352,7 +5363,7 @@ public class MachineRecipes { output[0] = new ItemStack(ModItems.ingot_schrabidium, 1); break; case DYN_EUPH: - output[0] = new ItemStack(ModItems.ingot_euphemium, 1); + output[0] = new ItemStack(ModItems.nugget_euphemium, 12); break; case DYN_DNT: output[0] = new ItemStack(ModItems.ingot_dineutronium, 1); diff --git a/com/hbm/inventory/gui/GUIScreenSatCoord.java b/com/hbm/inventory/gui/GUIScreenSatCoord.java index 7e9ee1df0..b3ea77400 100644 --- a/com/hbm/inventory/gui/GUIScreenSatCoord.java +++ b/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -1,17 +1,14 @@ package com.hbm.inventory.gui; -import java.util.Arrays; - +import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; -import com.hbm.inventory.gui.GUIRadioRec.RadioButton; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatLaserPacket; +import com.hbm.packet.SatCoordPacket; import com.hbm.saveddata.satellites.Satellite.CoordActions; -import com.hbm.saveddata.satellites.Satellite.InterfaceActions; import com.hbm.saveddata.satellites.Satellite.Interfaces; import net.minecraft.client.Minecraft; @@ -29,8 +26,6 @@ public class GUIScreenSatCoord extends GuiScreen { protected int guiLeft; protected int guiTop; private final EntityPlayer player; - int x; - int z; private GuiTextField xField; private GuiTextField yField; @@ -68,20 +63,51 @@ public class GUIScreenSatCoord extends GuiScreen { protected void mouseClicked(int i, int j, int k) { super.mouseClicked(i, j, k); + + if(ItemSatInterface.currentSat == null) + return; + this.xField.mouseClicked(i, j, k); if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) this.yField.mouseClicked(i, j, k); this.zField.mouseClicked(i, j, k); if(i >= this.guiLeft + 133 && i < this.guiLeft + 133 + 18 && j >= this.guiTop + 52 && j < this.guiTop + 52 + 18 && player != null) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - - PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, ItemSatInterface.getFreq(player.getHeldItem()))); + if(NumberUtils.isNumber(xField.getText()) && NumberUtils.isNumber(zField.getText())) { + + if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) { + + if(NumberUtils.isNumber(yField.getText())) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); + PacketDispatcher.wrapper.sendToServer( + new SatCoordPacket( + (int)Double.parseDouble(xField.getText()), + (int)Double.parseDouble(yField.getText()), + (int)Double.parseDouble(zField.getText()), + ItemSatInterface.getFreq(player.getHeldItem()))); + + this.mc.thePlayer.closeScreen(); + } + + } else { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); + PacketDispatcher.wrapper.sendToServer( + new SatCoordPacket( + (int)Double.parseDouble(xField.getText()), + 0, + (int)Double.parseDouble(zField.getText()), + ItemSatInterface.getFreq(player.getHeldItem()))); + + this.mc.thePlayer.closeScreen(); + } + } } } - public void drawScreen(int mouseX, int mouseY, float f) - { + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); GL11.glEnable(GL11.GL_LIGHTING); @@ -98,7 +124,7 @@ public class GUIScreenSatCoord extends GuiScreen { protected void drawGuiContainerForegroundLayer(int i, int j) { this.xField.drawTextBox(); - if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) this.yField.drawTextBox(); + if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) this.yField.drawTextBox(); this.zField.drawTextBox(); } @@ -106,9 +132,21 @@ public class GUIScreenSatCoord extends GuiScreen { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(xField.isFocused()) + drawTexturedModalRect(guiLeft + 61, guiTop + 16, 0, 126, 54, 18); + + if(yField.isFocused()) + drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 126, 54, 18); + + if(zField.isFocused()) + drawTexturedModalRect(guiLeft + 61, guiTop + 88, 0, 126, 54, 18); if(ItemSatInterface.currentSat != null) { + if(!ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) + drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 144, 54, 18); + drawTexturedModalRect(guiLeft + 120, guiTop + 17, 194, 0, 7, 7); if(ItemSatInterface.currentSat.satIface == Interfaces.SAT_COORD) { @@ -122,7 +160,7 @@ public class GUIScreenSatCoord extends GuiScreen { if (this.xField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else if (ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y) && this.yField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { + } else if (ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y) && this.yField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { } else if (this.zField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { } else { diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 54f06df18..250255706 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -2416,7 +2416,7 @@ public class ModItems { recycled_misc = new Item().setUnlocalizedName("recycled_misc").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_misc"); rod_empty = new Item().setUnlocalizedName("rod_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_empty"); - rod_th232 = new ItemRadioactive().setUnlocalizedName("rod_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_th232"); + rod_th232 = new ItemCustomLore().setUnlocalizedName("rod_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_th232"); rod_uranium = new ItemRadioactive().setUnlocalizedName("rod_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_uranium"); rod_u233 = new ItemRadioactive().setUnlocalizedName("rod_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_u233"); rod_u235 = new ItemRadioactive().setUnlocalizedName("rod_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_u235"); @@ -2438,7 +2438,7 @@ public class ModItems { rod_verticium = new ItemCustomLore().setUnlocalizedName("rod_verticium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_verticium"); rod_dual_empty = new Item().setUnlocalizedName("rod_dual_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_dual_empty"); - rod_dual_th232 = new ItemRadioactive().setUnlocalizedName("rod_dual_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_th232"); + rod_dual_th232 = new ItemCustomLore().setUnlocalizedName("rod_dual_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_th232"); rod_dual_uranium = new ItemRadioactive().setUnlocalizedName("rod_dual_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_uranium"); rod_dual_u233 = new ItemRadioactive().setUnlocalizedName("rod_dual_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_u233"); rod_dual_u235 = new ItemRadioactive().setUnlocalizedName("rod_dual_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_u235"); @@ -2453,7 +2453,7 @@ public class ModItems { rod_dual_solinium = new ItemRadioactive().setUnlocalizedName("rod_dual_solinium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_solinium"); rod_quad_empty = new Item().setUnlocalizedName("rod_quad_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_quad_empty"); - rod_quad_th232 = new ItemRadioactive().setUnlocalizedName("rod_quad_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_th232"); + rod_quad_th232 = new ItemCustomLore().setUnlocalizedName("rod_quad_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_th232"); rod_quad_uranium = new ItemRadioactive().setUnlocalizedName("rod_quad_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_uranium"); rod_quad_u233 = new ItemRadioactive().setUnlocalizedName("rod_quad_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_u233"); rod_quad_u235 = new ItemRadioactive().setUnlocalizedName("rod_quad_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_u235"); diff --git a/com/hbm/items/special/ItemBlockLore.java b/com/hbm/items/block/ItemBlockLore.java similarity index 68% rename from com/hbm/items/special/ItemBlockLore.java rename to com/hbm/items/block/ItemBlockLore.java index 09e1b449e..ef702e1e6 100644 --- a/com/hbm/items/special/ItemBlockLore.java +++ b/com/hbm/items/block/ItemBlockLore.java @@ -1,4 +1,4 @@ -package com.hbm.items.special; +package com.hbm.items.block; import java.util.List; @@ -7,6 +7,7 @@ import com.hbm.blocks.generic.RedBarrel; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -52,4 +53,18 @@ public class ItemBlockLore extends ItemBlock { } } + @Override + public EnumRarity getRarity(ItemStack stack) { + + if(this.field_150939_a == ModBlocks.ore_schrabidium || this.field_150939_a == ModBlocks.ore_nether_schrabidium || + this.field_150939_a == ModBlocks.block_schrabidium || this.field_150939_a == ModBlocks.block_schrabidium_cluster) + return EnumRarity.rare; + + if(this.field_150939_a == ModBlocks.block_euphemium || this.field_150939_a == ModBlocks.block_euphemium_cluster || + this.field_150939_a == ModBlocks.plasma || this.field_150939_a == ModBlocks.fwatz_plasma) + return EnumRarity.epic; + + return EnumRarity.common; + } + } diff --git a/com/hbm/items/special/ItemTaintBlock.java b/com/hbm/items/block/ItemTaintBlock.java similarity index 96% rename from com/hbm/items/special/ItemTaintBlock.java rename to com/hbm/items/block/ItemTaintBlock.java index d8d42b741..2f048d02a 100644 --- a/com/hbm/items/special/ItemTaintBlock.java +++ b/com/hbm/items/block/ItemTaintBlock.java @@ -1,4 +1,4 @@ -package com.hbm.items.special; +package com.hbm.items.block; import java.util.List; diff --git a/com/hbm/items/food/ItemAppleEuphemium.java b/com/hbm/items/food/ItemAppleEuphemium.java index 64ae90acc..f4fe90f4a 100644 --- a/com/hbm/items/food/ItemAppleEuphemium.java +++ b/com/hbm/items/food/ItemAppleEuphemium.java @@ -30,9 +30,9 @@ public class ItemAppleEuphemium extends ItemFood { { if (!p_77849_2_.isRemote) { - p_77849_3_.addPotionEffect(new PotionEffect(Potion.resistance.id, 2147483647, 127)); + p_77849_3_.addPotionEffect(new PotionEffect(Potion.resistance.id, 2147483647, 120)); p_77849_3_.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2147483647, 0)); - p_77849_3_.addPotionEffect(new PotionEffect(Potion.field_76443_y.id, 2147483647, 127)); + p_77849_3_.addPotionEffect(new PotionEffect(Potion.field_76443_y.id, 2147483647, 120)); } } diff --git a/com/hbm/items/gear/ArmorEuphemium.java b/com/hbm/items/gear/ArmorEuphemium.java index c8a881f39..6ca1db9c2 100644 --- a/com/hbm/items/gear/ArmorEuphemium.java +++ b/com/hbm/items/gear/ArmorEuphemium.java @@ -1,23 +1,20 @@ package com.hbm.items.gear; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; -import net.minecraftforge.common.ISpecialArmor; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; -public class ArmorEuphemium extends ItemArmor implements ISpecialArmor { +public class ArmorEuphemium extends ItemArmor { + private String [] armourTypes = new String [] {"euphemium_helmet", "euphemium_chest", "euphemium_legs", "euphemium_boots"}; public ArmorEuphemium(ArmorMaterial armorMaterial, int renderIndex, int armorType) { @@ -37,42 +34,6 @@ public class ArmorEuphemium extends ItemArmor implements ISpecialArmor { else return null; } - @Override - public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { - if(player instanceof EntityPlayer && Library.checkArmor((EntityPlayer)player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) - { - return new ArmorProperties(1, 1, MathHelper.floor_double(999999999)); - } - return new ArmorProperties(0, 0, 0); - } - - @Override - public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) { - if(slot == 0) - { - return 3; - } - if(slot == 1) - { - return 8; - } - if(slot == 2) - { - return 6; - } - if(slot == 3) - { - return 3; - } - return 0; - } - - - @Override - public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) { - stack.damageItem(damage * 0, entity); - } - @Override public void onArmorTick(World world, EntityPlayer player, ItemStack armor) { if(player instanceof EntityPlayer && Library.checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) @@ -96,5 +57,9 @@ public class ArmorEuphemium extends ItemArmor implements ISpecialArmor { return EnumRarity.epic; } + + //do literally nothing lole + @Override + public void setDamage(ItemStack stack, int damage) { } } diff --git a/com/hbm/items/special/ItemPlasmaBlock.java b/com/hbm/items/special/ItemPlasmaBlock.java deleted file mode 100644 index f97d7f4d4..000000000 --- a/com/hbm/items/special/ItemPlasmaBlock.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.items.special; - -import net.minecraft.block.Block; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemPlasmaBlock extends ItemBlock { - - public ItemPlasmaBlock(Block p_i45328_1_) { - super(p_i45328_1_); - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) - { - return EnumRarity.epic; - } - -} diff --git a/com/hbm/items/special/ItemSchrabidiumBlock.java b/com/hbm/items/special/ItemSchrabidiumBlock.java deleted file mode 100644 index 81104b91e..000000000 --- a/com/hbm/items/special/ItemSchrabidiumBlock.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.items.special; - -import net.minecraft.block.Block; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemSchrabidiumBlock extends ItemBlock { - - public ItemSchrabidiumBlock(Block p_i45328_1_) { - super(p_i45328_1_); - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - return EnumRarity.rare; - } - -} diff --git a/com/hbm/items/tool/ItemAssemblyTemplate.java b/com/hbm/items/tool/ItemAssemblyTemplate.java index fdd7b072f..9a7830801 100644 --- a/com/hbm/items/tool/ItemAssemblyTemplate.java +++ b/com/hbm/items/tool/ItemAssemblyTemplate.java @@ -602,7 +602,23 @@ public class ItemAssemblyTemplate extends Item { new ItemStack(Blocks.redstone_block, 12), new ItemStack(ModItems.powder_magnetized_tungsten, 6), new ItemStack(ModItems.circuit_targeting_tier4, 1)), - new ItemStack(ModItems.mp_warhead_15_n2)); + new ItemStack(ModItems.mp_warhead_15_n2)), + + GERALD(1200, Arrays.asList( + new ItemStack(ModItems.cap_star, 1), + new ItemStack(ModItems.chlorine_pinwheel, 1), + new ItemStack(ModItems.burnt_bark, 1), + new ItemStack(ModItems.combine_scrap, 1), + new ItemStack(ModBlocks.block_euphemium_cluster, 1), + new ItemStack(ModItems.crystal_horn, 1), + new ItemStack(ModItems.crystal_charred, 1), + new ItemStack(ModBlocks.pink_log, 1), + new ItemStack(ModItems.mp_warhead_15_balefire, 1), + new ItemStack(ModBlocks.crate_red, 1), + new ItemStack(ModBlocks.det_nuke, 16), + new ItemStack(ModItems.ingot_starmetal, 32)), + + new ItemStack(ModItems.sat_gerald)); private EnumAssemblyTemplate() { } diff --git a/com/hbm/items/tool/ItemSatChip.java b/com/hbm/items/tool/ItemSatChip.java index ca434f44b..0369077d1 100644 --- a/com/hbm/items/tool/ItemSatChip.java +++ b/com/hbm/items/tool/ItemSatChip.java @@ -19,8 +19,11 @@ public class ItemSatChip extends Item { if(this == ModItems.sat_foeq) list.add("Gives you an achievement. That's it."); - if(this == ModItems.sat_gerald) - list.add("Unused (for now)"); + if(this == ModItems.sat_gerald) { + list.add("Single use."); + list.add("Requires orbital module."); + list.add("Melter of CPUs, bane of every server owner."); + } if(this == ModItems.sat_laser) list.add("Allows to summon lasers with a 15 second cooldown."); @@ -35,7 +38,7 @@ public class ItemSatChip extends Item { list.add("Shows a map of active entities."); if(this == ModItems.sat_resonator) - list.add("Unused"); + list.add("Allows for teleportation with no cooldown."); if(this == ModItems.sat_scanner) list.add("Creates a topdown map of underground ores."); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 5d543863a..febf48028 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -120,6 +120,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_scrap), 1), new Object[] { "###", "###", "###", '#', ModItems.dust }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_beryllium), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_beryllium }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_schrabidium), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_schrabidium }); + GameRegistry.addRecipe(new ItemStack(ModBlocks.block_schrabidium_cluster, 1), new Object[] { "#S#", "S#S", "#S#", '#', ModItems.ingot_schrabidium, 'S', ModItems.ingot_starmetal }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_euphemium), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_euphemium }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_advanced_alloy), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_advanced_alloy }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_magnetized_tungsten), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_magnetized_tungsten }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_combine_steel), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_combine_steel }); @@ -167,6 +169,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.nuclear_waste, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_waste) }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_beryllium, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_beryllium) }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_schrabidium, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_schrabidium) }); + GameRegistry.addRecipe(new ItemStack(ModItems.ingot_euphemium, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_euphemium) }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_advanced_alloy, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_advanced_alloy) }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_magnetized_tungsten, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_magnetized_tungsten) }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_combine_steel, 9), new Object[] { "#", '#', Item.getItemFromBlock(ModBlocks.block_combine_steel) }); @@ -447,7 +450,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.deco_titanium), new Object[] { "ingotTitanium", ModBlocks.steel_scaffold })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.deco_tungsten), new Object[] { "ingotTungsten", ModBlocks.steel_scaffold })); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.nugget_euphemium, 1), new Object[] { ModItems.rod_quad_euphemium }); + GameRegistry.addRecipe(new ItemStack(ModItems.nugget_euphemium, 1), new Object[] { "###", "###", "###", '#', ModItems.rod_quad_euphemium }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_euphemium, 1), new Object[] { "###", "###", "###", '#', ModItems.nugget_euphemium }); GameRegistry.addRecipe(new ItemStack(ModItems.nugget_euphemium, 9), new Object[] { "#", '#', ModItems.ingot_euphemium }); diff --git a/com/hbm/main/ModEventHandler.java b/com/hbm/main/ModEventHandler.java index 26f11ebb5..8427be218 100644 --- a/com/hbm/main/ModEventHandler.java +++ b/com/hbm/main/ModEventHandler.java @@ -43,10 +43,12 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntitySign; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.event.entity.EntityEvent.EnteringChunk; +import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingSpawnEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -347,6 +349,18 @@ public class ModEventHandler ////////////////////// } + @SubscribeEvent + public void onEntityHurt(LivingAttackEvent event) { + + EntityLivingBase e = event.entityLiving; + DamageSource dmg = event.source; + + if(e instanceof EntityPlayer && Library.checkArmor((EntityPlayer)e, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) { + e.worldObj.playSoundAtEntity(e, "random.break", 5F, 1.0F + e.getRNG().nextFloat() * 0.5F); + event.setCanceled(true); + } + } + @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { diff --git a/com/hbm/packet/SatCoordPacket.java b/com/hbm/packet/SatCoordPacket.java index 49fc67f20..2710a7756 100644 --- a/com/hbm/packet/SatCoordPacket.java +++ b/com/hbm/packet/SatCoordPacket.java @@ -61,7 +61,7 @@ public class SatCoordPacket implements IMessage { Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); if(sat != null) - sat.onCoordAction(p.worldObj, m.x, m.y, m.z); + sat.onCoordAction(p.worldObj, p, m.x, m.y, m.z); } } diff --git a/com/hbm/render/entity/projectile/RenderTom.java b/com/hbm/render/entity/projectile/RenderTom.java index 05c8ef3db..482dbf1e1 100644 --- a/com/hbm/render/entity/projectile/RenderTom.java +++ b/com/hbm/render/entity/projectile/RenderTom.java @@ -14,7 +14,7 @@ public class RenderTom extends Render { public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { GL11.glPushMatrix(); - GL11.glTranslated(x, y, z); + GL11.glTranslated(x, y - 50, z); TomPronter.prontTom(); GL11.glPopMatrix(); diff --git a/com/hbm/saveddata/SatelliteSavedData.java b/com/hbm/saveddata/SatelliteSavedData.java index 2eefd843c..432ee29cb 100644 --- a/com/hbm/saveddata/SatelliteSavedData.java +++ b/com/hbm/saveddata/SatelliteSavedData.java @@ -48,8 +48,6 @@ public class SatelliteSavedData extends WorldSavedData { int freq = nbt.getInteger("sat_freq_" + i); sats.put(freq, sat); - - System.out.println("Loaded sat" + i + " " + sat.getClass().getSimpleName()); } } @@ -68,8 +66,6 @@ public class SatelliteSavedData extends WorldSavedData { nbt.setTag("sat_data_" + i, data); nbt.setInteger("sat_freq_" + i, struct.getKey()); i++; - - System.out.println("Saved sat" + i + " " + struct.getValue().getClass().getSimpleName()); } } diff --git a/com/hbm/saveddata/satellites/Satellite.java b/com/hbm/saveddata/satellites/Satellite.java index 0aa422577..a6da6370a 100644 --- a/com/hbm/saveddata/satellites/Satellite.java +++ b/com/hbm/saveddata/satellites/Satellite.java @@ -7,6 +7,7 @@ import java.util.List; import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -119,5 +120,5 @@ public abstract class Satellite { * @param y ditto * @param z ditto */ - public void onCoordAction(World world, int x, int y, int z) { } + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { } } diff --git a/com/hbm/saveddata/satellites/SatelliteHorizons.java b/com/hbm/saveddata/satellites/SatelliteHorizons.java index 6a6885680..0b543ff25 100644 --- a/com/hbm/saveddata/satellites/SatelliteHorizons.java +++ b/com/hbm/saveddata/satellites/SatelliteHorizons.java @@ -1,12 +1,20 @@ package com.hbm.saveddata.satellites; +import com.hbm.entity.projectile.EntityTom; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.SatelliteSavedData; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class SatelliteHorizons extends Satellite { + boolean used = false; + public SatelliteHorizons() { this.satIface = Interfaces.SAT_COORD; } @@ -16,4 +24,34 @@ public class SatelliteHorizons extends Satellite { for(Object p : world.playerEntities) ((EntityPlayer)p).triggerAchievement(MainRegistry.horizonsStart); } + + public void writeToNBT(NBTTagCompound nbt) { + nbt.setBoolean("used", used); + } + + public void readFromNBT(NBTTagCompound nbt) { + used = nbt.getBoolean("used"); + } + + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + + if(used) + return; + + used = true; + SatelliteSavedData.getData(world).markDirty(); + + EntityTom tom = new EntityTom(world); + tom.setPosition(x + 0.5, 600, z + 0.5); + world.spawnEntityInWorld(tom); + + for(Object p : world.playerEntities) + ((EntityPlayer)p).triggerAchievement(MainRegistry.horizonsEnd); + + //not necessary but JUST to make sure + if(!world.isRemote) { + + MinecraftServer.getServer().getConfigurationManager().sendChatMsg(new ChatComponentText(EnumChatFormatting.RED + "Horizons has been activated.")); + } + } } diff --git a/com/hbm/saveddata/satellites/SatelliteResonator.java b/com/hbm/saveddata/satellites/SatelliteResonator.java index 1aebe82c4..2eb356130 100644 --- a/com/hbm/saveddata/satellites/SatelliteResonator.java +++ b/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -1,9 +1,23 @@ package com.hbm.saveddata.satellites; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.world.World; + public class SatelliteResonator extends Satellite { public SatelliteResonator() { this.coordAcs.add(CoordActions.HAS_Y); this.satIface = Interfaces.SAT_COORD; } + + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + + if(!(player instanceof EntityPlayerMP)) + + world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); + player.mountEntity(null); + ((EntityPlayerMP)player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch); + world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); + } } diff --git a/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 0319bcfdd..5297c4dd5 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -288,90 +288,88 @@ public class TileEntityMachineAssembler extends TileEntity implements ISidedInve progress = 0; int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - TileEntity te = null; + + TileEntity te1 = null; + TileEntity te2 = null; + if(meta == 2) { - te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + te1 = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + te2 = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); } if(meta == 3) { - te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + te1 = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + te2 = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); } if(meta == 4) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + te2 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); } if(meta == 5) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + te2 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); } - if(te != null && te instanceof TileEntityChest) { - TileEntityChest chest = (TileEntityChest)te; + tryExchangeTemplates(te1, te2); + + //OUTPUT + if(te1 instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te1; tryFillContainer(chest, 5); } - if(te != null && te instanceof TileEntityHopper) { - TileEntityHopper hopper = (TileEntityHopper)te; + if(te1 instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te1; tryFillContainer(hopper, 5); } - if(te != null && te instanceof TileEntityCrateIron) { - TileEntityCrateIron hopper = (TileEntityCrateIron)te; + if(te1 instanceof TileEntityCrateIron) { + TileEntityCrateIron hopper = (TileEntityCrateIron)te1; tryFillContainer(hopper, 5); } - if(te != null && te instanceof TileEntityCrateSteel) { - TileEntityCrateSteel hopper = (TileEntityCrateSteel)te; + if(te1 instanceof TileEntityCrateSteel) { + TileEntityCrateSteel hopper = (TileEntityCrateSteel)te1; tryFillContainer(hopper, 5); } - te = null; - if(meta == 2) { - te = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); - } - if(meta == 3) { - te = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); - } - if(meta == 4) { - te = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); - } - if(meta == 5) { - te = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); - } - - if(te != null && te instanceof TileEntityChest) { - TileEntityChest chest = (TileEntityChest)te; + //INPUT + if(te2 instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te2; for(int i = 0; i < chest.getSizeInventory(); i++) if(tryFillAssembler(chest, i)) break; } - if(te != null && te instanceof TileEntityHopper) { - TileEntityHopper hopper = (TileEntityHopper)te; + if(te2 instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te2; for(int i = 0; i < hopper.getSizeInventory(); i++) if(tryFillAssembler(hopper, i)) break; } - if(te != null && te instanceof TileEntityCrateIron) { - TileEntityCrateIron hopper = (TileEntityCrateIron)te; + if(te2 instanceof TileEntityCrateIron) { + TileEntityCrateIron hopper = (TileEntityCrateIron)te2; for(int i = 0; i < hopper.getSizeInventory(); i++) if(tryFillAssembler(hopper, i)) break; } - if(te != null && te instanceof TileEntityCrateSteel) { - TileEntityCrateSteel hopper = (TileEntityCrateSteel)te; + if(te2 instanceof TileEntityCrateSteel) { + TileEntityCrateSteel hopper = (TileEntityCrateSteel)te2; for(int i = 0; i < hopper.getSizeInventory(); i++) if(tryFillAssembler(hopper, i)) break; } + PacketDispatcher.wrapper.sendToAllAround(new TEAssemblerPacket(xCoord, yCoord, zCoord, isProgressing), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); @@ -379,6 +377,70 @@ public class TileEntityMachineAssembler extends TileEntity implements ISidedInve } + public boolean tryExchangeTemplates(TileEntity te1, TileEntity te2) { + //validateTe sees if it's a valid inventory tile entity + boolean te1Valid = validateTe(te1); + boolean te2Valid = validateTe(te2); + + if(te1Valid && te2Valid){ + IInventory iTe1 = (IInventory)te1; + IInventory iTe2 = (IInventory)te2; + boolean openSlot = false; + boolean existingTemplate = false; + boolean filledContainer = false; + //Check if there's an existing template and an open slot + for(int i = 0; i < iTe1.getSizeInventory(); i++){ + if(iTe1.getStackInSlot(i) == null){ + openSlot = true; + + } + + } + if(this.slots[4] != null){ + existingTemplate = true; + } + //Check if there's a template in input + for(int i = 0; i < iTe2.getSizeInventory(); i++){ + if(iTe2.getStackInSlot(i) != null && iTe2.getStackInSlot(i).getItem() instanceof ItemAssemblyTemplate){ + if(openSlot && existingTemplate){ + filledContainer = tryFillContainer(iTe1, 4); + + } + if(filledContainer){ + ItemStack copy = iTe2.getStackInSlot(i).copy(); + iTe2.setInventorySlotContents(i, null); + this.slots[4] = copy; + } + } + + } + + + } + return false; + + } + + private boolean validateTe(TileEntity te) { + if(te instanceof TileEntityChest) { + return true; + } + + if(te instanceof TileEntityHopper) { + return true; + } + + if(te instanceof TileEntityCrateIron) { + return true; + } + + if(te instanceof TileEntityCrateSteel) { + return true; + } + + return false; + } + //I can't believe that worked. public ItemStack[] cloneItemStackProper(ItemStack[] array) { ItemStack[] stack = new ItemStack[array.length]; @@ -467,7 +529,7 @@ public class TileEntityMachineAssembler extends TileEntity implements ISidedInve boolean flag = false; for(int i = 0; i < list.size(); i++) - if(ItemStack.areItemStacksEqual(stack, list.get(i)) && ItemStack.areItemStackTagsEqual(stack, list.get(i))) + if(isItemAcceptible(stack, list.get(i))) flag = true; if(!flag) @@ -485,7 +547,7 @@ public class TileEntityMachineAssembler extends TileEntity implements ISidedInve sta1.stackSize = 1; sta2.stackSize = 1; - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { + if(isItemAcceptible(sta1, sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { ItemStack sta3 = inventory.getStackInSlot(slot).copy(); sta3.stackSize--; if(sta3.stackSize <= 0) diff --git a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 51410c3c8..c4ab5199b 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -280,9 +280,7 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve if(consumption < 10) consumption = 10; - if(!worldObj.isRemote) - { - int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + if(!worldObj.isRemote) { isProgressing = false; @@ -340,88 +338,82 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve } else progress = 0; - TileEntity te = null; + int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + TileEntity te1 = null; + TileEntity te2 = null; + + if(meta == 2) { - te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + te1 = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + te2 = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); } if(meta == 3) { - te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + te1 = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + te2 = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); } if(meta == 4) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + te2 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); } if(meta == 5) { - te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + te2 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); } - if(te != null && te instanceof TileEntityChest) { - TileEntityChest chest = (TileEntityChest)te; + tryExchangeTemplates(te1, te2); + + //OUTPUT + if(te1 instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te1; - for(int i = 5; i < 9; i++) - tryFillContainer(chest, i); + tryFillContainer(chest, 5); } - if(te != null && te instanceof TileEntityHopper) { - TileEntityHopper hopper = (TileEntityHopper)te; + if(te1 instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te1; - for(int i = 5; i < 9; i++) - tryFillContainer(hopper, i); + tryFillContainer(hopper, 5); } - if(te != null && te instanceof TileEntityCrateIron) { - TileEntityCrateIron hopper = (TileEntityCrateIron)te; + if(te1 instanceof TileEntityCrateIron) { + TileEntityCrateIron hopper = (TileEntityCrateIron)te1; - for(int i = 5; i < 9; i++) - tryFillContainer(hopper, i); + tryFillContainer(hopper, 5); } - if(te != null && te instanceof TileEntityCrateSteel) { - TileEntityCrateSteel hopper = (TileEntityCrateSteel)te; + if(te1 instanceof TileEntityCrateSteel) { + TileEntityCrateSteel hopper = (TileEntityCrateSteel)te1; - for(int i = 5; i < 9; i++) - tryFillContainer(hopper, i); + tryFillContainer(hopper, 5); } - te = null; - if(meta == 2) { - te = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); - } - if(meta == 3) { - te = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); - } - if(meta == 4) { - te = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); - } - if(meta == 5) { - te = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); - } - - if(te != null && te instanceof TileEntityChest) { - TileEntityChest chest = (TileEntityChest)te; + //INPUT + if(te2 instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te2; for(int i = 0; i < chest.getSizeInventory(); i++) if(tryFillAssembler(chest, i)) break; } - if(te != null && te instanceof TileEntityHopper) { - TileEntityHopper hopper = (TileEntityHopper)te; + if(te2 instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te2; for(int i = 0; i < hopper.getSizeInventory(); i++) if(tryFillAssembler(hopper, i)) break; } - if(te != null && te instanceof TileEntityCrateIron) { - TileEntityCrateIron chest = (TileEntityCrateIron)te; - - for(int i = 0; i < chest.getSizeInventory(); i++) - if(tryFillAssembler(chest, i)) + if(te2 instanceof TileEntityCrateIron) { + TileEntityCrateIron hopper = (TileEntityCrateIron)te2; + + for(int i = 0; i < hopper.getSizeInventory(); i++) + if(tryFillAssembler(hopper, i)) break; } - if(te != null && te instanceof TileEntityCrateSteel) { - TileEntityCrateSteel hopper = (TileEntityCrateSteel)te; + if(te2 instanceof TileEntityCrateSteel) { + TileEntityCrateSteel hopper = (TileEntityCrateSteel)te2; for(int i = 0; i < hopper.getSizeInventory(); i++) if(tryFillAssembler(hopper, i)) @@ -453,6 +445,70 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve } } + + public boolean tryExchangeTemplates(TileEntity te1, TileEntity te2) { + //validateTe sees if it's a valid inventory tile entity + boolean te1Valid = validateTe(te1); + boolean te2Valid = validateTe(te2); + + if(te1Valid && te2Valid){ + IInventory iTe1 = (IInventory)te1; + IInventory iTe2 = (IInventory)te2; + boolean openSlot = false; + boolean existingTemplate = false; + boolean filledContainer = false; + //Check if there's an existing template and an open slot + for(int i = 0; i < iTe1.getSizeInventory(); i++){ + if(iTe1.getStackInSlot(i) == null){ + openSlot = true; + + } + + } + if(this.slots[4] != null){ + existingTemplate = true; + } + //Check if there's a template in input + for(int i = 0; i < iTe2.getSizeInventory(); i++){ + if(iTe2.getStackInSlot(i) != null && iTe2.getStackInSlot(i).getItem() instanceof ItemChemistryTemplate){ + if(openSlot && existingTemplate){ + filledContainer = tryFillContainer(iTe1, 4); + + } + if(filledContainer){ + ItemStack copy = iTe2.getStackInSlot(i).copy(); + iTe2.setInventorySlotContents(i, null); + this.slots[4] = copy; + } + } + + } + + + } + return false; + + } + + private boolean validateTe(TileEntity te) { + if(te != null && te instanceof TileEntityChest) { + return true; + + } + + if(te != null && te instanceof TileEntityHopper) { + return true; + } + + if(te != null && te instanceof TileEntityCrateIron) { + return true; + } + + if(te != null && te instanceof TileEntityCrateSteel) { + return true; + } + return false; + } private void setContainers() { @@ -531,10 +587,10 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve if(sta7 != null) sta7.stackSize = 1; - if((slots[5] == null || stacks[0] == null || (stacks[0] != null && ItemStack.areItemStacksEqual(sta0, sta1) && ItemStack.areItemStackTagsEqual(sta0, sta1) && slots[5].stackSize + stacks[0].stackSize <= slots[5].getMaxStackSize())) && - (slots[6] == null || stacks[1] == null || (stacks[1] != null && ItemStack.areItemStacksEqual(sta2, sta3) && ItemStack.areItemStackTagsEqual(sta2, sta3) && slots[6].stackSize + stacks[1].stackSize <= slots[6].getMaxStackSize())) && - (slots[7] == null || stacks[2] == null || (stacks[2] != null && ItemStack.areItemStacksEqual(sta4, sta5) && ItemStack.areItemStackTagsEqual(sta4, sta5) && slots[7].stackSize + stacks[2].stackSize <= slots[7].getMaxStackSize())) && - (slots[8] == null || stacks[3] == null || (stacks[3] != null && ItemStack.areItemStacksEqual(sta6, sta7) && ItemStack.areItemStackTagsEqual(sta6, sta7) && slots[8].stackSize + stacks[3].stackSize <= slots[8].getMaxStackSize()))) + if((slots[5] == null || stacks[0] == null || (stacks[0] != null && isItemAcceptible(sta0, sta1) && slots[5].stackSize + stacks[0].stackSize <= slots[5].getMaxStackSize())) && + (slots[6] == null || stacks[1] == null || (stacks[1] != null && isItemAcceptible(sta2, sta3) && slots[6].stackSize + stacks[1].stackSize <= slots[6].getMaxStackSize())) && + (slots[7] == null || stacks[2] == null || (stacks[2] != null && isItemAcceptible(sta4, sta5) && slots[7].stackSize + stacks[2].stackSize <= slots[7].getMaxStackSize())) && + (slots[8] == null || stacks[3] == null || (stacks[3] != null && isItemAcceptible(sta6, sta7) && slots[8].stackSize + stacks[3].stackSize <= slots[8].getMaxStackSize()))) return true; return false; @@ -681,7 +737,7 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve sta1.stackSize = 1; sta2.stackSize = 1; - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { + if(isItemAcceptible(sta1, sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { ItemStack sta3 = inventory.getStackInSlot(slot).copy(); sta3.stackSize--; if(sta3.stackSize <= 0)