From 7f0413a522c95cbb9ad6dd9d0b73676c2871f503 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Thu, 31 Jan 2019 01:41:03 +0100 Subject: [PATCH] new launch pad, sat dock, 20 gauge alt ammo implementation --- assets/hbm/lang/de_DE.lang | 2 + assets/hbm/lang/en_US.lang | 2 + assets/hbm/models/missilePad.obj | 172 ++++++++++++++++++ assets/hbm/models/sat_dock.obj | 86 +++++++++ assets/hbm/textures/blocks/launch_pad.png | Bin 287 -> 253 bytes assets/hbm/textures/gui/gui_dock.png | Bin 0 -> 1130 bytes assets/hbm/textures/items/missile_nuclear.png | Bin 366 -> 354 bytes assets/hbm/textures/models/missileNeonH.png | Bin 0 -> 14879 bytes assets/hbm/textures/models/missilePad.png | Bin 0 -> 2161 bytes assets/hbm/textures/models/sat_dock.png | Bin 0 -> 4014 bytes com/hbm/blocks/ModBlocks.java | 6 + com/hbm/blocks/bomb/LaunchPad.java | 4 +- com/hbm/blocks/machine/MachineSatDock.java | 52 ++++++ .../entity/projectile/EntityBulletBase.java | 3 +- com/hbm/handler/BulletConfigFactory.java | 88 +++++++++ com/hbm/handler/BulletConfigSyncingUtil.java | 12 ++ com/hbm/handler/GunConfigFactory.java | 34 +++- com/hbm/handler/GunConfiguration.java | 11 ++ com/hbm/items/ModItems.java | 2 +- com/hbm/items/weapon/ItemGunBase.java | 36 +++- com/hbm/lib/ModDamageSource.java | 1 + com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 6 + com/hbm/main/ResourceManager.java | 6 + com/hbm/potion/HbmPotion.java | 16 +- .../render/tileentity/RenderDecoBlock.java | 8 + .../tileentity/RenderLaunchPadTier1.java | 11 +- .../machine/TileEntityMachineSatDock.java | 22 +++ 28 files changed, 555 insertions(+), 26 deletions(-) create mode 100644 assets/hbm/models/missilePad.obj create mode 100644 assets/hbm/models/sat_dock.obj create mode 100644 assets/hbm/textures/gui/gui_dock.png create mode 100644 assets/hbm/textures/models/missileNeonH.png create mode 100644 assets/hbm/textures/models/missilePad.png create mode 100644 assets/hbm/textures/models/sat_dock.png create mode 100644 com/hbm/blocks/machine/MachineSatDock.java create mode 100644 com/hbm/tileentity/machine/TileEntityMachineSatDock.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 5a0ebf424..e21b80de4 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -39,6 +39,7 @@ potion.hbm_mutation=Verdorbenes Herz potion.hbm_radiation=Kontaminiert potion.hbm_bang=! ! ! potion.hbm_radx=Rad-X +potion.hbm_lead=Bleivergiftung hbmfluid.none=Nichts hbmfluid.water=Wasser @@ -172,6 +173,7 @@ death.attack.amsCore=%1$s wurde vom Feuer einer Singularität verdampft. death.attack.bang=%1$s wurde in mundgerechte Stücke zerfetzt. death.attack.pc=%1$s wurde zu einer Pfütze in der pinken Wolke. death.attack.cloud=%1$s schmolz wie ein Eis in der Sonne. +death.attack.lead=%1$s starb an Bleivergiftung. item.redstone_sword.name=Redstoneschwert item.big_sword.name=Großes Schwert diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 93703487e..8246cadd9 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -39,6 +39,7 @@ potion.hbm_mutation=Tainted Heart potion.hbm_radiation=Contaminated potion.hbm_bang=! ! ! potion.hbm_radx=Rad-X +potion.hbm_lead=Lead Poisoning hbmfluid.none=None hbmfluid.water=Water @@ -172,6 +173,7 @@ death.attack.amsCore=%1$s was vaporized in the fire of a singularity. death.attack.bang=%1$s was blasted into bite-sized pieces. death.attack.pc=%1$s was reduced to a puddle in the pink cloud. death.attack.cloud=%1$s melted like a popsicle in the sun. +death.attack.lead=%1$s died from lead poisoning. item.redstone_sword.name=Redstone Sword item.big_sword.name=Great Sword diff --git a/assets/hbm/models/missilePad.obj b/assets/hbm/models/missilePad.obj new file mode 100644 index 000000000..f2d38a4bf --- /dev/null +++ b/assets/hbm/models/missilePad.obj @@ -0,0 +1,172 @@ +# Blender v2.76 (sub 0) OBJ File: 'missilePad.blend' +# www.blender.org +o Cube_Cube.001 +v -1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 1.500000 +v 1.500000 1.000000 -1.500000 +v -1.500000 0.500000 -0.500000 +v -1.500000 0.500000 0.500000 +v 0.500000 0.500000 -1.500000 +v -0.500000 0.500000 -1.500000 +v 1.500000 0.500000 0.500000 +v 1.500000 0.500000 -0.500000 +v -0.500000 0.500000 1.500000 +v 0.500000 0.500000 1.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v -1.750000 0.000000 1.750000 +v -1.750000 0.000000 -1.750000 +v 1.750000 0.000000 1.750000 +v 1.750000 0.000000 -1.750000 +v -1.750000 0.000000 -0.500000 +v -1.750000 0.000000 0.500000 +v 0.500000 0.000000 -1.750000 +v -0.500000 0.000000 -1.750000 +v 1.750000 0.000000 0.500000 +v 1.750000 0.000000 -0.500000 +v -0.500000 0.000000 1.750000 +v 0.500000 0.000000 1.750000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -1.500000 0.500000 -1.500000 +v 1.500000 0.500000 -1.500000 +v -1.500000 0.500000 1.500000 +v 1.500000 0.500000 1.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.020000 0.530000 +vt 0.180000 0.370000 +vt 0.340000 0.370000 +vt 0.740000 0.060000 +vt 0.740000 0.220000 +vt 0.580000 0.220000 +vt 0.580000 0.060000 +vt 0.180000 0.210000 +vt 0.020000 0.660000 +vt 0.180000 0.580000 +vt 0.340000 0.580000 +vt 0.930000 0.710000 +vt 0.930000 0.870000 +vt 0.850000 0.870000 +vt 0.690000 0.950000 +vt 0.650000 0.870000 +vt 0.650000 0.670000 +vt 0.850000 0.670000 +vt 0.690000 0.580000 +vt 0.560000 0.870000 +vt 0.560000 0.710000 +vt 0.500000 0.660000 +vt 0.850000 0.580000 +vt 0.500000 0.530000 +vt 0.340000 0.210000 +vt 0.740000 0.300000 +vt 0.580000 0.300000 +vt 0.020000 0.050000 +vt 0.740000 0.360000 +vt 0.740000 0.520000 +vt 0.580000 0.520000 +vt 0.500000 0.580000 +vt 0.020000 0.580000 +vt 0.850000 0.950000 +vt 0.500000 0.050000 +vt 0.580000 0.360000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.447200 0.894400 +vn 0.894400 0.447200 0.000000 +vn 0.000000 0.447200 -0.894400 +vn -0.894400 0.447200 0.000000 +s off +f 2/1/1 39/2/1 40/3/1 +f 5/4/2 15/5/2 13/6/2 +f 13/5/2 14/6/2 12/7/2 +f 16/6/2 10/7/2 9/4/2 +f 8/7/2 7/4/2 16/5/2 +f 37/8/1 39/2/1 2/1/1 +f 2/9/3 5/10/3 6/11/3 +f 12/12/3 14/13/3 30/14/3 +f 7/15/3 23/16/3 32/14/3 +f 10/11/4 3/9/4 9/10/4 +f 10/12/5 16/13/5 32/14/5 +f 23/16/2 20/17/2 26/18/2 +f 30/14/2 25/16/2 19/17/2 +f 22/18/2 29/14/2 27/16/2 +f 18/17/2 24/18/2 31/14/2 +f 9/15/6 25/16/6 30/14/6 +f 29/14/6 22/18/6 6/12/6 +f 11/15/4 27/16/4 29/14/4 +f 31/14/4 24/18/4 8/12/4 +f 5/15/5 21/16/5 31/14/5 +f 28/18/7 19/17/7 36/19/7 +f 25/16/8 9/20/8 36/21/8 +f 2/22/6 4/9/6 7/10/6 +f 26/18/8 20/17/8 34/19/8 +f 34/21/9 20/17/9 23/16/9 +f 1/9/5 11/10/5 12/11/5 +f 33/19/9 8/23/9 24/18/9 +f 21/16/10 5/20/10 33/21/10 +f 35/19/10 6/23/10 22/18/10 +f 27/16/7 11/20/7 35/21/7 +f 4/24/1 40/3/1 38/25/1 +f 40/26/5 39/27/5 15/6/5 +f 38/26/3 40/27/3 16/6/3 +f 15/5/4 39/26/4 37/27/4 +f 13/5/6 37/26/6 38/27/6 +f 38/25/1 37/8/1 1/28/1 +f 38/29/1 40/30/1 39/31/1 +f 4/24/1 2/1/1 40/3/1 +f 6/7/2 5/4/2 13/6/2 +f 11/4/2 13/5/2 12/7/2 +f 14/5/2 16/6/2 9/4/2 +f 15/6/2 8/7/2 16/5/2 +f 1/28/1 37/8/1 2/1/1 +f 6/11/3 35/32/3 1/22/3 +f 1/22/3 2/9/3 6/11/3 +f 33/33/3 5/10/3 2/9/3 +f 28/18/3 12/12/3 30/14/3 +f 16/34/3 7/15/3 32/14/3 +f 36/33/4 9/10/4 3/9/4 +f 10/11/4 34/32/4 4/22/4 +f 4/22/4 3/9/4 10/11/4 +f 26/18/5 10/12/5 32/14/5 +f 32/14/2 23/16/2 26/18/2 +f 28/18/2 30/14/2 19/17/2 +f 17/17/2 22/18/2 27/16/2 +f 21/16/2 18/17/2 31/14/2 +f 14/34/6 9/15/6 30/14/6 +f 13/13/6 29/14/6 6/12/6 +f 13/34/4 11/15/4 29/14/4 +f 15/13/4 31/14/4 8/12/4 +f 15/34/5 5/15/5 31/14/5 +f 12/23/7 28/18/7 36/19/7 +f 19/17/8 25/16/8 36/21/8 +f 7/10/6 8/11/6 2/22/6 +f 33/32/6 2/22/6 8/11/6 +f 4/9/6 34/33/6 7/10/6 +f 10/23/8 26/18/8 34/19/8 +f 7/20/9 34/21/9 23/16/9 +f 12/11/5 36/32/5 3/22/5 +f 3/22/5 1/9/5 12/11/5 +f 35/33/5 11/10/5 1/9/5 +f 18/17/9 33/19/9 24/18/9 +f 18/17/10 21/16/10 33/21/10 +f 17/17/10 35/19/10 22/18/10 +f 17/17/7 27/16/7 35/21/7 +f 3/35/1 4/24/1 38/25/1 +f 16/5/5 40/26/5 15/6/5 +f 14/5/3 38/26/3 16/6/3 +f 13/6/4 15/5/4 37/27/4 +f 14/6/6 13/5/6 38/27/6 +f 3/35/1 38/25/1 1/28/1 +f 37/36/1 38/29/1 39/31/1 diff --git a/assets/hbm/models/sat_dock.obj b/assets/hbm/models/sat_dock.obj new file mode 100644 index 000000000..683c2c2b5 --- /dev/null +++ b/assets/hbm/models/sat_dock.obj @@ -0,0 +1,86 @@ +# Blender v2.76 (sub 0) OBJ File: 'sat_dock.blend' +# www.blender.org +o Cube_Cube.001 +v -1.500000 0.000000 1.500000 +v -1.500000 0.500000 1.500000 +v -1.500000 0.000000 -1.500000 +v -1.500000 0.500000 -1.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.500000 1.500000 +v 1.500000 0.000000 -1.500000 +v 1.500000 0.500000 -1.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.750000 0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 0.750000 -0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.750000 0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 0.750000 -0.500000 +vt 0.492188 0.507812 +vt 0.492188 0.570312 +vt 0.117188 0.570312 +vt 0.492188 0.132812 +vt 0.554688 0.132812 +vt 0.554688 0.507812 +vt 0.117188 0.132812 +vt 0.117188 0.070312 +vt 0.492188 0.070312 +vt 0.117188 0.507812 +vt 0.054688 0.507812 +vt 0.054688 0.132812 +vt 0.539062 0.562500 +vt 0.914062 0.562500 +vt 0.914062 0.937500 +vt 0.835938 0.367188 +vt 0.835938 0.398438 +vt 0.710938 0.398438 +vt 0.835938 0.242188 +vt 0.867188 0.242188 +vt 0.867188 0.367188 +vt 0.710938 0.242188 +vt 0.710938 0.210938 +vt 0.835938 0.210938 +vt 0.710938 0.367188 +vt 0.679688 0.367188 +vt 0.679688 0.242188 +vt 0.367188 0.257812 +vt 0.242188 0.257812 +vt 0.367188 0.382812 +vt 0.242188 0.382812 +vt 0.539062 0.937500 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/6/2 +f 6/7/3 5/8/3 7/9/3 +f 2/10/4 1/11/4 5/12/4 +f 3/13/5 7/14/5 5/15/5 +f 12/16/1 11/17/1 9/18/1 +f 16/19/2 15/20/2 11/21/2 +f 14/22/3 13/23/3 15/24/3 +f 10/25/4 9/26/4 13/27/4 +f 15/28/6 13/29/6 6/7/6 +f 16/19/6 12/16/6 10/25/6 +f 11/30/6 15/28/6 8/4/6 +f 9/31/6 11/30/6 4/1/6 +f 13/29/6 9/31/6 2/10/6 +f 2/10/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/6/2 +f 8/4/3 6/7/3 7/9/3 +f 6/7/4 2/10/4 5/12/4 +f 1/32/5 3/13/5 5/15/5 +f 10/25/1 12/16/1 9/18/1 +f 12/16/2 16/19/2 11/21/2 +f 16/19/3 14/22/3 15/24/3 +f 14/22/4 10/25/4 13/27/4 +f 8/4/6 15/28/6 6/7/6 +f 14/22/6 16/19/6 10/25/6 +f 4/1/6 11/30/6 8/4/6 +f 2/10/6 9/31/6 4/1/6 +f 6/7/6 13/29/6 2/10/6 diff --git a/assets/hbm/textures/blocks/launch_pad.png b/assets/hbm/textures/blocks/launch_pad.png index ae3d4e685ced4e106d8cbf7bd13930bd27ac4396..b049d63187e10a57789745f2f352ab6d6d3c990f 100644 GIT binary patch delta 224 zcmV<603ZLK0{sDyC4X~5NmK|32nc)#WQYI&0JKR&K~y-6?UA7lgfI|99|X)Q3?7fE z;#2w^drSRKI}3jl>BAUvJ{2Cv!934Jbse^Ci-_R8 zM?@m$y$6Wgwrv2Ese39`RjjoP!+^CGRn5fV!!mUbP*uipWLa4jx~^lICYq+X@1XDd z%soU+<9~8@&b>PbJAI1^pswo}QB~RZ9p_xUkTK>=`QV;)AR<}pEAIHX!n&?;n7TjZ ae;6;}JZLya_r2Z#0000Cin!!Haio@|f9Qq~Z;!cta|RQi|1DoqPQr4naoIdw0edUxU_S zmaVl9F@O+)7LOn1k?CR&iFYw%F=N`pFtJH|&M{pfs*vhkAn+S0yP6qIQn;M1& diff --git a/assets/hbm/textures/gui/gui_dock.png b/assets/hbm/textures/gui/gui_dock.png new file mode 100644 index 0000000000000000000000000000000000000000..7596be55ec91e18a753ecf018f7e1b218944ce2a GIT binary patch literal 1130 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGwrqNj^v zNX4ADcLVco1qifVe66wCYum$Kmn8W}k3D>wbbbX~T;`#=<;O3+f9ESZqe7KiUh%&< zP?5ENu9Qt%<`?E0-JgXkt>()72l8e`2{(q?n6lgRKdZ3W_DuG**0M6ehV$po7xuH| zefan9UR3tm$B!4AzGr#&>C0DszPb~izWlXk{N}}=FoVItfUzNgiQym%LlY+hi!cL+ z8iRljSYpHTi~I>K+qZAuoqp!?ooT6t&ri*{e*OCH=NH0L7@~gvl>Z{vet4no>7;X0 zE%(KQ%@0P>i_=hqgzG!z8P9jh^060NonN@mK9B!icH`kF>56N&43d>Em=#y$vJ_Q+ z_?q*LZ^5m$nO?JtzgZo3TktD}8RlGG&I3P{E|=Rk?la>*u$KM*CLJe+xx7DR4m=fo z_PO!j_WkU?B+7UXXxsFJznk2!h~c)TU_-Ti3DckXii|&gX}uSfKX&tv)B&6G`{O?5 z|Kq0JUae$%=7&&EMZ#U#E z&h=}x+?!{7jyIltUCHjuVx#9jre)dtG2)F*45Lcr9k$-~ojuvIy>8t-xjSwO#ad@} z-r;!i?ZNAff+yyDD$Zefb=;J+NWICC;`h_?OS19=%csw8a9ru{b$B*qezJ0a{W?b6 zDGl9ez$ADE=$upM7tUWT-MBzWy7Ag$5m@>x`>M2H?SW?@Gm3YL&iHzRD+g$yp5J$b z0(b((Vk{(OgCw>w%?_^P`+I}y%;Alq6}GUzd$4fM{ePSLo?p9V;(PgJg-unF;+dba z2flpzWb~!+!2SZp0@>;Q4>C_IZm56$fE}2zX#x`3>lipYW^MCos_Ft+;OXk;vd$@? F2>@>>f2;ri literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/missile_nuclear.png b/assets/hbm/textures/items/missile_nuclear.png index a0ba32a3cb60bc0a5d7d578a28df6e73d90df6aa..2057669dde54ac5087b029950fee1e49410a69b5 100644 GIT binary patch delta 311 zcmV-70m%OD0^$OYG=CXML_t(IjjfWgO2c3jg})SEAP?~mZdtSW0*PCp6eNRFpTJ3e z-@rxam`!jB$^6ew&CsQVEQNrharu!>$3ZG;TiX=Rb}yWdb1w(}L+LPgx>v zv_x0;7XZAyuBo1$gJS^$fXmyM_50`I?&g6!&wD2!9maCbsei6(X@V9b`a|+OmnKLP zRM)kRNwRh8VuW6<9bp&(FrUxKvTW~92EP~Qj|6So(sdmGtJMl?t&A~>qG&78762g2 zvY>5S%Ce*=3X&vYJRak{XBT9zthI8^$rz*AY$j`MzsE*Vq(hLizX0BQilP8uI-OEg z)z`ey!NwV5)G#znV6D~0?7at|X_})O`vYi<>0h$%fRoL;^Z{8^kBR`o1C#&&002ov JPDHLkV1oYYl>`6) delta 323 zcmV-J0lfa=0`3BkG=C*YL_t(Ijir(?PQx%1hQEkT&5}$pi=~X&ShMv6+<>(bGY4q7 z1`8760x&Ufhcaf$V5w@hq*514O&&uNNYWHi_$ABMFTKyd{T}>N4!{DWG45+`tR~H2 z`R&ODcsK_%2a(oVfoQGe_sSk*b$E(Ma@e)jvVgBO3eXfwf`80rGtpWf{4o%vR3||k z#}Y-+kC3B}Qc6h}h5!^rK@bE0q-n~FF;MAf&gnRWm!^H z6;IPC$#%*7ftumLt%#wFl+UMGpQmNx)nI0*pwXhD46$MZa_wS)h51gHl{ZU>UA z*K1tYrI`_9j65@#pbfdsGG1%n_k93d*Co&M!9*R+do5E+Nfbp=xBGl4rT$)gN}u$T VjB|3t!>j-R002ovPDHLkV1lx4kW~Nx diff --git a/assets/hbm/textures/models/missileNeonH.png b/assets/hbm/textures/models/missileNeonH.png new file mode 100644 index 0000000000000000000000000000000000000000..97b5d2d7398584e32f361212a6072ec5038b6021 GIT binary patch literal 14879 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 bi$W0Zze!zIC>4Bv6L9W~>FHd9o5BAF^ZWP7 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missilePad.png b/assets/hbm/textures/models/missilePad.png new file mode 100644 index 0000000000000000000000000000000000000000..03a80eeb378e16df4399f7e6c93c985045074f96 GIT binary patch literal 2161 zcmbtW`#Teg8(*EtD9k0dMsrX3PEBei&e=vd)flBA%Z#BBGf6Z~%V{R&7R6R_DLIF^ z-@dg}G$WTTm=r?DWpr|FY`*$FJ>$}d^eTFF{Kf35MF{PfnLwBd1)i3lhSG4 zZ7%c+z*4cO9Y(Zdnj%~~_x}jF1+{DEuH);ER3&zXQ1B0ZnI9U$7rJvNv`-1)CD}v3 zrnuGl`R|KUK`tu<_M61cs`5EgAwO<4+LG`DaiV%PGQ~829Ts>LH9yka9Jf5v=atF7 zO*(8q3q9~y;oGO@*M~Sq!@D!*_>dxnT$0cGQ|V4=`r=`J+~u5rg&$QQA382Fj>T`p zto}3JR%0Az*%pkR9Po@*|2+M!1ZMXWIim}Tl7Lk1M)?k}UA4G%$!iw|F zJW1VPK{_;iO_Tl5#teF!16Vc?Z~MZ$Jz|&zdN6ZVo7oYZ=K{iH)5t_kt*m? zSIqMSbG@?^PSl^YQpSOmvBnbVpiWWFH#I)rlvK;>@5iTNz&sUI;HQt)(ff=+xYUW) z2nSV#-KAsh{CDfEoj4!C9TVMgw4Z8ljShP08+3BGqJ^Bxu)2SKT}lWmbdtE|3q$S1 z3K^A5(DsOVU0V$t*f6ujP`J773lRSpjHXY=2ft6D+ zssa^DRAq;z<3YMKRnfh|UKexMP|sbH{uECbR9^w30NuVMCIdr7I2I|t8l|#*%%s^m zhL@`H4SkDuk@i-M>l##-*`5C1j7$(?S;$Ozenm2Y&5h2mul4AuYq&Cb#m6*hLHsix zn$g+)$5MY?{r=m+y*{79)!p?=*S%4 z%{8)N&L4jfd;4q;v&TdT)>jucLHEBz1vNfUQfrq99668dU(epHt;zusRep`%SR^26Pingz)^^(N#jD%x*i5R+3yXy z2EA39CXFpii2US+1K7MQ>RXs<(*({^D3-(VhZue)NjpawLNC7Dn?YF8J@ftN6QRiB zofxm~*J2~&lr|$ctbEiH9ZCS}X$E}-PZjWjFO@V}Rr2Ln%57w{-*mGVYNHYd?hC@s znt&+q%jb;d4dy2df$iL9qgDm6iem{inJq&S!oHf@dCN5mYAVF7CJ`FUTY&d;TNwVz6A7RD~`F%UjI|E1b`wk>?$ce^vM>P8M8xrTWuY=$A@b{5w8rZ>umiwGC` z&o3%X42ElSpeT(8kvmk?5^|l0Y=flM73cPYQzB)>76f+o&SfyTwuMIF1r>gY!{bR`=CIv}TNLi^@@6ls$qL1#~-ryq!Q+_7D ztyqla#aaYH{>*|d;+PNg|AHBXxlwAgI!;6{GAd(I-UjpaX8O`8gViS^-UhL1t(5;g z92_qzTAcC@?>qY`Jzm$0c-0lJKvQKngA#@w z5YT=G*n%#XyMqOV^wLfH3or;fHO}9%ldjrOrk#qsnzBMKPIJy}y1!bGay>inURZ6& zF@_u2Ro__4D9OjMRQCE|5;NIk83LQFO&JnX%e%oj{xA}h;`th{TTlNJ@5kc literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/sat_dock.png b/assets/hbm/textures/models/sat_dock.png new file mode 100644 index 0000000000000000000000000000000000000000..419d9ea332ccfe9ea6678be6597220d7d9f2f731 GIT binary patch literal 4014 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 literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index a34a4612d..a73abc508 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -230,6 +230,9 @@ public class ModBlocks { public static Block sat_laser; public static Block sat_foeq; public static Block sat_resonator; + + public static Block sat_dock; + public static final int guiID_dock = 46; public static Block crate_iron; public static final int guiID_crate_iron = 46; @@ -966,6 +969,8 @@ public class ModBlocks { sat_foeq = new DecoBlock(Material.iron).setBlockName("sat_foeq").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_foeq"); sat_resonator = new DecoBlock(Material.iron).setBlockName("sat_resonator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_resonator"); + sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); + turret_light = new TurretLight(Material.iron).setBlockName("turret_light").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":turret_light"); turret_heavy = new TurretHeavy(Material.iron).setBlockName("turret_heavy").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":turret_heavy"); turret_rocket = new TurretRocket(Material.iron).setBlockName("turret_rocket").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":turret_rocket"); @@ -1431,6 +1436,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); + GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(machine_telelinker, machine_telelinker.getUnlocalizedName()); GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); GameRegistry.registerBlock(machine_forcefield, machine_forcefield.getUnlocalizedName()); diff --git a/com/hbm/blocks/bomb/LaunchPad.java b/com/hbm/blocks/bomb/LaunchPad.java index 9a6626e54..a42ca0a71 100644 --- a/com/hbm/blocks/bomb/LaunchPad.java +++ b/com/hbm/blocks/bomb/LaunchPad.java @@ -189,7 +189,7 @@ public class LaunchPad extends BlockContainer implements IBomb { } } - @Override + /*@Override public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { float f = 0.0625F; @@ -201,7 +201,7 @@ public class LaunchPad extends BlockContainer implements IBomb { float f = 0.0625F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } + }*/ @Override @SideOnly(Side.CLIENT) diff --git a/com/hbm/blocks/machine/MachineSatDock.java b/com/hbm/blocks/machine/MachineSatDock.java new file mode 100644 index 000000000..643613f5d --- /dev/null +++ b/com/hbm/blocks/machine/MachineSatDock.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.machine; + +import com.hbm.tileentity.machine.TileEntityMachineSatDock; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class MachineSatDock extends BlockContainer { + + public MachineSatDock(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineSatDock(); + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) + { + float f = 0.0625F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 12*f, 1.0F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + float f = 0.0625F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 12*f, 1.0F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + +} diff --git a/com/hbm/entity/projectile/EntityBulletBase.java b/com/hbm/entity/projectile/EntityBulletBase.java index 5e92e3859..1ed47d231 100644 --- a/com/hbm/entity/projectile/EntityBulletBase.java +++ b/com/hbm/entity/projectile/EntityBulletBase.java @@ -337,7 +337,8 @@ public class EntityBulletBase extends Entity implements IProjectile { //for when a bullet dies by hitting a block private void onBlockImpact(int bX, int bY, int bZ) { - this.setDead(); + if(!worldObj.isRemote) + this.setDead(); if(config.incendiary > 0 && !this.worldObj.isRemote) { if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ, Blocks.fire); diff --git a/com/hbm/handler/BulletConfigFactory.java b/com/hbm/handler/BulletConfigFactory.java index 33bec3576..82c9ea459 100644 --- a/com/hbm/handler/BulletConfigFactory.java +++ b/com/hbm/handler/BulletConfigFactory.java @@ -110,6 +110,8 @@ public class BulletConfigFactory { } /// ADJUSTED CONFIGS /// + + /// .357 /// protected static BulletConfiguration getRevIronConfig() { BulletConfiguration bullet = standardBulletConfig(); @@ -190,5 +192,91 @@ public class BulletConfigFactory { return bullet; } + + /// 12 Gauge /// + protected static BulletConfiguration get12GaugeConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_12gauge; + bullet.dmgMin = 1; + bullet.dmgMax = 4; + + return bullet; + } + + protected static BulletConfiguration get12GaugeFireConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_12gauge_incendiary; + bullet.dmgMin = 1; + bullet.dmgMax = 4; + bullet.incendiary = 5; + + return bullet; + } + + /// 20 Gauge /// + protected static BulletConfiguration get20GaugeConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_20gauge; + bullet.dmgMin = 1; + bullet.dmgMax = 3; + + return bullet; + } + + protected static BulletConfiguration get20GaugeSlugConfig() { + + BulletConfiguration bullet = standardBulletConfig(); + + bullet.ammo = ModItems.ammo_20gauge_slug; + bullet.dmgMin = 10; + bullet.dmgMax = 15; + bullet.style = BulletConfiguration.STYLE_NORMAL; + + return bullet; + } + + protected static BulletConfiguration get20GaugeFlechetteConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_20gauge_flechette; + bullet.dmgMin = 3; + bullet.dmgMax = 6; + bullet.style = BulletConfiguration.STYLE_FLECHETTE; + bullet.HBRC = 2; + bullet.LBRC = 95; + + return bullet; + } + + protected static BulletConfiguration get20GaugeFireConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_20gauge_incendiary; + bullet.dmgMin = 1; + bullet.dmgMax = 4; + bullet.incendiary = 5; + + return bullet; + } + + protected static BulletConfiguration get20GaugeExplosiveConfig() { + + BulletConfiguration bullet = standardBuckshotConfig(); + + bullet.ammo = ModItems.ammo_20gauge_explosive; + bullet.dmgMin = 2; + bullet.dmgMax = 6; + bullet.explosive = 0.5F; + + return bullet; + } } diff --git a/com/hbm/handler/BulletConfigSyncingUtil.java b/com/hbm/handler/BulletConfigSyncingUtil.java index b364d0270..dc86fc420 100644 --- a/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/com/hbm/handler/BulletConfigSyncingUtil.java @@ -27,12 +27,24 @@ public class BulletConfigSyncingUtil { public static final int TEST_CONFIG = 0x00; public static final int IRON_REVOLVER = 0x01; public static final int STEEL_REVOLVER = 0x02; + + public static final int G20_NORMAL = 0x03; + public static final int G20_SLUG = 0x04; + public static final int G20_FLECHETTE = 0x05; + public static final int G20_FIRE = 0x06; + public static final int G20_EXPLOSIVE = 0x07; public static void loadConfigsForSync() { configSet.add(new ConfigKeyPair(BulletConfigFactory.getTestConfig(), TEST_CONFIG)); configSet.add(new ConfigKeyPair(BulletConfigFactory.getRevIronConfig(), IRON_REVOLVER)); configSet.add(new ConfigKeyPair(BulletConfigFactory.getRevSteelConfig(), STEEL_REVOLVER)); + + configSet.add(new ConfigKeyPair(BulletConfigFactory.get20GaugeConfig(), G20_NORMAL)); + configSet.add(new ConfigKeyPair(BulletConfigFactory.get20GaugeSlugConfig(), G20_SLUG)); + configSet.add(new ConfigKeyPair(BulletConfigFactory.get20GaugeFlechetteConfig(), G20_FLECHETTE)); + configSet.add(new ConfigKeyPair(BulletConfigFactory.get20GaugeFireConfig(), G20_FIRE)); + configSet.add(new ConfigKeyPair(BulletConfigFactory.get20GaugeExplosiveConfig(), G20_EXPLOSIVE)); } public static BulletConfiguration pullConfig(int key) { diff --git a/com/hbm/handler/GunConfigFactory.java b/com/hbm/handler/GunConfigFactory.java index 25db8c665..89aa26f45 100644 --- a/com/hbm/handler/GunConfigFactory.java +++ b/com/hbm/handler/GunConfigFactory.java @@ -11,8 +11,8 @@ public class GunConfigFactory { GunConfiguration config = new GunConfiguration(); config.rateOfFire = 10; - config.gunMode = 0; - config.firingMode = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; config.hasReloadAnim = false; config.hasFiringAnim = false; config.hasSpinup = false; @@ -20,12 +20,40 @@ public class GunConfigFactory { config.reloadDuration = 10; config.firingDuration = 0; config.ammoCap = 6; - config.reloadType = 1; + config.reloadType = GunConfiguration.RELOAD_FULL; config.allowsInfinity = true; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); + config.config.add(BulletConfigSyncingUtil.G20_NORMAL); + + return config; + } + + public static GunConfiguration getMareConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 10; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.hasReloadAnim = false; + config.hasFiringAnim = false; + config.hasSpinup = false; + config.hasSpindown = false; + config.reloadDuration = 10; + config.firingDuration = 0; + config.ammoCap = 6; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.G20_NORMAL); + config.config.add(BulletConfigSyncingUtil.G20_SLUG); + config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); + config.config.add(BulletConfigSyncingUtil.G20_FIRE); + config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); return config; } diff --git a/com/hbm/handler/GunConfiguration.java b/com/hbm/handler/GunConfiguration.java index 1fd9c59d9..a607b6805 100644 --- a/com/hbm/handler/GunConfiguration.java +++ b/com/hbm/handler/GunConfiguration.java @@ -44,4 +44,15 @@ public class GunConfiguration { //bullet configs for main and alt fire public List config; + public static final int MODE_NORMAL = 0; + public static final int MODE_RELEASE = 1; + public static final int MODE_BOTH = 1; + + public static final int FIRE_MANUAL = 0; + public static final int FIRE_AUTO = 1; + + public static final int RELOAD_NONE = 0; + public static final int RELOAD_FULL = 1; + public static final int RELOAD_SINGLE = 2; + } diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 883ce2eb8..5ce34ca83 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -2347,7 +2347,7 @@ public class ModItems { 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(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 = new ItemGunBase(GunConfigFactory.getMareConfig()).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(null).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); diff --git a/com/hbm/items/weapon/ItemGunBase.java b/com/hbm/items/weapon/ItemGunBase.java index 90bac18b9..71244542b 100644 --- a/com/hbm/items/weapon/ItemGunBase.java +++ b/com/hbm/items/weapon/ItemGunBase.java @@ -21,6 +21,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -127,7 +128,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon { if(getDelay(stack) > 0) setDelay(stack, getDelay(stack) - 1); - if(mainConfig.firingMode == 1 && getIsMouseDown(stack) && getDelay(stack) == 0 && getMag(stack) > 0) { + if(mainConfig.firingMode == 1 && getIsMouseDown(stack) && getDelay(stack) == 0 && getMag(stack) > 0 && !getIsReloading(stack)) { fire(stack, world, entity); setDelay(stack, mainConfig.rateOfFire); setMag(stack, getMag(stack) - 1); @@ -146,15 +147,24 @@ public class ItemGunBase extends Item implements IHoldableWeapon { //called every time the gun shoots, overridden to change bullet entity/special additions private void fire(ItemStack stack, World world, EntityPlayer player) { - EntityBulletBase bullet = new EntityBulletBase(world, mainConfig.config.get(getMagType(stack)), player); - world.spawnEntityInWorld(bullet); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_gold_ammo)); + BulletConfiguration config = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); + + int bullets = config.bulletsMin; + + if(config.bulletsMax > config.bulletsMin) + bullets += world.rand.nextInt(config.bulletsMax - config.bulletsMin); + + for(int i = 0; i < bullets; i++) { + EntityBulletBase bullet = new EntityBulletBase(world, mainConfig.config.get(getMagType(stack)), player); + world.spawnEntityInWorld(bullet); + } + //player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_gold_ammo)); } //called on click (server side, called by mouse packet) public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - if(mainConfig.firingMode == 0 && getIsMouseDown(stack) && getDelay(stack) == 0 && getMag(stack) > 0) { + if(mainConfig.firingMode == 0 && getIsMouseDown(stack) && getDelay(stack) == 0 && getMag(stack) > 0 && !getIsReloading(stack)) { fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); setMag(stack, getMag(stack) - 1); @@ -169,7 +179,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon { //reload action, if existent private void reload(ItemStack stack, World world, EntityPlayer player) { - if(getReloadCycle(stack) == 0) { + if(getReloadCycle(stack) < 0 && stack == player.getHeldItem()) { //if the mag has bullet in them -> load only the same type if(getMag(stack) > 0) { @@ -261,10 +271,16 @@ public class ItemGunBase extends Item implements IHoldableWeapon { //item mouseover text @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add("Ammo: " + getMag(stack)); - list.add("Ammo Type: " + getMagType(stack)); - list.add("Reload DLAY: " + getReloadCycle(stack)); + + Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo; + + if(mainConfig.ammoCap > 0) + list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap); + else + list.add("Ammo: Belt"); + + list.add("Ammo Type: " + I18n.format(ammo.getUnlocalizedName() + ".name")); + //list.add("Reload DLAY: " + getReloadCycle(stack)); } /*//returns main config from itemstack diff --git a/com/hbm/lib/ModDamageSource.java b/com/hbm/lib/ModDamageSource.java index cf9646447..0f55e6244 100644 --- a/com/hbm/lib/ModDamageSource.java +++ b/com/hbm/lib/ModDamageSource.java @@ -40,6 +40,7 @@ public class ModDamageSource extends DamageSource { public static DamageSource bang = (new DamageSource("bang")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource pc = (new DamageSource("pc")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource cloud = (new DamageSource("cloud")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource lead = (new DamageSource("lead")).setDamageIsAbsolute().setDamageBypassesArmor(); public ModDamageSource(String p_i1566_1_) { super(p_i1566_1_); diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 69d19efc6..06efb3a55 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -364,6 +364,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioRec.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadiobox.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBomber.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatDock.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAlt.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltG.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index aad2b4327..56bf667dc 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -314,6 +314,7 @@ import com.hbm.tileentity.machine.TileEntityMachineReactorLarge.ReactorFuelType; import com.hbm.tileentity.machine.TileEntityMachineReactorSmall; import com.hbm.tileentity.machine.TileEntityMachineRefinery; import com.hbm.tileentity.machine.TileEntityMachineSPP; +import com.hbm.tileentity.machine.TileEntityMachineSatDock; import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; import com.hbm.tileentity.machine.TileEntityMachineShredder; @@ -561,6 +562,7 @@ public class MainRegistry public static int bangID = 64; public static int mutationID = 65; public static int radxID = 66; + public static int leadID = 67; public static int x; public static int y; @@ -756,6 +758,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityMachineReactorLarge.class, "tileentity_large_reactor"); GameRegistry.registerTileEntity(TileEntityWasteDrum.class, "tileentity_waste_drum"); GameRegistry.registerTileEntity(TileEntityDecon.class, "tileentity_decon"); + GameRegistry.registerTileEntity(TileEntityMachineSatDock.class, "tileentity_miner_dock"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -1875,6 +1878,9 @@ public class MainRegistry Property propRadxID = config.get(Configuration.CATEGORY_GENERAL, "8.04_radxPotionID", 66); propRadxID.comment = "What potion ID the Rad-X effect will have"; radxID = propRadxID.getInt(); + Property propLeadID = config.get(Configuration.CATEGORY_GENERAL, "8.05_leadPotionID", 67); + propLeadID.comment = "What potion ID the lead poisoning effect will have"; + leadID = propLeadID.getInt(); config.save(); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index a0a31eaa7..e23b99b77 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -123,6 +123,9 @@ public class ResourceManager { public static final IModelCustom sat_foeq = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_foeq.obj")); public static final IModelCustom sat_foeq_burning = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_foeq_burning.obj")); public static final IModelCustom sat_foeq_fire = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_foeq_fire.obj")); + + //SatDock + public static final IModelCustom satDock = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_dock.obj")); //Vault Door public static final IModelCustom vault_cog = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vault_cog.obj")); @@ -232,6 +235,9 @@ public class ResourceManager { public static final ResourceLocation sat_foeq_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_foeq.png"); public static final ResourceLocation sat_foeq_burning_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_foeq_burning.png"); + //SatDock + public static final ResourceLocation satdock_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_dock.png"); + //Vault Door public static final ResourceLocation vault_cog_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_cog.png"); public static final ResourceLocation vault_frame_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_frame.png"); diff --git a/com/hbm/potion/HbmPotion.java b/com/hbm/potion/HbmPotion.java index 1c447b299..0305b5bf2 100644 --- a/com/hbm/potion/HbmPotion.java +++ b/com/hbm/potion/HbmPotion.java @@ -25,6 +25,7 @@ public class HbmPotion extends Potion { public static HbmPotion bang; public static HbmPotion mutation; public static HbmPotion radx; + public static HbmPotion lead; public HbmPotion(int id, boolean isBad, int color) { super(id, isBad, color); @@ -36,6 +37,7 @@ public class HbmPotion extends Potion { bang = registerPotion(MainRegistry.bangID, true, 1118481, "potion.hbm_bang", 3, 0); mutation = registerPotion(MainRegistry.mutationID, false, 8388736, "potion.hbm_mutation", 2, 0); radx = registerPotion(MainRegistry.radxID, false, 0xBB4B00, "potion.hbm_radx", 5, 0); + lead = registerPotion(MainRegistry.leadID, false, 0x767682, "potion.hbm_lead", 6, 0); } public static HbmPotion registerPotion(int id, boolean isBad, int color, String name, int x, int y) { @@ -104,10 +106,14 @@ public class HbmPotion extends Potion { entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.laserBang", 100.0F, 1.0F); ExplosionLarge.spawnParticles(entity.worldObj, entity.posX, entity.posY, entity.posZ, 10); } + if(this == lead) { + + entity.attackEntityFrom(ModDamageSource.lead, (level + 1)); + } } public boolean isReady(int par1, int par2) { - + if(this == taint) { int k = 80 >> par2; @@ -116,14 +122,16 @@ public class HbmPotion extends Potion { if(this == radiation) { return true; - - //int k = 40 >> par2; - //return k > 0 ? par1 % k == 0 : true; } if(this == bang) { return par1 <= 10; } + if(this == lead) { + + int k = 60; + return k > 0 ? par1 % k == 0 : true; + } return false; } diff --git a/com/hbm/render/tileentity/RenderDecoBlock.java b/com/hbm/render/tileentity/RenderDecoBlock.java index 1916fa4fa..07f7b4a2d 100644 --- a/com/hbm/render/tileentity/RenderDecoBlock.java +++ b/com/hbm/render/tileentity/RenderDecoBlock.java @@ -384,6 +384,14 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { ResourceManager.sat_foeq.renderAll(); } + if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_dock) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + + bindTexture(ResourceManager.satdock_tex); + ResourceManager.satDock.renderAll(); + } + GL11.glPopMatrix(); } diff --git a/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/com/hbm/render/tileentity/RenderLaunchPadTier1.java index b900a558b..660cc311f 100644 --- a/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -14,14 +14,14 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { - private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/LaunchPad.obj"); + private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/missilePad.obj"); private IModelCustom padModel; private ResourceLocation padTexture; public RenderLaunchPadTier1() { padModel = AdvancedModelLoader.loadModel(objTesterModelRL); - padTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); + padTexture = new ResourceLocation(RefStrings.MODID, "textures/models/missilePad.png"); } @Override @@ -30,6 +30,7 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); /*switch(tileEntity.getBlockMetadata()) { case 5: @@ -42,10 +43,10 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); break; }*/ - GL11.glScalef(1.5F, 1.0F, 1.5F); + //GL11.glScalef(1.5F, 1.0F, 1.5F); bindTexture(padTexture); padModel.renderAll(); - GL11.glScalef(2/3F, 1.0F, 2/3F); + //GL11.glScalef(2/3F, 1.0F, 2/3F); GL11.glDisable(GL11.GL_CULL_FACE); int state = 0; @@ -53,7 +54,7 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { if(tileEntity instanceof TileEntityLaunchPad) state = ((TileEntityLaunchPad)tileEntity).state; - GL11.glTranslated(0, 0.5, 0); + GL11.glTranslated(0, 1, 0); if(state == 1) { diff --git a/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/com/hbm/tileentity/machine/TileEntityMachineSatDock.java new file mode 100644 index 000000000..3ce084e4b --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -0,0 +1,22 @@ +package com.hbm.tileentity.machine; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineSatDock extends TileEntity { + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + +}