From b350446a28c227b38f1c653e2d83c842c50df4ba Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 13 May 2019 23:29:27 +0200 Subject: [PATCH] rocket propelled chainsaw, functional custom missile entity --- assets/hbm/lang/de_DE.lang | 5 + assets/hbm/lang/en_US.lang | 5 + assets/hbm/models/rpc.obj | 380 ++++++++++++++++++ assets/hbm/sounds.json | 2 + assets/hbm/sounds/weapon/hkReload.ogg | Bin 0 -> 9563 bytes assets/hbm/sounds/weapon/hkShoot.ogg | Bin 0 -> 13919 bytes assets/hbm/sounds/weapon/missileTakeOff.ogg | Bin 11088 -> 42214 bytes .../hbm/sounds/weapon/missileTakeOffAlt.ogg | Bin 0 -> 11088 bytes assets/hbm/textures/gui/fluids2.png | Bin 5037 -> 12215 bytes .../textures/gui/gui_launch_table_small.png | Bin 4414 -> 4441 bytes assets/hbm/textures/items/ammo_rocket_rpc.png | Bin 0 -> 377 bytes .../hbm/textures/models/missile_assembly.png | Bin 344 -> 366 bytes .../fuselages/f10kerosene_silvermoonlight.png | Bin 0 -> 1227 bytes .../mp_f_10_long_kerosene_silvermoonlight.png | Bin 0 -> 1647 bytes .../mp_f_15_kerosene_silvermoonlight.png | Bin 0 -> 3741 bytes .../thrusters/mp_t_15_balefire_large_rad.png | Bin 0 -> 5962 bytes .../warheads/mp_w_15_nuclear_sun.png | Bin 0 -> 1534 bytes assets/hbm/textures/models/rpc.png | Bin 0 -> 1429 bytes assets/hbm/textures/models/telex.png | Bin 741 -> 1934 bytes assets/hbm/textures/models/telex.zip | Bin 857 -> 0 bytes assets/hbm/textures/particle/contrail.png | Bin 133 -> 130 bytes .../entity/missile/EntityMissileCustom.java | 198 +++++---- .../entity/projectile/EntityBulletBase.java | 14 + com/hbm/handler/BulletConfigSyncingUtil.java | 2 + com/hbm/handler/BulletConfiguration.java | 1 + com/hbm/handler/FluidTypeHandler.java | 82 ++-- com/hbm/handler/GunConfiguration.java | 1 + com/hbm/handler/guncfg/GunGrenadeFactory.java | 2 + com/hbm/handler/guncfg/GunRocketFactory.java | 23 ++ com/hbm/inventory/FluidTank.java | 2 +- .../gui/GUIMachineCompactLauncher.java | 49 ++- com/hbm/items/ModItems.java | 3 + com/hbm/items/weapon/ItemAmmo.java | 7 + com/hbm/lib/Library.java | 10 + com/hbm/main/ClientProxy.java | 3 + com/hbm/main/MainRegistry.java | 1 + com/hbm/main/ResourceManager.java | 2 + com/hbm/packet/AuxGaugePacket.java | 6 + com/hbm/packet/PacketDispatcher.java | 2 + com/hbm/packet/TEMissileMultipartPacket.java | 74 ++++ .../particle/ParticleContrail.java | 4 +- com/hbm/render/entity/RenderBullet.java | 11 +- .../render/entity/RenderMissileCustom.java | 53 +++ com/hbm/render/misc/MissileMultipart.java | 51 +++ .../tileentity/RenderCompactLauncher.java | 9 +- .../tileentity/RenderMissileAssembly.java | 81 ++-- .../bomb/TileEntityCompactLauncher.java | 302 +++++++++++++- .../TileEntityMachineMissileAssembly.java | 29 ++ 48 files changed, 1234 insertions(+), 180 deletions(-) create mode 100644 assets/hbm/models/rpc.obj create mode 100644 assets/hbm/sounds/weapon/hkReload.ogg create mode 100644 assets/hbm/sounds/weapon/hkShoot.ogg create mode 100644 assets/hbm/sounds/weapon/missileTakeOffAlt.ogg create mode 100644 assets/hbm/textures/items/ammo_rocket_rpc.png create mode 100644 assets/hbm/textures/models/missile_parts/fuselages/f10kerosene_silvermoonlight.png create mode 100644 assets/hbm/textures/models/missile_parts/fuselages/mp_f_10_long_kerosene_silvermoonlight.png create mode 100644 assets/hbm/textures/models/missile_parts/fuselages/mp_f_15_kerosene_silvermoonlight.png create mode 100644 assets/hbm/textures/models/missile_parts/thrusters/mp_t_15_balefire_large_rad.png create mode 100644 assets/hbm/textures/models/missile_parts/warheads/mp_w_15_nuclear_sun.png create mode 100644 assets/hbm/textures/models/rpc.png delete mode 100644 assets/hbm/textures/models/telex.zip create mode 100644 com/hbm/packet/TEMissileMultipartPacket.java rename com/hbm/{entity => }/particle/ParticleContrail.java (97%) create mode 100644 com/hbm/render/entity/RenderMissileCustom.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 19f8ceed7..3cf246ba6 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -86,6 +86,10 @@ hbmfluid.biofuel=Biodiesel hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.cryogel=Kryogel +hbmfluid.hydrogen=Flüssiger Wasserstoff +hbmfluid.oxygen=Flüssiger Sauerstoff +hbmfluid.xenon=Xenongas +hbmfluid.balefire=BF-Raketentreibstoff chem.TEST=Test chem.FP_HEAVYOIL=Schwerölverarbeitung @@ -1447,6 +1451,7 @@ item.ammo_rocket_emp.name=84mm Rakete (Impuls) item.ammo_rocket_glare.name=84mm Rakete (Roter Schein) item.ammo_rocket_sleek.name=84mm Rakete (IF-R&D) item.ammo_rocket_nuclear.name=84mm Rakete (Привет) +item.ammo_rocket_rpc.name=84mm Raketengetriebene Kettensäge item.ammo_grenade.name=40mm Granate item.ammo_grenade_he.name=40mm Granate (HE) item.ammo_grenade_incendiary.name=40mm Granate (Brand) diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index ac3bd5cbe..161eb1f80 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -86,6 +86,10 @@ hbmfluid.biofuel=Biofuel hbmfluid.sas3=Schrabidium Trisulfide hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.cryogel=Cryogel +hbmfluid.hydrogen=Liquid Hydrogen +hbmfluid.oxygen=Liquid Oxygen +hbmfluid.xenon=Xenon Gas +hbmfluid.balefire=BF Rocket Fuel chem.TEST=Test chem.FP_HEAVYOIL=Heavy Oil Processing @@ -1447,6 +1451,7 @@ item.ammo_rocket_emp.name=84mm Rocket (Pulse) item.ammo_rocket_glare.name=84mm Rocket (Red Glare) item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) item.ammo_rocket_nuclear.name=84mm Rocket (Привет) +item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw item.ammo_grenade.name=40mm Grenade item.ammo_grenade_he.name=40mm Grenade (HE) item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) diff --git a/assets/hbm/models/rpc.obj b/assets/hbm/models/rpc.obj new file mode 100644 index 000000000..b40acc5f7 --- /dev/null +++ b/assets/hbm/models/rpc.obj @@ -0,0 +1,380 @@ +# Blender v2.76 (sub 0) OBJ File: 'rpc.blend' +# www.blender.org +o Cube_Cube.002 +v -0.125000 0.500000 -0.375000 +v -0.625000 0.000000 -0.375000 +v 0.625000 0.500000 0.125000 +v 0.375000 -0.500000 0.125000 +v -0.375000 -0.500000 -0.375000 +v -0.625000 -0.250000 -0.375000 +v -0.375000 -0.500000 0.125000 +v 0.625000 0.500000 -0.375000 +v 0.625000 -0.250000 -0.375000 +v 0.375000 -0.500000 -0.375000 +v 0.625000 -0.250000 0.125000 +v -0.125000 0.500000 0.125000 +v -0.625000 0.000000 0.125000 +v -0.625000 -0.250000 0.125000 +v -0.250000 -0.500000 0.375000 +v -0.250000 0.500000 0.375000 +v -0.250000 -0.500000 0.125000 +v -0.250000 0.500000 0.125000 +v 0.625000 -0.500000 0.375000 +v 0.625000 0.500000 0.375000 +v 0.625000 -0.500000 0.125000 +v 0.625000 0.500000 0.125000 +v -3.187500 -0.437500 0.000000 +v -0.187500 -0.437500 0.000000 +v -3.187500 0.437500 -0.000000 +v -0.187500 0.437500 -0.000000 +v -3.437500 -0.187500 0.000000 +v -3.437500 0.187500 -0.000000 +v 1.750000 0.000000 -0.276250 +v 1.750000 -0.239240 -0.138125 +v 0.625000 -0.000000 -0.325000 +v 1.625000 0.000000 -0.325000 +v 0.625000 -0.281458 -0.162500 +v 1.625000 -0.281458 -0.162500 +v 0.625000 -0.281458 0.162500 +v 1.625000 -0.281458 0.162500 +v 0.625000 0.000000 0.325000 +v 1.625000 0.000000 0.325000 +v 0.625000 0.281458 0.162500 +v 1.625000 0.281458 0.162500 +v 0.625000 0.281458 -0.162500 +v 1.625000 0.281458 -0.162500 +v 1.750000 -0.239239 0.138125 +v 1.750000 0.000000 0.276250 +v 1.750000 0.239240 0.138125 +v 1.750000 0.239240 -0.138125 +v 2.250000 0.000000 -0.276250 +v 2.250000 0.239240 -0.138125 +v 2.250000 0.239240 0.138125 +v 2.250000 0.000000 0.276250 +v 2.250000 -0.239239 0.138125 +v 2.250000 -0.239240 -0.138125 +v 2.650000 0.000000 -0.345313 +v 2.650000 0.299049 -0.172656 +v 2.650000 0.299049 0.172656 +v 2.650000 0.000000 0.345312 +v 2.650000 -0.299049 0.172656 +v 2.650000 -0.299049 -0.172656 +v 2.062500 -0.500000 0.500000 +v 2.062500 0.500000 0.500000 +v 2.062500 -0.500000 -0.500000 +v 2.062500 0.500000 -0.500000 +v 2.437500 -0.500000 0.500000 +v 2.437500 0.500000 0.500000 +v 2.437500 -0.500000 -0.500000 +v 2.437500 0.500000 -0.500000 +v 1.812500 -0.125000 0.125000 +v 1.812500 0.125000 0.125000 +v 1.812500 -0.125000 -0.125000 +v 1.812500 0.125000 -0.125000 +v 2.187500 -0.125000 0.125000 +v 2.187500 0.125000 0.125000 +v 2.187500 -0.125000 -0.125000 +v 2.187500 0.125000 -0.125000 +v -0.125000 0.500000 -0.375000 +v -0.125000 0.500000 0.125000 +v -0.875000 1.000000 -0.375000 +v -0.875000 1.000000 0.125000 +v 2.250000 0.000000 -0.000000 +v -3.187500 -0.437500 0.000000 +v -0.187500 -0.437500 0.000000 +v -3.187500 0.437500 -0.000000 +v -0.187500 0.437500 -0.000000 +v -3.437500 -0.187500 0.000000 +v -3.437500 0.187500 -0.000000 +v 2.250000 0.000000 -0.276250 +v 2.250000 0.239240 -0.138125 +v 2.250000 0.239240 0.138125 +v 2.250000 0.000000 0.276250 +v 2.250000 -0.239239 0.138125 +v 2.250000 -0.239240 -0.138125 +v 2.650000 0.000000 -0.345313 +v 2.650000 0.299049 -0.172656 +v 2.650000 0.299049 0.172656 +v 2.650000 0.000000 0.345312 +v 2.650000 -0.299049 0.172656 +v 2.650000 -0.299049 -0.172656 +v 2.062500 -0.500000 0.500000 +v 2.062500 0.500000 0.500000 +v 2.062500 -0.500000 -0.500000 +v 2.062500 0.500000 -0.500000 +v 2.437500 -0.500000 0.500000 +v 2.437500 0.500000 0.500000 +v 2.437500 -0.500000 -0.500000 +v 2.437500 0.500000 -0.500000 +v 1.812500 -0.125000 0.125000 +v 1.812500 0.125000 0.125000 +v 1.812500 -0.125000 -0.125000 +v 1.812500 0.125000 -0.125000 +v 2.187500 -0.125000 0.125000 +v 2.187500 0.125000 0.125000 +v 2.187500 -0.125000 -0.125000 +v 2.187500 0.125000 -0.125000 +v -0.125000 0.500000 -0.375000 +v -0.125000 0.500000 0.125000 +v -0.875000 1.000000 -0.375000 +v -0.875000 1.000000 0.125000 +vt 0.913043 0.173913 +vt 0.913043 0.260870 +vt 0.782609 0.260870 +vt 0.565217 0.000000 +vt 0.521739 0.173913 +vt 0.434783 0.000000 +vt 1.000000 0.173913 +vt 0.913043 0.043478 +vt 1.000000 0.043478 +vt 0.913043 0.000000 +vt 0.608696 0.043478 +vt 0.695652 0.043478 +vt 0.695652 0.086957 +vt 0.782609 0.173913 +vt 0.869565 -0.000000 +vt 0.608696 0.000000 +vt 0.695652 0.000000 +vt 0.608696 0.086957 +vt 0.695652 0.173913 +vt 0.391304 0.260870 +vt 0.391304 0.173913 +vt 0.347826 0.173913 +vt 0.347826 0.000000 +vt 0.391304 0.000000 +vt 0.195652 0.173913 +vt 0.195652 0.000000 +vt 0.152174 0.173913 +vt 0.152174 -0.000000 +vt 0.000000 0.173913 +vt 0.000000 0.000000 +vt 0.347826 0.217391 +vt 0.152174 0.217391 +vt 0.000000 0.217391 +vt 0.565217 0.260870 +vt 0.565217 0.413043 +vt 0.043478 0.413043 +vt -0.000000 0.369565 +vt -0.000000 0.304348 +vt 0.739130 0.391304 +vt 0.760870 0.391304 +vt 0.760870 0.456522 +vt 0.739130 0.586957 +vt 0.739130 0.652174 +vt 0.565217 0.652174 +vt 0.739130 0.326087 +vt 0.760870 0.326087 +vt 0.739130 0.260870 +vt 0.565217 0.326087 +vt 0.760870 0.586957 +vt 0.760870 0.652174 +vt 0.565217 0.391304 +vt 0.760870 0.260870 +vt 0.760870 0.478261 +vt 0.847826 0.478261 +vt 0.847826 0.521739 +vt 0.739130 0.456522 +vt 0.739130 0.521739 +vt 0.760870 0.521739 +vt 0.565217 0.586957 +vt 0.565217 0.521739 +vt 0.184783 0.586957 +vt 0.097826 0.586957 +vt 0.097826 0.413043 +vt 0.847826 0.304348 +vt 0.847826 0.260870 +vt 0.934783 0.260870 +vt 0.760870 0.434783 +vt 0.847826 0.434783 +vt 0.760870 0.347826 +vt 0.847826 0.347826 +vt 0.847826 0.391304 +vt 0.760870 0.304348 +vt 0.021739 0.456522 +vt 0.000000 0.413043 +vt 0.934783 0.347826 +vt 0.934783 0.434783 +vt 0.934783 0.478261 +vt 0.934783 0.521739 +vt 0.934783 0.304348 +vt 0.934783 0.391304 +vt 0.055813 0.418992 +vt 0.097826 0.500000 +vt 0.043478 0.500000 +vt 0.391304 0.043478 +vt 1.000000 0.000000 +vt 0.739130 -0.000000 +vt 0.608696 0.173913 +vt 0.521739 0.260870 +vt 0.195652 0.217391 +vt 0.043478 0.260870 +vt 0.565217 0.456522 +vt 0.184783 0.413043 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.707100 -0.707100 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -0.707100 -0.707100 0.000000 +vn -0.707100 0.707100 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.320000 0.473700 0.820500 +vn 0.000000 -0.500000 -0.866000 +vn 0.320000 -0.473700 0.820500 +vn 0.320000 -0.473700 -0.820500 +vn 0.000000 -0.500000 0.866000 +vn 0.320000 -0.947400 0.000000 +vn -0.000000 0.500000 0.866000 +vn 0.320000 0.473700 -0.820500 +vn 0.000000 0.500000 -0.866000 +vn 0.320000 0.947400 0.000000 +vn 0.554700 0.832100 0.000000 +vn -0.147900 -0.989000 0.000000 +vn -0.147900 0.494500 0.856500 +vn -0.147900 0.494500 -0.856500 +vn -0.147900 -0.494500 -0.856500 +vn -0.147900 -0.494500 0.856500 +vn -0.147900 0.989000 0.000000 +vn 0.000000 0.707100 -0.707100 +vn 0.000000 0.707100 0.707100 +vn -0.554700 -0.832100 0.000000 +vn 0.147900 0.989000 -0.000000 +vn 0.147900 -0.494500 -0.856500 +vn 0.147900 -0.494500 0.856500 +vn 0.147900 0.494500 0.856500 +vn 0.147900 0.494500 -0.856500 +vn 0.147900 -0.989000 0.000000 +vn 0.000000 -0.707100 0.707100 +vn 0.000000 -0.707100 -0.707100 +s off +f 10/1/1 4/2/1 7/3/1 +f 5/4/2 1/5/2 10/6/2 +f 8/7/3 3/1/3 11/8/3 +f 9/9/4 11/8/4 4/10/4 +f 6/11/5 14/12/5 13/13/5 +f 11/8/6 12/14/6 4/15/6 +f 5/16/7 7/17/7 14/12/7 +f 2/18/8 13/13/8 12/19/8 +f 1/20/9 12/21/9 3/5/9 +f 18/22/5 17/23/5 15/24/5 +f 22/25/2 21/26/2 17/23/2 +f 20/27/3 19/28/3 21/26/3 +f 16/29/6 15/30/6 19/28/6 +f 17/25/1 21/22/1 19/31/1 +f 22/32/9 18/33/9 16/29/9 +f 24/34/6 26/35/6 25/36/6 +f 25/36/6 28/37/6 27/38/6 +f 38/39/10 44/40/10 45/41/10 +f 32/42/11 34/43/11 33/44/11 +f 38/39/12 36/45/12 43/46/12 +f 34/47/1 36/45/1 35/48/1 +f 32/42/13 29/49/13 30/50/13 +f 36/45/14 38/39/14 37/51/14 +f 34/47/15 30/52/15 43/46/15 +f 29/53/11 47/54/11 52/55/11 +f 37/51/16 38/39/16 40/56/16 +f 42/57/17 46/58/17 29/49/17 +f 42/57/18 32/42/18 31/59/18 +f 40/56/9 42/57/9 41/60/9 +f 40/56/19 45/41/19 46/58/19 +f 77/61/20 78/62/20 76/63/20 +f 51/64/21 52/65/21 58/66/21 +f 29/53/18 46/67/18 48/68/18 +f 44/69/16 50/70/16 49/71/16 +f 46/67/9 45/40/9 49/71/9 +f 43/72/14 51/64/14 50/70/14 +f 30/52/1 52/65/1 51/64/1 +f 79/73/3 49/74/3 50/36/3 +f 49/71/22 50/70/22 56/75/22 +f 48/68/23 54/76/23 53/77/23 +f 47/54/24 53/77/24 58/78/24 +f 50/70/25 51/64/25 57/79/25 +f 49/71/26 55/80/26 54/76/26 +f 60/81/27 64/63/27 72/82/27 +f 71/82/28 67/83/28 59/36/28 +f 62/83/28 70/36/28 74/63/28 +f 61/36/27 69/83/27 73/82/27 +f 48/74/3 49/36/3 79/73/3 +f 47/74/3 48/36/3 79/73/3 +f 52/36/3 79/73/3 51/74/3 +f 52/74/3 47/36/3 79/73/3 +f 51/36/3 79/73/3 50/74/3 +f 82/36/2 83/35/2 81/34/2 +f 84/38/2 85/37/2 82/36/2 +f 115/63/29 117/62/29 116/61/29 +f 96/79/30 97/66/30 91/65/30 +f 94/80/31 95/75/31 89/70/31 +f 92/77/32 93/76/32 87/68/32 +f 91/55/33 97/78/33 92/77/33 +f 89/70/34 95/75/34 96/79/34 +f 93/76/35 94/80/35 88/71/35 +f 99/81/36 107/83/36 111/82/36 +f 98/36/37 106/83/37 110/82/37 +f 113/63/37 109/36/37 101/83/37 +f 100/36/36 104/63/36 112/82/36 +f 5/14/1 10/1/1 7/3/1 +f 9/84/2 10/6/2 1/5/2 +f 5/4/2 6/11/2 2/18/2 +f 2/18/2 1/5/2 5/4/2 +f 8/21/2 9/84/2 1/5/2 +f 9/9/3 8/7/3 11/8/3 +f 10/85/4 9/9/4 4/10/4 +f 2/18/5 6/11/5 13/13/5 +f 7/86/6 4/15/6 12/14/6 +f 11/8/6 3/1/6 12/14/6 +f 12/14/6 13/13/6 7/86/6 +f 14/12/6 7/86/6 13/13/6 +f 6/11/7 5/16/7 14/12/7 +f 1/87/8 2/18/8 12/19/8 +f 8/88/9 1/20/9 3/5/9 +f 16/21/5 18/22/5 15/24/5 +f 18/22/2 22/25/2 17/23/2 +f 22/25/3 20/27/3 21/26/3 +f 20/27/6 16/29/6 19/28/6 +f 15/89/1 17/25/1 19/31/1 +f 20/27/9 22/32/9 16/29/9 +f 23/90/6 24/34/6 25/36/6 +f 23/90/6 25/36/6 27/38/6 +f 40/56/10 38/39/10 45/41/10 +f 31/59/11 32/42/11 33/44/11 +f 44/40/12 38/39/12 43/46/12 +f 33/34/1 34/47/1 35/48/1 +f 34/43/13 32/42/13 30/50/13 +f 35/48/14 36/45/14 37/51/14 +f 36/45/15 34/47/15 43/46/15 +f 30/58/11 29/53/11 52/55/11 +f 39/91/16 37/51/16 40/56/16 +f 32/42/17 42/57/17 29/49/17 +f 41/60/18 42/57/18 31/59/18 +f 39/91/9 40/56/9 41/60/9 +f 42/57/19 40/56/19 46/58/19 +f 75/92/20 77/61/20 76/63/20 +f 57/79/21 51/64/21 58/66/21 +f 47/54/18 29/53/18 48/68/18 +f 45/40/16 44/69/16 49/71/16 +f 48/68/9 46/67/9 49/71/9 +f 44/69/14 43/72/14 50/70/14 +f 43/72/1 30/52/1 51/64/1 +f 55/80/22 49/71/22 56/75/22 +f 47/54/23 48/68/23 53/77/23 +f 52/55/24 47/54/24 58/78/24 +f 56/75/25 50/70/25 57/79/25 +f 48/68/26 49/71/26 54/76/26 +f 68/83/27 60/81/27 72/82/27 +f 63/63/28 71/82/28 59/36/28 +f 66/82/28 62/83/28 74/63/28 +f 65/63/27 61/36/27 73/82/27 +f 80/90/2 82/36/2 81/34/2 +f 80/90/2 84/38/2 82/36/2 +f 114/92/29 115/63/29 116/61/29 +f 90/64/30 96/79/30 91/65/30 +f 88/71/31 94/80/31 89/70/31 +f 86/54/32 92/77/32 87/68/32 +f 86/54/33 91/55/33 92/77/33 +f 90/64/34 89/70/34 96/79/34 +f 87/68/35 93/76/35 88/71/35 +f 103/63/36 99/81/36 111/82/36 +f 102/63/37 98/36/37 110/82/37 +f 105/82/37 113/63/37 101/83/37 +f 108/83/36 100/36/36 112/82/36 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 4522196c3..5cceeb6b4 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -109,6 +109,8 @@ "weapon.magReload": {"category": "player", "sounds": [{"name": "weapon/magReload", "stream": false}]}, "weapon.rpgReload": {"category": "player", "sounds": [{"name": "weapon/rpgReload", "stream": false}]}, "weapon.boat": {"category": "player", "sounds": [{"name": "weapon/boat", "stream": false}]}, + "weapon.hkShoot": {"category": "player", "sounds": [{"name": "weapon/hkShoot", "stream": false}]}, + "weapon.hkReload": {"category": "player", "sounds": [{"name": "weapon/hkReload", "stream": false}]}, "weapon.reloadTurret": {"category": "player", "sounds": [{"name": "weapon/reloadTurret", "stream": false}]}, "weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/hkReload.ogg b/assets/hbm/sounds/weapon/hkReload.ogg new file mode 100644 index 0000000000000000000000000000000000000000..35e2a855bb611e460544abaade45aef3a84d4eb9 GIT binary patch literal 9563 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 VT)vqiOFvP_6sN%Q_#1`u{{pj{3mO0b literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/hkShoot.ogg b/assets/hbm/sounds/weapon/hkShoot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..883b0e46a39fb7fa8fc73e9ef150d80b9c2dc337 GIT binary patch literal 13919 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 C3&rsO literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/missileTakeOff.ogg b/assets/hbm/sounds/weapon/missileTakeOff.ogg index 86b337ffe5946a7c05cb934950e01ece6969e875..492bee9b5031e09f35d73f1c93977d8abec91117 100644 GIT binary patch literal 42214 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Ξ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�!JaO;QAk=`Vsn2^vFF-?jfB?KZws!A6G0-=h44W&ynNN=Hc zkSbM05Ty&D1f+^mRS>0!ib#3S|6S|e`)xj+HD}J5ndjO2x5J*BK8|9q6aeyNZA@90(+#SGl8~mpzb@5ne zoOPP>LwYX|pu+(Vh~w9kh-!58RHlbD6;XzVkmq@b$@sCon6S4A*|8jH zPC4)Xa<;DCPvO#G={jkyoTX%{IN>eoqgZvwe`sSqbGfHCc(&H`0UWI<+PxLrB~um- zlMldQ&h^Wz9FAVA`Xv|QCb3rYPu2M4Su2=>_tN&*5ot{G@eQ!ekZ##3;`BB*vt`uC z+1O*|2ks(UIYN0cV3m7X3!NEoX5J2k`0bEB9CIG)bZYP3Yv*jH5wKMm*mZPmj6H&B z<`$Cp+mI$eLc}&fvPk|bI5d<{O?NSJ2C<-vZaO;VYsWpE5#BsPQ!^!=YE8?%q zxvEbBB_B=%H&#F0ui8JjZ%v`=FkW?4F-~vlJHPsxZt3v->Vr0|AwlKk%xiNEFC61; zIZM*KgMF?{4X>+C7Lqpu8(ukYDURHg3HkTxwatWo+x9Onw3rWq&9dzgRgw;V!xRr< zfr^~aRs-cJV1b2{3SzJQVO;5VY*NUgdNa^gR_~1??BMKi7-oQ!j4;5U8qzncQK)2q z43Z?xnK{Oc}p* zyjPXHSueG5^3S*VKaE#1i#mO(L}SK7u-TudTy-q;d?vzVLDueS;875m9R`w8aNRvt zfE7Gk42(}j?H>#Ck9KUmwD~WMj_Mv)))gH#lml3S1uBP-10+j~K$?u3ATgQZMVD|h z)_`D(Be~IR5JN!$8_hf1_U+AITqZB^-}$rR7HynNxZs14x(4`6J zH|+NhjxTq|%N#b%BG4URrchBnZyxOxgUzz30@A7JxbRj8MYOTQT=1k~4{@Ri2KLa;AP7NAX5sK~xs55)oo?Yiw^Oakv zPjofspTiTuH&q}YT0}Y@h}}T}yAvXZWy)i56KC2BMmI?x{k z$ndrRz3u>Ba@(`JmdE64R*|H$NAd$Gubml z7yhp6q>JQ-vpt`^y<5UuW*m0QMx7?P|2%VjeMU!`{^hm*hlF2(8;QJ3!}XVw9*MI2 z_NEo-b)ePq&mEm*@4X4dFe4l8noane5(S{$})u|Kz^ z3PtbwDiNc<7aFcpH>WF4(8x}=!~n+j*^o5( z{M57OJ?)V%sr@1fQ6_tnzhg-&V{C&paORaTCTPZR0Z2I_f*F|hz@6i6jj&yB*$*k^ za>pjGgbY8C-+Hr04QN~Hj3iYLT}W7i@f?U6!pN0eGB#R$R%yT4LcABJUil0~2)Hiej&@uWAO%*|lL;90td}@El|@N|>yRJWUW& zXtk+G-aV-LvDJpS(nH~sNF`BcV|@v^G07TMw(Jdp(%nWe&{q8$y^7BdcMLYAdkX$I^n1L)!gaLspLnI7iY=L7b zCB2{K9<`&J_3cnGikelHD@#XqZTyg1|C|ymz9M?Ugzw6}#gy6SQX$01?d18jueWtI z`M2K}wb*ubDH6|GU*VXUXq9vi9Pxy2v7!cG*{*y`TUz#!OoFj8o|T--)Ks$gb>t!C z{q<`nT0qq#JJ<#1d9A{vKZc>~uuu?y09=4E2g|1|h3KAKm=D#f6h0Pu3EE_{dYPz8 zR*_dfZ*vTb9U2Z4~>sD^IDl3a|&xw8OJpkdX&QaR-T^ztDao)@ZK zHm*oHzHCu5&XUT7xR#xad9`@`{i~^^^Upl+b$Vt>^;kn8sf?fX(~gf`HhcKZdes=U zTMyD{g8d$yyW#<{M!r87Rd+TNbBZI4xPt#)%8+S{y>F^BJRAQ!H4bex99eK16v-X> z1|$k+W(Tq7$z%8P3x)T1VP+n?7xfgjBt!K;7Qmz5I0)gVp6vUj`UKH6^u>jQU|?(~ zkwG+ouHJzEefmYbrE4sXu8kTmk<2Dqlp@x;Re8Ilimz{ow8>Y*^(!#aec~xDuq!`5 zbgkY{CHbVi|B@Kr$s*o*MNod-{~NjR0@{{+;r2>x#Vy|xbV}4-VL1f5dZzQ&Yyte! zV7&!j^jgCSyW`U%!J3YFAO19=*7lM30kHKSru!gyLRcs`l=(>Bd(GGUTJ?GmIDwIV zBpcZCv_oz|U!Mc?ACO@*Ks{cILz*!0yh4omGPz|ViA+q+`AM?hXlmUnIu#b%WSeM}2FE;CQ$ z*ZLTXT=`{4d-*aZba_I%Bn%qH&8EV^@&DNqESuZ^SGnKv2SjYQX_eDX9Ux;kcGRC*Zh9=kE&-J}%c0NXVAr~ctoB3eX&nuY0 zRs%aEulKr+=-}=ItDwzhpUeMSUG0CJ>nG3i$p>YQqr&c?5tF=3 zC~Y<=`M_OYRj!>NaG1Hlaa1wvwcLWCwgv260U+gP*BSC-*2!Y&*SiX+XVcII;z*qi=dvbD;dxO`H@4{jm%i+2g=F|h$99bWUA{Wf< zcxRH<&uFfov@y}$hK^Mn>|J-w21&j#jb{d)eSon<)@N$>4ppn77w&xxwLe=acmJMe zrovJGKqvNV{Lu4;2)KyW8 zJCdK25G)pnkanw`DMeCf0yEkD$z}~D*3uc6mD3c2ZKF#|l0dxQhN?guRS{mMKe4#T zTj;u=8Lo@)^M>)a3z|UnVxn&iou_KyykY)@|H-tBTu_AU zC;|km7_XlbW)~ti*?3Enyz|uKqPONlUCjZt)Uv=s6^<_HR-&>sk^=QEZ6KFeH((5C z$QLU(RCXhzU$6lODB%f7ei(sen7UpX`FU_-(2M1YC%!%$FO4YO4;TTksG`i!4)JQX zWvRCU0-PvCB7{getj5wqqxMw@SDJPKqZ7?M(IA8icxDK zfBN7giMyr7xK+=7%@g?l_eAIpH6vDxwSns+h}He0e2w4F>1$@GUvMn(4CwiUha&p- zeDoY=C`|Y)>Q{q{V!!*-#PM2-8Fne3htg%xl%}x_VlqMK7MU(cp=nz5j>0W&NEny4 zLaYx;(HoN4KOP#jn+wRj`=de3)NQuJhM(O!Uxx7Q!_7T^$cR&)rr~o_kV*7NAi0lk_Vslf7TJh1x2|aZ`h7V|S_1S_RxRw$bKf zH5GO)ewZWZNDf%yd%~H_dnxMs=O1tlF{vU|Al$47-H`iYEINJL%X<<1-)PsKxW;;+ z07Vy>=ub`n^zI)qDCq{5RM|>6B-$yJSgwn=xkn^5HT}gm^Z%YX@!mLFm=en3QMEE! z8UAlIHOO7EF_H+X_I%n>*!mEv z#577M9-@vNM>}=-Md;KSqw@Qri4J{%tLTJ9ZRwOTW7z=p0D^%!USq=Q{u__g=Bf7Z zt8Kz4#TwMJk9*2#luPZLXvBoLO^1(0E|*NgMUOvrc_Xq_JOxHIyKi-yOc2VGC%>cT z9N9J4{0{C!?n|gEwB0E_TmO!qr1DBcKQEE?_(WbtJD;pqg!K#ZhRT+BjH#D)JO`A2 z8f=UNu>iA;-S=H7FSu}i>wiZJVt_bE-g)<;1dGn!LuD;)yMrfv+3#li4V8>s2Ks46 z7^BQN1!b2BL_6}X>Sc&{Ys%xzDi(u|W+ zF8em&ITJ9;{(2LRcF-ny&@hOLYJ)?UYWkvb!z!cmuR4!$@W7c8!cbWnmEPU*dj z%W*Xg;3y=Nk8OmasIU^x-#&5LKfTT9X4X-vv+fNR^ECp3Vi-1_S0${e!M8e@YS>S* za`S>%^MKDUL)tX#Mc9SP;@84qTthsnqN8GlVbZ(DDjW-{Po|tvd=7Pduf39F+*&LN z$!7q-7)lb=IL=Ly%|%r{%Tl{7(Z^+fwbec?QV;565X1U~bpD9Ii@PVmrlSiSVhb#w4mr|J`RsM9s?c|cxTb;=`P5Of z8>PRB`}f3gq1qii>*)a!{noY0lS5NE8;0X>$K2N#Gr&Y0x zN(VIw9vzQ2tId=(E!g@*LP^48E6)6>^+o>ip~=!85t|>V2@YBYu!VXah>CnCld1!- ziVdDsbmnR2P7I#vDFO$9he5_{fC)nZp-SQlS2;Ze1pd_xuxQntrPF{qe)S8Ck+OF> zc>s=>C6lC^28ISQaW>1Qi0dvyyg&vgF5|~bZ4v2Z?k7A?l3PnP?8CqOmUr7P@k_pXFWzp~#Ybf! zuyQxIsLamir8CK#rG%M8(3se7!axpk@k_Q$iZ^kl|1)r;++uUaAG14&T~48T0pX@6}85T*6!VG+si&Y_Xyq09hvf0PX489*va2_W+G7>;`v-)2K`7w|k z!aBNkDqmOtki$F2(c@EWVTOQ}2#1ITc#~*1@-Ug6)SuUGEp3FGak=WAjF@W5LPEqx z4a@P+pO2?%g}vKF(`t^tvd#B@2p)IA6=CKtu|mp3j?|^wB78kOo!!qA?|n0@yvq3T z<;LL*_IwSON3FpfjSK8xmLlSCQ%-Nd@SjOCEXp=wCAo#)d_jL5UKKm3*D(sUV|fhH z_K67x=gEElVUdk@HQgA6nas|Y<6_?xOc#cg8oeo?9-m@ys&By30VzCcJkezkTe(4$ zp-ci;G4w5h%Ru5g_w;w#AxRZ;DbQYSWX!MeUnf7- zH7|tugxGDuA1X4>KnG5TxqjpV&(!`b@zX6o$+;3MZ^Ud{E@*ekbUMq@d_hf#|D2h^ z%}}PJi+5gpp1#u?&c>Mi1=D7G1UMVzzVFwN62Y=6|1)sRiYW`&KgIpFeh3+aMhoc> z&?{6jr4|B7GqW~Vlcx9Q%{0ki^im)w$@r)M^Mw7PDcrXeQuCyG=|El9p01Ha_t3iG z#P|srh5b>)(uuV8N`tzkipRf)-SQmtL~d9ew~9@TmCe|7A%u$R54K#q)??(T|b4@#iAwU*7XtCYnE*N+1y*CmA&N_9v0RI(9FN-%s(>@y~8#ZDoNR)Z* zq~nmg%^AojKsAXM<#^A(SoLqsW?^V$i2+}Cs)jXPCcRHQ`RuR5P`I1oescaB;gIUJ zi9o!Sr+1cCpRc<;sL#j~)42t8s+oZGnwMdC$7xqA>#%hh!4>2N%y(W#zL-)^P+j!;$^!qa1jCHbw+|5|6T<^ z2#>qn5nDJxs2}|U>3@#C!JkThl87TylhlV%5bo+xsK$x~3eWsvEP~@wCFQR6G9|>N zB75WF4~Yq4`G{6U4t|c&40NQ^XnJ*pncS+^*jd0JD5w*d+K0J=_NQ1)*ke*UhF5D7 z!poTxu@DHiutenIe~n%h=GC)CP)d5!3@STG(_qqFFe?_Iq+t>00V#+an&{F$d%2WVOo#wQ0ANz46}W^& zCBeEGI1`zR3Y2@HU2Mw3oW(pUPhfb-E+&*llYP8$&%@zlV}P)sgw<5vM@x7;*SDC- zwBLJ!1DvgLIQ4sz^MbP^nRT>JlGr~`8XqWO-9vhfc<(YMa8|+!&R!B`9%7AXpFtUL zw#E^Q@Trz0K$)Cqd?*Q6@C1C@1k8z&jpP5UJ70W0Bofe{&+dz@Gx}B&uz-)O|GeXn zux9|00id7|68{-OL(5V}0dxZZt)e%*#&de@TGqZ19%?db^Gl#G05Wi$=Hn90c#K(+ zqf0(ta1kWCNT9OLrMFI~uWq|pUq?@|tMw#sAH z8??bgwh%?D{3bV~uL<07E((yxHjZdoWpE8RKub~)n$XfryLf09t8c$p7e^G8_(nmB z9;~MXtq1GnDNaJTL2>kkI<>2eC@gL=*SAIqib@p2GyTtj`&SeJ#kq2li2zz4vRFF)izcX#Bwlkg zpG&$^P#^VC}ll+dS)hrGBLFXd});V@<25J zq~MRTa5$NPNHG_DPWFu#BfEm4RVIhV=p!m}Q%04v%A?Q-t@2JZA~DSu0V9X{(;)<) zoo0x5;SwX1i}2Ja;;Aq`*CMg?ajKng`2-SK+0<#~n;`kUTLzw&IthbfF_W&k*oj#! z7vYjgI~QU6q}>1%pL+|6jY+o?EbpAQ>yyM~`huwFQA1FCzFSpOS8kLjb|M$qC)1f3 z(qFrt>3bRNn+l@xM=xoPZk4e-MLZ2O+QLQMAau|qxx}VS-!Ne4KBa0Jr7b{ zMX;-u$Zh#ame2tivJvDS6u)Sg&^nc$^Qx7U6WIr%ii#Kek?kuATema9egGLv#xWL# z+=Q=lq*mZav)uH>r$AJl8wCkB0l=n>2;gXo7T0&~jt4mOfJmio84Oc297LIIO@|cVt*3*#l&6j&AsAdbG7*YnRDqVqAdrHX z`gCN47|sOMk(t^r0|j@$q1ZG8vXV6gEe0u%N`^zBod`q%sAutwmwvQxf$|O`gbTK0 z6amG62H+0uG_pv*Jtl~{!vx_fh65kPrk;pFnZX_FU_?U@XvpwmqLSci1tn;N8>WQ* z)>;W@eZ3sT2+(9ObcW!mKvbBLNn|3fbQ~$nivv;BrqU5mF>33ACIc4`18KO4tz{z< z#6SQPibuoUv7Ol#?lS*H9PU~>k&be!T^mO{h2lU!6F$}O8SW$(v<#dP0bpj~2?kAB z(8xf}c{?+a3ALbELUTR3+v55R3&sMkQ$RkQaKI@0!qj2u(%Uei~I5z zMz@68HPFH(rxsDVG7JD9`U&)V8)asQggq}n3+67Sb|w@p3nmwI(Wq44L9L!#Fz~}c z(@@rg`syjeg&hW!G|O@Na5%P;5w2B^W26KCh!>c;UMU&cc}JcHlXC}#i;)zHsYBN} zB=C?*ob|;)bJ2&d<@(aX$vIOIa5!f)0z?HmEHS}>uS@VUl7a_P`{zKY z+*^a36nU6I1W$SKq=6d*!=jy-hc^k?ZW?0=@o2i83V&KYndH{jG_mNSE8oZp9!M5E zknAg33Tkt5UDG0I3oqi_QhUevQavGq>4w^WX@}QOr*0x`UOn72i z6wjKPYL@_d1tOtIyjfaQWFQlSjQxLNLK@5>=ehj<{{S8p)XRS#_<`=m zk3?;MKj4{7(1R2jQIrH_MqdB`3MB}}4%7uNSXe;wQb0{Tk3zsVL4Splg8>9ic0RDB zB9uXOfr|Tgfc-n`m4RYX2msYVEhxbNp%{XK|6TX*>_5fL|3x6gz?_y8?ROBsdu~H5u_TvnWX!3N1mvDXyRfwYFHnR0Kw+UKuh>Nvg5{r~jZ5 zDQ`?Nf}Arg3AO=A)kg^MrjE)$FwyjII5aI;S+m?P6#?N*BP>osz%_Z(XyFujB}Q1A1jxEOsAVB&ye5&G|Z|A>Rj;8VWr`Vzez7he+`oNVdBmKr^mNxdz?p}TmLL))kghmF00ss$} zqN=KdF9YK>CT5oFtZeKzI5-KHp7W-tsCfR*0gj4_|J;ruwa;Gxgxe9Jz$}b@k_pu@ zLEbg-wsLp(_V;(QceHbMyJvOJ)zQVl*WU5IyN3(P(ZTi}3gzIes$wtwK!F$d)Gy!3 z0zHk(b}E$9K#Bk1pE0`iQI4GyK)4;SN$}9KR((a|v!32fg!yl08%9_=FQjM(sp2iR z7IH3JJ9M%&<2O{V>chr3--Nx?i%@u*EBYH@Nn*a<5uKh_2BErB>JcXrwY#mT$E24d zo$PWNwq7t`n{scHmm;j6zxT&U_BZ>>mq&wDUh!E;Zjv=LGo5Bb>j$>{9R;cesFrtk z#fbokS#$Lpf801u^Q?tG>L$DSHUDI9U1GgGrgU;R+Q9v${^*C?`mt2&-s!i)Z-495>|WjYOtfTLZ3CII4q3fHize!JB%XXqR>9)gF77Ia z2lgO!gl2zx=XXu(TH3SRizC%tinrGKGj-w)`8f1m}apC;zx z^g=~Q(yv2JLo4x2f44fFsZ#OVztoo(^OWEkG!_1>DCntJ|3rI%8?@4o#Y$LyxR>bD zXojL&fHHb5P07b}sv|w@2kL>NWX<69E(7?N*qnkHR_{N4FgL0sOr_!zoaw%4)YbY* z$18#XziVwPzhW?jE4R3{u10%2xl1+owoFQ)vO?Zt$;1W`q3o$7y}!a>)jtT|dwWbW zOMDh8$pT(e961bT(e;1qf39q;NZz@8l7BHjleY5)n^Y2{zKVM}pIx_%(pG>vhlg}r zd}OON2wS9eQ`wTEk)*l0c!gEtdD7>w$gh4dJEELdLS5nOW&^H1OUIxem6SlNgu47I0Xi`gbdZKIzEO&EsaZRBmNGh;?vD1eg0{<@ny2;kU!rJa=gG+eCNd z2()Bn$seE@)_HD)YHSN^+%IxanswHF#^2K-P=Zc<`FXV3O4q2@^kt2Nf~g9s+Oxb; zR&c{z41XX|824q{Z@pRd`;V0B`^s`_m(?|JB}~TBIwrXLy!&^}ExbkI(5-Wdm;R_Z zEw-G|n*jN8d>ll8G|=NX;fOdI%Hy`+o(K+4H^ni~P9?#vhn&V&74sf!u51cfb<}d* zzf{k``rUU(+Nvv$Q$_Vjr(1Z0SJXAej})UkeMl>p(2y38LPhayAhq_ zKg0v`o$9UcDvwkb2`v~1-Y+43cRd~CGC;VG1E|oQo3ZOe>}H(x>5}G+0ICZr?GGtM z4ZJj$r%ZbX1Vou1AeTIN7T&p+H%ATpViMn4_?mdffC0L7n}2-6=qaPIiyocc?5P=~ z)-_4fRd(ue3mL19|8zfZw2g-TNE+I{+|$D| z5?M<$PE}AL@Appgh4SDhjvl{xy)V>2o=-2_P>6g)?$Gh@8!bn*T@Q!p(>@`o2m{(a zYFZDq8B2)7&!-1M+QZ^jsJnsJ-ih;IAonP*`xL(=8z8>ZKT!Zya#PkoXEM+6RrfC4 zqeIrZZ1kFdVvl^;mgUiNikCTB9Mw%1YCj*HVooM_Wj7h!ADz}^U^^4X0+6bQ%G(G1 zg^nJu6Y>4N;bCZ1g|DU1tYLn*$K4j;)w$WAp=seSW;W%e$DPh>qLV3lYojOF)_*8DTF2he_tA>p*cY=*zuquhn4^I_d{DnB;j}2zml15iRT5bk>+1jZ zmtf(NWa-$osgDCj9suM;r4_w{r0b=8ZGzBtLgE0MIW$kllXx2|; z?1}j;r7SPvWi?WTj98nW0$0U4e6n|Chy|(UeXY(qx3I?p$GF@TOa>Jz-_a|3)bU{v zDTVvooF8tlR+|$z3mIUd2R=Pg83{nwy9LmM=(@zgq?@wrpdl~lv~spHeVSVL`EEpEh=d(|>p9(&ypOj8wl&V#H*EH@@ ze(jy*d0++9`1!?d1kq({kaEv?u2*r-T#hJ@9#9Q@$&182>VByy-%gZMW^vEKEGJB3 zHSK1Ax@^uczXvvFgAM*B%bu6BQ*vLAwV_-0qxW!us2f_MI8dq1%aJu)hoA)-#ffa% zt0BKnwRF<;e?8-I*MbbUF3Q|E=Dd7OS7xg^PT>Jo_IU;qrjh3F$@O6JZ7klgs>9D0=?sFar9VbjxD$?PgJ-UKx~{$#;J+0= z=SJV>&c&3g<&eMq)pz2JF5b+>`mFyLo^?Bl32*ii+m-Zm&vJ=KGQM!8P2fj_C|L;f z!lZ|P67YL{Bkt***G0tdn&Q| zl)>C~=98~`M-CU?GOzaYhNe5CvcYnEr?STm6G}dE3D$0Emlq647WvM!F(9D;nos4T zGG&|7TGHe0H!t(EcYPdmA-O8MDSDG+E1z=}`?ZBhLe->)!L5j;F6!bZE%%<&=|3x| zZ(e#gIZIv*_EvpWtap#cJc8#jx83+P$v2#Jr!AK0yK+#SY3>5WS;8fdh-^J&y{@QJ zUwX|=A?)jfkoMhdvzRH70Gk_jz9}NNt3@A6d|10)FxGW)cXJ8#O zE~u47GodDaJKehD@@x$iumCH>DVhnxw9Ha0)2?8k&v~~(f(?a+Gsqg~{KLosO!INC zbx~(aK|kIiQE8g5bIKN`a4wduykP(s{?mPX`yC@?EBc6W1LtZ#& z>Qvlk+uqdn7=HEWj{anGB|{^ zXx02_X(x`1?_l-q^ElPJfB#a*xA{MoD)Q9qdvcUKAKb;eSEua@WP}1vGhbAB7LVe! zkDlC@-oBJl;%)3&`QFGPpVQ&N{hbo-=|W=(@Q7@O+@tV1evduR(_FzF<4yv6Au%hL>)6_MqJzbxTmCe zXR%We@rKf)=Q#IaamVjCkzc01?;S5#i~PlGnK2y16dhi`Qq`s>kG1$TR?Y?#G5#4HuiSnG! zsEJz}XFncS@jklN&1HojMWwU9=}Ne9<((z2%H*bmv3;cX1IhZUzE`cIFKY%JO1@+D zrvQN5-HWrcgIdjZawNj_w4Nj|X-6%WPqSpT-fFJyp@PPSF*=QK2M;Rzk#Do3V9Gl_ zQ}G&p^i{Z3a&?6()oX~&!EfFXA@yX_V^dE{x0aSsSH@tgcY5M=Z+C1;O`|c8FC+=x z`z-s2J?MPU_$NC&{`$<*c@h0aXX?yAG)ZM!V6ox0S9H2@|&+F zx;{ENxWgmO-LSbgDQuvhUusK>aR_xjdp4C*2DM9n8?c_Wl+Z3*kGa7MunV1shA<*E zExNvI?*sMjNmEg`JBgE0+BW~0J^FQ3M3*seK&3QWvNBNiF3Mvhx@>XUh~2$wP;f9k zID zF9{}{{K?o1A3zi+8eF6UZ!d4}JIcvb|MGrQh~M9-@&ohDoMZe@db!XS1Fl%U{2{(MF7PbN|e*UnLurPy_0-Xd6vv}GuUo~Hl<{D++Hq} zm@D!8=$=wE5--$&jcADXx4065asBP}eV8=X7W<=);o=FB%vMLF(nd=#veKAj(v{k- zz$|X1s*8Vh6Z7pgJ<%3JP->`*~dNaV)Ac6p8=p)l(O$%gkgo z_I=s%1T)L9`^tW3R@UcdKSb=wQ->>pq(^;^pX?0MI^7OukWF9U9a(%I>Pxwte8#I$ zlvpMAW4slu{H^Y!(}Eht%N0eOpHNRARKWo0MW#x;*x8}JKVP@7Sba!aXCGHe)vCnK zCGhen=^=u)&*EW7q=JU~oU=$mPq;R<>lgibzd4`x%XfI>pLNPu$-ShA$5K_GZT0G$7Cwz-CFdZO;D1gnK zopI^$roiS?f9)s$!v=e@pB=iIZ)(Crf#okX`eU@k1^$h>gE?F2?bp{- zoWdCIRIyKZs6S57jFg(8Fn;LfX3DDPCV*YC*wc+aE~J4EVt}wdKqI}#e0u~zuXeZ> z$J-zrM#N5au6&!}Y+pS@M1)I?&@4%fc210=+c<5mYf%VFq6>-Fv?mX#Z|x18I{ZDE zm-v1`tDmQS?+hjUPM4QV@(%^2PgVD!vRrm2toWJqcPkv0VHmA?_wu&KGwi#jLln`w z?LJUY)t4Z%4Lrg%ry;HI_0coodo0nxft0dzi0Mu5tH|Aivl%PDo3|D&8uo`oG4}<; zL>4$8b(f%QvhQ`*X4yXLuLspL zLBK!kRG%rP$*gzi?RuX6wzVdoy?!Jy+(DKjQ;FCNri_#LcK7xo&7NRfNA%&V6e;cp zXYCOg#zxi`Ct2zFdGZDKN!e?YR6GiwFqGBbAU;#yAW0H}wLaJO{PbX@qLl_GLwAWh z|9Tbpt&ugd$U|1E{UA;9z;-ksGn1x!&BG|=H2JmDO5%$N^AYjWP5dnuTRnwONLAe@ z>7t0MJ|JJqoq0`ckAyQdCjPLGHxJFuF6MGE#Rq&Z4R%Fplr=SO6b#(?oWGmK{`-jF zm(u$FgO2F@-TB;8mL0Z53VLx=Ok;}gT?J#$71K0*MT!*WbV{=38XBw8hc&~s;GLL? zZ;pDK`13bGWc;ma&7}_NFWU}++xR4WMR?`JuBg$A z1F`qwklpF3d4KdCEc`tgn=G1;X1rHU9~Ls-m>fc@vw~olFTG)v{~WitOy)CHJasEV zip~04r`OYJ6K2bg4TqXE)=EX_g8WYfsm77-G#F@QktOOHJ$6k#8Tphuq<~o@|3POhf4<9dB%fP$(&*H!FA;kzcF^tX^*v@9e>kFw%cpfcP=B| z&7Fh@-M)HQkZ)wvzc=L-O*-!2A-gF4i>&#(>*sF)iEwts#^OOY@J5tK1CV@bD{!4d zOKi}5KK57)5R@60K5#hbS7RT%ec8jS#WnL~4RST*MAB3_JQ5~=r8YclrY+?l=Fg~r~ zQB>$S?2o@{(HIMTeqFA zwRN8|JUTd%6>>CZ3O)s~keJy%V~Ff^Pey%U-wEax9$a!E>97JRCn;7apE!ol8!W?~bkSwHqc%N3U_aYy%4;MVuX@ z+9^wRZ8zoe^a{^7NzN#8#R0Emchj45TJh8wheZz)Z~TqRpw7@<-u0?(*_)SJ-P-P^Z&nDq65(O?mU;HTWyv{zJxTBRpDeen3-MkDveB)CJ_ zEQSU*i_B-zUk6_Z7Zd{TZ-aeXjjPmfZ5`xY$X4#j0LRFZ0fz!3UX@ew-OJ}eu zCV)rt#*WfRoL0PL4bR}0K-Gma(YK8&KeP5!3KQ_hVmZgZio7qO@H+^&F9o}@`m8{Q2V>>C~TmO%=lf3KI zq}YqrM%n(VWOa*{+NOc|T6)mq*wTj`qda+fLA`}%bNl7{;tCiIHE!T!nbT~wN1XgDx<~Mqh22*>W4Farv9r-zJSfrM5)VXL=^(nLostbeLYd zj9%EYgjMt2Fu=Q&-Kvz;-Dvv|T-DK~ZMADK1)-vMVtL1sNCGh0#9Aq-E%Ru-T>3uD zqHqfp;<={u$Kd+B;D(U#`#Pr@wM&(%IcdsfviS}-rR}kvw~_llzl9j`=~_6=H`Zk9 zn4;mdtCmmidd=R>5*fKlt><0eGQ3wm_SrS2l;|DBH*!FztuRVTr$1dC<>n>g?IJj@ zK3z7zB{-0$x>?DVf%R5TnMS}NRon6n{VC?}Ghr!5hEhiZjZ*mM>5(R)b-Z8hPZZk2 z1@&{F_uhV4%!}kxWSA_#JVvkuze#t;frWq&u(Api=1V1 zvEqH(*tcv&j^A%h9QE(3)Zo4x)0CG%%wA6@CusXzT&4Gg^y)r3f@i!*p zza1rdB(V3=Sh+s6tSB53WqQV(04b zeDt9IQu`|GIkoh>jagu+o8jLz`J6pT=0W$u*EhI(BQclxu1mse?NILx{tWIna( zdvv~p=|9CQz$wMvU0`SK2L<(J{+Hr&S*lrPHrKH8pS8ZKqGT&G#{yB^-6X=E?m)ULkM0l9*GD(}>{UWg{B;H6T)S25_ ztccei6NsGJi3lgPnLxo4)NV&Ts4O-hmb43bY$Q%o=O_+OeSUIaT)B$Sb#Nl jmcBX=SF!#!d%N;rEQn|_YW!A4VcOOwW#JJgfaZSyXbIPo diff --git a/assets/hbm/sounds/weapon/missileTakeOffAlt.ogg b/assets/hbm/sounds/weapon/missileTakeOffAlt.ogg new file mode 100644 index 0000000000000000000000000000000000000000..86b337ffe5946a7c05cb934950e01ece6969e875 GIT binary patch literal 11088 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/gui/fluids2.png b/assets/hbm/textures/gui/fluids2.png index 9203e0d99f981fc158355a1b1e3519be4b7b4840..0eccbddcc16aaa71e8dc2345c804f977d521d05a 100755 GIT binary patch literal 12215 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 literal 5037 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 O)J~mrvMoE|pY%UJWc*YB diff --git a/assets/hbm/textures/items/ammo_rocket_rpc.png b/assets/hbm/textures/items/ammo_rocket_rpc.png new file mode 100644 index 0000000000000000000000000000000000000000..0b16c97583130f0ecf9c19b9594d1d03f1b6f3b1 GIT binary patch literal 377 zcmV-<0fzpGP)qwA_+|AZ|$M;>^0HkRu#u(uRDPxQTK>)xo3=~D7<^a6KVgbNv zwPLwkGS`V$6otCoZnSL+KoA6^X=)++{r)M?11QT<4a4w~lZScTJm5Q%V_maun#o)| zci}n#IMy|%Fyse*;1WgRHUhRe%Q68t91dy{@C*42 zLpFWSdy)X)`#xH0Ta)LxdYb~Qn?_wg)=i_fNg@FE`yH({d7j&Yy(xfe+xLCD*LB@P z&A-n!%QDegBO>%ad7RH@0II5*9>JA}u-okvKpe;RO5-?|rz5~$+GDD!YSzcIa$S4@ XuY`SYzmvv4FO#tcYmreix delta 301 zcmaFIbc1PvNj<-(i(^Q|oVPa}`I-zwS{@$U@I=6tn_W?+b#Z|S-$6NZF>g&n#>vy! z|8EaGsCkx!+l7+>0q(?JExns$%jvyU#niW0%jW#%Jw|@59#};DOdHa8A-4|f*e3-J~@ca6zbL-D8v0j!LWT$b7HZB-y7wtm zQ|72+pPs&Df8{(@mHXd6g@3l;_PGB3sO{?ih8?fl6;FQ8|B?0YV>Sb8g#Q64WI_#@ ef9vso=^AEf-YoeAH5pexzVvkUb6Mw<&;$UaWr9Tj diff --git a/assets/hbm/textures/models/missile_parts/fuselages/f10kerosene_silvermoonlight.png b/assets/hbm/textures/models/missile_parts/fuselages/f10kerosene_silvermoonlight.png new file mode 100644 index 0000000000000000000000000000000000000000..4c57fc5661e522d4ef685bb157ccb6c9d1939d7f GIT binary patch literal 1227 zcmV;+1T_1JP)N2bZe?^J zG%hhNHvLWs=l}o&Nl8RORCr$Po4rpIK^Vp{YGR}!hJ;X17&L&v#2ERK<6B6KH5C;d z9VIa_p)!_q23u^Uu;c%rF!4W75|x5>-QV84FwVVq?9R-2?A^Y}FAMYW>^#rT9?KH? z21bVxm*Gbv$>jJ%A(*3SX++dNPr20>QjTCoi2{K31n}+4&q5RpK+|YN3;o;1ieHV4 zKTHHp!f|Zuady%N!{fPNEOTrPjdti88~!!-VmfhQ%N1Q9b2KfDnEJ+se`%ss0962C z3tU-POg_B(^bbq(wP^Y_#)f}sq9F^c&CWHL7bJwP4gjMZ=ci{I0+7D04#1@fpw|Kr zlk&AosJ@G_;a{3)$O4yZ3#xJ0SX~R&cQH2nOA`%U;Oq5`rsiYl+ZY@ErHRH|phgwI zO%34V`_I`iWPzfg(GGoM!@q1XA!LDhh^cRE_!q(&J_{^DEPXsANpeZyLcAH;Vl=e5 zdC;^pw7Ejsf5#4>a0u?nVCK!+hPLY{GAE+`Matdi0hEaIl-s==!0(iv4&YZxPX}<8 z($gP;e^TxT1)%+C5uB4XMVp%kO-n>OA}>~?*cXR0)H|K)ps#AGV`|C!^6Ym;NT#GukAj@nrZO^ za81+pa%v{2&D8&77OL-p2l{N|M@L7=*49?Cy}g|sH#avg18E3B6Af9QYhGh=;z_gs zXa`JT@c8&RIXO8=c6WD^y}iBcxU;j9wb3Ub$h?jO@HBD&a#gv?VwB_l{(csM-Dcko zZ4bZ=LB0>sccER(v(@dZeR_JDVeblV2?>F@(F0grTxtkGXvd$&X~zs(8*{StF^*}u z>arX7T(ED0=mCHh!mH(#X!h=(+$T1ToK1c7xp}=DR8Yzz|#8zS{D6VDAch`$Opia36#)$W>;mb4$p>5N%>! z0%*&FP#$9HXC~63U(A6RmO$)2#+qr}69B~+u+7>?zZqUHO_V`p41i)>E6lK~(nJ|p z1yI5O7z5h&2kAG%>!pb@sB8hyZ=3C@4?+5D;~jk;kcXK1v;(FvC=WvRL(qSHACQNb z`n1bcvh_RqKHxfH>eDU(RPO`K4!|_q zo;HwMpn4yW9>siD1ppXgYui^_J`e0&VQ+sZ{Xb3)j1CQ^MlR&4Vvwtx`+b1(Z>SlZ zgp(G5IhvLRW50hrQ*|^L+d_X3AF>MsF)V@DeV67bMKC)VgNjfz08OJ6E%f`16~AAG p6v46uaL-uDN}FqAhMDT?`wJ4VH)BMQy`caA002ovPDHLkV1jR}FslFn literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/fuselages/mp_f_10_long_kerosene_silvermoonlight.png b/assets/hbm/textures/models/missile_parts/fuselages/mp_f_10_long_kerosene_silvermoonlight.png new file mode 100644 index 0000000000000000000000000000000000000000..62865156d9670af6ac37a508f0ce58f78c6a4894 GIT binary patch literal 1647 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

JS}R| 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

AFeGnfhJuvmPcX= z%>|eqgJ`|GaqpOdqH|OQRG43LsW_}S(76?*l<`xw<$y}62`vg1wH_VC z&6DI6NfFgqc3xwHnzz`P_)h7+zL%q{9Pc-pOi4<%v0J?Gs%C}QI^of4sywY2BP(J) zd{Y*DI`8=*?IuDY;%Xe5OJ;w$XaL-2F_19aENr3pm^MZ3 zo&8(zVDvhZs}(Ubd!mL-m;DL*VC`vGFluuc2ffsuUwtfCxSoun8>QwI17pQ1H)1Uh1b2U5I;#^T(`=TuWd!QFE6* zbL2?u1BsQW$*LO2Wpk#icFJpkQm{c^#gmzSj87CsZ2GiL@(#C5{$hequ9H7U3N7cz z;{~a+)X3K_YoXpi);EL*MRo9sH)fh4xVghUbc|DFZ_J*iC#$LcBE+`L2%|e1Q_E@hMp{5iEukWtk4om=AaHQuo)$eFQ-TW&^PC!SMrt~!7TB07- z%!nE-kQ#oYEv@iK)Ijs=tSd?o{%|j`1p$b!YEoN|m;@XpsIQe!JX+Y%n{rRkfeR$u zAA%*>rM9BDAryu3(-rHB+X<;2*WJ4U_DgxK@&b{tsA2n2MX#G26QVGFx)z%376u0Y zn^%0xrWZAEaqliPpmXc~T>+hpekRwOHo|lF``H_>HUei@-I{FLE-iDpUR1iSfID?C zoNAbP3yu%Zm%K^I?y-%PIVUWuL6X}B*dV64ZqpjjDUZH4j%+_i-#p`3W^bXADt#82 z;bH@xZ~Q2&V}gC4@@=WjcMkPrw{tgWpxFa?uIh2i>sz&6{Et652*-aC?yraZU$w%m zA6-)V_^-NVX*znQ%`jHp@Ss~aTKvh+X?Hk$M)%0SpMS}x@X7hVH$Yd@P@_!!dC30& D{bK6e literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/warheads/mp_w_15_nuclear_sun.png b/assets/hbm/textures/models/missile_parts/warheads/mp_w_15_nuclear_sun.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9ca50703858eb18a2b9e1cb4a1b9b93be41882 GIT binary patch literal 1534 zcmah}c{tPw82%a5V3kxtmWZT8;~3>WVoYY7ZE}YkgE1Bp##kXFS1D$g#V#3gjHZm6 zSv92`Ij6`*2g4k@$vAc<$BzEofA)Kx_xqmrd%o{`zJJ~~$JH4oE3GUI0Dvsq@q)Xk zUfl(Fk0^g4CY%!$u{d{_EkJp#!WI#UFdL)|08k5MHUlL^Tq?%VD-HnmJ==v?Kc?=Q zsHqrleStSJ^Pe$NtcB zzV@R)5?!6tDEIWxH3mr2Qe#Z_SLBszHVh4rj=Z}9SV5ACa+7U=OWlM@m`HvN|wZxz=Z|52`1l?n)+JpM5|GJ>mGG}@5nLjWwsqH$d56`nXxF+ z(~l9-3**qtXUszbHE8MV2A%s(Gl%whdYmM*>Znl2khPVJ{qe=z3gY)6qb$aUaYL8U zO|HIM11>K-E^UdULAxA^+J4z^Nja(hi%t0MNoDV-aO$!gv!K_uW!us%rC@2G+hE6N zjOLQlIwHTda(*jWXkTBB%e|eg%Ju<&e=6%faZb2`uA*(+7ibp?)a221Y>civI>lkq zoIrG;r`omfEohvrKERX$I%gB_h1_`o6ResLJou?w z-jd5_#`4u}ZMR#~GONMAc~aB57bl)SHmGbA~MyHJgj41~TnN{NjvB9qBQo>GBPQF#t9Sh>wop%X-(QFPPQOpx^s*LzXCy>DV< z|7_)Wuy*C0$&9wv#3~HyNel8vmS+PK%CD`h?NML$#(+a1Y{N3bELir zR@$70@oO62q?#}*cJQsQ*OVaFk~LYLr;6u)8d|J=cv>Q^$x!0S=>D8O%Z|TubUXnA z=7w~i@3S&;`A$oaBJbJB(q5|3P{NkP559rD<4sNr37uM(oa?GL;- z_6RAg4CCCTh}qUnab|L8H+pg5s9SKw|qytwxqXsVVM zT-PBx?eH!A0DqzKgaKb^SGr0!l+s7=$&p3It%63)8@9h&-wB`qh+seM;{jmsht!i0 zc%ZVjIx+R|jQa9vIsubAfq$WETRsleB4VNU7i4UP2v}B+@U#1njB9NRQfVCvA!?}; zjgxz}i7LrrlX_^6qZF)eC0ipU*^H9uD&l)7wD%7%Tn0^1WF(y1T+5Q)KQq(Pc7Sc% VEQ06s`s=O@!tI?eP;9TJ{|k8g<(~im literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/rpc.png b/assets/hbm/textures/models/rpc.png new file mode 100644 index 0000000000000000000000000000000000000000..551015203d74ad3f572dfa1ca63217687b1a6301 GIT binary patch literal 1429 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 I<^g9X0Pccjy#N3J diff --git a/assets/hbm/textures/particle/contrail.png b/assets/hbm/textures/particle/contrail.png index 0832ce9366dc5e3ed28f8c92ec6fd64ad519cb5d..babd523c8c04edcfa4a91d1c25ad0452e525c553 100644 GIT binary patch delta 85 zcmZo=Y+{^X;%DjU;us<^wY2Y~AcFx1)AbO)=g+40G{53Ln7nYxl9F1R8C5Dzjbq&n plXr;Z%zk@SHN)ALO@r#|6bS&|kWA;}!nA{A u*3mf%B!xRA1vY1kn#A|u?OVyUJ%9`1fiJj`{kdiU0000 40) - velocity = 3; - else if(this.ticksExisted > 20) - velocity = 2; - this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - - for(int i = 0; i < velocity; i++) { - //this.posX += this.motionX; - //this.posY += this.motionY; - //this.posZ += this.motionZ; - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - - this.rotation(); - - this.motionY -= decelY; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ; - vector.zCoord *= accelXZ; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(!this.worldObj.isRemote) - //this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 2), - new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 300)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) - { - onImpact(); - } - this.setDead(); - return; - } - - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - if(motionY < -1 && this.isCluster && !worldObj.isRemote) { - cluster(); - this.setDead(); - return; - } + this.setLocationAndAngles(posX + this.motionX * velocity, posY + this.motionY * velocity, posZ + this.motionZ * velocity, 0, 0); + + this.rotation(); + + this.motionY -= decelY * velocity; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + vector = vector.normalize(); + vector.xCoord *= accelXZ * velocity; + vector.zCoord *= accelXZ * velocity; + + if (motionY > 0) { + motionX += vector.xCoord; + motionZ += vector.zCoord; } + + if (motionY < 0) { + motionX -= vector.xCoord; + motionZ -= vector.zCoord; + } + + if (!this.worldObj.isRemote) + // this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, + // this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 2), + new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 300)); + + if (this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air + && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water + && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { + + if (!this.worldObj.isRemote) { + onImpact(); + } + this.setDead(); + return; + } + + loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); + + if(velocity < 5) + velocity += 0.01; } @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { - return distance < 500000; + return distance < 2500000; } public void onImpact() { - } + ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9)); - public int getMissileType() { + WarheadType type = (WarheadType)part.attributes[0]; + float strength = (Float)part.attributes[1]; - return 0; - } - - public List getDebris() { + switch(type) { + case HE: + ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, true, true); + break; + case INC: + break; + case CLUSTER: + break; + case BUSTER: + break; + case NUCLEAR: + break; + case TX: + break; + case BALEFIRE: + break; + case N2: + break; + default: + break; - return null; + } } - public ItemStack getDebrisRareDrop() { - - return null; - } - - public void cluster() { } - public void init(Ticket ticket) { if(!worldObj.isRemote) { diff --git a/com/hbm/entity/projectile/EntityBulletBase.java b/com/hbm/entity/projectile/EntityBulletBase.java index 2f18a36e4..e49128d02 100644 --- a/com/hbm/entity/projectile/EntityBulletBase.java +++ b/com/hbm/entity/projectile/EntityBulletBase.java @@ -289,6 +289,8 @@ public class EntityBulletBase extends Entity implements IProjectile { if(config.plink == 2) worldObj.playSoundAtEntity(this, "hbm:weapon.gBounce", 1.0F, 1.0F); + onRicochet(movement.blockX, movement.blockY, movement.blockZ); + } else { if(!worldObj.isRemote) onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); @@ -448,6 +450,18 @@ public class EntityBulletBase extends Entity implements IProjectile { } } + //for when a bullet dies by hitting a block + private void onRicochet(int bX, int bY, int bZ) { + + if(!worldObj.isRemote && config.destroysWood && + (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) + worldObj.func_147480_a(bX, bY, bZ, false); + + } + //for when a bullet dies by hitting an entity private void onEntityImpact(Entity e) { onEntityHurt(e); diff --git a/com/hbm/handler/BulletConfigSyncingUtil.java b/com/hbm/handler/BulletConfigSyncingUtil.java index fe819ba81..5d8120743 100644 --- a/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/com/hbm/handler/BulletConfigSyncingUtil.java @@ -55,6 +55,7 @@ public class BulletConfigSyncingUtil { public static final int ROCKET_GLARE = 0x25; public static final int ROCKET_SLEEK = 0x26; public static final int ROCKET_NUKE = 0x27; + public static final int ROCKET_CHAINSAW = 0x28; public static final int GRENADE_NORMAL = 0x30; public static final int GRENADE_HE = 0x31; @@ -128,6 +129,7 @@ public class BulletConfigSyncingUtil { configSet.add(new ConfigKeyPair(GunRocketFactory.getRocketGlareConfig(), ROCKET_GLARE)); configSet.add(new ConfigKeyPair(GunRocketFactory.getRocketSleekConfig(), ROCKET_SLEEK)); configSet.add(new ConfigKeyPair(GunRocketFactory.getRocketNukeConfig(), ROCKET_NUKE)); + configSet.add(new ConfigKeyPair(GunRocketFactory.getRocketRPCConfig(), ROCKET_CHAINSAW)); configSet.add(new ConfigKeyPair(GunGrenadeFactory.getGrenadeConfig(), GRENADE_NORMAL)); configSet.add(new ConfigKeyPair(GunGrenadeFactory.getGrenadeHEConfig(), GRENADE_HE)); diff --git a/com/hbm/handler/BulletConfiguration.java b/com/hbm/handler/BulletConfiguration.java index cef9793f7..59e3efd48 100644 --- a/com/hbm/handler/BulletConfiguration.java +++ b/com/hbm/handler/BulletConfiguration.java @@ -61,6 +61,7 @@ public class BulletConfiguration { public int caustic; public boolean boxcar; public boolean boat; + public boolean destroysWood; public boolean destroysBlocks; public boolean instakill; diff --git a/com/hbm/handler/FluidTypeHandler.java b/com/hbm/handler/FluidTypeHandler.java index 1890f4093..6e92c5713 100644 --- a/com/hbm/handler/FluidTypeHandler.java +++ b/com/hbm/handler/FluidTypeHandler.java @@ -5,62 +5,65 @@ import java.util.Arrays; public class FluidTypeHandler { public enum FluidType { - NONE (0x888888, 8947848, 0, 1, 1, "hbmfluid.none"), + NONE (0x888888, 0, 1, 1, "hbmfluid.none"), - WATER (0x3333FF, 3355647, 1, 1, 1, "hbmfluid.water"), - STEAM (0xe5e5e5, 15066597, 9, 2, 1, "hbmfluid.steam"), - HOTSTEAM (0xE7D6D6, 0xE7D6D6, 1, 1, 2, "hbmfluid.hotsteam"), - SUPERHOTSTEAM (0xE7B7B7, 0xE7B7B7, 2, 1, 2, "hbmfluid.superhotsteam"), - COOLANT (0xd8fcff, 14220543, 2, 1, 1, "hbmfluid.coolant"), + WATER (0x3333FF, 1, 1, 1, "hbmfluid.water"), + STEAM (0xe5e5e5, 9, 2, 1, "hbmfluid.steam"), + HOTSTEAM (0xE7D6D6, 1, 1, 2, "hbmfluid.hotsteam"), + SUPERHOTSTEAM (0xE7B7B7, 2, 1, 2, "hbmfluid.superhotsteam"), + COOLANT (0xd8fcff, 2, 1, 1, "hbmfluid.coolant"), - LAVA (0xFF3300, 16724736, 3, 1, 1, "hbmfluid.lava"), + LAVA (0xFF3300, 3, 1, 1, "hbmfluid.lava"), - DEUTERIUM (0x0000FF, 255, 4, 1, 1, "hbmfluid.deuterium"), - TRITIUM (0x000099, 153, 5, 1, 1, "hbmfluid.tritium"), + DEUTERIUM (0x0000FF, 4, 1, 1, "hbmfluid.deuterium"), + TRITIUM (0x000099, 5, 1, 1, "hbmfluid.tritium"), - OIL (0x020202, 131586, 6, 1, 1, "hbmfluid.oil"), - HOTOIL (0x300900, 3148032, 8, 2, 1, "hbmfluid.hotoil"), + OIL (0x020202, 6, 1, 1, "hbmfluid.oil"), + HOTOIL (0x300900, 8, 2, 1, "hbmfluid.hotoil"), - HEAVYOIL (0x141312, 1315602, 2, 2, 1, "hbmfluid.heavyoil"), - BITUMEN (0x1f2426, 2040870, 3, 2, 1, "hbmfluid.bitumen"), - SMEAR (0x190f01, 1642241, 7, 1, 1, "hbmfluid.smear"), - HEATINGOIL (0x211806, 2168838, 4, 2, 1, "hbmfluid.heatingoil"), + HEAVYOIL (0x141312, 2, 2, 1, "hbmfluid.heavyoil"), + BITUMEN (0x1f2426, 3, 2, 1, "hbmfluid.bitumen"), + SMEAR (0x190f01, 7, 1, 1, "hbmfluid.smear"), + HEATINGOIL (0x211806, 4, 2, 1, "hbmfluid.heatingoil"), - RECLAIMED (0x332b22, 3353378, 8, 1, 1, "hbmfluid.reclaimed"), - PETROIL (0x44413d, 4473149, 9, 1, 1, "hbmfluid.petroil"), + RECLAIMED (0x332b22, 8, 1, 1, "hbmfluid.reclaimed"), + PETROIL (0x44413d, 9, 1, 1, "hbmfluid.petroil"), - LUBRICANT (0x606060, 6316128, 10, 1, 1, "hbmfluid.lubricant"), + LUBRICANT (0x606060, 10, 1, 1, "hbmfluid.lubricant"), - NAPHTHA (0x595744, 5855044, 5, 2, 1, "hbmfluid.naphtha"), - DIESEL (0xf2eed5, 15920853, 11, 1, 1, "hbmfluid.diesel"), + NAPHTHA (0x595744, 5, 2, 1, "hbmfluid.naphtha"), + DIESEL (0xf2eed5, 11, 1, 1, "hbmfluid.diesel"), - LIGHTOIL (0x8c7451, 9204817, 6, 2, 1, "hbmfluid.lightoil"), - KEROSENE (0xffa5d2, 16754130, 12, 1, 1, "hbmfluid.kerosene"), + LIGHTOIL (0x8c7451, 6, 2, 1, "hbmfluid.lightoil"), + KEROSENE (0xffa5d2, 12, 1, 1, "hbmfluid.kerosene"), - GAS (0xfffeed, 16776941, 13, 1, 1, "hbmfluid.gas"), - PETROLEUM (0x7cb7c9, 8173513, 7, 2, 1, "hbmfluid.petroleum"), + GAS (0xfffeed, 13, 1, 1, "hbmfluid.gas"), + PETROLEUM (0x7cb7c9, 7, 2, 1, "hbmfluid.petroleum"), - BIOGAS (0xbfd37c, 12571516, 12, 2, 1, "hbmfluid.biogas"), - BIOFUEL (0xeef274, 15659636, 13, 2, 1, "hbmfluid.biofuel"), + BIOGAS (0xbfd37c, 12, 2, 1, "hbmfluid.biogas"), + BIOFUEL (0xeef274, 13, 2, 1, "hbmfluid.biofuel"), - NITAN (0x8018ad, 8394925, 15, 2, 1, "hbmfluid.nitan"), + NITAN (0x8018ad, 15, 2, 1, "hbmfluid.nitan"), - UF6 (0xD1CEBE, 13749950, 14, 1, 1, "hbmfluid.uf6"), - PUF6 (0x4C4C4C, 5000268, 15, 1, 1, "hbmfluid.puf6"), - SAS3 (0x4ffffc, 5242876, 14, 2, 1, "hbmfluid.sas3"), + UF6 (0xD1CEBE, 14, 1, 1, "hbmfluid.uf6"), + PUF6 (0x4C4C4C, 15, 1, 1, "hbmfluid.puf6"), + SAS3 (0x4ffffc, 14, 2, 1, "hbmfluid.sas3"), - AMAT (0x010101, 65793, 0, 2, 1, "hbmfluid.amat"), - ASCHRAB (0xb50000, 11862016, 1, 2, 1, "hbmfluid.aschrab"), + AMAT (0x010101, 0, 2, 1, "hbmfluid.amat"), + ASCHRAB (0xb50000, 1, 2, 1, "hbmfluid.aschrab"), - ACID (0xfff7aa, 16775082, 10, 2, 1, "hbmfluid.acid"), - WATZ (0x86653E, 8807742, 11, 2, 1, "hbmfluid.watz"), - CRYOGEL (0x32ffff, 3342335, 0, 1, 2, "hbmfluid.cryogel"); + ACID (0xfff7aa, 10, 2, 1, "hbmfluid.acid"), + WATZ (0x86653E, 11, 2, 1, "hbmfluid.watz"), + CRYOGEL (0x32ffff, 0, 1, 2, "hbmfluid.cryogel"), + + HYDROGEN (0x4286f4, 3, 1, 2, "hbmfluid.hydrogen"), + OXYGEN (0x98bdf9, 4, 1, 2, "hbmfluid.oxygen"), + XENON (0xba45e8, 5, 1, 2, "hbmfluid.xenon"), + BALEFIRE (0x28e02e, 6, 1, 2, "hbmfluid.balefire"); //Approximate HEX Color of the fluid, used for pipe rendering private int color; - //Converted MS Access color code, used for item rendering - private int msa; //X position of the fluid on the sheet, the "row" private int textureX; //Y position of the fluid on the sheet, the "column" @@ -70,9 +73,8 @@ public class FluidTypeHandler { //Unlocalized string ID of the fluid private String name; - private FluidType(int color, int msa, int x, int y, int sheet, String name) { + private FluidType(int color, int x, int y, int sheet, String name) { this.color = color; - this.msa = msa; this.textureX = x; this.textureY = y; this.name = name; @@ -83,7 +85,7 @@ public class FluidTypeHandler { return this.color; } public int getMSAColor() { - return this.msa; + return this.color; } public int textureX() { return this.textureX; diff --git a/com/hbm/handler/GunConfiguration.java b/com/hbm/handler/GunConfiguration.java index 00f461009..976813d11 100644 --- a/com/hbm/handler/GunConfiguration.java +++ b/com/hbm/handler/GunConfiguration.java @@ -77,6 +77,7 @@ public class GunConfiguration { public static final String RSOUND_MAG = "hbm:weapon.magReload"; public static final String RSOUND_SHOTGUN = "hbm:weapon.shotgunReload"; public static final String RSOUND_LAUNCHER = "hbm:weapon.rpgReload"; + public static final String RSOUND_GRENADE = "hbm:weapon.hkReload"; public GunConfiguration silenced() { this.firingSound = "hbm:weapon.silencerShoot"; diff --git a/com/hbm/handler/guncfg/GunGrenadeFactory.java b/com/hbm/handler/guncfg/GunGrenadeFactory.java index e90e31291..5ae8a9186 100644 --- a/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -28,6 +28,8 @@ public class GunGrenadeFactory { config.reloadType = GunConfiguration.RELOAD_SINGLE; config.allowsInfinity = true; config.crosshair = Crosshair.L_CIRCUMFLEX; + config.firingSound = "hbm:weapon.hkShoot"; + config.reloadSound = GunConfiguration.RSOUND_GRENADE; config.name = "Granatpistole HK69"; config.manufacturer = "Heckler & Koch"; diff --git a/com/hbm/handler/guncfg/GunRocketFactory.java b/com/hbm/handler/guncfg/GunRocketFactory.java index 50e32da29..31548e40b 100644 --- a/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/com/hbm/handler/guncfg/GunRocketFactory.java @@ -43,6 +43,7 @@ public class GunRocketFactory { config.config.add(BulletConfigSyncingUtil.ROCKET_GLARE); config.config.add(BulletConfigSyncingUtil.ROCKET_SLEEK); config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE); + config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); config.durability = 140; return config; @@ -62,6 +63,7 @@ public class GunRocketFactory { config.config.add(BulletConfigSyncingUtil.ROCKET_EMP); config.config.add(BulletConfigSyncingUtil.ROCKET_SLEEK); config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE); + config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); config.durability = 500; return config; @@ -198,5 +200,26 @@ public class GunRocketFactory { return bullet; } + + public static BulletConfiguration getRocketRPCConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_rocket_rpc; + bullet.velocity = 3.0F; + bullet.dmgMin = 20; + bullet.dmgMax = 25; + bullet.wear = 15; + bullet.explosive = 0; + bullet.incendiary = 0; + bullet.trail = 8; + bullet.gravity = 0.000D; + bullet.ricochetAngle = 90; + bullet.LBRC = 100; + bullet.destroysWood = true; + bullet.doesPenetrate = true; + + return bullet; + } } diff --git a/com/hbm/inventory/FluidTank.java b/com/hbm/inventory/FluidTank.java index 8957bb758..e5a2b6d12 100644 --- a/com/hbm/inventory/FluidTank.java +++ b/com/hbm/inventory/FluidTank.java @@ -86,7 +86,7 @@ public class FluidTank { if(slots[in] != null) { inType = FluidContainerRegistry.getFluidType(slots[in]); - if(slots[in].getItem() == ModItems.fluid_barrel_infinite) { + if(slots[in].getItem() == ModItems.fluid_barrel_infinite && type != FluidType.NONE) { this.fluid = this.maxFluid; return; } diff --git a/com/hbm/inventory/gui/GUIMachineCompactLauncher.java b/com/hbm/inventory/gui/GUIMachineCompactLauncher.java index ded772007..fef7aa6e9 100644 --- a/com/hbm/inventory/gui/GUIMachineCompactLauncher.java +++ b/com/hbm/inventory/gui/GUIMachineCompactLauncher.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; +import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerCompactLauncher; import com.hbm.inventory.container.ContainerMachineMissileAssembly; import com.hbm.items.weapon.ItemCustomMissile; @@ -25,11 +26,11 @@ import net.minecraft.util.ResourceLocation; public class GUIMachineCompactLauncher extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_launch_table_small.png"); - private TileEntityCompactLauncher assembler; + private TileEntityCompactLauncher launcher; public GUIMachineCompactLauncher(InventoryPlayer invPlayer, TileEntityCompactLauncher tedf) { super(new ContainerCompactLauncher(invPlayer, tedf)); - assembler = tedf; + launcher = tedf; this.xSize = 176; this.ySize = 222; @@ -38,11 +39,16 @@ public class GUIMachineCompactLauncher extends GuiInfoContainer { @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); + + launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 88 - 52, 16, 52); + launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 88 - 52, 16, 52); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 88 - 52, 16, 52, new String[] { "Solid Fuel: " + launcher.solid + "l" }); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 113, 34, 6, launcher.power, launcher.maxPower); } @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName()); + String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.getInventoryName()); 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); @@ -54,13 +60,46 @@ public class GUIMachineCompactLauncher extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + int i = (int)launcher.getPowerScaled(34); + drawTexturedModalRect(guiLeft + 134, guiTop + 113, 176, 96, i, 6); + + int j = (int)launcher.getSolidScaled(52); + drawTexturedModalRect(guiLeft + 152, guiTop + 88 - j, 176, 96 - j, 16, j); + + if(launcher.isMissileValid()) + drawTexturedModalRect(guiLeft + 25, guiTop + 35, 176, 26, 18, 18); + + if(launcher.hasDesignator()) + drawTexturedModalRect(guiLeft + 25, guiTop + 71, 176, 26, 18, 18); + + if(launcher.liquidState() == 1) + drawTexturedModalRect(guiLeft + 121, guiTop + 23, 176, 0, 6, 8); + if(launcher.liquidState() == 0) + drawTexturedModalRect(guiLeft + 121, guiTop + 23, 182, 0, 6, 8); + + if(launcher.oxidizerState() == 1) + drawTexturedModalRect(guiLeft + 139, guiTop + 23, 176, 0, 6, 8); + if(launcher.oxidizerState() == 0) + drawTexturedModalRect(guiLeft + 139, guiTop + 23, 182, 0, 6, 8); + + if(launcher.solidState() == 1) + drawTexturedModalRect(guiLeft + 157, guiTop + 23, 176, 0, 6, 8); + if(launcher.solidState() == 0) + drawTexturedModalRect(guiLeft + 157, guiTop + 23, 182, 0, 6, 8); + + Minecraft.getMinecraft().getTextureManager().bindTexture(launcher.tanks[0].getSheet()); + launcher.tanks[0].renderTank(this, guiLeft + 116, guiTop + 88, launcher.tanks[0].getTankType().textureX() * FluidTank.x, launcher.tanks[0].getTankType().textureY() * FluidTank.y, 16, 52); + + Minecraft.getMinecraft().getTextureManager().bindTexture(launcher.tanks[1].getSheet()); + launcher.tanks[1].renderTank(this, guiLeft + 134, guiTop + 88, launcher.tanks[1].getTankType().textureX() * FluidTank.x, launcher.tanks[1].getTankType().textureY() * FluidTank.y, 16, 52); + /// DRAW MISSILE START GL11.glPushMatrix(); MissileMultipart missile; - if(assembler.getStackInSlot(0) != null && assembler.getStackInSlot(0).getItem() instanceof ItemCustomMissile) { - ItemStack custom = assembler.getStackInSlot(0); + if(launcher.isMissileValid()) { + ItemStack custom = launcher.getStackInSlot(0); missile = new MissileMultipart(); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 979aef8ae..07e61ae8f 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -978,6 +978,7 @@ public class ModItems { public static Item ammo_rocket_glare; public static Item ammo_rocket_sleek; public static Item ammo_rocket_nuclear; + public static Item ammo_rocket_rpc; public static Item ammo_grenade; public static Item ammo_grenade_he; public static Item ammo_grenade_incendiary; @@ -2554,6 +2555,7 @@ public class ModItems { ammo_rocket_glare = new ItemAmmo().setUnlocalizedName("ammo_rocket_glare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_glare"); ammo_rocket_sleek = new ItemAmmo().setUnlocalizedName("ammo_rocket_sleek").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_sleek"); ammo_rocket_nuclear = new ItemAmmo().setUnlocalizedName("ammo_rocket_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_nuclear"); + ammo_rocket_rpc = new ItemAmmo().setUnlocalizedName("ammo_rocket_rpc").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_rocket_rpc"); ammo_grenade = new ItemAmmo().setUnlocalizedName("ammo_grenade").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade"); ammo_grenade_he = new ItemAmmo().setUnlocalizedName("ammo_grenade_he").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_he"); ammo_grenade_incendiary = new ItemAmmo().setUnlocalizedName("ammo_grenade_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_incendiary"); @@ -4431,6 +4433,7 @@ public class ModItems { GameRegistry.registerItem(ammo_rocket_glare, ammo_rocket_glare.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_sleek, ammo_rocket_sleek.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_nuclear, ammo_rocket_nuclear.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket_rpc, ammo_rocket_rpc.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_he, ammo_grenade_he.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_incendiary, ammo_grenade_incendiary.getUnlocalizedName()); diff --git a/com/hbm/items/weapon/ItemAmmo.java b/com/hbm/items/weapon/ItemAmmo.java index bb5326242..9d7eddcd6 100644 --- a/com/hbm/items/weapon/ItemAmmo.java +++ b/com/hbm/items/weapon/ItemAmmo.java @@ -160,6 +160,13 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.RED + "- Very highly increased wear"); list.add(EnumChatFormatting.RED + "- Decreased projectile speed"); } + if(this == ModItems.ammo_rocket_rpc) { + list.add(EnumChatFormatting.BLUE + "+ Chainsaw"); + list.add(EnumChatFormatting.BLUE + "+ Penetrating"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + list.add(EnumChatFormatting.RED + "- Non-explosive"); + list.add(EnumChatFormatting.YELLOW + "* Uhhhh"); + } //40mm GRENADES if(this == ModItems.ammo_grenade_he) { diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index ef3d3390d..6fe597bed 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -911,6 +911,11 @@ public class Library { { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } + //Compact Launcher + if(block == ModBlocks.dummy_port_compact_launcher) + { + tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); + } if(tileentity instanceof IConductor) { @@ -1133,6 +1138,11 @@ public class Library { { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } + //Compact Launcher + if(block == ModBlocks.dummy_port_compact_launcher) + { + tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); + } if(tileentity == that) tileentity = null; diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index a8f42cedb..14a3d5420 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -24,6 +24,7 @@ import com.hbm.entity.mob.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; import com.hbm.items.ModItems; +import com.hbm.particle.ParticleContrail; import com.hbm.render.block.*; import com.hbm.render.entity.*; import com.hbm.render.item.*; @@ -334,6 +335,8 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreReceiver.class, new RenderCoreComponent()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreInjector.class, new RenderCoreComponent()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 5d9f2740c..dc06fc52c 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -669,6 +669,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityEMP.class, "entity_emp_logic", 136, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityWaterSplash.class, "entity_water_splash", 137, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityBobmazon.class, "entity_bobmazon_delivery", 138, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityMissileCustom.class, "entity_custom_missile", 139, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 245862461..e20b66a3c 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -297,6 +297,7 @@ public class ResourceManager { //Boxcar public static final IModelCustom boxcar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/boxcar.obj")); public static final IModelCustom duchessgambit = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/duchessgambit.obj")); + public static final IModelCustom rpc = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rpc.obj")); //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); @@ -363,6 +364,7 @@ public class ResourceManager { //Boxcar public static final ResourceLocation boxcar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/boxcar.png"); public static final ResourceLocation duchessgambit_tex = new ResourceLocation(RefStrings.MODID, "textures/models/duchessgambit.png"); + public static final ResourceLocation rpc_tex = new ResourceLocation(RefStrings.MODID, "textures/models/rpc.png"); //Bomber public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); diff --git a/com/hbm/packet/AuxGaugePacket.java b/com/hbm/packet/AuxGaugePacket.java index 58c824988..da92634c4 100644 --- a/com/hbm/packet/AuxGaugePacket.java +++ b/com/hbm/packet/AuxGaugePacket.java @@ -2,6 +2,7 @@ package com.hbm.packet; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; +import com.hbm.tileentity.bomb.TileEntityCompactLauncher; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeN45; import com.hbm.tileentity.bomb.TileEntityTurretCIWS; @@ -236,6 +237,11 @@ public class AuxGaugePacket implements IMessage { if(m.id == 6) reactor.type = ReactorFuelType.getEnum(m.value); } + if (te instanceof TileEntityCompactLauncher) { + TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; + + launcher.solid = m.value; + } } catch (Exception x) {} return null; diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 04ec2329e..193aefb66 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -85,6 +85,8 @@ public class PacketDispatcher { wrapper.registerMessage(AuxParticlePacket.Handler.class, AuxParticlePacket.class, i++, Side.CLIENT); //Signals server to buy offer from bobmazon wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); + //Packet to send missile multipart information to TEs + wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); } } diff --git a/com/hbm/packet/TEMissileMultipartPacket.java b/com/hbm/packet/TEMissileMultipartPacket.java new file mode 100644 index 000000000..67920cbdf --- /dev/null +++ b/com/hbm/packet/TEMissileMultipartPacket.java @@ -0,0 +1,74 @@ +package com.hbm.packet; + +import com.hbm.main.MainRegistry; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.conductor.TileEntityFluidDuct; +import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEMissileMultipartPacket implements IMessage { + + int x; + int y; + int z; + MissileMultipart missile; + + public TEMissileMultipartPacket() + { + + } + + public TEMissileMultipartPacket(int x, int y, int z, MissileMultipart missile) + { + this.x = x; + this.y = y; + this.z = z; + this.missile = missile; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + missile = MissileMultipart.readFromByteBuffer(buf); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + missile.writeToByteBuffer(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEMissileMultipartPacket m, MessageContext ctx) { + + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityCompactLauncher) { + + TileEntityCompactLauncher launcher = (TileEntityCompactLauncher) te; + launcher.load = m.missile; + } + + if (te != null && te instanceof TileEntityMachineMissileAssembly) { + + TileEntityMachineMissileAssembly rack = (TileEntityMachineMissileAssembly) te; + rack.load = m.missile; + } + + return null; + } + } +} diff --git a/com/hbm/entity/particle/ParticleContrail.java b/com/hbm/particle/ParticleContrail.java similarity index 97% rename from com/hbm/entity/particle/ParticleContrail.java rename to com/hbm/particle/ParticleContrail.java index 604aaec2f..8823a3b03 100644 --- a/com/hbm/entity/particle/ParticleContrail.java +++ b/com/hbm/particle/ParticleContrail.java @@ -1,4 +1,4 @@ -package com.hbm.entity.particle; +package com.hbm.particle; import java.util.Random; @@ -65,7 +65,7 @@ public class ParticleContrail extends EntityFX { p_70539_1_.startDrawingQuads(); - this.particleRed = this.particleGreen = this.particleBlue = urandom.nextFloat() * 0.7F + 0.2F; + this.particleRed = this.particleGreen = this.particleBlue = urandom.nextFloat() * 0.1F + 0.2F; p_70539_1_.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); p_70539_1_.setNormal(0.0F, 1.0F, 0.0F); diff --git a/com/hbm/render/entity/RenderBullet.java b/com/hbm/render/entity/RenderBullet.java index 28236bffe..ac74ef984 100644 --- a/com/hbm/render/entity/RenderBullet.java +++ b/com/hbm/render/entity/RenderBullet.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.entity.projectile.EntityBullet; import com.hbm.handler.BulletConfiguration; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelBuckshot; import com.hbm.render.model.ModelBullet; import com.hbm.render.model.ModelGrenade; @@ -42,7 +43,7 @@ public class RenderBullet extends Render { 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); + GL11.glRotatef(new Random(bullet.getEntityId()).nextInt(90) - 45, 1.0F, 0.0F, 0.0F); int style = bullet.getDataWatcher().getWatchableObjectByte(16); int trail = bullet.getDataWatcher().getWatchableObjectByte(17); @@ -103,6 +104,14 @@ public class RenderBullet extends Render { bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelRocketNuclear.png")); break; } + if(type == 8) { + bindTexture(ResourceManager.rpc_tex); + GL11.glScalef(0.25F, 0.25F, 0.25F); + GL11.glRotatef(180, 1, 0, 0); + ResourceManager.rpc.renderAll(); + return; + } + rocket.renderAll(0.0625F); } diff --git a/com/hbm/render/entity/RenderMissileCustom.java b/com/hbm/render/entity/RenderMissileCustom.java new file mode 100644 index 000000000..459887b5f --- /dev/null +++ b/com/hbm/render/entity/RenderMissileCustom.java @@ -0,0 +1,53 @@ +package com.hbm.render.entity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileBunkerBuster; +import com.hbm.entity.missile.EntityMissileCluster; +import com.hbm.entity.missile.EntityMissileGeneric; +import com.hbm.entity.missile.EntityMissileIncendiary; +import com.hbm.main.ResourceManager; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.render.misc.MissilePart; +import com.hbm.render.misc.MissilePronter; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; + +public class RenderMissileCustom extends Render { + + @Override + public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, + float p_76986_9_) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + int w = p_76986_1_.getDataWatcher().getWatchableObjectInt(9); + int f = p_76986_1_.getDataWatcher().getWatchableObjectInt(10); + int s = p_76986_1_.getDataWatcher().getWatchableObjectInt(11); + int t = p_76986_1_.getDataWatcher().getWatchableObjectInt(12); + + MissileMultipart missile = new MissileMultipart(); + missile.warhead = MissilePart.getPart(Item.getItemById(w)); + missile.fuselage = MissilePart.getPart(Item.getItemById(f)); + missile.fins = MissilePart.getPart(Item.getItemById(s)); + missile.thruster = MissilePart.getPart(Item.getItemById(t)); + + MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return ResourceManager.universal; + } + +} diff --git a/com/hbm/render/misc/MissileMultipart.java b/com/hbm/render/misc/MissileMultipart.java index 99ef7bdfe..156f55c17 100644 --- a/com/hbm/render/misc/MissileMultipart.java +++ b/com/hbm/render/misc/MissileMultipart.java @@ -2,6 +2,9 @@ package com.hbm.render.misc; import com.hbm.items.weapon.ItemMissile.PartType; +import io.netty.buffer.ByteBuf; +import net.minecraft.item.Item; + public class MissileMultipart { public MissilePart warhead; @@ -22,4 +25,52 @@ public class MissileMultipart { return height; } + + public void writeToByteBuffer(ByteBuf buf) { + + + if(warhead != null && warhead.type == PartType.WARHEAD) + buf.writeInt(Item.getIdFromItem(warhead.part)); + else + buf.writeInt(0); + + if(fuselage != null && fuselage.type == PartType.FUSELAGE) + buf.writeInt(Item.getIdFromItem(fuselage.part)); + else + buf.writeInt(0); + + if(fins != null && fins.type == PartType.FINS) + buf.writeInt(Item.getIdFromItem(fins.part)); + else + buf.writeInt(0); + + if(thruster != null && thruster.type == PartType.THRUSTER) + buf.writeInt(Item.getIdFromItem(thruster.part)); + else + buf.writeInt(0); + } + + public static MissileMultipart readFromByteBuffer(ByteBuf buf) { + + MissileMultipart multipart = new MissileMultipart(); + + int w = buf.readInt(); + int f = buf.readInt(); + int s = buf.readInt(); + int t = buf.readInt(); + + if(w != 0) + multipart.warhead = MissilePart.getPart(Item.getItemById(w)); + + if(f != 0) + multipart.fuselage = MissilePart.getPart(Item.getItemById(f)); + + if(s != 0) + multipart.fins = MissilePart.getPart(Item.getItemById(s)); + + if(t != 0) + multipart.thruster = MissilePart.getPart(Item.getItemById(t)); + + return multipart; + } } diff --git a/com/hbm/render/tileentity/RenderCompactLauncher.java b/com/hbm/render/tileentity/RenderCompactLauncher.java index fbb1de041..e5bd76f53 100644 --- a/com/hbm/render/tileentity/RenderCompactLauncher.java +++ b/com/hbm/render/tileentity/RenderCompactLauncher.java @@ -39,12 +39,13 @@ public class RenderCompactLauncher extends TileEntitySpecialRenderer { MissileMultipart missile; - if(launcher.getStackInSlot(0) != null && launcher.getStackInSlot(0).getItem() instanceof ItemCustomMissile) { - ItemStack custom = launcher.getStackInSlot(0); + if(launcher.load != null) { + //ItemStack custom = launcher.getStackInSlot(0); - missile = ItemCustomMissile.getMultipart(custom); + //missile = ItemCustomMissile.getMultipart(custom); - MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); + MissilePronter.prontMissile(launcher.load, Minecraft.getMinecraft().getTextureManager()); + // } GL11.glPopMatrix(); diff --git a/com/hbm/render/tileentity/RenderMissileAssembly.java b/com/hbm/render/tileentity/RenderMissileAssembly.java index 463599e18..a99db0b3d 100644 --- a/com/hbm/render/tileentity/RenderMissileAssembly.java +++ b/com/hbm/render/tileentity/RenderMissileAssembly.java @@ -46,49 +46,52 @@ public class RenderMissileAssembly extends TileEntitySpecialRenderer { bindTexture(ResourceManager.missile_assembly_tex); ResourceManager.missile_assembly.renderAll(); - MissileMultipart missile = new MissileMultipart(); + MissileMultipart missile = te.load; - if(te.getStackInSlot(1) != null) - missile.warhead = MissilePart.getPart(te.getStackInSlot(1).getItem()); + if(missile != null) { - if(te.getStackInSlot(2) != null) - missile.fuselage = MissilePart.getPart(te.getStackInSlot(2).getItem()); - - if(te.getStackInSlot(3) != null) - missile.fins = MissilePart.getPart(te.getStackInSlot(3).getItem()); - - if(te.getStackInSlot(4) != null) - missile.thruster = MissilePart.getPart(te.getStackInSlot(4).getItem()); - - int range = (int) (missile.getHeight() / 2 - 1); - - int step = 1; - - if(range >= 2) - step = 2; - - for(int i = -range; i <= range; i += step) { - - if(i != 0) { - GL11.glTranslatef(i, 0F, 0F); - bindTexture(ResourceManager.strut_tex); - ResourceManager.strut.renderAll(); - GL11.glTranslatef(-i, 0F, 0F); + if(te.getStackInSlot(1) != null) + missile.warhead = MissilePart.getPart(te.getStackInSlot(1).getItem()); + + if(te.getStackInSlot(2) != null) + missile.fuselage = MissilePart.getPart(te.getStackInSlot(2).getItem()); + + if(te.getStackInSlot(3) != null) + missile.fins = MissilePart.getPart(te.getStackInSlot(3).getItem()); + + if(te.getStackInSlot(4) != null) + missile.thruster = MissilePart.getPart(te.getStackInSlot(4).getItem()); + + int range = (int) (missile.getHeight() / 2 - 1); + + int step = 1; + + if(range >= 2) + step = 2; + + for(int i = -range; i <= range; i += step) { + + if(i != 0) { + GL11.glTranslatef(i, 0F, 0F); + bindTexture(ResourceManager.strut_tex); + ResourceManager.strut.renderAll(); + GL11.glTranslatef(-i, 0F, 0F); + } } + + GL11.glTranslatef(0F, 1.5F, 0F); + GL11.glRotatef(180, 0F, 0F, 1F); + + GL11.glTranslated(-missile.getHeight() / 2, 0, 0); + //GL11.glScaled(scale, scale, scale); + + GL11.glRotatef(-90, 1, 0, 0); + GL11.glRotatef(-90, 0, 0, 1); + GL11.glScalef(1, 1, 1); + + GL11.glEnable(GL11.GL_CULL_FACE); + MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); } - - GL11.glTranslatef(0F, 1.5F, 0F); - GL11.glRotatef(180, 0F, 0F, 1F); - - GL11.glTranslated(-missile.getHeight() / 2, 0, 0); - //GL11.glScaled(scale, scale, scale); - - GL11.glRotatef(-90, 1, 0, 0); - GL11.glRotatef(-90, 0, 0, 1); - GL11.glScalef(1, 1, 1); - - GL11.glEnable(GL11.GL_CULL_FACE); - MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); GL11.glPopMatrix(); } diff --git a/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 46d8dc682..970f73a3b 100644 --- a/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -1,9 +1,26 @@ package com.hbm.tileentity.bomb; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.inventory.FluidTank; +import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemCustomMissile; import com.hbm.items.weapon.ItemMissile; import com.hbm.items.weapon.ItemMissile.FuelType; +import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.items.weapon.ItemMissile.PartType; +import com.hbm.lib.Library; +import com.hbm.packet.AuxElectricityPacket; +import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.render.misc.MissileMultipart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,16 +32,27 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityCompactLauncher extends TileEntity implements ISidedInventory { +public class TileEntityCompactLauncher extends TileEntity implements ISidedInventory, IConsumer, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; + public long power; + public static final long maxPower = 100000; + public int solid; + public static final int maxSolid = 25000; + public FluidTank[] tanks; + + public MissileMultipart load; + private static final int[] access = new int[] { 0 }; private String customName; public TileEntityCompactLauncher() { slots = new ItemStack[6]; + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(FluidType.NONE, 25000, 0); + tanks[1] = new FluidTank(FluidType.NONE, 25000, 1); } @Override @@ -116,12 +144,215 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven return null; } } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } + + public int getSolidScaled(int i) { + return (solid * i) / maxSolid; + } + + @Override + public void updateEntity() { + + if (!worldObj.isRemote) { + + updateTypes(); + + tanks[0].loadTank(2, 3, slots); + tanks[1].loadTank(2, 3, slots); + + for (int i = 0; i < 2; i++) + tanks[i].updateTank(xCoord, yCoord, zCoord); + + power = Library.chargeTEFromItems(slots, 5, power, maxPower); + + if(slots[4] != null && slots[4].getItem() == ModItems.rocket_fuel && solid + 250 <= maxSolid) { + + this.decrStackSize(4, 1); + solid += 250; + } + + PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); + PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, solid, 0)); + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart != null) + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart)); + else + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, new MissileMultipart())); + + if(power >= maxPower * 0.75 && isMissileValid() && hasDesignator() && hasFuel()) { + + outer: + for(int x = -1; x <= 1; x++) { + for(int z = -1; z <= 1; z++) { + + if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z)) { + launch(); + break outer; + } + } + } + } + } + } + + private void launch() { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + + int tX = slots[1].stackTagCompound.getInteger("xCoord"); + int tZ = slots[1].stackTagCompound.getInteger("zCoord"); + + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getMultipart(slots[0])); + worldObj.spawnEntityInWorld(missile); + + slots[0] = null; + } + + private boolean hasFuel() { + + return solidState() != 0 && liquidState() != 0 && oxidizerState() != 0; + } + + public static MissileMultipart getMultipart(ItemStack stack) { + + return ItemCustomMissile.getMultipart(stack); + } + + public boolean isMissileValid() { + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return false; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + + return fuselage.top == PartSize.SIZE_10; + } + + public boolean hasDesignator() { + + if(slots[1] != null) { + + return (slots[1].getItem() == ModItems.designator || slots[1].getItem() == ModItems.designator_range || slots[1].getItem() == ModItems.designator_manual) && slots[1].hasTagCompound(); + } + + return false; + } + + public int solidState() { + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + + if((FuelType)fuselage.attributes[0] == FuelType.SOLID) { + + if(solid >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + } + + return -1; + } + + public int liquidState() { + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + case HYDROGEN: + case XENON: + case BALEFIRE: + + if(tanks[0].getFill() >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + default: break; + } + + return -1; + } + + public int oxidizerState() { + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + case HYDROGEN: + case BALEFIRE: + + if(tanks[1].getFill() >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + default: break; + } + + return -1; + } + + public void updateTypes() { + + MissileMultipart multipart = getMultipart(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + tanks[0].setTankType(FluidType.KEROSENE); + tanks[1].setTankType(FluidType.ACID); + break; + case HYDROGEN: + tanks[0].setTankType(FluidType.HYDROGEN); + tanks[1].setTankType(FluidType.OXYGEN); + break; + case XENON: + tanks[0].setTankType(FluidType.XENON); + break; + case BALEFIRE: + tanks[0].setTankType(FluidType.BALEFIRE); + tanks[1].setTankType(FluidType.ACID); + break; + default: break; + } + } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); + tanks[0].readFromNBT(nbt, "fuel"); + tanks[1].readFromNBT(nbt, "oxidizer"); + solid = nbt.getInteger("solidfuel"); + power = nbt.getLong("power"); + slots = new ItemStack[getSizeInventory()]; for (int i = 0; i < list.tagCount(); i++) { @@ -139,6 +370,11 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven NBTTagList list = new NBTTagList(); + tanks[0].writeToNBT(nbt, "fuel"); + tanks[1].writeToNBT(nbt, "oxidizer"); + nbt.setInteger("solidfuel", solid); + nbt.setLong("power", power); + for (int i = 0; i < slots.length; i++) { if (slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); @@ -164,6 +400,55 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } + + @Override + public int getMaxFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getMaxFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getMaxFill(); + else + return 0; + } + + @Override + public void setFillstate(int fill, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + tanks[0].setFill(fill); + else if (type.name().equals(tanks[1].getTankType().name())) + tanks[1].setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setTankType(type); + } + + @Override + public List getTanks() { + List list = new ArrayList(); + list.add(tanks[0]); + list.add(tanks[1]); + + return list; + } + + @Override + public int getFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getFill(); + else + return 0; + } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -176,4 +461,19 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven { return 65536.0D; } + + @Override + public void setPower(long i) { + this.power = i; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return this.maxPower; + } } diff --git a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index fab6e1507..26c0edd07 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -13,6 +13,10 @@ import com.hbm.items.weapon.ItemCustomMissile; import com.hbm.items.weapon.ItemMissile; import com.hbm.items.weapon.ItemMissile.FuelType; import com.hbm.items.weapon.ItemMissile.PartType; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.render.misc.MissilePart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,6 +31,8 @@ import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineMissileAssembly extends TileEntity implements ISidedInventory { private ItemStack slots[]; + + public MissileMultipart load; private static final int[] access = new int[] { 0 }; @@ -174,6 +180,29 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid return false; } + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + MissileMultipart multipart = new MissileMultipart(); + + if(slots[1] != null) + multipart.warhead = MissilePart.getPart(slots[1].getItem()); + + if(slots[2] != null) + multipart.fuselage = MissilePart.getPart(slots[2].getItem()); + + if(slots[3] != null) + multipart.fins = MissilePart.getPart(slots[3].getItem()); + + if(slots[4] != null) + multipart.thruster = MissilePart.getPart(slots[4].getItem()); + + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart)); + } + } + public int fuselageState() { if(slots[2] != null && slots[2].getItem() instanceof ItemMissile) {