From 3b7ccd0a5048ddf8d00afa80b807fab0004fcb41 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Wed, 16 Jan 2019 01:18:16 +0100 Subject: [PATCH] fixed turrets not saving players, more bulletbase work, wild P, bullets --- assets/hbm/lang/de_DE.lang | 14 + assets/hbm/lang/en_US.lang | 14 + assets/hbm/textures/gui/potions.png | Bin 2243 -> 2767 bytes assets/hbm/textures/items/ammo_44_bj.png | Bin 0 -> 232 bytes assets/hbm/textures/items/ammo_rocket.png | Bin 0 -> 327 bytes assets/hbm/textures/items/ammo_rocket_emp.png | Bin 0 -> 265 bytes .../hbm/textures/items/ammo_rocket_glare.png | Bin 0 -> 328 bytes assets/hbm/textures/items/ammo_rocket_he.png | Bin 0 -> 275 bytes .../textures/items/ammo_rocket_incendiary.png | Bin 0 -> 292 bytes .../textures/items/ammo_rocket_shrapnel.png | Bin 0 -> 283 bytes assets/hbm/textures/items/gun_folly.png | Bin 0 -> 244 bytes assets/hbm/textures/items/wild_p.png | Bin 0 -> 230 bytes .../hbm/textures/models/sat_foeq_burning.png | Bin 29544 -> 22360 bytes .../entity/projectile/EntityBulletBase.java | 77 ++++- com/hbm/handler/BulletConfigFactory.java | 34 +++ com/hbm/handler/GUIHandler.java | 4 +- com/hbm/handler/GunConfigFactory.java | 23 +- com/hbm/inventory/MachineRecipes.java | 4 +- .../inventory/container/ContainerLeadBox.java | 47 ++- com/hbm/inventory/gui/GUILeadBox.java | 42 ++- com/hbm/items/ModItems.java | 73 ++++- com/hbm/items/special/ItemCustomLore.java | 3 +- com/hbm/items/special/ItemRadioactive.java | 2 +- com/hbm/items/tool/ItemLeadBox.java | 3 +- com/hbm/items/weapon/GunFolly.java | 58 +++- com/hbm/items/weapon/GunSMG.java | 9 +- com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 2 + com/hbm/render/entity/RenderBullet.java | 268 ++++++++++++++++++ com/hbm/render/entity/RenderRocket.java | 12 +- com/hbm/render/item/ItemRenderOverkill.java | 3 + .../tileentity/bomb/TileEntityTurretBase.java | 2 +- 32 files changed, 625 insertions(+), 70 deletions(-) create mode 100644 assets/hbm/textures/items/ammo_44_bj.png create mode 100644 assets/hbm/textures/items/ammo_rocket.png create mode 100644 assets/hbm/textures/items/ammo_rocket_emp.png create mode 100644 assets/hbm/textures/items/ammo_rocket_glare.png create mode 100644 assets/hbm/textures/items/ammo_rocket_he.png create mode 100644 assets/hbm/textures/items/ammo_rocket_incendiary.png create mode 100644 assets/hbm/textures/items/ammo_rocket_shrapnel.png create mode 100644 assets/hbm/textures/items/gun_folly.png create mode 100644 assets/hbm/textures/items/wild_p.png create mode 100644 com/hbm/handler/BulletConfigFactory.java create mode 100644 com/hbm/render/entity/RenderBullet.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index ffa0dd054..58045e8ec 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -1087,6 +1087,7 @@ item.flame_opinion.name=Eigene Meinung item.pellet_cluster.name=Explosive Pellets item.pellet_buckshot.name=Schrotkugeln +item.pellet_flechette.name=Flechets item.powder_fire.name=Flammenpulver item.powder_ice.name=Kryopulver item.powder_poison.name=Giftpulver @@ -1310,6 +1311,7 @@ item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia item.gun_defabricator.name=Defabrikator item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe +item.gun_folly.name=Prototyp Digamma "Irrsinn" item.gun_revolver_iron_ammo.name=Patrone item.gun_revolver_ammo.name=Bleipatrone @@ -1370,6 +1372,18 @@ item.ammo_folly_du.name=Silbernes Geschoss (DU, Nicht-Explosiv) item.ammo_44.name=.44 Magnum Patrone item.ammo_44_ap.name=.44 Magnum Patrone (Panzerbrechend) item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon) +item.ammo_44_bj.name=.44 Magnum Patrone (Boot) +item.ammo_rocket.name=84mm Rakete +item.ammo_rocket_he.name=84mm Rakete (HE) +item.ammo_rocket_incendiary.name=84mm Rakete (Brand) +item.ammo_rocket_shrapnel.name=84mm Rakete (Schrapnell) +item.ammo_rocket_emp.name=84mm Rakete (Impuls) +item.ammo_rocket_glare.name=84mm Rakete (Roter Schein) + +item.folly_shell.name=Silberne Kanonenhülse +item.folly_bullet.name=12,8cm Sternenmetall-Hochenergiegeschoss +item.folly_bullet_nuclear.name=12,8cm Atomares Geschoss +item.folly_bullet_du.name=12,8cm DU-Geschoss item.cordite.name=Kordit diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index b086ab976..579ac3df3 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -1087,6 +1087,7 @@ item.flame_opinion.name=Own Opinion item.pellet_cluster.name=Explosive Pellets item.pellet_buckshot.name=Lead Pellets +item.pellet_flechette.name=Flechettes item.powder_fire.name=Flame Powder item.powder_ice.name=Cryo Powder item.powder_poison.name=Poison Powder @@ -1310,6 +1311,7 @@ item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia item.gun_defabricator.name=Defabricator item.gun_dampfmaschine.name=Totally Not a Joke Weapon +item.gun_folly.name=Prototype Digamma "Folly" item.gun_revolver_iron_ammo.name=Bullet item.gun_revolver_ammo.name=Lead Bullet @@ -1370,6 +1372,18 @@ item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive) item.ammo_44.name=.44 Magnum Bullet item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing) item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) +item.ammo_44_bj.name=.44 Magnum Bullet (Boat) +item.ammo_rocket.name=84mm Rocket +item.ammo_rocket_he.name=84mm Rocket (HE) +item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) +item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) +item.ammo_rocket_emp.name=84mm Rocket (Pulse) +item.ammo_rocket_glare.name=84mm Rocket (Red Glare) + +item.folly_shell.name=Silver Bullet Casing +item.folly_bullet.name=12.8cm Starmetal High-Energy Shell +item.folly_bullet_nuclear.name=12.8cm Nuclear Shell +item.folly_bullet_du.name=12.8cm DU-Shell item.cordite.name=Cordite diff --git a/assets/hbm/textures/gui/potions.png b/assets/hbm/textures/gui/potions.png index 36b990af867dee91406666bc77890e07c2812df3..48b24b81a5991b4f96a3e72a15ca0542aee6fd7e 100644 GIT binary patch delta 2454 zcmV;H32FAj5ziHnGk*$(Nkl zgh-emVGziO@Os#NJ0$R3Mzncoj3b+L|5bo+oh40 zwWuq~I+Cw178VwaDxBbd_Bg`d9p1OBMM)~# zSC334WAgcY-JiDw{n&{w%0B!0_Lp@3;p0e{BRQc;Kz#?VRLviMVIfip)Z5LDvvO&d zv#Z%eTAWS`l0gHuNKXs@npSl{$Fx-`vtLJIKVbKTERZKsfPM1{zK&!l9-&~QeHLYq!S7i&tbt*MC+$ zuCQY#zHmOgaNDt!z`2uq&Fj4{Y5UK9qSF^{JK^qsSf8yReP8<6E#F^5{s65|)}<~j z{Ne3oEoxN9B}qA5jvE7rZT;t`wnet%PVj|=h2VHf3;(NnBk>13(4ENsq~nq#V+!Tp zamveOCX)$&-q&+EFg!dQq&GCv*dZwySX4dDStdA&kg{M zc%jnHWi4t=t6I})q@^$2uEZApzJ1>ZCw6ItkYr7(!TSfgqX)VZ8_$L(99PxCFG;p1 zP*33>8X7VK0|Ocu7|@2lEZw}pR3S7S%r3)5P)wO(bd z+>-@=6{iJ*o`>z)uW40_x*HVs@U|6xA3mg-4kjAEY9(-e=T38T&mN^xDNRgFsJFLQ zsZ>gmH1XLt&fCBKrFs9ox6FqnmjX%o)0a*cE(bybgK_zj?XUCK097Pj0@$wqZjI`I zjzwDjTD$*N_++l7dwWG$C#TDiu#|eWsJoGWu+r_%buMu_uv+V1tKs2c^V-WV2ZjH_ z`npo7l&)R77U@CU`|ih@)105$R&`(yXooGO0k-wEEo|K1M$~&s+uMu86{66$*d71+ilM;o)KP(fWGDmOqIvIoW=xYW~Fa z1fEPQ+s_ODS}$@Zpj4RlThpp?x*QpVv)%qNd3sfEXsc2+-8P(bA3&`=f?~lo2XriU zf2Eec)sFx0gY?QP>h0~-=*)~xfBLC^vJKop7#5p9p)mo;lg7#`4WJbwmjJf#+v&8p zTW{@Hz;2By+&WuMzZ^3+ZIbSBFO$&vhb2`4H5UHh=DQl=B^nwUGOw+#>)XeV^_$zb zbv~bWhAVv_hA%nlm&wjeCq4rZxIY-V9Ps7S`lG$Zb>944OQzBtb+yEi3Qqxls&Hda z>`SWuslYL1&1v1N>HFgjsluzO|GxRAxxRB}OP*Tup8oc#`D0Xk6`vw(#glWl{2tS3 z=`@=L8WZUOoYhfhS&J3_F_yJhQ_E{x_2Pa0u~D2lr?qTPAoRW-Hol1ot7_=$uUpmv z+n#`@!oxmsJSn*DHC|&DiWb&ROQ-%%qa`+CWf<3WP59MlI;}dM%}mE$%S%sJ1uD&- zq}6~r`FAy&PP1vCF=aObwURCDD=RCp;kjI{tGa#R6@jw8uW8qnRGvS7Hr&hQSOWlU z)wYw%bzM_>VwdXa>FLf&K$1L9J0>S9#_j3p(O@pe4M1p{ijM;~%5`1ym z>Du<=GMP-qWHOmT_>vdh4#m@R-on|@{?gwazSFN-{?H3RtF?X>VA)spOf)Fy(n=Z` zkS1?tV&ip%lHa`}lhJHGAKddlGLY}?{K1B5c?GcJP^NmM*m%i*1BTC&*!)@Yq@Vhd z?`TtVI6?vcg zxo$fPP$_?A?f+8{x=$dV&$A>r+M=y@0$Q_E(H3pTzREYibem}Yj0Behvo+i-1autN zbz?`f<7NlcWh2{vb~d0|{)A@-82!hy$e1Osa5Bf7;N39wm!w#rtL9JXVjw`vwRvTj z!u<7k^ku{ANT*fD(=q9IPxBx#e>_DifoI`&HJVPdX`nIf9s_VB$v<0G*t>o(E4&VX ze>S?$3&rtOc!0?9eTRaAR@)*y?FBTmqDz%@DyCaUI;}c?o{mVzj_Oxi5ahPsqg$ak zo&LKTO$QrqOQ)?2(~ap=o8Eg?e^))}up-bV>9mz$NT)l~X*LZshNl4m0000000000 z00000000000Dxyjr>zV_I^CI0vuU6)JPinRv5i_0h;&G&YB~S_00000XpjE`_IGR; U5JK${0000907*qoM6N<$f{FIw%m4rY delta 2023 zcmYjSX;jjQ7B{QW*DI}Y=2_(ODjRFuGE>u18%qr{8A~xW(M-jK z2sI{_2pFzNN;6vK2Brg~1~dus3=so^hq63oK6TH%AMQE#+~3_V^V{J)l`epBKKR@Z zp*Jy-caWbkLQA7H>Bx_34@WMW=O6v*S!m_O>#bZ1%-0nE{3|66uK&K7%tAbBTaQmj zY|MYc`{}zk`AO%Dd$=EK1Dm>MdW?2yC)k%AQ_k$ze;ToS>(NVCs~rB=7s$bgW=zSSOOthY}U_C#1{M-%9QFpUFSUZ0)dwcxgeQN zmY5n)ut3{y9^lEhG##AdDc6Zr5@FN<#!Iu@7^U>36ES}f=4s8@C`7l8NQ1OCszoHO z|Dy;BDpNRvz{xhPeW-S!Mj^E~5ce!Ta-V?S?|QShgQ;Mc&w9Ynf+WDoGO~;_5M8rk z?gU$*6{e-FHil`61~sNdvMV>1sJ7$&0fwXHD-K}Up8+_*7@VIn`aKv-sF_KsP9)TD zK7O{bTWE{q)i>D<`)}Tqm$p!APN#9_6#09h_&*px_5tbPCIe&0{ z=$Rc$rjHwHXUGEbvaD#C+_-5O7hp5=|wW>t+G4{IeE_-HPh2k z`$zl1X~YRiYECcmT{{X!;Dmou9CB|CwTSDdP&jy#sr8)kZSS>K_C#`>7_>8>_>E!(L# z17Ny~(B5(`PoVQ3YTD|7S+;O8nzi4QpAY*c!x1SsVKgeb3#mO8 zudFfg(xynB!ujoCe(&Et7!;N_yDzcH+)7&G6*-yk z0#r6kgLjMw#$E~xjGzv58HXM!>1o7Z>~-G21?@Wd26d6WUtY&?6gIgBA191=x1SpNqm5kSz9L?8|77h9dWWm6%sGcz-5sIPyG^(x2^ne$asT_9tjjhGQ$%h~{>>a#)gm)}eQ%aG)Th;CxejN*wjb`Wz{| z=B*y+6+r3IJO}Nu7idUAmK;Vn3?z7s`M9~&HZ(M>yra5U1L}01ZoF5m{u5bO+;R&G zC`q3_VVZG}$O}ikU7hJmisG`5-y7J@c5u`>NF~iu%K;{lMFteC4Wa1M3z2H>^!Vo{&4Q;p?FLLbq-7 zGVl1ySkQKeQKHMKZd7d7PK;sbS)EjHW_98b2}|d%0rk;J240n=td6a(N@g#~d^wb7 zE0exFX(W4dgY4nfd5p;3B(ns9c&Y^7G(VY356<*l{qo#wBzeZR>UdcouSL+j5lYpy>S7u z@L;dCGc=J;2$_6d+YrtpPCb{UaejybOR!Yx&Qx6V;)G=O^0p6ZpncebYul@-}tN@ zG{Mg~8V+ucy~3m;W_P?;=F%o^xbrbF{GtK|fbpoZMfM-4l0J92Bn!uV)xq|jYGIj_ zorrQ6^aRIP{`tE!mGDg)2b85?#I_iZtJ(@mYEh5f)AD*Zvx8D655a!an zNcfH&*}JUI9Qj}Dh_&h>>ey7ymc0j5G)BUU>tO(0Oxk5z)aF0>$*2c%$nO4&M0LjM z6uX?l`hYm`m3TIL*Tcq4(}io!|4iMN6P^N|@f13xg7ZA^QFPz3}QPa4sdS=VXg?3ja1G_wF9iM(N*AW!ie{7K1M+>NS++ zQhJgD$CSN_MX5o%N!J&u^xZ9c_r}j6-3@e)$yY=ZbKrZ^Nz9Y0##v>Eo>Rj=XQE!s zCGBL7x_;rwz~FzsehF0(v-S7vNz3Aqx#Q`7ne}^WP36hXC7A3u%wIa#FZdkEH@4*e D%0)@v diff --git a/assets/hbm/textures/items/ammo_44_bj.png b/assets/hbm/textures/items/ammo_44_bj.png new file mode 100644 index 0000000000000000000000000000000000000000..75b7b8f8c54c40027c9812f4a566b9c035dd9df4 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfSn>TU}EH#Ld5MH}t&ENn13L-8^?6SO0*O+wMkLLL7c{|r~=jVp{ z>DHQ0n;1?pM|d8q%X+rP)LgV%Krp~xfI;qrqRRpHAoq(goY^OLM0rnN7PG}|t8Qv& zEjz=FUgg{WJZ*TAdMys!6~4=Du_N_4zn{XZzwCPEY2T!es(y<+X6SiCqB&RU)FKY= cFUETr@}H}1&30>x0Xmhz)78&qol`;+0PsvxxBvhE literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_rocket.png b/assets/hbm/textures/items/ammo_rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..21192e91d268a9af5290dd79e1cd959b8112f980 GIT binary patch literal 327 zcmV-N0l5B&P)y>^1j(H3qz!obn={!JQo)YT%Ol!0KQtSgUKumZ#MuKMv+|x0nWtzepiN3WL-Ot Zl^+JXUeZ%7&_DnH002ovPDHLkV1g0jg4X~5 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_rocket_emp.png b/assets/hbm/textures/items/ammo_rocket_emp.png new file mode 100644 index 0000000000000000000000000000000000000000..2049797c5af5a05f79ca36d7a6615427cf281de5 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKaSXBO zJ$rF4=V1eZwuj;GdY=_MeIyo;CH^T(?r`iDN3jn~D`O*Gwy^IIY5OCg>eA@I7b5eh zddK7k^;&MOrPi#Wwx!d#8See=pJ+WnXi1B;jE81z&y3@4E+PxoWi#B`mMXzE`Q+0^ z_a&K9&nk~ad2>8eowWDGF2CuiJAFU#RcgM!zVVt+pS!^`&EV8c3_h1r7_OB*HR-#3 z_?zw0`#l{iIy4Md75nY|?$yJ3;^&&`BbMQ2N98oR-%ogdX#X1Rv*Piyb+))&0{Vr) M)78&qol`;+00$Lo7ytkO literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_rocket_glare.png b/assets/hbm/textures/items/ammo_rocket_glare.png new file mode 100644 index 0000000000000000000000000000000000000000..45f1c8d19f813722c5de57a34ecc8f16e9142c33 GIT binary patch literal 328 zcmV-O0k{5%P)?0&>VX2L!f6muv9WnyBz@DYUO0U zNF;Z-`IQoYk9ON!4Oj}nQV7Pi8c`Tt3^`J5)$0b}p-=!oOUYZWcd}0E(n88Yu+8Uj zmEyhA$%N#R2cM&n^BBkc?Dqg?>tvFXbzG%*>Gx9;N*NrQ0IW9~Dw7FO81mI@5)_L^ zHfQH;O}p>Y87i@f4?eSt&Od7 aU-<)*QdTPZsh6z)0000yUxSv5)n4z1Jl!=X=jo_)ehzA+Jqib8`N}4Ds~oeRIDu$UagKs%m&1Fd=G{ zgyV;U$~K3-KW;s6f6Dqm+wZcIXY;n7-fBO$SYDa`f!MFOH9Cqd{S#9xIy#t^WO6yo zdp;#~rq7dQjf#^}C39~l^(bP0l+XkKc6M{J literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_rocket_incendiary.png b/assets/hbm/textures/items/ammo_rocket_incendiary.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5c2a9b732572f4d247a58617b8fdb9732c2c8 GIT binary patch literal 292 zcmV+<0o(qGP)}Q54~v!x%%J=e>}-g)~jIEX#8zLy%tb z^*F{D)|%h^(CCgAfTAb@fU2rkjlb~T^BGulPUmrZ0d0ugNeAL)7swz0U>O!%Ll%eR qk*%w3f{KWWh_-Kk3G$NptvUkJoKp2OAZ+RY0000TS=MVp_O;iny0;h)I}buu(xRYr3U?>x2W> zN@`S9Y&=~r+w8A9_+Q0FYS}Y0yN>&_=Xx_-GO3lWWSGvSC%XCLoMoB!-1fY4ap7?g zU|~2?=rb*K-s0zMyF5f(uax!%b=jO}7kutCNyRO@*8Ze%O2D@Di>D~r=PdkEC42uO z>jDif{spjyItc%-eJ0ZFECxRIkT*%Hz5nC5`b&XG%n@dl}jCb$i e74J{2pQ(MeFVt*DZHEEScMP7celF{r5}E*V(`^a> literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_folly.png b/assets/hbm/textures/items/gun_folly.png new file mode 100644 index 0000000000000000000000000000000000000000..a62c97a96fd43ddc3bf93e0c4c7178d564f591e6 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfT;K!TC!sPKzS^fO&f7|O8P4=_i6mIoH{Pwm; z-*v1LQjQmfct$k{FnzBLR?d9%VDI+KSub|=70N_TTY8dJzNtf{TWEpCuN_lTYVR`} z@HmHES|)bAl(Ar5`nKsyA}29UiJSEIzWJo2%c`E6nmsreJ<5Yb*1W#8$NO8Y{?U0B q&wVCUzOUae`FzgV&oQMru5r_uBidYCwjKdGo59o7&t;ucLK6VYhh6Xh literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/wild_p.png b/assets/hbm/textures/items/wild_p.png new file mode 100644 index 0000000000000000000000000000000000000000..a714737514a0d2e69b773ae6c189f31ab384c36b GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf6ut{ zB8KNx{Xg!KU_HPj&{oK*a?W8->1(mW|Njfv8q890*vOsGFySo=Z$iou`Me6=im$Ik z53deipCQd=A$*BPoR5u-jgu`R>c@}A`p!qBgm^A&{G9khdm-=h)BARuIbP0l+XkK8BtSr literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/sat_foeq_burning.png b/assets/hbm/textures/models/sat_foeq_burning.png index ac39fd71150c2db0e4db5ee8b0d26d7112c0e3d3..65bb714f17626f69a7779a7813656f1cb6eff052 100644 GIT binary patch literal 22360 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%0A&2sc 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 literal 29544 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 diff --git a/com/hbm/entity/projectile/EntityBulletBase.java b/com/hbm/entity/projectile/EntityBulletBase.java index 1351bf6e7..69fa3342d 100644 --- a/com/hbm/entity/projectile/EntityBulletBase.java +++ b/com/hbm/entity/projectile/EntityBulletBase.java @@ -2,6 +2,8 @@ package com.hbm.entity.projectile; import com.hbm.handler.BulletConfiguration; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; @@ -14,12 +16,16 @@ public class EntityBulletBase extends Entity implements IProjectile { private BulletConfiguration config; private EntityLivingBase shooter; - private EntityBulletBase(World world) { super(world); } + public EntityBulletBase(World world) { + super(world); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + } - private EntityBulletBase(World world, BulletConfiguration config) { + public EntityBulletBase(World world, BulletConfiguration config) { super(world); this.config = config; - + this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); } @@ -38,7 +44,8 @@ public class EntityBulletBase extends Entity implements IProjectile { this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); - + + this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); this.dataWatcher.updateObject(16, (byte)config.style); @@ -70,7 +77,30 @@ public class EntityBulletBase extends Entity implements IProjectile { float f3 = MathHelper.sqrt_double(moX * moX + moZ * moZ); this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(moX, moZ) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(moY, f3) * 180.0D / Math.PI); - + } + + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float r0, float r1, int i) { + this.setPosition(x, y, z); + this.setRotation(r0, r1); + } + + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double x, double y, double z) { + this.motionX = x; + this.motionY = y; + this.motionZ = z; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { + float f = MathHelper.sqrt_double(x * x + z * z); + this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(x, z) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(y, f) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); + } } @Override @@ -86,11 +116,44 @@ public class EntityBulletBase extends Entity implements IProjectile { super.onUpdate(); - if(config == null) { - this.setDead(); + if(config == null) return; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { + float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } + + motionY -= config.gravity; + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + this.setPosition(this.posX, this.posY, this.posZ); + + float f2; + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) + { + ; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; } + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + + + //this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + //this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; } @Override diff --git a/com/hbm/handler/BulletConfigFactory.java b/com/hbm/handler/BulletConfigFactory.java new file mode 100644 index 000000000..952435f2d --- /dev/null +++ b/com/hbm/handler/BulletConfigFactory.java @@ -0,0 +1,34 @@ +package com.hbm.handler; + +import com.hbm.items.ModItems; + +public class BulletConfigFactory { + + public static BulletConfiguration getTestConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = ModItems.gun_revolver_lead_ammo; + bullet.spread = 0F; + bullet.dmgMin = 15; + bullet.dmgMax = 17; + bullet.gravity = 0D; + bullet.maxAge = 100; + bullet.doesRicochet = true; + bullet.ricochetAngle = 15; + bullet.doesPenetrate = true; + bullet.doesBreakGlass = true; + bullet.incendiary = 0; + bullet.emp = 0; + bullet.rainbow = 0; + bullet.nuke = 0; + bullet.boxcar = false; + bullet.destroysBlocks = false; + bullet.style = 0; + bullet.plink = 1; + + return bullet; + + } + +} diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index f673d912e..165b94396 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -720,7 +720,7 @@ public class GUIHandler implements IGuiHandler { switch(ID) { case ModItems.guiID_item_box: - return new ContainerLeadBox(); + return new ContainerLeadBox(player.inventory); } } @@ -1439,7 +1439,7 @@ public class GUIHandler implements IGuiHandler { case ModItems.guiID_item_sat_interface: return new GUIScreenSatInterface(player); case ModItems.guiID_item_box: - return new GUILeadBox(); + return new GUILeadBox(player.inventory); } } return null; diff --git a/com/hbm/handler/GunConfigFactory.java b/com/hbm/handler/GunConfigFactory.java index 0322a2a04..3f56fe67e 100644 --- a/com/hbm/handler/GunConfigFactory.java +++ b/com/hbm/handler/GunConfigFactory.java @@ -8,27 +8,6 @@ public class GunConfigFactory { public static GunConfiguration getRevolverConfig() { - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = ModItems.gun_revolver_lead_ammo; - bullet.spread = 0F; - bullet.dmgMin = 15; - bullet.dmgMax = 17; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 15; - bullet.doesPenetrate = true; - bullet.doesBreakGlass = true; - bullet.incendiary = 0; - bullet.emp = 0; - bullet.rainbow = 0; - bullet.nuke = 0; - bullet.boxcar = false; - bullet.destroysBlocks = false; - bullet.style = 0; - bullet.plink = 1; - GunConfiguration config = new GunConfiguration(); config.rateOfFire = 20; @@ -47,7 +26,7 @@ public class GunConfigFactory { config.allowsInfinity = true; config.config = new ArrayList(); - config.config.add(bullet); + config.config.add(BulletConfigFactory.getTestConfig()); return config; } diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 0391dfa43..028b2c2ff 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -138,8 +138,8 @@ public class MachineRecipes { ItemStack[] moxF = new ItemStack[] { new ItemStack(ModItems.nugget_pu239, 1), new ItemStack(ModItems.nugget_neptunium, 1), new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nuclear_waste_tiny, 2) }; - ItemStack[] schrabidiumF = new ItemStack[] { new ItemStack(ModItems.nugget_schrabidium_fuel, 1), - new ItemStack(ModItems.nugget_lead, 1), new ItemStack(ModItems.nugget_schrabidium, 1), + ItemStack[] schrabidiumF = new ItemStack[] { new ItemStack(ModItems.nugget_beryllium, 1), + new ItemStack(ModItems.nugget_lead, 1), new ItemStack(ModItems.nugget_solinium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 3) }; ItemStack[] thoriumF = new ItemStack[] { new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.nugget_th232, 1), new ItemStack(ModItems.nugget_u233, 3), diff --git a/com/hbm/inventory/container/ContainerLeadBox.java b/com/hbm/inventory/container/ContainerLeadBox.java index 238c972cc..859bb4f34 100644 --- a/com/hbm/inventory/container/ContainerLeadBox.java +++ b/com/hbm/inventory/container/ContainerLeadBox.java @@ -1,5 +1,50 @@ package com.hbm.inventory.container; -public class ContainerLeadBox { +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemLeadBox; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; + +public class ContainerLeadBox extends Container { + + public ContainerLeadBox(InventoryPlayer invPlayer) { + + /*IInventory inv = + + this.addSlotToContainer(new Slot(inv, 0, 71, 18)); + this.addSlotToContainer(new Slot(inv, 1, 71, 18)); + this.addSlotToContainer(new Slot(inv, 2, 71, 18)); + this.addSlotToContainer(new Slot(inv, 3, 71, 18)); + this.addSlotToContainer(new Slot(inv, 4, 71, 18)); + this.addSlotToContainer(new Slot(inv, 5, 71, 18)); + this.addSlotToContainer(new Slot(inv, 6, 71, 18)); + this.addSlotToContainer(new Slot(inv, 7, 71, 18)); + this.addSlotToContainer(new Slot(inv, 8, 71, 18)); + this.addSlotToContainer(new Slot(inv, 9, 71, 18)); + this.addSlotToContainer(new Slot(inv, 10, 71, 18)); + this.addSlotToContainer(new Slot(inv, 11, 71, 18)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); + }*/ + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) { + return true; + } } diff --git a/com/hbm/inventory/gui/GUILeadBox.java b/com/hbm/inventory/gui/GUILeadBox.java index df4114bb3..466e41a5c 100644 --- a/com/hbm/inventory/gui/GUILeadBox.java +++ b/com/hbm/inventory/gui/GUILeadBox.java @@ -1,5 +1,45 @@ package com.hbm.inventory.gui; -public class GUILeadBox { +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerLeadBox; +import com.hbm.inventory.container.ContainerWasteDrum; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemLeadBox; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityWasteDrum; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.ResourceLocation; + +public class GUILeadBox extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_containment.png"); + + public GUILeadBox(InventoryPlayer invPlayer) { + super(new ContainerLeadBox(invPlayer)); + + this.xSize = 176; + this.ySize = 186; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = "";//ItemLeadBox.getGuiName(); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } } diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index b138e1daa..77f693a86 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -714,6 +714,17 @@ public class ModItems { public static Item waste_schrabidium_hot; public static Item containment_box; + + public static Item recycled_ground; + public static Item recycled_rock; + public static Item recycled_metal; + public static Item recycled_refined; + public static Item recycled_organic; + public static Item recycled_crystal; + public static Item recycled_explosive; + public static Item recycled_electronic; + public static Item recycled_nuclear; + public static Item recycled_misc; public static Item rod_lithium; public static Item rod_dual_lithium; @@ -808,6 +819,7 @@ public class ModItems { public static Item ammo_44; public static Item ammo_44_ap; public static Item ammo_44_pip; + public static Item ammo_44_bj; public static Item ammo_5mm; public static Item ammo_5mm_explosive; public static Item ammo_9mm; @@ -820,6 +832,12 @@ public class ModItems { public static Item ammo_folly; public static Item ammo_folly_nuclear; public static Item ammo_folly_du; + public static Item ammo_rocket; + public static Item ammo_rocket_he; + public static Item ammo_rocket_incendiary; + public static Item ammo_rocket_shrapnel; + public static Item ammo_rocket_emp; + public static Item ammo_rocket_glare; public static Item gun_rpg; public static Item gun_rpg_ammo; @@ -2035,6 +2053,17 @@ public class ModItems { cap_star = new Item().setUnlocalizedName("cap_star").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_star"); ring_pull = new Item().setUnlocalizedName("ring_pull").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ring_pull"); + recycled_ground = new Item().setUnlocalizedName("recycled_ground").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_ground"); + recycled_rock = new Item().setUnlocalizedName("recycled_rock").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_rock"); + recycled_metal = new Item().setUnlocalizedName("recycled_metal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_metal"); + recycled_refined = new Item().setUnlocalizedName("recycled_refined").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_refined"); + recycled_organic = new Item().setUnlocalizedName("recycled_organic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_organic"); + recycled_crystal = new Item().setUnlocalizedName("recycled_crystal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_crystal"); + recycled_explosive = new Item().setUnlocalizedName("recycled_explosive").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_explosive"); + recycled_electronic = new Item().setUnlocalizedName("recycled_electronic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_electronic"); + recycled_nuclear = new Item().setUnlocalizedName("recycled_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_nuclear"); + recycled_misc = new Item().setUnlocalizedName("recycled_misc").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":recycled_misc"); + rod_empty = new Item().setUnlocalizedName("rod_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rod_empty"); rod_th232 = new ItemCustomLore().setUnlocalizedName("rod_th232").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_th232"); rod_uranium = new ItemCustomLore().setUnlocalizedName("rod_uranium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_uranium"); @@ -2230,11 +2259,18 @@ public class ModItems { ammo_44 = new Item().setUnlocalizedName("ammo_44").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44"); ammo_44_ap = new Item().setUnlocalizedName("ammo_44_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_ap"); ammo_44_pip = new Item().setUnlocalizedName("ammo_44_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_pip"); + ammo_44_bj = new Item().setUnlocalizedName("ammo_44_bj").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_bj"); ammo_22lr = new Item().setUnlocalizedName("ammo_22lr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_22lr"); ammo_22lr_ap = new Item().setUnlocalizedName("ammo_22lr_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_22lr_ap"); ammo_folly = new ItemCustomLore().setUnlocalizedName("ammo_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_folly"); ammo_folly_nuclear = new ItemCustomLore().setUnlocalizedName("ammo_folly_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_folly_nuclear"); ammo_folly_du = new ItemCustomLore().setUnlocalizedName("ammo_folly_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_folly_du"); + ammo_rocket = new Item().setUnlocalizedName("ammo_rocket").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket"); + ammo_rocket_he = new Item().setUnlocalizedName("ammo_rocket_he").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_he"); + ammo_rocket_incendiary = new Item().setUnlocalizedName("ammo_rocket_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_incendiary"); + ammo_rocket_shrapnel = new Item().setUnlocalizedName("ammo_rocket_shrapnel").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_shrapnel"); + ammo_rocket_emp = new Item().setUnlocalizedName("ammo_rocket_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_emp"); + ammo_rocket_glare = new Item().setUnlocalizedName("ammo_rocket_glare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_glare"); gun_rpg = new GunRpg().setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg_new"); gun_rpg_ammo = new Item().setUnlocalizedName("gun_rpg_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg_ammo_alt"); @@ -2259,16 +2295,16 @@ public class ModItems { gun_revolver_nightmare = new GunNightmare().setMaxDamage(6).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); gun_revolver_nightmare2_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare2_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2_ammo"); gun_revolver_nightmare2 = new GunNightmare().setMaxDamage(6).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - gun_revolver_pip_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_pip_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip_ammo"); + gun_revolver_pip_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_pip_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_revolver_pip_ammo"); gun_revolver_pip = new GunRevolver(gun_revolver_pip_ammo, 25, 35, false, false).setMaxDamage(1000).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); - gun_revolver_nopip_ammo = new Item().setUnlocalizedName("gun_revolver_nopip_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip_ammo"); + gun_revolver_nopip_ammo = new Item().setUnlocalizedName("gun_revolver_nopip_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_revolver_nopip_ammo"); gun_revolver_nopip = new GunRevolver(gun_revolver_nopip_ammo, 25, 35, false, false).setMaxDamage(1000).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); gun_revolver_blackjack = new GunRevolver(gun_revolver_nopip_ammo, 35, 45, false, false).setMaxDamage(1000).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); gun_revolver_red = new GunRevolver(gun_revolver_nopip_ammo, 100, 105, false, false).setMaxDamage(1000).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); - gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); + gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); gun_calamity = new GunCalamity().setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); gun_calamity_dual = new GunCalamity().setUnlocalizedName("gun_calamity_dual").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity_dual"); - gun_lacunae_ammo = new ItemCustomLore().setUnlocalizedName("gun_lacunae_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae_ammo"); + gun_lacunae_ammo = new ItemCustomLore().setUnlocalizedName("gun_lacunae_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_lacunae_ammo"); gun_minigun = new GunLacunae().setUnlocalizedName("gun_minigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_minigun"); gun_avenger = new GunLacunae().setUnlocalizedName("gun_avenger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_avenger"); gun_lacunae = new GunLacunae().setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); @@ -2280,20 +2316,20 @@ public class ModItems { gun_mirv = new GunMIRV().setMaxDamage(2500).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo"); gun_bf = new GunBaleFlare().setMaxDamage(2500).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); - gun_mp40_ammo = new Item().setUnlocalizedName("gun_mp40_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40_ammo"); + gun_mp40_ammo = new Item().setUnlocalizedName("gun_mp40_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_mp40_ammo"); gun_mp40 = new GunSMG().setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); - gun_uzi_ammo = new Item().setUnlocalizedName("gun_uzi_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_ammo"); + gun_uzi_ammo = new Item().setUnlocalizedName("gun_uzi_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uzi_ammo"); gun_uzi = new GunUZI().setUnlocalizedName("gun_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi"); gun_uzi_silencer = new GunUZI().setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); gun_uzi_saturnite = new GunUZI().setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); gun_uzi_saturnite_silencer = new GunUZI().setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); - gun_uboinik_ammo = new Item().setUnlocalizedName("gun_uboinik_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik_ammo"); + gun_uboinik_ammo = new Item().setUnlocalizedName("gun_uboinik_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uboinik_ammo"); gun_uboinik = new GunShotgun().setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_lever_action_ammo = new Item().setUnlocalizedName("gun_lever_action_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_ammo"); + gun_lever_action_ammo = new Item().setUnlocalizedName("gun_lever_action_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_lever_action_ammo"); gun_lever_action = new GunLeverAction().setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); gun_lever_action_dark = new GunLeverAction().setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); + gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); gun_bolt_action = new GunBoltAction().setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); gun_bolt_action_green = new GunBoltAction().setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); gun_bolt_action_saturnite = new GunBoltAction().setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); @@ -3559,6 +3595,18 @@ public class ModItems { GameRegistry.registerItem(part_copper, part_copper.getUnlocalizedName()); GameRegistry.registerItem(part_plutonium, part_plutonium.getUnlocalizedName()); + //Recycled Units + GameRegistry.registerItem(recycled_ground, recycled_ground.getUnlocalizedName()); + GameRegistry.registerItem(recycled_rock, recycled_rock.getUnlocalizedName()); + GameRegistry.registerItem(recycled_metal, recycled_metal.getUnlocalizedName()); + GameRegistry.registerItem(recycled_refined, recycled_refined.getUnlocalizedName()); + GameRegistry.registerItem(recycled_organic, recycled_organic.getUnlocalizedName()); + GameRegistry.registerItem(recycled_crystal, recycled_crystal.getUnlocalizedName()); + GameRegistry.registerItem(recycled_explosive, recycled_explosive.getUnlocalizedName()); + GameRegistry.registerItem(recycled_electronic, recycled_electronic.getUnlocalizedName()); + GameRegistry.registerItem(recycled_nuclear, recycled_nuclear.getUnlocalizedName()); + GameRegistry.registerItem(recycled_misc, recycled_misc.getUnlocalizedName()); + //Catalyst Rune Sigils GameRegistry.registerItem(rune_blank, rune_blank.getUnlocalizedName()); GameRegistry.registerItem(rune_isa, rune_isa.getUnlocalizedName()); @@ -3927,6 +3975,7 @@ public class ModItems { GameRegistry.registerItem(ammo_44, ammo_44.getUnlocalizedName()); GameRegistry.registerItem(ammo_44_ap, ammo_44_ap.getUnlocalizedName()); GameRegistry.registerItem(ammo_44_pip, ammo_44_pip.getUnlocalizedName()); + GameRegistry.registerItem(ammo_44_bj, ammo_44_bj.getUnlocalizedName()); GameRegistry.registerItem(ammo_5mm, ammo_5mm.getUnlocalizedName()); GameRegistry.registerItem(ammo_5mm_explosive, ammo_5mm_explosive.getUnlocalizedName()); GameRegistry.registerItem(ammo_9mm, ammo_9mm.getUnlocalizedName()); @@ -3936,6 +3985,12 @@ public class ModItems { GameRegistry.registerItem(ammo_50bmg, ammo_50bmg.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_incendiary, ammo_50bmg_incendiary.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_explosive, ammo_50bmg_explosive.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket, ammo_rocket.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_he, ammo_rocket_he.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_incendiary, ammo_rocket_incendiary.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_shrapnel, ammo_rocket_shrapnel.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_emp, ammo_rocket_emp.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_glare, ammo_rocket_glare.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index 51cf9da9e..2ebb19d1b 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -10,10 +10,11 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class ItemCustomLore extends ItemRadioactive { +public class ItemCustomLore extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) diff --git a/com/hbm/items/special/ItemRadioactive.java b/com/hbm/items/special/ItemRadioactive.java index 0f00744fa..aa4a0da21 100644 --- a/com/hbm/items/special/ItemRadioactive.java +++ b/com/hbm/items/special/ItemRadioactive.java @@ -15,7 +15,7 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; -public class ItemRadioactive extends Item { +public class ItemRadioactive extends ItemCustomLore { @Override public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { diff --git a/com/hbm/items/tool/ItemLeadBox.java b/com/hbm/items/tool/ItemLeadBox.java index 3acb6d9cd..879f02cea 100644 --- a/com/hbm/items/tool/ItemLeadBox.java +++ b/com/hbm/items/tool/ItemLeadBox.java @@ -1,9 +1,11 @@ package com.hbm.items.tool; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemRadioactive; import com.hbm.main.MainRegistry; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -18,5 +20,4 @@ public class ItemLeadBox extends Item { return stack; } - } diff --git a/com/hbm/items/weapon/GunFolly.java b/com/hbm/items/weapon/GunFolly.java index 922a490e9..7f03be684 100644 --- a/com/hbm/items/weapon/GunFolly.java +++ b/com/hbm/items/weapon/GunFolly.java @@ -1,5 +1,10 @@ package com.hbm.items.weapon; +import com.hbm.entity.particle.EntityGasFlameFX; +import com.hbm.entity.particle.EntitySSmokeFX; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.handler.BulletConfigFactory; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.items.ModItems; import com.hbm.render.misc.RenderScreenOverlay.Crosshair; @@ -52,6 +57,31 @@ public class GunFolly extends Item implements IHoldableWeapon { setState(stack, 0); world.playSoundAtEntity(player, "hbm:weapon.follyFire", 1.0F, 1.0F); + + double mult = 1.75D; + + player.motionX -= player.getLookVec().xCoord * mult; + player.motionY -= player.getLookVec().yCoord * mult; + player.motionZ -= player.getLookVec().zCoord * mult; + + if (!world.isRemote) { + EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigFactory.getTestConfig(), player, 3.0F); + world.spawnEntityInWorld(bullet); + + for(int i = 0; i < 25; i++) { + EntitySSmokeFX flame = new EntitySSmokeFX(world); + + flame.motionX = player.getLookVec().xCoord; + flame.motionY = player.getLookVec().yCoord; + flame.motionZ = player.getLookVec().zCoord; + + flame.posX = player.posX + flame.motionX + world.rand.nextGaussian() * 0.35; + flame.posY = player.posY + flame.motionY + world.rand.nextGaussian() * 0.35 + player.eyeHeight; + flame.posZ = player.posZ + flame.motionZ + world.rand.nextGaussian() * 0.35; + + world.spawnEntityInWorld(flame); + } + } } } @@ -61,20 +91,24 @@ public class GunFolly extends Item implements IHoldableWeapon { @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - if(getState(stack) == 3 && isCurrentItem) { + if(getState(stack) == 3) { - int timer = getTimer(stack); - - if(timer > 0) { - timer--; - - if(timer % 20 == 0 && timer != 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyBuzzer", 1.0F, 1.0F); + if(isCurrentItem) { + int timer = getTimer(stack); - if(timer == 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyAquired", 1.0F, 1.0F); - - setTimer(stack, timer); + if(timer > 0) { + timer--; + + if(timer % 20 == 0 && timer != 0) + world.playSoundAtEntity(entity, "hbm:weapon.follyBuzzer", 1.0F, 1.0F); + + if(timer == 0) + world.playSoundAtEntity(entity, "hbm:weapon.follyAquired", 1.0F, 1.0F); + + setTimer(stack, timer); + } + } else { + setTimer(stack, 100); } } } diff --git a/com/hbm/items/weapon/GunSMG.java b/com/hbm/items/weapon/GunSMG.java index cc073a1d7..9e7e9c7a4 100644 --- a/com/hbm/items/weapon/GunSMG.java +++ b/com/hbm/items/weapon/GunSMG.java @@ -5,6 +5,8 @@ import java.util.Random; import com.google.common.collect.Multimap; import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.handler.BulletConfigFactory; import com.hbm.items.ModItems; import net.minecraft.enchantment.Enchantment; @@ -56,20 +58,19 @@ public class GunSMG extends Item { || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_mp40_ammo)) && count % 2 == 0) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 8, false, false); - entityarrow.setDamage(1 + rand.nextInt(8)); + + EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigFactory.getTestConfig(), player, 3.0F); //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); if (flag) { - entityarrow.canBePickedUp = 2; } else { player.inventory.consumeInventoryItem(ModItems.gun_mp40_ammo); } if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); + world.spawnEntityInWorld(bullet); } } } diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index c16681589..69d19efc6 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -272,6 +272,7 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_brimstone, new ItemRenderObj()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBase.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityMiniNuke.class, new RenderMiniNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityMiniMIRV.class, new RenderMiniMIRV()); RenderingRegistry.registerEntityRenderingHandler(EntityBaleflare.class, new RenderBaleflare()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 56ae4e33d..d7e9031f0 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -166,6 +166,7 @@ import com.hbm.entity.projectile.EntityBaleflare; import com.hbm.entity.projectile.EntityBombletZeta; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityBurningFOEQ; import com.hbm.entity.projectile.EntityChopperMine; import com.hbm.entity.projectile.EntityCombineBall; @@ -883,6 +884,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod", 128, this, 250, 1, true); EntityRegistry.registerModEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod", 129, this, 250, 1, true); EntityRegistry.registerModEntity(EntityFallingNuke.class, "entity_falling_bomb", 130, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityBulletBase.class, "entity_bullet_mk2", 131, this, 250, 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/render/entity/RenderBullet.java b/com/hbm/render/entity/RenderBullet.java new file mode 100644 index 000000000..a8c968957 --- /dev/null +++ b/com/hbm/render/entity/RenderBullet.java @@ -0,0 +1,268 @@ +package com.hbm.render.entity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelBullet; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderBullet extends Render { + + private ModelBullet bullet; + + public RenderBullet() { + bullet = new ModelBullet(); + } + + @Override + public void doRender(Entity bullet, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * f1 - 90.0F, + 0.0F, 1.0F, 0.0F); + GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * f1 + 180, + 0.0F, 0.0F, 1.0F); + GL11.glScalef(1.5F, 1.5F, 1.5F); + + GL11.glRotatef(new Random(bullet.getEntityId()).nextInt(360), 1.0F, 0.0F, 0.0F); + + renderFlechette(); + + GL11.glPopMatrix(); + } + + private void renderBullet(int type) { + + if (type == 2) { + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/emplacer.png")); + } else if (type == 1) { + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/tau.png")); + } else if (type == 0) { + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png")); + } + + bullet.renderAll(0.0625F); + } + + private void renderFlechette() { + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + + GL11.glScalef(1F/16F, 1F/16F, 1F/16F); + GL11.glScalef(-1, 1, 1); + + Tessellator tess = Tessellator.instance; + + //back + GL11.glColor3f(0.15F, 0.15F, 0.15F); + tess.startDrawingQuads(); + tess.addVertex(0, -1, -1); + tess.addVertex(0, 1, -1); + tess.addVertex(0, 1, 1); + tess.addVertex(0, -1, 1); + tess.draw(); + + //base + tess.startDrawingQuads(); + tess.addVertex(0, -1, -1); + tess.addVertex(1, -0.5, -0.5); + tess.addVertex(1, 0.5, -0.5); + tess.addVertex(0, 1, -1); + tess.draw(); + + tess.startDrawingQuads(); + tess.addVertex(1, -0.5, 0.5); + tess.addVertex(0, -1, 1); + tess.addVertex(0, 1, 1); + tess.addVertex(1, 0.5, 0.5); + tess.draw(); + + tess.startDrawingQuads(); + tess.addVertex(1, -0.5, -0.5); + tess.addVertex(0, -1, -1); + tess.addVertex(0, -1, 1); + tess.addVertex(1, -0.5, 0.5); + tess.draw(); + + tess.startDrawingQuads(); + tess.addVertex(0, 1, -1); + tess.addVertex(1, 0.5, -0.5); + tess.addVertex(1, 0.5, 0.5); + tess.addVertex(0, 1, 1); + tess.draw(); + + //pin + tess.startDrawing(4); + tess.addVertex(1, 0.5, -0.5); + tess.addVertex(1, -0.5, -0.5); + tess.addVertex(6, 0, 0); + tess.draw(); + + tess.startDrawing(4); + tess.addVertex(6, 0, 0); + tess.addVertex(1, -0.5, 0.5); + tess.addVertex(1, 0.5, 0.5); + tess.draw(); + + tess.startDrawing(4); + tess.addVertex(6, 0, 0); + tess.addVertex(1, -0.5, -0.5); + tess.addVertex(1, -0.5, 0.5); + tess.draw(); + + tess.startDrawing(4); + tess.addVertex(1, 0.5, 0.5); + tess.addVertex(1, 0.5, -0.5); + tess.addVertex(6, 0, 0); + tess.draw(); + + + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glPopMatrix(); + } + + private void renderDart(float red, float green, float blue) { + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glDepthMask(false); + + GL11.glScalef(1F/4F, 1F/8F, 1F/8F); + GL11.glScalef(-1, 1, 1); + + GL11.glScalef(2, 2, 2); + + Tessellator tess = Tessellator.instance; + + //front + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, -1, -1); + tess.addVertex(3, 1, -1); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, -1, 1); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, 1, 1); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, -1, -1); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, -1, 1); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, 1, -1); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(3, 1, 1); + tess.draw(); + + //mid + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.addVertex(4, -0.5, -0.5); + tess.addVertex(4, 0.5, -0.5); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, -0.5, 0.5); + tess.addVertex(6, 0, 0); + tess.addVertex(4, 0.5, 0.5); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, -0.5, -0.5); + tess.addVertex(6, 0, 0); + tess.addVertex(4, -0.5, 0.5); + tess.draw(); + + tess.startDrawing(4); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(6, 0, 0); + tess.addVertex(4, 0.5, -0.5); + tess.addVertex(4, 0.5, 0.5); + tess.draw(); + + //tail + tess.startDrawingQuads(); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, 0.5, -0.5); + tess.addVertex(4, 0.5, 0.5); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(0, 0.5, 0.5); + tess.addVertex(0, 0.5, -0.5); + tess.draw(); + + tess.startDrawingQuads(); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, -0.5, -0.5); + tess.addVertex(4, -0.5, 0.5); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(0, -0.5, 0.5); + tess.addVertex(0, -0.5, -0.5); + tess.draw(); + + tess.startDrawingQuads(); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, -0.5, 0.5); + tess.addVertex(4, 0.5, 0.5); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(0, 0.5, 0.5); + tess.addVertex(0, -0.5, 0.5); + tess.draw(); + + tess.startDrawingQuads(); + tess.setColorRGBA_F(red, green, blue, 1); + tess.addVertex(4, -0.5, -0.5); + tess.addVertex(4, 0.5, -0.5); + tess.setColorRGBA_F(red, green, blue, 0); + tess.addVertex(0, 0.5, -0.5); + tess.addVertex(0, -0.5, -0.5); + tess.draw(); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDepthMask(true); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png"); + } + +} diff --git a/com/hbm/render/entity/RenderRocket.java b/com/hbm/render/entity/RenderRocket.java index fd0fb34a9..54d5d40f0 100644 --- a/com/hbm/render/entity/RenderRocket.java +++ b/com/hbm/render/entity/RenderRocket.java @@ -154,17 +154,18 @@ public class RenderRocket extends Render { GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDepthMask(false); GL11.glScalef(1F/4F, 1F/8F, 1F/8F); GL11.glScalef(-1, 1, 1); + + GL11.glScalef(2, 2, 2); Tessellator tess = Tessellator.instance; - float red = 0.25F; - float green = 0.0F; - float blue = 1.0F; + float red = 0.5F; + float green = 0.5F; + float blue = 0.0F; //front tess.startDrawing(4); @@ -271,8 +272,7 @@ public class RenderRocket extends Render { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDepthMask(true); GL11.glPopMatrix(); diff --git a/com/hbm/render/item/ItemRenderOverkill.java b/com/hbm/render/item/ItemRenderOverkill.java index 35bb7ffbd..3ae0bc0d5 100644 --- a/com/hbm/render/item/ItemRenderOverkill.java +++ b/com/hbm/render/item/ItemRenderOverkill.java @@ -275,6 +275,9 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glRotatef(185, 0, 1, 0); GL11.glTranslatef(0.5F, 0.6F, 0.2F); } + if(item.getItem() == ModItems.gun_folly) { + GL11.glTranslatef(0.6F, 0.0F, 0.0F); + } if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); diff --git a/com/hbm/tileentity/bomb/TileEntityTurretBase.java b/com/hbm/tileentity/bomb/TileEntityTurretBase.java index d82f4a012..b10d32dde 100644 --- a/com/hbm/tileentity/bomb/TileEntityTurretBase.java +++ b/com/hbm/tileentity/bomb/TileEntityTurretBase.java @@ -155,7 +155,7 @@ public abstract class TileEntityTurretBase extends TileEntity { int playercount = nbt.getInteger("playercount"); for(int i = 0; i < playercount; i++) { - players.add(nbt.getString("player_") + i); + players.add(nbt.getString("player_" + i)); } }