From b5f093b47431194ff30f66e68d542ff8f9bd71c6 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 1 Jun 2020 19:43:32 +0200 Subject: [PATCH] new bullet assembly textures, more 5.56 variants, updated PMG --- assets/hbm/lang/de_DE.lang | 38 +- assets/hbm/lang/en_US.lang | 36 +- assets/hbm/models/blocks/arrow.obj | 80 + assets/hbm/models/weapons/flechette.obj | 2200 +++++++++++++++++ assets/hbm/sounds.json | 2 + assets/hbm/sounds/weapon/glauncher1.ogg | Bin 0 -> 10228 bytes assets/hbm/sounds/weapon/glauncher2.ogg | Bin 0 -> 10565 bytes assets/hbm/sounds/weapon/hksShoot1.ogg | Bin 0 -> 7916 bytes assets/hbm/sounds/weapon/hksShoot2.ogg | Bin 0 -> 7618 bytes assets/hbm/sounds/weapon/hksShoot3.ogg | Bin 0 -> 7755 bytes .../textures/entity/ModelGrenadeTraining.png | Bin 0 -> 645 bytes assets/hbm/textures/items/ammo_50bmg_ap.png | Bin 0 -> 350 bytes assets/hbm/textures/items/ammo_556_ap.png | Bin 0 -> 352 bytes assets/hbm/textures/items/ammo_556_du.png | Bin 0 -> 388 bytes .../hbm/textures/items/ammo_556_flechette.png | Bin 312 -> 332 bytes .../textures/items/ammo_556_flechette_du.png | Bin 0 -> 374 bytes .../items/ammo_556_flechette_incendiary.png | Bin 0 -> 342 bytes .../items/ammo_556_flechette_phosphorus.png | Bin 0 -> 396 bytes .../textures/items/ammo_556_phosphorus.png | Bin 0 -> 417 bytes assets/hbm/textures/items/ammo_556_star.png | Bin 0 -> 378 bytes assets/hbm/textures/items/ammo_556_tracer.png | Bin 343 -> 352 bytes .../hbm/textures/items/ammo_grenade_kampf.png | Bin 0 -> 366 bytes .../textures/items/ammo_grenade_tracer.png | Bin 0 -> 349 bytes assets/hbm/textures/items/assembly_556.png | Bin 0 -> 375 bytes .../textures/items/assembly_actionexpress.png | Bin 265 -> 344 bytes .../hbm/textures/items/assembly_calamity.png | Bin 275 -> 366 bytes assets/hbm/textures/items/assembly_desh.png | Bin 314 -> 222 bytes assets/hbm/textures/items/assembly_gold.png | Bin 304 -> 222 bytes assets/hbm/textures/items/assembly_iron.png | Bin 302 -> 372 bytes .../hbm/textures/items/assembly_lacunae.png | Bin 272 -> 282 bytes assets/hbm/textures/items/assembly_lead.png | Bin 260 -> 272 bytes .../hbm/textures/items/assembly_nightmare.png | Bin 285 -> 259 bytes .../textures/items/assembly_schrabidium.png | Bin 309 -> 268 bytes assets/hbm/textures/items/assembly_smg.png | Bin 252 -> 339 bytes assets/hbm/textures/items/assembly_steel.png | Bin 318 -> 294 bytes assets/hbm/textures/items/assembly_uzi.png | Bin 283 -> 237 bytes assets/hbm/textures/items/gun_pm_ammo.png | Bin 235 -> 202 bytes .../models/weapons/flechette_barrel.png | Bin 0 -> 308 bytes .../models/weapons/flechette_base.png | Bin 0 -> 195 bytes .../models/weapons/flechette_body.png | Bin 0 -> 501 bytes .../models/weapons/flechette_chamber.png | Bin 0 -> 332 bytes .../models/weapons/flechette_drum.png | Bin 0 -> 182 bytes .../models/weapons/flechette_gren_tube.png | Bin 0 -> 314 bytes .../models/weapons/flechette_grenades.png | Bin 0 -> 159 bytes .../models/weapons/flechette_pivot.png | Bin 0 -> 156 bytes .../models/weapons/flechette_stock.png | Bin 0 -> 141 bytes .../textures/models/weapons/flechette_top.png | Bin 0 -> 271 bytes .../models/weapons/flechette_trigger.png | Bin 0 -> 102 bytes com/hbm/blocks/ModBlocks.java | 20 +- com/hbm/blocks/generic/BlockMush.java | 3 +- com/hbm/blocks/machine/GeigerCounter.java | 1 + .../{machine => network}/BlockCable.java | 2 +- com/hbm/blocks/network/BlockConveyor.java | 92 + .../{machine => network}/BlockFluidDuct.java | 2 +- .../{machine => network}/BlockGasDuct.java | 2 +- .../{machine => network}/BlockOilDuct.java | 2 +- .../{machine => network}/BlockRFCable.java | 2 +- .../{machine => network}/CableSwitch.java | 2 +- com/hbm/entity/item/EntityMovingItem.java | 142 ++ .../missile/EntityMissileAntiBallistic.java | 4 +- .../entity/projectile/EntityBulletBase.java | 5 + com/hbm/handler/BulletConfigSyncingUtil.java | 34 + com/hbm/handler/GunConfiguration.java | 2 +- com/hbm/handler/ToolAbility.java | 39 +- .../handler/guncfg/BulletConfigFactory.java | 1 + com/hbm/handler/guncfg/Gun50BMGFactory.java | 20 +- com/hbm/handler/guncfg/Gun556mmFactory.java | 329 +++ com/hbm/handler/guncfg/GunGaussFactory.java | 7 +- com/hbm/handler/guncfg/GunGrenadeFactory.java | 35 +- com/hbm/handler/guncfg/GunOSIPRFactory.java | 13 +- com/hbm/inventory/MachineRecipes.java | 8 +- com/hbm/items/ModItems.java | 57 +- com/hbm/items/special/ItemCustomLore.java | 2 +- com/hbm/items/weapon/GunBrimstone.java | 2 +- com/hbm/items/weapon/GunMP.java | 4 +- com/hbm/items/weapon/ItemAmmo.java | 66 + com/hbm/items/weapon/ItemClip.java | 4 +- com/hbm/items/weapon/ItemGunBase.java | 122 +- com/hbm/items/weapon/ItemGunGauss.java | 2 +- com/hbm/items/weapon/ItemGunOSIPR.java | 10 +- com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/ClientProxy.java | 15 +- com/hbm/main/CraftingManager.java | 89 +- com/hbm/main/MainRegistry.java | 12 +- com/hbm/main/ModEventHandler.java | 24 +- com/hbm/main/ModEventHandlerClient.java | 14 +- com/hbm/main/ResourceManager.java | 15 + com/hbm/render/block/RenderConveyor.java | 80 + .../render/entity/item/RenderMovingItem.java | 48 + .../entity/projectile/RenderBullet.java | 2 + com/hbm/render/item/ItemRenderMP.java | 50 +- com/hbm/render/item/ItemRenderWeaponObj.java | 86 +- com/hbm/render/tileentity/RenderEPress.java | 15 +- com/hbm/render/tileentity/RenderPress.java | 15 +- com/hbm/render/util/RenderScreenOverlay.java | 24 + .../machine/TileEntityGeiger.java | 2 +- .../machine/TileEntityMachineChemplant.java | 18 +- 97 files changed, 3657 insertions(+), 246 deletions(-) create mode 100644 assets/hbm/models/blocks/arrow.obj create mode 100644 assets/hbm/models/weapons/flechette.obj create mode 100644 assets/hbm/sounds/weapon/glauncher1.ogg create mode 100644 assets/hbm/sounds/weapon/glauncher2.ogg create mode 100644 assets/hbm/sounds/weapon/hksShoot1.ogg create mode 100644 assets/hbm/sounds/weapon/hksShoot2.ogg create mode 100644 assets/hbm/sounds/weapon/hksShoot3.ogg create mode 100644 assets/hbm/textures/entity/ModelGrenadeTraining.png create mode 100644 assets/hbm/textures/items/ammo_50bmg_ap.png create mode 100644 assets/hbm/textures/items/ammo_556_ap.png create mode 100644 assets/hbm/textures/items/ammo_556_du.png create mode 100644 assets/hbm/textures/items/ammo_556_flechette_du.png create mode 100644 assets/hbm/textures/items/ammo_556_flechette_incendiary.png create mode 100644 assets/hbm/textures/items/ammo_556_flechette_phosphorus.png create mode 100644 assets/hbm/textures/items/ammo_556_phosphorus.png create mode 100644 assets/hbm/textures/items/ammo_556_star.png create mode 100644 assets/hbm/textures/items/ammo_grenade_kampf.png create mode 100644 assets/hbm/textures/items/ammo_grenade_tracer.png create mode 100644 assets/hbm/textures/items/assembly_556.png create mode 100644 assets/hbm/textures/models/weapons/flechette_barrel.png create mode 100644 assets/hbm/textures/models/weapons/flechette_base.png create mode 100644 assets/hbm/textures/models/weapons/flechette_body.png create mode 100644 assets/hbm/textures/models/weapons/flechette_chamber.png create mode 100644 assets/hbm/textures/models/weapons/flechette_drum.png create mode 100644 assets/hbm/textures/models/weapons/flechette_gren_tube.png create mode 100644 assets/hbm/textures/models/weapons/flechette_grenades.png create mode 100644 assets/hbm/textures/models/weapons/flechette_pivot.png create mode 100644 assets/hbm/textures/models/weapons/flechette_stock.png create mode 100644 assets/hbm/textures/models/weapons/flechette_top.png create mode 100644 assets/hbm/textures/models/weapons/flechette_trigger.png rename com/hbm/blocks/{machine => network}/BlockCable.java (96%) create mode 100644 com/hbm/blocks/network/BlockConveyor.java rename com/hbm/blocks/{machine => network}/BlockFluidDuct.java (98%) rename com/hbm/blocks/{machine => network}/BlockGasDuct.java (98%) rename com/hbm/blocks/{machine => network}/BlockOilDuct.java (98%) rename com/hbm/blocks/{machine => network}/BlockRFCable.java (98%) rename com/hbm/blocks/{machine => network}/CableSwitch.java (98%) create mode 100644 com/hbm/entity/item/EntityMovingItem.java create mode 100644 com/hbm/handler/guncfg/Gun556mmFactory.java create mode 100644 com/hbm/render/block/RenderConveyor.java create mode 100644 com/hbm/render/entity/item/RenderMovingItem.java rename com/hbm/{blocks => tileentity}/machine/TileEntityGeiger.java (97%) diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 5f8dfbcf4..d8d5ed1a7 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -763,16 +763,16 @@ item.mechanism_launcher_1.name=Werfermechanismus item.mechanism_launcher_2.name=Fortgeschrittener Werfermechanismus item.mechanism_special.name=High-Tech Waffenmechanismus -item.primer_357.name=.357 Magnum-Zündhütchen (x16) -item.primer_44.name=.44 Magnum-Zündhütchen (x16) -item.primer_9.name=Kleinkaliber-Zündhütchen (x24) -item.primer_50.name=Großkaliber-Zündhütchen (x8) -item.primer_buckshot.name=Schrot-Zündhütchen (x8) -item.casing_357.name=.357 Magnum-Hülse (x16) -item.casing_44.name=.44 Magnum-Hülse (x16) -item.casing_9.name=Kleinkaliberhülse (x24) -item.casing_50.name=Großkaliberhülse (x8) -item.casing_buckshot.name=Schrothülse (x8) +item.primer_357.name=.357 Magnum-Zündhütchen (x24) +item.primer_44.name=.44 Magnum-Zündhütchen (x24) +item.primer_9.name=Kleinkaliber-Zündhütchen (x32) +item.primer_50.name=Großkaliber-Zündhütchen (x12) +item.primer_buckshot.name=Schrot-Zündhütchen (x12) +item.casing_357.name=.357 Magnum-Hülse (x24) +item.casing_44.name=.44 Magnum-Hülse (x24) +item.casing_9.name=Kleinkaliberhülse (x32) +item.casing_50.name=Großkaliberhülse (x12) +item.casing_buckshot.name=Schrothülse (x12) item.assembly_iron.name=Eisenpatronensatz item.assembly_steel.name=Bleipatronensatz item.assembly_lead.name=Glaspatronensatz @@ -783,6 +783,7 @@ item.assembly_desh.name=Desh-Patronensatz item.assembly_pip.name=Verdorbener .44er Patronensatz item.assembly_nopip.name=.44er Patronensatz item.assembly_smg.name=9mm Patronensatz +item.assembly_556.name=5.56mm Patronensatz item.assembly_uzi.name=.22 LR Patronensatz item.assembly_actionexpress.name=.50 AE Patronensatz item.assembly_calamity.name=.50 BMG Patronensatz @@ -1466,6 +1467,7 @@ item.gun_proto.name=M42 Nukleares Katapult "Proto MIRV" item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" item.gun_bf.name=BEL item.gun_mp40.name=Maschinenpistole +item.gun_flechette.name=Flechet-Gewehr item.gun_uzi.name=IMI Uzi item.gun_uzi_silencer.name=IMI Uzi mit Schalldämpfer item.gun_uzi_saturnite.name=Saturnit-Uzi @@ -1563,15 +1565,27 @@ item.ammo_50bmg.name=.50 BMG Patrone item.ammo_50bmg_incendiary.name=.50 BMG Patrone (Brand) item.ammo_50bmg_phosphorus.name=.50 BMG Patrone (WP) item.ammo_50bmg_explosive.name=.50 BMG Patrone (Explosiv) +item.ammo_50bmg_ap.name=.50 BMG Patrone (AP) item.ammo_50bmg_du.name=.50 BMG Patrone (DU) item.ammo_50bmg_star.name=.50 BMG Patrone (Sternenmetall) item.ammo_9mm.name=9mm Patrone item.ammo_9mm_ap.name=9mm Patrone (Panzerbrechend) item.ammo_9mm_du.name=9mm Patrone (DU) item.ammo_9mm_rocket.name=9mm Rakete +item.ammo_556.name=5.56mm Patrone +item.ammo_556_phosphorus.name=5.56mm Patrone (WP) +item.ammo_556_ap.name=5.56mm Patrone (AP) +item.ammo_556_du.name=5.56mm Patrone (DU) +item.ammo_556_star.name=5.56mm Patrone (Sternenmetall) +item.ammo_556_flechette.name=5.56mm Patrone (Flechet) +item.ammo_556_flechette_incendiary.name=5.56mm Flechetpatrone (Brand) +item.ammo_556_flechette_phosphorus.name=5.56mm Flechetpatrone (Phosphorspitze) +item.ammo_556_flechette_du.name=5.56mm Flechetpatrone (Uran-Penetrator) +item.ammo_556_tracer.name=5.56mm Patrone (Leuchtspur) +item.ammo_556_k.name=5.56mm K-Patrone item.ammo_22lr.name=.22 lfB Patrone item.ammo_22lr_ap.name=.22 lfB Patrone (Panzerbrechend) -item.ammo_folly_taint.name=Silbernes Geschoss (Original) +item.ammo_folly.name=Silbernes Geschoss (Original) item.ammo_folly_nuclear.name=Silbernes Geschoss (Atomar) item.ammo_folly_du.name=Silbernes Geschoss (DU, Nicht-Explosiv) item.ammo_357_desh.name=.357 Magnum Deshkugel @@ -1604,6 +1618,8 @@ item.ammo_grenade_concussion.name=40mm Granate (Erschütterung) item.ammo_grenade_finned.name=40mm Granate (Geflügelt) item.ammo_grenade_nuclear.name=40mm Granate (Привет) item.ammo_grenade_sleek.name=40mm Granate (IF-F&E) +item.ammo_grenade_tracer.name=40mm Übungsgranate +item.ammo_grenade_kampf.name=40mm Rakete item.ammo_fuel.name=Dieselkatusche item.ammo_fuel_napalm.name=Napalmkatusche item.ammo_fuel_phosphorus.name=WP-Katusche diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index dbf9efe29..2046499f5 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -763,16 +763,16 @@ item.mechanism_launcher_1.name=Launcher Mechanism item.mechanism_launcher_2.name=Advanced Launcher Mechanism item.mechanism_special.name=High-Tech Weapon Mechanism -item.primer_357.name=.357 Magnum Primer (x16) -item.primer_44.name=.44 Magnum Primer (x16) -item.primer_9.name=Small Caliber Primer (x24) -item.primer_50.name=Large Caliber Primer (x8) -item.primer_buckshot.name=Buckshot Primer (x8) -item.casing_357.name=.357 Magnum Casing (x16) -item.casing_44.name=.44 Magnum Casing (x16) -item.casing_9.name=Small Caliber Casing (x24) -item.casing_50.name=Large Caliber Casing (x8) -item.casing_buckshot.name=Buckshot Casing (x8) +item.primer_357.name=.357 Magnum Primer (x24) +item.primer_44.name=.44 Magnum Primer (x24) +item.primer_9.name=Small Caliber Primer (x32) +item.primer_50.name=Large Caliber Primer (x12) +item.primer_buckshot.name=Buckshot Primer (x12) +item.casing_357.name=.357 Magnum Casing (x24) +item.casing_44.name=.44 Magnum Casing (x24) +item.casing_9.name=Small Caliber Casing (x32) +item.casing_50.name=Large Caliber Casing (x12) +item.casing_buckshot.name=Buckshot Casing (x12) item.assembly_iron.name=Iron Bullet Assembly item.assembly_steel.name=Lead Bullet Assembly item.assembly_lead.name=Glass Bullet Assembly @@ -783,6 +783,7 @@ item.assembly_desh.name=Desh Bullet Assembly item.assembly_pip.name=Tainted Bullet Assembly item.assembly_nopip.name=.44 Magnum Assembly item.assembly_smg.name=9mm Assembly +item.assembly_556.name=5.56mm Assembly item.assembly_uzi.name=.22 LR Assembly item.assembly_actionexpress.name=.50 AE Assembly item.assembly_calamity.name=.50 BMG Assembly @@ -1466,6 +1467,7 @@ item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_bf.name=BEL item.gun_mp40.name=Submachine Gun +item.gun_flechette.name=Flechette Rifle item.gun_uzi.name=IMI Uzi item.gun_uzi_silencer.name=IMI Uzi with Silencer item.gun_uzi_saturnite.name=Saturnite Uzi @@ -1563,12 +1565,24 @@ item.ammo_50bmg.name=.50 BMG Round item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary) item.ammo_50bmg_phosphorus.name=.50 BMG Round (WP) item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive) +item.ammo_50bmg_ap.name=.50 BMG Round (AP) item.ammo_50bmg_du.name=.50 BMG Round (DU) item.ammo_50bmg_star.name=.50 BMG Round (Starmetal) item.ammo_9mm.name=9mm Round item.ammo_9mm_ap.name=9mm Round (Armor Piercing) item.ammo_9mm_du.name=9mm Round (DU) item.ammo_9mm_rocket.name=9mm Rocket +item.ammo_556.name=5.56mm Round +item.ammo_556_phosphorus.name=5.56mm Round (WP) +item.ammo_556_ap.name=5.56mm Round (AP) +item.ammo_556_du.name=5.56mm Round (DU) +item.ammo_556_star.name=5.56mm Round (Starmetal) +item.ammo_556_flechette.name=5.56mm Flechette Round +item.ammo_556_flechette_incendiary.name=5.56mm Flechette Round (Incendiary) +item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (Phosphorus-Tipped) +item.ammo_556_flechette_du.name=5.56mm Flechette Round (Uranium Penetrator) +item.ammo_556_tracer.name=5.56mm Round (Tracer) +item.ammo_556_k.name=5.56mm K-Round item.ammo_22lr.name=.22 LR Round item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing) item.ammo_folly.name=Silver Bullet (Original) @@ -1604,6 +1618,8 @@ item.ammo_grenade_concussion.name=40mm Grenade (Concussion) item.ammo_grenade_finned.name=40mm Grenade (Finned) item.ammo_grenade_nuclear.name=40mm Grenade (Привет) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) +item.ammo_grenade_tracer.name=40mm Training Grenade +item.ammo_grenade_kampf.name=40mm Rocket item.ammo_fuel.name=Diesel Tank item.ammo_fuel_napalm.name=Napalm Tank item.ammo_fuel_phosphorus.name=WP Tank diff --git a/assets/hbm/models/blocks/arrow.obj b/assets/hbm/models/blocks/arrow.obj new file mode 100644 index 000000000..52e9add4a --- /dev/null +++ b/assets/hbm/models/blocks/arrow.obj @@ -0,0 +1,80 @@ +# Blender v2.76 (sub 0) OBJ File: '' +# www.blender.org +o Plane +v -0.250000 0.125000 -0.500000 +v 0.250000 0.125000 -0.500000 +v 0.500000 0.125000 0.000000 +v 0.000000 0.125000 0.500000 +v 0.000000 0.000000 0.500000 +v -0.500000 0.000000 0.000000 +v 0.500000 0.000000 0.000000 +v 0.250000 0.000000 -0.500000 +v -0.500000 0.125000 0.000000 +v -0.250000 0.000000 -0.500000 +v 0.250000 0.000000 0.000000 +v -0.250000 0.125000 0.000000 +v -0.250000 0.000000 0.000000 +v 0.250000 0.125000 0.000000 +vt 0.494975 0.819349 +vt 0.424264 0.819349 +vt 0.424264 0.638698 +vt 0.141422 1.000000 +vt 0.070711 1.000000 +vt 0.070711 0.638698 +vt 0.700000 0.510958 +vt 0.900000 0.255479 +vt 1.000000 0.638698 +vt 0.353554 1.000000 +vt 0.282843 1.000000 +vt 0.282843 0.638698 +vt 0.000000 1.000000 +vt 0.000000 0.638698 +vt 0.353554 0.819349 +vt 0.353554 0.638698 +vt 0.400000 0.255479 +vt 0.500000 0.638698 +vt 0.200000 0.510958 +vt 0.212132 1.000000 +vt 0.141422 0.638698 +vt 0.212132 0.638698 +vt 0.494975 0.638698 +vt 0.500000 0.255479 +vt 0.700000 0.000000 +vt 0.600000 0.638698 +vt 1.000000 0.127740 +vt 0.500000 0.127740 +vt 0.000000 0.255479 +vt 0.200000 0.000000 +vt 0.100000 0.638698 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.707100 0.000000 0.707100 +vn 0.707100 0.000000 0.707100 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +s off +f 6/1/1 9/2/1 12/3/1 +f 8/4/2 2/5/2 14/6/2 +f 14/7/3 12/8/3 4/9/3 +f 5/10/4 4/11/4 9/12/4 +f 7/5/5 3/13/5 4/14/5 +f 11/2/1 14/15/1 3/16/1 +f 11/17/6 5/18/6 13/19/6 +f 13/20/7 12/4/7 1/21/7 +f 10/22/1 1/12/1 2/11/1 +f 13/23/1 6/1/1 12/3/1 +f 11/21/2 8/4/2 14/6/2 +f 14/7/3 2/24/3 1/25/3 +f 4/9/3 3/26/3 14/7/3 +f 12/8/3 9/27/3 4/9/3 +f 14/7/3 1/25/3 12/8/3 +f 6/16/4 5/10/4 9/12/4 +f 5/6/5 7/5/5 4/14/5 +f 7/3/1 11/2/1 3/16/1 +f 11/17/6 7/28/6 5/18/6 +f 10/29/6 8/30/6 11/17/6 +f 5/18/6 6/31/6 13/19/6 +f 13/19/6 10/29/6 11/17/6 +f 10/22/7 13/20/7 1/21/7 +f 8/20/1 10/22/1 2/11/1 diff --git a/assets/hbm/models/weapons/flechette.obj b/assets/hbm/models/weapons/flechette.obj new file mode 100644 index 000000000..3418c1046 --- /dev/null +++ b/assets/hbm/models/weapons/flechette.obj @@ -0,0 +1,2200 @@ +# Blender v2.76 (sub 0) OBJ File: 'flechette.blend' +# www.blender.org +o gren_tube +v -5.868640 3.866710 0.390760 +v -5.868640 4.145857 -0.003321 +v -5.868640 4.068658 -0.001782 +v -5.868640 3.842549 0.317423 +v -2.773548 4.145857 -0.003322 +v -2.773548 3.863501 -0.386212 +v -5.868640 3.863501 -0.386211 +v -2.773548 3.866710 0.390759 +v -2.795583 3.884170 0.432546 +v -2.345142 3.884170 0.432546 +v -2.339203 4.201795 -0.004436 +v -2.801521 4.201795 -0.004436 +v -2.345142 3.880613 -0.428688 +v -2.795583 3.880613 -0.428688 +v -2.339203 3.364457 -0.260925 +v -2.801521 3.364457 -0.260925 +v -2.339203 3.366714 0.285381 +v -2.801521 3.366714 0.285382 +v -2.773548 3.409849 -0.228771 +v -2.773548 3.411832 0.251424 +v -5.868640 3.474099 0.204562 +v -5.868640 3.409849 -0.228770 +v -5.868640 3.411832 0.251425 +v -5.868640 3.472492 -0.184396 +v -5.868640 3.839950 -0.311924 +v -5.895552 3.852386 -0.310705 +v -5.895552 3.458083 -0.196155 +v -5.895552 3.499174 -0.166825 +v -5.895552 3.836442 -0.264805 +v -5.716124 3.852386 -0.310705 +v -5.895552 4.094360 0.013274 +v -5.716124 4.094360 0.013274 +v -5.895552 3.849605 0.328054 +v -5.716124 3.849605 0.328054 +v -5.895552 3.456364 0.198619 +v -5.716124 3.456364 0.198619 +v -5.716124 3.458083 -0.196155 +v -5.895552 3.497704 0.170847 +v -5.595632 3.497704 0.170847 +v -5.595632 3.499174 -0.166825 +v -5.895552 3.834063 0.281559 +v -5.895552 4.043415 0.012311 +v -5.595632 3.836442 -0.264805 +v -5.595632 3.834063 0.281559 +v -5.595632 4.043415 0.012311 +vt 0.809782 0.796148 +vt 0.849006 0.914880 +vt 0.830011 0.908645 +vt 0.228888 0.909270 +vt 0.186002 0.775437 +vt 0.005890 0.909271 +vt 0.649694 0.914880 +vt 0.698462 0.812472 +vt 0.668568 0.908645 +vt 0.389821 0.836340 +vt 0.346177 0.970909 +vt 0.298132 0.836340 +vt 0.528838 0.968980 +vt 0.441134 0.908887 +vt 0.453615 0.905000 +vt 0.579864 0.811655 +vt 0.572277 0.821832 +vt 0.480589 0.821832 +vt 0.528633 0.956401 +vt 0.601970 0.905000 +vt 0.472669 0.811655 +vt 0.614578 0.908887 +vt 0.798239 0.812472 +vt 0.044548 0.775437 +vt 0.118696 0.991993 +vt 0.749869 0.968083 +vt 0.686600 0.796148 +vt 0.750066 0.988261 +vt 0.271159 0.919508 +vt 0.419514 0.919508 +vt 0.803137 0.007858 +vt 0.803137 0.131039 +vt 0.001736 0.131039 +vt 0.803137 0.502892 +vt 0.803137 0.627936 +vt 0.001736 0.627936 +vt 0.585596 0.646454 +vt 0.725474 0.644916 +vt 0.725474 0.764622 +vt 0.026539 0.764623 +vt 0.026539 0.644916 +vt 0.164318 0.646454 +vt 0.304846 0.644916 +vt 0.304846 0.764623 +vt 0.446300 0.644916 +vt 0.446301 0.764623 +vt 0.001736 0.379711 +vt 0.001736 0.255375 +vt 0.803137 0.255375 +vt 0.803137 0.379711 +vt 0.001736 0.502893 +vt 0.892792 0.578386 +vt 0.892792 0.473685 +vt 0.939250 0.473685 +vt 0.892792 0.997359 +vt 0.892792 0.894115 +vt 0.939251 0.894115 +vt 0.892792 0.786921 +vt 0.939250 0.786921 +vt 0.892792 0.684703 +vt 0.939250 0.684703 +vt 0.939250 0.578386 +vt 0.946146 0.279274 +vt 0.868489 0.279274 +vt 0.868489 0.191841 +vt 0.946146 0.459272 +vt 0.868489 0.459272 +vt 0.868489 0.370962 +vt 0.946146 0.191841 +vt 0.868489 0.100903 +vt 0.946146 0.370962 +vt 0.946146 0.100903 +vt 0.868489 0.011346 +vt 0.001736 0.007857 +vt 0.585597 0.763085 +vt 0.164318 0.763085 +vt 0.939251 0.997359 +vt 0.946146 0.011346 +vn -1.000000 -0.000000 0.000000 +vn -0.999900 0.011500 -0.000000 +vn -0.999800 -0.018600 0.000100 +vn 0.000000 1.000000 -0.009600 +vn -0.000000 0.296200 -0.955100 +vn 0.000000 0.322700 0.946500 +vn 0.000000 0.326500 0.945200 +vn 0.000000 1.000000 -0.009700 +vn 0.000000 0.299600 -0.954100 +vn 0.000000 -0.811700 -0.584000 +vn 0.000000 -0.798300 0.602200 +vn 0.000000 -0.802800 0.596300 +vn -0.000000 -0.816000 -0.578000 +vn 0.000000 0.317700 -0.948200 +vn 0.000000 1.000000 0.009700 +vn 0.000000 0.291700 0.956500 +vn 0.000000 -0.811400 0.584500 +vn 0.000000 -0.798400 -0.602200 +vn 0.000000 0.811400 -0.584500 +vn 0.000000 0.798400 0.602200 +vn 0.000000 -1.000000 -0.009700 +vn 0.000000 -0.291700 -0.956500 +vn 0.000000 -0.317700 0.948200 +s off +f 1/1/1 2/2/1 3/3/1 +f 14/4/2 16/5/2 9/6/2 +f 22/7/1 21/8/1 24/9/1 +f 44/10/1 43/11/1 39/12/1 +f 26/13/1 27/14/1 28/15/1 +f 33/16/1 41/17/1 38/18/1 +f 26/13/1 29/19/1 42/20/1 +f 35/21/1 38/18/1 28/15/1 +f 33/16/1 31/22/1 42/20/1 +f 4/23/1 1/1/1 3/3/1 +f 18/24/2 9/6/2 16/5/2 +f 12/25/3 14/4/3 9/6/3 +f 3/3/1 2/2/1 25/26/1 +f 23/27/1 1/1/1 21/8/1 +f 25/26/1 2/2/1 7/28/1 +f 1/1/1 4/23/1 21/8/1 +f 25/26/1 7/28/1 22/7/1 +f 22/7/1 23/27/1 21/8/1 +f 24/9/1 25/26/1 22/7/1 +f 40/29/1 39/12/1 43/11/1 +f 44/10/1 45/30/1 43/11/1 +f 29/19/1 26/13/1 28/15/1 +f 35/21/1 33/16/1 38/18/1 +f 31/22/1 26/13/1 42/20/1 +f 27/14/1 35/21/1 28/15/1 +f 41/17/1 33/16/1 42/20/1 +s 1 +f 5/31/4 6/32/5 7/33/5 +f 8/34/6 5/35/4 2/36/4 +f 10/37/7 11/38/8 12/39/8 +f 12/40/8 11/41/8 13/42/9 +f 13/42/9 15/43/10 16/44/10 +f 16/44/10 15/43/10 17/45/11 +f 18/46/11 17/45/11 10/37/7 +f 23/47/12 22/48/13 19/49/13 +f 20/50/12 8/34/6 1/51/6 +f 7/33/5 6/32/5 19/49/13 +f 26/52/14 31/53/15 32/54/15 +f 31/55/15 33/56/16 34/57/16 +f 33/56/16 35/58/17 36/59/17 +f 35/58/17 27/60/18 37/61/18 +f 27/60/18 26/52/14 30/62/14 +f 38/63/19 39/64/19 40/65/20 +f 42/66/21 45/67/21 44/68/22 +f 28/69/20 40/65/20 43/70/23 +f 41/71/22 44/68/22 39/64/19 +f 29/72/23 43/70/23 45/73/21 +f 2/74/4 5/31/4 7/33/5 +f 1/51/6 8/34/6 2/36/4 +f 9/75/7 10/37/7 12/39/8 +f 14/76/9 12/40/8 13/42/9 +f 14/76/9 13/42/9 16/44/10 +f 18/46/11 16/44/10 17/45/11 +f 9/75/7 18/46/11 10/37/7 +f 20/50/12 23/47/12 19/49/13 +f 23/47/12 20/50/12 1/51/6 +f 22/48/13 7/33/5 19/49/13 +f 30/62/14 26/52/14 32/54/15 +f 32/77/15 31/55/15 34/57/16 +f 34/57/16 33/56/16 36/59/17 +f 36/59/17 35/58/17 37/61/18 +f 37/61/18 27/60/18 30/62/14 +f 28/69/20 38/63/19 40/65/20 +f 41/71/22 42/66/21 44/68/22 +f 29/72/23 28/69/20 43/70/23 +f 38/63/19 41/71/22 39/64/19 +f 42/78/21 29/72/23 45/73/21 +o drum +v 4.098666 2.143699 0.974937 +v 2.388864 2.143698 0.974937 +v 2.388864 1.297696 0.781806 +v 4.098666 1.297696 0.781806 +v 2.388864 0.921218 -0.000041 +v 4.098666 0.921218 -0.000041 +v 2.388864 1.297760 -0.781857 +v 4.098666 1.297761 -0.781857 +v 2.388864 2.143779 -0.974919 +v 4.098666 2.143779 -0.974919 +v 2.388864 2.822205 -0.433847 +v 4.098666 2.822205 -0.433846 +v 2.388864 2.822169 0.433921 +v 2.388864 3.134844 0.292147 +v 2.388864 3.134880 -0.292047 +v 2.388864 2.757353 -0.402619 +v 2.388864 2.757319 0.402688 +v 2.388864 2.127684 0.904762 +v 4.098666 2.822169 0.433921 +v 2.388864 1.342576 0.725532 +v 2.388864 0.993197 -0.000038 +v 2.388864 1.342636 -0.725580 +v 2.388864 2.127759 -0.904745 +v 2.546966 2.757353 -0.402619 +v 2.546966 2.757319 0.402688 +v 4.098666 3.134880 -0.292047 +v 4.098666 3.134844 0.292147 +v 4.098666 2.123293 -0.885178 +v 4.098666 1.355149 -0.709888 +v 4.098666 1.013267 -0.000038 +v 4.098666 1.355090 0.709841 +v 4.098666 2.123219 0.885195 +v 4.098666 2.739237 0.393979 +v 4.098666 2.739270 -0.393911 +v 2.546966 1.342576 0.725532 +v 2.546966 2.127684 0.904762 +v 2.546966 2.127759 -0.904745 +v 2.546966 1.342636 -0.725580 +v 2.546966 0.993197 -0.000038 +v 3.963159 1.013267 -0.000038 +v 3.963159 1.355090 0.709841 +v 3.963158 2.123219 0.885195 +v 3.963159 1.355149 -0.709888 +v 3.963159 2.123293 -0.885178 +v 3.963158 2.739270 -0.393911 +v 3.963158 2.739237 0.393979 +vt 0.327911 0.477825 +vt 0.182075 0.398586 +vt 0.351115 0.398579 +vt 0.430695 0.092193 +vt 0.471235 0.269776 +vt 0.456504 0.266414 +vt 0.067858 0.896136 +vt 0.426759 0.896136 +vt 0.426759 0.961769 +vt 0.067858 0.961761 +vt 0.415588 0.104240 +vt 0.452396 0.265477 +vt 0.349286 0.394783 +vt 0.934776 0.291478 +vt 0.554946 0.291493 +vt 0.592554 0.126690 +vt 0.893860 0.129304 +vt 0.595847 0.129316 +vt 0.827558 0.419848 +vt 0.117575 0.104252 +vt 0.102469 0.092205 +vt 0.061943 0.269791 +vt 0.266578 0.013166 +vt 0.266579 0.032488 +vt 0.183902 0.394790 +vt 0.175519 0.412199 +vt 0.080781 0.265491 +vt 0.357671 0.412192 +vt 0.076674 0.266429 +vt 0.114282 0.101625 +vt 0.266580 0.028276 +vt 0.418883 0.101613 +vt 0.205285 0.477832 +vt 0.744851 0.053340 +vt 0.897154 0.126678 +vt 0.829387 0.423644 +vt 0.660346 0.423650 +vt 0.930668 0.290541 +vt 0.744850 0.057553 +vt 0.559052 0.290555 +vt 0.662173 0.419854 +vt 0.918527 0.526720 +vt 0.918527 0.567259 +vt 0.559626 0.567259 +vt 0.918527 0.731375 +vt 0.559626 0.731375 +vt 0.918527 0.895484 +vt 0.918527 0.936009 +vt 0.559626 0.936009 +vt 0.067858 0.753729 +vt 0.426759 0.753729 +vt 0.174363 0.597257 +vt 0.174363 0.564070 +vt 0.343403 0.564070 +vt 0.106872 0.626318 +vt 0.106872 0.659505 +vt 0.069263 0.659505 +vt 0.411474 0.626319 +vt 0.411474 0.659506 +vt 0.259170 0.659505 +vt 0.343404 0.597257 +vt 0.448793 0.564070 +vt 0.068963 0.597257 +vt 0.068963 0.564070 +vt 0.259171 0.626318 +vt 0.449095 0.626319 +vt 0.449095 0.659506 +vt 0.259170 0.723543 +vt 0.259170 0.695099 +vt 0.408179 0.695099 +vt 0.444683 0.515281 +vt 0.444683 0.543725 +vt 0.341572 0.543725 +vt 0.176187 0.515281 +vt 0.176188 0.543725 +vt 0.073067 0.543725 +vt 0.110166 0.723542 +vt 0.110166 0.695098 +vt 0.444987 0.723543 +vt 0.408179 0.723543 +vt 0.341572 0.515281 +vt 0.073370 0.723542 +vt 0.073370 0.695098 +vt 0.559626 0.526720 +vt 0.559626 0.895484 +vt 0.069263 0.626318 +vt 0.448794 0.597257 +vt 0.073067 0.515281 +vt 0.444987 0.695099 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 0.413000 -0.910700 +vn 0.000000 0.413000 0.910800 +vn 1.000000 0.000000 0.000000 +vn -0.000000 0.222500 0.974900 +vn 0.000000 -0.623500 0.781800 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -0.623500 -0.781900 +vn 0.000000 0.222600 -0.974900 +vn 0.000000 0.623500 -0.781800 +vn -0.000000 0.623500 0.781900 +vn 0.000000 -0.901000 0.433800 +vn 0.000000 -0.901000 -0.433900 +vn 0.000000 -0.222600 0.974900 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -0.222500 -0.974900 +s off +f 59/79/24 61/80/24 62/81/24 +f 48/82/24 47/83/24 63/84/24 +f 57/85/25 56/86/25 60/87/25 +f 64/85/26 72/88/26 59/87/26 +f 49/82/27 76/89/27 77/90/27 +f 46/83/27 77/90/27 78/91/27 +f 81/92/24 82/93/24 83/94/24 +f 86/95/27 88/96/27 91/97/27 +f 74/98/27 53/99/27 55/100/27 +f 51/101/27 75/102/27 76/89/27 +f 75/102/27 51/101/27 53/99/27 +f 78/91/27 79/103/27 72/79/27 +f 57/104/27 79/103/27 73/105/27 +f 58/106/24 62/81/24 63/84/24 +f 54/100/24 68/107/24 61/80/24 +f 54/100/24 52/99/24 67/108/24 +f 52/99/24 50/101/24 66/109/24 +f 50/101/24 48/82/24 65/110/24 +f 62/81/24 58/106/24 59/79/24 +f 59/79/24 60/111/24 61/80/24 +f 56/104/24 61/80/24 60/111/24 +f 65/110/24 48/82/24 63/84/24 +f 71/88/25 57/85/25 60/87/25 +f 58/86/26 64/85/26 59/87/26 +f 46/83/27 49/82/27 77/90/27 +f 64/106/27 46/83/27 78/91/27 +f 84/112/24 80/113/24 81/92/24 +f 81/92/24 70/114/24 82/93/24 +f 69/115/24 82/93/24 70/114/24 +f 83/94/24 84/112/24 81/92/24 +f 91/97/27 87/116/27 86/95/27 +f 86/95/27 85/117/27 88/96/27 +f 88/96/27 89/118/27 91/97/27 +f 90/119/27 91/97/27 89/118/27 +f 73/105/27 74/98/27 55/100/27 +f 49/82/27 51/101/27 76/89/27 +f 74/98/27 75/102/27 53/99/27 +f 71/111/27 72/79/27 79/103/27 +f 64/106/27 78/91/27 72/79/27 +f 79/103/27 57/104/27 71/111/27 +f 55/100/27 57/104/27 73/105/27 +f 47/83/24 58/106/24 63/84/24 +f 56/104/24 54/100/24 61/80/24 +f 68/107/24 54/100/24 67/108/24 +f 67/108/24 52/99/24 66/109/24 +f 66/109/24 50/101/24 65/110/24 +s 1 +f 47/120/28 48/121/29 49/122/29 +f 48/121/29 50/123/30 51/124/30 +f 51/124/30 50/123/30 52/125/31 +f 52/125/31 54/126/32 55/127/32 +f 55/128/32 54/129/32 56/86/33 +f 58/86/34 47/129/28 46/128/28 +f 61/130/35 69/131/35 70/132/36 +f 67/133/34 83/134/34 82/135/37 +f 65/136/33 80/137/33 84/138/38 +f 62/139/36 70/132/36 81/140/39 +f 68/141/37 82/142/37 69/131/35 +f 66/143/38 84/138/38 83/134/34 +f 63/144/39 81/145/39 80/137/33 +f 75/146/38 85/147/38 86/148/33 +f 77/149/39 87/150/39 91/151/36 +f 79/152/35 90/153/35 89/154/37 +f 74/155/34 88/156/34 85/147/38 +f 77/157/39 76/158/33 86/148/33 +f 78/159/36 91/151/36 90/153/35 +f 73/160/37 89/161/37 88/156/34 +f 46/162/28 47/120/28 49/122/29 +f 49/122/29 48/121/29 51/124/30 +f 53/163/31 51/124/30 52/125/31 +f 53/163/31 52/125/31 55/127/32 +f 57/85/33 55/128/32 56/86/33 +f 64/85/34 58/86/34 46/128/28 +f 62/139/36 61/130/35 70/132/36 +f 68/164/37 67/133/34 82/135/37 +f 66/143/38 65/136/33 84/138/38 +f 63/165/39 62/139/36 81/140/39 +f 61/130/35 68/141/37 69/131/35 +f 67/133/34 66/143/38 83/134/34 +f 65/136/33 63/144/39 80/137/33 +f 76/158/33 75/146/38 86/148/33 +f 78/159/36 77/149/39 91/151/36 +f 73/166/37 79/152/35 89/154/37 +f 75/146/38 74/155/34 85/147/38 +f 87/167/39 77/157/39 86/148/33 +f 79/152/35 78/159/36 90/153/35 +f 74/155/34 73/160/37 88/156/34 +o stock +v 6.642165 3.598009 -0.296132 +v 5.959075 3.939131 -0.433690 +v 5.959075 4.345873 -0.433690 +v 6.642165 4.001247 -0.263173 +v 5.959075 4.345873 0.433690 +v 6.642165 4.001027 0.263343 +v 5.959075 3.939131 0.433690 +v 6.642165 3.597514 0.296077 +v 5.959075 3.478605 0.320015 +v 6.642165 3.133610 0.222116 +v 5.962569 3.477654 -0.001553 +v 6.645088 2.917124 -0.001078 +v 5.959075 3.478605 -0.320015 +v 6.642165 3.134006 -0.222451 +v 7.079863 3.532114 -0.214907 +v 7.079863 4.095522 -0.284310 +v 7.082420 3.270234 -0.001014 +v 7.079863 3.531327 0.214526 +v 7.079863 4.094541 0.284293 +v 7.571378 4.579840 -0.089104 +v 7.571378 4.579212 0.089499 +v 10.042795 4.578496 -0.089286 +v 10.042795 4.112889 -0.201641 +v 7.571378 3.530748 0.206003 +v 7.573524 3.270234 -0.000942 +v 7.571378 3.531880 -0.206436 +v 10.042795 4.109229 0.201892 +v 9.135580 3.527723 0.161452 +v 10.042795 3.527723 0.161452 +v 9.135580 3.006471 -0.000565 +v 9.135580 3.530658 -0.162156 +v 10.042795 4.576867 0.090303 +v 10.042795 3.006471 -0.000565 +v 10.042795 3.530658 -0.162156 +v 7.082420 3.270234 -0.001014 +v 7.573524 3.270234 -0.000942 +v 9.135580 3.006471 -0.000565 +v 5.959075 4.345873 -0.433690 +v 6.642165 4.001247 -0.263173 +v 5.959075 4.345873 0.433690 +v 6.642165 4.001027 0.263343 +v 7.571378 4.579212 0.089499 +v 7.079863 4.094541 0.284293 +v 7.079863 4.095522 -0.284310 +v 7.571378 4.579840 -0.089104 +v 5.962569 3.477654 -0.001553 +v 6.645088 2.917124 -0.001078 +vt 0.929532 0.728182 +vt 0.908046 0.548097 +vt 0.985745 0.549507 +vt 0.978143 0.325293 +vt 0.964112 0.728809 +vt 0.915833 0.324163 +vt 0.947029 0.123432 +vt 0.813120 0.738957 +vt 0.813120 0.895590 +vt 0.681593 0.762877 +vt 0.683263 0.099031 +vt 0.814790 0.033366 +vt 0.814790 0.367388 +vt 0.681593 0.762792 +vt 0.681593 0.607402 +vt 0.813120 0.561611 +vt 0.681593 0.428755 +vt 0.812448 0.561245 +vt 0.681593 0.428908 +vt 0.681593 0.607592 +vt 0.597316 0.582217 +vt 0.596824 0.481368 +vt 0.681030 0.345388 +vt 0.597316 0.581914 +vt 0.597316 0.798804 +vt 0.683263 0.301789 +vt 0.598986 0.309857 +vt 0.597316 0.799182 +vt 0.598986 0.090891 +vt 0.504346 0.234843 +vt 0.502676 0.985690 +vt 0.026811 0.985172 +vt 0.026811 0.805870 +vt 0.502676 0.581691 +vt 0.502676 0.582127 +vt 0.201493 0.580526 +vt 0.026811 0.804460 +vt 0.502263 0.481368 +vt 0.201493 0.581656 +vt 0.026811 0.581656 +vt 0.026811 0.379795 +vt 0.201493 0.379795 +vt 0.026811 0.580526 +vt 0.502676 0.985448 +vt 0.028483 0.235153 +vt 0.028483 0.165994 +vt 0.504346 0.166064 +vt 0.026811 0.984545 +vn 1.000000 -0.000000 0.000000 +vn 0.185000 -0.070100 -0.980200 +vn 0.242200 0.000000 -0.970200 +vn 0.095800 0.069600 -0.993000 +vn 0.145300 0.989400 0.000700 +vn 0.450400 0.892800 0.000000 +vn 0.450500 0.892800 0.000100 +vn 0.096200 0.069100 0.993000 +vn 0.242000 0.000000 0.970300 +vn 0.184800 -0.070100 0.980300 +vn 0.118500 -0.090800 0.988800 +vn -0.186300 -0.640200 0.745200 +vn 0.036000 -0.574400 0.817800 +vn -0.481900 -0.866200 0.131900 +vn -0.481200 -0.866600 -0.132200 +vn -0.186100 -0.640400 -0.745200 +vn 0.036100 -0.571600 -0.819800 +vn 0.118300 -0.090300 -0.988900 +vn 0.153600 -0.333400 -0.930200 +vn 0.299400 -0.611300 -0.732600 +vn -0.000100 -0.714300 -0.699800 +vn -0.000800 -0.717800 0.696200 +vn 0.300300 -0.615000 0.729100 +vn 0.154400 -0.335600 0.929300 +vn 0.036700 0.016200 0.999200 +vn 0.145800 0.989300 0.000400 +vn -0.453700 0.891200 0.001100 +vn 0.036400 0.016900 -0.999200 +vn -0.454400 0.890800 0.001600 +vn -0.409800 0.912200 0.003000 +vn 0.022100 0.343100 -0.939000 +vn 0.000100 0.234600 -0.972100 +vn 0.006800 0.085300 -0.996300 +vn 0.019700 -0.384900 0.922700 +vn 0.019900 -0.382100 -0.923900 +vn 0.001100 -0.214000 0.976800 +vn 0.006700 0.083200 0.996500 +vn 0.004000 -0.587300 -0.809400 +vn 0.001400 -0.212100 -0.977300 +vn 0.003600 -0.591700 0.806200 +vn 0.000000 -0.182300 -0.983200 +vn 0.000000 -0.294600 -0.955600 +vn -0.023800 -0.296700 0.954700 +vn 0.000000 -0.296800 0.954900 +vn 0.000000 -0.184300 0.982900 +vn 0.022300 0.341900 0.939500 +vn 0.000900 1.000000 0.009100 +vn 0.000900 1.000000 0.008800 +vn -0.409500 0.912300 0.003200 +vn -0.023400 -0.294500 -0.955400 +vn -0.000100 0.232100 0.972700 +s off +f 123/168/40 118/169/40 114/170/40 +f 125/171/40 114/170/40 118/169/40 +f 113/172/40 123/168/40 114/170/40 +f 118/169/40 120/173/40 125/171/40 +f 124/174/40 125/171/40 120/173/40 +s 1 +f 93/175/41 129/176/42 130/177/43 +f 95/178/44 94/179/45 96/180/46 +f 132/181/47 131/176/48 98/175/49 +f 99/182/50 98/175/49 100/183/51 +f 101/184/52 100/183/51 137/185/53 +f 102/185/54 104/183/55 105/186/56 +f 104/183/55 93/175/41 92/187/57 +f 106/188/58 105/186/56 92/187/57 +f 108/189/59 138/190/60 105/186/56 +f 101/184/52 103/190/61 126/189/62 +f 99/182/50 101/184/52 109/191/63 +f 110/192/64 132/181/47 99/182/50 +f 95/178/44 97/193/65 134/194/66 +f 107/195/67 92/187/57 130/177/43 +f 135/196/68 134/194/66 112/197/69 +f 111/198/70 113/199/71 114/200/72 +f 115/201/73 109/191/63 126/189/62 +f 108/189/59 106/188/58 117/202/74 +f 110/192/64 119/203/75 118/204/76 +f 116/205/77 117/202/74 122/206/78 +f 119/203/75 115/201/73 127/205/79 +f 122/206/78 125/207/80 124/208/81 +f 121/209/82 124/208/83 120/210/84 +f 117/202/74 107/195/67 122/206/78 +f 133/211/85 110/192/64 118/204/76 +f 112/197/69 123/212/86 113/213/87 +f 92/187/57 93/175/41 130/177/43 +f 97/193/65 95/178/44 96/180/46 +f 99/182/50 132/181/47 98/175/49 +f 101/184/52 99/182/50 100/183/51 +f 103/190/61 101/184/52 137/185/53 +f 138/190/60 102/185/54 105/186/56 +f 105/186/56 104/183/55 92/187/57 +f 107/195/67 106/188/58 92/187/57 +f 106/188/58 108/189/59 105/186/56 +f 109/191/63 101/184/52 126/189/62 +f 110/192/64 99/182/50 109/191/63 +f 135/196/68 95/178/44 134/194/66 +f 136/214/88 135/196/68 112/197/69 +f 107/195/67 111/198/70 114/200/72 +f 127/205/79 115/201/73 126/189/62 +f 116/205/77 108/189/59 117/202/74 +f 120/210/84 118/204/76 119/203/75 +f 110/192/64 109/191/63 115/201/73 +f 115/201/73 119/203/75 110/192/64 +f 128/209/89 116/205/77 122/206/78 +f 121/209/82 119/203/75 127/205/79 +f 128/209/89 122/206/78 124/208/81 +f 119/203/75 121/209/82 120/210/84 +f 125/207/80 122/206/78 114/200/72 +f 117/202/74 106/188/58 107/195/67 +f 107/195/67 114/200/72 122/206/78 +f 123/215/90 133/211/85 118/204/76 +f 136/214/88 112/197/69 113/213/87 +o grenades +v -0.233697 2.469877 -0.916158 +v -0.233697 2.991506 -1.089823 +v -0.233697 3.315003 -0.655996 +v -0.233697 2.993307 -0.214210 +v -0.233697 2.470990 -0.374999 +v -1.951176 2.469877 -0.916158 +v -1.951176 2.470990 -0.374999 +v -1.951176 2.993307 -0.214210 +v -1.951176 3.315003 -0.655996 +v -1.951176 2.991506 -1.089823 +v -0.233697 2.995483 1.081026 +v -0.233697 2.473131 0.909562 +v -0.233697 2.471954 0.368407 +v -0.233697 2.993579 0.205419 +v -0.233697 3.317138 0.645841 +v -1.951176 2.995483 1.081026 +v -1.951176 3.317138 0.645841 +v -1.951176 2.993579 0.205419 +v -1.951176 2.471954 0.368407 +v -1.951176 2.473131 0.909562 +v -0.233697 3.597358 0.444367 +v -0.233697 3.279485 -0.004386 +v -0.233697 3.601012 -0.440396 +v -0.233697 4.117600 -0.261112 +v -0.233697 4.115342 0.285702 +v -1.951176 3.597358 0.444367 +v -1.951176 4.115342 0.285702 +v -1.951176 4.117600 -0.261112 +v -1.951176 3.601012 -0.440396 +v -1.951176 3.279485 -0.004386 +vt 0.982160 0.292914 +vt 0.612838 0.024586 +vt 0.753906 0.458750 +vt 0.400000 0.918942 +vt 0.600000 0.918942 +vt 0.800000 0.918942 +vt 0.525652 0.292914 +vt 0.894974 0.024586 +vt 0.000000 0.918942 +vt 0.200000 0.918942 +vt 1.000000 0.918942 +vt 0.800000 0.511568 +vt 0.600000 0.511568 +vt 0.400000 0.511568 +vt 0.200000 0.511568 +vt 0.000000 0.511568 +vt 1.000000 0.511568 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -0.811700 -0.584000 +vn 0.000000 0.299700 -0.954000 +vn 0.000000 1.000000 -0.005700 +vn 0.000000 0.315900 0.948800 +vn 0.000000 -0.803800 0.594900 +vn 0.000000 0.303700 0.952800 +vn 0.000000 -0.809300 0.587400 +vn 0.000000 -0.806300 -0.591500 +vn 0.000000 0.311900 -0.950100 +vn 0.000000 1.000000 0.001400 +vn 0.000000 -0.322700 0.946500 +vn 0.000000 -1.000000 -0.009600 +vn 0.000000 -0.296200 -0.955100 +vn 0.000000 0.816000 -0.578000 +vn 0.000000 0.802800 0.596300 +s off +f 140/216/91 142/217/91 139/218/91 +f 146/219/92 147/220/92 148/221/92 +f 150/216/91 152/217/91 149/218/91 +f 156/219/92 157/220/92 158/221/92 +f 160/216/91 162/217/91 159/218/91 +f 166/219/92 167/220/92 168/221/92 +f 143/222/91 139/218/91 142/217/91 +f 140/216/91 141/223/91 142/217/91 +f 148/221/92 144/224/92 146/219/92 +f 145/225/92 146/219/92 144/224/92 +f 153/222/91 149/218/91 152/217/91 +f 150/216/91 151/223/91 152/217/91 +f 158/221/92 154/224/92 156/219/92 +f 155/225/92 156/219/92 154/224/92 +f 163/222/91 159/218/91 162/217/91 +f 160/216/91 161/223/91 162/217/91 +f 168/221/92 164/224/92 166/219/92 +f 165/225/92 166/219/92 164/224/92 +s 1 +f 144/226/93 148/221/94 140/227/94 +f 148/221/94 147/220/95 141/228/95 +f 147/220/95 146/219/96 142/229/96 +f 146/219/96 145/225/97 143/230/97 +f 145/225/97 144/224/93 139/231/93 +f 154/226/98 158/221/99 150/227/99 +f 158/221/99 157/220/100 151/228/100 +f 157/220/100 156/219/101 152/229/101 +f 156/219/101 155/225/102 153/230/102 +f 155/225/102 154/224/98 149/231/98 +f 164/226/103 168/221/104 160/227/104 +f 168/221/104 167/220/105 161/228/105 +f 167/220/105 166/219/106 162/229/106 +f 166/219/106 165/225/107 163/230/107 +f 165/225/107 164/224/103 159/231/103 +f 139/232/93 144/226/93 140/227/94 +f 140/227/94 148/221/94 141/228/95 +f 141/228/95 147/220/95 142/229/96 +f 142/229/96 146/219/96 143/230/97 +f 143/230/97 145/225/97 139/231/93 +f 149/232/98 154/226/98 150/227/99 +f 150/227/99 158/221/99 151/228/100 +f 151/228/100 157/220/100 152/229/101 +f 152/229/101 156/219/101 153/230/102 +f 153/230/102 155/225/102 149/231/98 +f 159/232/103 164/226/103 160/227/104 +f 160/227/104 168/221/104 161/228/105 +f 161/228/105 167/220/105 162/229/106 +f 162/229/106 166/219/106 163/230/107 +f 163/230/107 165/225/107 159/231/103 +o barrel +v -6.074285 4.998960 0.008424 +v -6.074285 4.875222 -0.166261 +v -5.662556 4.875222 -0.166261 +v -5.662556 4.998960 0.008424 +v -6.074285 5.122236 0.010881 +v -6.074285 4.913803 -0.283371 +v -6.074285 4.574156 -0.179332 +v -6.074285 4.673588 -0.104497 +v -6.074285 4.873800 0.178149 +v -6.074285 4.672709 0.108360 +v -6.074285 4.572675 0.179219 +v -6.074285 4.911407 0.296777 +v -2.336424 4.603768 -0.157045 +v -5.789216 4.603768 -0.157045 +v -5.789216 4.902313 -0.248493 +v -2.336424 4.902313 -0.248494 +v -2.336424 4.900207 0.261448 +v -5.789216 4.900207 0.261448 +v -5.789216 4.602467 0.158116 +v -2.336424 4.602467 0.158116 +v -2.336424 5.085523 0.010149 +v -5.789216 5.085523 0.010149 +v -5.662556 4.672709 0.108360 +v -5.662556 4.673588 -0.104497 +v -5.770857 4.913803 -0.283371 +v -5.770857 5.122236 0.010881 +v -5.770857 4.911407 0.296777 +v -5.770857 4.572675 0.179219 +v -5.770857 4.574156 -0.179332 +v -5.662556 4.873800 0.178149 +v -4.495610 4.603768 -0.119491 +v -4.486201 4.602467 0.120179 +v -4.486201 4.047801 0.118963 +v -4.495610 4.049102 -0.120707 +v -5.090245 4.047801 0.118963 +v -5.083595 4.049102 -0.120707 +v -5.083595 4.603768 -0.119491 +v -5.090245 4.602467 0.120179 +vt 0.595172 0.786886 +vt 0.678183 0.847575 +vt 0.643888 0.858603 +vt 0.644557 0.945770 +vt 0.623926 0.916898 +vt 0.445030 0.945770 +vt 0.341237 0.945770 +vt 0.310715 0.847575 +vt 0.444361 0.680003 +vt 0.444361 0.521673 +vt 0.512828 0.521894 +vt 0.035654 0.680225 +vt 0.035654 0.521894 +vt 0.203495 0.521894 +vt 0.271936 0.680003 +vt 0.271936 0.521673 +vt 0.203495 0.680225 +vt 0.540765 0.945770 +vt 0.562308 0.916898 +vt 0.510242 0.847575 +vt 0.594608 0.822575 +vt 0.544189 0.858603 +vt 0.395645 0.786886 +vt 0.478655 0.847575 +vt 0.512828 0.680225 +vt 0.863065 0.900888 +vt 0.980366 0.900888 +vt 0.980366 0.961877 +vt 0.989803 0.268428 +vt 0.989773 0.356668 +vt 0.013992 0.356331 +vt 0.989864 0.090294 +vt 0.989834 0.179360 +vt 0.014053 0.179024 +vt 0.989895 0.002053 +vt 0.014084 0.089957 +vt 0.989742 0.446242 +vt 0.013961 0.445905 +vt 0.863065 0.780164 +vt 0.980366 0.780164 +vt 0.980366 0.840808 +vt 0.731642 0.575938 +vt 0.731642 0.474256 +vt 0.817204 0.474256 +vt 0.731642 0.978489 +vt 0.731642 0.878321 +vt 0.817204 0.878321 +vt 0.731642 0.777214 +vt 0.817204 0.777214 +vt 0.731641 0.676107 +vt 0.817204 0.676107 +vt 0.817204 0.575938 +vt 0.863065 0.719521 +vt 0.980366 0.719521 +vt 0.863065 0.840808 +vt 0.863065 0.659440 +vt 0.980366 0.659440 +vt 0.014022 0.268091 +vt 0.863065 0.961877 +vt 0.014114 0.001716 +vt 0.817204 0.978489 +vn -1.000000 0.000000 0.000000 +vn 0.999200 0.000100 -0.039200 +vn 0.000000 0.002200 -1.000000 +vn 0.000000 -0.002200 1.000000 +vn -0.999600 0.000100 -0.027700 +vn 0.000000 -0.322700 0.946500 +vn 0.000000 -1.000000 -0.009600 +vn -0.000000 -0.802800 -0.596300 +vn -0.000000 0.322700 -0.946500 +vn 0.000000 0.296200 0.955100 +vn 0.000000 -0.816000 0.578000 +vn 0.000000 1.000000 0.009600 +vn -0.000000 1.000000 0.009500 +vn 0.000000 0.816000 -0.578000 +vn 0.000000 0.802800 0.596300 +vn 0.000000 -0.296200 -0.955100 +vn 0.000000 -1.000000 -0.009500 +s off +f 174/233/108 175/234/108 176/235/108 +f 179/236/108 178/237/108 176/235/108 +f 196/238/108 195/239/108 194/240/108 +f 200/241/109 201/242/109 202/243/109 +f 199/244/110 202/245/110 204/246/110 +f 206/247/111 203/248/111 201/242/111 +f 206/247/112 205/249/112 204/246/112 +f 179/236/108 180/250/108 177/251/108 +f 173/252/108 174/233/108 170/253/108 +f 173/252/108 169/254/108 177/251/108 +f 170/253/108 174/233/108 176/235/108 +f 175/234/108 179/236/108 176/235/108 +f 194/240/108 193/255/108 196/238/108 +f 197/256/108 196/238/108 193/255/108 +f 199/257/109 200/241/109 202/243/109 +f 205/249/110 199/244/110 204/246/110 +f 200/241/111 206/247/111 201/242/111 +f 203/248/112 206/247/112 204/246/112 +f 178/237/108 179/236/108 177/251/108 +f 169/254/108 173/252/108 170/253/108 +f 180/250/108 173/252/108 177/251/108 +s 1 +f 170/258/113 171/259/113 172/260/114 +f 182/261/115 183/262/116 184/263/116 +f 186/264/117 187/265/118 188/266/118 +f 190/267/119 186/264/117 185/268/117 +f 183/262/116 190/269/119 189/270/120 +f 178/271/121 191/272/121 192/273/122 +f 174/274/116 173/275/119 194/276/119 +f 173/277/119 180/278/117 195/279/117 +f 180/278/117 179/280/118 196/281/118 +f 179/280/118 175/282/115 197/283/115 +f 175/282/115 174/274/116 193/284/116 +f 177/285/123 198/286/123 191/272/121 +f 176/287/122 192/273/122 171/259/113 +f 169/288/124 172/289/114 198/286/123 +f 187/265/118 182/261/115 181/290/115 +f 169/291/124 170/258/113 172/260/114 +f 181/290/115 182/261/115 184/263/116 +f 185/268/117 186/264/117 188/266/118 +f 189/292/120 190/267/119 185/268/117 +f 184/263/116 183/262/116 189/270/120 +f 176/287/122 178/271/121 192/273/122 +f 193/284/116 174/274/116 194/276/119 +f 194/293/119 173/277/119 195/279/117 +f 195/279/117 180/278/117 196/281/118 +f 196/281/118 179/280/118 197/283/115 +f 197/283/115 175/282/115 193/284/116 +f 178/271/121 177/285/123 191/272/121 +f 170/258/113 176/287/122 171/259/113 +f 177/285/123 169/288/124 198/286/123 +f 188/266/118 187/265/118 181/290/115 +o pivot +v -1.971113 2.931105 -0.395477 +v -1.971113 3.375251 -0.251267 +v -1.971113 3.375349 0.215704 +v -1.971113 2.931262 0.360099 +v -1.971113 2.656704 -0.017632 +v -2.327534 2.931105 -0.377762 +v -2.327534 3.375251 -0.233553 +v -2.327534 2.656704 0.000083 +v -0.200761 3.342729 -0.209914 +v -0.200761 3.342817 0.209794 +v -0.200761 2.943678 0.339574 +v -0.200761 2.696910 0.000074 +v -0.200761 2.943537 -0.339528 +v -1.975154 2.943537 -0.339528 +v -1.975154 3.342729 -0.209914 +v -1.975154 2.696910 0.000074 +v -1.975154 2.943678 0.339574 +v -1.975154 3.342817 0.209794 +v -2.327534 2.931262 0.377814 +v -2.327534 3.375348 0.233419 +vt 0.824219 0.048017 +vt 0.905975 0.299639 +vt 0.691934 0.144128 +vt 0.956504 0.144154 +vt 0.742462 0.299639 +vt 0.956504 0.144128 +vt 0.905931 0.299650 +vt 0.742418 0.299604 +vt 0.254264 0.825428 +vt 0.417758 0.822922 +vt 0.417758 0.947879 +vt 0.090882 0.943818 +vt 0.090882 0.818861 +vt 0.000153 0.588008 +vt 0.000153 0.441045 +vt 0.621469 0.441045 +vt 0.000153 0.734972 +vt 0.621469 0.588008 +vt 0.000153 0.147117 +vt 0.000153 0.000154 +vt 0.621469 0.000153 +vt 0.000153 0.294081 +vt 0.621469 0.147117 +vt 0.621469 0.294081 +vt 0.744564 0.937252 +vt 0.744564 0.812295 +vt 0.907945 0.818861 +vt 0.581070 0.814805 +vt 0.581070 0.939762 +vt 0.254264 0.950386 +vt 0.621469 0.734971 +vt 0.907945 0.943818 +vn 1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.047100 -0.314500 -0.948100 +vn -0.028600 0.817400 -0.575300 +vn -0.029800 0.799800 -0.599600 +vn -0.000900 -0.999800 -0.018400 +vn 0.000900 -0.999800 0.018800 +vn 0.000000 -0.309200 -0.951000 +vn 0.000000 0.808900 -0.588000 +vn 0.000000 -1.000000 0.000200 +vn 0.000000 -0.308800 0.951100 +vn 0.000000 0.809100 0.587600 +vn 0.047100 -0.314100 0.948200 +vn 0.047300 -0.303200 0.951800 +vn 0.029800 0.800000 0.599300 +vn 0.028600 0.817700 0.575000 +vn -0.047300 -0.303500 -0.951600 +s off +f 208/294/125 210/295/125 207/296/125 +f 212/296/126 214/294/126 225/297/126 +f 211/298/125 207/296/125 210/295/125 +f 208/294/125 209/299/125 210/295/125 +f 225/297/126 226/300/126 212/296/126 +f 213/301/126 212/296/126 226/300/126 +s 1 +f 212/302/127 213/303/128 208/304/129 +f 211/305/130 214/306/131 212/302/127 +f 220/307/132 221/308/133 215/309/133 +f 222/310/134 220/307/132 219/311/132 +f 223/312/135 222/313/134 218/314/134 +f 224/315/136 223/312/135 217/316/135 +f 221/308/133 224/315/136 216/317/136 +f 210/318/137 225/319/138 214/320/131 +f 226/321/139 225/319/138 210/318/137 +f 213/303/128 226/321/139 209/322/140 +f 207/323/141 212/302/127 208/304/129 +f 207/323/141 211/305/130 212/302/127 +f 219/311/132 220/307/132 215/309/133 +f 218/324/134 222/310/134 219/311/132 +f 217/316/135 223/312/135 218/314/134 +f 216/317/136 224/315/136 217/316/135 +f 215/309/133 221/308/133 216/317/136 +f 211/325/130 210/318/137 214/320/131 +f 209/322/140 226/321/139 210/318/137 +f 208/304/129 213/303/128 209/322/140 +o top +v 5.044108 4.943564 0.354718 +v 5.044108 5.466138 0.354718 +v 0.795692 5.466545 0.343825 +v 0.795217 4.826993 0.417555 +v 0.628732 5.466088 0.192178 +v 0.628732 4.946920 0.192178 +v 0.628732 5.466088 -0.192178 +v -5.398937 5.466088 -0.192178 +v -5.398937 5.466088 0.192178 +v 5.044108 5.466138 -0.342168 +v 0.794078 5.468549 -0.342168 +v 0.794963 4.826993 -0.415286 +v 5.044108 4.943564 -0.342168 +v 0.628732 4.946920 -0.192178 +v -5.398937 4.946920 0.192178 +v -5.398937 4.946920 -0.192178 +v 5.044108 5.259025 0.354718 +v 5.044108 5.259025 -0.342168 +v 5.044108 4.943564 0.354718 +v 5.044108 4.943564 -0.342168 +v 5.847027 4.069042 -0.171277 +v 5.847027 4.069042 0.183828 +v 5.955363 4.361008 -0.171277 +v 5.955363 4.361008 0.183828 +vt 0.115118 0.821537 +vt 0.115118 0.920081 +vt 0.415553 0.920158 +vt 0.427360 0.920071 +vt 0.427360 0.822170 +vt 0.419421 0.464064 +vt 0.419421 0.536544 +vt 0.407728 0.435780 +vt 0.106912 0.342717 +vt 0.106912 0.211303 +vt 0.407381 0.199449 +vt 0.415667 0.920536 +vt 0.407399 0.356501 +vt 0.419154 0.241949 +vt 0.853618 0.920072 +vt 0.853618 0.822170 +vt 0.930034 0.477375 +vt 0.902853 0.477375 +vt 0.902853 0.379473 +vt 0.419154 0.314429 +vt 0.845413 0.241943 +vt 0.889565 0.844568 +vt 0.938846 0.844567 +vt 0.938846 0.883623 +vt 0.050132 0.310492 +vt 0.926761 0.675225 +vt 0.901649 0.675225 +vt 0.901649 0.620168 +vt 0.058338 0.656626 +vt 0.050676 0.711683 +vt 0.107179 0.567194 +vt 0.042738 0.534969 +vt 0.042738 0.468006 +vt 0.115118 0.881025 +vt 0.415586 0.799555 +vt 0.845680 0.464065 +vt 0.845680 0.536544 +vt 0.107179 0.435780 +vt 0.407614 0.565141 +vt 0.930034 0.379473 +vt 0.845413 0.314422 +vt 0.889565 0.883624 +vt 0.050132 0.243528 +vt 0.926761 0.620168 +vn -0.001200 0.010800 0.999900 +vn -0.002600 -0.000000 1.000000 +vn 0.010500 0.105600 0.994300 +vn -0.708000 0.021500 0.705900 +vn -0.672300 0.000000 0.740200 +vn -0.762700 0.057100 0.644200 +vn -0.008900 1.000000 0.000000 +vn -0.003900 1.000000 0.001500 +vn -0.003600 1.000000 0.002300 +vn 0.027400 -0.999600 -0.000000 +vn -0.761300 0.055500 -0.646100 +vn -0.671900 0.000000 -0.740700 +vn -0.706800 0.020700 -0.707100 +vn -0.584900 -0.811100 0.000100 +vn -0.584600 -0.811300 0.000200 +vn -0.584700 -0.811200 0.000200 +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 1.000000 0.000000 0.000000 +vn -0.736600 -0.676300 0.000000 +vn 0.937500 -0.347900 0.000000 +vn 0.180600 -0.006000 0.983500 +vn 0.149600 -0.055500 0.987200 +vn 0.153300 -0.049700 0.986900 +vn 0.701900 0.712300 0.000000 +vn 0.180600 -0.006000 -0.983500 +vn 0.184300 0.000000 -0.982900 +vn 0.153300 -0.049700 -0.986900 +vn 0.012900 0.104500 -0.994400 +vn 0.001300 0.010700 -0.999900 +vn 0.011500 0.114500 0.993400 +vn -0.783700 0.071700 0.617000 +vn 0.000000 1.000000 0.000000 +vn 0.000100 1.000000 0.000300 +vn -0.001500 1.000000 0.002700 +vn 0.000100 1.000000 0.000000 +vn -0.781700 0.069600 -0.619800 +vn -0.585100 -0.811000 0.000000 +vn 0.184300 0.000000 0.982900 +vn 0.149600 -0.055500 -0.987200 +vn 0.014000 0.113200 -0.993500 +s 1 +f 227/326/142 228/327/143 229/328/144 +f 229/328/145 231/329/146 232/330/147 +f 233/331/148 231/332/149 237/333/150 +f 239/334/151 227/335/151 230/336/151 +f 240/330/152 233/329/153 237/337/154 +f 238/338/155 230/336/156 232/339/157 +f 231/329/158 235/340/158 241/341/158 +f 235/342/159 234/343/159 242/344/159 +f 234/340/160 233/329/160 240/330/160 +f 240/345/161 232/339/161 241/346/161 +f 243/347/162 244/348/162 236/349/162 +f 245/335/163 246/334/163 247/350/163 +f 249/351/164 250/352/164 248/353/164 +f 245/326/165 248/354/166 250/355/167 +f 243/356/168 250/357/168 249/358/168 +f 246/326/169 244/359/170 249/355/171 +f 237/337/172 236/327/160 239/326/173 +f 230/360/174 227/326/142 229/328/144 +f 230/360/175 229/328/145 232/330/147 +f 233/331/148 234/361/176 235/362/176 +f 236/363/177 237/333/150 229/364/178 +f 229/364/178 228/356/179 236/363/177 +f 233/331/148 235/362/176 231/332/149 +f 231/332/149 229/364/178 237/333/150 +f 238/338/151 239/334/151 230/336/151 +f 238/360/180 240/330/152 237/337/154 +f 240/345/181 238/338/155 232/339/157 +f 232/330/158 231/329/158 241/341/158 +f 241/365/159 235/342/159 242/344/159 +f 242/341/160 234/340/160 240/330/160 +f 242/366/161 240/345/161 241/346/161 +f 228/367/162 243/347/162 236/349/162 +f 248/368/163 245/335/163 247/350/163 +f 247/369/164 249/351/164 248/353/164 +f 243/359/182 245/326/165 250/355/167 +f 244/363/168 243/356/168 249/358/168 +f 247/354/183 246/326/169 249/355/171 +f 238/360/184 237/337/172 239/326/173 +o base +v 4.699434 5.121191 -0.174050 +v 5.266431 5.121191 -0.174050 +v 5.266431 4.997460 -0.005108 +v 4.699434 4.997460 -0.005108 +v 5.266431 5.119899 0.164773 +v 4.699434 5.119899 0.164773 +v 5.266431 5.319301 0.100823 +v 4.699434 5.319301 0.100823 +v 5.266431 5.320100 -0.108581 +v 4.699434 5.320100 -0.108581 +v 4.151685 3.128466 0.320015 +v 4.151685 3.588992 0.433690 +v 4.151685 5.375307 0.433690 +v 4.151685 5.375307 -0.433690 +v 4.151685 3.588992 -0.433690 +v 4.151685 3.128466 -0.320015 +v 5.959075 3.478605 -0.320015 +v 5.959075 3.939131 -0.433690 +v 5.959075 4.345873 -0.433690 +v 5.959075 4.345873 0.433690 +v 5.959075 3.939131 0.433690 +v 5.959075 3.478605 0.320015 +v 4.994334 5.171120 -0.433690 +v 4.994334 5.171120 0.433690 +v 4.598720 5.375307 0.433690 +v 4.448609 3.128466 -0.320015 +v 4.448608 3.128466 0.320015 +v 4.598720 5.375307 -0.433690 +v 5.183057 3.478605 -0.320015 +v 4.805644 3.372820 -0.320015 +v 4.805644 3.372820 0.320015 +v 5.183056 3.478605 0.320015 +v 4.151685 3.128466 -0.320015 +v 4.151685 3.588992 -0.433690 +v 4.151685 5.375307 -0.433690 +v 4.151685 5.375307 0.433690 +v 4.151685 3.588992 0.433690 +v 4.151685 3.128466 0.320015 +v 5.959075 3.478605 -0.320015 +v 5.959075 3.939131 -0.433690 +v 5.959075 4.345873 -0.433690 +v 5.959075 4.345873 0.433690 +v 5.959075 3.939131 0.433690 +v 5.959075 3.478605 0.320015 +v 4.994334 5.171120 -0.433690 +v 4.994334 5.171120 0.433690 +v 4.598720 5.375307 0.433690 +v 4.448609 3.128466 -0.320015 +v 4.448608 3.128466 0.320015 +v 4.598720 5.375307 -0.433690 +v 5.183057 3.478605 -0.320015 +v 4.805644 3.372820 -0.320015 +v 4.805644 3.372820 0.320015 +v 5.183056 3.478605 0.320015 +vt 0.128228 0.227452 +vt 0.095308 0.126135 +vt 0.161147 0.126135 +vt 0.181493 0.188753 +vt 0.074962 0.188753 +vt 0.313932 0.380938 +vt 0.268748 0.380938 +vt 0.268748 0.267979 +vt 0.223564 0.380938 +vt 0.223564 0.267979 +vt 0.178381 0.380938 +vt 0.178381 0.267979 +vt 0.133197 0.380938 +vt 0.133197 0.267979 +vt 0.088013 0.380938 +vt 0.088013 0.267979 +vt 0.814232 0.651940 +vt 0.814232 0.572408 +vt 0.956803 0.572408 +vt 0.814232 0.736011 +vt 0.956803 0.651940 +vt 0.956803 0.736012 +vt 0.956802 0.908875 +vt 0.814231 0.908875 +vt 0.313932 0.267979 +vt 0.716768 0.518831 +vt 0.523553 0.518831 +vt 0.548875 0.416245 +vt 0.666772 0.239171 +vt 0.473557 0.239171 +vt 0.498879 0.136586 +vt 0.691446 0.416246 +vt 0.716768 0.916745 +vt 0.523553 0.916745 +vt 0.641451 0.136586 +vt 0.666772 0.329776 +vt 0.473557 0.329776 +vt 0.773527 0.294021 +vt 0.773527 0.079118 +vt 0.966742 0.079118 +vt 0.956804 0.506266 +vt 0.773527 0.382146 +vt 0.966742 0.294021 +vt 0.966742 0.481726 +vt 0.773527 0.481727 +vt 0.231742 0.882798 +vt 0.319868 0.928282 +vt 0.419448 0.530368 +vt 0.273774 0.482214 +vt 0.353306 0.427783 +vt 0.016839 0.608364 +vt 0.189703 0.505779 +vt 0.016839 0.505779 +vt 0.814232 0.506266 +vt 0.966742 0.382146 +vt 0.016839 0.698969 +vt 0.419448 0.928282 +vt 0.419448 0.427783 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.305400 -0.952200 +vn 0.000000 -1.000000 -0.003800 +vn 0.000000 -0.312600 0.949900 +vn 0.000000 0.806800 0.590900 +vn 0.000000 0.811300 -0.584700 +vn 0.423000 -0.906100 0.000000 +vn 0.295600 -0.955300 0.000000 +vn 0.136200 -0.990700 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.558100 0.829800 0.000000 +vn 0.650000 0.759900 0.000000 +vn 0.236000 0.971800 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 -0.000000 1.000000 +vn 0.036800 -0.133100 0.990400 +vn 0.036800 -0.133100 -0.990400 +vn 0.086900 -0.244900 -0.965600 +vn 0.069500 -0.196600 -0.978000 +vn 0.069500 -0.196600 0.978000 +vn 0.086900 -0.244900 0.965600 +vn 0.000000 0.000000 -1.000000 +vn 0.007800 -0.118800 0.992900 +vn 0.057000 -0.318800 0.946100 +vn 0.000000 -0.239600 0.970900 +vn 0.057000 -0.318800 -0.946100 +vn 0.000000 -0.239600 -0.970900 +vn 0.007800 -0.118800 -0.992900 +s off +f 252/370/185 257/371/185 255/372/185 +f 255/372/185 253/373/185 252/370/185 +f 252/370/185 259/374/185 257/371/185 +s 1 +f 252/375/186 253/376/187 254/377/187 +f 253/376/187 255/378/188 256/379/188 +f 255/378/188 257/380/189 258/381/189 +f 257/380/189 259/382/190 260/383/190 +f 259/382/190 252/384/186 251/385/186 +f 281/386/191 277/387/192 276/388/192 +f 282/389/193 281/386/191 280/390/191 +f 279/391/193 267/392/194 272/393/194 +f 251/394/186 252/375/186 254/377/187 +f 254/377/187 253/376/187 256/379/188 +f 256/379/188 255/378/188 258/381/189 +f 258/381/189 257/380/189 260/383/190 +f 260/383/190 259/382/190 251/385/186 +f 280/390/191 281/386/191 276/388/192 +f 279/391/193 282/389/193 280/390/191 +f 282/389/193 279/391/193 272/393/194 +s off +f 262/395/195 265/396/195 266/397/195 +f 268/398/185 271/399/185 272/400/185 +f 266/397/195 261/401/195 262/395/195 +f 262/395/195 263/402/195 264/403/195 +f 264/403/195 265/396/195 262/395/195 +f 272/400/185 267/404/185 268/398/185 +f 268/398/185 269/405/185 270/406/185 +f 270/406/185 271/399/185 268/398/185 +s 1 +f 274/407/196 270/408/197 269/409/197 +f 266/410/194 276/388/192 277/387/192 +f 275/411/198 274/407/196 273/412/196 +f 264/413/199 263/414/199 275/411/198 +f 296/415/200 297/416/200 287/417/201 +f 284/417/202 302/418/203 298/419/204 +f 299/419/205 303/418/206 287/417/201 +f 300/416/207 295/415/207 284/417/202 +f 293/420/208 304/421/209 294/422/210 +f 301/421/211 302/418/203 284/417/202 +f 289/422/212 301/421/211 290/420/213 +f 287/417/201 303/418/206 304/421/209 +f 273/412/196 274/407/196 269/409/197 +f 261/423/194 266/410/194 277/387/192 +f 278/424/198 275/411/198 273/412/196 +f 278/424/198 264/413/199 275/411/198 +f 287/417/201 293/420/208 292/425/200 +f 292/425/200 296/415/200 287/417/201 +f 297/416/200 286/426/200 287/417/201 +f 283/427/212 284/417/202 298/419/204 +f 288/427/210 299/419/205 287/417/201 +f 290/420/213 284/417/202 291/425/207 +f 285/426/207 300/416/207 284/417/202 +f 295/415/207 291/425/207 284/417/202 +f 290/420/213 301/421/211 284/417/202 +f 293/420/208 287/417/201 304/421/209 +o trigger +v 3.926120 3.092227 -0.034408 +v 3.965425 3.198867 -0.030930 +v 5.332912 3.009086 -0.030958 +v 5.517139 3.497606 -0.022463 +v 5.630136 3.497556 -0.022463 +v 5.332912 2.895381 -0.030958 +v 5.624238 3.497606 0.030137 +v 5.511241 3.497606 0.030137 +v 5.332912 3.009086 0.022101 +v 3.965384 3.197152 0.022101 +v 3.926080 3.090513 0.018623 +v 5.332912 2.895381 0.022101 +v 5.163631 3.138078 -0.026238 +v 5.365596 3.296422 -0.026234 +v 5.365596 3.296422 0.017377 +v 5.174312 3.138078 0.015514 +v 5.195904 3.201269 -0.024371 +v 5.206583 3.201269 0.017380 +v 5.294617 3.296422 0.017377 +v 5.294617 3.487131 0.017377 +v 5.294617 3.487131 -0.026234 +v 5.294617 3.296422 -0.026234 +v 5.365596 3.487131 -0.026234 +v 5.365596 3.487131 0.017377 +vt 0.083542 0.693552 +vt 0.300095 0.826506 +vt 0.289671 0.880478 +vt 0.358499 0.224215 +vt 0.412820 0.213665 +vt 0.629683 0.849229 +vt 0.713908 0.720213 +vt 0.688088 0.720276 +vt 0.688088 0.029347 +vt 0.793474 0.884010 +vt 0.772313 0.884032 +vt 0.772964 0.763243 +vt 0.798134 0.029188 +vt 0.798134 0.700800 +vt 0.772314 0.700705 +vt 0.882325 0.668281 +vt 0.856539 0.667868 +vt 0.856606 0.414854 +vt 0.940734 0.157111 +vt 0.966335 0.154242 +vt 0.966335 0.209211 +vt 0.852023 0.965190 +vt 0.852023 0.909876 +vt 0.877847 0.909876 +vt 0.970797 0.970571 +vt 0.936252 0.970568 +vt 0.936252 0.877802 +vt 0.970798 0.819423 +vt 0.936252 0.819426 +vt 0.936252 0.726660 +vt 0.882329 0.029188 +vt 0.882329 0.355890 +vt 0.856617 0.354971 +vt 0.710114 0.899453 +vt 0.688088 0.872858 +vt 0.696426 0.810352 +vt 0.961956 0.424358 +vt 0.961956 0.517132 +vt 0.940730 0.517132 +vt 0.863316 0.820182 +vt 0.856539 0.753826 +vt 0.877847 0.726657 +vt 0.358499 0.936283 +vt 0.379725 0.936283 +vt 0.379725 0.970812 +vt 0.300095 0.057784 +vt 0.029202 0.683098 +vt 0.619187 0.029188 +vt 0.629682 0.083145 +vt 0.940730 0.575508 +vt 0.961956 0.575508 +vt 0.961956 0.668281 +vt 0.961874 0.029188 +vt 0.961874 0.095866 +vt 0.941265 0.092454 +vt 0.961508 0.273352 +vt 0.961508 0.307881 +vt 0.940734 0.304985 +vt 0.582369 0.877907 +vt 0.713908 0.029188 +vt 0.793474 0.759175 +vt 0.772313 0.029188 +vt 0.882325 0.414266 +vt 0.940734 0.212080 +vt 0.877847 0.965190 +vt 0.970797 0.877805 +vt 0.970798 0.726657 +vt 0.856539 0.029509 +vt 0.710114 0.778652 +vt 0.940730 0.424358 +vt 0.877847 0.851500 +vt 0.358500 0.970812 +vt 0.252730 0.029188 +vt 0.940730 0.668281 +vt 0.940734 0.029423 +vt 0.940734 0.270456 +vn 0.000000 0.017400 -0.999800 +vn 0.000000 -0.000000 1.000000 +vn -0.137400 -0.990500 0.000000 +vn 0.637700 -0.770300 0.000000 +vn 0.137400 0.990000 0.032100 +vn -0.939400 0.342900 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.938400 0.345500 0.010400 +vn 0.000000 0.000000 -1.000000 +vn 0.891600 -0.441500 0.100400 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.019600 -0.999800 +vn 0.000000 -0.016400 0.999900 +vn -1.000000 -0.000000 0.000000 +vn -0.681700 0.710600 0.174400 +vn -0.870900 0.438100 0.222800 +vn 0.028600 0.000000 -0.999600 +vn -0.006700 -0.030100 0.999500 +vn -0.138400 -0.989900 -0.032100 +vn 0.609500 -0.777300 -0.155900 +vn 0.136200 0.990700 0.000000 +vn -0.930000 0.352500 -0.104300 +vn 0.000400 1.000000 -0.000900 +vn -0.938400 0.345500 0.010500 +vn 0.900200 -0.435500 0.000000 +vn 0.025400 -0.042500 0.998800 +vn -0.038500 0.049200 -0.998000 +vn 0.006700 0.030100 -0.999500 +vn -0.027600 0.000000 0.999600 +vn -0.734000 0.679100 0.000000 +vn -0.870800 0.438200 0.222800 +s off +f 307/428/214 308/429/214 309/430/214 +f 316/431/215 313/432/215 314/433/215 +f 310/434/216 316/435/216 315/436/216 +f 318/437/217 319/438/217 320/439/217 +f 307/440/218 306/441/218 314/442/218 +f 307/443/219 313/444/219 312/445/219 +f 308/446/220 312/447/220 311/448/220 +f 315/449/221 314/450/221 306/451/221 +f 325/452/222 327/453/222 318/454/222 +f 328/455/215 324/456/215 323/457/215 +f 310/458/223 309/459/223 311/460/223 +f 319/461/215 323/462/215 322/463/215 +f 318/464/224 327/465/224 328/466/224 +f 321/467/225 326/468/225 318/469/225 +f 325/470/220 324/471/220 328/472/220 +f 306/473/222 307/428/222 310/474/222 +f 311/475/226 312/476/226 313/432/226 +f 324/477/227 325/478/227 326/479/227 +f 326/480/228 321/481/228 322/482/228 +f 320/483/229 322/484/229 321/485/229 +f 310/474/230 307/428/230 309/430/230 +f 315/486/231 316/431/231 314/433/231 +f 305/487/232 310/434/232 315/436/232 +f 317/488/233 318/437/233 320/439/233 +f 313/489/234 307/440/234 314/442/234 +f 308/490/235 307/443/235 312/445/235 +f 309/491/236 308/446/236 311/448/236 +f 305/492/237 315/449/237 306/451/237 +f 326/493/222 325/452/222 318/454/222 +f 319/494/215 328/455/215 323/457/215 +f 316/495/238 310/458/238 311/460/238 +f 320/496/239 319/461/239 322/463/239 +f 319/497/224 318/464/224 328/466/224 +f 317/498/240 321/467/240 318/469/240 +f 327/499/220 325/470/220 328/472/220 +f 305/500/241 306/473/241 310/474/241 +f 316/431/242 311/475/242 313/432/242 +f 323/501/227 324/477/227 326/479/227 +f 323/502/243 326/480/243 322/482/243 +f 317/503/244 320/483/244 321/485/244 +o flechette +v -6.690176 4.818856 0.090346 +v -7.627392 4.818856 0.090345 +v -7.627392 4.733345 0.004835 +v -6.690176 4.733345 0.004835 +v -7.627392 4.818856 -0.080676 +v -6.690176 4.818856 -0.080676 +v -7.627392 4.904366 0.004835 +v -7.990086 4.818856 0.004744 +v -7.990086 4.818947 0.004835 +v -6.690176 4.904366 0.004835 +v -6.369133 4.818856 0.018597 +v -6.690621 4.818856 0.018597 +v -6.690621 4.641216 0.005132 +v -6.369133 4.641216 0.005132 +v -6.690621 4.818856 -0.008333 +v -6.369133 4.818856 -0.008333 +v -6.690621 4.996495 0.005132 +v -6.369133 4.996495 0.005132 +v -6.370245 4.818856 0.040429 +v -6.370245 4.783262 0.004835 +v -6.370245 4.818856 -0.030759 +v -6.370245 4.854450 0.004835 +v -6.693045 4.860888 0.004835 +v -6.693045 4.818856 0.046868 +v -6.693045 4.818856 -0.037198 +v -6.693045 4.776823 0.004835 +v -6.369133 4.808150 0.005132 +v -6.690621 4.796983 0.005132 +v -6.690621 4.818856 -0.172507 +v -6.369133 4.818856 -0.172507 +v -6.690621 4.840728 0.005132 +v -6.369133 4.829561 0.005132 +v -6.690621 4.818856 0.182771 +v -6.369133 4.818856 0.182771 +v -7.990086 4.818765 0.004835 +v -7.990086 4.818856 0.004926 +vt 1.000000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 0.634215 +vt 0.500000 1.000000 +vt 0.500000 0.634215 +vt 0.250000 1.000000 +vt 0.250000 0.634215 +vt 0.000000 1.000000 +vt 1.000000 0.634215 +vt 0.250000 0.490000 +vt 0.010000 0.250000 +vt 0.250000 0.010000 +vt 0.000000 0.634215 +vt 0.990000 0.250000 +vt 0.750000 0.010000 +vt 0.510000 0.250000 +vt 0.250000 0.500000 +vt 0.750000 0.500000 +vt 0.490000 0.250000 +vt 0.750000 0.490000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 1.000000 0.500000 +vn -0.000000 -0.707100 0.707100 +vn 0.000000 -0.707100 -0.707100 +vn -0.164300 0.697500 -0.697500 +vn -0.163900 0.698400 -0.696700 +vn -0.163900 0.698200 -0.696800 +vn 0.000000 0.707100 -0.707100 +vn -0.000000 0.707100 0.707100 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.075600 0.997100 +vn 0.000000 -0.075600 -0.997100 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.075600 -0.997100 +vn 0.000000 0.075600 0.997100 +vn 0.014100 0.707000 0.707000 +vn 0.014100 0.707000 -0.707000 +vn 0.014100 -0.707000 -0.707000 +vn 0.014100 -0.707000 0.707000 +vn 0.011100 -0.996700 -0.080200 +vn 0.034500 -0.991900 -0.122100 +vn 0.023400 -0.994500 -0.102300 +vn 0.023400 0.994500 -0.102300 +vn 0.034500 0.991900 -0.122100 +vn 0.011100 0.996700 -0.080200 +vn 0.011100 0.996700 0.080200 +vn 0.034500 0.991900 0.122100 +vn 0.023400 0.994500 0.102300 +vn 0.023400 -0.994500 0.102300 +vn 0.034500 -0.991900 0.122100 +vn 0.011100 -0.996700 0.080200 +vn -0.164300 0.697500 0.697500 +vn -0.163600 0.699600 0.695500 +vn -0.164300 -0.697500 -0.697500 +vn -0.164100 -0.696500 -0.698500 +vn -0.164300 -0.697500 0.697500 +vn -0.164500 -0.698400 0.696600 +vn 0.000000 -0.998200 -0.060200 +vn 0.000000 0.998200 -0.060200 +vn 0.000000 0.998200 0.060200 +vn 0.000000 -0.998200 0.060200 +vn -0.163500 0.700100 0.695100 +vn -0.164000 -0.696300 -0.698800 +vn -0.164500 -0.698600 0.696400 +s 1 +f 330/504/245 331/505/245 332/506/245 +f 331/505/246 333/507/246 334/508/246 +f 333/507/247 336/507/248 337/509/249 +f 333/507/250 335/509/250 338/510/250 +f 338/510/251 335/509/251 330/511/251 +f 338/510/252 329/512/252 332/506/252 +f 340/504/253 341/505/253 342/506/253 +f 341/505/254 343/507/254 344/508/254 +f 340/513/255 345/514/255 343/515/255 +f 343/507/256 345/509/256 346/510/256 +f 345/509/257 340/511/257 339/516/257 +f 339/512/252 342/506/252 344/508/252 +f 348/517/252 349/518/252 350/519/252 +f 350/520/258 351/510/258 352/516/258 +f 353/508/259 351/510/259 350/520/259 +f 348/521/260 354/506/260 353/508/260 +f 352/512/261 354/506/261 348/521/261 +f 355/512/262 356/504/263 357/505/264 +f 357/505/265 359/507/266 360/508/267 +f 356/513/255 361/514/255 359/515/255 +f 360/508/268 359/507/269 361/509/270 +f 361/509/271 356/511/272 355/516/273 +f 355/512/252 358/506/252 360/508/252 +f 363/522/255 364/513/255 337/514/255 +f 330/511/274 335/509/274 337/509/275 +f 333/507/276 331/505/276 363/505/277 +f 331/505/278 330/504/278 364/504/279 +f 329/512/245 330/504/245 332/506/245 +f 332/506/246 331/505/246 334/508/246 +f 335/509/247 333/507/247 337/509/249 +f 334/508/250 333/507/250 338/510/250 +f 329/516/251 338/510/251 330/511/251 +f 334/508/252 338/510/252 332/506/252 +f 339/512/253 340/504/253 342/506/253 +f 342/506/254 341/505/254 344/508/254 +f 341/522/255 340/513/255 343/515/255 +f 344/508/256 343/507/256 346/510/256 +f 346/510/257 345/509/257 339/516/257 +f 346/510/252 339/512/252 344/508/252 +f 347/523/252 348/517/252 350/519/252 +f 347/524/258 350/520/258 352/516/258 +f 349/525/259 353/508/259 350/520/259 +f 349/525/260 348/521/260 353/508/260 +f 347/526/261 352/512/261 348/521/261 +f 358/506/280 355/512/262 357/505/264 +f 358/506/281 357/505/265 360/508/267 +f 357/522/255 356/513/255 359/515/255 +f 362/510/282 360/508/268 361/509/270 +f 362/510/283 361/509/271 355/516/273 +f 362/510/252 355/512/252 360/508/252 +f 336/515/255 363/522/255 337/514/255 +f 364/511/284 330/511/274 337/509/275 +f 336/507/285 333/507/276 363/505/277 +f 363/505/286 331/505/278 364/504/279 +o body +v 0.795217 5.376135 -0.354718 +v 0.629208 5.376135 -0.193462 +v -2.342856 5.376135 -0.193462 +v -2.342856 5.376135 0.193462 +v 0.624788 5.373264 0.200239 +v 0.795217 5.376135 0.354718 +v 2.342856 5.376135 0.354718 +v 2.342856 5.376135 -0.354718 +v -1.965528 4.321319 -0.433690 +v -0.232339 4.321319 -0.433690 +v -0.232339 4.322378 0.433690 +v -1.964773 4.322378 0.433690 +v -0.232339 2.623865 0.503573 +v -0.232339 3.024528 0.503573 +v -0.232339 3.103445 0.433690 +v -0.232339 3.105076 -0.433690 +v -0.232339 3.026160 -0.503573 +v -0.232339 2.623865 -0.503573 +v -1.967963 3.218578 0.433690 +v -1.968281 3.218578 -0.433690 +v -2.342856 3.218578 -0.433690 +v -2.342856 4.685988 -0.433690 +v 2.342856 4.685988 -0.433690 +v 2.342856 3.103445 -0.433690 +v -2.342856 3.218578 0.433690 +v 2.342856 2.623865 0.503573 +v 2.342856 3.024528 0.503573 +v 2.342856 3.103445 0.433690 +v 2.342856 4.685988 0.433690 +v -2.342856 4.685988 0.433690 +v 2.342856 2.623865 -0.503573 +v 2.342856 3.024528 -0.503573 +v 0.629208 4.826993 -0.326173 +v -2.342856 4.826993 -0.326173 +v -2.342856 4.826993 0.326173 +v 0.795217 4.826993 -0.417555 +v -2.342856 4.826993 -0.417555 +v -2.342856 4.826993 0.417555 +v 0.795217 4.826993 0.417555 +v 0.629208 4.826993 0.326173 +vt 0.484321 0.387789 +vt 0.455873 0.481725 +vt 0.455873 0.360156 +vt 0.681071 0.205332 +vt 0.681071 0.308549 +vt 0.474912 0.308549 +vt 0.170020 0.082695 +vt 0.021386 0.082974 +vt 0.009411 0.000514 +vt 0.268814 0.181527 +vt 0.372031 0.181527 +vt 0.372031 0.312753 +vt 0.007780 0.874220 +vt 0.449066 0.811731 +vt 0.810725 0.874220 +vt 0.429921 0.308549 +vt 0.429921 0.205332 +vt 0.474495 0.205332 +vt 0.007780 0.589514 +vt 0.449066 0.589514 +vt 0.449066 0.520856 +vt 0.745936 0.811913 +vt 0.449066 0.811913 +vt 0.681071 0.197015 +vt 0.987517 0.197015 +vt 0.987517 0.316866 +vt 0.840368 0.598952 +vt 1.000977 0.516770 +vt 0.989002 0.598951 +vt 0.007780 0.520855 +vt 0.449066 0.603037 +vt 0.007780 0.603036 +vt 0.449066 0.589793 +vt 0.301431 0.898383 +vt 0.810725 0.898383 +vt 0.810725 0.992484 +vt 0.151598 0.378042 +vt 0.128856 0.472142 +vt 0.062553 0.472142 +vt 0.993614 0.349389 +vt 0.993614 0.492493 +vt 0.455873 0.492493 +vt 0.302188 0.991992 +vt 0.272983 0.898383 +vt 0.272983 0.992484 +vt 0.007780 0.992484 +vt 0.167257 0.378042 +vt 0.021388 0.353879 +vt 0.170022 0.353879 +vt 0.190670 0.360156 +vt 0.190670 0.481725 +vt 0.993614 0.387789 +vt 0.485078 0.455254 +vt 0.993614 0.454093 +vt 0.474822 0.205332 +vt 0.181995 0.000514 +vt 0.170020 0.291571 +vt 0.181995 0.069172 +vt 0.009411 0.069451 +vt 0.021386 0.291389 +vt 0.268814 0.312879 +vt 0.746066 0.811731 +vt 0.746537 0.622766 +vt 0.810725 0.622766 +vt 0.449066 0.603316 +vt 0.474533 0.308549 +vt 0.681071 0.316866 +vt 0.989002 0.870135 +vt 0.975470 0.988399 +vt 0.853901 0.988399 +vt 0.840368 0.870136 +vt 0.828393 0.585428 +vt 0.828393 0.516771 +vt 1.000977 0.585428 +vt 0.301431 0.992484 +vt 0.039812 0.378041 +vt 0.455873 0.349389 +vt 0.170022 0.102424 +vt 0.024152 0.378041 +vt 0.021388 0.102424 +vn -0.001800 1.000000 0.003500 +vn -0.005200 1.000000 0.001600 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.001200 +vn -1.000000 -0.000000 0.000000 +vn 1.000000 -0.002700 -0.000600 +vn 1.000000 -0.002500 -0.000400 +vn 1.000000 -0.002700 -0.000700 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.000000 0.663000 0.748700 +vn 0.000400 0.663000 -0.748700 +vn 0.000000 0.234900 -0.972000 +vn -0.001800 0.233700 0.972300 +vn 0.000000 0.224600 0.974400 +vn -0.000200 0.225900 0.974200 +vn -0.526900 0.115500 0.842100 +vn -0.479800 0.099700 0.871700 +vn -0.629500 0.150700 0.762300 +vn -0.648700 0.157400 -0.744600 +vn -0.479800 0.099700 -0.871700 +vn -0.533200 0.117700 -0.837700 +vn -0.000000 0.113700 -0.993500 +vn -0.000000 0.113700 0.993500 +vn 0.000900 1.000000 0.000600 +vn -0.013700 0.999900 0.006900 +vn 0.001000 1.000000 0.000000 +vn 1.000000 -0.002900 -0.000900 +vn -0.002000 0.234900 0.972000 +vn -0.664100 0.162800 0.729700 +vn -0.686500 0.170800 -0.706800 +s 1 +f 366/527/287 370/528/288 365/529/289 +f 374/530/290 375/531/290 376/532/290 +f 379/533/291 380/534/291 382/535/291 +f 383/536/292 384/537/293 373/538/294 +f 387/539/295 374/540/295 386/541/295 +f 389/542/296 385/543/296 384/544/296 +f 391/545/297 378/546/297 377/547/297 +f 394/541/297 376/548/297 375/549/297 +f 382/550/296 395/551/296 390/552/296 +f 392/553/298 395/554/298 388/555/298 +f 396/545/295 395/556/295 382/547/295 +f 379/557/299 378/546/299 391/545/299 +f 388/558/300 396/545/300 381/559/300 +f 397/560/301 398/561/301 367/562/301 +f 399/563/291 368/564/291 367/565/291 +f 401/566/289 402/567/289 403/568/289 +f 399/561/302 404/560/303 369/569/304 +f 404/560/305 403/570/306 370/571/307 +f 365/571/308 400/570/309 397/560/310 +f 400/570/311 372/572/311 387/539/311 +f 403/570/312 394/541/312 393/539/312 +f 402/573/291 386/574/291 394/575/291 +f 372/576/289 365/529/289 371/577/289 +f 366/527/287 367/578/313 369/579/314 +f 369/579/314 370/528/288 366/527/287 +f 367/578/313 368/580/315 369/579/314 +f 371/577/289 365/529/289 370/528/288 +f 373/581/290 374/530/290 376/532/290 +f 382/535/291 377/582/291 379/533/291 +f 379/533/291 375/583/291 380/534/291 +f 377/582/291 378/584/291 379/533/291 +f 380/534/291 381/585/291 382/535/291 +f 375/583/291 374/586/291 380/534/291 +f 376/587/316 383/536/292 373/538/294 +f 373/588/295 384/589/295 385/590/295 +f 387/539/295 388/558/295 374/540/295 +f 373/588/295 385/590/295 386/541/295 +f 388/558/295 380/591/295 374/540/295 +f 373/588/295 386/541/295 374/540/295 +f 383/592/296 389/542/296 384/544/296 +f 390/556/297 391/545/297 377/547/297 +f 375/549/297 379/557/297 392/558/297 +f 394/541/297 389/590/297 376/548/297 +f 375/549/297 392/558/297 393/539/297 +f 389/590/297 383/589/297 376/548/297 +f 375/549/297 393/539/297 394/541/297 +f 377/593/296 382/550/296 390/552/296 +f 388/555/298 387/594/298 392/553/298 +f 372/595/298 371/596/298 393/597/298 +f 392/553/298 391/598/298 390/599/298 +f 372/595/298 393/597/298 387/594/298 +f 395/554/298 396/600/298 388/555/298 +f 387/594/298 393/597/298 392/553/298 +f 392/553/298 390/599/298 395/554/298 +f 381/559/295 396/545/295 382/547/295 +f 392/558/299 379/557/299 391/545/299 +f 380/591/300 388/558/300 381/559/300 +f 366/601/301 397/560/301 367/562/301 +f 398/602/291 399/563/291 367/565/291 +f 400/603/289 401/566/289 403/568/289 +f 368/562/317 399/561/302 369/569/304 +f 369/569/318 404/560/305 370/571/307 +f 366/601/319 365/571/308 397/560/310 +f 386/541/311 401/561/311 400/570/311 +f 400/570/311 365/571/311 372/572/311 +f 387/539/311 386/541/311 400/570/311 +f 371/572/312 370/571/312 403/570/312 +f 403/570/312 402/561/312 394/541/312 +f 393/539/312 371/572/312 403/570/312 +f 389/604/291 394/575/291 386/574/291 +f 402/573/291 401/605/291 386/574/291 +f 386/574/291 385/606/291 389/604/291 +o chamber +v 2.759583 4.408674 -0.553030 +v 2.759583 4.653401 -0.411737 +v 3.723804 4.653401 -0.411737 +v 3.723804 4.408674 -0.553030 +v 2.759583 4.898128 -0.553030 +v 3.723804 4.898128 -0.553030 +v 2.759583 4.898128 -0.617516 +v 3.723804 4.898128 -0.617516 +v 2.341729 5.375706 0.433709 +v 4.149120 5.375706 0.433709 +v 4.150729 5.375706 -0.433690 +v 2.343338 5.375706 -0.433690 +v 2.343338 3.128466 -0.433690 +v 2.632140 4.281843 -0.854733 +v 2.632140 3.591664 -0.854733 +v 2.341729 3.128466 0.433709 +v 4.150729 3.128466 -0.433690 +v 4.149120 3.128466 0.433709 +v 2.759583 4.408674 -0.805914 +v 3.723804 4.408674 -0.805914 +v 3.861928 4.281843 -0.854733 +v 3.861928 3.591664 -0.854733 +v 3.732876 4.408674 0.553050 +v 3.732876 4.653401 0.411757 +v 2.768654 4.653401 0.411757 +v 2.768654 4.408674 0.553050 +v 3.732876 4.898128 0.553050 +v 2.768654 4.898128 0.553050 +v 3.732876 4.898128 0.617536 +v 2.768654 4.898128 0.617536 +v 3.860319 4.281843 0.854752 +v 3.860319 3.591664 0.854752 +v 3.732876 4.408674 0.805934 +v 2.768654 4.408674 0.805934 +v 2.630531 4.281843 0.854753 +v 2.630531 3.591664 0.854753 +v 2.740474 4.533714 -0.752029 +v 3.742913 4.533714 -0.752029 +v 3.742913 4.365829 -0.617191 +v 2.740474 4.365829 -0.617191 +v 3.742913 4.767260 -0.461243 +v 2.740474 4.767260 -0.461243 +v 3.742913 4.734430 -0.674055 +v 2.740474 4.734430 -0.674055 +v 3.742913 4.366174 0.617705 +v 2.740474 4.366174 0.617705 +v 3.742913 4.534652 0.751802 +v 2.740474 4.534652 0.751802 +v 3.742913 4.735022 0.672945 +v 2.740474 4.735022 0.672945 +v 3.742913 4.766915 0.459991 +v 2.740474 4.766915 0.459991 +vt 0.531250 0.005859 +vt 0.531250 0.505859 +vt 0.697917 0.505859 +vt 0.993279 0.798270 +vt 0.745002 0.798270 +vt 0.745002 0.735255 +vt 0.081260 0.743049 +vt 0.081260 0.991325 +vt 0.097864 0.991325 +vt 0.719126 0.991465 +vt 0.495780 0.991880 +vt 0.495780 0.526495 +vt 0.477411 0.000804 +vt 0.477411 0.579444 +vt 0.403047 0.297786 +vt 0.992564 0.583351 +vt 0.769218 0.583350 +vt 0.769218 0.004710 +vt 0.992564 0.004710 +vt 0.121956 0.330444 +vt 0.086390 0.297786 +vt 0.086390 0.120072 +vt 0.012027 0.000804 +vt 0.403047 0.120072 +vt 0.097864 0.743049 +vt 0.032749 0.991326 +vt 0.134246 0.664943 +vt 0.097864 0.601928 +vt 0.081260 0.727957 +vt 0.097864 0.727957 +vt 0.121956 0.456473 +vt 0.012027 0.579444 +vt 0.742666 0.798270 +vt 0.990943 0.798270 +vt 0.990943 0.735256 +vt 0.399272 0.993662 +vt 0.399272 0.745385 +vt 0.382668 0.745385 +vt 0.012441 0.000804 +vt 0.012441 0.579444 +vt 0.086804 0.297786 +vt 0.367896 0.330444 +vt 0.403461 0.297786 +vt 0.403461 0.120073 +vt 0.086804 0.120073 +vt 0.477825 0.000804 +vt 0.382668 0.993662 +vt 0.447783 0.745385 +vt 0.363885 0.664943 +vt 0.400266 0.601929 +vt 0.416871 0.727958 +vt 0.400266 0.727958 +vt 0.367896 0.456473 +vt 0.477825 0.579444 +vt 0.697917 0.005859 +vt 0.993279 0.735255 +vt 0.719126 0.526081 +vt 0.370232 0.456473 +vt 0.370232 0.330444 +vt 0.032750 0.743049 +vt 0.032750 0.601928 +vt 0.742666 0.735256 +vt 0.119619 0.456473 +vt 0.119619 0.330444 +vt 0.447783 0.993662 +vt 0.465381 0.601929 +vt 0.740082 0.866546 +vt 0.740082 0.823318 +vt 0.998200 0.823318 +vt 0.740082 0.926682 +vt 0.740082 0.918229 +vt 0.998200 0.918228 +vt 0.998200 0.866546 +vt 0.740081 0.823407 +vt 0.740081 0.866789 +vt 0.998200 0.866789 +vt 0.740081 0.918382 +vt 0.998200 0.918382 +vt 0.740081 0.926594 +vt 0.998200 0.926594 +vt 0.998200 0.926682 +vt 0.998200 0.823407 +vn 0.000000 0.500000 -0.866000 +vn 0.000000 -0.500000 -0.866000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.824600 -0.000000 -0.565600 +vn -1.000000 -0.000000 -0.001900 +vn 1.000000 0.000000 0.001900 +vn 0.000000 0.359200 -0.933300 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.672600 -0.740000 +vn 0.824700 0.000000 -0.565600 +vn 1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.500000 0.866000 +vn 0.000000 -0.500000 0.866000 +vn 0.824700 0.000000 0.565600 +vn 0.000000 0.359200 0.933300 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.672600 0.740000 +vn -0.824600 0.000000 0.565600 +vn -0.824700 0.000000 0.565600 +vn 0.000000 -0.152500 -0.988300 +vn 0.000000 -0.626200 -0.779700 +vn 0.000000 0.988300 -0.152500 +vn 0.000000 0.779700 -0.626200 +vn 0.000000 -0.622800 0.782400 +vn 0.000000 -0.148100 0.989000 +vn 0.000000 0.782400 0.622800 +vn 0.000000 0.989000 0.148100 +s 1 +f 406/607/320 407/608/320 408/609/320 +f 409/610/321 410/611/321 407/612/321 +f 411/613/322 412/614/322 410/615/322 +f 414/616/323 415/617/323 416/618/323 +f 417/619/324 416/620/324 418/621/324 +f 413/622/325 416/623/325 417/624/325 +f 417/618/322 421/617/322 422/616/322 +f 415/623/326 414/622/326 422/625/326 +f 424/626/327 425/627/327 418/621/327 +f 418/621/328 425/627/328 426/628/328 +f 421/629/329 417/619/329 419/630/329 +f 421/629/330 426/628/330 425/627/330 +f 405/631/323 408/615/323 424/632/323 +f 406/633/331 405/634/331 411/635/331 +f 407/633/332 410/636/332 412/635/332 +f 412/637/327 416/620/327 415/638/327 +f 428/607/333 429/608/333 430/609/333 +f 431/639/334 432/640/334 429/641/334 +f 433/642/322 434/643/322 432/644/322 +f 422/645/335 414/646/335 435/647/335 +f 438/648/336 439/649/336 435/647/336 +f 435/647/337 439/649/337 440/650/337 +f 422/645/338 436/651/338 440/650/338 +f 420/652/339 440/650/339 439/649/339 +f 427/653/323 430/644/323 438/654/323 +f 428/655/332 427/656/332 433/657/332 +f 429/655/331 432/658/331 434/657/331 +f 434/659/336 414/646/336 413/660/336 +f 405/661/320 406/607/320 408/609/320 +f 406/662/321 409/610/321 407/612/321 +f 409/631/322 411/613/322 410/615/322 +f 413/663/323 414/616/323 416/618/323 +f 419/630/324 417/619/324 418/621/324 +f 420/625/325 413/622/325 417/624/325 +f 420/663/322 417/618/322 422/616/322 +f 421/624/326 415/623/326 422/625/326 +f 418/621/327 416/620/327 411/664/327 +f 423/665/327 424/626/327 418/621/327 +f 418/621/327 411/664/327 423/665/327 +f 419/630/328 418/621/328 426/628/328 +f 426/628/329 421/629/329 419/630/329 +f 415/638/330 421/629/330 425/627/330 +f 423/666/323 405/631/323 424/632/323 +f 423/667/331 411/635/331 405/634/331 +f 409/636/331 406/633/331 411/635/331 +f 412/635/332 424/667/332 408/634/332 +f 408/634/332 407/633/332 412/635/332 +f 415/638/327 425/627/327 412/637/327 +f 412/637/327 411/664/327 416/620/327 +f 425/627/327 424/626/327 412/637/327 +f 427/661/333 428/607/333 430/609/333 +f 428/668/334 431/639/334 429/641/334 +f 431/653/322 433/642/322 432/644/322 +f 436/651/335 422/645/335 435/647/335 +f 435/647/336 414/646/336 433/669/336 +f 437/670/336 438/648/336 435/647/336 +f 435/647/336 433/669/336 437/670/336 +f 436/651/337 435/647/337 440/650/337 +f 420/652/338 422/645/338 440/650/338 +f 413/660/340 420/652/339 439/649/339 +f 437/671/323 427/653/323 438/654/323 +f 437/672/332 433/657/332 427/656/332 +f 431/658/332 428/655/332 433/657/332 +f 434/657/331 438/672/331 430/656/331 +f 430/656/331 429/655/331 434/657/331 +f 413/660/336 439/649/336 434/659/336 +f 434/659/336 433/669/336 414/646/336 +f 439/649/336 438/648/336 434/659/336 +f 442/673/341 443/674/342 444/675/342 +f 445/676/343 447/677/344 448/678/344 +f 447/677/344 442/673/341 441/679/341 +f 449/680/345 451/681/346 452/682/346 +f 451/681/346 453/683/347 454/684/347 +f 453/683/347 455/685/348 456/686/348 +f 441/679/341 442/673/341 444/675/342 +f 446/687/343 445/676/343 448/678/344 +f 448/678/344 447/677/344 441/679/341 +f 450/688/345 449/680/345 452/682/346 +f 452/682/346 451/681/346 454/684/347 +f 454/684/347 453/683/347 456/686/348 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 41e5888a3..9aa9eee37 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -124,6 +124,8 @@ "weapon.flamerReload": {"category": "player", "sounds": [{"name": "weapon/flamerReload", "stream": false}]}, "weapon.stop": {"category": "player", "sounds": ["weapon/stop1", "weapon/stop2"]}, "weapon.bonk": {"category": "player", "sounds": [{"name": "weapon/bonk", "stream": false}]}, + "weapon.hksShoot": {"category": "player", "sounds": ["weapon/hksShoot1", "weapon/hksShoot2", "weapon/hksShoot3"]}, + "weapon.glauncher": {"category": "player", "sounds": ["weapon/glauncher1", "weapon/glauncher2"]}, "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/glauncher1.ogg b/assets/hbm/sounds/weapon/glauncher1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cfb8d3abd7703d2aaa501d268fe4e6b24d20cb6d GIT binary patch literal 10228 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/glauncher2.ogg b/assets/hbm/sounds/weapon/glauncher2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4429be8bcf9ce284675fe008c875adda29e0ece3 GIT binary patch literal 10565 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 C`OS6! literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/hksShoot1.ogg b/assets/hbm/sounds/weapon/hksShoot1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..749cbc4022377f64414fe7cb84a538b2b2370556 GIT binary patch literal 7916 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 ANdN!< literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/hksShoot3.ogg b/assets/hbm/sounds/weapon/hksShoot3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4e611bc649a5097ee45b536a9c7c334fb7e2fd53 GIT binary patch literal 7755 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/entity/ModelGrenadeTraining.png b/assets/hbm/textures/entity/ModelGrenadeTraining.png new file mode 100644 index 0000000000000000000000000000000000000000..bac5fd09fa92d7652a3d91906ad8fcc8f51e0adc GIT binary patch literal 645 zcmV;00($+4P)hPcG45q|Z|A+y<2oNqbMM~Ff8Naee;a{|fw5Ft z>mFHd-b4|Vk68gCCDRL%E;r2dynuuj&{uT%a9RPnL+5{I+ze9+;97i=&sYH4;L$gkpf8y-En8$S8nH_=lk~87K);%{U(IK?$h@H0(OopwwK$@ zV&9S`1OS^SZt-%IixIFb|1J1WxILk8Rxoeq}5=!0O-hagW0AkEPBW4df z-=Zjx=lNIw03=BQAq2?z0mPW=`m@&;K?2C2<_8dyUQZoQC4>-=^1owADc$Y?mL)Oi z^-TK!K#bf%N+~2sG8R-0jwO-)W^ME7nGxIt47>xI=U-Z%;n$TcE=ox(j@B<#*DGJH{}Fz(*Y!xG&ft;3ycnlN6@t z0_JeCrs9t6Fv{-nozHC3^+QCK+6W)1{S|L~Ya`E|+ue`9J=1;Xh;;h8Tt+zwxR7MNtq% z(VswQnkI1^OArK|AZoQp(-d9Tv2B~n)A3dirJlm`Je>UpLf>IFPXIVMe^y%EK(AVq zWvT4EUd!It;{B~4^quufB40sz^~Tjb3Sggd_frvLx|07*qoM6N<$f&%E7YXATM literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_556_ap.png b/assets/hbm/textures/items/ammo_556_ap.png new file mode 100644 index 0000000000000000000000000000000000000000..58c6e9436ed09c056c1762cc51a92da9961d7411 GIT binary patch literal 352 zcmV-m0iXVfP)|PC1)u>G zML`&bNGZ2qqX7U(l3*AHQcAAR7o#B>Kvh*DiXzIg#5sJy_ngrXy)LS%5_{#HI#}3z zeHQqh1H=m8?DBnZFM9KF^NfI00i4+UKmcMj1ku}#He`NeZ_@NZw05JT$&}f0e{e6I z1f3MDm>-`qThg0k1F$ShWmzV6g=n?8c{d^VPbshInvb^?Os3pE#Q2^=;IjRlwz;Xm yMLk~GDsWM1eW7~I^%(={9r(@Mg#0zLv%Ud4Y<%Tci;PeJ0000ur2e{lp;i3etE$7sld$hFG z(9q@{2;ovgc#AEGQj1d{EpI>22%O{~cp6H%j=MVPffwHQ;rV`^@B4*+mIBBZ^D=7; zJ43YyAOYY_J!+>l%(D3d78?N2cl)HXY0R?8+5U2DNCH6jwCbLBnT#e_&$m=7R%}Re zcF{epw$fTwO9mg)5!H$XxB{?u{1ll>(*J0*Q7{mIg26Wgz?CRSGS~=0avR3nO&DYz z;`#yMe@^uWBReI7g0Vtwvk2ZhZ;vCIEjK)qFb9r}T%H*6a=k4w zJ`&M&8Q<)R-$}wR4ni7j)Wy|+yMgBQz5}TY&6Z2GV&T|hlW$$YmR(sT(?^d+b+jY>P_c3w+|&x<&xLu1+)~iyPPzM$YM6%+W;$NF>*ilC5sVRUW*a_3!p>R oeMb)$MX~kMWE(N^vztBY8_7~^yA_Fr&;S4c07*qoM6N<$g6b`VZ2$lO delta 270 zcmV+p0rCFK0=NQ@Gk*Z@NklAs=7{>8`jNm97QiP!5Dj`q@N1-MkAWPOF zWOKD&Lq|71L7{Z9lUa1HOFn{v=;Y)gyj@z6o$d~vAI}{Jj~LUeic(D}k}dr$ z9LJ$3a&6J;4MeG?%*IwR$TX`m8(VT*zh*|tx0~V1iI&yia(_M$_%09$z-Y2FG6C}? z2E+o;wfRK=BDsf@lLtwp-m$N3bVwEszKK z_X_hR#>ZF8cf4i4SwThd{uvSYE}=*EzY==LVron1A+mjwTwxuOJA8{24&R#}aUfzN UXWERU00000Ne4wvM6N<$f?~FNApigX diff --git a/assets/hbm/textures/items/ammo_556_flechette_du.png b/assets/hbm/textures/items/ammo_556_flechette_du.png new file mode 100644 index 0000000000000000000000000000000000000000..bfefb1649bd11947c0f18bc1a41936b1a296232b GIT binary patch literal 374 zcmV-+0g3*JP)aTP(h4%HG~QYfW&dhf#h-nr*I*hHBPQ>>;X>&zDZ z5ACZq>p~VPTK$$-O-lxy>UtovValLWmD$7T%8+9Ea=4YSTUGpgP4PVk2nFD*|7xrR z7)~%C7J$0q4+0R%GDuNx=#a|3TByl`EK;cT$ltkCW_xc3-*d?G#n6YJ&*#0sMNW2+Q4}rxG=YoEW8Pr>0uJ4V U^^u{?(*OVf07*qoM6N<$f*~2CwEzGB literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ammo_556_flechette_incendiary.png b/assets/hbm/textures/items/ammo_556_flechette_incendiary.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1115e79978ac8d3838b24ef846b830d551731f GIT binary patch literal 342 zcmV-c0jd6pP)1t?e8KzM9GWfepHku|APKFEfM~5N-#rPD=UZQr5Rt`5{)BBnl}Q<5 o_Z5JBx-q8m(YU6vn^Af~{DpMXo{w$)-?T%#!VvWO9l^1{arXUF!q1 z51@p?1<2e^Ogfcjlz*H&O#29jEe07N}6EdrxO zOsOmpG7?v~bA|d#u2-8VWRd@P#Q5wy#_}@MnQ5rSyIS+?wI1t$a~{6ndXNr|0$cqY<0pY#ckt&xV0$E7R)0000k*r>;vcr zsL`$Z0710al#2~b6_MZ)aI{8d+EQl$IL?V*U1m*60TSkT0EPoZ9xnVvyO}p8^ zNW`e5HL0YvUqO9=CF98EdYHA3N0i+Kz+t^bYPU8pT-(pW{u#=1S?1yS9cedlZf#&B zVncK316cL4vIq_@zL0+?WMYu<;FjF0tCgMdIB|bIF*&z@=C%vd?7FrF`y`BCfySxg;-w`a(r6ms$8XhT>^)fqmv>=B1SU) zJ%e>u78s!69Sn~N^*Z%>4Q2gCwU-@7yJ#U3u2Z4@K|ud-+clEIH%&}1zHA-^D7 zK@jwB=-92R4u#S|otmZYEl3u@p+l@6L+K(eh3lY}k`GPvO!po*59htS@J}fKsUtI^ z@#$ri25>(C_K#t0m!pGq`6Uwv0Pt{2=Vg(NRfERKN@j=#P=CEZ)h?e1$8Rhw4RIYS zGerL$uI@%^*%-;;mdW(}71yx>tjvk?V6)JS7{E@KkbzlOVan^N>G>)ARuoRcV=Ku-v@>000004O+?HFXBPH+3w!=T$XrPxVt0)La_%mgEx=^V z$J;xt+edzijm-m?ncUp>dF~GgUb>J-v9-5N?Wp)mYYCRr1KesZBwM&Dvb}|GuTYE zWnN&LwCPNmJivg}G+U&ZC<}rjTr1a&*^NO2Pjv_GcerNS0-LCH;$HN3R|RU>KJ2a+m@=Ta9x+Wu8E@P$Jg08iBd|e vwXz)^^<6(DzVBm;FXe&rCDJ(3mNo$iXU=>SW zAvS?@c>+N!q97!4q|-trq|!o=OOO;cA~wR<493m!PI?94F#$3M%$e?+-l7F~X{ zw&F*@ z_fI3liWi+`L26#b2zd%-v~Qk&xwOM%)%IB_xO{)jsCgA&AOMZlMD<2f1<3qH3+VPy zFcyGqmpKGrATdZH?0B&V$#1xkn?`G*1z5Uf6d8wXDaYcw7#$>BFeJaVOSXj3Ndk}- zVqBryN1b1dxgQ6-Jq#h^aCR}E=2fUy`PIg69mLXrxrrp>yj;N43bWHg5z{Uy}6Xs!GAiJ|NI}Ep9}nlm|2)vY~Dx@ zK@eCMm|2ukAR^cx9U#wh#{?0PD5X%ACEB)y=XpKI2!=FBOMi#!x<=D9$g<2aGbc|V zB1zL!h{)<&A*;FnYk5#u16Ffi4j&IT${sq22cfj}(lc@)e z!`?ZjTs^EeaDYMp;0`-n&F(Ro0vv|`w(|J=Wo_R*e*6W}`v>a{oR{|k`=aX3$zHeM zI7AX*c(F+Yc_&-mN)kb&TF6;p8|3WpG31p00}$bejFW6w^#A|>07*qoM6N<$f~KX2 As{jB1 delta 222 zcmV<403rX_0*L~UGk*ZUNkllTHUIzs diff --git a/assets/hbm/textures/items/assembly_calamity.png b/assets/hbm/textures/items/assembly_calamity.png index c2b6709b65f6a4b1639fdc0ffc7fd4bc663b81ef..a7949819675385503c609b9e1453228b81b76028 100644 GIT binary patch delta 324 zcmV-K0lWT_0`3BkGk*akNkl_c0iIODo5s%_HI*} zrpg$@dcC$H_3~-+Nn7-w55xj6nr&5@rV0>%EXxRjKv{vadctYD$LB}JHv$k#5&3ym zXXqpMH$8cMyb{?=<^AbeiY=8>tNH*yqe-jdpa*@bkUuk6EKy(t;DQw==a;lPkk4f_ z+p4|5u}EbLi#;Xk_QCLMHoU#8pwT3_i_wEVL!ZNMWj@rQkH}^!M-|(Uql=4(?fn-D WGL!YzIYd+d0000l$icw@r=g6=Jk&9yoA-@xzA?a81Z@{ru%OhR-trT{E9bm>RP@D#kwQ{OH6E%QSl{DiJ;oj(Wiy=aqvA>1w zQ?d)(eMx8lw^G;u(rksJBuj{r6pjf)v g|5qiq;V8-OUgSon24eGb1ONa407*qoM6N<$f|)f`+yDRo delta 271 zcmV+q0r39b0lET^G=K3)L_t(Ijm?rVZi6rwg+HpU-H>vDMj{e}+bu&RpP(n`lr0^( zM;Vd4bmAr;v85i^k|Sj6iu7klurP*7ZI-;r7{Bkm-!j~l3XlTi-)1pJ#2Cr`0C@~{ z+IA8?{QiJw8ZcviU#$Q*9u5FxT_^b!^3WgL8FN`!%jag}L4Tg&n774(ZJGuF4nSGD z<#*Hgr<5YEYrfi+=jGD-h!T4$CBi~Ir1EFwM V%z8fvVgLXD00>D%PDHLkV1m~ee#ig- diff --git a/assets/hbm/textures/items/assembly_gold.png b/assets/hbm/textures/items/assembly_gold.png index 3ccdaccd0c7fe23ec119a71675fd4c82a39945c4..4b7f8cc0026c17e45769c3131c89722b0f796c6f 100644 GIT binary patch delta 178 zcmV;j08Rg}0^R|TG=G&zL_t(Ijop#K3Bxc9MKzB>D+EoHB{WMH(HI@Tr`}C2{XGa5 z5l7SsIaT0;G5`H9f1;Gpcz$_^RC5t2DXNGgsF&Bk3*@lj0F^8NW#lq*4+d37E1Cy=!N8OYE6 gXCbG>5t6-q066m2AaWY$MgRZ+07*qoM6N<$f{js51^@s6 delta 260 zcmV+f0sH>m0k8s)G=JwwL_t(Ijm?rV4uUWghW`?805{Nqv6BnSn@qTg7ZAeLvfG;zf+xC%$`IW#~^OJa2KU!b(_d;eb^@K?%naGry|F7A}3(Z`UP`|0R~o9m*0 zm;m^TlSIF_t$wCy#MkRnSO>NFl9|EGLq{DAOhhcDBVhCmwAwj?eaClAt2cSIw z7K;SM2?!xUVhDz&0*NFcD3T_#V#8)Alyo1VI4DaS%ljs;b&t_6vt$NS7Pfzi?f5bH0KJAv8%6N(iC8?{7BQ zgE@AnX&TD1gy(q}h5-POrYW*4+pha8U?u1C8MbYsu4@d#a47j=o4)U_kH_O82m=*~AF^WM7sgrfEVP$50dnX_~I`f2-K&mUP~R_auLY cS;?!}H#W<-%3O1VqyPW_07*qoM6N<$g4?8#wg3PC delta 259 zcmV+e0sQ{-0x^@~MYErai=qGkD5dnR>&Pa+RKqYhoz2hJ zx;F6L8Zo65lv02YfDjy$L|cH#e&6><({ur0jN!l-NEm_!!F-};0BzfvODW~zQ5?s( zONrq1@&iuiGijOzQc7H^$_kJ%W{H8X5M9FQTjM96$MflS@T*2gxL!b>=hh;9PxS(X z5ITw?FT@2h03n3toLf$mQr_tRun28FxhzZ5n=cLktX=a}^#+YhTlps=cxC_q002ov JPDHLkV1mGwcj^ED diff --git a/assets/hbm/textures/items/assembly_lacunae.png b/assets/hbm/textures/items/assembly_lacunae.png index df7b519ba8752b8c6c4e22d4178cf51aa0612434..9883cc8c885fd50cdbc99dbaf9093990dff2fc84 100644 GIT binary patch delta 238 zcmVCMT6ck>76F}pnr11on zmRy3`#wvIL4v-!ltT@5i=nMpxfw6I`O!n{le;4?%R$N0VMM4MwKv|ZoE|{WcSqA4E z01yXR`yX0s`n;WU=(-L<2qZ~Dz7}||ptUAz?Z`nXMN&$HVP}Y@Y0$RqkL|k`c|`O)kq?=bU>8_yqYWPQ4Tqx{C7D%e47!{p-LLya oN&XzN^srwcX^iE=eF)ck0T{1)D%SLip8x;=07*qoM6N<$f+2fm7XSbN delta 228 zcmV;^bEIQ-Yp(7@^vULIBkK3+BkULIBk9&T0?15jcCS<{6J7Z@2BFk|4$R|xiv e-%V5u5(EIT4NuWBNMMuz0000%adnjR(H|`;W^Ym?1xZGBQl8pU;TZ3l7{& zj1JsPjQ{@q!*Fg_#RA5kKOyFZWqAFE8{ojr#JKs|ZMcRFJ6%@&XJTSvgt-P8Ost>J z`26`xOh3XD_ibK=m*N!RB{-;v~6*B12%B$ub0{375-A eGK4IE%Vq$(#f7?VUWqCI0000R0)qmOG=I8DL_t(IjjfR}4udcd1UHc=xeweIuBEw(ihuaeG?aYdKCo$G z1da^}%1V}H**m+|0sq!Gj@+NSt|NfFzB3hKN{ME68$>gsyHiyuB6Y}B3st4NGXp;$ z8Svgq*p{3jXJ4o%>>#J+oS>>zNa=eN35W=|J0b!AFwb-O?ogoT9u^T05v=QqVHhAH zFtciMt-+y5-}jiN3Cpq|BAQKF)qaAsL=mB?GNp7joofiL=Kn3^j(LN$E?&shbVn_k RP}cwe002ovPDHLkV1l#|UX%a; delta 241 zcmV0-efxVR~Jf!-eqdI-VIL24JV zZ>lufJbc^B)}-H;v;_F8kWvOIW%z|DQn>3n0Kha&IF6%WskG@mvG03!vho#&INTp5A-A=C9%dr{Y|x!+az_JWz8d;$00yo9m1%sk(ZQlqB zp)sGx7KtMq7@uhh3Y6{BE0PsS9FJc^=HbI7)!A6P zUG~1tzB1=IkmtZ+@j9^%E0PKSPLKi5xp Q00000NkvXXt^-0~f&s{QU;qFB diff --git a/assets/hbm/textures/items/assembly_smg.png b/assets/hbm/textures/items/assembly_smg.png index eb4610c78fd43db2eed8a688daac52528bcb6d1d..47406609c8866db8181069b2ac3c8a5a900c5779 100644 GIT binary patch delta 297 zcmV+^0oMNf0n-AIGk*aJNkl$IUZwAX1*6T;cSC%(PlD9QF@CbeS v&m{Db_m^71?b*kAw}bd4<8sleE5JOPLu)f&j$QwVHaZf z^Yb0U?{AM7#B33AB!vMsKz##94QUhu92^|}3kV31WC+{<2TBKr{~8(^B)bG23kMDy zVEpjm167@uaXCPvY$iqD00000 LNkvXXu0mjf)38!J diff --git a/assets/hbm/textures/items/assembly_steel.png b/assets/hbm/textures/items/assembly_steel.png index 79a4aef678957ac91eb9ba347fad06234276a966..e603a98badc7378de3e58b9805f3adb2a06979e2 100644 GIT binary patch delta 250 zcmVjc*`-t>v zm3XbcB=JhLE`_<0aeRjFe?@Y7|ErSQuq_Go-i7gzxnFZf6#xJL07*qoM6N<$f~C}K A*8l(j delta 275 zcmV+u0qp*!0=@!}G=KF;L_t(Ijm?rjYQr!Thd(DJ1P`h40Wx{;Bzy$noA^fEyyPYZ zA0S{b+610@fPgZHE~z?MM7CT?>Cm_7{rP_SJs$k4$n&$y^RxT)@GxjM4BGAYuRn&o zEE8JmDE#?-yS*n-z}9e46ad`s764<6dpt}6u$vpZt^=U&dw-gy2_QlU()5$#@q^PT z4Qd|HwyjSprGloquCaE<;gFN2A;4R>T;39;lmob4`-DXZA(*CVWii-6Y;d+U4_j;F z7QTy^@+P3Fs?`lFRW|`rN|$BXCL{*(04b#_%X0M-W6Y*HK(MrD<#8N+ZF$=B5&cPg Z0W?HoNupk9X$$}W002ovPDHLkV1m*fflvSd diff --git a/assets/hbm/textures/items/assembly_uzi.png b/assets/hbm/textures/items/assembly_uzi.png index a1ba4dfb4eb6e42beadef0e15e027450a0e1eb3c..b490a0facd5d117a686727e26fa738d6ef631689 100644 GIT binary patch delta 193 zcmV;y06zbl0__2iG=HQ?L_t(IjbmV-H3$t2{T~_{`X84(3qH;E_V)i%Qc@Uh-@eVj zz`*c-_3G7(=xUf?32|MOiQ vB)Mde8$xQpVl^b$g@L@Ng&9J&WLW=2aL&U?(=-Z@QnL9ti_zvHBCnJRplJ7fvc-JAo_wAS=u8G} z9L_Q_!ngWEK&-0G03z~5QS5>Q01^4JETc)Zap;VLHV)dl2_V!cgkVakU>bLQ%o5~T pyz$jVdhI|mNnq@N%k9Ac;0eS+U@iBEpf~^k002ovPDHLkV1kd2aRLAU diff --git a/assets/hbm/textures/items/gun_pm_ammo.png b/assets/hbm/textures/items/gun_pm_ammo.png index e12c68a0e66e996b3f344d208cfa1fb6b09f3d6e..9309fa68f8f869b721cb5a8fc466eea9891310bf 100644 GIT binary patch delta 158 zcmV;P0Ac^@0m=c8G=G6fL_t(IjbmV-5HK<@Ffbg-WB3mfu$u%CBMCI?GW`GlOzZ#u zXIlS}4I{~b?}s3mB17IRrGX(N8-#8MS*}4gN?`~P_jZ2$48VZtRbuYv8qu_iNvp2|N4 ze1@>#lHlQDWVrS4AH(Nw%nS?+xE;ZW%XWKX76ws4CWhDV|1rG(_>1BAWk!bF&fgg7 zak}8_^}h_fT>lt8fBVnyvdpL@t?yRZ;LL!$TYvma_;-} z>$cXK|J=!U`o$jcs7aRm=FhHti{1P`F7viZgV+UhJcWP54I`6u&!6h2{2iDw7=3>- z99I0X+TQB?1ojLy2ktc|r<~NXXXISKY68PgnR(=$qVGQ6zw{5w6#jsDZtD&v-&uG3 o>ifWdq8<#o3p`20n(_}AZ}v()WqDoJ5A-&Jr>mdKI;Vst0Fv8qH~;_u literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_base.png b/assets/hbm/textures/models/weapons/flechette_base.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1c03e7bcd365817b563276422d6a4000c1c1e4 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@~b>u977^n zlM^Ho4rC!TVXf77PrJ-ixQt$~x2nbOnQ_tDnm{r-UW|ZK+4` literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_body.png b/assets/hbm/textures/models/weapons/flechette_body.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa1525d9e9d28240ff2f2adc7caeb0a9da89ddd GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEX7WqAsj$Z!;#X#z`(f1)5S5Q zV$R!JhJJ?)BpL#nCcLQK6|#bv**!hsq21etQ=+RxPP^T&X5XOv^z?hhd*_Z{e%rZJ zHje-BwK}7RC|SvGucwM>%Rd`fVG zPlxGhmIEpTy}S04{J-=0?{{bv%@0*OaQ+SZil|hkA4%$wsZ0i)B!<&pCL3Gv!`nQ) R(}D5G;OXk;vd$@?2>^9gsGa}- literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_chamber.png b/assets/hbm/textures/models/weapons/flechette_chamber.png new file mode 100644 index 0000000000000000000000000000000000000000..be140fef46c878d3becb2a8f2d67317b883b8841 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#X#z`)4t>Eakt zG3V{fja-KeL>S_i)<1cqkjM8g^#3Wxf(cxuFRqKE&wV@TR)_nEyD^gvi$Hz zQO7>9N%{gOOqL*8kQ|(Eqbv_@8?|4z`tAu47v^= z!D9?t7<@1OXY7A%Tix?2yn!);QHuEjlZoqlrfk1e&qDSy@i=f_kZ2HFu+q-q;_U>N zBXzq^TS??jzjJQQOqK7~p2vs$=K@I^GFVpH^PRn={VqPH*L?>QPXg5RUYL<=3s^H? hh8ZGRk5xe>bK5a_vyK**j<0@ z4f_P^gcS@aN(~H5910B#cNy6>tdCyd$JqDUC%0*m?SppyGHI{$dVf+0?F{-@tN#X%-B}?LQq|@$}!z?FV0}D==f8Y!*!1bdU&hh{2ihHW^gcRZm9SuO!U5-m1D6l1V0M!= xc*Wr6#k*jOnd}DviBhOgLm+#PRl*fUhUnYenlf_zFM&2Nc)I$ztaD0e0suS?HxU2; literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_pivot.png b/assets/hbm/textures/models/weapons/flechette_pivot.png new file mode 100644 index 0000000000000000000000000000000000000000..03f921e8d24b40d981e15bc328f4f78be9351ae7 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@`F8H977^n z-(EH3V^HK_c4Yrp@c++>7a9(a3O26`niv=$qB&<)>)ZFK$+uNK-=OZbM=V#1#0OESO`njxgN@xNANV+kk literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_stock.png b/assets/hbm/textures/models/weapons/flechette_stock.png new file mode 100644 index 0000000000000000000000000000000000000000..c395eabd20d83922b86d14f28fb20a08cee53371 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6icy_X9x!n)NrJ90QoMSE{-7{ zoyk|GP5XJCf%RRV6welxTJLWLi@FUjUU5@8u!1?_MXqAetmFg<7DanVN! literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/weapons/flechette_top.png b/assets/hbm/textures/models/weapons/flechette_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b1cc2b23eb696454468b27955ecc9d517fd927 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^4M1$b!3HF6eks}qq*#ibJVQ8upoSx*1IRz->Eakt zG3V_qN4|prA`XE^{Cdv5sb@_)cI{A%)YUDH)#oLpJcP~vKexU6wqf1h3+>Y{|NQut zJ#p6Szh*yf`<6yL@{Z7FJR)2Fm*I?gS?d1XdUF^GnL3JDa}LbuJisZS-eAFagj2x} zBxuZ*cjC3%hshr=fW&tk)J|CWf7Z|XIF3k7{gw?JaCMtG?@U|kNo qLG4u0GfFHd1`0dO0eXRfL22G48TqrT-~7D?;(5CIxvXFVdQ&MBb@0682PCIA2c literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 229e5beeb..e98d6f3a8 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -4,6 +4,13 @@ import com.hbm.blocks.generic.*; import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.machine.*; +import com.hbm.blocks.network.BlockCable; +import com.hbm.blocks.network.BlockConveyor; +import com.hbm.blocks.network.BlockFluidDuct; +import com.hbm.blocks.network.BlockGasDuct; +import com.hbm.blocks.network.BlockOilDuct; +import com.hbm.blocks.network.BlockRFCable; +import com.hbm.blocks.network.CableSwitch; import com.hbm.blocks.test.*; import com.hbm.items.block.ItemBlockLore; import com.hbm.items.block.ItemTaintBlock; @@ -428,6 +435,8 @@ public class ModBlocks { public static Block gas_duct; public static Block fluid_duct; + public static Block conveyor; + public static Block barrel_plastic; public static Block barrel_corroded; public static Block barrel_iron; @@ -1088,6 +1097,7 @@ public class ModBlocks { gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); + conveyor = new BlockConveyor(Material.iron).setBlockName("conveyor").setHardness(0.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_reiium"); barrel_plastic = new BlockFluidBarrel(Material.iron, 12000).setBlockName("barrel_plastic").setStepSound(Block.soundTypeStone).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_plastic"); barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); @@ -1715,13 +1725,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_minirtg, machine_minirtg.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_top, machine_spp_top.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_red, machine_rtg_red.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_orange, machine_rtg_orange.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_yellow, machine_rtg_yellow.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_green, machine_rtg_green.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_cyan, machine_rtg_cyan.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_blue, machine_rtg_blue.getUnlocalizedName()); - //GameRegistry.registerBlock(machine_rtg_purple, machine_rtg_purple.getUnlocalizedName()); + GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, red_pylon.getUnlocalizedName()); @@ -1732,6 +1736,8 @@ public class ModBlocks { GameRegistry.registerBlock(gas_duct, gas_duct.getUnlocalizedName()); GameRegistry.registerBlock(gas_duct_solid, gas_duct_solid.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct, fluid_duct.getUnlocalizedName()); + GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); + GameRegistry.registerBlock(barrel_plastic, ItemBlockLore.class, barrel_plastic.getUnlocalizedName()); GameRegistry.registerBlock(barrel_corroded, ItemBlockLore.class, barrel_corroded.getUnlocalizedName()); GameRegistry.registerBlock(barrel_iron, ItemBlockLore.class, barrel_iron.getUnlocalizedName()); diff --git a/com/hbm/blocks/generic/BlockMush.java b/com/hbm/blocks/generic/BlockMush.java index 6fb3a00ff..29101ee8d 100644 --- a/com/hbm/blocks/generic/BlockMush.java +++ b/com/hbm/blocks/generic/BlockMush.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.world.feature.HugeMush; import net.minecraft.block.Block; @@ -124,7 +125,7 @@ public class BlockMush extends Block implements IGrowable { public void updateTick(World world, int x, int y, int z, Random rand) { this.checkAndDropBlock(world, x, y, z); - if(world.getBlock(x, y - 1, z) == ModBlocks.waste_earth && rand.nextInt(5) == 0) + if(MainRegistry.enableMycelium && world.getBlock(x, y - 1, z) == ModBlocks.waste_earth && rand.nextInt(5) == 0) { world.setBlock(x, y - 1, z, ModBlocks.waste_mycelium); } diff --git a/com/hbm/blocks/machine/GeigerCounter.java b/com/hbm/blocks/machine/GeigerCounter.java index 1daa1b1ee..c36c4d92c 100644 --- a/com/hbm/blocks/machine/GeigerCounter.java +++ b/com/hbm/blocks/machine/GeigerCounter.java @@ -1,6 +1,7 @@ package com.hbm.blocks.machine; import com.hbm.saveddata.RadiationSavedData; +import com.hbm.tileentity.machine.TileEntityGeiger; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; diff --git a/com/hbm/blocks/machine/BlockCable.java b/com/hbm/blocks/network/BlockCable.java similarity index 96% rename from com/hbm/blocks/machine/BlockCable.java rename to com/hbm/blocks/network/BlockCable.java index 949222d69..a06474449 100644 --- a/com/hbm/blocks/machine/BlockCable.java +++ b/com/hbm/blocks/network/BlockCable.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.tileentity.conductor.TileEntityCable; diff --git a/com/hbm/blocks/network/BlockConveyor.java b/com/hbm/blocks/network/BlockConveyor.java new file mode 100644 index 000000000..c6f546a08 --- /dev/null +++ b/com/hbm/blocks/network/BlockConveyor.java @@ -0,0 +1,92 @@ +package com.hbm.blocks.network; + +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.tileentity.machine.TileEntityMachineEPress; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockConveyor extends Block { + + public BlockConveyor(Material p_i45394_1_) { + super(p_i45394_1_); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + + if(!world.isRemote) { + + if(entity instanceof EntityItem && entity.ticksExisted > 10 && !entity.isDead) { + + EntityMovingItem item = new EntityMovingItem(world); + item.setItemStack(((EntityItem)entity).getEntityItem()); + item.setPositionAndRotation(x + 0.5, y + 0.125, z + 0.5, 0, 0); + world.spawnEntityInWorld(item); + + entity.setDead(); + } + } + } + + @Override + public int getRenderType() { + return 334086; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) + { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + } + if(i == 1) + { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + } + if(i == 2) + { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + } + if(i == 3) + { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + if(itemStack.hasDisplayName()) + { + ((TileEntityMachineEPress)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); + } + } + +} diff --git a/com/hbm/blocks/machine/BlockFluidDuct.java b/com/hbm/blocks/network/BlockFluidDuct.java similarity index 98% rename from com/hbm/blocks/machine/BlockFluidDuct.java rename to com/hbm/blocks/network/BlockFluidDuct.java index 5d2e43b65..37eee94f2 100644 --- a/com/hbm/blocks/machine/BlockFluidDuct.java +++ b/com/hbm/blocks/network/BlockFluidDuct.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.tileentity.conductor.TileEntityFluidDuct; diff --git a/com/hbm/blocks/machine/BlockGasDuct.java b/com/hbm/blocks/network/BlockGasDuct.java similarity index 98% rename from com/hbm/blocks/machine/BlockGasDuct.java rename to com/hbm/blocks/network/BlockGasDuct.java index 84a697a88..f1b85be7d 100644 --- a/com/hbm/blocks/machine/BlockGasDuct.java +++ b/com/hbm/blocks/network/BlockGasDuct.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.tileentity.conductor.TileEntityGasDuct; diff --git a/com/hbm/blocks/machine/BlockOilDuct.java b/com/hbm/blocks/network/BlockOilDuct.java similarity index 98% rename from com/hbm/blocks/machine/BlockOilDuct.java rename to com/hbm/blocks/network/BlockOilDuct.java index 9c5218b1e..a1b9ca9bd 100644 --- a/com/hbm/blocks/machine/BlockOilDuct.java +++ b/com/hbm/blocks/network/BlockOilDuct.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.tileentity.conductor.TileEntityOilDuct; diff --git a/com/hbm/blocks/machine/BlockRFCable.java b/com/hbm/blocks/network/BlockRFCable.java similarity index 98% rename from com/hbm/blocks/machine/BlockRFCable.java rename to com/hbm/blocks/network/BlockRFCable.java index ef77281d2..d087a33c4 100644 --- a/com/hbm/blocks/machine/BlockRFCable.java +++ b/com/hbm/blocks/network/BlockRFCable.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.tileentity.conductor.TileEntityRFDuct; diff --git a/com/hbm/blocks/machine/CableSwitch.java b/com/hbm/blocks/network/CableSwitch.java similarity index 98% rename from com/hbm/blocks/machine/CableSwitch.java rename to com/hbm/blocks/network/CableSwitch.java index 1c87eb5c8..6d8db470e 100644 --- a/com/hbm/blocks/machine/CableSwitch.java +++ b/com/hbm/blocks/network/CableSwitch.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.conductor.TileEntityCableSwitch; diff --git a/com/hbm/entity/item/EntityMovingItem.java b/com/hbm/entity/item/EntityMovingItem.java new file mode 100644 index 000000000..b2d318bd4 --- /dev/null +++ b/com/hbm/entity/item/EntityMovingItem.java @@ -0,0 +1,142 @@ +package com.hbm.entity.item; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class EntityMovingItem extends Entity { + + public EntityMovingItem(World p_i1582_1_) { + super(p_i1582_1_); + this.setSize(0.5F, 0.25F); + this.noClip = true; + } + + public void setItemStack(ItemStack stack) { + + this.getDataWatcher().updateObject(10, stack); + this.getDataWatcher().setObjectWatched(10); + } + + public ItemStack getItemStack() { + + ItemStack stack = this.getDataWatcher().getWatchableObjectItemStack(10); + return stack == null ? new ItemStack(Blocks.stone) : stack; + } + + public boolean canBeCollidedWith() { + return true; + } + + public boolean interactFirst(EntityPlayer player) { + + if(!worldObj.isRemote && player.inventory.addItemStackToInventory(this.getItemStack().copy())) { + this.setDead(); + } + + return false; + } + + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!worldObj.isRemote) { + worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack())); + this.setDead(); + } + return true; + } + + public boolean canAttackWithItem() { + return true; + } + + public boolean hitByEntity(Entity attacker) { + + if(attacker instanceof EntityPlayer) { + } + + this.setDead(); + + return false; + } + + protected boolean canTriggerWalking() { + return true; + } + + private int schedule = 0; + + public void onUpdate() { + + if(!worldObj.isRemote) { + + if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ)) != ModBlocks.conveyor) { + this.setDead(); + worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack())); + return; + } + } + + if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ)) == ModBlocks.conveyor) { + + if(schedule <= 0) { + ForgeDirection dir = ForgeDirection.getOrientation(worldObj.getBlockMetadata((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ))); + + if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY) + 1, (int)Math.floor(posZ)) == ModBlocks.conveyor && motionY >= 0) { + dir = ForgeDirection.DOWN; + } + + if(worldObj.getBlock((int)Math.floor(posX), (int)Math.floor(posY) - 1, (int)Math.floor(posZ)) == ModBlocks.conveyor && motionY <= 0) { + dir = ForgeDirection.UP; + } + + double speed = 0.1; + + schedule = (int) (1 / speed); + motionX = -speed * dir.offsetX; + motionY = -speed * dir.offsetY; + motionZ = -speed * dir.offsetZ; + } + + this.moveEntity(motionX, motionY, motionZ); + schedule--; + } + } + + @Override + protected void entityInit() { + this.getDataWatcher().addObjectByDataType(10, 5); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + + NBTTagCompound compound = nbt.getCompoundTag("Item"); + this.setItemStack(ItemStack.loadItemStackFromNBT(compound)); + + ItemStack stack = getDataWatcher().getWatchableObjectItemStack(10); + + schedule = nbt.getInteger("schedule"); + + if (stack == null || stack.stackSize <= 0) + this.setDead(); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + + if (this.getItemStack() != null) + nbt.setTag("Item", this.getItemStack().writeToNBT(new NBTTagCompound())); + + nbt.setInteger("schedule", schedule); + } + +} diff --git a/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 3c97294bc..e5b1f04c4 100644 --- a/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -57,7 +57,7 @@ public class EntityMissileAntiBallistic extends Entity { List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced) { + if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, true); this.setDead(); return; @@ -113,7 +113,7 @@ public class EntityMissileAntiBallistic extends Entity { double closest = 1000D; for(Entity e : list) { - if(e instanceof EntityMissileBaseAdvanced) { + if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); if(dis < closest) { diff --git a/com/hbm/entity/projectile/EntityBulletBase.java b/com/hbm/entity/projectile/EntityBulletBase.java index 0c8ea5f79..ad1a86e2b 100644 --- a/com/hbm/entity/projectile/EntityBulletBase.java +++ b/com/hbm/entity/projectile/EntityBulletBase.java @@ -151,6 +151,11 @@ public class EntityBulletBase extends Entity implements IProjectile { if(config == null) config = BulletConfigSyncingUtil.pullConfig(dataWatcher.getWatchableObjectInt(18)); + if(config.maxAge == 0) { + this.setDead(); + return; + } + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); diff --git a/com/hbm/handler/BulletConfigSyncingUtil.java b/com/hbm/handler/BulletConfigSyncingUtil.java index 998ce12b1..e97687de0 100644 --- a/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/com/hbm/handler/BulletConfigSyncingUtil.java @@ -55,6 +55,8 @@ public class BulletConfigSyncingUtil { public static int GRENADE_FINNED = i++; public static int GRENADE_NUCLEAR = i++; public static int GRENADE_PHOSPHORUS = i++; + public static int GRENADE_TRACER = i++; + public static int GRENADE_KAMPF = i++; public static int G12_NORMAL = i++; public static int G12_INCENDIARY = i++; @@ -85,6 +87,7 @@ public class BulletConfigSyncingUtil { public static int BMG50_NORMAL = i++; public static int BMG50_INCENDIARY = i++; public static int BMG50_EXPLOSIVE = i++; + public static int BMG50_AP = i++; public static int BMG50_DU = i++; public static int BMG50_STAR = i++; public static int BMG50_PHOSPHORUS = i++; @@ -108,6 +111,7 @@ public class BulletConfigSyncingUtil { public static int G4_EXPLOSIVE = i++; public static int SPECIAL_OSIPR = i++; + public static int SPECIAL_OSIPR_CHARGED = i++; public static int SPECIAL_GAUSS = i++; public static int SPECIAL_GAUSS_CHARGED = i++; public static int SPECIAL_EMP = i++; @@ -117,6 +121,19 @@ public class BulletConfigSyncingUtil { public static int FLAMER_WP = i++; public static int FLAMER_GAS = i++; + public static int R556_NORMAL = i++; + public static int R556_GOLD = i++; + public static int R556_PHOSPHORUS = i++; + public static int R556_AP = i++; + public static int R556_DU = i++; + public static int R556_STAR = i++; + public static int R556_TRACER = i++; + public static int R556_FLECHETTE = i++; + public static int R556_FLECHETTE_INCENDIARY = i++; + public static int R556_FLECHETTE_PHOSPHORUS = i++; + public static int R556_FLECHETTE_DU = i++; + public static int R556_K = i++; + public static int G20_NORMAL_FIRE = i++; public static int G20_SHRAPNEL_FIRE = i++; public static int G20_SLUG_FIRE = i++; @@ -177,6 +194,8 @@ public class BulletConfigSyncingUtil { configSet.put(GRENADE_CONCUSSION, GunGrenadeFactory.getGrenadeConcussionConfig()); configSet.put(GRENADE_FINNED, GunGrenadeFactory.getGrenadeFinnedConfig()); configSet.put(GRENADE_NUCLEAR, GunGrenadeFactory.getGrenadeNuclearConfig()); + configSet.put(GRENADE_TRACER, GunGrenadeFactory.getGrenadeTracerConfig()); + configSet.put(GRENADE_KAMPF, GunGrenadeFactory.getGrenadeKampfConfig()); configSet.put(G12_NORMAL, Gun12GaugeFactory.get12GaugeConfig()); configSet.put(G12_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig()); @@ -208,6 +227,7 @@ public class BulletConfigSyncingUtil { configSet.put(BMG50_INCENDIARY, Gun50BMGFactory.get50BMGFireConfig()); configSet.put(BMG50_PHOSPHORUS, Gun50BMGFactory.get50BMGPhosphorusConfig()); configSet.put(BMG50_EXPLOSIVE, Gun50BMGFactory.get50BMGExplosiveConfig()); + configSet.put(BMG50_AP, Gun50BMGFactory.get50BMGAPConfig()); configSet.put(BMG50_DU, Gun50BMGFactory.get50BMGDUConfig()); configSet.put(BMG50_STAR, Gun50BMGFactory.get50BMGStarConfig()); @@ -230,6 +250,7 @@ public class BulletConfigSyncingUtil { configSet.put(G4_EXPLOSIVE, Gun4GaugeFactory.get4GaugeExplosiveConfig()); configSet.put(SPECIAL_OSIPR, GunOSIPRFactory.getPulseConfig()); + configSet.put(SPECIAL_OSIPR_CHARGED, GunOSIPRFactory.getPulseChargedConfig()); configSet.put(SPECIAL_GAUSS, GunGaussFactory.getGaussConfig()); configSet.put(SPECIAL_GAUSS_CHARGED, GunGaussFactory.getAltConfig()); configSet.put(SPECIAL_EMP, GunEnergyFactory.getOrbusConfig()); @@ -238,6 +259,19 @@ public class BulletConfigSyncingUtil { configSet.put(FLAMER_NAPALM, GunEnergyFactory.getNapalmConfig()); configSet.put(FLAMER_WP, GunEnergyFactory.getPhosphorusConfig()); configSet.put(FLAMER_GAS, GunEnergyFactory.getGasConfig()); + + configSet.put(R556_NORMAL, Gun556mmFactory.get556Config()); + configSet.put(R556_GOLD, Gun556mmFactory.get556GoldConfig()); + configSet.put(R556_PHOSPHORUS, Gun556mmFactory.get556PhosphorusConfig()); + configSet.put(R556_AP, Gun556mmFactory.get556APConfig()); + configSet.put(R556_DU, Gun556mmFactory.get556DUConfig()); + configSet.put(R556_STAR, Gun556mmFactory.get556StarConfig()); + configSet.put(R556_TRACER, Gun556mmFactory.get556TracerConfig()); + configSet.put(R556_FLECHETTE, Gun556mmFactory.get556FlechetteConfig()); + configSet.put(R556_FLECHETTE_INCENDIARY, Gun556mmFactory.get556FlechetteIncendiaryConfig()); + configSet.put(R556_FLECHETTE_PHOSPHORUS, Gun556mmFactory.get556FlechettePhosphorusConfig()); + configSet.put(R556_FLECHETTE_DU, Gun556mmFactory.get556FlechetteDUConfig()); + configSet.put(R556_K, Gun556mmFactory.get556KConfig()); configSet.put(G20_NORMAL_FIRE, Gun20GaugeFactory.get20GaugeConfig().setToFire(3)); configSet.put(G20_SHRAPNEL_FIRE, Gun20GaugeFactory.get20GaugeShrapnelConfig().setToFire(3)); diff --git a/com/hbm/handler/GunConfiguration.java b/com/hbm/handler/GunConfiguration.java index 2c4ce4cd6..8688e0a66 100644 --- a/com/hbm/handler/GunConfiguration.java +++ b/com/hbm/handler/GunConfiguration.java @@ -62,7 +62,7 @@ public class GunConfiguration { public List comment = new ArrayList(); //bullet configs for main and alt fire - public List config; + public List config = new ArrayList(); //crosshair public Crosshair crosshair; diff --git a/com/hbm/handler/ToolAbility.java b/com/hbm/handler/ToolAbility.java index 5579df476..457ee7d0c 100644 --- a/com/hbm/handler/ToolAbility.java +++ b/com/hbm/handler/ToolAbility.java @@ -9,6 +9,7 @@ import java.util.Set; import com.hbm.inventory.MachineRecipes; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemToolAbility; +import com.hbm.main.MainRegistry; import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; @@ -39,6 +40,13 @@ public abstract class ToolAbility { @Override public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, ItemToolAbility tool) { + Block b = world.getBlock(x, y, z); + + if(b == Blocks.stone && !MainRegistry.recursiveStone) + return; + if(b == Blocks.netherrack && !MainRegistry.recursiveNetherrack) + return; + List indices = Arrays.asList(new Integer[] {0, 1, 2, 3, 4, 5}); Collections.shuffle(indices); @@ -46,21 +54,26 @@ public abstract class ToolAbility { for(Integer i : indices) { switch(i) { - case 0: breakExtra(world, x + 1, y, z, x, y, z, player, tool); break; - case 1: breakExtra(world, x - 1, y, z, x, y, z, player, tool); break; - case 2: breakExtra(world, x, y + 1, z, x, y, z, player, tool); break; - case 3: breakExtra(world, x, y - 1, z, x, y, z, player, tool); break; - case 4: breakExtra(world, x, y, z + 1, x, y, z, player, tool); break; - case 5: breakExtra(world, x, y, z - 1, x, y, z, player, tool); break; + case 0: breakExtra(world, x + 1, y, z, x, y, z, player, tool, 0); break; + case 1: breakExtra(world, x - 1, y, z, x, y, z, player, tool, 0); break; + case 2: breakExtra(world, x, y + 1, z, x, y, z, player, tool, 0); break; + case 3: breakExtra(world, x, y - 1, z, x, y, z, player, tool, 0); break; + case 4: breakExtra(world, x, y, z + 1, x, y, z, player, tool, 0); break; + case 5: breakExtra(world, x, y, z - 1, x, y, z, player, tool, 0); break; } } } - private void breakExtra(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, ItemToolAbility tool) { + private void breakExtra(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, ItemToolAbility tool, int depth) { if(pos.contains(new ThreeInts(x, y, z))) return; + depth += 1; + + if(depth > MainRegistry.recursionDepth) + return; + pos.add(new ThreeInts(x, y, z)); //don't lose the ref block just yet @@ -91,12 +104,12 @@ public abstract class ToolAbility { for(Integer i : indices) { switch(i) { - case 0: breakExtra(world, x + 1, y, z, refX, refY, refZ, player, tool); break; - case 1: breakExtra(world, x - 1, y, z, refX, refY, refZ, player, tool); break; - case 2: breakExtra(world, x, y + 1, z, refX, refY, refZ, player, tool); break; - case 3: breakExtra(world, x, y - 1, z, refX, refY, refZ, player, tool); break; - case 4: breakExtra(world, x, y, z + 1, refX, refY, refZ, player, tool); break; - case 5: breakExtra(world, x, y, z - 1, refX, refY, refZ, player, tool); break; + case 0: breakExtra(world, x + 1, y, z, refX, refY, refZ, player, tool, depth); break; + case 1: breakExtra(world, x - 1, y, z, refX, refY, refZ, player, tool, depth); break; + case 2: breakExtra(world, x, y + 1, z, refX, refY, refZ, player, tool, depth); break; + case 3: breakExtra(world, x, y - 1, z, refX, refY, refZ, player, tool, depth); break; + case 4: breakExtra(world, x, y, z + 1, refX, refY, refZ, player, tool, depth); break; + case 5: breakExtra(world, x, y, z - 1, refX, refY, refZ, player, tool, depth); break; } } } diff --git a/com/hbm/handler/guncfg/BulletConfigFactory.java b/com/hbm/handler/guncfg/BulletConfigFactory.java index 8d9be9186..081bc3233 100644 --- a/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -152,6 +152,7 @@ public class BulletConfigFactory { bullet.explosive = 2.5F; bullet.style = BulletConfiguration.STYLE_GRENADE; bullet.plink = BulletConfiguration.PLINK_GRENADE; + bullet.vPFX = "smoke"; return bullet; } diff --git a/com/hbm/handler/guncfg/Gun50BMGFactory.java b/com/hbm/handler/guncfg/Gun50BMGFactory.java index af9bd2530..fc961c735 100644 --- a/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -50,6 +50,7 @@ public class Gun50BMGFactory { config.config.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); config.config.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); config.config.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); + config.config.add(BulletConfigSyncingUtil.BMG50_AP); config.config.add(BulletConfigSyncingUtil.BMG50_DU); config.config.add(BulletConfigSyncingUtil.BMG50_STAR); @@ -86,6 +87,7 @@ public class Gun50BMGFactory { config.config.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); config.config.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); config.config.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); + config.config.add(BulletConfigSyncingUtil.BMG50_AP); config.config.add(BulletConfigSyncingUtil.BMG50_DU); config.config.add(BulletConfigSyncingUtil.BMG50_STAR); @@ -168,14 +170,28 @@ public class Gun50BMGFactory { return bullet; } + public static BulletConfiguration get50BMGAPConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = ModItems.ammo_50bmg_ap; + bullet.spread *= inaccuracy; + bullet.dmgMin = 30; + bullet.dmgMax = 25; + bullet.wear = 15; + bullet.leadChance = 10; + + return bullet; + } + public static BulletConfiguration get50BMGDUConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); bullet.ammo = ModItems.ammo_50bmg_du; bullet.spread *= inaccuracy; - bullet.dmgMin = 25; - bullet.dmgMax = 35; + bullet.dmgMin = 40; + bullet.dmgMax = 45; bullet.wear = 25; bullet.leadChance = 50; diff --git a/com/hbm/handler/guncfg/Gun556mmFactory.java b/com/hbm/handler/guncfg/Gun556mmFactory.java new file mode 100644 index 000000000..984746cca --- /dev/null +++ b/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -0,0 +1,329 @@ +package com.hbm.handler.guncfg; + +import java.util.ArrayList; + +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.items.ModItems; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; + +public class Gun556mmFactory { + + public static GunConfiguration getEuphieConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 2; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.hasReloadAnim = false; + config.hasFiringAnim = false; + config.hasSpinup = false; + config.hasSpindown = false; + config.hasSights = false; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 40; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_BOX; + config.durability = 10000; + config.reloadSound = GunConfiguration.RSOUND_MAG; + config.firingSound = "hbm:weapon.hksShoot"; + config.reloadSoundEnd = false; + + config.name = "Britannian Standard Issue Assault Rifle"; + config.manufacturer = "BAE Systems plc"; + + config.comment.add("Why is this gun so sticky?"); + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.R556_NORMAL); + config.config.add(BulletConfigSyncingUtil.R556_GOLD); + config.config.add(BulletConfigSyncingUtil.R556_TRACER); + config.config.add(BulletConfigSyncingUtil.R556_PHOSPHORUS); + config.config.add(BulletConfigSyncingUtil.R556_AP); + config.config.add(BulletConfigSyncingUtil.R556_DU); + config.config.add(BulletConfigSyncingUtil.R556_STAR); + config.config.add(BulletConfigSyncingUtil.R556_K); + + return config; + } + + public static GunConfiguration getSPIWConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 3; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.hasReloadAnim = false; + config.hasFiringAnim = false; + config.hasSpinup = false; + config.hasSpindown = false; + config.hasSights = true; + config.reloadDuration = 25; + config.firingDuration = 0; + config.ammoCap = 20; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_BOX; + config.durability = 7000; + config.reloadSound = GunConfiguration.RSOUND_MAG; + config.firingSound = "hbm:weapon.hksShoot"; + config.reloadSoundEnd = false; + + config.name = "H&R SPIW"; + config.manufacturer = "Harrington & Richardson"; + + config.comment.add("Launch some flechettes in the breeze"); + config.comment.add("Find his arms nailed to the trees"); + config.comment.add("Napalm sticks to kids"); + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE); + config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_INCENDIARY); + config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_PHOSPHORUS); + config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_DU); + config.config.add(BulletConfigSyncingUtil.R556_K); + + return config; + } + + public static GunConfiguration getGLauncherConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 60; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.hasReloadAnim = false; + config.hasFiringAnim = false; + config.hasSpinup = false; + config.hasSpindown = false; + config.hasSights = true; + config.reloadDuration = 40; + config.firingDuration = 0; + config.ammoCap = 0; + config.reloadType = GunConfiguration.RELOAD_NONE; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CIRCUMFLEX; + config.firingSound = "hbm:weapon.glauncher"; + config.reloadSound = GunConfiguration.RSOUND_GRENADE; + config.reloadSoundEnd = false; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); + config.config.add(BulletConfigSyncingUtil.GRENADE_HE); + config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); + config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); + config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); + config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); + config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); + config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); + config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); + config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); + config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + + return config; + } + + static float inaccuracy = 2.5F; + public static BulletConfiguration get556Config() { + + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = ModItems.ammo_556; + bullet.spread *= inaccuracy; + bullet.dmgMin = 2; + bullet.dmgMax = 4; + + return bullet; + } + + public static BulletConfiguration get556GoldConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_566_gold; + bullet.spread = 0.0F; + + return bullet; + } + + public static BulletConfiguration get556PhosphorusConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_phosphorus; + bullet.wear = 15; + bullet.incendiary = 5; + bullet.doesPenetrate = false; + + PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); + eff.getCurativeItems().clear(); + bullet.effects = new ArrayList(); + bullet.effects.add(new PotionEffect(eff)); + + bullet.bImpact = new IBulletImpactBehavior() { + + @Override + public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); + } + }; + + return bullet; + } + + public static BulletConfiguration get556APConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_ap; + bullet.dmgMin = 4; + bullet.dmgMax = 6; + bullet.wear = 15; + bullet.leadChance = 10; + + return bullet; + } + + public static BulletConfiguration get556DUConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_du; + bullet.dmgMin = 8; + bullet.dmgMax = 10; + bullet.wear = 25; + bullet.leadChance = 50; + + return bullet; + } + + public static BulletConfiguration get556StarConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_star; + bullet.dmgMin = 15; + bullet.dmgMax = 20; + bullet.wear = 25; + bullet.leadChance = 100; + + return bullet; + } + + public static BulletConfiguration get556TracerConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_tracer; + bullet.vPFX = "reddust"; + + return bullet; + } + + public static BulletConfiguration get556FlechetteConfig() { + + BulletConfiguration bullet = get556Config(); + + bullet.ammo = ModItems.ammo_556_flechette; + bullet.dmgMin = 6; + bullet.dmgMax = 8; + bullet.HBRC = 2; + bullet.LBRC = 95; + bullet.wear = 15; + bullet.style = BulletConfiguration.STYLE_FLECHETTE; + bullet.doesPenetrate = false; + + return bullet; + } + + public static BulletConfiguration get556FlechetteIncendiaryConfig() { + + BulletConfiguration bullet = get556FlechetteConfig(); + + bullet.ammo = ModItems.ammo_556_flechette_incendiary; + bullet.incendiary = 5; + + return bullet; + } + + public static BulletConfiguration get556FlechettePhosphorusConfig() { + + BulletConfiguration bullet = get556FlechetteConfig(); + + bullet.ammo = ModItems.ammo_556_flechette_phosphorus; + bullet.incendiary = 5; + + PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); + eff.getCurativeItems().clear(); + bullet.effects = new ArrayList(); + bullet.effects.add(new PotionEffect(eff)); + + bullet.bImpact = new IBulletImpactBehavior() { + + @Override + public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); + } + }; + + return bullet; + } + + public static BulletConfiguration get556FlechetteDUConfig() { + + BulletConfiguration bullet = get556FlechetteConfig(); + + bullet.ammo = ModItems.ammo_556_flechette_du; + bullet.dmgMin = 12; + bullet.dmgMax = 16; + bullet.wear = 25; + bullet.leadChance = 50; + bullet.doesPenetrate = true; + + return bullet; + } + + public static BulletConfiguration get556KConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = ModItems.ammo_556_k; + bullet.dmgMin = 0; + bullet.dmgMax = 0; + bullet.maxAge = 0; + + return bullet; + } +} diff --git a/com/hbm/handler/guncfg/GunGaussFactory.java b/com/hbm/handler/guncfg/GunGaussFactory.java index 1a11dd8b9..d71a120e2 100644 --- a/com/hbm/handler/guncfg/GunGaussFactory.java +++ b/com/hbm/handler/guncfg/GunGaussFactory.java @@ -47,11 +47,10 @@ public class GunGaussFactory { config.rateOfFire = 10; config.roundsPerCycle = 1; config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; + config.reloadDuration = 1; config.firingDuration = 0; - config.ammoCap = 30; - config.reloadType = GunConfiguration.RELOAD_FULL; + config.ammoCap = 0; + config.reloadType = GunConfiguration.RELOAD_NONE; config.allowsInfinity = true; config.crosshair = Crosshair.L_ARROWS; diff --git a/com/hbm/handler/guncfg/GunGrenadeFactory.java b/com/hbm/handler/guncfg/GunGrenadeFactory.java index 77c7698f3..b1b1a3884 100644 --- a/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -46,7 +46,9 @@ public class GunGrenadeFactory { config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); - config.durability = 140; + config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); + config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + config.durability = 300; return config; } @@ -166,6 +168,7 @@ public class GunGrenadeFactory { bullet.ammo = ModItems.ammo_grenade_finned; bullet.gravity = 0.02; bullet.explosive = 1.5F; + bullet.trail = 5; return bullet; } @@ -181,4 +184,34 @@ public class GunGrenadeFactory { return bullet; } + + public static BulletConfiguration getGrenadeTracerConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); + + bullet.ammo = ModItems.ammo_grenade_tracer; + bullet.velocity = 2.0F; + bullet.wear = 10; + bullet.explosive = 0F; + bullet.trail = 5; + bullet.vPFX = "bluedust"; + + return bullet; + } + + public static BulletConfiguration getGrenadeKampfConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_grenade_kampf; + bullet.spread = 0.0F; + bullet.gravity = 0.0D; + bullet.wear = 15; + bullet.explosive = 3.5F; + bullet.style = BulletConfiguration.STYLE_GRENADE; + bullet.trail = 4; + bullet.vPFX = "smoke"; + + return bullet; + } } diff --git a/com/hbm/handler/guncfg/GunOSIPRFactory.java b/com/hbm/handler/guncfg/GunOSIPRFactory.java index 562314354..9c712f190 100644 --- a/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ b/com/hbm/handler/guncfg/GunOSIPRFactory.java @@ -56,11 +56,14 @@ public class GunOSIPRFactory { config.hasSpindown = false; config.reloadDuration = 20; config.firingDuration = 0; - config.ammoCap = 1; + config.ammoCap = 0; config.reloadType = GunConfiguration.RELOAD_NONE; config.allowsInfinity = true; config.firingSound = "hbm:weapon.singFlyby"; + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED); + return config; } @@ -75,6 +78,14 @@ public class GunOSIPRFactory { bullet.dmgMax = 5; bullet.trail = 2; + return bullet; + } + public static BulletConfiguration getPulseChargedConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = ModItems.gun_osipr_ammo2; + return bullet; } } diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index 04bb0567d..162d01bff 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -670,9 +670,11 @@ public class MachineRecipes { if(input.getItem() == ModItems.assembly_uzi) return new ItemStack(ModItems.ammo_22lr); if(mODE(input, "ingotGold")) - return new ItemStack(ModItems.gun_mp_ammo); + return new ItemStack(ModItems.ammo_566_gold); if(input.getItem() == ModItems.assembly_lacunae) return new ItemStack(ModItems.ammo_5mm); + if(input.getItem() == ModItems.assembly_556) + return new ItemStack(ModItems.ammo_556); } if(stamp.getItem() == ModItems.stamp_50) { @@ -753,14 +755,12 @@ public class MachineRecipes { recipes.put(new Object[] { i_stamps_357, new ItemStack(ModItems.assembly_desh) }, getPressResultNN(i_stamps_357.get(0).getItem(), ModItems.assembly_desh)); recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.assembly_nopip) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.assembly_nopip)); - //recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.assembly_pip) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.assembly_pip)); - //recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.ammo_rocket) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.ammo_rocket)); recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_smg) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_smg)); recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_uzi) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_uzi)); recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_lacunae) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_lacunae)); recipes.put(new Object[] { i_stamps_9, new ItemStack(Items.gold_ingot) }, getPressResultNN(i_stamps_9.get(0).getItem(), Items.gold_ingot)); - //recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.ammo_rocket) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.ammo_rocket)); + recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_556) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_556)); recipes.put(new Object[] { i_stamps_50, new ItemStack(ModItems.assembly_actionexpress) }, getPressResultNN(i_stamps_50.get(0).getItem(), ModItems.assembly_actionexpress)); recipes.put(new Object[] { i_stamps_50, new ItemStack(ModItems.assembly_calamity) }, getPressResultNN(i_stamps_50.get(0).getItem(), ModItems.assembly_calamity)); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index e524c405f..b2ff79ece 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -12,6 +12,7 @@ import com.hbm.handler.guncfg.Gun44MagnumFactory; import com.hbm.handler.guncfg.Gun4GaugeFactory; import com.hbm.handler.guncfg.Gun50AEFactory; import com.hbm.handler.guncfg.Gun50BMGFactory; +import com.hbm.handler.guncfg.Gun556mmFactory; import com.hbm.handler.guncfg.Gun5mmFactory; import com.hbm.handler.guncfg.Gun9mmFactory; import com.hbm.handler.guncfg.GunEnergyFactory; @@ -375,6 +376,7 @@ public class ModItems { //public static Item assembly_pip; public static Item assembly_nopip; public static Item assembly_smg; + public static Item assembly_556; public static Item assembly_uzi; public static Item assembly_actionexpress; public static Item assembly_calamity; @@ -1105,6 +1107,18 @@ public class ModItems { public static Item ammo_9mm_ap; public static Item ammo_9mm_du; public static Item ammo_9mm_rocket; + public static Item ammo_556; + public static Item ammo_566_gold; + public static Item ammo_556_phosphorus; + public static Item ammo_556_ap; + public static Item ammo_556_du; + public static Item ammo_556_star; + public static Item ammo_556_tracer; + public static Item ammo_556_flechette; + public static Item ammo_556_flechette_incendiary; + public static Item ammo_556_flechette_phosphorus; + public static Item ammo_556_flechette_du; + public static Item ammo_556_k; public static Item ammo_22lr; public static Item ammo_22lr_ap; public static Item ammo_50ae; @@ -1115,6 +1129,7 @@ public class ModItems { public static Item ammo_50bmg_incendiary; public static Item ammo_50bmg_phosphorus; public static Item ammo_50bmg_explosive; + public static Item ammo_50bmg_ap; public static Item ammo_50bmg_du; public static Item ammo_50bmg_star; public static Item ammo_folly; @@ -1140,6 +1155,8 @@ public class ModItems { public static Item ammo_grenade_finned; public static Item ammo_grenade_sleek; public static Item ammo_grenade_nuclear; + public static Item ammo_grenade_tracer; + public static Item ammo_grenade_kampf; public static Item ammo_fuel; public static Item ammo_fuel_napalm; public static Item ammo_fuel_phosphorus; @@ -1178,6 +1195,7 @@ public class ModItems { public static Item gun_revolver_red; public static Item gun_revolver_nopip_ammo; public static Item gun_deagle; + public static Item gun_flechette; public static Item gun_calamity; public static Item gun_calamity_dual; public static Item gun_calamity_ammo; @@ -1226,7 +1244,6 @@ public class ModItems { public static Item gun_cryolator; public static Item gun_cryolator_ammo; public static Item gun_mp; - public static Item gun_mp_ammo; public static Item gun_brimstone; public static Item gun_zomg; public static Item gun_super_shotgun; @@ -2255,6 +2272,7 @@ public class ModItems { //assembly_pip = new Item().setUnlocalizedName("assembly_pip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_pip"); assembly_nopip = new Item().setUnlocalizedName("assembly_nopip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nopip"); assembly_smg = new Item().setUnlocalizedName("assembly_smg").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_smg"); + assembly_556 = new Item().setUnlocalizedName("assembly_556").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_556"); assembly_uzi = new Item().setUnlocalizedName("assembly_uzi").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_uzi"); assembly_actionexpress = new Item().setUnlocalizedName("assembly_actionexpress").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_actionexpress"); assembly_calamity = new Item().setUnlocalizedName("assembly_calamity").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_calamity"); @@ -2843,6 +2861,17 @@ public class ModItems { ammo_9mm_ap = new ItemAmmo().setUnlocalizedName("ammo_9mm_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_ap"); ammo_9mm_du = new ItemAmmo().setUnlocalizedName("ammo_9mm_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_du"); ammo_9mm_rocket = new ItemAmmo().setUnlocalizedName("ammo_9mm_rocket").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_rocket"); + ammo_556 = new ItemAmmo().setUnlocalizedName("ammo_556").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556"); + ammo_556_phosphorus = new ItemAmmo().setUnlocalizedName("ammo_556_phosphorus").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_phosphorus"); + ammo_556_ap = new ItemAmmo().setUnlocalizedName("ammo_556_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_ap"); + ammo_556_du = new ItemAmmo().setUnlocalizedName("ammo_556_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_du"); + ammo_556_star = new ItemAmmo().setUnlocalizedName("ammo_556_star").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_star"); + ammo_556_tracer = new ItemAmmo().setUnlocalizedName("ammo_556_tracer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_tracer"); + ammo_556_flechette = new ItemAmmo().setUnlocalizedName("ammo_556_flechette").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_flechette"); + ammo_556_flechette_incendiary = new ItemAmmo().setUnlocalizedName("ammo_556_flechette_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_flechette_incendiary"); + ammo_556_flechette_phosphorus = new ItemAmmo().setUnlocalizedName("ammo_556_flechette_phosphorus").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_flechette_phosphorus"); + ammo_556_flechette_du = new ItemAmmo().setUnlocalizedName("ammo_556_flechette_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_flechette_du"); + ammo_556_k = new ItemAmmo().setUnlocalizedName("ammo_556_k").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_556_k"); ammo_50ae = new ItemAmmo().setUnlocalizedName("ammo_50ae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae"); ammo_50ae_ap = new ItemAmmo().setUnlocalizedName("ammo_50ae_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae_ap"); ammo_50ae_du = new ItemAmmo().setUnlocalizedName("ammo_50ae_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae_du"); @@ -2851,6 +2880,7 @@ public class ModItems { ammo_50bmg_incendiary = new ItemAmmo().setUnlocalizedName("ammo_50bmg_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_incendiary"); ammo_50bmg_phosphorus = new ItemAmmo().setUnlocalizedName("ammo_50bmg_phosphorus").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_phosphorus"); ammo_50bmg_explosive = new ItemAmmo().setUnlocalizedName("ammo_50bmg_explosive").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_explosive"); + ammo_50bmg_ap = new ItemAmmo().setUnlocalizedName("ammo_50bmg_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_ap"); ammo_50bmg_du = new ItemAmmo().setUnlocalizedName("ammo_50bmg_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_du"); ammo_50bmg_star = new ItemAmmo().setUnlocalizedName("ammo_50bmg_star").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50bmg_star"); ammo_357_desh = new ItemAmmo().setUnlocalizedName("ammo_357_desh").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_357_desh"); @@ -2888,6 +2918,8 @@ public class ModItems { ammo_grenade_finned = new ItemAmmo().setUnlocalizedName("ammo_grenade_finned").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_finned"); ammo_grenade_sleek = new ItemAmmo().setUnlocalizedName("ammo_grenade_sleek").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_sleek"); ammo_grenade_nuclear = new ItemAmmo().setUnlocalizedName("ammo_grenade_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_nuclear"); + ammo_grenade_tracer = new ItemAmmo().setUnlocalizedName("ammo_grenade_tracer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_tracer"); + ammo_grenade_kampf = new ItemAmmo().setUnlocalizedName("ammo_grenade_kampf").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_grenade_kampf"); ammo_fuel = new ItemAmmo().setUnlocalizedName("ammo_fuel").setCreativeTab(MainRegistry.weaponTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ammo_fuel"); ammo_fuel_napalm = new ItemAmmo().setUnlocalizedName("ammo_fuel_napalm").setCreativeTab(MainRegistry.weaponTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ammo_fuel_napalm"); ammo_fuel_phosphorus = new ItemAmmo().setUnlocalizedName("ammo_fuel_phosphorus").setCreativeTab(MainRegistry.weaponTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ammo_fuel_phosphorus"); @@ -2926,6 +2958,7 @@ public class ModItems { gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); + gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); gun_calamity = new ItemGunBase(Gun50BMGFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); gun_calamity_dual = new ItemGunBase(Gun50BMGFactory.getSaddleConfig()).setUnlocalizedName("gun_calamity_dual").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity_dual"); @@ -2973,8 +3006,8 @@ public class ModItems { gun_flamer = new ItemGunBase(GunEnergyFactory.getFlamerConfig()).setUnlocalizedName("gun_flamer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flamer"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); - gun_mp_ammo = new ItemCustomLore().setUnlocalizedName("gun_mp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); - gun_mp = new GunMP().setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); + ammo_566_gold = new ItemCustomLore().setUnlocalizedName("gun_mp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); + gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); gun_brimstone = new GunBrimstone().setUnlocalizedName("gun_brimstone").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_brimstone"); gun_zomg = new GunZOMG().setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); gun_revolver_inverted = new GunSuicide().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); @@ -4145,6 +4178,7 @@ public class ModItems { //GameRegistry.registerItem(assembly_pip, assembly_pip.getUnlocalizedName()); GameRegistry.registerItem(assembly_nopip, assembly_nopip.getUnlocalizedName()); GameRegistry.registerItem(assembly_smg, assembly_smg.getUnlocalizedName()); + GameRegistry.registerItem(assembly_556, assembly_556.getUnlocalizedName()); GameRegistry.registerItem(assembly_uzi, assembly_uzi.getUnlocalizedName()); GameRegistry.registerItem(assembly_lacunae, assembly_lacunae.getUnlocalizedName()); GameRegistry.registerItem(assembly_actionexpress, assembly_actionexpress.getUnlocalizedName()); @@ -4812,6 +4846,7 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_silver, gun_revolver_silver.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_red, gun_revolver_red.getUnlocalizedName()); GameRegistry.registerItem(gun_deagle, gun_deagle.getUnlocalizedName()); + GameRegistry.registerItem(gun_flechette, gun_flechette.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity_dual, gun_calamity_dual.getUnlocalizedName()); GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); @@ -4895,7 +4930,6 @@ public class ModItems { GameRegistry.registerItem(gun_osipr_ammo2, gun_osipr_ammo2.getUnlocalizedName()); GameRegistry.registerItem(gun_immolator_ammo, gun_immolator_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_cryolator_ammo, gun_cryolator_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_mp_ammo, gun_mp_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_emp_ammo, gun_emp_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_jack_ammo, gun_jack_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_spark_ammo, gun_spark_ammo.getUnlocalizedName()); @@ -4937,6 +4971,18 @@ public class ModItems { GameRegistry.registerItem(ammo_9mm_ap, ammo_9mm_ap.getUnlocalizedName()); GameRegistry.registerItem(ammo_9mm_du, ammo_9mm_du.getUnlocalizedName()); GameRegistry.registerItem(ammo_9mm_rocket, ammo_9mm_rocket.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556, ammo_556.getUnlocalizedName()); + GameRegistry.registerItem(ammo_566_gold, ammo_566_gold.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_phosphorus, ammo_556_phosphorus.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_ap, ammo_556_ap.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_du, ammo_556_du.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_star, ammo_556_star.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_tracer, ammo_556_tracer.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_flechette, ammo_556_flechette.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_flechette_incendiary, ammo_556_flechette_incendiary.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_flechette_phosphorus, ammo_556_flechette_phosphorus.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_flechette_du, ammo_556_flechette_du.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556_k, ammo_556_k.getUnlocalizedName()); GameRegistry.registerItem(ammo_22lr, ammo_22lr.getUnlocalizedName()); GameRegistry.registerItem(ammo_22lr_ap, ammo_22lr_ap.getUnlocalizedName()); GameRegistry.registerItem(ammo_50ae, ammo_50ae.getUnlocalizedName()); @@ -4947,6 +4993,7 @@ public class ModItems { GameRegistry.registerItem(ammo_50bmg_incendiary, ammo_50bmg_incendiary.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_phosphorus, ammo_50bmg_phosphorus.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_explosive, ammo_50bmg_explosive.getUnlocalizedName()); + GameRegistry.registerItem(ammo_50bmg_ap, ammo_50bmg_ap.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_du, ammo_50bmg_du.getUnlocalizedName()); GameRegistry.registerItem(ammo_50bmg_star, ammo_50bmg_star.getUnlocalizedName()); GameRegistry.registerItem(ammo_fuel, ammo_fuel.getUnlocalizedName()); @@ -4973,6 +5020,8 @@ public class ModItems { GameRegistry.registerItem(ammo_grenade_finned, ammo_grenade_finned.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_sleek, ammo_grenade_sleek.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_nuclear, ammo_grenade_nuclear.getUnlocalizedName()); + GameRegistry.registerItem(ammo_grenade_tracer, ammo_grenade_tracer.getUnlocalizedName()); + GameRegistry.registerItem(ammo_grenade_kampf, ammo_grenade_kampf.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index ad5fd286a..d2f298fd1 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -771,7 +771,7 @@ public class ItemCustomLore extends Item { } if(this == ModItems.gun_revolver_cursed_ammo || this == ModItems.plate_paa || - this == ModItems.gun_mp_ammo || this == ModItems.powder_power || + this == ModItems.ammo_566_gold || this == ModItems.powder_power || this == ModItems.ingot_australium || this == ModItems.ingot_weidanium || this == ModItems.ingot_reiium || this == ModItems.ingot_unobtainium || this == ModItems.ingot_daffergon || this == ModItems.ingot_verticium || diff --git a/com/hbm/items/weapon/GunBrimstone.java b/com/hbm/items/weapon/GunBrimstone.java index 0a0df42c4..861143919 100644 --- a/com/hbm/items/weapon/GunBrimstone.java +++ b/com/hbm/items/weapon/GunBrimstone.java @@ -52,7 +52,7 @@ public class GunBrimstone extends Item { boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_mp_ammo)) && count % 1 == 0) { + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_566_gold)) && count % 1 == 0) { EntityLaser laser = new EntityLaser(world, player); diff --git a/com/hbm/items/weapon/GunMP.java b/com/hbm/items/weapon/GunMP.java index d3dab92c3..84834d36a 100644 --- a/com/hbm/items/weapon/GunMP.java +++ b/com/hbm/items/weapon/GunMP.java @@ -52,7 +52,7 @@ public class GunMP extends Item { boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_mp_ammo)) && count % 3 == 0) { + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_566_gold)) && count % 3 == 0) { EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 100, 150, false, false); entityarrow.setDamage(100 + rand.nextInt(50)); @@ -63,7 +63,7 @@ public class GunMP extends Item { if (flag) { entityarrow.canBePickedUp = 2; } else { - player.inventory.consumeInventoryItem(ModItems.gun_mp_ammo); + player.inventory.consumeInventoryItem(ModItems.ammo_566_gold); } if (!world.isRemote) { diff --git a/com/hbm/items/weapon/ItemAmmo.java b/com/hbm/items/weapon/ItemAmmo.java index 0a7fe695c..e72b59a61 100644 --- a/com/hbm/items/weapon/ItemAmmo.java +++ b/com/hbm/items/weapon/ItemAmmo.java @@ -197,6 +197,10 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.BLUE + "+ Increased damage"); list.add(EnumChatFormatting.RED + "- Highly increased wear"); } + if(this == ModItems.ammo_50bmg_ap) { + list.add(EnumChatFormatting.BLUE + "+ Increased damage"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + } if(this == ModItems.ammo_50bmg_du) { list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); @@ -309,6 +313,12 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.BLUE + "+ Increased range"); list.add(EnumChatFormatting.RED + "- Highly increased wear"); } + if(this == ModItems.ammo_grenade_kampf) { + list.add(EnumChatFormatting.BLUE + "+ Rocket Propelled"); + list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); + list.add(EnumChatFormatting.BLUE + "+ Increased accuracy"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + } //FUEL if(this == ModItems.ammo_fuel_napalm) { @@ -332,6 +342,62 @@ public class ItemAmmo extends Item { list.add(EnumChatFormatting.RED + "- Not incendiary"); } + //5.56mm + if(this == ModItems.ammo_556_phosphorus) { + list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); + list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + list.add(EnumChatFormatting.RED + "- Not penetrating"); + } + if(this == ModItems.ammo_556_ap) { + list.add(EnumChatFormatting.BLUE + "+ Increased damage"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + } + if(this == ModItems.ammo_556_du) { + list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); + list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); + list.add(EnumChatFormatting.RED + "- Highly increased wear"); + } + if(this == ModItems.ammo_556_star) { + list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); + list.add(EnumChatFormatting.YELLOW + "* Starmetal"); + list.add(EnumChatFormatting.RED + "- Highly increased wear"); + } + if(this == ModItems.ammo_556_flechette) { + list.add(EnumChatFormatting.BLUE + "+ Increased damage"); + list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + list.add(EnumChatFormatting.RED + "- Not penetrating"); + } + if(this == ModItems.ammo_556_flechette_incendiary) { + list.add(EnumChatFormatting.BLUE + "+ Increased damage"); + list.add(EnumChatFormatting.BLUE + "+ Incendiary"); + list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + list.add(EnumChatFormatting.RED + "- Not penetrating"); + } + if(this == ModItems.ammo_556_flechette_phosphorus) { + list.add(EnumChatFormatting.BLUE + "+ Increased damage"); + list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); + list.add(EnumChatFormatting.YELLOW + "* Twice the warcrime in a single round!"); + list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); + list.add(EnumChatFormatting.RED + "- Increased wear"); + list.add(EnumChatFormatting.RED + "- Not penetrating"); + } + if(this == ModItems.ammo_556_flechette_du) { + list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); + list.add(EnumChatFormatting.BLUE + "+ Penetrating"); + list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); + list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); + list.add(EnumChatFormatting.RED + "- Highly increased wear"); + } + if(this == ModItems.ammo_556_tracer) { + list.add(EnumChatFormatting.YELLOW + "* Tracer"); + } + if(this == ModItems.ammo_556_k) { + list.add(EnumChatFormatting.YELLOW + "* It's a blank"); + } + //FOLLY if(this == ModItems.ammo_folly) { list.add(EnumChatFormatting.BLUE + "+ Focused starmetal reaction blast"); diff --git a/com/hbm/items/weapon/ItemClip.java b/com/hbm/items/weapon/ItemClip.java index 4c0b49c72..9d259c54a 100644 --- a/com/hbm/items/weapon/ItemClip.java +++ b/com/hbm/items/weapon/ItemClip.java @@ -108,7 +108,7 @@ public class ItemClip extends Item { if(this == ModItems.clip_mp) { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mp_ammo, 30))) + if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_566_gold, 30))) { //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp_ammo, 30), false); } @@ -366,7 +366,7 @@ public class ItemClip extends Item { if(player.inventory.hasItem(ModItems.gun_cryolator)) player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_cryolator_ammo, 40)); if(player.inventory.hasItem(ModItems.gun_mp)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mp_ammo, 34)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_566_gold, 34)); if(player.inventory.hasItem(ModItems.gun_zomg)) player.inventory.addItemStackToInventory(new ItemStack(ModItems.nugget_euphemium, 1)); if(player.inventory.hasItem(ModItems.gun_emp)) diff --git a/com/hbm/items/weapon/ItemGunBase.java b/com/hbm/items/weapon/ItemGunBase.java index 6f6816a21..ff69c7b6f 100644 --- a/com/hbm/items/weapon/ItemGunBase.java +++ b/com/hbm/items/weapon/ItemGunBase.java @@ -53,9 +53,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon { @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - //if(!isCurrentItem) - // return; - if(entity instanceof EntityPlayer) { isCurrentItem = ((EntityPlayer)entity).getHeldItem() == stack; @@ -81,35 +78,18 @@ public class ItemGunBase extends Item implements IHoldableWeapon { if(left && right) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 0)); PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 1)); - //setIsMouseDown(stack, false); - //setIsAltDown(stack, false); m1 = false; m2 = false; } - /// HANDLED IN MODEVENTHANDLERCLIENT.JAVA /// - /*if(!left && !right) { - if(clickLeft) { - PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 0)); - //setIsMouseDown(stack, true); - m1 = true; - } else if(clickRight) { - PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 1)); - //setIsAltDown(stack, true); - m2 = true; - } - }*/ - if(left && !clickLeft) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 0)); - //setIsMouseDown(stack, false); m1 = false; endActionClient(stack, world, entity, true); } if(right && !clickRight) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 1)); - //setIsAltDown(stack, false); m2 = false; endActionClient(stack, world, entity, false); } @@ -122,18 +102,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon { resetReloadCycle(stack); } } - } else { - - /*if(left) { - PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 0)); - m1 = false; - endActionClient(stack, world, entity, true); - } - if(right) { - PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 1)); - m2 = false; - endActionClient(stack, world, entity, false); - }*/ } } @@ -154,7 +122,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon { fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); - useUpAmmo(player, stack); + useUpAmmo(player, stack, true); } if(getIsReloading(stack) && isCurrentItem) { @@ -168,17 +136,21 @@ public class ItemGunBase extends Item implements IHoldableWeapon { if(main && getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) { if(mainConfig.reloadType == mainConfig.RELOAD_NONE) { - return getBeltSize(player, getBeltType(player, stack)) > 0; + return getBeltSize(player, getBeltType(player, stack, main)) > 0; } else { return getMag(stack) > 0; } } - if(!main && getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) { - - //no extra conditions, alt fire has to be handled by every weapon individually in the altFire() method - return true; + if(!main && altConfig != null && getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) { + + if(altConfig.reloadType == mainConfig.RELOAD_NONE) { + return getBeltSize(player, getBeltType(player, stack, main)) > 0; + + } else { + return getMag(stack) > 0; + } } return false; @@ -190,7 +162,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon { BulletConfiguration config = null; if(mainConfig.reloadType == mainConfig.RELOAD_NONE) { - config = getBeltCfg(player, stack); + config = getBeltCfg(player, stack, true); } else { config = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); } @@ -212,9 +184,26 @@ public class ItemGunBase extends Item implements IHoldableWeapon { //unlike fire(), being called does not automatically imply success, some things may still have to be handled before spawning the projectile protected void altFire(ItemStack stack, World world, EntityPlayer player) { + + if(altConfig == null) + return; - if(!altConfig.firingSound.isEmpty()) - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); + BulletConfiguration config = getBeltCfg(player, stack, false); + + int bullets = config.bulletsMin; + + for(int k = 0; k < altConfig.roundsPerCycle; k++) { + if(config.bulletsMax > config.bulletsMin) + bullets += world.rand.nextInt(config.bulletsMax - config.bulletsMin); + + for(int i = 0; i < bullets; i++) { + spawnProjectile(world, player, stack, BulletConfigSyncingUtil.getKey(config)); + } + + setItemWear(stack, getItemWear(stack) + config.wear); + } + + world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); } //spawns the actual projectile, can be overridden to change projectile entity @@ -231,11 +220,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon { fire(stack, world, player); setDelay(stack, mainConfig.rateOfFire); //setMag(stack, getMag(stack) - 1); - useUpAmmo(player, stack); + useUpAmmo(player, stack, main); } - if(!main && altConfig != null) + if(!main && altConfig != null && tryShoot(stack, world, player, main)) { altFire(stack, world, player); + setDelay(stack, altConfig.rateOfFire); + useUpAmmo(player, stack, main); + } } //called on click (client side, called by update cylce) @@ -474,6 +466,12 @@ public class ItemGunBase extends Item implements IHoldableWeapon { list.add("Ammo Type: " + I18n.format(ammo.getUnlocalizedName() + ".name")); + if(altConfig != null && altConfig.ammoCap == 0) { + Item ammo2 = BulletConfigSyncingUtil.pullConfig(altConfig.config.get(0)).ammo; + if(ammo != ammo2) + list.add("Secondary Ammo: " + I18n.format(ammo2.getUnlocalizedName() + ".name")); + } + int dura = mainConfig.durability - getItemWear(stack); if(dura < 0) @@ -503,12 +501,13 @@ public class ItemGunBase extends Item implements IHoldableWeapon { } //returns ammo item of belt-weapons - public static Item getBeltType(EntityPlayer player, ItemStack stack) { + public static Item getBeltType(EntityPlayer player, ItemStack stack, boolean main) { ItemGunBase gun = (ItemGunBase)stack.getItem(); - Item ammo = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(0)).ammo; + GunConfiguration guncfg = main ? gun.mainConfig : (gun.altConfig != null ? gun.altConfig : gun.mainConfig); + Item ammo = BulletConfigSyncingUtil.pullConfig(guncfg.config.get(0)).ammo; - for(Integer config : gun.mainConfig.config) { + for(Integer config : guncfg.config) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); @@ -522,12 +521,13 @@ public class ItemGunBase extends Item implements IHoldableWeapon { } //returns BCFG of belt-weapons - public static BulletConfiguration getBeltCfg(EntityPlayer player, ItemStack stack) { + public static BulletConfiguration getBeltCfg(EntityPlayer player, ItemStack stack, boolean main) { ItemGunBase gun = (ItemGunBase)stack.getItem(); - getBeltType(player, stack); + GunConfiguration guncfg = main ? gun.mainConfig : (gun.altConfig != null ? gun.altConfig : gun.mainConfig); + getBeltType(player, stack, main); - for(Integer config : gun.mainConfig.config) { + for(Integer config : guncfg.config) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); @@ -536,7 +536,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon { } } - return BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(0)); + return BulletConfigSyncingUtil.pullConfig(guncfg.config.get(0)); } //returns ammo capacity of belt-weapons for current ammo @@ -553,16 +553,26 @@ public class ItemGunBase extends Item implements IHoldableWeapon { } //reduces ammo count for mag and belt-based weapons, should be called AFTER firing - public void useUpAmmo(EntityPlayer player, ItemStack stack) { + public void useUpAmmo(EntityPlayer player, ItemStack stack, boolean main) { - if(mainConfig.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0) + if(!main && altConfig == null) + return; + + GunConfiguration config = mainConfig; + + if(!main) + config = altConfig; + + if(config.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0) return; - for(int k = 0; k < mainConfig.roundsPerCycle; k++) { - if(mainConfig.reloadType != mainConfig.RELOAD_NONE) + for(int k = 0; k < config.roundsPerCycle; k++) { + if(config.reloadType != mainConfig.RELOAD_NONE) { setMag(stack, getMag(stack) - 1); - else - player.inventory.consumeInventoryItem(getBeltType(player, stack)); + } else { + player.inventory.consumeInventoryItem(getBeltType(player, stack, main)); + player.inventoryContainer.detectAndSendChanges(); + } } } diff --git a/com/hbm/items/weapon/ItemGunGauss.java b/com/hbm/items/weapon/ItemGunGauss.java index 28e3af747..08b236d01 100644 --- a/com/hbm/items/weapon/ItemGunGauss.java +++ b/com/hbm/items/weapon/ItemGunGauss.java @@ -80,7 +80,7 @@ public class ItemGunGauss extends ItemGunBase { if(c > 0) { setCharge(stack, c + 1); - if(c % 10 == 1 && c < 140) { + if(c % 10 == 1 && c < 140 && c > 2) { if(player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); diff --git a/com/hbm/items/weapon/ItemGunOSIPR.java b/com/hbm/items/weapon/ItemGunOSIPR.java index 64c37c23c..827fadd31 100644 --- a/com/hbm/items/weapon/ItemGunOSIPR.java +++ b/com/hbm/items/weapon/ItemGunOSIPR.java @@ -2,7 +2,6 @@ package com.hbm.items.weapon; import com.hbm.entity.projectile.EntityCombineBall; import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -16,16 +15,14 @@ public class ItemGunOSIPR extends ItemGunBase { @Override protected void altFire(ItemStack stack, World world, EntityPlayer player) { - if(player.inventory.hasItem(ModItems.gun_osipr_ammo2)) { - setCharge(stack, 1); - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } + setCharge(stack, 1); + world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); } protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { super.updateServer(stack, world, player, slot, isCurrentItem); - if(!isCurrentItem || !player.inventory.hasItem(ModItems.gun_osipr_ammo2)) { + if(!isCurrentItem) { setCharge(stack, 0); return; } @@ -39,7 +36,6 @@ public class ItemGunOSIPR extends ItemGunBase { world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F); setCharge(stack, 0); setDelay(stack, altConfig.rateOfFire); - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); } else if(i > 0) setCharge(stack, i + 1); diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 295c719a5..a986c72e8 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3519)"; + public static final String VERSION = "1.0.27 BETA (3522)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 0c3619f6a..212c5dbd7 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -21,10 +21,10 @@ import java.util.Map; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; import com.hbm.entity.item.EntityMinecartTest; +import com.hbm.entity.item.EntityMovingItem; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; import com.hbm.entity.mob.*; @@ -60,6 +60,7 @@ import com.hbm.render.entity.effect.SpillRenderer; import com.hbm.render.entity.effect.TSmokeRenderer; import com.hbm.render.entity.item.RenderBomber; import com.hbm.render.entity.item.RenderMinecartTest; +import com.hbm.render.entity.item.RenderMovingItem; import com.hbm.render.entity.mob.RenderCyberCrab; import com.hbm.render.entity.mob.RenderHunterChopper; import com.hbm.render.entity.mob.RenderNuclearCreeper; @@ -139,6 +140,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerBlockHandler(new RenderBarbedWire()); RenderingRegistry.registerBlockHandler(new RenderAntennaTop()); RenderingRegistry.registerBlockHandler(new RenderConserve()); + RenderingRegistry.registerBlockHandler(new RenderConveyor()); MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); @@ -227,6 +229,7 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponObj()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponObj()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderWeaponObj()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); @@ -405,6 +408,8 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); + RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukePrototype.class, new RenderNukePrototype()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPad.class, new RenderLaunchPadTier1()); @@ -799,6 +804,14 @@ public class ClientProxy extends ServerProxy if("cloud".equals(data.getString("mode"))) { fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); } + + if("reddust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, (float)mX, (float)mY, (float)mZ); + } + + if("bluedust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); + } if(fx != null) Minecraft.getMinecraft().effectRenderer.addEffect(fx); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 15e538cf3..69801fc02 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -696,6 +696,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bf, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_paa, 'L', "plateDenseLead", 'W', ModItems.wire_advanced_alloy, 'F', ModItems.gun_mirv })); GameRegistry.addRecipe(new ItemStack(ModItems.gun_bf_ammo, 1), new Object[] { "AEA", "SHS", "AEA", 'H', ModItems.hull_small_steel, 'A', ModItems.cell_antimatter, 'S', ModItems.cell_anti_schrabidium, 'E', ModItems.powder_power }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', "plateSteel", 'I', "ingotSteel", 'W', "plankWood", 'M', ModItems.mechanism_rifle_2 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', "plateSteel", 'M', ModItems.mechanism_rifle_2, 'T', ModItems.hull_small_steel, 'I', "ingotSteel", 'S', ModItems.ingot_polymer, 'G', ModItems.mechanism_launcher_1 })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', "plateSteel", 'I', "ingotSteel", 'W', "plankWood", 'S', Items.stick, 'M', ModItems.mechanism_revolver_2 })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_ks23, 1), new Object[] { "PPM", "SWL", 'P', "plateSteel", 'M', ModItems.mechanism_rifle_1, 'S', Items.stick, 'W', ModItems.wire_tungsten, 'L', "logWood" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', "plateSteel", 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.mechanism_special })); @@ -753,44 +754,47 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ammo_20gauge_slug, 1), new Object[] { ModItems.gun_bolt_action_ammo }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', "nuggetLead" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_iron, 16), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_iron, 16), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_steel, 16), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_steel, 16), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 16), new Object[] { " I", "GC", " P", 'I', ModItems.ingot_u235, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 16), new Object[] { " I", "GC", " P", 'I', ModItems.ingot_pu239, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 16), new Object[] { " I", "GC", " P", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 16), new Object[] { " I", "GC", " P", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_gold, 16), new Object[] { " I", "GC", " P", 'I', "ingotGold", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_schrabidium, 16), new Object[] { " I ", "GCN", " P ", 'I', "ingotSchrabidium", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357, 'N', Items.nether_star })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nightmare, 16), new Object[] { " I", "GC", " P", 'I', "ingotTungsten", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_desh, 16), new Object[] { " I", "GC", " P", 'I', "ingotDesh", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_smg, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_smg, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_uzi, 24), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_uzi, 24), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lacunae, 24), new Object[] { " I", "GC", " P", 'I', "ingotCopper", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nopip, 16), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nopip, 16), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 })); - GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); - GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); - GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_4gauge_slug, 8), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_4gauge_slug, 8), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_iron, 24), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_iron, 24), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_steel, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_steel, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.ingot_u235, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.ingot_pu239, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lead, 24), new Object[] { " I", "GC", " P", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', "paneGlassColorless", 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_gold, 24), new Object[] { " I", "GC", " P", 'I', "ingotGold", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_schrabidium, 6), new Object[] { " I ", "GCN", " P ", 'I', "ingotSchrabidium", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357, 'N', Items.nether_star })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nightmare, 24), new Object[] { " I", "GC", " P", 'I', "ingotTungsten", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_desh, 24), new Object[] { " I", "GC", " P", 'I', "ingotDesh", 'G', ModItems.cordite, 'C', ModItems.casing_357, 'P', ModItems.primer_357 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_556, 32), new Object[] { " I", "GC", " P", 'I', "ingotSteel", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_k, 32), new Object[] { "G", "C", "P", 'G', Items.gunpowder, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_k, 32), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', "ingotIron", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_lacunae, 32), new Object[] { " I", "GC", " P", 'I', "ingotCopper", 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nopip, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_nopip, 24), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 })); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_4gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_4gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer })); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge_explosive, 4), new Object[] { " I ", "GCL", " P ", 'I', Blocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge_explosive, 4), new Object[] { " I ", "GCL", " P ", 'I', Blocks.tnt, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_slug, 8), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_slug, 8), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_explosive, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_explosive, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_flechette, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_flechette, 8), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); - GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 8), new Object[] { "I", "C", "P", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_calamity, 8), new Object[] { " I ", "GCG", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_actionexpress, 8), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', "ingotLead", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_explosive, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_explosive, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', "plateCopper" })); + GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 6), new Object[] { "I", "C", "P", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_calamity, 12), new Object[] { " I ", "GCG", " P ", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.assembly_actionexpress, 12), new Object[] { " I", "GC", " P", 'I', "ingotLead", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 })); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_incendiary, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModItems.powder_fire }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_shrapnel, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModBlocks.gravel_obsidian }); @@ -816,11 +820,21 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_incendiary, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50bmg, 'A', ModItems.powder_fire }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_phosphorus, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50bmg, 'A', ModItems.ingot_phosphorus }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_explosive, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50bmg, 'A', Blocks.tnt }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_ap, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50bmg, 'A', ModItems.ingot_dura_steel }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_du, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50bmg, 'A', ModItems.ingot_u238 }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50bmg_star, 4), new Object[] { " B ", "BAB", " B ", 'B', ModItems.ammo_50bmg_du, 'A', ModItems.ingot_starmetal }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50ae_ap, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50ae, 'A', ModItems.ingot_dura_steel }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50ae_du, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_50ae, 'A', ModItems.ingot_u238 }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_50ae_star, 4), new Object[] { " B ", "BAB", " B ", 'B', ModItems.ammo_50ae_du, 'A', ModItems.ingot_starmetal }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_phosphorus, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556, 'A', ModItems.ingot_phosphorus }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_ap, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556, 'A', ModItems.ingot_dura_steel }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_du, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556, 'A', ModItems.ingot_u238 }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_star, 4), new Object[] { " B ", "BAB", " B ", 'B', ModItems.ammo_556_du, 'A', ModItems.ingot_starmetal }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_tracer, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556, 'A', Items.redstone }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_flechette, 4), new Object[] { " B ", "BAB", " B ", 'B', ModItems.ammo_556, 'A', ModItems.pellet_flechette }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_flechette_incendiary, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556_flechette, 'A', ModItems.powder_fire }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_flechette_phosphorus, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556_flechette, 'A', ModItems.ingot_phosphorus }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_556_flechette_du, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_556_flechette, 'A', ModItems.ingot_u238 }); GameRegistry.addRecipe(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', ModItems.ingot_starmetal, 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.folly_bullet_nuclear, 1), new Object[] { " N ", "UTU", "UTU", 'N', ModItems.gun_fatman_ammo, 'U', "ingotIron", 'T', "blockTungsten" })); @@ -846,6 +860,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', Items.gunpowder, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', Items.gunpowder, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', "plateIron" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_grenade_tracer, 2), new Object[] { " T ", "GCI", " P ", 'T', "dustLapis", 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', "plateIron" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_grenade_tracer, 2), new Object[] { " T ", "GCI", " P ", 'T', "dustLapis", 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', "plateIron" })); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_he, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', Blocks.tnt }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_incendiary, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ModItems.powder_fire }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_phosphorus, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ModItems.ingot_phosphorus }); @@ -853,6 +869,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_concussion, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', Items.glowstone_dust }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_nuclear, 2), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade, 'I', ModItems.neutron_reflector, 'P', ModItems.nugget_pu239 }); GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_finned, 1), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade }); + GameRegistry.addRecipe(new ItemStack(ModItems.ammo_grenade_kampf, 2), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_fuel, 1), new Object[] { " P ", "BDB", " P ", 'P', "plateSteel", 'B', ModItems.bolt_tungsten, 'D', ModItems.canister_fuel })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_fuel_napalm, 1), new Object[] { " P ", "BDB", " P ", 'P', "plateSteel", 'B', ModItems.bolt_tungsten, 'D', ModItems.canister_napalm })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 0a9aafbb0..752beb5d2 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -37,11 +37,11 @@ import java.util.Random; import org.apache.logging.log4j.Logger; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.machine.*; import com.hbm.creativetabs.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; import com.hbm.entity.item.EntityMinecartTest; +import com.hbm.entity.item.EntityMovingItem; import com.hbm.entity.logic.*; import com.hbm.entity.missile.*; import com.hbm.entity.mob.*; @@ -326,6 +326,10 @@ public class MainRegistry public static boolean dropStar = true; public static boolean dropCrys = true; public static boolean dropDead = true; + + public static int recursionDepth = 500; + public static boolean recursiveStone = true; + public static boolean recursiveNetherrack = true; public static int taintID = 62; public static int radiationID = 63; @@ -703,6 +707,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityBuilding.class, "entity_falling_building", 143, this, 1000, 1, true); EntityRegistry.registerModEntity(EntitySoyuz.class, "entity_soyuz", 144, this, 1000, 1, true); EntityRegistry.registerModEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 145, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityMovingItem.class, "entity_c_item", 146, 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); @@ -1853,6 +1858,11 @@ public class MainRegistry dropStar = createConfigBool(config, CATEGORY_DROPS, "10.02_dropStar", "Whether rigged star blaster cells should explode when dropped", true); dropCrys = createConfigBool(config, CATEGORY_DROPS, "10.04_dropCrys", "Whether xen crystals should move blocks when dropped", true); dropDead = createConfigBool(config, CATEGORY_DROPS, "10.05_dropDead", "Whether dead man's explosives should explode when dropped", true); + + final String CATEGORY_TOOLS = "11_tools"; + recursionDepth = createConfigInt(config, CATEGORY_TOOLS, "11.00_recursionDepth", "Limits veinminer's recursive function. Usually not an issue, unless you're using bukkit which is especially sensitive for some reason.", 1000); + recursiveStone = createConfigBool(config, CATEGORY_TOOLS, "11.01_recursionDepth", "Determines whether veinminer can break stone", true); + recursiveNetherrack = createConfigBool(config, CATEGORY_TOOLS, "11.02_recursionDepth", "Determines whether veinminer can break netherrack", true); config.save(); diff --git a/com/hbm/main/ModEventHandler.java b/com/hbm/main/ModEventHandler.java index 33bdfdc3c..783ad7724 100644 --- a/com/hbm/main/ModEventHandler.java +++ b/com/hbm/main/ModEventHandler.java @@ -283,10 +283,13 @@ public class ModEventHandler if(eRad < 200 || entity instanceof EntityNuclearCreeper || entity instanceof EntityMooshroom || entity instanceof EntityZombie || entity instanceof EntitySkeleton) continue; + if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode) + continue; + if(eRad > 2500) entity.getEntityData().setFloat("hfr_radiation", 2500); - if(eRad >= 1000 && !(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode)) { + if(eRad >= 1000) { if(entity.attackEntityFrom(ModDamageSource.radiation, entity.getMaxHealth() * 100)) { entity.getEntityData().setFloat("hfr_radiation", 0); @@ -351,13 +354,6 @@ public class ModEventHandler } } /// RADIATION STUFF END /// - - ////////////////////// - /*} catch(Exception x) { - - MainRegistry.logger.error("Ouchie, something has happened in the NTM world tick event."); - }*/ - ////////////////////// } @SubscribeEvent @@ -386,9 +382,9 @@ public class ModEventHandler if((helmet != null || noHelmet) && plate != null && legs != null && boots != null) { - if((noHelmet || chestplate.getArmorMaterial() == ((ArmorFSB)helmet.getItem()).getArmorMaterial()) && - chestplate.getArmorMaterial() == ((ArmorFSB)legs.getItem()).getArmorMaterial() && - chestplate.getArmorMaterial() == ((ArmorFSB)boots.getItem()).getArmorMaterial()) { + if((noHelmet || chestplate.getArmorMaterial() == ((ItemArmor)helmet.getItem()).getArmorMaterial()) && + chestplate.getArmorMaterial() == ((ItemArmor)legs.getItem()).getArmorMaterial() && + chestplate.getArmorMaterial() == ((ItemArmor)boots.getItem()).getArmorMaterial()) { if(chestplate.fireproof && event.source.isFireDamage()) { player.extinguish(); @@ -421,9 +417,9 @@ public class ModEventHandler if((helmet != null || noHelmet) && plate != null && legs != null && boots != null) { - if((noHelmet || chestplate.getArmorMaterial() == ((ArmorFSB)helmet.getItem()).getArmorMaterial()) && - chestplate.getArmorMaterial() == ((ArmorFSB)legs.getItem()).getArmorMaterial() && - chestplate.getArmorMaterial() == ((ArmorFSB)boots.getItem()).getArmorMaterial()) { + if((noHelmet || chestplate.getArmorMaterial() == ((ItemArmor)helmet.getItem()).getArmorMaterial()) && + chestplate.getArmorMaterial() == ((ItemArmor)legs.getItem()).getArmorMaterial() && + chestplate.getArmorMaterial() == ((ItemArmor)boots.getItem()).getArmorMaterial()) { if(chestplate.damageMod != -1) { event.ammount *= chestplate.damageMod; diff --git a/com/hbm/main/ModEventHandlerClient.java b/com/hbm/main/ModEventHandlerClient.java index 4dc5ed752..06da88df4 100644 --- a/com/hbm/main/ModEventHandlerClient.java +++ b/com/hbm/main/ModEventHandlerClient.java @@ -62,8 +62,8 @@ public class ModEventHandlerClient { int count = ItemGunBase.getMag(player.getHeldItem()); int max = gcfg.ammoCap; - if(gcfg.reloadType == gcfg.RELOAD_NONE) { - ammo = ItemGunBase.getBeltType(player, player.getHeldItem()); + if(gcfg.reloadType == GunConfiguration.RELOAD_NONE) { + ammo = ItemGunBase.getBeltType(player, player.getHeldItem(), true); count = ItemGunBase.getBeltSize(player, ammo); max = -1; } @@ -71,6 +71,16 @@ public class ModEventHandlerClient { int dura = ItemGunBase.getItemWear(player.getHeldItem()) * 50 / gcfg.durability; RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo, count, max, dura); + + if(gun.altConfig != null && gun.altConfig.reloadType == GunConfiguration.RELOAD_NONE) { + Item oldAmmo = ammo; + ammo = ItemGunBase.getBeltType(player, player.getHeldItem(), false); + + if(ammo != oldAmmo) { + count = ItemGunBase.getBeltSize(player, ammo); + RenderScreenOverlay.renderAmmoAlt(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo, count); + } + } } if(event.type == ElementType.HOTBAR) { diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 2267dbbaf..61ba18f27 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -153,6 +153,9 @@ public class ResourceManager { public static final IModelCustom teslacrab = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/teslacrab.obj")); public static final IModelCustom taintcrab = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/taintcrab.obj")); + //Belt + public static final IModelCustom arrow = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/arrow.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); @@ -299,6 +302,7 @@ public class ResourceManager { public static final IModelCustom shotty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/supershotty.obj")); public static final IModelCustom ks23 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/ks23.obj")); public static final IModelCustom flamer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flamer.obj")); + public static final IModelCustom flechette = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flechette.obj")); ////Texture Items @@ -313,6 +317,17 @@ public class ResourceManager { public static final ResourceLocation deagle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/deagle.png"); public static final ResourceLocation ks23_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ks23.png"); public static final ResourceLocation flamer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamer.png"); + public static final ResourceLocation flechette_body = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_body.png"); + public static final ResourceLocation flechette_barrel = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_barrel.png"); + public static final ResourceLocation flechette_gren_tube = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_gren_tube.png"); + public static final ResourceLocation flechette_grenades = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_grenades.png"); + public static final ResourceLocation flechette_pivot = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_pivot.png"); + public static final ResourceLocation flechette_top = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_top.png"); + public static final ResourceLocation flechette_chamber = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_chamber.png"); + public static final ResourceLocation flechette_base = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_base.png"); + public static final ResourceLocation flechette_drum = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_drum.png"); + public static final ResourceLocation flechette_trigger = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_trigger.png"); + public static final ResourceLocation flechette_stock = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_stock.png"); diff --git a/com/hbm/render/block/RenderConveyor.java b/com/hbm/render/block/RenderConveyor.java new file mode 100644 index 000000000..891852856 --- /dev/null +++ b/com/hbm/render/block/RenderConveyor.java @@ -0,0 +1,80 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderConveyor implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if (renderer.hasOverrideBlockTexture()) + { + iicon = renderer.overrideBlockTexture; + } + + GL11.glTranslated(0, -0.125, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.arrow, iicon, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z)); + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + if (renderer.hasOverrideBlockTexture()) + { + iicon = renderer.overrideBlockTexture; + } + + float rotation = 0; + + if(world.getBlockMetadata(x, y, z) == 3) + rotation = 180F / 180F * (float)Math.PI; + + if(world.getBlockMetadata(x, y, z) == 4) + rotation = 90F / 180F * (float)Math.PI; + + if(world.getBlockMetadata(x, y, z) == 5) + rotation = 270F / 180F * (float)Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.arrow, iicon, tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return 334086; + } + +} diff --git a/com/hbm/render/entity/item/RenderMovingItem.java b/com/hbm/render/entity/item/RenderMovingItem.java new file mode 100644 index 000000000..30f1c0402 --- /dev/null +++ b/com/hbm/render/entity/item/RenderMovingItem.java @@ -0,0 +1,48 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.item.EntityMovingItem; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class RenderMovingItem extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f1, float f2) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + EntityMovingItem item = (EntityMovingItem)entity; + ItemStack stack = item.getItemStack(); + + if(!(stack.getItem() instanceof ItemBlock)) { + GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F); + GL11.glTranslated(0.0, -0.1875, 0.0); + } + + EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, stack); + dummy.getEntityItem().stackSize = 1; + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } + +} diff --git a/com/hbm/render/entity/projectile/RenderBullet.java b/com/hbm/render/entity/projectile/RenderBullet.java index cb892f751..5d4cff303 100644 --- a/com/hbm/render/entity/projectile/RenderBullet.java +++ b/com/hbm/render/entity/projectile/RenderBullet.java @@ -146,6 +146,8 @@ public class RenderBullet extends Render { bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeToxic.png")); break; case 4: bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeSleek.png")); break; + case 5: + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeTraining.png")); break; } grenade.renderAll(0.0625F); diff --git a/com/hbm/render/item/ItemRenderMP.java b/com/hbm/render/item/ItemRenderMP.java index 4a7a2f1b7..686fc811d 100644 --- a/com/hbm/render/item/ItemRenderMP.java +++ b/com/hbm/render/item/ItemRenderMP.java @@ -32,40 +32,42 @@ public class ItemRenderMP implements IItemRenderer { @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP.png")); + switch(type) { case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); + GL11.glTranslatef(1.0F, 0.75F, 0.0F); + GL11.glRotatef(150F, 0.0F, 0.0F, -1.0F); + GL11.glScalef(0.75F, 0.75F, 0.75F); + swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); break; + case EQUIPPED: + GL11.glTranslatef(0.35F, 0.5F, 0.0F); + GL11.glRotatef(100F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(170F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(15F, 0.0F, 0.0F, -1.0F); + GL11.glScalef(0.75F, 0.75F, 0.75F); + swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + break; + case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - GL11.glTranslatef(-0.8F, -0.1F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); + GL11.glTranslatef(0.0F, 1.0F, 0.0F); + GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); + GL11.glScalef(0.75F, 0.75F, 0.75F); + swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + break; + default: break; } + + GL11.glPopMatrix(); } } diff --git a/com/hbm/render/item/ItemRenderWeaponObj.java b/com/hbm/render/item/ItemRenderWeaponObj.java index 5296d07fa..c53693325 100644 --- a/com/hbm/render/item/ItemRenderWeaponObj.java +++ b/com/hbm/render/item/ItemRenderWeaponObj.java @@ -21,7 +21,9 @@ public class ItemRenderWeaponObj implements IItemRenderer { case ENTITY: return true; case INVENTORY: - return item.getItem() == ModItems.gun_ks23 || item.getItem() == ModItems.gun_hk69 || item.getItem() == ModItems.gun_flamer; + return item.getItem() == ModItems.gun_ks23 || item.getItem() == ModItems.gun_hk69 + || item.getItem() == ModItems.gun_flamer || item.getItem() == ModItems.gun_deagle + || item.getItem() == ModItems.gun_flechette; default: return false; } } @@ -121,6 +123,19 @@ public class ItemRenderWeaponObj implements IItemRenderer { GL11.glTranslatef(0.75F, 0.2F, 0.3F); } } + + if(item.getItem() == ModItems.gun_flechette) { + GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(1.0F, -1.0F, -0.0F); + GL11.glRotatef(170F, 0.0F, 1.0F, 0.0F); + GL11.glScaled(0.25, 0.25, 0.25); + + if(player.isSneaking()) { + GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-2.0F, 1.2F, 3.7F); + } + } break; @@ -160,6 +175,13 @@ public class ItemRenderWeaponObj implements IItemRenderer { GL11.glTranslatef(0.4F, -0.25F, 0.2F); GL11.glScaled(0.35, 0.35, 0.35); } + + if(item.getItem() == ModItems.gun_flechette) { + GL11.glRotatef(35F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-1.4F, -0.55F, 0.0F); + GL11.glScaled(0.125, 0.125, 0.125); + } break; @@ -167,12 +189,13 @@ public class ItemRenderWeaponObj implements IItemRenderer { if(item.getItem() == ModItems.gun_hk69) { GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); GL11.glScaled(0.75, 0.75, 0.75); } if(item.getItem() == ModItems.gun_deagle) { GL11.glTranslatef(0.0F, 0.2F, 0.0F); + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); GL11.glScaled(0.25, 0.25, 0.25); } @@ -181,17 +204,22 @@ public class ItemRenderWeaponObj implements IItemRenderer { } if(item.getItem() == ModItems.gun_ks23) { - GL11.glTranslatef(0.5F, 0.2F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(0.0F, 0.2F, 0.5F); GL11.glScaled(0.75, 0.75, 0.75); } if(item.getItem() == ModItems.gun_flamer) { - GL11.glTranslatef(-0.25F, 0.2F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(0.25F, 0.2F, 0.0F); + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); GL11.glScaled(0.25, 0.25, 0.25); } + if(item.getItem() == ModItems.gun_flechette) { + GL11.glTranslatef(-0.25F, 0.0F, 0.0F); + GL11.glScaled(0.125, 0.125, 0.125); + } + break; case INVENTORY: @@ -206,6 +234,14 @@ public class ItemRenderWeaponObj implements IItemRenderer { GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); } + if(item.getItem() == ModItems.gun_deagle) { + GL11.glScaled(2.5, 2.5, -2.5); + GL11.glTranslatef(3.5F, 3F, 0.0F); + GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); + } + if(item.getItem() == ModItems.gun_ks23) { GL11.glScaled(7.5, 7.5, -7.5); GL11.glTranslatef(0.65F, 0.4F, 0.0F); @@ -222,6 +258,13 @@ public class ItemRenderWeaponObj implements IItemRenderer { GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); } + if(item.getItem() == ModItems.gun_flechette) { + GL11.glScaled(1.2, 1.2, -1.2); + GL11.glTranslatef(2.5F, 8.0F, 0.0F); + GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-45F, 0.0F, 0.0F, 1.0F); + } + break; default: break; @@ -256,8 +299,39 @@ public class ItemRenderWeaponObj implements IItemRenderer { ResourceManager.flamer.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } + + if(item.getItem() == ModItems.gun_flechette) { + renderFlechette(); + } GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); } + + public void renderFlechette() { + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_body); + ResourceManager.flechette.renderPart("body"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_chamber); + ResourceManager.flechette.renderPart("chamber"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_barrel); + ResourceManager.flechette.renderPart("barrel"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_gren_tube); + ResourceManager.flechette.renderPart("gren_tube"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_grenades); + ResourceManager.flechette.renderPart("grenades"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_pivot); + ResourceManager.flechette.renderPart("pivot"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_top); + ResourceManager.flechette.renderPart("top"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_drum); + ResourceManager.flechette.renderPart("drum"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_base); + ResourceManager.flechette.renderPart("base"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_trigger); + ResourceManager.flechette.renderPart("trigger"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_stock); + ResourceManager.flechette.renderPart("stock"); + GL11.glShadeModel(GL11.GL_FLAT); + } } diff --git a/com/hbm/render/tileentity/RenderEPress.java b/com/hbm/render/tileentity/RenderEPress.java index 5faeba8ef..fbda982f0 100644 --- a/com/hbm/render/tileentity/RenderEPress.java +++ b/com/hbm/render/tileentity/RenderEPress.java @@ -11,7 +11,6 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -106,13 +105,13 @@ public class RenderEPress extends TileEntitySpecialRenderer { TileEntityMachineEPress press = (TileEntityMachineEPress)tileentity; ItemStack stack = new ItemStack(Item.getItemById(press.item), 1, press.meta); - if(!(stack.getItem() instanceof ItemBlock)) { - EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); - - RenderItem.renderInFrame = true; - this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); - RenderItem.renderInFrame = false; - } + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; GL11.glPopMatrix(); } diff --git a/com/hbm/render/tileentity/RenderPress.java b/com/hbm/render/tileentity/RenderPress.java index cdd38987c..94358f962 100644 --- a/com/hbm/render/tileentity/RenderPress.java +++ b/com/hbm/render/tileentity/RenderPress.java @@ -11,7 +11,6 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -70,14 +69,14 @@ public class RenderPress extends TileEntitySpecialRenderer { TileEntityMachinePress press = (TileEntityMachinePress)tileEntity; ItemStack stack = new ItemStack(Item.getItemById(press.item), 1, press.meta); - if(!(stack.getItem() instanceof ItemBlock)) { - EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; - RenderItem.renderInFrame = true; - GL11.glTranslatef(0.0F, 1.0F - 0.0625F * 165/100, 0.0F); - this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); - RenderItem.renderInFrame = false; - } + RenderItem.renderInFrame = true; + GL11.glTranslatef(0.0F, 1.0F - 0.0625F * 165/100, 0.0F); + this.itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; GL11.glPopMatrix(); } diff --git a/com/hbm/render/util/RenderScreenOverlay.java b/com/hbm/render/util/RenderScreenOverlay.java index 585405e7d..11b8b0829 100644 --- a/com/hbm/render/util/RenderScreenOverlay.java +++ b/com/hbm/render/util/RenderScreenOverlay.java @@ -137,6 +137,30 @@ public class RenderScreenOverlay { Minecraft.getMinecraft().renderEngine.bindTexture(hud); } + public static void renderAmmoAlt(ScaledResolution resolution, Gui gui, Item ammo, int count) { + + GL11.glPushMatrix(); + + Minecraft mc = Minecraft.getMinecraft(); + + int pX = resolution.getScaledWidth() / 2 + 62 + 36 + 18; + int pZ = resolution.getScaledHeight() - 21 - 16; + + Minecraft.getMinecraft().renderEngine.bindTexture(misc); + + Minecraft.getMinecraft().fontRenderer.drawString(count + "x", pX + 16, pZ + 6, 0xFFFFFF); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + RenderHelper.enableGUIStandardItemLighting(); + itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(ammo), pX, pZ); + RenderHelper.disableStandardItemLighting(); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + + GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(hud); + } + public enum Crosshair { NONE(0, 0, 0), diff --git a/com/hbm/blocks/machine/TileEntityGeiger.java b/com/hbm/tileentity/machine/TileEntityGeiger.java similarity index 97% rename from com/hbm/blocks/machine/TileEntityGeiger.java rename to com/hbm/tileentity/machine/TileEntityGeiger.java index 336cf25f3..bf54b489d 100644 --- a/com/hbm/blocks/machine/TileEntityGeiger.java +++ b/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -1,4 +1,4 @@ -package com.hbm.blocks.machine; +package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; diff --git a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 6c68f9d29..1cb5ac460 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -365,26 +365,30 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve //OUTPUT if(te1 instanceof TileEntityChest) { TileEntityChest chest = (TileEntityChest)te1; - - tryFillContainer(chest, 5); + + for(int i = 5; i < 9; i++) + tryFillContainer(chest, i); } if(te1 instanceof TileEntityHopper) { TileEntityHopper hopper = (TileEntityHopper)te1; - tryFillContainer(hopper, 5); + for(int i = 5; i < 9; i++) + tryFillContainer(hopper, i); } if(te1 instanceof TileEntityCrateIron) { - TileEntityCrateIron hopper = (TileEntityCrateIron)te1; + TileEntityCrateIron crate = (TileEntityCrateIron)te1; - tryFillContainer(hopper, 5); + for(int i = 5; i < 9; i++) + tryFillContainer(crate, i); } if(te1 instanceof TileEntityCrateSteel) { - TileEntityCrateSteel hopper = (TileEntityCrateSteel)te1; + TileEntityCrateSteel crate = (TileEntityCrateSteel)te1; - tryFillContainer(hopper, 5); + for(int i = 5; i < 9; i++) + tryFillContainer(crate, i); } //INPUT