From a4997d8765a74e90eefe14008f0f14002c8f6efa Mon Sep 17 00:00:00 2001 From: HbmMods Date: Wed, 17 Apr 2019 11:53:55 +0200 Subject: [PATCH] finished bobmazon, fixed fallout crash, improved textures --- assets/hbm/lang/de_DE.lang | 16 +- assets/hbm/lang/en_US.lang | 16 +- .../blocks/battery_dineutronium_front.png | Bin 377 -> 426 bytes .../blocks/battery_dineutronium_side.png | Bin 402 -> 446 bytes .../blocks/battery_dineutronium_top.png | Bin 781 -> 398 bytes .../hbm/textures/blocks/battery_front_alt.png | Bin 353 -> 586 bytes .../textures/blocks/battery_lithium_front.png | Bin 375 -> 493 bytes .../textures/blocks/battery_lithium_side.png | Bin 472 -> 536 bytes .../textures/blocks/battery_lithium_top.png | Bin 596 -> 592 bytes .../blocks/battery_schrabidium_front.png | Bin 358 -> 546 bytes .../blocks/battery_schrabidium_side.png | Bin 373 -> 573 bytes .../blocks/battery_schrabidium_top.png | Bin 664 -> 595 bytes .../hbm/textures/blocks/battery_side_alt.png | Bin 409 -> 590 bytes assets/hbm/textures/blocks/battery_top.png | Bin 497 -> 623 bytes .../hbm/textures/blocks/crate_iron_side.png | Bin 363 -> 576 bytes assets/hbm/textures/blocks/crate_iron_top.png | Bin 450 -> 525 bytes .../hbm/textures/blocks/crate_steel_side.png | Bin 391 -> 575 bytes .../hbm/textures/blocks/crate_steel_top.png | Bin 330 -> 518 bytes .../textures/blocks/machine_transformer.png | Bin 354 -> 498 bytes .../blocks/machine_transformer_iron.png | Bin 379 -> 573 bytes .../blocks/machine_transformer_top.png | Bin 350 -> 591 bytes .../blocks/machine_transformer_top_iron.png | Bin 343 -> 557 bytes .../blocks/machinetemplatetexture.png | Bin 0 -> 538 bytes assets/hbm/textures/models/ModelRedBarrel.png | Bin 768 -> 680 bytes .../hbm/textures/models/ModelYellowBarrel.png | Bin 869 -> 1105 bytes assets/hbm/textures/models/bobmazon.png | Bin 0 -> 2692 bytes com/hbm/entity/effect/EntityFalloutRain.java | 10 +- com/hbm/entity/missile/EntityBobmazon.java | 73 +++++ .../entity/projectile/EntityBulletBase.java | 4 + com/hbm/handler/BobmazonOfferFactory.java | 256 +++++++++--------- com/hbm/inventory/gui/GUIScreenBobmazon.java | 18 +- com/hbm/lib/ModDamageSource.java | 1 + com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/ClientProxy.java | 1 + com/hbm/main/CraftingManager.java | 5 + com/hbm/main/MainRegistry.java | 1 + com/hbm/main/ModEventHandler.java | 16 ++ com/hbm/main/ResourceManager.java | 1 + com/hbm/packet/ItemBobmazonPacket.java | 194 +++++++++++++ com/hbm/packet/PacketDispatcher.java | 2 + com/hbm/render/entity/RenderMinerRocket.java | 10 +- 41 files changed, 476 insertions(+), 150 deletions(-) create mode 100644 assets/hbm/textures/blocks/machinetemplatetexture.png create mode 100644 assets/hbm/textures/models/bobmazon.png create mode 100644 com/hbm/entity/missile/EntityBobmazon.java create mode 100644 com/hbm/packet/ItemBobmazonPacket.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 629fdf38f..9deff3fb3 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -34,15 +34,15 @@ achievement.fiend.desc=Sei gemein. achievement.fiend2=Unhold 2: Noch unholdiger achievement.fiend2.desc=Sei gemeiner. achievement.metalworks=Metallurgie -achievement.metalworks.desc=Bobmazon Level 1 +achievement.metalworks.desc=Bobmazon Level 1 (Hochofen) achievement.assembly=Fertigung -achievement.assembly.desc=Bobmazon Level 2 +achievement.assembly.desc=Bobmazon Level 2 (Fertigungsmaschine) achievement.chemistry=Chemie -achievement.chemistry.desc=Bobmazon Level 3 +achievement.chemistry.desc=Bobmazon Level 3 (Betonziegel) achievement.oil=Petroleum -achievement.oil.desc=Bobmazon Level 4 +achievement.oil.desc=Bobmazon Level 4 (Elektrischer Boiler) achievement.nuclear=Atomwissenschaft -achievement.nuclear.desc=Bobmazon Level 5 +achievement.nuclear.desc=Bobmazon Level 5 (Urankernbrennstoff) potion.hbm_taint=Verdorben potion.hbm_mutation=Verdorbenes Herz @@ -179,6 +179,7 @@ death.attack.blackhole=%1$s wurde spaghettifiziert. death.attack.blender=%1$s wurde in kleine, mundgerechte Stücke geschnitten. death.attack.meteorite=%1$s wurde von einem fallenden Stein aus dem Weltall erschlagen. death.attack.boxcar=%1$s wurde von einem fallenden Güterwagon zermatscht. Autsch! +death.attack.boat=%1$s wurde von Schiff getroffen. death.attack.broadcast=%1$s wurde das Gehirn geschmolzen. death.attack.ams=%1$s wurde in tödlichen Teilchen gebadet, die von der Menschheit erst benannt werden müssen. death.attack.amsCore=%1$s wurde vom Feuer einer Singularität verdampft. @@ -536,6 +537,11 @@ item.assembly_template.name=Fertigungsvorlage: item.chemistry_template.name=Chemievorlage: item.siren_track.name=Sirenentrack +item.bobmazon_materials.name=Bobmazon: Ressourcen +item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen +item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe +item.bobmazon_tools.name=Bobmazon: Werkzeuge + item.fuse.name=Sicherung item.arc_electrode.name=Graphitelektrode item.arc_electrode_burnt.name=Geschmolzene Elektrode diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index ca0a20641..6435c4d94 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -34,15 +34,15 @@ achievement.fiend.desc=Be mean. achievement.fiend2=Delinquent 2: Delinquent Harder achievement.fiend2.desc=Be meaner. achievement.metalworks=Metalworks -achievement.metalworks.desc=Bobmazon Level 1 +achievement.metalworks.desc=Bobmazon Level 1 (Blast Furnace) achievement.assembly=Fabrication -achievement.assembly.desc=Bobmazon Level 2 +achievement.assembly.desc=Bobmazon Level 2 (Assembly Machine) achievement.chemistry=Chemistry -achievement.chemistry.desc=Bobmazon Level 3 +achievement.chemistry.desc=Bobmazon Level 3 (Concrete Bricks) achievement.oil=Petroleum -achievement.oil.desc=Bobmazon Level 4 +achievement.oil.desc=Bobmazon Level 4 (Electric Boiler) achievement.nuclear=Atomic Science -achievement.nuclear.desc=Bobmazon Level 5 +achievement.nuclear.desc=Bobmazon Level 5 (Uranium Fuel) potion.hbm_taint=Tainted potion.hbm_mutation=Tainted Heart @@ -179,6 +179,7 @@ death.attack.blackhole=%1$s was spaghettified. death.attack.blender=%1$s was chopped in small, bite-sized pieces. death.attack.meteorite=%1$s was hit by a falling rock from outer space. death.attack.boxcar=%1$s was smushed by a falling boxcar. Oh well. +death.attack.boat=%1$s was hit by a boat. death.attack.broadcast=%1$s got their brain melted. death.attack.ams=%1$s was bathed in deadly particles that have yet to be named by human science. death.attack.amsCore=%1$s was vaporized in the fire of a singularity. @@ -536,6 +537,11 @@ item.assembly_template.name=Assembly Template: item.chemistry_template.name=Chemistry Template: item.siren_track.name=Siren Track +item.bobmazon_materials.name=Bobmazon: Materials +item.bobmazon_machines.name=Bobmazon: Blocks and Machines +item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives +item.bobmazon_tools.name=Bobmazon: Tools + item.fuse.name=Fuse item.arc_electrode.name=Graphite Electrode item.arc_electrode_burnt.name=Molten Electrode diff --git a/assets/hbm/textures/blocks/battery_dineutronium_front.png b/assets/hbm/textures/blocks/battery_dineutronium_front.png index d97535b70ecb7f8d20b7e605a75cf6c3bdfd16d6..ba82461ad03c2c17ead18cb2e8bf558b6937893d 100644 GIT binary patch delta 321 zcmV-H0lxnE0;&U$a(_1cP6_A$00A3GL_t(IPmPi}j>13?MY)L+3*-dEB0=JWgoG0y zStKBq0EuCSB_MzRM}(ZiS0IIy18@~y`Aw(u}0C&3A)|*T|k*p@yCv6tQB|gAs{466B8Kn0@V;VF8#{6*4&~%R2XiYz;=*^ z@{Ba}=jY0fc_a|a<2ZpniUz>|J1Wj~yf;s(B4h$h##u=?xgC_9K72Zo1V-R+r8xvjWBwEA4*Cbbh1Yukw{_uy TI0zDy00000NkvXXu0mjfwq=oi delta 272 zcmV+r0q_2*1Nj1wa(^{sM_5t-008PqL_t(IPi2v@4Z<)GMcrf#)<8-L1!4hO7RUnh zp-fLf!2;|+MF~?d2R!RphvP_J*4@AN&yJF|+jD5WKB15Ycrj%bzb z;c!7ZB>=iw?QxICTg}BK6ace8LsR2?9~-8K7UAar3nWAv+J8klv%r#mO-Tq*5Qa>t zFCQJWBCw>}KuxpWTG{|-4)~;+{#;Xtqya>D_R;P`k@PdX#Ayi#Ig59*UPlw)|0J(- zARX%&h1mw`0kpo))8s5qLj3s{u)e-lQ=kOsJuPZllLDIi^OFeWT0B#|)~f5HF&4#EKyC`y0;000w+ZzYqwC1|fmaN?-(TT%@*yQm06o zG^9wAhAZS2+$k4HzGd**xbo_081~JZpWS^r9>4E!IDCP!{7`Dbf9Cmnmc5E~oU<12 zc?4njg53nmvdr^rGGPT$!LU~W|Km8CxLXis*sFkD&~@D~3{BH0rK+l`>$)h4OfSt+ zO$$z^*$Dc+_kG{B?OSu_{HcEf97mxVvdWZz1d^ tfaX=1(6!eI;28gcbq0BZkHR_s1ADW~Ca+dLO8@`>07*qo1w^hwV1iGmwA%mx delta 325 zcmV-L0lNOa1Cj%fBnkm@Qb$4nuFf3kks%uj!vFvd!vV){sAQ2wAAdDuM_5t-009F@ zL_t(IPi2v@4Z<)GMcrfoBorx)7l=|t5mMR|h=wv9VgYI-dMMLVvH)w)G6ZW-@XQYv z$5>z1zw>|g1zgu%OsmxiC1u>qvULE?=f^NS(cy4Ml#F zrBi@+4PY3p7+?>8M$%^q;Cg!pBLFej?4u2^VPphwIsrJq?nj-hZNI-#etr;mUC-2%1 Xtjy`@lhJ1C00000NkvXXu0mjf{ELfm diff --git a/assets/hbm/textures/blocks/battery_dineutronium_top.png b/assets/hbm/textures/blocks/battery_dineutronium_top.png index 65c4af94504a910bf40242f9294ce1c25ab09454..2d9ef4dc5ecfdbbd084ba8c00b6868d8da648b47 100644 GIT binary patch delta 306 zcmV-20nPr6295)eWq&sPP6_A$009h1L_t(IPmPj23c^4Tg}q4{n=}bQkSJ`E#>U1r z5NvF0G$=wWLO{^95pw|X3OSK_72ocQlhsQ2nEjdeCbPTgO(usQlB5K2yj7||91K=L zuw?YS)EF@QL%%;qYz>2nE{)?Bs0Y+cpyBx!LQ~&?~07*qoM6N<$ Eg52eYRR910 delta 692 zcmV;l0!#gl1C0idWq&nfM_5t-00N6iL_t(IPd$>$PZLoT#xImMK#Up|{wq^!;L1fh zLu(CBQ?L~f`k*fa`xc~>R&4rUD&PwuCTJ8D)Jmj9bcu1H7}rA7g|cF2;xsP&h7yvK z$vw&UoBMtD9MaGbKPVPI$z46gjW)5Qj-^nw+!$Il7v{K7Nq?hM@-h&MZKhLOnZ%c2 z+iRa?EgAfj417lU`}1Dw8&ms&vEyEBViU3h0BWaYaOhIl*F6!jWkaS^$dtwx=ZH=8 z_KXkq1sqm4n0NDkR^DrFNvGI$M`Zy0I#6_uRYZ2p<# z7N$`y{^oX0dPsM>gh0eDYSjr<`DvnO8RUawE1z&`#qF1po1Y#OZh3^65;MT37wPYS zc~YlNRVmI80~1sJtyupZ_;&GGh@kfI3&X8=h@vO6$s5;5B0q* z0VOjYVb&|$Ut5G)zT^ zq9K4}j%ZX$p;~peS}oCdOsT6;8BSCiYpOab6%7?-b%z>4 aH2(qeOiOlH$F7qA0000OBP6AO7hW9z_O!N(W04rlbVMAfDovpnMg%zDO2?PQOETMpyxIln#-*64# z5+OiHh=p!o3o2{B~$WR0_XRz?I2l{Ct`wyWOrt`~5xzYrEYJO73`(vh<4=&)M_!DXVdLVtUT$zJJkZP~>DXAyWY$E))vX z$^lA_AnZaP^i^vWGVoyNJ(H~vDje`B=DfT)xMLSfZTO92f@xnI(l{bk9uCWH_=)6cz=bA$|c#q;iHH zX}AZ20d>Plo-3sQ{6Q*X0)Gt;5Ax5iK5{7Z1t=Q=*;(!pLI3~&07*qoM6N<$f=wpj AlmGw# delta 305 zcmV-10nYx)1mOaZB#|)~f589%4#5Gqk!$S$000 zm;xoxuK^b5XwC{c-7d1jXb&Xmew-&wfFO*sloF42;4&ca?;Zo;ZEn`9bsONU0o34r zU#9#>8UVtFM*}TT=Q9Ae(+Hrfq29XPoAq|Ujl|+g{?38!T+b+*W1t`4wqGx|J)JYI z1gIRaUN@znHAH~gCsUzLs~R`|uU8@js1(wdyDsGi+|E%hynO&{00000NkvXXu0mjf Df?$c+ diff --git a/assets/hbm/textures/blocks/battery_lithium_front.png b/assets/hbm/textures/blocks/battery_lithium_front.png index fa335f52ad80c0018943579cb0b2e37609afc1b5..d4dc1de6aa4902e27bba2a0ad9fd6078cb22fec2 100644 GIT binary patch delta 388 zcmV-~0ek-U0__8ka(_1cP6_A$00CY}L_t(IPj!+}YJ)%!hCNbI*wRozA{eqnDp(Lg zr9uvq+n9$S_?83sRuFvjDE)S3W2I?j7lNQK7RN71@=Bd%LH;NZ6@qA<=V_Y0hrg*#Hy z)B@OYEr0f)3VrAcAPn>;3fupBkjve904KWx+>su8pg71dtc+GV!Z diff --git a/assets/hbm/textures/blocks/battery_lithium_side.png b/assets/hbm/textures/blocks/battery_lithium_side.png index 0928db28015af50939ac1260708a3d6e1708038f..f02b4e99b9dd3e6c01b59bbec09d09bda4ca465b 100644 GIT binary patch delta 432 zcmV;h0Z;ze1DFJma(_1cP6_A$00D_fL_t(IPhFC4YQjJe#d8o5{~?MXB}-C`1fpWZ z&|n~ifHXAV=YH=Eyh3l`oqCb>xBEgW4Z~!1X5PG+-SL{{t*$Q;Y~*sOs_L~U^0F-Q zJj?UbexFDi^W>2iMPV2kw2UzH5gi{xam>ND47l$1`|Wm1(|>)I9nlCSvn+)Httbo@ z00TeHbzLj$^bx@TNuHvF{uuB&p>~=iNgT)P^?I|}1VOM|E)^|`7c#x;^_~9YIvft8 z(P%gvqQ~R$WHMPS7X5x-eU{~!ObY;)raKq`kUgDFf4)AxKMM?F3?4U9_6YDb=ytmu z3GgVK!|wpTr=MfkF)ppE8Omb_ zpnGcpbk?;5!+bvHX2|2CAG90V-gVnjRh4Q9FE>a%GUyxK*?Jb1#R7l==w4b6%oU?W zORA!-7vs6-XkS{Dv}bU3T2XefWr(6@SJ>_XyxLPVM=7deJ2|&AxE*Zwu@gMd{_|UB a=>Gz!?a^;_VvorH0000}Wu+>h>-s)wedmFA0N=X|gR5RQr~$N6 z0A*we;C0%**N#TF1)%Pr0FGDx!3Z$u_p&UlU0MOEj2Hoy%Zz)MfV}D90Gos=BL-kL zdswX&lrJmcU}yj=%i=XjG*+5E&gV}}fMT1?Ym&ra(7ABWUH6QO#&I;6MAPY5GG!%% zqZK2bg6HdA`@{P_r;12Rpaj^ diff --git a/assets/hbm/textures/blocks/battery_lithium_top.png b/assets/hbm/textures/blocks/battery_lithium_top.png index e9512c41af82f79b806815cf491b8f19767769ff..ceb7088e8120d1b28f213c9cf0b1f2e88748f4ca 100644 GIT binary patch delta 546 zcmV+-0^R-81kePKB#|)~f589%4#5Gqk!$S$000cxl;;eC{YPH&n zBt$qBs^k%a`oZ)Z?19^~Oe>8>+01$dInJ`Mt;JVK+ zAU}cv$Y!(kdYwG1)oQidZ2%HQcVTc5l#y|#VzC&H$H@>&Bob`lk@=L%1@J_I17sI(FTjoVbax~!lXnCRO k|E{0v`OW@27&MIZ4Vv{0y6&D1>4FxSkP{e)3T~V`rBdm1I?ZOY-EQMwE|;UxD3i&w zS}jE&0ih7cK{U@|u~;Y+>h*fR-=9n->-9RD&8}7}oj`qv9*@WAbb7zv&*$^$bUGXk zyWQ?~yWyG7=UC9~cB=@nSd1Kq0Fb!RXiz}8TrQPL+^GsCRe$aGdxt~QOQN~OVgUvK zY`5EOHk+ntR;v{qLNAvK4Irxs3}i4EkQ*3)=(ooQfgp77i`5B~gaY-@sK6)?{rdQ5 zl-lr%RXs3xCdhDT7rShL9@Q_Go zsw5UnXDk64FlCsG2q!ZDl|;}KArgtu15L{k$YhAfDntiVl>{M~OfoA(NN+3wDG2{Bm4*2x+Zfu zhrG2yVI`kuRcAQ}Fn>LcUhPz?#Ek+W-}gPwJ8rjOVm;|}a8A2j6j=54sM$0C6xcYs zuB&_-rP5ZVvRN+U?APm5qPMUN6^KHBBkAp*!=KjW*PvvRI5d;I8Z_iJ%1udA(*jU(aaD4F$5TA zC@t|o1i^$y6yiNFL491!bf`>A0>f*@ zdmw?^%P1O@#HJ;|u~)0bd*FjmEryf<00p44gz3t*2rGGaA~-PWExrLT4gfk!L@>yh z37QN?SG|S805jm@3;h2abTPOyB8ZPk832EfjrSQfBFK)#O)v<40a4=%;~~>iTL1t6 M07*qoM6N<$f+5DtMF0Q* delta 310 zcmV-60m=TN1m*&eB#|)~f4~3$4!{9w)`j-Fv~#RfYx_C zP0ns5L=_Fj=g(>iEOY_xo)$T+Nde8@Pb(2ZR8gq>+ShgS2SZp14H1CX&;S4c07*qo IM6N<$g0F;m1^@s6 diff --git a/assets/hbm/textures/blocks/battery_schrabidium_side.png b/assets/hbm/textures/blocks/battery_schrabidium_side.png index d2971feba803d62af896b7d4aa405002826869de..030eba15d5f6741cafb481c95b872d064e02c13b 100644 GIT binary patch delta 497 zcmVRjrGLMFQzxSlanpfNuh$EL;Cwct682&~$GKcA=z!Ji>11LEbYSD( z_kB&Py;?4DV4_5``1=k-Dd2fttJSL4>#plotJPYqRxX!|#iC~KW2E&J&%i&?X0w?} zrIN`cHl0pqGMPf5kVquxM){{0X$bJnrc-1<0G-Wd<@+}3wtsO-r4kXQLf)Q$G77L7 zjfUem;BvW~+DfGY0W_Q!mBb7X=)kcc9Wj&#&4Mev3Cka2OZqDu(hn zO3-stq=hn-1cwg!e4dj5$A=y)LzBJRY_^ivR1!5fLF$1(H+JWvmc?T+1gH@7E~!KU z%PGUBCq8GYSx&SV0@ndS?-CFT4tGLNXlgafTQmd)I*uYhK=J9zdKP&Qp*dB-@r$#a nfj7ve?{T+?(Dq;41jFzLmVD6Nz=v{300000NkvXXu0mjfhw9>- delta 325 zcmV-L0lNOZ1oZ-tB#|)~f4=|#4!;371ydvd000Df9>;yigJCuA$1~v zqr163(wse_yEC9j;{`~Rh<*ULKneE6f33OMJ~ zkq1z^1bEi~hS5p^_5f%keU<=tdj}%`FR5(vvk~>QSQ4odm z3#=3iABByINHmI#2;!sgfr`%{u8%@R3?ir?ir6Rt|4e>^g@s^aC%%>}NhBu7LX4~% z!}#4Dl^`50_wLM@GjnD`agnoMa6cD06*(5!6FC%#l}g*bujk6!+d?K2A}^6h#N%;) zE1zG=<>peU>10wd@$|%#bL{?Jb9fpBlWkcrORM9b)<|};*Rw|6qeGk$o0t7%BOc^X z#VAByUZ{a6_nS!LWlQxyht8pQ*n0D*D8R>x_8k`P*b zA2byTpicyXMltY*fH{mv(?-E@$W~7v3H6D8XQWDS5IlLYiX;Yp%=C+$zCv{G^=!K29f--}2=9^8zLhS^xk507*qo IM6N<$g2n0NUjP6A delta 588 zcmV-S0<-mbL^DfUK8TIKKU# abK*azCHHJP*@$rf0000MH}4! diff --git a/assets/hbm/textures/blocks/battery_side_alt.png b/assets/hbm/textures/blocks/battery_side_alt.png index c34ca3294ed2608649279c0bbd33f5162ea7fb8c..4d5e5dda9d88ffedadb9e4c2938054b7aeceadbb 100644 GIT binary patch delta 513 zcmV+c0{;D(1I`4HJPN`901mx;&1N(j*|uG;*Tw6)u7RsmDu!X;v2wXwdYT-6 zv3IFjt&&$ANY!e!LZQ&__lLt_r_7*^TTCG4T0v%|7%>WQU`~CjA`FYnr2qKXP8Ky$sa=CmFm_bCR z(`lE>1uhT>h>yi$5U9f0?RH$P-EKDs?RFai(hCbZ1(1*hT0x39* zi*ymg^#nqo0|rtN7zF||z@bAh8061@!_b3gXxYX~(ssKQNi^jTavunE?j2~E6Id5ekw$TUqrgTa89M@sAU zdOe%XCX)%bg5yZQ42r-TM45Vxe~b)2Jr?z8W)pZ)Y1 z=)-Go9<8L6VHh@GUDqG4Z!cO&?U$EUc7Q03)n!@299wogffH~^;{`~xi1iKN041n@ zw}0*a8KcVG9CNjBEv! zrSW&?fZ-H3_rCLe=R4;+Pg^V&|2DyWKA(@rN!(p%2tAPuD z1Oi5*F%${~gF%2&J%`>BB_iSX&3>*&Xy)1Sd#yYY+tg5iLV>2%uX^U;{o=~N03CrP zRhcy&k0+B!&;)JR?RLq|X0tT`a~P4PnFobfEGC{nXf~TDNOm%rsFs$?C1zm=gQ8%y zS~Ho9c!HD=B-`)zQPYOQAw$32pJ5JaD1bwRpfPNKfYH9=okpXf6k4qo3fPZ-p%9|c zXr)pCM=)i#+XW=qVzH}O@91fvM0Qb|0)HM%0$DCQ9SusoTBlwcHrDOoDF l?O-_k1n~oqJPN-601m$aI0aKAkwzbXHDpIvQUCw}Z%IT!R5(vflA%ikQ4q#$ z{sX)0df@IJXb`T52Ek$wxp0Dp3mXJE#C9fw<-$daSRP#2Y%wTkF^C4mV6|SbC}hJCMeD{WBcr)L8^Ua&LQ;&h&*5-o$P^L^(RhDqkZr*G!@LhN2&(<2}>$6v#xyyEc z6HoGCXZfkOa$hdK9&I@S!SAU5yubP}EZ+y+m;T1vpbL!uKH2*j9ef?{g5n*42Efvh zh!lK#p)f6h`N$Fgpd%3}s6D-f5;_8%2t<=kD56r(&tYkdu_J*Ihz48~MV{wbmZfQm zj!Hq1bp$#A$OBN_s0{)|A!-SXgaUwnJOBz*&(y}oLe$-X#g7j+nVahZL{SvSagrn` zumko6O*M|7QUGAhiaK+%0}Uw@nj6WN-jz#uLUfo-k8s+W77EP~2uM+ZC+lAt5j}-; zKqv1&Z#t>He+0Zl_;;k^2A{28Gix*005AYXf^-<00d`2O+f$vv5yPL~a7{rh(j-)^_d<#IS2;yB)HHlxuf48vNj#vVmcI-OR)mCI#K)4pEIG)?`r^R`~AUSKz{&}a-daJ^*rybfM~s5KcCOkhSO@bz@aA5904>Mjp=lXVdeRJVv)1t zpa6%MHJ{IY-!Bvj?2u^#q##g$GC-j*BI0~LZ`(E;u8=|*dyB>5O`rz~uz3?*BKnf0nq74Gtz!J$~u?SPn z4WuB@inPQvXmscjC(tAr4g;M`CT~l--A-D<$;SrA&)i5dO&*k?3Bq_hhQM1^t5s^F zKt0fymQQiLUilAFsT5wsJMbKUC}vp}Mp^PGMdZF(tuRSBL7*Xe&1SPeiTO#9Ua!}) z*$m%QU4fob537x}x$Fpz(F(7LYw0EkjDFeqN%fdBvi07*qoM6N<$f^-r5vN(lg9 zt;HQFC0J|azg!<8qPGJ&W{d$5frwy?c_v6Hfru~+0|3A|2Y&$A_g&VEj@5MyB0_Gh zm0KQ<2b^;#%M#vuq?E92+uJ&XAW3tU=A6U6@3P^&zxCisrt9qc9>;MY#)xqo0RTl& z$j^GsCTFaG>AFsmOw)9GD=Rg|ycB5pP18t{d7eMYCn99r!Yg;>X!u;l0o}3~<83*t z#yR)$z*>9q;8aRgRg&b2c<>*8m2+w%qua&ka@cSpdOjp3gmCHx`?4&HJY&5N{LTUZ tv~4Rvo;b~?DV3+pL&fNcyOyZGe*h9q&!bs0Y-Rue002ovPDHLkV1jP`oQwbf diff --git a/assets/hbm/textures/blocks/crate_iron_top.png b/assets/hbm/textures/blocks/crate_iron_top.png index b2c81a8ae2903d8f7dcdf151f993f21dcffbb175..c552da51b35dfd545edaefa345f7e59c04c97fa2 100644 GIT binary patch delta 510 zcmVJJz76->q9k zJ?r&)ef?0AQ#~(b!N4 zfDIKc5VvNb}m5GcoA|j|Ns)~pZV`#)$Wx5Pw1zEFO=?OI5kuZU9(o z0hs4GpA**H^?F5B`7y@ey$4{o+hMKccsz1Corp2=d_MEpd(SjY6h(peo~CKuBb?7? zthFr5!Zb~c^U=i1(gh z7;`qY zVG~*U?9@GtlQ?T_POdb@WJmwI-E|$8%jIi2&bdDi627?&-_uDbQ&-@_?KRfvq!d(@ zVjRa;2!Z?k4zNjM?MqtYbl>+qA%wqw;cz%0A~@&r+AKQf@@UDYHJ=4im$Z=yRaJfP dRaI@Ce*st@L+002ovPDHLkV1j0X%<2FD diff --git a/assets/hbm/textures/blocks/crate_steel_side.png b/assets/hbm/textures/blocks/crate_steel_side.png index 9765924b794602d18a841a94d58b9d898f39240c..e1dd9aa52a9509e4bed9fac03cc42772b6932417 100644 GIT binary patch delta 561 zcmV-10?z%11HS~28Gix*005AYXf^-<00d`2O+f$vv5yP3;-)6dVRc8w9k0C6dKr5vH6Q zNI{?#X^Csl=+Grjph+?u20EEc-j;T|owS6Lj}4BWxsha=JSamGgzU$bGe1VUlu!KtuGJ&1QiT^OGXIUax1f z8NR8?KPtSMBG>J!jP4G(~b#NE)dOPZW?UW_m{_V>fr^?Lp0 z*K*DP7-RU{tF4qm(=-4a0G`k1=ForabUM8X0344;j4|A9H-8?F2j}y7*N@{!&Y6_b zy8}Qs`o6~)!~K58Ik)nk$)yw;Dd4>)r9{q|uIpHqg`BhcVHh;od#__O0?9eYG)-D$ z97ke|IOpj5UX!P3!a4U!ZkqQ9a$5+2%jE*VFbo}hYT{kjt!VG5vwtydeA%tCZ1fq@*V_fMhv_F}M zIvWPH&NXfE^*a%DfOmnvXxF}eCmVU)~06&2( VRtF}3=xqQ1002ovPDHLkV1oDJuQ&hz diff --git a/assets/hbm/textures/blocks/crate_steel_top.png b/assets/hbm/textures/blocks/crate_steel_top.png index 582ba1a63cc37a533e65fd41f9ff54946f30b410..595c55334a4b30940d3c57767d44c6167fdbfe11 100644 GIT binary patch delta 503 zcmVek|d+iNV?PMSk(3V{a&w!MjXenzeO(6riQ~Ial=69 z{eEKvK@i9BY&Kgg7PO3_2nMvW-AzjeC1$}Em^PEz@*RTGnEDaLtBc*hDrczsBjtY zbUJ+i>_7vAG#D`mGo4Q7^EuVHm&=9LR?{>9DCM_+A;EGKF$O^}Vt|?Bn5A#G8vsJ2 zUDu_3%R^Ap>%UQH0IZ^sNYhU|OrrK^FmUeo`_D*aS#WA3NVSIQV8B2Ka!n-5G6UG{ zb^vrsaxl=3YVbM*49YT#xdZ0_pj%47v?S8X@)iw%g$9EGMTD?8hLB`Cj9)x${9^kbs%ZFdZ7y%fDfp+d& z=Xs)(0^kj>@B3}he>9FGDi4e?hzQ<$y!RMmy0wU4j439?Ab*5Fj1lJ?0PDJvQX-|q zx~>2?=ZG;9Lb#%21MhuhqO~r&XsxSe@BMXxZ%93p$7ZFj6Ig3WDcwxk=9CiF+RG$g z*|u!}HrSt1iHX_V6!R)z2>YZlVZ@` z^E6H69Zb^%)HClS>ow2w=Qxf(DL+X>c%SEqh?MV{vt>xVxm*MM0C;8<%DrseivR!s M07*qoM6N<$f}q)qP5=M^ diff --git a/assets/hbm/textures/blocks/machine_transformer.png b/assets/hbm/textures/blocks/machine_transformer.png index 3ba309f73ae91c6d419d5bc1be752e3ccad1d056..dea44f1329c0b73b9648eb24c2c53d6c47ce0d45 100644 GIT binary patch delta 483 zcmV<90UZ9~0`dcp8Gix*005AYXf^-<00d`2O+f$vv5yPMhk0e ze>;fH?uol+g@7RsIkYIrmpLYvMj2qEDBQ;XK5O%4}t@ayxA-a!vL?F zF!V7!PD4?|!FLK=^?l!UU6!TB%<&kM#$+hqHHv}*puob}T07x8!lLLnj!($bD99fL zZiOKDy1)LsTYtXYmhbDu>rM8tULc~;vdl^FR;w#0Hvs>|9zNxJkEgr%hj`~X-=}-6 zv#QR?bO3N!mWW~iCB)Dpf)s+hn6zZ30ACyB3?;;)2!a5}Cd$T@)V5Xt3D5Fp52}E^ z0DMmuQAqylK^}KL0H|yOa3yW`K!SeAP*Po20&q?9@LbzHFd)!lNI3vd0Q#45o9h(8 zhliexMx~a(lkXUQTA6gt&>X!+!4C>dflLmm26|P{USSoTLCOJS28VeZjT>Zt-Mh=s Z{|4{w`B+Xo+T;KL002ovPDHLkV1f;i)Yt$3 delta 338 zcmV-Y0j>V>1L6XZ8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0U1d|K~y-6osq$6 z!axv)zky9G!6?*gd-GK6Deux}={xmtEcDQp3VKnHB1%JMwrmeJSwodrf7rw9vj2SZ zj}%1_LI{Wmm&gGO27`+}Z@1gML0$ZZB+qkHH5vds-F*TuU4K^qyl)JE`OdiQCya*) zlTnX{musr3iX+sTt}6s-J}!11fK~a85Xn@PG)?~++>d%Ek#G8r@i1jFN@20T^WH}T zRc#2~HrgUsmj1vh0R5(NKr_#|1omMugTr~A*A;XS1Og&gZGu{pb2FIHto!H|x-&RI zaCQc-hN@y_(M!O4e-VhMWX{Y;l7uYFS`Vs< kbB-=K5uq&0)15o?0|Nk?nkfX=n*aa+07*qoM6N<$f;~Qy2><{9 diff --git a/assets/hbm/textures/blocks/machine_transformer_iron.png b/assets/hbm/textures/blocks/machine_transformer_iron.png index c6364015f00c92e7e8ddc72cb5519788e834a24c..71cae6c9871a58b9e16a220cf1d4522086e704ba 100644 GIT binary patch delta 559 zcmV+~0?_^Y0=)!~8Gix*005AYXf^-<00d`2O+f$vv5yPOBP6AO7hW9z_O!N(W04rlbVMAfDovpnMg%zDO2?PQOEPtVZn7BZIaNlqZ;SwQ0 zNQi}QU<)d1zvJL)gelHtX8!-5Idin_cKiNgoHv`zdc9sQm&4(3Hk-BEZOgJu)08z3 z2x#O*qtS3U%!)-Kk~$WR0_XRz?I2l{C2x}q%}TUVsr)M7&FAwRKA-NK$J@7un-8D&_5RBC zdAr@NMEm_d1#7$A4odELk+SrQ7th)A^(m`yd189b>AuluP~>DXAyWY$E))vX$^lA< zp+^KM1bH#KYPDM9@pun_7y^ttln}cj2(DHuvcW7C3x60j$8i9lz_T3ffjqL&M@lsf z0RUWJj`lDbjZmo7YGf(^tw>2=VzJm^4`Ft)VA!-=LVGn!|rime?0G&<; zfXuR9ulIUA`9)Mbolc>LSfZTO92f@xnI(l{bk9uCWH_=)6cz=bA$|c#q;iHHX}AZ2 x0d>Plo+vA&0Q^BJV*-B-4-fLsuRd}p^aUsz0@+#a5kdd}002ovPDHLkV1n?C>ze=o delta 363 zcmV-x0hIo|1p5Mz8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0WwKMK~y-6osmyY z!ax*I)9?55EX%0XY8+DmK)2gH>hNSTSqBu0|B$rXZGS|>2LRlBJp(XE6@a(t z5`fWs$wjkHFRqhxB5qHwSu7TQgrWwiVleLD`+Nn!hkRo&Zl44~qtW;saM_7=BA+({ zdT~h733=M|thGKsL>$5E)RqXwvf7Hu;mofBz|C_g!M&QD!FqKF8p>I1B`3_q(5mVjX_D{^w@fRhSAVf3MOweD^Z zRn=`AZN8TZS)i&!QA8Zar5_?f7=}AXaskE|X0utTxqb7#`T-h{nt{-T@mc@?002ov JPDHLkV1g;Ppr!x- diff --git a/assets/hbm/textures/blocks/machine_transformer_top.png b/assets/hbm/textures/blocks/machine_transformer_top.png index 4580a6682123dd23910b07efd132e18ae388f5c4..3c7cf211dee58b2f5d15591fcdeed05ab0f4fb26 100644 GIT binary patch delta 577 zcmV-H0>1s;0?!1H8Gix*005AYXf^-<00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000SaNLh0L01m?d01m?e$8V@)0000ObVXQnQ*UN;cVTj60B~VxZgehgWpp4kE-@}P z{Z0w!0005NNklF)_0 zO|;kRU0l=@fPV_`k)7vx5O_i0dYSD-(Hj9s>6Sy$v?BN!5G zGz?wWN>5LZwEG26+!$!jvmB=(fPJ5}nyvs;Ahz9ZH=E6Ry`IfxU~Kyz53PO!n1Kg@ z_t)QlU+yQ92>>X5dH~R{YN^vHc7VoewfggHzO@bpgMWc-U(wQXx!ilAh;_MVXIhCH zNrm}*4%28f>i7H10L5al7>~!p;SdkmQ52{xrD*aBIxOXF+}7bNfN1+vMiOB z@Uqa|e&h}osZj8Q9=X15D*#Xca!ZMkN**ib$)H?QqPMq+0>p6(fZS4;0LFjZB}^E_jW;Tt6Y zx7+P2^Yi)q1%%6gl4Mzih%5krx~>7}`<|}rHikUUX_^**h|qQ2X7c@hkLRK&4k0HX_5m1%VUxyt&*Smfm{fJy z!Me|pthHEcBM{j9sofGo3g;ZoxsTugIjtY_JjZ(wykM1&+cY`9Tk gjM+{9Yx28(00A$W60IwfDgXcg07*qoM6N<$f{lQgL;wH) diff --git a/assets/hbm/textures/blocks/machine_transformer_top_iron.png b/assets/hbm/textures/blocks/machine_transformer_top_iron.png index 450ef9b0846554f263383cf562014c5eda75003c..befcb12ae07bb9c977262d8153e1c19a201744bc 100644 GIT binary patch delta 543 zcmV+)0^t4E0<8p)8Gix*005AYXf^-<00d`2O+f$vv5yPL_t(I zPhFC`Zo*IuhVw9eldgS%4s6}}6rI>QBN2fBWg$o`g@pSxf`1@{xTqi!C1R=~l7Wf2 z->GSe>cKh3{(t*FcCDHF2fSo0%gX2TS`8qR%$tLJ%?){-QF zK!^Q)|M~j(@$`VuUayA?N~RH{vK;m3AP68(fU!`iQh%us7AOD!002ovPDHLkV1j54?{feE delta 327 zcmV-N0l5CH1lIzP8Gi-<001BJ|6u?C00eVFNmK|32nc)#WQYI&0S-w-K~y-6ol(Jx zg)j`9%A!&QK@{;5{c3N5h+b?P;=#9vrLkRoEc> zekU--2)HcEo9y4Jj^nrphzQQPX!1PIl6PGvBuXjiCji8c_ZO;h&S72GXfiWjI|%(e zh1MEcYas*>DYz}st0;;BMNzyZ_UDd{-nOksv(}0oUoXpYyUwEm=Nz=w0`xs!Gc$+? z%zP0X$043WKtQN2R1_)jpQmYx9+_G4aETECGb76~R8Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0gFjQK~y+TU6M01e*(mE_3nm(j11C-BIroKC0B zW)sKpa5$81G#VCloleJfT{O~ew_86V7pYUdUXQq8Ak^>o9mknYr|b24Hk&OL3tFyL zD;Utq`o7<6Hm%3w!3W>A?IcM^qk|v_!w>_c=XuI5m&-o}qNCA>-ss6>LLF?X##MH= z+cB_JRTcB$D+hyYNfbrEq>G}U(g0wnOVQX+34je1F5~5S{syoE4G_{`#30OgJf6?z zRO4PQ7g}3oSpuMx-vWjN%TdG_1i^>_W{zW)zTIvB2$3EP2DGnv2x@x$H!2N)RWuT5 z`iX~0)E*56&h2*l9_f5OYa~duhU#FzKnQY8B+D`bNYfO6Zb=RX`cVyDr+`6OW-)i* z8~}7n21UTsB+|D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0vSm}K~!i%?N&=p!!Q&KqAXZ)px&p)=plLv z)E`vpCu-HAZpxA+JC-cDfq7%Sk)EOy9AZ_kC?k!MIwOzY$99XR`0DjS9Y2dA@ofbT&R~x^;;$LK;zwuR{P4#Ny7Yt}Nn}x|_5~kB>n9t|&H=g71IF6y3&^6Vo zjbAVzEc$Rbg!OtImdj=2YPAZZ(I^InmbM8<)vJwPFd$SD0hMJLw%ctCXgC~(!C(-p zTTMW!UTyrsRut7_MH$p)vxybO;bs$mkg8W3zhFREG=kXg_hGl&h2!xUtBaseQJm~H z0jYYm@e2lo!;5>El|_IEtgZu6^=ji6HX!a{v@xrR=VGy_O+boXZTy0*imG8>^BTh; zhj$R)sB5ZM8^1uM@TUd$HcoE*CJ}^vM?iRQqE{Qg;2)M$Hr1=m&YQk<0yrTuix&Io%AwYizI6g{=v*_iB!KP2 zy=Q6nCQUu*vn7CLY%kkpH0`cqL8T{swgg~e96T_y#28KO0=?+7CZK9Yo?Bp@7QCds zbposzTCDEcVH?uelfHEVaOhk!TPL83e!qVsyc70>_reF^t$yy%p~HVdQG5e`=@fPh SQEcr10000T<{#= zPaJ@r9*w^g5ReC;CoDd`fbj0X#IG{@8iFMJ^#^*g90Gz6}z^WuL%JX zBtE|LCVrLK*Cc3y1SC2h==fFU_l&|crB_xzE+Aj<#wWOt3C<^X)^v3BJzvRKH-9z# zb?p3(m$+pg^W;u3N3NHQbyGrtZ{p8WerG5UNNZu5mfBdXpGS-cxnb>3Qd)(Kv zLFOIbN9G`7?&q3NGS-cxTxS$YA9%dG0^Qf>9Ohlj_xpPK&evEn){TT3ySXFd?tAkS z$H$DZ-`Aa!F;FtrEt4lG)Wy&E*D%$Y0JmhUTV79jC3V-(1izjpIG@~E)6v!Ud?jPu zvaxKYYhZ#me>TDSa_GS*EA1$|Q_C)WAN zqmfJd*pqR`rTy+_{gSb6B+bMgbKm2>o((eZ_&zcR8FN3^gp#ptB<0Uaq4a^rnd3V* z^Z2}r`F>wd-}xF##=4PEV>fqX+`_WQbXNiqgX#=2$l1ckcz8UGrlIuqcQ zjCITFDX*mN8k*qO(*);}J8L?+`kt?3-0g06yW4^t$2T{b*cYn+P8|RM002ovPDHLk FV1n;-Y+nEX diff --git a/assets/hbm/textures/models/ModelYellowBarrel.png b/assets/hbm/textures/models/ModelYellowBarrel.png index fac80fa5fe119a9033690b3855a9c1203d662304..0715c0a79f53556f2a16304a979bf4cb2975370a 100644 GIT binary patch delta 1060 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 getOffers(ItemStack stack) { diff --git a/com/hbm/inventory/gui/GUIScreenBobmazon.java b/com/hbm/inventory/gui/GUIScreenBobmazon.java index 2257c9f08..c16e42bac 100644 --- a/com/hbm/inventory/gui/GUIScreenBobmazon.java +++ b/com/hbm/inventory/gui/GUIScreenBobmazon.java @@ -16,6 +16,7 @@ import com.hbm.items.tool.ItemChemistryTemplate; import com.hbm.items.tool.ItemFluidIdentifier; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.packet.ItemBobmazonPacket; import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; @@ -196,8 +197,7 @@ public class GUIScreenBobmazon extends GuiScreen { public void executeAction() { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); if(type == 0) { - //TODO: request purchase - //PacketDispatcher.wrapper.sendToServer(new ItemFolderPacket(stack.copy())); + PacketDispatcher.wrapper.sendToServer(new ItemBobmazonPacket(offer)); } else if(type == 1) { if(currentPage > 0) currentPage--; @@ -217,12 +217,12 @@ public class GUIScreenBobmazon extends GuiScreen { public static class Offer { - ItemStack offer; - Requirement requirement; - int cost; - int rating; - String comment; - String author; + public ItemStack offer; + public Requirement requirement; + public int cost; + public int rating; + public String comment; + public String author; public Offer(ItemStack offer, Requirement requirement, int cost, int rating, String comment, String author) { this.offer = offer; @@ -307,7 +307,7 @@ public class GUIScreenBobmazon extends GuiScreen { return player.func_147099_x().hasAchievementUnlocked(achievement); } - Achievement achievement; + public Achievement achievement; } } diff --git a/com/hbm/lib/ModDamageSource.java b/com/hbm/lib/ModDamageSource.java index 0f55e6244..c8e59da58 100644 --- a/com/hbm/lib/ModDamageSource.java +++ b/com/hbm/lib/ModDamageSource.java @@ -33,6 +33,7 @@ public class ModDamageSource extends DamageSource { public static DamageSource turbofan = (new DamageSource("blender")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource meteorite = (new DamageSource("meteorite")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource boxcar = (new DamageSource("boxcar")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource boat = (new DamageSource("boat")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource taint = (new DamageSource("taint")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource ams = (new DamageSource("ams")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource amsCore = (new DamageSource("amsCore")).setDamageIsAbsolute().setDamageBypassesArmor(); diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index adf96ed11..913426f32 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3106)"; + public static final String VERSION = "1.0.27 BETA (3111)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 847a87556..54f7e46c0 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -360,6 +360,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityBobmazon.class, new RenderMinerRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 394926de9..f7374fba4 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -1556,6 +1556,11 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.redstone_depleted, 1), new Object[] { new ItemStack(ModItems.battery_su, 1, OreDictionary.WILDCARD_VALUE) }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.redstone_depleted, 2), new Object[] { new ItemStack(ModItems.battery_su_l, 1, OreDictionary.WILDCARD_VALUE) }); GameRegistry.addShapelessRecipe(new ItemStack(Items.redstone, 1), new Object[] { ModItems.redstone_depleted, ModItems.redstone_depleted }); + + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_machines), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 1) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_weapons), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 8) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 2) }); } public static void AddSmeltingRec() diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index ff0c7b7d7..1d8d9d245 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -664,6 +664,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityMissileEMPStrong.class, "entity_missile_emp_strong", 135, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityEMP.class, "entity_emp_logic", 136, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityWaterSplash.class, "entity_water_splash", 137, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityBobmazon.class, "entity_bobmazon_delivery", 138, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); diff --git a/com/hbm/main/ModEventHandler.java b/com/hbm/main/ModEventHandler.java index 813d00f70..5db0647e3 100644 --- a/com/hbm/main/ModEventHandler.java +++ b/com/hbm/main/ModEventHandler.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.entity.mob.EntityNuclearCreeper; import com.hbm.entity.projectile.EntityBurningFOEQ; @@ -461,6 +462,21 @@ public class ModEventHandler if(item == ModItems.gun_revolver_pip) { e.player.addStat(MainRegistry.achC44, 1); } + if(item == Item.getItemFromBlock(ModBlocks.machine_difurnace_off)) { + e.player.addStat(MainRegistry.bobMetalworks, 1); + } + if(item == Item.getItemFromBlock(ModBlocks.machine_assembler)) { + e.player.addStat(MainRegistry.bobAssembly, 1); + } + if(item == Item.getItemFromBlock(ModBlocks.brick_concrete)) { + e.player.addStat(MainRegistry.bobChemistry, 1); + } + if(item == Item.getItemFromBlock(ModBlocks.machine_boiler_electric_off)) { + e.player.addStat(MainRegistry.bobOil, 1); + } + if(item == ModItems.ingot_uranium_fuel) { + e.player.addStat(MainRegistry.bobNuclear, 1); + } } /*@SubscribeEvent diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 4da3c1a97..27aa75b08 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -354,6 +354,7 @@ public class ResourceManager { public static final ResourceLocation missileCarrier_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileCarrier.png"); public static final ResourceLocation missileBooster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileBooster.png"); public static final ResourceLocation minerRocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/minerRocket.png"); + public static final ResourceLocation bobmazon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bobmazon.png"); public static final ResourceLocation missileMicroBHole_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileMicroBHole.png"); public static final ResourceLocation missileMicroSchrab_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileMicroSchrab.png"); public static final ResourceLocation missileMicroEMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileMicroEMP.png"); diff --git a/com/hbm/packet/ItemBobmazonPacket.java b/com/hbm/packet/ItemBobmazonPacket.java new file mode 100644 index 000000000..0867948a2 --- /dev/null +++ b/com/hbm/packet/ItemBobmazonPacket.java @@ -0,0 +1,194 @@ +package com.hbm.packet; + +import java.util.List; +import java.util.Random; + +import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.inventory.gui.GUIScreenBobmazon.Offer; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemAssemblyTemplate; +import com.hbm.items.tool.ItemCassette; +import com.hbm.items.tool.ItemChemistryTemplate; +import com.hbm.items.tool.ItemFluidIdentifier; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineAssembler; + +import cpw.mods.fml.common.network.ByteBufUtils; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; + +public class ItemBobmazonPacket implements IMessage { + + int item; + int stacksize; + int meta; + int cost; + int achievement; + + public ItemBobmazonPacket() + { + + } + + public ItemBobmazonPacket(Offer offer) + { + this.item = Item.getIdFromItem(offer.offer.getItem()); + this.stacksize = offer.offer.stackSize; + this.meta = offer.offer.getItemDamage(); + this.cost = offer.cost; + + if(offer.requirement.achievement == MainRegistry.bobMetalworks) + this.achievement = 0; + if(offer.requirement.achievement == MainRegistry.bobAssembly) + this.achievement = 1; + if(offer.requirement.achievement == MainRegistry.bobChemistry) + this.achievement = 2; + if(offer.requirement.achievement == MainRegistry.bobOil) + this.achievement = 3; + if(offer.requirement.achievement == MainRegistry.bobNuclear) + this.achievement = 4; + } + + @Override + public void fromBytes(ByteBuf buf) { + item = buf.readInt(); + stacksize = buf.readInt(); + meta = buf.readInt(); + cost = buf.readInt(); + achievement = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(item); + buf.writeInt(stacksize); + buf.writeInt(meta); + buf.writeInt(cost); + buf.writeInt(achievement); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(ItemBobmazonPacket m, MessageContext ctx) { + + EntityPlayerMP p = ctx.getServerHandler().playerEntity; + World world = p.worldObj; + ItemStack stack = new ItemStack(Item.getItemById(m.item), m.stacksize, m.meta); + + Achievement req = null; + + if(m.achievement == 0) + req = MainRegistry.bobMetalworks; + if(m.achievement == 1) + req = MainRegistry.bobAssembly; + if(m.achievement == 2) + req = MainRegistry.bobChemistry; + if(m.achievement == 3) + req = MainRegistry.bobOil; + if(m.achievement == 4) + req = MainRegistry.bobNuclear; + + if(req != null && p.func_147099_x().hasAchievementUnlocked(req)) { + + if(countCaps(p) >= m.cost) { + + payCaps(p, m.cost); + + Random rand = world.rand; + EntityBobmazon bob = new EntityBobmazon(world); + bob.posX = p.posX + rand.nextGaussian() * 10; + bob.posY = 300; + bob.posZ = p.posZ + rand.nextGaussian() * 10; + bob.payload = stack; + + world.spawnEntityInWorld(bob); + } else { + p.addChatMessage(new ChatComponentText("[BOBMAZON] Not enough caps!")); + } + + } else { + p.addChatMessage(new ChatComponentText("[BOBMAZON] Requirements not met!")); + } + + return null; + } + + private int countCaps(EntityPlayer player) { + + int count = 0; + + for(int i = 0; i < player.inventory.getSizeInventory(); i++) { + + ItemStack stack = player.inventory.getStackInSlot(i); + + if(stack != null) { + + Item item = stack.getItem(); + + if(item == ModItems.cap_fritz || + item == ModItems.cap_korl || + item == ModItems.cap_nuka || + item == ModItems.cap_quantum || + item == ModItems.cap_rad || + item == ModItems.cap_sparkle || + item == ModItems.cap_star || + item == ModItems.cap_sunset) + count += stack.stackSize; + + } + } + + return count; + } + + private void payCaps(EntityPlayer player, int price) { + + if(price == 0) + return; + + int count = 0; + + for(int i = 0; i < player.inventory.getSizeInventory(); i++) { + + ItemStack stack = player.inventory.getStackInSlot(i); + + if(stack != null) { + + Item item = stack.getItem(); + + if(item == ModItems.cap_fritz || + item == ModItems.cap_korl || + item == ModItems.cap_nuka || + item == ModItems.cap_quantum || + item == ModItems.cap_rad || + item == ModItems.cap_sparkle || + item == ModItems.cap_star || + item == ModItems.cap_sunset) { + + for(int j = 0; j < stack.stackSize; j++) { + + player.inventory.decrStackSize(i, 1); + count++; + + if(count == price) + return; + } + } + } + } + } + } +} diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 08ec6e015..04ec2329e 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -83,6 +83,8 @@ public class PacketDispatcher { wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); //Packet to send block break particles wrapper.registerMessage(AuxParticlePacket.Handler.class, AuxParticlePacket.class, i++, Side.CLIENT); + //Signals server to buy offer from bobmazon + wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); } } diff --git a/com/hbm/render/entity/RenderMinerRocket.java b/com/hbm/render/entity/RenderMinerRocket.java index dfae5a323..5d64028f7 100644 --- a/com/hbm/render/entity/RenderMinerRocket.java +++ b/com/hbm/render/entity/RenderMinerRocket.java @@ -2,6 +2,7 @@ package com.hbm.render.entity; import org.lwjgl.opengl.GL11; +import com.hbm.entity.missile.EntityMinerRocket; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -19,7 +20,14 @@ public class RenderMinerRocket extends Render { //GL11.glRotated(180, 0, 0, 1); GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.minerRocket_tex); + if(p_76986_1_ instanceof EntityMinerRocket) { + bindTexture(ResourceManager.minerRocket_tex); + } else { + bindTexture(ResourceManager.bobmazon_tex); + GL11.glRotatef(180, 1, 0, 0); + //GL11.glTranslatef(0, 2, 0); + } + ResourceManager.minerRocket.renderAll(); GL11.glEnable(GL11.GL_CULL_FACE);