From 773fcb9430937f6ee483b2b3fd4752e0a013f81c Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 7 Mar 2021 16:29:28 +0100 Subject: [PATCH] all of it --- src/main/java/assets/hbm/lang/de_DE.lang | 46 +++ src/main/java/assets/hbm/lang/en_US.lang | 40 +++ .../java/assets/hbm/textures/armor/dnt_1.png | Bin 0 -> 1160 bytes .../java/assets/hbm/textures/armor/dnt_2.png | Bin 0 -> 544 bytes .../hbm/textures/blocks/turret_friendly.png | Bin 0 -> 6969 bytes .../textures/gui/weapon/gui_turret_cannon.png | Bin 0 -> 3833 bytes .../gui/weapon/gui_turret_friendly.png | Bin 0 -> 3905 bytes .../textures/gui/weapon/gui_turret_tau.png | Bin 0 -> 3994 bytes .../assets/hbm/textures/items/ammo_shell.png | Bin 0 -> 357 bytes .../textures/items/ammo_shell_apfsds-du.png | Bin 0 -> 356 bytes .../textures/items/ammo_shell_apfsds-t.png | Bin 0 -> 356 bytes .../textures/items/ammo_shell_explosive.png | Bin 0 -> 361 bytes .../hbm/textures/items/ammo_shell_w9.png | Bin 0 -> 411 bytes .../textures/items/cobalt_decorated_axe.png | Bin 0 -> 381 bytes .../textures/items/cobalt_decorated_hoe.png | Bin 0 -> 275 bytes .../items/cobalt_decorated_pickaxe.png | Bin 0 -> 381 bytes .../items/cobalt_decorated_shovel.png | Bin 0 -> 309 bytes .../textures/items/cobalt_decorated_sword.png | Bin 0 -> 320 bytes .../assets/hbm/textures/items/dnt_boots.png | Bin 0 -> 145 bytes .../assets/hbm/textures/items/dnt_helmet.png | Bin 0 -> 169 bytes .../assets/hbm/textures/items/dnt_legs.png | Bin 0 -> 151 bytes .../assets/hbm/textures/items/dnt_plate.png | Bin 0 -> 155 bytes .../hbm/textures/items/starmetal_axe.png | Bin 0 -> 363 bytes .../hbm/textures/items/starmetal_hoe.png | Bin 0 -> 237 bytes .../hbm/textures/items/starmetal_pickaxe.png | Bin 0 -> 294 bytes .../hbm/textures/items/starmetal_shovel.png | Bin 0 -> 266 bytes .../hbm/textures/items/starmetal_sword.png | Bin 0 -> 316 bytes .../textures/models/turrets/base_friendly.png | Bin 0 -> 546 bytes .../models/turrets/carriage_friendly.png | Bin 0 -> 652 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 10 +- .../com/hbm/blocks/generic/BlockOutgas.java | 2 +- .../com/hbm/blocks/turret/TurretChekhov.java | 1 - .../com/hbm/blocks/turret/TurretFriendly.java | 68 +++++ .../com/hbm/blocks/turret/TurretJeremy.java | 21 ++ .../com/hbm/blocks/turret/TurretTauon.java | 21 ++ .../java/com/hbm/crafting/ToolRecipes.java | 13 +- .../java/com/hbm/crafting/WeaponRecipes.java | 12 + .../hbm/entity/grenade/EntityWastePearl.java | 51 ++++ .../com/hbm/entity/mob/EntityMaskMan.java | 6 +- .../com/hbm/handler/BobmazonOfferFactory.java | 85 +++--- .../hbm/handler/BulletConfigSyncingUtil.java | 76 ++--- .../com/hbm/handler/BulletConfiguration.java | 26 +- src/main/java/com/hbm/handler/GUIHandler.java | 47 +++- .../handler/guncfg/BulletConfigFactory.java | 25 ++ .../hbm/handler/guncfg/GunCannonFactory.java | 81 ++++++ .../com/hbm/inventory/AssemblerRecipes.java | 69 ++++- ...tChekhov.java => ContainerTurretBase.java} | 16 +- .../com/hbm/inventory/gui/GUITurretBase.java | 266 ++++++++++++++++++ .../hbm/inventory/gui/GUITurretChekhov.java | 259 +---------------- .../hbm/inventory/gui/GUITurretFriendly.java | 20 ++ .../hbm/inventory/gui/GUITurretJeremy.java | 20 ++ .../com/hbm/inventory/gui/GUITurretTauon.java | 20 ++ src/main/java/com/hbm/items/ModItems.java | 98 ++++++- .../com/hbm/items/tool/ItemTurretControl.java | 182 ++++++++---- .../com/hbm/items/weapon/ItemGrenade.java | 4 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 24 +- src/main/java/com/hbm/main/MainRegistry.java | 13 +- .../java/com/hbm/main/ModEventHandler.java | 8 +- .../java/com/hbm/main/ResourceManager.java | 2 + .../java/com/hbm/particle/ParticleSpark.java | 89 ++++++ .../entity/projectile/RenderBullet.java | 42 ++- .../hbm/render/item/ItemRenderLibrary.java | 58 ++++ .../tileentity/RenderTurretFriendly.java | 54 ++++ .../render/tileentity/RenderTurretTauon.java | 10 +- .../turret/TileEntityTurretBaseNT.java | 28 +- .../turret/TileEntityTurretChekhov.java | 26 +- .../turret/TileEntityTurretFriendly.java | 34 +++ .../turret/TileEntityTurretJeremy.java | 78 ++++- .../turret/TileEntityTurretTauon.java | 110 +++++++- .../com/hbm/world/dungeon/AncientTomb.java | 10 +- src/main/resources/mcmod.info | 2 +- 72 files changed, 1708 insertions(+), 467 deletions(-) create mode 100644 src/main/java/assets/hbm/textures/armor/dnt_1.png create mode 100644 src/main/java/assets/hbm/textures/armor/dnt_2.png create mode 100644 src/main/java/assets/hbm/textures/blocks/turret_friendly.png create mode 100644 src/main/java/assets/hbm/textures/gui/weapon/gui_turret_cannon.png create mode 100644 src/main/java/assets/hbm/textures/gui/weapon/gui_turret_friendly.png create mode 100644 src/main/java/assets/hbm/textures/gui/weapon/gui_turret_tau.png create mode 100644 src/main/java/assets/hbm/textures/items/ammo_shell.png create mode 100644 src/main/java/assets/hbm/textures/items/ammo_shell_apfsds-du.png create mode 100644 src/main/java/assets/hbm/textures/items/ammo_shell_apfsds-t.png create mode 100644 src/main/java/assets/hbm/textures/items/ammo_shell_explosive.png create mode 100644 src/main/java/assets/hbm/textures/items/ammo_shell_w9.png create mode 100644 src/main/java/assets/hbm/textures/items/cobalt_decorated_axe.png create mode 100644 src/main/java/assets/hbm/textures/items/cobalt_decorated_hoe.png create mode 100644 src/main/java/assets/hbm/textures/items/cobalt_decorated_pickaxe.png create mode 100644 src/main/java/assets/hbm/textures/items/cobalt_decorated_shovel.png create mode 100644 src/main/java/assets/hbm/textures/items/cobalt_decorated_sword.png create mode 100644 src/main/java/assets/hbm/textures/items/dnt_boots.png create mode 100644 src/main/java/assets/hbm/textures/items/dnt_helmet.png create mode 100644 src/main/java/assets/hbm/textures/items/dnt_legs.png create mode 100644 src/main/java/assets/hbm/textures/items/dnt_plate.png create mode 100644 src/main/java/assets/hbm/textures/items/starmetal_axe.png create mode 100644 src/main/java/assets/hbm/textures/items/starmetal_hoe.png create mode 100644 src/main/java/assets/hbm/textures/items/starmetal_pickaxe.png create mode 100644 src/main/java/assets/hbm/textures/items/starmetal_shovel.png create mode 100644 src/main/java/assets/hbm/textures/items/starmetal_sword.png create mode 100644 src/main/java/assets/hbm/textures/models/turrets/base_friendly.png create mode 100644 src/main/java/assets/hbm/textures/models/turrets/carriage_friendly.png create mode 100644 src/main/java/com/hbm/blocks/turret/TurretFriendly.java create mode 100644 src/main/java/com/hbm/entity/grenade/EntityWastePearl.java create mode 100644 src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java rename src/main/java/com/hbm/inventory/container/{ContainerTurretChekhov.java => ContainerTurretBase.java} (77%) create mode 100644 src/main/java/com/hbm/inventory/gui/GUITurretBase.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUITurretFriendly.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUITurretJeremy.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUITurretTauon.java create mode 100644 src/main/java/com/hbm/particle/ParticleSpark.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderTurretFriendly.java create mode 100644 src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index cb89c09cf..213359c64 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -16,6 +16,14 @@ achievement.c44.desc=Galvanisch verzinkt! ...das macht in der Übersetzung sowas achievement.c44=Kapitel 44 achievement.chemistry.desc=Bobmazon Level 3 (Betonziegel) achievement.chemistry=Chemie +achievement.digammaFeel.desc=the hollow within. +achievement.digammaFeel=The Terror of Feeling +achievement.digammaKauaiMoho.desc=Alles ist schrecklich, hier ist etwas heiße Schoki. +achievement.digammaKauaiMoho=Sing, sing mir das Lied der Kauai Moho +achievement.digammaKnow.desc=what this world is about. +achievement.digammaKnow=The Terror of Knowing +achievement.digammaSee.desc=into the abyss. +achievement.digammaSee=The Terror of Seeing achievement.fiend.desc=Sei gemein. achievement.fiend2.desc=Sei gemeiner. achievement.fiend2=Unhold 2: Noch unholdiger @@ -237,6 +245,10 @@ container.soyuzCapsule=Landekapsel container.soyuzLauncher=Soyuz-Startplatform container.teleLinker=TelLink-Gerät container.teleporter=Teleporter +container.turretChekhov=Tschechows Gewehr +container.turretFriendly=Mister Friendly +container.turretJeremy=Jeremy +container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Abklingbecken-Trommel container.watzPowerplant=Watzkraftwerk @@ -244,6 +256,7 @@ container.watzPowerplant=Watzkraftwerk death.attack.acid=%1$s fiel in Säure. death.attack.ams=%1$s wurde in tödlichen Teilchen gebadet, die von der Menschheit erst benannt werden müssen. death.attack.amsCore=%1$s wurde vom Feuer einer Singularität verdampft. +death.attack.asbestos=%1$s hat sich für finanzielle Entschädigung qualifiziert. death.attack.bang=%1$s wurde in mundgerechte Stücke zerfetzt. death.attack.blackhole=%1$s wurde spaghettifiziert. death.attack.blender=%1$s wurde in kleine, mundgerechte Stücke geschnitten. @@ -533,6 +546,11 @@ item.ammo_rocket_rpc.name=84mm Raketengetriebene Kettensäge item.ammo_rocket_shrapnel.name=84mm Rakete (Schrapnell) item.ammo_rocket_sleek.name=84mm Rakete (IF-R&D) item.ammo_rocket_toxic.name=84mm Rakete (Chemisch) +item.ammo_shell.name=240mm Geschoss +item.ammo_shell_apfsds_du.name=240mm APFSTS-DU +item.ammo_shell_apfsds_t.name=240mm APFSTS-T +item.ammo_shell_explosive.name=240mm HE-Geschoss +item.ammo_shell_w9.name=240mm W9 Atomares Geschoss item.ams_catalyst_aluminium.name=Aluminium-Reaktionskatalysator item.ams_catalyst_beryllium.name=Beryllium-Reaktionskatalysator item.ams_catalyst_blank.name=Blanker Reaktionskatalysator @@ -878,6 +896,11 @@ item.cmb_shovel.name=CMB-Stahlschaufel item.cmb_sword.name=CMB-Stahlschwert item.cobalt_axe.name=Kobaltaxt item.cobalt_boots.name=Kobaltstiefel +item.cobalt_decorated_axe.name=Ausgezeichnete Kobaltaxt +item.cobalt_decorated_hoe.name=Ausgezeichnete Kobaltfeldhacke +item.cobalt_decorated_pickaxe.name=Ausgezeichnete Kobaltspitzhacke +item.cobalt_decorated_shovel.name=Ausgezeichnete Kobaltschaufel +item.cobalt_decorated_sword.name=Ausgezeichnete Kobaltschwert item.cobalt_helmet.name=Kobalthelm item.cobalt_hoe.name=Kobaltfeldhacke item.cobalt_legs.name=Kobaltbeinschutz @@ -960,6 +983,10 @@ item.detonator_deadman.name=Totmannzünder item.detonator_laser.name=Laserzünder item.detonator_multi.name=Mehrfach-Fernzünder item.diamond_gavel.name=Diamantener Richterhammer +item.dnt_boots.name=dienautronium stiefel +item.dnt_legs.name=dineuterium beine +item.dnt_helmet.name=dinotroniumu helme +item.dnt_plate.name=dineutrom brustplatte item.door_bunker.name=Bunkertür item.door_metal.name=Metalltür item.door_office.name=Bürotür @@ -1325,6 +1352,7 @@ item.ingot_uranium_fuel.name=Urankernbrennstoffbarren item.ingot_verticium.name=Verticiumbarren item.ingot_weidanium.name=Weidaniumbarren item.ink.name=林-Tinte +item.insert_doxium.name=Astolfium-dottierte Doxiumeinlage item.insert_du.name=DU-Einlage item.insert_era.name=Explosive Reaktivpaanzerungseinlage item.insert_esapi.name=ESAPI-Einlage @@ -1586,7 +1614,16 @@ item.niter.name=Salpeter item.nossy_hat.name=Fabulöser Hut item.nothing.name=Leer item.nuclear_waste.name=Atommüll +item.nuclear_waste_pearl.name=Atommüllperle item.nuclear_waste_tiny.name=Kleiner Haufen Atommüll +item.nuclear_waste_long.name=Langlebiger Atommüll +item.nuclear_waste_long_tiny.name=Kleiner Haufen langlebiger Atommüll +item.nuclear_waste_long_depleted.name=Zerfallender langlebiger Atommüll +item.nuclear_waste_long_depleted_tiny.name=Kleiner Haufen zerfallender langlebiger Atommüll +item.nuclear_waste_short.name=Kurzlebiger Atommüll +item.nuclear_waste_short_tiny.name=Kleiner Haufen kurzlebiger Atommüll +item.nuclear_waste_short_depleted.name=Zerfallender kurzlebiger Atommüll +item.nuclear_waste_short_depleted_tiny.name=Kleiner Haufen zerfallender kurzlebiger Atommüll item.nugget.name=Chicken Nugget item.nugget_australium.name=Australiumnugget item.nugget_beryllium.name=Berylliumnugget @@ -2026,10 +2063,15 @@ item.stamp_titanium_circuit.name=Schaltkreisstempel (Titan) item.stamp_titanium_flat.name=Flacher Stempel (Titan) item.stamp_titanium_plate.name=Plattenstempel (Titan) item.stamp_titanium_wire.name=Kabelstempel (Titan) +item.starmetal_axe.name=Sternenmetallaxt item.starmetal_boots.name=Sternenmetallstiefel item.starmetal_helmet.name=Sternenmetallhelm +item.starmetal_hoe.name=Sternenmetallfeldhacke item.starmetal_legs.name=Sternenmetallbeinschutz +item.starmetal_pickaxe.name=Sternenmetallspitzhacke item.starmetal_plate.name=Sternenmetallbrustpanzer +item.starmetal_shovel.name=Sternenmetallschaufel +item.starmetal_sword.name=Sternenmetallschwert item.static_sandwich.name=Sandwich mit Fernsehrauschen garniert item.stealth_boy.name=Mobile Tarnkappe item.steel_axe.name=Stahlaxt @@ -2735,13 +2777,17 @@ tile.tile_lab_broken.name=Gebrochene Labotfliesen tile.tile_lab_cracked.name=Gesprungene Laborfliesen tile.toxic_block.name=Stereotypischer grüner Schleim tile.turret_cheapo.name=Billigsdorfer Gatling-Geschütz +tile.turret_chekhov.name=Schweres MG-Geschütz "Tschechows Gewehr" tile.turret_cwis.name=Phalanx Mk-15 CIWS tile.turret_flamer.name=Flammenwerfergeschütz +tile.turret_friendly.name=Gatlingeschütz "Mister Friendly" tile.turret_heavy.name=Schweres MG-Geschütz +tile.turret_jeremy.name=Autokanonengeschütz "Jeremy" tile.turret_light.name=Leichtes MG-Geschütz tile.turret_rocket.name=Raketengeschütz tile.turret_spitfire.name=Geschütz für das ich noch keinen Namen habe [WIP] tile.turret_tau.name=Tauonengeschütz +tile.turret_tauon.name=XVL1456-Prototypengeschütz "Tauon" tile.vault_door.name=Vault-Tec Sprengtür tile.vent_chlorine.name=Chlorgas-Auslass tile.vent_chlorine_seal.name=Chlorgassiegel diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index c7867a0c4..c2560a134 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -18,6 +18,8 @@ achievement.chemistry.desc=Bobmazon Level 3 (Concrete Bricks) achievement.chemistry=Chemistry achievement.digammaFeel.desc=the hollow within. achievement.digammaFeel=The Terror of Feeling +achievement.digammaKauaiMoho.desc=Everything is awful, here's some hot choccy. +achievement.digammaKauaiMoho=Sing, sing me the song of the Kauai Moho achievement.digammaKnow.desc=what this world is about. achievement.digammaKnow=The Terror of Knowing achievement.digammaSee.desc=into the abyss. @@ -243,6 +245,10 @@ container.soyuzCapsule=Cargo Landing Capsule container.soyuzLauncher=Soyuz Launch Platform container.teleLinker=TelLink Device container.teleporter=Teleporter +container.turretChekhov=Chekhov's Gun +container.turretFriendly=Mister Friendly +container.turretJeremy=Jeremy +container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Spent Fuel Pool Drum container.watzPowerplant=Watz Power Plant @@ -250,6 +256,7 @@ container.watzPowerplant=Watz Power Plant death.attack.acid=%1$s fell into acid. death.attack.ams=%1$s was bathed in deadly particles that have yet to be named by human science. death.attack.amsCore=%1$s was vaporized in the fire of a singularity. +death.attack.asbestos=%1$s is now entitled to financial compensation. death.attack.bang=%1$s was blasted into bite-sized pieces. death.attack.blackhole=%1$s was spaghettified. death.attack.blender=%1$s was chopped in small, bite-sized pieces. @@ -539,6 +546,11 @@ item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) item.ammo_rocket_toxic.name=84mm Rocket (Chemical) +item.ammo_shell.name=240mm Shell +item.ammo_shell_apfsds_du.name=240mm APFSTS-DU +item.ammo_shell_apfsds_t.name=240mm APFSTS-T +item.ammo_shell_explosive.name=240mm HE Shell +item.ammo_shell_w9.name=240mm W9 Nuclear Shell item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst item.ams_catalyst_blank.name=Blank Reaction Catalyst @@ -884,6 +896,11 @@ item.cmb_shovel.name=CMB Steel Shovel item.cmb_sword.name=CMB Steel Sword item.cobalt_axe.name=Cobalt Axe item.cobalt_boots.name=Cobalt Boots +item.cobalt_decorated_axe.name=Decorated Cobalt Axe +item.cobalt_decorated_hoe.name=Decorated Cobalt Hoe +item.cobalt_decorated_pickaxe.name=Decorated Cobalt Pickaxe +item.cobalt_decorated_shovel.name=Decorated Cobalt Shovel +item.cobalt_decorated_sword.name=Decorated Cobalt Sword item.cobalt_helmet.name=Cobalt Helmet item.cobalt_hoe.name=Cobalt Hoe item.cobalt_legs.name=Cobalt Leggings @@ -966,6 +983,10 @@ item.detonator_deadman.name=Dead Man's Detonator item.detonator_laser.name=Laser Detonator item.detonator_multi.name=Multi Detonator item.diamond_gavel.name=Diamond Gavel +item.dnt_boots.name=dienautronium boots +item.dnt_legs.name=dineuterium legs +item.dnt_helmet.name=dinotroniumu helmet +item.dnt_plate.name=dineutrom chestplate item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door @@ -1331,6 +1352,7 @@ item.ingot_uranium_fuel.name=Ingot of Uranium Fuel item.ingot_verticium.name=Verticium Ingot item.ingot_weidanium.name=Weidanium Ingot item.ink.name=林 Ink +item.insert_doxium.name=Astolfium-Doped Doxium Insert item.insert_du.name=DU Insert item.insert_era.name=Explosive Reactive Armor Insert item.insert_esapi.name=ESAPI Insert @@ -1592,7 +1614,16 @@ item.niter.name=Niter item.nossy_hat.name=Fabulous Hat item.nothing.name=Nothing item.nuclear_waste.name=Nuclear Waste +item.nuclear_waste_pearl.name=Nuclear Waste Pearl item.nuclear_waste_tiny.name=Tiny Pile of Nuclear Waste +item.nuclear_waste_long.name=Long-Lived Nuclear Waste +item.nuclear_waste_long_tiny.name=Tiny Pile of Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted.name=Decayed Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted_tiny.name=Tiny Pile of Decayed Long-Lived Nuclear Waste +item.nuclear_waste_short.name=Short-Lived Nuclear Waste +item.nuclear_waste_short_tiny.name=Tiny Pile of Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted.name=Decayed Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted_tiny.name=Tiny Pile of Decayed Short-Lived Nuclear Waste item.nugget.name=Chicken Nugget item.nugget_australium.name=Australium Nugget item.nugget_beryllium.name=Beryllium Nugget @@ -2032,10 +2063,15 @@ item.stamp_titanium_circuit.name=Circuit Stamp (Titanium) item.stamp_titanium_flat.name=Flat Stamp (Titanium) item.stamp_titanium_plate.name=Plate Stamp (Titanium) item.stamp_titanium_wire.name=Wire Stamp (Titanium) +item.starmetal_axe.name=Starmetal Axe item.starmetal_boots.name=Starmetal Boots item.starmetal_helmet.name=Starmetal Helmet +item.starmetal_hoe.name=Starmetal Hoe item.starmetal_legs.name=Starmetal Leggings +item.starmetal_pickaxe.name=Starmetal Pickaxe item.starmetal_plate.name=Starmetal Chestplate +item.starmetal_shovel.name=Starmetal Shovel +item.starmetal_sword.name=Starmetal Sword item.static_sandwich.name=Sandwich Garnished with TV Static item.stealth_boy.name=Stealth Device item.steel_axe.name=Steel Axe @@ -2741,13 +2777,17 @@ tile.tile_lab_broken.name=Broken Laboratory Tiles tile.tile_lab_cracked.name=Cracked Laboratory Tiles tile.toxic_block.name=Stereotypical Green Ooze tile.turret_cheapo.name=Cheapo Gatling Sentry +tile.turret_chekhov.name=Heavy Machine Gun Turret "Chekhov's Gun" tile.turret_cwis.name=Phalanx Mk-15 CIWS tile.turret_flamer.name=Flamethrower Turret +tile.turret_friendly.name=Chaingun Turret "Mister Friendly" tile.turret_heavy.name=Heavy Machine Gun Turret +tile.turret_jeremy.name=Autocannon Turret "Jeremy" tile.turret_light.name=Light Machine Gun Turret tile.turret_rocket.name=Rocket Turret tile.turret_spitfire.name=Turret I have no name for right now [WIP] tile.turret_tau.name=Tauon Turret +tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" tile.vault_door.name=Vault-Tec Blast Door tile.vent_chlorine.name=Chlorine Vent tile.vent_chlorine_seal.name=Chlorine Seal diff --git a/src/main/java/assets/hbm/textures/armor/dnt_1.png b/src/main/java/assets/hbm/textures/armor/dnt_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad054904e3829a78c6fbeecc558b218b343d288 GIT binary patch literal 1160 zcmV;31b6$1P)y?O7=o3|DjuuF9X5DUTDOcj9d-hG2G4EgfyS7~f~Ze`7JoiR7gAkXuN zq6nV!pT(Y_5p3oyU+$R68sK>zVHhH%1R(e+pxJ8Tuld-no4bH{Bhvs;6yZ1y0FL9} z&b#<)e&P`?05S~#&~7#XI6OQA5~DO*&HSXgLS!1C-E10HfBMf;0Hl<-OD>-0yUU6!eFc%5DP&RMMhyMr7^J@K*MtcFKAwIE#6lQF;@x$ty_Ni_-BT&0G{K!u+}g4% z0IR+A*i07hLix@;6-AM$AOYk-KLp%)mrW^+w=_2T{AnO}>)WNe`f7I`f6eEeM-Or5 zU3woB&56?9`g*D!aGu3gYJB>6Ec~$aiTd`XmyuE?r@)l6zs7kDa8d5_3%gWTcB!tI zeN*Y)z_jJ5-F=|+=cMzEbs6$Jk8-s-=~|ZpeZ0m(&TfL6NZ`-EXQ zaUpf?e!#S0yDl~V^7;`ICo)|~IgUfISfmjIl&jTK$D3WMtHs4d_V@Qq>8$S=y8aj* z4-AYwi$A=+F3z$}n~4ozm+DFvQo!Kd;H1h+H&)YaG#y?e`Ff2L&V~3HmFC0-sNH>_ z(m5hs;}72r^z-np<;lq=ilQ4507A=^fI)r@!aL&kBLr3+Oz6<<;8#ZnujN z0;LpEN(zMn-ENmy2zr*q^2*A9Pyo^PHa*M2aUAmGqyGBhEcq|R1JX$el2`@)w{1Sk zl}GXOE}7@F0y1?&8`Tfc85Uq^X=&g-KTbcP5d_9Xhx-Ae_<1)>W|voM_qA&&rRa1z zl*?tpFr-i@P`G)MgM$M)oen+ABHG^O71w2FXNOn_mRDBDlfU=(&u6;uq_EP*Si0Fc zoLz^J-mN_Od53_N4gr9fnHi3cj|Z}BECe;*rx66kRnNN5>p4&HM;uA%u2g#ctLPP& zmY5b&?}+WX<~JBjTF^g+MhU4s%f$aReT!@^L%P1!id8BVS`5DYNV}-%>5YJP-D$VH avhW|>{aFPR!87v!0000jWF-G&69n?Y4qru49ASntABTcKAP@)y0)apv5C{YU{~M#ziDb4u zD5Ve)0O~KF&el8<(WOZdVLF{sSJkckxjAPWpp?Q|%XYgZ$+GwG>86}*fQZl-0~|Nw z(HYG@d^}idNz;@(&)JkE^W_q2EdXhnQdbp8mNA)3*zI<`x#sorU7rz=wbo}`M10vd z#?Tn!0|og0@&bUhmL$s_qC#S&6k2Pa@x@}{_3r}ITKC3jnqsZ>o#LK}zkSufFTIP1 z56}hM7}E>ZN#+rVo}Q0^Xsr80S#ihIYmLBQ)e&vT#Q{eI7QJO+-H&=}*}WOqE2 z{m@tOQ8HT}x{jPWagA=Z3~4{~J>#E0p3K$<*EIm5D57m!ABfBJswmi$rI(tMk_-Bp z{m>O~@n`67aLzZzpp>F*Ti-qEszNEnswmJ}`)<;$jJNEECVqR#pRp`(Eq5ca)aKBPt3e3J?fH^;lI&2WavCd*GzN zyIam;5NM#Dn8$i>;KISJBS9dhy~j$5dVZPPnJ;6l`vVu+vAa9X#Q{6-vu5VT1iw77 z@1?TIW*2y}M8m9S*U4bVtorXYlw7~0r@8{Fp@go~p%?GH9l-}4Ib!`gR#7^!Sv@cWzVJGoQ z?1`!zH>3W)o0sQkS6>*%R3FI=nLXn$|G$y&?Or_Kl3L>tuquO`^t&gvU0yyu5JEXGTV$bD#1yn7mA16*;yndujad(-&6G zmtTlP&jnA@Mru{cy-Mqawm|uz&RlMa+f#}JdkBc1(ABfY!7wa@*P)p5rctH|LniC^ zQ{s&&!hcuI2keGP`uv@~8>g~tSPI(3sHmvyIQae?6{8C4QIUzoz|o76)Ly2K#4~#P z`bb+wN!S#4!fguO%&)k2lHCz6_)YRDT51Z;04^F z7_5_v3p?=Pn4N+G9y#91t@e;}V#|BF;gY5AT`c&j@?CoR*?ST)YMfZwVCN@(5Z-x~ zIU^%ua>^`Vdjz-OYNl*>;w9w_7wmXIhK45VaF>N9zsDe6JTAPyJjcMEZo~ zkgO(VMwojUFf_ER3+3&w{;oF_YBF?j>OZwy*|g`F_+EXUqr4FC{%J zOZxlwM1o3zBAs%`)=Rs_Sz&crMI^_`%CPkA#airr$#@bhHu0M^G6L;18=jN49LhmAReW`U@-;W`$5h9^&fC%7hUl*=wB*&UWb$db}x0 z8#N;u#Yr!54h{~RZ8bGD{jwtu3&u)hPkwp6*36PRTBE>D_e`&J3L`313c#Re#>NjV zO5mL+JqZ6)`eJClPVK9dloU-0^sf)`I$#%eU0vPwEREv+w~;K71xIXfU{aE6vdW8@ zcca<0)bh6c|1KAl80gdW66BP%%?(rklaaZI!9+G}HF;yPZ~U{Zw^t!Bk>DkLwn z%=wjbwatfo7QJvz`WYi)8ADaaQ`$}V3}~U4Gpa9W_`#7dIUpJj{Q0+=rdBu~kZM!v+Iqww@*WX!ujqcJhxRbCrJ;o!3%=b? zWM!N@Q2FoKr*Ip?#@mu^i(AR#Pf-yi`sF2hykFN2xKq@$u=MFg=xBD~zRHbT$vR$A zS(4;XJQ7mHY=xkrLZ@luJ>xC-xs%JHCH9kj^UW2lpgovQ`4)TF;lvvx#@lou$&Mcl zjn20gQ|CLn&M7P7RMr-ep3h(lThH`_quIjnWo4out@6n$h@VlZfBVt2_ zBL~9)*%AxahIv|k97*49dzhZ+Rp*BtVaZK+wL4k-#JJ|w$5nE>|WQ+4%D zZ&S&5!r%%yy1_6c2o6;%i?go?ee6sNMYwv|y8jYnheIUeUzrG!VX@k!dL5{Td0HUw zqgfx}cAXHl2fRne*HQU)&M%0JJa`KfnOfm^aZK;;s**A(C99hjCn8UxHkkDG!>pT< z;BxzpkC(x0@X*ybeSB0@RIsR&)Y)KkzE^5$Y8!5;D}2Ew_5ny3Smjbo-d;(OJ-mDG z`}p{Hn!bU-^~1(iQjlf(DgvaX=50FF-+Ur#V}PwMDRVG`gVhNtbjmeNmyIK0>b1-* zy|j*Bzg;l&|&%q~6K)>9s)Lg%Aerg6iWyE74*)K7D-eQoI#m@$}I9uZLWG%I$xq-)FpAXddjjp$H`Eo|AtgJ|yDhtN!*wO|=kfFi|aPABA zop+TMGW3h5q;5D8J1;IrD2Nk3zAYz+=ifGewc3g59vwyA?pH)boSrw1c&+yRD_SES z5_O*l4~glEGc7ErpDKI=VF-2mSESE*d0Ug)nK&W`=XBNTmzI`->t4-jq>0F%bGxg&>+L z&eEjsYVPFE>Q@h7^PP1wEQlS^?X9dGK^nMWTdkX$Jf59<_WWFm$c{!ZgN-K{IGpSexPa+a!7d(9%?qq7-8Y6 zN2)k_?(%Qm1=IQq{;O1S?p(ZZLamq}M&njYAZlVF#n*7o{{Cma+=Z+$IFzl zpr8N%Q7vpeBQnAQj)8kAF9sGegn={+EIlVQwzX+YM6!gHjVNjY%&q zqAXBJfZsj8m^^|fs*M+WdV1!FB9{4i&L> z%LcQHUsc18P znm-_LL>!A9+G>(3Ds#{#)Ftj*3IrC26#&k*F|3VB$xHtIHSw;{@tbj_n&zBc&GEWd z7uSM6A|Gkj(I}6Jtl25l;( zAYOFxa~#Fozmua5r5LcyCdr&|%1yj`9iR94Ntl8kwre_s0u;ZDQ^rn?XsMk*jBVQ% zsQw}lRrip$mD)wPqu)L*)L~K9rYN$%qm8Z4EpzA;jxF8ssw&w!<0zZ}a$IvSx%4B4 zV!}os83>qW!!BpRO;GyKss`GifZOOrtib)gA5B$*u{GGfX`QK`P6#IVt*tFCG4*p_ z(2fq4{>Y!@kH;$(yqIl(t^L}F zAMe}S+aqhzHxKgmK6>skJcY6v%sk*kE8+bH0@dq`Dt24FS65!i2QQdxf3zy0rKO$S zya`owP2f@Lh)Fxj`zu_Tq|#!j%Bf(<2*qpQYp0AFgZz`u*x+rql*evhv8`OC9C&71 zm=7)PI-qU$L}e*=arb6O?qcSn*qYuQJJT(Smw~pntB*lys0g8os;b~H&v_6C@GF5p z$T;#hrRv_J8aZ&WyLS^5s#{_^&!Ho4*mpGBc?{!0 zHBbBU#0!DgIvk^+1SRUheuzWlb4X z{K(GKh{pZYk_KOI1rs}$bs$stxuJWOhg<9Zff9;6mFg5RPfN5 zFS?NM_}r}9Gy5Dg9V7d8MX$qG$g%Nio44aa@Ois~;J{YH?Doh;)0MWD)o=z4$c&xZ z&RZ(0%EVwv8XmgHflre7^!>^H6}im6a^K~4ozQX7!GaPVT`e6(BroUaA$Ro5Z5>lz zpj=GQD9+pPKFtmwb~U?!a=wsVU(FDNgR1fJv=EYswSOkoo8d?*jH(Ku&RH6Jo`xqY z^r{LEvdK+e1tM>ESt_)ukrJa2ycBra#U+QA_rZM#u69}q^+AE}FKu-rjhLdD)<}S) zWNT{+5SsYBJT%>GKTQ}-8H<80=}9pX0#WD*dDZ|c;YpaATkOu9;FB@5#)i1WZ$ySb5;Y>dQ z7AZVueSPjVzok1(xD;`^Vdsx;ih;n<9m+EQ-bWsQ0;2JZ;DFcFzPqpGi0=I{!$ADy zwEgtoO&_DdOlN7VQA+dOUu-tGs1C`v0|&3+MB$-~V3dK$qI4L*`+i+__6Kj((&+I^ z@>I{f*8X{ZWh$DXP1kwQGXGomZOPBa{9fQb7(2Ca{Jf(+nTjZ$8RD&}_`!Bf?s7x( zdXiRCX8&(bPtQ_$>3K)J>Bzy=SFxcH?r0C;($QSd9>s4+=L1)fzF`$@FS+Ra+RTGO z?q~+dwY8>lyWvT_i!25443?n3HT`XVCv(2nw0$U3UxClP-CyaW0k%cNwWTF&8bJF{ zCR5w$&b06ukpq*SPP1#r4ju<>Ca#}6AJTq)4*1m>J;YX4Ty1S=?c%c2ITCbSE5su0 z^Y=}5(AkF2=gNQ?+DB>0>6Kg8!WlzXfAnGBa-ZQzs&84X`I=D1)_Bg@wYl%p&SxPp z>z5}B*HN!ogHC;cdcTlh|FNP1EQF(xCx62(+Co;UN0DBnIJHbG9TOANoI=tq?Dpbt z>X{1#|E&8R1@kBCCLorgyqmV8miO>}?GZ)xr#-Fq!Y^3RHNrVv zA$j6TQlo$NRFj^u;FspR@KD!qi&Kg8qCi#nm~CtpE#?r)AEpXzk+i#WbwHf6}b>?JIyI9&Q8$f_jo2M-$plIyxZLT&}D@KCb9pzw@!g{l2z1>L*Kux+iF$IJ~~POu8X^ zI9ertG@+|$RwkP^H@_@7ybOY`;aGON)-O~O~oO(Hu> zvQEdV4Z^b;&1I|)qtT`$94)L~+sK7BeE&3e5uOW%cfye5(MIo71k^&JBvnTKcu4vm zau*d9DZo3=&ZK~${l0|F$yzGwC6K^q5J27#YCXIO^arU=9SOk{&2Ko2*wE+l`8`ex zJU^bRZ)%Dr5{YIaT>a(TJV)6N)wiIxVOp3*<%>cca$ub%9qQN4@0R$5vxMJijpBSB z&SHp+oGY(%{Ayc^x^)XEX5Z!HkgeTL9So*@4=U6dE8uQg`ByE2 z@<;*X6OAlMcgxwJAm)2&fwT^$5(xv_iu&6A%?WRDuPspAX@daQl;yMwr(h@#KTWQx zyqh+tICV6?0F0x^zRUeKR1u_3SZosfxh>w;BNZ{Y?@2;hXUZxUb%GXSikp&L1L!vg zP+d&)^gv}?9bYz((u+E@xRHSF9VI*@aZb*)XA+l?2vD@}ICS*#q655+#F%?~(*qQw zySp1SYRqpLYvJUC0F0dk>haPesCuPOigW~B2yHjUhA2TDmL%L6f`X^|Eu0^9UM_iT zCsMejNXC0ID2!Yzq#Jdb)x`FaRu@;-`}=;rbZ$u{a)+gd*cbwO3L!! zNI;-X$^wVC;$`LXzR4+>9RwGsjdiG}P}UX}6N6&0_r=8{xTA%|#YxdnAkoo4I~&w1 zF>pEx*wd#^6_#1PpY{vi$y}f0`rQ%boy!8Un(<3-@L!!~465VK{_^(tD{FKMX>{-J z?J(r_p4;I`+o|ZVK^aTD5m||krRYbV4pmZBdt>7-83QQ&!-tZrvE4pW)%=tZ777G0 zz({O-eAmh4{1r%zr|r1D%EHBkx)(>9wB-K%R7i1aM}ZddtRcj};J5S2qkH(1I4~^c z_l;~uP24io{%eDA277R2h=1!91t=5oRZ2lijGXpba)bE3RbhvHHW(rQJH-pbGm;UB>e9qjV3;PzP@zSg;`(|JKi1P-5AU8-^$bKlI+envhBO z$y;ng3c7>eJ#Y1V4ybm<-o-e zBOhmHI6m)YtSwy4G)X?29thJ?aKz8n#>WdI=Y-ir{zHBS(9e{yiDKAzadvkI3gFfX4 zmM#lsH~sW~0{g58M^F0(AFeK+z23RpA^sdlEZvk@jYiyk?^hN4BeFu_E52mw{1&4* zWK=m)1Id;WT}=ATmU-yACC9^DKE@ozX)kEDoYmro_7|5cmPfjio12Z5h4a9e6;M_? z?}@!t`i4swEjfQX0^v1py%Zw+Zh>!bVE9ctHK#W9IJQEXFfmv&PUtD&?VY-6~7K8(z_8D`wj4=^^EM!Yv-?-iXl4!KWFB&32j)7-oXJ1VRxXxS?$-NI6 z#`eVKbrFd_mg{OtAu71V8~>&DHl{rPd2Fm^fy!59I%NxBVs^b zPyn6U+g#^wC(W^4O46G?bju&B%Xw~SNStGX3(i~n38XaBgsWDpA~rDWz!)rdFAa z$#dHqd&DX`<50iYv`X(Cw~WSxZUJ6UH)-)w0}kr+#flzkgZj42|@ z$Qtvt@6}jBcJt2n`=0mw-ap=Re(&#h&$;Kh%X9B@p3n1~&vS2_v622k9uXb@z(MpC z9a8`x%pnADaWI9A-)m>4VDr~T-{4}la4yGK0H9@P9jzO|ne>tCv7&?G%`4fD^Y0s% z`3mx!?Cyz155D+W7}jIk-P0#=^@^@F+L%B$Mb@@@=g<>6;)QAU zt2?IrT6DT&Px#7`B+LN+W3}ZtY6yDcI^3q zTcuU;^I+>fta1jrbTDNr+%D|UH`++!?#@1L(UXi22Y=oO1K8!4JYo2iSG^0djIXYT z=65~p!^hHSB=5Q5QMm}7@qE4Wpt+W?(ZX=CaK=ZRmhuzf(irV*R22r}wPWIYs%xv# zTNp-L9qF7V=lCfWV0D`ak<{e?DnEZud@!XcasrjtGtQ59<1(Fe<04|o8}KLj?MMTH(0)|H&Katf&FX&W;Vdsq`7iz z>EiZrNkW^$D$XmEAy8gjee(MB=I-3o)YP9ew=dwu83=|Km%RGDI`JKe9&MjDv}e|` zZksGqD%p7^#`;&sM5=no-ln=}`v?5CX`yDxRU)g4KZKeSN@p71y>e#?SL4c8;${CZ*$Q+|LAsBONj_TGNu=LmOkH7ZP=*iA1N0t~Bpf4ZP3HMj?%TFz028+Re1Qd!6P}E0#4Rl9P&Fd`)^x$EOLRJv zUx^@RT=aIn=+PanK@Go_tW|omjC@Z^Gu_a!+|ox5^m;)3>SlRV~J-iHSd+t1`^jLAfxucVX505<2$f?{i zlge83p(YT*yXHZWZT72EXW;Gckhkm?-bpnLkn5QTQVaWQ7CTC?@8!Z(J&Ef-Yk2qb z_`FB?0tZxa17cC`_qfT+g}rJikvG^ne0&~feV6e{Q=nx#&c(|dmZ(&nTe%mdAqJ%q zc6B-MN8DN8Cs-|xG{{6#V5Y)jUqFaLWArMNXMw4Jt@>0)kn3|R=|j9fi`vdoK&ij1 z&pbTlQ->+BR)!pAFs=ExQEq?PTdrI#CYvmcAC?BN_xbGFPW^#-+0?nG0?37pou(6P zQ6H#dvi-k*jkGy}E6$-rR8}BBys7BqU#^mFxtS`{ zon=yL1!0u_w-!I<_0K6QD^E{P=Ph`}&V|fj?q1_n&Uk9u@?^ugprRd^?(X67Z|fzi zH@Dm`7IOh9LCoE-M!Q~Hv{E*eNKS^!F(C+O!USFnsAycPNu|hXb0l>zy!%JG4SHdf z!u~+E9drjd{!@I0!&Vhc-4z`NwJ=8o}FpPudUEtDUKl@-9pzXo4o-?VpnBV?5Hk*47?Dwx2A-y=zF?vpgnOu1M*cD{SCte^bD*9_!uW>B%_L+0h_S2JkCoS%Qc;<$TjLg8F z+U^-@i)P+ejiX{<-Cj@F&a^wWW)v-vN*jo3@Z~;w7ZE8Xl|JU=>V~v1=6`+S$Wiaq z&Q}Mx~;1VTAv%xdi~4$Gc3pLoH?+Q z?_5;GQr)CK*X)10@hK)AMRgBDmsVJEIr1OT_rZ#@fzD@FXQI>}+Hmk9@Xrj3ZA0;9 z_b8HiE2m6D6DJq<4``-s1i*eE-YaLCKj{J<^}k)s><#5H-$k#O!dc6Fo71zV-&!jj zh~0nWF(K`rj&4>Ko2V3EYKrYbGImn+H`^t7akK2ke`rIR|A5SDOZK)nv1A@@R$62) zv$WZ!%2Gm=@>ZM#I)IHzTTm`RH<`Qn$$NjG%qO3*Q&W;hF*+2<{R+W4tkUiA)9j{i z^d)swE&)s^6ssa;r8qJ0ks`^Jy`wLA;iZ(Zs@^F`hD7i+GTv5bcjX>ZXlaZrxuYUM zK;HD^jk!FggDjb_18wq~8NQ7Dz5E7aZkEVsq22xi9O28~21K|E3qTD~aA-i1#stxv zzrAKZFHUrM!Ys1p>OqhXfA!qK8t?IT`nI($jJBPk*BME8A!UqK#{4QTmrC;7qd1*q zf6#0Ap(aN)`jRZWh3-7LWK`yPSf<&CeN4*DWtioMAze z=OS!-!de>dY$^;>uin27*=@0a(7WT*Iam>D^A#r=2MAj`c^k3&5(i<2R~vk_IL4XJ zJ~VlZ`X?-0r#e?cQ$P6WB!@wI%>e)1HNsBA{P?4=F(1(h&y))ODZ8Xf3SaH}Rds%U zVfWx>_V5rKn2R9iH6OYgaJ}=y3%mvTK^F$7-1+aW5iDj`+D2$Ga~^Abk{J+YfU?hE>PwO)`_WG(Z2LDj)KSEfg0 zWtt}|m=wLQ3G$$6=5PC-`T<7`Q;Yp&L2#DL9?o8!s@T|T9krM8Xm2WOu7riTI<-<8 z*VN~wko8qt4Yt4cAiHFoC8^BCl|TS4?^E1G(A}%3G}`*?>y%XMW3R z2aq6uluLUEk!DNbY;ZO^WYtV$sfi{Qx9h*huVim~zYLc9;dmqh9Fo-tNW z`zHkctNZ?gx$?eHFydvw5v{dwF;{#zil`?aRoo@up`n`X=*Y$hf_xyA2?>XOd?)(1S_x-u<^Vq~lm;I=~Q2+qD zzMl4V03b{e0^o<4lQr&@6LW%jUDh{)Ge;oYAp!u7Eq!fGvj^!5bZXS_cmBp@-ED8U z`ZN6Va6t@CPm8TNpCfmV#rlfAz_Uk_1IffAYceuk8#{Fdtk!z)Jfri{Vf>OtSJH-Y zZ=L#Kb>SL`*ekyYe7T%%U@A1HGFqD;DYGvX;jW#p(bJcXS?iet}uPNgRVmXotGRN#^ABZkZef3-1b+#Rm zJ1Z2t?$C5<*yScg$mS5yv~S*9NGOWq+$lC1jTS$Jqxl^lsDH4$#vq~iNqaT-!O|Cd zn_y&yklVl>GI{J#I70oww}c-AtomFugQ@Y7-MTCk6b3k3j8~p-7xLIQ)z)T8k#*%# zr=6oCT@aAtK!&fuZxcN?J+v|xN4R5MvHd$S3l8|Auc`!|5&@0&yFzK~>rq>Qh*1~> z*rpkZ%cgY-^slZ5W!Pv=HwZj@iz#v-W0KrW$tHT*qLj_2MdE&s0AQpP!qTa$yhp{J zu>e(t-IeKT1|zHbwppe!(71pG(o#DpG@e{#xP@CDm7Km)eZcK8^m436Q8d;*o_;=d zbRY;FihNREUrb>e%eU19^+JVDU5c#x$D@2F7c2S#|gN`7iFmmKUqp&)z^ z{HMH!NjRSl=~3x@tF(l!tUVgc3m|Z_*t~Q)F36j}6)%*&XS+}q4OGT^-e0L+Y$tc( zD;o4ZUC!QU7J6J5w{q~ExvpG0HR#|bhGYvFLH3D+EYEs$nya3|OV6 zek9Kym4eJm9R+M~Y+o+Ecf5{@%!!#B_Vmid-Qw$eUEaBuAVa@I>pT_pC?et< z$zYYU9638iRck%E(e`jsqmV_C#0$(smyU&ECy-cEzOeBX!eYQd@BPJLnTXPQ^J&333mbJ2gAch>iycX?PRz7{8HYy1Du#xJw%2*^`#%&Y ztRb(Hh~g5gXuvbF>$v}#yxM?j(2*xFYO5I~)L?52%2JG!(OXa>mNZ;(w8;dW8-MOp zRJ)a>qWiGqPpkffhqN_sg*1M;eya~IacnGcI}jBR5FndHb(9xqbC6Z`qcRiaaH?t$ zIaWogHb+uL`C{bnSvP{J<7`Cv$5R6f#Nrpn{G7L%_jV}ekIaJf|K+b}z1A+M8fNoW-9F4-c1E1!CT zRg5z6gf}mB>w2-FoeL}>)@B_eHalj6I%GtjDot5KZgyYKQV&38?eAunEqx8%dtEBs zuO6(mUuFO_!VK8{kvcbL*kFya()T$5(>!-bb8K+hL;m${lOjU~s&Qdx9#+#u>Q7RT zL#W-PTk^qDZ*zc=-5>2de)Ag(l(hRFoXQeKwYqWD@*L3M-DbIbLhweV9k+W29NFSh zQr~yuqRRTte90#LA3oL;SFx1vm}+jT#4<-apR&gcD7R9;hAZ#F%%6RI$-_0?Zx~K` z+&U7LzBcLD>0eU<3p4;g-I>K0Z6{SDsJdX7_jt z3@@;noL2hcBZt2dN__JU|0|{P#?KGAhuNm8q;x!Ek$evaS}pKwmYCx%he;&H;CRQ; z=1YMGC*wOh=Wdqt%TiR`(_69iwg!A*w)Cr5Sm|?xMB6IS?TQ@ERDzYKN=Ezp_aRCC zfu{VRqM~AQyNFbCCu)^xW_-Av*@_rEJF^{l&i6?>Q!dY^qA2+zBvBSlP3(Z)5%a{( zXvG`UN=8j4N_Gh^t&gDG{akF-#p?jO*NXm__VwPBnVQzc0XJ1etg0ZVdqV_YEEows z*h^09j$z|Pc`D~dck0%&Ux2Ij`LYlz-Yuu=T4W;bvO&PZUMF3|_2WnYBDuh%QV!>t z*SU1dUExla<3M)DUsmRaOKvVl!D>_~hlcjdnpTBvNm0yVSl_k|AB0<=CozOv-hDrO z;MZq_o}csPGMnH7GdhQAZ)_G8W)j*J_uL+a#N%gl0I}aS=uC&X8bug1x=bwJWaru15z2Q3E7DYsl%Tq;*rv&O6F8f~BT{wv+Mi-#yyZ8d>t5?NO zx)e}CPRF1D%13D^F)+v=6o^2)X63vR^&5rLzrE=dgj5Y|pF~x5YVUl?!V}QYJ6c6x zOpA5(d5mM3Ga(cVHrjx2$BSy3Sg-kYOtT547z1excX1UOyc3EfDtu*LF#O)y-3kGN zyvyqrBSs-Qn-yq{em(b2e(%lm*O+|Ci})N$U^_HcND{pB1#xk#)*uB zYi){rC3X#&y8>aiuqIbs3j|9%c^kFx`-?UWgnEYfyHEfo^;7~^RC<3ul1Bo?HoVn+ zg8j1FRmohf!oO8reT+iZ%$Ro)$6DLOHJ7zaa9& zW#RqZ7l*?8T{}N<-VgiL!_>Fh3V1r_3Jo99m@XroExh-`I2Xud7-gg;h3`gwKLdyE zVPV8BF@&0aKr(@o&LoVCj*CNb(3zHx5Tr+I7NKO`d;10nnM#ouOUxAC8}FrRey?9+ z%wB}*G^Dv(tnvG0r4TwR%6XVJR(VQc`9eRr^n5GJD8ABNaldOcN?l|(K!K>&#pn|g zAu7e%9|@hK8f0CwX>FnM+ve4E^}Hy)I+?Mzx}Ur-?3a~REMik}NB%b5ekFUAg%XjY z_vc8&AM|f0-l`6UT)k8xDKnWt??9iRHIRGstJwhKf7?Z_g8nmQ&h#JDko3h;+GzPy zF33b}<}N~`dvCYQ?eLzoCNrL67;&L~*`=z!Oy~{gy*`iT^#UAhY*0HZW@BJS z(apodO5gk&My+^3sG|k@)rMG>#X4;UnAS79I?2fN`7IRo;Hmw=)^vO=xW=u|7Z&s` z&#Plf*3#^D^qy&P=bmZ4nj|UUNcI%6BtYhE@aqop+u)g>8$4Z*((;bC!R_AU;2g=w zsLaX4x=6imqk$tI(Slm;EVn=RAlk`pA8$!curi$OR!2I9UY>!1!_AYA)fFmJI;T&U z`L!UTT2&%(S(;B2p{?|f9~@6HTU$B59Alcogqeh_a+6afZFEQ~=#^gg@qNvQ_sF#G z4-J@gj=>!^lH-?kzF4YPKaVSzS@Lsrvu9zRH3;kWmgp@*-24p+>RzrtRzAXx1t0O>8SPEV~lSkBYG{i-5OsS zd!}?cnP={z)%@q*F1tb|CrGOYhEGXKJnzkvH?@wWfx%${fsVpJ>Kfs^!qsNS3vMOuaw{PM^$^KS;`Z}ss!&zMlKE(lA>)M=Sx1FB$u$8#*nVTl zDRL|7XSo&p1m!~BoGZWyeuMeaWqpV~3DT zaJ7~=W*nS$QNNet`9*2_!=0LQ9gFjI)FJBDD)U0$>g};ywV{Y8EoH5pkz^HF&&{3g zI`a%C)z{H}KgN5zmx+${j+guA3~d(tR`m;qqTfk7VVB9z2gbw7KUNqZJM&QdCXIT| z*f7hjo!`ZZwUsr`M`u1VC1v|3qrNalzS#icZ?@-JI%1rGrb%ouOVkeEiKTg+lDE-o z8Ze?_{g@}x>EXfAn)mW-2%*%Dr1GX%%6xnK;)X{jc4>zg0B%`N!SGEfn(ZXR@3TRt zG#i9iHFY&lUOv*QW!>eqAaX?*UQ?VY44g+9Wrn{zex^h-Ee&0@c-p%>m&_61)~KJt zuEg)v^D7TUA{}mz(*uF8IG`YzDw`@10N;3>(V<_!e9Qs_RaCU4rmS5uzlJY2oPDaF zv*#J+val^@PmVIJz4T3Aj5m$8%YW%gt28T6?`pY-o&g}Vej``cEoygiXMA9opaDdk z*8q4B+&P~im0;+;SI_)7pIy*1+rpV~iOM-~8V>4sI!4o0D?Ug&-Tp(2i(@eRF2%bq zVi7PJ3?x59MsIrvwL=%A9eAS5H$c4lQPyb z3JTzO*VyepYZ^U9SHI`xVaXhoXW#XP91R${6}io;w%mxQx`SIji#$FDdMn{*o4+-)vAXHeS@sb{3SCji0?Y2JvILpvT!+J)?2$%RY(M5QNK{4>9P z$u2}M44>0jPQu;y?5SHjMU;;KFr<*s&9xmz0SEHr&_+sIRfhP=ZsSHgA-G06x#AAs ziMw}?YNAZ0`kJ0o{5p6M9RY@dI+N|E>}>z=@zyf_knioNx@}om7#b!EiDXWj>P(j= z2Q^wmFGh%V+aD?lEX!fBlzLLswi6rVrt9!IDH`(VEQNIrrzs!8*oK*VczBX-ebSsB z5i2o4qh0v%`k^p7=7m}nVxn!JFFQ_Na0@r{OS0eT>LULh!qkF(1e2bi;2_s7*Gk!~ z518M?{wOGm_GVbyyJt-5x>Et8;6G(|IG8QnEz|&`gHK-%eb=Axf5!;HH>?; z1)qc|@A7n?%lE#9g71@0o62_Tmu6YtHRv$gb1)vj@hEcJbAJ;t{Ds;~%sbr=E2Gwsqn0m>e^Q8ds;ex+l}zynyRhC<4nwN9%tyHeWN2oJ%ouO!4;geP$9rwZ>P;_ zM~?FPwRc;$S#DdqU3L=3Ed7eYy}d}Pj)0%tzf9@lxQH(h^X(wRMFo%4k?&AaK`41ZM1hv)Niij(XSZR z{}CJFwDg&(bZI`Hv^Ko&59F|>Os387wUaz*^Unvw{aO41q;E~iJZNpV$}K}EFy_hE zwDz_cW>FaVytH}|K9Kr%4?Mr*iDr+VuXkVi{LlH>z_g#Nuv$AGowoVPme`8FKx*Tf zCM-7?$d@Shd~58>-O?k9&wz=#t*!9dkcDd_eSuvFF62!xGz-F@WKSBc> zhycq%Fm#MCsN2vh%sP6%`UM+cO%w(^XQ7!a&jsD;Z!7?Ai~zpmFk|=Z5z<{U4fe=+ zbp>PXXrI4X8e0)hlYG+IJ6GN|r;uXPd3|4lGL^M09}Tuv-1(AUHGb)8kX|48K(@lV zYf#YV3mPP8F2KUV65u*faGL&iy`?}y%L`7E^eWKkA*7xYgzvQ|q1DJBjF{k6Xg3LYP@srZ@Ym;*tJ+ zN|9XfYdZL^*$M-WN$$@ygA;z3Ih(2My4rs@5FwSZQ~3`>Xqb za%9?f9e_kex6iykYLd4wwINRKVziF)@>m)bg9&|>!2D$U@AddH!qftmQIt>$4!3yH z%ns5I&^urVBQBgf$Y&Ffsu1#>Pa?L^F6bb$NIfqQwncz7WYaRTzqDjl|?Q z(6LAOPRKM%J05t=lQf1RjBUMKkmrTTgC7dk6;v=S2ot(r71p-BfY<}yE@=(^lvWTbY(4Rd1Z!Db!UZE4JMhO)jN9I z>r#{%n(P2;)L-6-6}E+S*Q{CI8+kHfEe*~%(e2O4B6g-bta(_6^$;M*loar@dL~4X z4d0Zu*e;A?!$Mtu*qH8Hi{=`6?dgCW!SQ=jLrFGZwT3sKaRXK zP<50FbmDA%NnYS?({cbmKd{;bu05=!^5 zL9YA`ypOQD>QZcVRkyNp*S^72ZLw_WQdZiiT7}x*qkJo`f3uKi<`!`|b8k)~9nYjU zBVR9WOdq&kRz)t6OxwlC=>(DB6b&^J>FY-WHp8}a32XLh%)s*@YJ+P#Yf<5Zf(J-@ zLh*Iv>>(TTLkEc=Z@F1$FyiI#>>abwmX~6F>GEE6d2h=@?I6z6W9_&5-L#f? zL3ct{KkO%_!PaML9die|TuQYWWQ>V7{UlChR@5OLnHK$&14N1 znNF#yRZkj846CC&gM|r7>oM16ctjuRu2e>w2@)ombaj+U)M~&lpg!m+DDw7IvPEcw zc-!rC3x zm_}v2!}R|tVPZaB0bvr2gPW2`A&VLd!{KX?w2%~4pjm6<1jGR@}!_ELT6946BF9GeQ8616vy0zSzV5?W`240>~0E%s1CJn1`b2Y75_0cXqv zcdqi=MbxZqt`f$Pk0Q9Ass9D07bpgeu}Y|OSGP>19t1c`x?Ocvf?rPNo_?tePdhp& zxc{*}ol5$Eg4%i5N$An{uW*uQ+Ro`P-N0D1?ac>h)4m6Z=tnL%4alVtfdEZm|CeZC zH`M6Qj@_10hQn0FPo`>c!SHxq@DHRVVXYiy8mf;nIytxkTOhSRyYXib?l}Bkve;)Y zd-fkDSDn=#lu>5RvO=8z*azNva#6QEuG!*pXvCdZ&cd^7mY9_ZBj_=REf+`YVj1o) p5zf6AcV8+A|eSD5XuG%+$aBbQW@$$u4(1UmxFv6J90W;CT9V?woeTeWzjL|pAL$J{(i?VUpRNj^9cq|e z3qSzgUO$vlfca#l0Mfs>Bu-)gDGI5ihd7Bzl9=wPNzs)yZW)Zuq}|p@ek|zMLT>Iq zcbcf_VLn+YgAt->8vR;`=h{FZz*bQ1q3n34mol z>%{oA`3tG!0Wzu9Y3NNn*XHr|Xyb8n4KfxiX_@CVbTTG84aN(Ur!1XXp00000NkvXXu0mjf DD&3PB literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/ammo_shell_apfsds-du.png b/src/main/java/assets/hbm/textures/items/ammo_shell_apfsds-du.png new file mode 100644 index 0000000000000000000000000000000000000000..a7cf4351f782f438bd17c422cf992a4ed821c25f GIT binary patch literal 356 zcmV-q0h|7bP)As=7>1un!Cgw1x)j05wYZgoWROmw5a`q;PF?Hnrc)g{ zbn_P!N|$yJ1EF0y*+TON3b7Xb0WQMlQm^q6gNW~R-0?p5e(xRZL*>)5RL&~0i?^^^ zH1C@13ehRLpIx2g{^ocqm}Nrhmv!u)cL1($$5y5*Pridp1`V0LUCA~n4oow^D2n+W zf8n_{5J+B{H9&v38Yz;C^BRl!^bZ0MNESrDLbZ*K+aF>*zC?_on8kd`;mHx6YiAZ) zNSc$7H5E&_5CD`?sRQ3Zo_jT!3>qS{j!4`}m7AL&Im++HD-=sSJOy~JtqadhU?%Y$ zMB5N6(1*L8P00000_+8alf5 z2?TM`sgcm^bucd=q)^;CxfqU1lh&lsQ2I~j9`5=0xaYz;(rj*trtQcovyH4U41-l6 zxrJq&}|fv`SA(rMh6Jw>UONu2KWvF zFp3jC#_xEp4Fm#E1^NZ(513tw<>FN5`|EQCq0&YzHs+vM01kBM?&`Ts5z<%&D5a&* z?sf27yR@C91|YU6oHi<#Nvbo$vg)7yiSv)}pnRzvOxVN-4rH1Q39# zs+^MmMNv3_#Bq$Z7C?@LxNXN;i?x<83^{hBP8DN}jK|}q3#R^x?D6YhCtllWMo~&J z^;aZu1e5{{f_j6gLGEq?Cczcn`3QjdqU?oud)dIOz=2u-CIMXD1lw+QA#NXF&(1DT z*CUcR;`!e1EO!f#W!|}%6*w<%H6Qhw@6Y!^hzlUu<^wh7A;^4DlEe|IX=x?TMKVP4 zy!Y)>gSSC literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/ammo_shell_w9.png b/src/main/java/assets/hbm/textures/items/ammo_shell_w9.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0a47d71603d1442d456ffa7b3dd2dca026fcc5 GIT binary patch literal 411 zcmV;M0c8G(P)S4i#~zPIjq7Cl#SX|A6*Y8o|*;IF}?%+5{E-!NGg)?!Nc#?!iAvJo~i_0Hu`V z^LZMLMsP0UY6NJQH6sxahG?y6wOUAjDl%P-1*O6ptud0C2m=;s&v= zK`A9tMjXcx$8n@yu|)boe*_S>o6sw-W>HE7$?n6p)GLlgc@*z$(e3*Ojb^jAr^wcR_%WPweSb< zV}b>RM0TlJtJY$=*@dKP6H87Xf?cyh+mZ3)-M#m|@7))+pwa5eMyo5gy(=Vp(NcQR zG9%(eOL_l1k^uW<K;qWzcZd-;7!w=#(20$w!UtV1k$1$tb3LylhX)+1Mv?~FR z@1IQPLMxp>K?s4a>m*4+t={A+Ns^3+y7S$EmK)(`oJ|oG zr_;Hh=Q!+@k!{P6?MlET7-O1d8fO!Q9oUv3PmT`Oh0QcTuE(cZt^87^!po?^C(<2!rnranA;cPo#%Ty3h#DTb70p0m1= z5xtRGg@QM`B1r?)ls}+R_DLz(;uW*6g|Kp(M%PzBS_grQz*(`aOwPd^GJEpFjw1k9&q=W>8Xk%s|V3=?qe@VaN Svp+yzF?hQAxvX9^@ z<#?iIcVyy@x$Jh)x*wz^O7!^hAzJr2wJU0d;O_cd)$ER(wc7v`N@WVAGL~fl$g0;v z>pqU-0Fc^R+{&i43&6-3@Hx6==z3})f+$fow}D|8jGRGeXK4{|wV08kt!F0g7=U`S z6?Qf=gCy{Jc7?0n8$!h)6I(LG7pro00000NkvXXu0mjf4D7BV literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/cobalt_decorated_shovel.png b/src/main/java/assets/hbm/textures/items/cobalt_decorated_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..db8f5095a8b974a08c7daf80539b87cdc64da9cb GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfcOTiTi(ex1efz=xlm+b?#PUTLW{I8Z4UgUk%(`HAr09L)o&K92*8~-bSS|APOI_Z%FMY`) zF^MDGf79+8U&;$p&0RE+*I=&twI8*fw_LI(WiCpsV{~)KS*-9><_yr^44$rjF6*2U FngE{mexLvV literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/cobalt_decorated_sword.png b/src/main/java/assets/hbm/textures/items/cobalt_decorated_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..73258a4a7354bc7a9f1c1d4c171397fc77368a26 GIT binary patch literal 320 zcmV-G0l)r`vir~LHtrnmQx zy53a!zu?Iv#(I6In?C>>>-D3a-++5Hib(I+wk<*k*w-#vZz|o_E*iCLtk)t>)R&i< zozrOM`1^vHf#nvvgTvKzg-m2nxpye?L{FDnF!QJNLCaqWiagPavlBGWugF$+001I_ zhzt_N#(EVI5D}V#LwA&@s~v!8ea9k#G))mgKzEd$(v%1bB0>lOL^SsMC!IEGmC zCMQU+GV@DZWbKhX_5bjVbp8?}A))j`=~kQ6Vi?vl9$|PT<$VU?o-d*U4U pa$^|MO_DD6yz@%ZSzyb+aB8{q=9gieazHZ~JYD@<);T3K0RRwNDj)y= literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/dnt_helmet.png b/src/main/java/assets/hbm/textures/items/dnt_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..e40ac1d4ea1099fbee4896c2a84cc00b34cc65f6 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfSf=sczh~KIcB_ZKW@wZ$MzSgFp7Kr4qI$t(!JFq*q#Y)5f4J!*FMi=V vLsGEfMLh?8hZH*_>2nTcjD`#SO&J(=9+xPU4!L;%XflJRtDnm{r-UW|>H{tp literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/dnt_plate.png b/src/main/java/assets/hbm/textures/items/dnt_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8190caeb4327cea831172994a32ed99ff0fe14 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf$a}}n$FgTe~DWM4faw#v8 literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/starmetal_axe.png b/src/main/java/assets/hbm/textures/items/starmetal_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c2cd6b2d9bb1441ee3a28e4bdd59d6eb7da9ab GIT binary patch literal 363 zcmV-x0hIoUP)fu{21JYEk|aXchpi?6Rdvuh4UUaYnT*E{rg@F% zgDu-tvt^9$PccoWdCsvq8(6lhZtw1qaZH+Sw7Lm^Vcam87_Gnf1Llm7eoocXUS^Z11EiF0a)mXzP|>ru=)R%GsHsmrq`|$ui!Xla`Q>kOagQo6GeNzr397 d;jIz?bfieZH>NrPDWH29JYD@<);T3K0RW+^VZQ(X literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/starmetal_pickaxe.png b/src/main/java/assets/hbm/textures/items/starmetal_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..f812b6d574bf06f9451c47c47ae77495a546b02a GIT binary patch literal 294 zcmV+>0oneEP)Jr06E5QT@?Gm+2{POy!Y#m3m#vx&zrHkQV~c3y$Rgc1r9 zZs8r|*|-}(mLFfW+2wt2n3;e)VivIHwtWY_?|u}=3d{m^{em$KjA_6u&;{DJSqQU$ z);YA!9Vki^jA@{C?gtEig;_w#6jG*O76`-5GV>4=$I3z6{StGOD4ebZm8BsfqAYv% znmlVh951eH+ZPL%tRPAhw!1ymML|_{?~QV{ieYkB%)(8@Yd+r|-fr7H83jxwTiHEX sojioBPWEa|@~HXmWcu#G*qoQ@15X&5%Kul46aWAK07*qoM6N<$g8Y4XiU0rr literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/starmetal_shovel.png b/src/main/java/assets/hbm/textures/items/starmetal_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..db4b98d3c18b80829872038a1d6014cbe6f65374 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf|gUsHleEB|-(nI8MtAIb~Nc+9C`V!kWZ?EazNjghGy35zfKe3}2?S@ev#XJaSx zNs0UafA{m8o&wLrBu(SS_J;?%`vf%aNOAA!H*=S;WFo@+31(&62QJGc5h(U&&YZ#sImZpx=iX}9}> z%Jwq6f8HId?+_|tuxzW#ttfS%`g&iLjf@9oTnl=B^}I`tf!RbOdACW`=a(kP%?Emh N!PC{xWt~$(69B#(Z!G`- literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/starmetal_sword.png b/src/main/java/assets/hbm/textures/items/starmetal_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9839d9f0ef2aae7aa5668851b02700668972ef GIT binary patch literal 316 zcmV-C0mJ@@P)D%K42J(yLjlvFfTE(q8K~N!Q=Y)2_@3fA);AdH8?LIHy;E`==NYfqI%q;t}f9rRIfFN=L0L&hP5O}e8f!1l*=DPMW zpKrt%EB_1MJ%q@~c6;~(n8?YuJ->lFHZuE8v1vX~mU|S%Ix@yeQLLk0$wW@3nU&@0 zUB=^C@6DZwL{79$(Y6gvrz3{L5tu!0ZGN~;&KD1~4YW?d?6KRu-j;l=V47KZnmnV< zbHs5B08lFFS3u;1*+V@hsPi0E_4d*|au21F5FVds%${j!?&5j? O0000^(OhNU;<uMyXhZPH>qXk9bmO!s#ZC&>~%_btE;F-Pkc(0 zjDd5%kP;`HZlb@tR-)X1JVQ?^ZzsaIIA z^1sCj<{3B7E#j@Inxgp4-nd$Fc|gIOjuUs^nhD8jpFUG|%v8YUcEp_PGnb~vFdtm# zP;jSoW&4>o>Ff4rP00{Q`(_+|FJtoy#~C-zcP*9W+t}Y7uOK9{gPZlZZtP#--#f0G z*S{=QNPqC{_ur-G6WuPG+?qGjrC_>UV{pdpvKPDjcCDMd?|u6Fz9(!;4&2R~zIKDa zJ13AW8Uiw0EbUCl%*H*!%`UOm>wg`X!;3Dpvj=G0HreOSca;NpW#Shr+@F#C;Kr7S z!)}$Kp(~HKuGzaXO?m~Vr{wJ5;IpO$UN??ysGRj=>9Tdamzmt%0)rL3dEfs2Cx7k~ zn;L7|<@wi^Tq(?E^GdKV4O$S`cuPcr>rCdVD+ZbY&4=oef)XP2YOc;V(EIwsG$APA zRn)TH)0w(0LK0@(Oubw^8^1*-El=`$@MZV@iF2-Pxu5hcPQ&wX4D;$$r?Pmhr~4nT XJh#Ys&h*8=NN4bL^>bP0l+XkKM}qSN literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/models/turrets/carriage_friendly.png b/src/main/java/assets/hbm/textures/models/turrets/carriage_friendly.png new file mode 100644 index 0000000000000000000000000000000000000000..aee244d0c420402520b7e7853e64b27484df3384 GIT binary patch literal 652 zcmV;70(1R|P)u+6O_RPrLS;@k}Qv`_z z>0Sw@nljKZw3gD4D7NEEF6BO{QW7Q3-S6w=d=BC`&hd{)(=_loUXmnxdLH>4T=+}a zw*iMj9LM==Hv4luthy-pLn7FcVvb!b7LE5y4kjivnS~+ayGpP{axgK2&%sHObQ+;` z@2gu+NDd}O1olLlra@J7i@?N)z{DJUnbtSG)`(Ti=kr$Gy)4Um^+~#E9pi1bU!Tz` z^3E?2w2fX(mSuqtdwkf!W}#6OH;N*sF_cn;u`(}qwIy_&>GBNg^R|%#0F%kY={YTM z8|ot0)vpi$P9h*01&GG=DOr7OpuTgg)&2|XgmoEH<0|lSx!gPF;FocVh{i{V#()}C z8)RbuC#e0h&cWLkYyfPHIoYL4eLN&_i%|JBJS7H3V+8Ab^7wQH0C>22HyZf%{uBUk zbN$9Ls=M;b%IoQLN^)=CQ2Nyv!TKYxonfU}8jIVnkqKSXU8! mHhp{{0u#epV9pB&Q+@$}4{KRIAE3(s0000 0 && world.getBlock(x + ix, y + iy, z + iz) == Blocks.air) { world.setBlock(x + ix, y + iy, z + iz, this.getGas()); } } diff --git a/src/main/java/com/hbm/blocks/turret/TurretChekhov.java b/src/main/java/com/hbm/blocks/turret/TurretChekhov.java index 431864ad4..d4b80e9b6 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretChekhov.java +++ b/src/main/java/com/hbm/blocks/turret/TurretChekhov.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.machine.TileEntityMachineCyclotron; import com.hbm.tileentity.turret.TileEntityTurretChekhov; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; diff --git a/src/main/java/com/hbm/blocks/turret/TurretFriendly.java b/src/main/java/com/hbm/blocks/turret/TurretFriendly.java new file mode 100644 index 000000000..6a50de4fe --- /dev/null +++ b/src/main/java/com/hbm/blocks/turret/TurretFriendly.java @@ -0,0 +1,68 @@ +package com.hbm.blocks.turret; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.turret.TileEntityTurretFriendly; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class TurretFriendly extends BlockDummyable { + + public TurretFriendly(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityTurretFriendly(); + return new TileEntityProxyCombo(true, true, false); + } + + @Override + public int[] getDimensions() { + return new int[] { 0, 0, 1, 0, 1, 0 }; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_friendly, world, pos[0], pos[1], pos[2]); + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/hbm/blocks/turret/TurretJeremy.java b/src/main/java/com/hbm/blocks/turret/TurretJeremy.java index 88734cb1c..94a5f5a69 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretJeremy.java +++ b/src/main/java/com/hbm/blocks/turret/TurretJeremy.java @@ -1,10 +1,14 @@ package com.hbm.blocks.turret; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.turret.TileEntityTurretJeremy; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; @@ -44,4 +48,21 @@ public class TurretJeremy extends BlockDummyable { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_jeremy, world, pos[0], pos[1], pos[2]); + return true; + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/blocks/turret/TurretTauon.java b/src/main/java/com/hbm/blocks/turret/TurretTauon.java index e9e7a17e4..d8925201f 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretTauon.java +++ b/src/main/java/com/hbm/blocks/turret/TurretTauon.java @@ -1,10 +1,14 @@ package com.hbm.blocks.turret; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.turret.TileEntityTurretTauon; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; @@ -44,4 +48,21 @@ public class TurretTauon extends BlockDummyable { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_tauon, world, pos[0], pos[1], pos[2]); + return true; + } else { + return false; + } + } } diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 360f8230b..ddf2098a2 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -58,9 +58,20 @@ public class ToolRecipes { GameRegistry.addRecipe(new ItemStack(ModItems.desh_shovel, 1), new Object[] { "I", "S", "S", 'I', ModItems.ingot_desh, 'S', Items.stick }); GameRegistry.addRecipe(new ItemStack(ModItems.desh_hoe, 1), new Object[] { "II", " S", " S", 'I', ModItems.ingot_desh, 'S', Items.stick }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.meteorite_sword, 1), new Object[] { " B", "GB ", "SG ", 'B', ModItems.blade_meteorite, 'G', "plateGold", 'S', Items.stick })); + + GameRegistry.addRecipe(new ItemStack(ModItems.cobalt_decorated_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', ModItems.ingot_cobalt, 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_sword }); + GameRegistry.addRecipe(new ItemStack(ModItems.cobalt_decorated_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', ModItems.ingot_cobalt, 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_pickaxe }); + GameRegistry.addRecipe(new ItemStack(ModItems.cobalt_decorated_axe, 1), new Object[] { "II", "IB", " S", 'I', ModItems.ingot_cobalt, 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_axe }); + GameRegistry.addRecipe(new ItemStack(ModItems.cobalt_decorated_shovel, 1), new Object[] { "I", "B", "S", 'I', ModItems.ingot_cobalt, 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_shovel }); + GameRegistry.addRecipe(new ItemStack(ModItems.cobalt_decorated_hoe, 1), new Object[] { "II", " B", " S", 'I', ModItems.ingot_cobalt, 'S', ModItems.ingot_meteorite_forged, 'B', ModItems.cobalt_hoe }); + GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_sword, 1), new Object[] { " I ", " I ", "SBS", 'I', ModItems.ingot_starmetal, 'S', ModItems.ingot_cobalt, 'B', ModItems.cobalt_decorated_sword }); + GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_pickaxe, 1), new Object[] { "III", " B ", " S ", 'I', ModItems.ingot_starmetal, 'S', ModItems.ingot_cobalt, 'B', ModItems.cobalt_decorated_pickaxe }); + GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_axe, 1), new Object[] { "II", "IB", " S", 'I', ModItems.ingot_starmetal, 'S', ModItems.ingot_cobalt, 'B', ModItems.cobalt_decorated_axe }); + GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_shovel, 1), new Object[] { "I", "B", "S", 'I', ModItems.ingot_starmetal, 'S', ModItems.ingot_cobalt, 'B', ModItems.cobalt_decorated_shovel }); + GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_hoe, 1), new Object[] { "II", " B", " S", 'I', ModItems.ingot_starmetal, 'S', ModItems.ingot_cobalt, 'B', ModItems.cobalt_decorated_hoe }); //Drax - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.drax, 1), new Object[] { "BCF", "DDM", "BCC", 'B', ModItems.blades_advanced_alloy, 'C', "ingotCobalt", 'F', ModItems.fusion_core, 'D', "ingotDesh", 'M', ModItems.motor })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.drax, 1), new Object[] { "BDS", "CDC", "FMF", 'B', ModItems.starmetal_pickaxe, 'S', ModItems.starmetal_shovel, 'C', "ingotCobalt", 'F', ModItems.fusion_core, 'D', "ingotDesh", 'M', ModItems.motor_desh })); GameRegistry.addRecipe(new ItemStack(ModItems.drax_mk2, 1), new Object[] { "SCS", "IDI", "FEF", 'S', ModItems.ingot_starmetal, 'C', ModItems.crystal_trixite, 'I', ModItems.ingot_saturnite, 'D', ModItems.drax, 'F', ModItems.fusion_core, 'E', ModItems.circuit_targeting_tier5 }); GameRegistry.addRecipe(new ItemStack(ModItems.drax_mk3, 1), new Object[] { "ECE", "CDC", "SBS", 'E', ModBlocks.block_euphemium_cluster, 'C', ModItems.crystal_schrabidium, 'D', ModItems.drax_mk2, 'S', ModItems.circuit_targeting_tier6, 'B', ItemBattery.getFullBattery(ModItems.battery_spark) }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 6482f4f18..a7fe05b4b 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -310,6 +310,17 @@ public class WeaponRecipes { 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 }); + + //240mm Shells + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', Blocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', Blocks.tnt, 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_explosive, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModItems.ingot_semtex, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_explosive, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModItems.ingot_semtex, 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_apfsds_t, 4), new Object[] { " I ", "GIG", "CCC", 'I', "ingotTungsten", 'G', Items.gunpowder, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_apfsds_t, 4), new Object[] { " I ", "GIG", "CCC", 'I', "ingotTungsten", 'G', ModItems.cordite, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_apfsds_du, 4), new Object[] { " I ", "GIG", "CCC", 'I', "ingotUranium238", 'G', Items.gunpowder, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_apfsds_du, 4), new Object[] { " I ", "GIG", "CCC", 'I', "ingotUranium238", 'G', ModItems.cordite, 'C', "ingotCopper" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_shell_w9, 1), new Object[] { " P ", "NSN", " P ", 'P', "nuggetPlutonium239", 'N', "plateDenseLead", 'S', ModItems.ammo_shell_explosive })); //Mini Nuke GameRegistry.addRecipe(new ItemStack(ModItems.ammo_nuke, 1), new Object[] { "P", "S", "P", 'P', ModItems.nugget_pu239, 'S', ModItems.assembly_nuke }); @@ -389,6 +400,7 @@ public class WeaponRecipes { GameRegistry.addRecipe(new ItemStack(ModItems.grenade_burst, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_breach, 'C', ModItems.grenade_generic }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', "dustSulfur", 'P', ModItems.powder_poison, 'C', "dustCopper", 'A', new ItemStack(ModItems.fluid_tank_full, 1, FluidType.ACID.getID()) })); GameRegistry.addRecipe(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); + GameRegistry.addRecipe(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.grenade_nuke), new Object[] { "CGC", "CGC", "PAP", 'C', ModBlocks.det_charge, 'G', ModItems.grenade_mk2, 'P', "plateAdvanced", 'A', Blocks.anvil })); //IF Grenades diff --git a/src/main/java/com/hbm/entity/grenade/EntityWastePearl.java b/src/main/java/com/hbm/entity/grenade/EntityWastePearl.java new file mode 100644 index 000000000..080d9463e --- /dev/null +++ b/src/main/java/com/hbm/entity/grenade/EntityWastePearl.java @@ -0,0 +1,51 @@ +package com.hbm.entity.grenade; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class EntityWastePearl extends EntityGrenadeBase { + + public EntityWastePearl(World p_i1773_1_) { + super(p_i1773_1_); + } + + public EntityWastePearl(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityWastePearl(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + int x = (int)Math.floor(posX); + int y = (int)Math.floor(posY); + int z = (int)Math.floor(posZ); + + for(int ix = x - 3; ix <= x + 3; ix++) { + for(int iy = y - 3; iy <= y + 3; iy++) { + for(int iz = z - 3; iz <= z + 3; iz++) { + + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock(ix, iy, iz).isReplaceable(worldObj, ix, iy, iz) && ModBlocks.fallout.canPlaceBlockAt(worldObj, ix, iy, iz)) { + worldObj.setBlock(ix, iy, iz, ModBlocks.fallout); + } else if(worldObj.getBlock(ix, iy, iz) == Blocks.air) { + + if(rand.nextBoolean()) + worldObj.setBlock(ix, iy, iz, ModBlocks.gas_radon); + else + worldObj.setBlock(ix, iy, iz, ModBlocks.gas_radon_dense); + } + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java index 6d3683030..d9dab2d9b 100644 --- a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java +++ b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java @@ -62,8 +62,10 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia amount *= 0.25F; if(source.isExplosion()) amount *= 0.5F; - if(amount > 50) - amount = 50; + + if(amount > 50) { + amount = 50 + (amount - 50) * 0.25F; + } return super.attackEntityFrom(source, amount); } diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 640536574..57ebce044 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -158,49 +158,48 @@ public class BobmazonOfferFactory { tools.add(new Offer(new ItemStack(ModItems.hazmat_red_kit), Requirement.CHEMICS, 100 * inflation)); tools.add(new Offer(new ItemStack(ModItems.hazmat_grey_kit), Requirement.OIL, 160 * inflation)); - special.add(new Offer(new ItemStack(ModItems.nuke_starter_kit), Requirement.HIDDEN, 20)); - special.add(new Offer(new ItemStack(ModItems.nuke_advanced_kit), Requirement.HIDDEN, 30)); - special.add(new Offer(new ItemStack(ModItems.boy_kit), Requirement.HIDDEN, 35)); - special.add(new Offer(new ItemStack(ModItems.missile_kit), Requirement.HIDDEN, 60)); - special.add(new Offer(new ItemStack(ModItems.grenade_kit), Requirement.HIDDEN, 20)); - special.add(new Offer(new ItemStack(ModItems.jetpack_vector), Requirement.HIDDEN, 10)); - special.add(new Offer(new ItemStack(ModItems.jetpack_tank), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModItems.gun_lever_action), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModItems.ammo_20gauge, 24), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModItems.ammo_20gauge_incendiary, 24), Requirement.HIDDEN, 7)); - special.add(new Offer(new ItemStack(ModItems.gun_uzi_silencer, 1), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModItems.ammo_22lr, 64), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModItems.ammo_22lr_ap, 64), Requirement.HIDDEN, 4)); - special.add(new Offer(new ItemStack(ModItems.gun_hk69, 24), Requirement.HIDDEN, 8)); - special.add(new Offer(new ItemStack(ModItems.ammo_grenade, 6), Requirement.HIDDEN, 4)); - special.add(new Offer(new ItemStack(ModItems.ammo_grenade_sleek, 6), Requirement.HIDDEN, 6)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 10), Requirement.HIDDEN, 1)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 5), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModBlocks.machine_epress, 2), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModBlocks.machine_assembler, 1), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModBlocks.machine_chemplant, 1), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModBlocks.machine_boiler_off, 1), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModBlocks.machine_well, 1), Requirement.HIDDEN, 5)); - special.add(new Offer(new ItemStack(ModBlocks.machine_refinery, 1), Requirement.HIDDEN, 8)); - special.add(new Offer(new ItemStack(ModBlocks.machine_fluidtank, 4), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModBlocks.barrel_antimatter, 4), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModItems.ingot_steel, 64), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.ingot_copper, 64), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.ingot_red_copper, 64), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.ingot_titanium, 64), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.ingot_tungsten, 64), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core, 1), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core_large, 1), Requirement.HIDDEN, 3)); - special.add(new Offer(new ItemStack(ModBlocks.struct_launcher, 40), Requirement.HIDDEN, 7)); - special.add(new Offer(new ItemStack(ModBlocks.struct_scaffold, 11), Requirement.HIDDEN, 7)); - special.add(new Offer(new ItemStack(ModItems.loot_10, 1), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.loot_15, 1), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModItems.loot_misc, 1), Requirement.HIDDEN, 2)); - special.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.HIDDEN, 1)); - special.add(new Offer(new ItemStack(ModBlocks.crate_ammo, 1), Requirement.HIDDEN, 15)); - special.add(new Offer(new ItemStack(ModItems.book_of_, 1), Requirement.HIDDEN, 100)); - special.add(new Offer(new ItemStack(ModItems.mysteryshovel, 1), Requirement.HIDDEN, 100)); - special.add(new Offer(new ItemStack(ModBlocks.ntm_dirt, 1), Requirement.HIDDEN, 2240)); + special.add(new Offer(new ItemStack(ModItems.ingot_steel, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_copper, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_red_copper, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_titanium, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_tungsten, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_cobalt, 64), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_schrabidium, 16), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.ingot_euphemium, 8), Requirement.STEEL, 16)); + special.add(new Offer(new ItemStack(ModItems.ingot_dineutronium, 1), Requirement.STEEL, 16)); + special.add(new Offer(new ItemStack(ModItems.ingot_starmetal, 16), Requirement.STEEL, 8)); + special.add(new Offer(new ItemStack(ModItems.ingot_semtex, 16), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_u235, 16), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ingot_pu239, 16), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.ammo_container, 16), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.nuke_starter_kit), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.nuke_advanced_kit), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.boy_kit), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.prototype_kit), Requirement.STEEL, 10)); + special.add(new Offer(new ItemStack(ModItems.missile_kit), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.grenade_kit), Requirement.STEEL, 5)); + special.add(new Offer(new ItemStack(ModItems.jetpack_vector), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModItems.jetpack_tank), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 10), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 5), Requirement.STEEL, 3)); + special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core, 1), Requirement.STEEL, 3)); + special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core_large, 1), Requirement.STEEL, 3)); + special.add(new Offer(new ItemStack(ModBlocks.struct_launcher, 40), Requirement.STEEL, 7)); + special.add(new Offer(new ItemStack(ModBlocks.struct_scaffold, 11), Requirement.STEEL, 7)); + special.add(new Offer(new ItemStack(ModItems.loot_10, 1), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModItems.loot_15, 1), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModItems.loot_misc, 1), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModBlocks.crate_ammo, 1), Requirement.STEEL, 2)); + special.add(new Offer(new ItemStack(ModItems.crucible, 1, 3), Requirement.STEEL, 10)); + special.add(new Offer(new ItemStack(ModItems.sat_laser, 1), Requirement.HIDDEN, 8)); + special.add(new Offer(new ItemStack(ModItems.sat_gerald, 1), Requirement.HIDDEN, 32)); + special.add(new Offer(new ItemStack(ModItems.billet_yharonite, 4), Requirement.HIDDEN, 16)); + special.add(new Offer(new ItemStack(ModItems.ingot_electronium, 1), Requirement.HIDDEN, 16)); + special.add(new Offer(new ItemStack(ModItems.book_of_, 1), Requirement.HIDDEN, 16)); + special.add(new Offer(new ItemStack(ModItems.mysteryshovel, 1), Requirement.HIDDEN, 16)); + special.add(new Offer(new ItemStack(ModBlocks.ntm_dirt, 1), Requirement.HIDDEN, 16)); + special.add(new Offer(new ItemStack(ModItems.euphemium_kit, 1), Requirement.HIDDEN, 64)); } public static List getOffers(ItemStack stack) { diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 942f809e8..77c7be913 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -7,11 +7,11 @@ import com.hbm.handler.guncfg.*; import com.hbm.items.ModItems; public class BulletConfigSyncingUtil { - + private static HashMap configSet = new HashMap(); - + static int i = 0; - + /// duplicate ids will cause wrong configs to be loaded /// public static int TEST_CONFIG = i++; public static int IRON_REVOLVER = i++; @@ -179,6 +179,12 @@ public class BulletConfigSyncingUtil { public static int ROCKET_TOXIC_LASER = i++; public static int ROCKET_PHOSPHORUS_LASER = i++; + public static int SHELL_NORMAL = i++; + public static int SHELL_EXPLOSIVE = i++; + public static int SHELL_AP = i++; + public static int SHELL_DU = i++; + public static int SHELL_W9 = i++; + public static int NUKE_NORMAL = i++; public static int NUKE_LOW = i++; public static int NUKE_HIGH = i++; @@ -196,9 +202,9 @@ public class BulletConfigSyncingUtil { public static int NUKE_MIRV_HIGH = i++; public static int NUKE_MIRV_SAFE = i++; public static int NUKE_MIRV_SPECIAL = i++; - + public static int NUKE_AMAT = i++; - + public static int ZOMG_BOLT = i++; public static int CHL_LR22 = i++; @@ -221,11 +227,11 @@ public class BulletConfigSyncingUtil { public static int WORM_BOLT = i++; public static int WORM_LASER = i++; - + public static void loadConfigsForSync() { - + configSet.put(TEST_CONFIG, BulletConfigFactory.getTestConfig()); - + configSet.put(IRON_REVOLVER, Gun357MagnumFactory.getRevIronConfig()); configSet.put(STEEL_REVOLVER, Gun357MagnumFactory.getRevSteelConfig()); configSet.put(LEAD_REVOLVER, Gun357MagnumFactory.getRevLeadConfig()); @@ -236,7 +242,7 @@ public class BulletConfigSyncingUtil { configSet.put(NIGHT2_REVOLVER, Gun357MagnumFactory.getRevNightmare2Config()); configSet.put(SATURNITE_REVOLVER, Gun357MagnumFactory.getRevSteelConfig().setToFire(3)); configSet.put(DESH_REVOLVER, Gun357MagnumFactory.getRevDeshConfig()); - + configSet.put(G20_NORMAL, Gun20GaugeFactory.get20GaugeConfig()); configSet.put(G20_SLUG, Gun20GaugeFactory.get20GaugeSlugConfig()); configSet.put(G20_FLECHETTE, Gun20GaugeFactory.get20GaugeFlechetteConfig()); @@ -247,7 +253,7 @@ public class BulletConfigSyncingUtil { configSet.put(G20_SHOCK, Gun20GaugeFactory.get20GaugeShockConfig()); configSet.put(G20_WITHER, Gun20GaugeFactory.get20GaugeWitherConfig()); configSet.put(G20_SLEEK, Gun20GaugeFactory.get20GaugeSleekConfig()); - + configSet.put(ROCKET_NORMAL, GunRocketFactory.getRocketConfig()); configSet.put(ROCKET_HE, GunRocketFactory.getRocketHEConfig()); configSet.put(ROCKET_INCENDIARY, GunRocketFactory.getRocketIncendiaryConfig()); @@ -260,7 +266,7 @@ public class BulletConfigSyncingUtil { configSet.put(ROCKET_CHAINSAW, GunRocketFactory.getRocketRPCConfig()); configSet.put(ROCKET_TOXIC, GunRocketFactory.getRocketChlorineConfig()); configSet.put(ROCKET_CANISTER, GunRocketFactory.getRocketCanisterConfig()); - + configSet.put(GRENADE_NORMAL, GunGrenadeFactory.getGrenadeConfig()); configSet.put(GRENADE_HE, GunGrenadeFactory.getGrenadeHEConfig()); configSet.put(GRENADE_INCENDIARY, GunGrenadeFactory.getGrenadeIncendirayConfig()); @@ -272,19 +278,19 @@ public class BulletConfigSyncingUtil { 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()); configSet.put(G12_SHRAPNEL, Gun12GaugeFactory.get12GaugeShrapnelConfig()); configSet.put(G12_DU, Gun12GaugeFactory.get12GaugeDUConfig()); configSet.put(G12_AM, Gun12GaugeFactory.get12GaugeAMConfig()); configSet.put(G12_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig()); - + configSet.put(LR22_NORMAL, Gun22LRFactory.get22LRConfig()); configSet.put(LR22_AP, Gun22LRFactory.get22LRAPConfig()); configSet.put(LR22_NORMAL_FIRE, Gun22LRFactory.get22LRConfig().setToFire(3)); configSet.put(LR22_AP_FIRE, Gun22LRFactory.get22LRAPConfig().setToFire(3)); - + configSet.put(M44_NORMAL, Gun44MagnumFactory.getNoPipConfig()); configSet.put(M44_AP, Gun44MagnumFactory.getNoPipAPConfig()); configSet.put(M44_DU, Gun44MagnumFactory.getNoPipDUConfig()); @@ -294,12 +300,12 @@ public class BulletConfigSyncingUtil { configSet.put(M44_BJ, Gun44MagnumFactory.getBJConfig()); configSet.put(M44_SILVER, Gun44MagnumFactory.getSilverStormConfig()); configSet.put(M44_ROCKET, Gun44MagnumFactory.getRocketConfig()); - + configSet.put(P9_NORMAL, Gun9mmFactory.get9mmConfig()); configSet.put(P9_AP, Gun9mmFactory.get9mmAPConfig()); configSet.put(P9_DU, Gun9mmFactory.get9mmDUConfig()); configSet.put(P9_ROCKET, Gun9mmFactory.get9mmRocketConfig()); - + configSet.put(BMG50_NORMAL, Gun50BMGFactory.get50BMGConfig()); configSet.put(BMG50_INCENDIARY, Gun50BMGFactory.get50BMGFireConfig()); configSet.put(BMG50_PHOSPHORUS, Gun50BMGFactory.get50BMGPhosphorusConfig()); @@ -308,7 +314,7 @@ public class BulletConfigSyncingUtil { configSet.put(BMG50_DU, Gun50BMGFactory.get50BMGDUConfig()); configSet.put(BMG50_STAR, Gun50BMGFactory.get50BMGStarConfig()); configSet.put(BMG50_SLEEK, Gun50BMGFactory.get50BMGSleekConfig()); - + configSet.put(R5_NORMAL, Gun5mmFactory.get5mmConfig()); configSet.put(R5_EXPLOSIVE, Gun5mmFactory.get5mmExplosiveConfig()); configSet.put(R5_DU, Gun5mmFactory.get5mmDUConfig()); @@ -317,12 +323,12 @@ public class BulletConfigSyncingUtil { configSet.put(R5_EXPLOSIVE_BOLT, Gun5mmFactory.get5mmExplosiveConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); configSet.put(R5_DU_BOLT, Gun5mmFactory.get5mmDUConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); configSet.put(R5_STAR_BOLT, Gun5mmFactory.get5mmStarConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); - + configSet.put(AE50_NORMAL, Gun50AEFactory.get50AEConfig()); configSet.put(AE50_AP, Gun50AEFactory.get50APConfig()); configSet.put(AE50_DU, Gun50AEFactory.get50DUConfig()); configSet.put(AE50_STAR, Gun50AEFactory.get50StarConfig()); - + configSet.put(G4_NORMAL, Gun4GaugeFactory.get4GaugeConfig()); configSet.put(G4_SLUG, Gun4GaugeFactory.get4GaugeSlugConfig()); configSet.put(G4_FLECHETTE, Gun4GaugeFactory.get4GaugeFlechetteConfig()); @@ -336,7 +342,7 @@ public class BulletConfigSyncingUtil { configSet.put(G4_VAMPIRE, Gun4GaugeFactory.get4GaugeVampireConfig()); configSet.put(G4_VOID, Gun4GaugeFactory.get4GaugeVoidConfig()); configSet.put(G4_SLEEK, Gun4GaugeFactory.get4GaugeSleekConfig()); - + configSet.put(SPECIAL_OSIPR, GunOSIPRFactory.getPulseConfig()); configSet.put(SPECIAL_OSIPR_CHARGED, GunOSIPRFactory.getPulseChargedConfig()); configSet.put(SPECIAL_GAUSS, GunGaussFactory.getGaussConfig()); @@ -363,13 +369,13 @@ public class BulletConfigSyncingUtil { configSet.put(R556_FLECHETTE_DU, Gun556mmFactory.get556FlechetteDUConfig()); configSet.put(R556_FLECHETTE_SLEEK, Gun556mmFactory.get556FlechetteSleekConfig()); configSet.put(R556_K, Gun556mmFactory.get556KConfig()); - + configSet.put(B75_NORMAL, Gun75BoltFactory.get75BoltConfig()); configSet.put(B75_INCENDIARY, Gun75BoltFactory.get75BoltIncConfig()); configSet.put(B75_HE, Gun75BoltFactory.get75BoltHEConfig()); - + configSet.put(NEEDLE_GPS, GunDartFactory.getGPSConfig()); - + configSet.put(G20_NORMAL_FIRE, Gun20GaugeFactory.get20GaugeConfig().setToFire(3)); configSet.put(G20_SHRAPNEL_FIRE, Gun20GaugeFactory.get20GaugeShrapnelConfig().setToFire(3)); configSet.put(G20_SLUG_FIRE, Gun20GaugeFactory.get20GaugeSlugConfig().setToFire(3)); @@ -378,7 +384,7 @@ public class BulletConfigSyncingUtil { configSet.put(G20_CAUSTIC_FIRE, Gun20GaugeFactory.get20GaugeCausticConfig().setToFire(3)); configSet.put(G20_SHOCK_FIRE, Gun20GaugeFactory.get20GaugeShockConfig().setToFire(3)); configSet.put(G20_WITHER_FIRE, Gun20GaugeFactory.get20GaugeWitherConfig().setToFire(3)); - + configSet.put(ROCKET_NORMAL_LASER, GunRocketFactory.getRocketConfig().setToGuided()); configSet.put(ROCKET_HE_LASER, GunRocketFactory.getRocketHEConfig().setToGuided()); configSet.put(ROCKET_INCENDIARY_LASER, GunRocketFactory.getRocketIncendiaryConfig().setToGuided()); @@ -391,6 +397,12 @@ public class BulletConfigSyncingUtil { configSet.put(ROCKET_CHAINSAW_LASER, GunRocketFactory.getRocketRPCConfig().setToGuided()); configSet.put(ROCKET_TOXIC_LASER, GunRocketFactory.getRocketChlorineConfig().setToGuided()); + configSet.put(SHELL_NORMAL, GunCannonFactory.getShellConfig()); + configSet.put(SHELL_EXPLOSIVE, GunCannonFactory.getShellExplosiveConfig()); + configSet.put(SHELL_AP, GunCannonFactory.getShellAPConfig()); + configSet.put(SHELL_DU, GunCannonFactory.getShellDUConfig()); + configSet.put(SHELL_W9, GunCannonFactory.getShellW9Config()); + configSet.put(NUKE_NORMAL, GunFatmanFactory.getNukeConfig()); configSet.put(NUKE_LOW, GunFatmanFactory.getNukeLowConfig()); configSet.put(NUKE_HIGH, GunFatmanFactory.getNukeHighConfig()); @@ -408,9 +420,9 @@ public class BulletConfigSyncingUtil { configSet.put(NUKE_MIRV_HIGH, GunFatmanFactory.getMirvHighConfig()); configSet.put(NUKE_MIRV_SAFE, GunFatmanFactory.getMirvSafeConfig()); configSet.put(NUKE_MIRV_SPECIAL, GunFatmanFactory.getMirvSpecialConfig()); - + configSet.put(NUKE_AMAT, GunFatmanFactory.getBalefireConfig()); - + configSet.put(ZOMG_BOLT, GunEnergyFactory.getZOMGBoltConfig()); configSet.put(CHL_LR22, Gun22LRFactory.get22LRConfig().setToHoming(ModItems.ammo_22lr_chlorophyte)); @@ -433,20 +445,20 @@ public class BulletConfigSyncingUtil { configSet.put(WORM_BOLT, GunNPCFactory.getWormBolt()); configSet.put(WORM_LASER, GunNPCFactory.getWormHeadBolt()); } - + public static BulletConfiguration pullConfig(int key) { - + return configSet.get(key); } - + public static int getKey(BulletConfiguration config) { - + for(Entry e : configSet.entrySet()) { - + if(e.getValue() == config) return e.getKey(); } - + return -1; } diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 2a58375bc..fee5d14cf 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -88,18 +88,20 @@ public class BulletConfiguration { public static final int STYLE_NONE = -1; public static final int STYLE_NORMAL = 0; - public static final int STYLE_FLECHETTE = 1; - public static final int STYLE_PELLET = 2; - public static final int STYLE_BOLT = 3; - public static final int STYLE_FOLLY = 4; - public static final int STYLE_ROCKET = 5; - public static final int STYLE_STINGER = 6; - public static final int STYLE_NUKE = 7; - public static final int STYLE_MIRV = 8; - public static final int STYLE_GRENADE = 9; - public static final int STYLE_BF = 10; - public static final int STYLE_ORB = 11; - public static final int STYLE_METEOR = 12; + public static final int STYLE_PISTOL = 1; + public static final int STYLE_FLECHETTE = 2; + public static final int STYLE_PELLET = 3; + public static final int STYLE_BOLT = 4; + public static final int STYLE_FOLLY = 5; + public static final int STYLE_ROCKET = 6; + public static final int STYLE_STINGER = 7; + public static final int STYLE_NUKE = 8; + public static final int STYLE_MIRV = 9; + public static final int STYLE_GRENADE = 10; + public static final int STYLE_BF = 11; + public static final int STYLE_ORB = 12; + public static final int STYLE_METEOR = 13; + public static final int STYLE_APDS = 14; public static final int PLINK_NONE = 0; public static final int PLINK_BULLET = 1; diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 97aae535d..2d6cb4abd 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -9,6 +9,9 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.turret.TileEntityTurretChekhov; +import com.hbm.tileentity.turret.TileEntityTurretFriendly; +import com.hbm.tileentity.turret.TileEntityTurretJeremy; +import com.hbm.tileentity.turret.TileEntityTurretTauon; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -731,7 +734,28 @@ public class GUIHandler implements IGuiHandler { case ModBlocks.guiID_chekhov: { if(entity instanceof TileEntityTurretChekhov) { - return new ContainerTurretChekhov(player.inventory, (TileEntityTurretChekhov) entity); + return new ContainerTurretBase(player.inventory, (TileEntityTurretChekhov) entity); + } + return null; + } + + case ModBlocks.guiID_friendly: { + if(entity instanceof TileEntityTurretFriendly) { + return new ContainerTurretBase(player.inventory, (TileEntityTurretFriendly) entity); + } + return null; + } + + case ModBlocks.guiID_jeremy: { + if(entity instanceof TileEntityTurretJeremy) { + return new ContainerTurretBase(player.inventory, (TileEntityTurretJeremy) entity); + } + return null; + } + + case ModBlocks.guiID_tauon: { + if(entity instanceof TileEntityTurretTauon) { + return new ContainerTurretBase(player.inventory, (TileEntityTurretTauon) entity); } return null; } @@ -1458,6 +1482,27 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_friendly: { + if(entity instanceof TileEntityTurretFriendly) { + return new GUITurretFriendly(player.inventory, (TileEntityTurretFriendly) entity); + } + return null; + } + + case ModBlocks.guiID_jeremy: { + if(entity instanceof TileEntityTurretJeremy) { + return new GUITurretJeremy(player.inventory, (TileEntityTurretJeremy) entity); + } + return null; + } + + case ModBlocks.guiID_tauon: { + if(entity instanceof TileEntityTurretTauon) { + return new GUITurretTauon(player.inventory, (TileEntityTurretTauon) entity); + } + return null; + } } // ITEM GUIS diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index f11bfe000..26e6e3429 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -221,6 +221,31 @@ public class BulletConfigFactory { return bullet; } + public static BulletConfiguration standardShellConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.velocity = 3.0F; + bullet.spread = 0.005F; + bullet.wear = 10; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.gravity = 0.005D; + bullet.maxAge = 300; + bullet.doesRicochet = true; + bullet.ricochetAngle = 10; + bullet.HBRC = 2; + bullet.LBRC = 100; + bullet.bounceMod = 0.8; + bullet.doesPenetrate = false; + bullet.doesBreakGlass = false; + bullet.style = BulletConfiguration.STYLE_GRENADE; + bullet.plink = BulletConfiguration.PLINK_GRENADE; + bullet.vPFX = "smoke"; + + return bullet; + } + public static BulletConfiguration standardNukeConfig() { BulletConfiguration bullet = new BulletConfiguration(); diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java new file mode 100644 index 000000000..743d9a22e --- /dev/null +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -0,0 +1,81 @@ +package com.hbm.handler.guncfg; + +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.handler.BulletConfiguration; +import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.items.ModItems; + +public class GunCannonFactory { + + public static BulletConfiguration getShellConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); + + bullet.ammo = ModItems.ammo_shell; + bullet.dmgMin = 25; + bullet.dmgMax = 35; + bullet.explosive = 4F; + bullet.blockDamage = false; + + return bullet; + } + + public static BulletConfiguration getShellExplosiveConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); + + bullet.ammo = ModItems.ammo_shell_explosive; + bullet.dmgMin = 35; + bullet.dmgMax = 45; + bullet.explosive = 4F; + bullet.blockDamage = true; + + return bullet; + } + + public static BulletConfiguration getShellAPConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); + + bullet.ammo = ModItems.ammo_shell_apfsds_t; + bullet.dmgMin = 50; + bullet.dmgMax = 55; + bullet.doesPenetrate = true; + bullet.style = BulletConfiguration.STYLE_APDS; + + return bullet; + } + + public static BulletConfiguration getShellDUConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); + + bullet.ammo = ModItems.ammo_shell_apfsds_du; + bullet.dmgMin = 70; + bullet.dmgMax = 80; + bullet.doesPenetrate = true; + bullet.style = BulletConfiguration.STYLE_APDS; + + return bullet; + } + + public static BulletConfiguration getShellW9Config() { + + BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); + + bullet.ammo = ModItems.ammo_shell_w9; + bullet.dmgMin = 100; + bullet.dmgMax = 150; + + bullet.bImpact = new IBulletImpactBehavior() { + + @Override + public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + BulletConfigFactory.nuclearExplosion(bullet, x, y, z, 1); + } + }; + + return bullet; + } + +} diff --git a/src/main/java/com/hbm/inventory/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/AssemblerRecipes.java index e923904ca..1265832e8 100644 --- a/src/main/java/com/hbm/inventory/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/AssemblerRecipes.java @@ -257,8 +257,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.cmb_brick_reinforced, 8), new AStack[] {new ComparableStack(ModBlocks.block_magnetized_tungsten, 4), new ComparableStack(ModBlocks.brick_concrete, 4), new ComparableStack(ModBlocks.cmb_brick, 1), new OreDictStack("plateSteel", 4), },200); makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack("ingotSteel", 3), new ComparableStack(ModItems.wire_aluminium, 4), new ComparableStack(Items.redstone, 2), new ComparableStack(ModBlocks.steel_roof, 5), },50); makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack("ingotSteel", 3), new ComparableStack(ModItems.ingot_polymer, 4), new OreDictStack("ingotRedCopperAlloy", 1), new ComparableStack(Items.redstone, 4), new ComparableStack(ModBlocks.steel_roof, 5), },100); - makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] {new OreDictStack("ingotSteel", 128), new OreDictStack("ingotTungsten", 32), new OreDictStack("plateLead", 48), new ComparableStack(ModItems.plate_advanced_alloy, 8), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.bolt_tungsten, 18), new ComparableStack(ModItems.bolt_dura_steel, 27), new ComparableStack(ModItems.motor, 5), },200); - makeRecipe(new ComparableStack(ModBlocks.blast_door, 1), new AStack[] {new OreDictStack("ingotSteel", 16), new OreDictStack("ingotTungsten", 8), new OreDictStack("plateLead", 12), new ComparableStack(ModItems.plate_advanced_alloy, 3), new ComparableStack(ModItems.plate_polymer, 3), new ComparableStack(ModItems.bolt_tungsten, 3), new ComparableStack(ModItems.bolt_dura_steel, 3), new ComparableStack(ModItems.motor, 1), },300); makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack("ingotSteel", 4), new OreDictStack("ingotIron", 4), new OreDictStack("plateSteel", 2), new OreDictStack("plateCopper", 2), new ComparableStack(ModItems.wire_red_copper, 8), },250); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_tower, 1), new OreDictStack("ingotSteel", 4), new ComparableStack(ModItems.ingot_polymer, 4), new OreDictStack("ingotDesh", 2), new OreDictStack("plateSteel", 6), new ComparableStack(ModItems.plate_advanced_alloy, 4), new ComparableStack(ModItems.wire_red_copper, 8), new ComparableStack(ModItems.wire_gold, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_reactor, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack("ingotSteel", 12), new OreDictStack("plateLead", 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new ComparableStack(ModItems.ingot_asbestos, 4)},150); @@ -588,6 +586,71 @@ public class AssemblerRecipes { new ComparableStack(ModItems.coin_maskman, 1), new ComparableStack(ModItems.coin_worm, 1), }, 1200); + + makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] { + new OreDictStack("ingotSteel", 32), + new OreDictStack("ingotTungsten", 32), + new OreDictStack("plateLead", 16), + new ComparableStack(ModItems.plate_advanced_alloy, 4), + new ComparableStack(ModItems.plate_polymer, 4), + new ComparableStack(ModItems.bolt_tungsten, 8), + new ComparableStack(ModItems.bolt_dura_steel, 8), + new ComparableStack(ModItems.motor, 3), + }, 200); + + makeRecipe(new ComparableStack(ModBlocks.blast_door, 1), new AStack[] { + new OreDictStack("ingotSteel", 8), + new OreDictStack("ingotTungsten", 8), + new OreDictStack("plateLead", 6), + new ComparableStack(ModItems.plate_advanced_alloy, 3), + new ComparableStack(ModItems.plate_polymer, 3), + new ComparableStack(ModItems.bolt_tungsten, 3), + new ComparableStack(ModItems.bolt_dura_steel, 3), + new ComparableStack(ModItems.motor, 1), + }, 300); + + makeRecipe(new ComparableStack(ModBlocks.turret_chekhov, 1), new AStack[] { + new ComparableStack(ModBlocks.machine_battery, 1), + new OreDictStack("ingotSteel", 16), + new ComparableStack(ModItems.ingot_dura_steel, 4), + new ComparableStack(ModItems.motor, 3), + new ComparableStack(ModItems.circuit_targeting_tier3, 1), + new ComparableStack(ModItems.pipes_steel, 1), + new ComparableStack(ModItems.mechanism_rifle_2, 1), + new ComparableStack(ModBlocks.crate_iron, 1) + }, 200); + makeRecipe(new ComparableStack(ModBlocks.turret_friendly, 1), new AStack[] { + new ComparableStack(ModBlocks.machine_battery, 1), + new OreDictStack("ingotSteel", 16), + new ComparableStack(ModItems.ingot_dura_steel, 4), + new ComparableStack(ModItems.motor, 3), + new ComparableStack(ModItems.circuit_targeting_tier2, 1), + new ComparableStack(ModItems.pipes_steel, 1), + new ComparableStack(ModItems.mechanism_rifle_1, 1), + new ComparableStack(ModBlocks.crate_iron, 1) + }, 200); + makeRecipe(new ComparableStack(ModBlocks.turret_jeremy, 1), new AStack[] { + new ComparableStack(ModBlocks.machine_battery, 1), + new OreDictStack("ingotSteel", 16), + new ComparableStack(ModItems.ingot_dura_steel, 4), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.circuit_targeting_tier4, 1), + new ComparableStack(ModItems.motor_desh, 1), + new ComparableStack(ModItems.hull_small_steel, 3), + new ComparableStack(ModItems.mechanism_launcher_2, 1), + new ComparableStack(ModBlocks.crate_steel, 1) + }, 200); + makeRecipe(new ComparableStack(ModBlocks.turret_tauon, 1), new AStack[] { + new ComparableStack(ModBlocks.machine_lithium_battery, 1), + new OreDictStack("ingotSteel", 16), + new ComparableStack(ModItems.ingot_polymer, 4), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.circuit_targeting_tier4, 1), + new ComparableStack(ModItems.motor_desh, 1), + new OreDictStack("ingotCopper", 32), + new ComparableStack(ModItems.mechanism_special, 1), + new ComparableStack(ModItems.battery_lithium, 1) + }, 200); makeRecipe(new ComparableStack(ModBlocks.block_cap_nuka, 1), new AStack[] { new ComparableStack(ModItems.cap_nuka, 128) }, 10); makeRecipe(new ComparableStack(ModBlocks.block_cap_quantum, 1), new AStack[] { new ComparableStack(ModItems.cap_quantum, 128) }, 10); @@ -772,7 +835,7 @@ public class AssemblerRecipes { return null; } - //if index 3 exists, eval it as a stacksize + //if index 2 exists, eval it as a stacksize if(array.size() > 2 && array.get(2).isJsonPrimitive()) { if(array.get(2).getAsJsonPrimitive().isNumber()) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerTurretChekhov.java b/src/main/java/com/hbm/inventory/container/ContainerTurretBase.java similarity index 77% rename from src/main/java/com/hbm/inventory/container/ContainerTurretChekhov.java rename to src/main/java/com/hbm/inventory/container/ContainerTurretBase.java index 227f1e6e7..bcf16824c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerTurretChekhov.java +++ b/src/main/java/com/hbm/inventory/container/ContainerTurretBase.java @@ -1,6 +1,7 @@ package com.hbm.inventory.container; -import com.hbm.tileentity.turret.TileEntityTurretChekhov; +import com.hbm.items.ModItems; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -8,11 +9,11 @@ import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerTurretChekhov extends Container { +public class ContainerTurretBase extends Container { - private TileEntityTurretChekhov turret; + private TileEntityTurretBaseNT turret; - public ContainerTurretChekhov(InventoryPlayer invPlayer, TileEntityTurretChekhov te) { + public ContainerTurretBase(InventoryPlayer invPlayer, TileEntityTurretBaseNT te) { turret = te; this.addSlotToContainer(new Slot(te, 0, 98, 27)); @@ -52,7 +53,12 @@ public class ContainerTurretChekhov extends Container { if(!this.mergeItemStack(var5, turret.getSizeInventory(), this.inventorySlots.size(), true)) { return null; } - } else if(!this.mergeItemStack(var5, 0, turret.getSizeInventory(), false)) { + } else if(var5.getItem() == ModItems.turret_chip) { + + if(!this.mergeItemStack(var5, 0, 1, false)) + return null; + + } else if(!this.mergeItemStack(var5, 1, turret.getSizeInventory(), false)) { return null; } diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretBase.java b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java new file mode 100644 index 000000000..7dccdd194 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java @@ -0,0 +1,266 @@ +package com.hbm.inventory.gui; + +import java.util.List; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerTurretBase; +import com.hbm.lib.RefStrings; +import com.hbm.packet.AuxButtonPacket; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public abstract class GUITurretBase extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_base.png"); + private TileEntityTurretBaseNT turret; + private GuiTextField field; + int index; + + public GUITurretBase(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(new ContainerTurretBase(invPlayer, tedf)); + turret = tedf; + + this.xSize = 176; + this.ySize = 222; + } + + public void initGui() { + + super.initGui(); + + Keyboard.enableRepeatEvents(true); + this.field = new GuiTextField(this.fontRendererObj, guiLeft + 10, guiTop + 65, 50, 14); + this.field.setTextColor(-1); + this.field.setDisabledTextColour(-1); + this.field.setEnableBackgroundDrawing(false); + this.field.setMaxStringLength(25); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 45, 16, 52, turret.power, turret.getMaxPower()); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + boolean flag = x >= this.field.xPosition && x < this.field.xPosition + this.field.width && y >= this.field.yPosition && y < this.field.yPosition + this.field.height; + this.field.setFocused(flag); + + if(guiLeft + 115 <= x && guiLeft + 115 + 18 > x && guiTop + 26 < y && guiTop + 26 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 0)); + return; + } + + if(guiLeft + 8 <= x && guiLeft + 8 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 1)); + return; + } + + if(guiLeft + 22 <= x && guiLeft + 22 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 2)); + return; + } + + if(guiLeft + 36 <= x && guiLeft + 36 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 3)); + return; + } + + if(guiLeft + 50 <= x && guiLeft + 50 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 4)); + return; + } + + int count = getCount(); + + if(count > 0) { + + if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 80 < y && guiTop + 80 + 18 >= y) { + + index--; + if(index < 0) + index = count - 1; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + return; + } + + if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 80 < y && guiTop + 80 + 18 >= y) { + + index++; + index %= count; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + return; + } + } + + if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + + if(this.field.getText().isEmpty()) + return; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("name", this.field.getText()); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, turret.xCoord, turret.yCoord, turret.zCoord)); + + this.field.setText(""); + return; + } + + if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("del", this.index); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, turret.xCoord, turret.yCoord, turret.zCoord)); + return; + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.turret.hasCustomInventoryName() ? this.turret.getInventoryName() : I18n.format(this.turret.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + List names = turret.getWhitelist(); + + String n = EnumChatFormatting.ITALIC + "None"; + + while(this.index >= this.getCount()) + this.index--; + + if(index < 0) + index = 0; + + if(names != null) { + n = names.get(index); + } + + String t = this.field.getText(); + + String cursor = System.currentTimeMillis() % 1000 < 500 ? " " : "||"; + + if(this.field.isFocused()) + t = t.substring(0, this.field.getCursorPosition()) + cursor + t.substring(this.field.getCursorPosition(), t.length()); + + double scale = 2; + + GL11.glScaled(1D / scale, 1D / scale, 1); + this.fontRendererObj.drawString(n, (int)(12 * scale), (int)(51 * scale), 0x00ff00); + this.fontRendererObj.drawString(t, (int)(12 * scale), (int)(69 * scale), 0x00ff00); + GL11.glScaled(scale, scale, 1); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mX, int mY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(this.getTexture()); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(guiLeft + 7 <= mX && guiLeft + 7 + 18 > mX && guiTop + 80 < mY && guiTop + 80 + 18 >=mY) { + drawTexturedModalRect(guiLeft + 7, guiTop + 80, 176, 58, 18, 18); + } + if(guiLeft + 43 <= mX && guiLeft + 43 + 18 > mX && guiTop + 80 < mY && guiTop + 80 + 18 >=mY) { + drawTexturedModalRect(guiLeft + 43, guiTop + 80, 194, 58, 18, 18); + } + if(guiLeft + 7 <= mX && guiLeft + 7 + 18 > mX && guiTop + 98 < mY && guiTop + 98 + 18 >=mY) { + drawTexturedModalRect(guiLeft + 7, guiTop + 98, 176, 76, 18, 18); + } + if(guiLeft + 43 <= mX && guiLeft + 43 + 18 > mX && guiTop + 98 < mY && guiTop + 98 + 18 >=mY) { + drawTexturedModalRect(guiLeft + 43, guiTop + 98, 194, 76, 18, 18); + } + + int i = turret.getPowerScaled(53); + drawTexturedModalRect(guiLeft + 152, guiTop + 97 - i, 194, 52 - i, 16, i); + + if(turret.isOn) + drawTexturedModalRect(guiLeft + 115, guiTop + 26, 176, 40, 18, 18); + + if(turret.targetPlayers) + drawTexturedModalRect(guiLeft + 8, guiTop + 30, 176, 0, 10, 10); + + if(turret.targetAnimals) + drawTexturedModalRect(guiLeft + 22, guiTop + 30, 176, 10, 10, 10); + + if(turret.targetMobs) + drawTexturedModalRect(guiLeft + 36, guiTop + 30, 176, 20, 10, 10); + + if(turret.targetMachines) + drawTexturedModalRect(guiLeft + 50, guiTop + 30, 176, 30, 10, 10); + + int tallies = turret.stattrak; + + if(tallies >= 36) { + + drawTexturedModalRect(guiLeft + 77, guiTop + 50, 176, 120, 63, 6); + + } else { + + int steps = (int)Math.ceil(tallies / 5D); + + for(int s = 0; s < steps; s++) { + + int m = tallies % 5; + + if(s < steps - 1 || m == 0) { + drawTexturedModalRect(guiLeft + 77 + 9 * s, guiTop + 50, 194, 94, 9, 6); + } else { + + drawTexturedModalRect(guiLeft + 77 + 9 * s, guiTop + 50, 176, 94, m * 2, 6); + } + } + } + } + + protected ResourceLocation getTexture() { + return texture; + } + + private int getCount() { + + List names = turret.getWhitelist(); + + if(names == null) + return 0; + + return names.size(); + } + + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + + if(this.field.textboxKeyTyped(p_73869_1_, p_73869_2_)) { + + } else { + super.keyTyped(p_73869_1_, p_73869_2_); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretChekhov.java b/src/main/java/com/hbm/inventory/gui/GUITurretChekhov.java index d9f3e0db6..144877efd 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretChekhov.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretChekhov.java @@ -1,262 +1,11 @@ package com.hbm.inventory.gui; -import java.util.List; - -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerTurretChekhov; -import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.NBTControlPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.turret.TileEntityTurretChekhov; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.resources.I18n; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.ResourceLocation; -public class GUITurretChekhov extends GuiInfoContainer { +public class GUITurretChekhov extends GUITurretBase { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_base.png"); - private TileEntityTurretChekhov turret; - private GuiTextField field; - int index; - - public GUITurretChekhov(InventoryPlayer invPlayer, TileEntityTurretChekhov tedf) { - super(new ContainerTurretChekhov(invPlayer, tedf)); - turret = tedf; - - this.xSize = 176; - this.ySize = 222; - } - - public void initGui() { - - super.initGui(); - - Keyboard.enableRepeatEvents(true); - this.field = new GuiTextField(this.fontRendererObj, guiLeft + 10, guiTop + 65, 50, 14); - this.field.setTextColor(-1); - this.field.setDisabledTextColour(-1); - this.field.setEnableBackgroundDrawing(false); - this.field.setMaxStringLength(25); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 45, 16, 52, turret.power, turret.getMaxPower()); - } - - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - boolean flag = x >= this.field.xPosition && x < this.field.xPosition + this.field.width && y >= this.field.yPosition && y < this.field.yPosition + this.field.height; - this.field.setFocused(flag); - - if(guiLeft + 115 <= x && guiLeft + 115 + 18 > x && guiTop + 26 < y && guiTop + 26 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 0)); - return; - } - - if(guiLeft + 8 <= x && guiLeft + 8 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 1)); - return; - } - - if(guiLeft + 22 <= x && guiLeft + 22 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 2)); - return; - } - - if(guiLeft + 36 <= x && guiLeft + 36 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 3)); - return; - } - - if(guiLeft + 50 <= x && guiLeft + 50 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(turret.xCoord, turret.yCoord, turret.zCoord, 0, 4)); - return; - } - - int count = getCount(); - - if(count > 0) { - - if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 80 < y && guiTop + 80 + 18 >= y) { - - index--; - if(index < 0) - index = count - 1; - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - return; - } - - if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 80 < y && guiTop + 80 + 18 >= y) { - - index++; - index %= count; - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - return; - } - } - - if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - - if(this.field.getText().isEmpty()) - return; - - NBTTagCompound data = new NBTTagCompound(); - data.setString("name", this.field.getText()); - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, turret.xCoord, turret.yCoord, turret.zCoord)); - - this.field.setText(""); - return; - } - - if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("del", this.index); - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, turret.xCoord, turret.yCoord, turret.zCoord)); - return; - } - } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.turret.hasCustomInventoryName() ? this.turret.getInventoryName() : I18n.format(this.turret.getInventoryName()); - - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - - List names = turret.getWhitelist(); - - String n = EnumChatFormatting.ITALIC + "None"; - - while(this.index >= this.getCount()) - this.index--; - - if(index < 0) - index = 0; - - if(names != null) { - n = names.get(index); - } - - String t = this.field.getText(); - - String cursor = System.currentTimeMillis() % 1000 < 500 ? " " : "||"; - - if(this.field.isFocused()) - t = t.substring(0, this.field.getCursorPosition()) + cursor + t.substring(this.field.getCursorPosition(), t.length()); - - double scale = 2; - - GL11.glScaled(1D / scale, 1D / scale, 1); - this.fontRendererObj.drawString(n, (int)(12 * scale), (int)(51 * scale), 0x00ff00); - this.fontRendererObj.drawString(t, (int)(12 * scale), (int)(69 * scale), 0x00ff00); - GL11.glScaled(scale, scale, 1); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int mX, int mY) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(guiLeft + 7 <= mX && guiLeft + 7 + 18 > mX && guiTop + 80 < mY && guiTop + 80 + 18 >=mY) { - drawTexturedModalRect(guiLeft + 7, guiTop + 80, 176, 58, 18, 18); - } - if(guiLeft + 43 <= mX && guiLeft + 43 + 18 > mX && guiTop + 80 < mY && guiTop + 80 + 18 >=mY) { - drawTexturedModalRect(guiLeft + 43, guiTop + 80, 194, 58, 18, 18); - } - if(guiLeft + 7 <= mX && guiLeft + 7 + 18 > mX && guiTop + 98 < mY && guiTop + 98 + 18 >=mY) { - drawTexturedModalRect(guiLeft + 7, guiTop + 98, 176, 76, 18, 18); - } - if(guiLeft + 43 <= mX && guiLeft + 43 + 18 > mX && guiTop + 98 < mY && guiTop + 98 + 18 >=mY) { - drawTexturedModalRect(guiLeft + 43, guiTop + 98, 194, 76, 18, 18); - } - - int i = turret.getPowerScaled(53); - drawTexturedModalRect(guiLeft + 152, guiTop + 97 - i, 194, 52 - i, 16, i); - - if(turret.isOn) - drawTexturedModalRect(guiLeft + 115, guiTop + 26, 176, 40, 18, 18); - - if(turret.targetPlayers) - drawTexturedModalRect(guiLeft + 8, guiTop + 30, 176, 0, 10, 10); - - if(turret.targetAnimals) - drawTexturedModalRect(guiLeft + 22, guiTop + 30, 176, 10, 10, 10); - - if(turret.targetMobs) - drawTexturedModalRect(guiLeft + 36, guiTop + 30, 176, 20, 10, 10); - - if(turret.targetMachines) - drawTexturedModalRect(guiLeft + 50, guiTop + 30, 176, 30, 10, 10); - - int tallies = turret.stattrak; - - if(tallies >= 36) { - - drawTexturedModalRect(guiLeft + 77, guiTop + 50, 176, 120, 63, 6); - - } else { - - int steps = (int)Math.ceil(tallies / 5D); - - for(int s = 0; s < steps; s++) { - - int m = tallies % 5; - - if(s < steps - 1 || m == 0) { - drawTexturedModalRect(guiLeft + 77 + 9 * s, guiTop + 50, 194, 94, 9, 6); - } else { - - drawTexturedModalRect(guiLeft + 77 + 9 * s, guiTop + 50, 176, 94, m * 2, 6); - } - } - } - } - - private int getCount() { - - List names = turret.getWhitelist(); - - if(names == null) - return 0; - - return names.size(); - } - - protected void keyTyped(char p_73869_1_, int p_73869_2_) { - - if(this.field.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - - } else { - super.keyTyped(p_73869_1_, p_73869_2_); - } + public GUITurretChekhov(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretFriendly.java b/src/main/java/com/hbm/inventory/gui/GUITurretFriendly.java new file mode 100644 index 000000000..4e71fa48b --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretFriendly.java @@ -0,0 +1,20 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUITurretFriendly extends GUITurretBase { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_friendly.png"); + + public GUITurretFriendly(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); + } + + protected ResourceLocation getTexture() { + return texture; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretJeremy.java b/src/main/java/com/hbm/inventory/gui/GUITurretJeremy.java new file mode 100644 index 000000000..12a0f920c --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretJeremy.java @@ -0,0 +1,20 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUITurretJeremy extends GUITurretBase { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_cannon.png"); + + public GUITurretJeremy(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); + } + + protected ResourceLocation getTexture() { + return texture; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretTauon.java b/src/main/java/com/hbm/inventory/gui/GUITurretTauon.java new file mode 100644 index 000000000..fadf9bd51 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretTauon.java @@ -0,0 +1,20 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUITurretTauon extends GUITurretBase { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_tau.png"); + + public GUITurretTauon(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); + } + + protected ResourceLocation getTexture() { + return texture; + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index acd2cdef2..97b2391d0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1289,6 +1289,11 @@ public class ModItems { public static Item ammo_grenade_nuclear; public static Item ammo_grenade_tracer; public static Item ammo_grenade_kampf; + public static Item ammo_shell; + public static Item ammo_shell_explosive; + public static Item ammo_shell_apfsds_t; + public static Item ammo_shell_apfsds_du; + public static Item ammo_shell_w9; public static Item ammo_nuke; public static Item ammo_nuke_low; public static Item ammo_nuke_high; @@ -1467,6 +1472,8 @@ public class ModItems { public static Item grenade_mirv; public static Item grenade_breach; public static Item grenade_burst; + + public static Item nuclear_waste_pearl; public static Item weaponized_starblaster_cell; @@ -1772,6 +1779,16 @@ public class ModItems { public static Item cobalt_axe; public static Item cobalt_shovel; public static Item cobalt_hoe; + public static Item cobalt_decorated_sword; + public static Item cobalt_decorated_pickaxe; + public static Item cobalt_decorated_axe; + public static Item cobalt_decorated_shovel; + public static Item cobalt_decorated_hoe; + public static Item starmetal_sword; + public static Item starmetal_pickaxe; + public static Item starmetal_axe; + public static Item starmetal_shovel; + public static Item starmetal_hoe; public static Item smashing_hammer; public static Item centri_stick; public static Item drax; @@ -2152,6 +2169,7 @@ public class ModItems { public static Item digamma_see; public static Item digamma_feel; public static Item digamma_know; + public static Item digamma_kauai_moho; public static final int guiID_item_folder = 1099; public static final int guiID_item_designator = 10100; @@ -3385,6 +3403,11 @@ public class ModItems { 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_shell = new ItemAmmo().setUnlocalizedName("ammo_shell").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_shell"); + ammo_shell_explosive = new ItemAmmo().setUnlocalizedName("ammo_shell_explosive").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_shell_explosive"); + ammo_shell_apfsds_t = new ItemAmmo().setUnlocalizedName("ammo_shell_apfsds_t").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_shell_apfsds-t"); + ammo_shell_apfsds_du = new ItemAmmo().setUnlocalizedName("ammo_shell_apfsds_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_shell_apfsds-du"); + ammo_shell_w9 = new ItemAmmo().setUnlocalizedName("ammo_shell_w9").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_shell_w9"); ammo_nuke = new ItemAmmo().setUnlocalizedName("ammo_nuke").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_nuke"); ammo_nuke_low = new ItemAmmo().setUnlocalizedName("ammo_nuke_low").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_nuke_low"); ammo_nuke_high = new ItemAmmo().setUnlocalizedName("ammo_nuke_high").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_nuke_high"); @@ -3564,6 +3587,7 @@ public class ModItems { grenade_mirv = new ItemGrenade(1).setUnlocalizedName("grenade_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_mirv"); grenade_breach = new ItemGrenade(-1).setUnlocalizedName("grenade_breach").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_breach"); grenade_burst = new ItemGrenade(1).setUnlocalizedName("grenade_burst").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_burst"); + nuclear_waste_pearl = new ItemGrenade(-1).setUnlocalizedName("nuclear_waste_pearl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":nuclear_waste_pearl"); weaponized_starblaster_cell = new WeaponizedCell().setUnlocalizedName("weaponized_starblaster_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_weaponized"); @@ -3951,7 +3975,7 @@ public class ModItems { ArmorMaterial aMatDNT = EnumHelper.addArmorMaterial("HBM_DNT_LOLOLOL", 3, new int[] { 1, 1, 1, 1 }, 0); aMatDNT.customCraftingMaterial = ModItems.ingot_dineutronium; dnt_helmet = new ArmorFSB(aMatDNT, 7, 0, RefStrings.MODID + ":textures/armor/dnt_1.png") - .setMod(1.1F).setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); + .setMod(5F).setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); dnt_plate = new ArmorFSB(aMatDNT, 7, 1, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_plate").setTextureName(RefStrings.MODID + ":dnt_plate"); dnt_legs = new ArmorFSB(aMatDNT, 7, 2, RefStrings.MODID + ":textures/armor/dnt_2.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_legs").setTextureName(RefStrings.MODID + ":dnt_legs"); dnt_boots = new ArmorFSB(aMatDNT, 7, 3, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_boots").setTextureName(RefStrings.MODID + ":dnt_boots"); @@ -4217,24 +4241,65 @@ public class ModItems { desh_hoe = new ModHoe(MainRegistry.tMatDesh).setUnlocalizedName("desh_hoe").setTextureName(RefStrings.MODID + ":desh_hoe"); cobalt_sword = new ItemSwordAbility(12F, 0, MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_sword").setTextureName(RefStrings.MODID + ":cobalt_sword"); - cobalt_pickaxe = new ItemToolAbility(4F, 0, MainRegistry.tMatCobalt, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_pickaxe").setTextureName(RefStrings.MODID + ":cobalt_pickaxe"); - cobalt_axe = new ItemToolAbility(6F, 0, MainRegistry.tMatCobalt, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(1)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("cobalt_axe").setTextureName(RefStrings.MODID + ":cobalt_axe"); - cobalt_shovel = new ItemToolAbility(3.5F, 0, MainRegistry.tMatCobalt, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(1)).setUnlocalizedName("cobalt_shovel").setTextureName(RefStrings.MODID + ":cobalt_shovel"); - cobalt_hoe = new ModHoe(MainRegistry.tMatCobalt).setUnlocalizedName("cobalt_hoe").setTextureName(RefStrings.MODID + ":cobalt_hoe"); + + ToolMaterial matDecCobalt = EnumHelper.addToolMaterial("HBM_COBALT2", 3, 1000, 15.0F, 2.5F, 25).setRepairItem(new ItemStack(ModItems.ingot_cobalt)); + cobalt_decorated_sword = new ItemSwordAbility(15F, 0, matDecCobalt).setUnlocalizedName("cobalt_decorated_sword").setTextureName(RefStrings.MODID + ":cobalt_decorated_sword"); + cobalt_decorated_pickaxe = new ItemToolAbility(6F, 0, matDecCobalt, EnumToolType.PICKAXE) + .addBreakAbility(new ToolAbility.RecursionAbility(4)) + .addBreakAbility(new ToolAbility.HammerAbility(1)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cobalt_decorated_pickaxe").setTextureName(RefStrings.MODID + ":cobalt_decorated_pickaxe"); + cobalt_decorated_axe = new ItemToolAbility(8F, 0, matDecCobalt, EnumToolType.AXE) + .addBreakAbility(new ToolAbility.RecursionAbility(4)) + .addBreakAbility(new ToolAbility.HammerAbility(1)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)) + .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("cobalt_decorated_axe").setTextureName(RefStrings.MODID + ":cobalt_decorated_axe"); + cobalt_decorated_shovel = new ItemToolAbility(5F, 0, matDecCobalt, EnumToolType.SHOVEL) + .addBreakAbility(new ToolAbility.RecursionAbility(4)) + .addBreakAbility(new ToolAbility.HammerAbility(1)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cobalt_decorated_shovel").setTextureName(RefStrings.MODID + ":cobalt_decorated_shovel"); + cobalt_decorated_hoe = new ModHoe(matDecCobalt).setUnlocalizedName("cobalt_decorated_hoe").setTextureName(RefStrings.MODID + ":cobalt_decorated_hoe"); + + ToolMaterial matStarmetal = EnumHelper.addToolMaterial("HBM_STARMETAL", 3, 1000, 20.0F, 2.5F, 30).setRepairItem(new ItemStack(ModItems.ingot_starmetal)); + starmetal_sword = new ItemSwordAbility(25F, 0, matStarmetal) + .addHitAbility(new WeaponAbility.BeheaderAbility()) + .addHitAbility(new WeaponAbility.StunAbility(3)).setUnlocalizedName("starmetal_sword").setTextureName(RefStrings.MODID + ":starmetal_sword"); + starmetal_pickaxe = new ItemToolAbility(8F, 0, matStarmetal, EnumToolType.PICKAXE) + .addBreakAbility(new ToolAbility.RecursionAbility(6)) + .addBreakAbility(new ToolAbility.HammerAbility(2)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)) + .addHitAbility(new WeaponAbility.StunAbility(3)).setUnlocalizedName("starmetal_pickaxe").setTextureName(RefStrings.MODID + ":starmetal_pickaxe"); + starmetal_axe = new ItemToolAbility(12F, 0, matStarmetal, EnumToolType.AXE) + .addBreakAbility(new ToolAbility.RecursionAbility(6)) + .addBreakAbility(new ToolAbility.HammerAbility(2)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)) + .addHitAbility(new WeaponAbility.BeheaderAbility()) + .addHitAbility(new WeaponAbility.StunAbility(3)).setUnlocalizedName("starmetal_axe").setTextureName(RefStrings.MODID + ":starmetal_axe"); + starmetal_shovel = new ItemToolAbility(7F, 0, matStarmetal, EnumToolType.SHOVEL) + .addBreakAbility(new ToolAbility.RecursionAbility(6)) + .addBreakAbility(new ToolAbility.HammerAbility(2)) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new LuckAbility(1)) + .addHitAbility(new WeaponAbility.StunAbility(3)).setUnlocalizedName("starmetal_shovel").setTextureName(RefStrings.MODID + ":starmetal_shovel"); + starmetal_hoe = new ModHoe(matStarmetal).setUnlocalizedName("starmetal_hoe").setTextureName(RefStrings.MODID + ":starmetal_hoe"); centri_stick = new ItemToolAbility(3F, 0, MainRegistry.tMatElec, EnumToolType.MINER) .addBreakAbility(new ToolAbility.CentrifugeAbility()).setMaxDamage(50).setUnlocalizedName("centri_stick").setTextureName(RefStrings.MODID + ":centri_stick"); @@ -4407,6 +4472,11 @@ public class ModItems { book_secret = new ItemCustomLore().setUnlocalizedName("book_secret").setCreativeTab(MainRegistry.polaroidID == 11 ? MainRegistry.consumableTab : null).setTextureName(RefStrings.MODID + ":book_secret"); book_of_ = new ItemBook().setUnlocalizedName("book_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_of_"); burnt_bark = new ItemCustomLore().setUnlocalizedName("burnt_bark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":burnt_bark"); + + initializeItem2(); + } + + public static void initializeItem2() { smoke1 = new Item().setUnlocalizedName("smoke1").setTextureName(RefStrings.MODID + ":smoke1"); smoke2 = new Item().setUnlocalizedName("smoke2").setTextureName(RefStrings.MODID + ":smoke2"); @@ -4522,6 +4592,7 @@ public class ModItems { digamma_see = new Item().setUnlocalizedName("digamma_see").setTextureName(RefStrings.MODID + ":digamma_see"); digamma_feel = new Item().setUnlocalizedName("digamma_feel").setTextureName(RefStrings.MODID + ":digamma_feel"); digamma_know = new Item().setUnlocalizedName("digamma_know").setTextureName(RefStrings.MODID + ":digamma_know"); + digamma_kauai_moho = new Item().setUnlocalizedName("digamma_kauai_moho").setTextureName(RefStrings.MODID + ":digamma_kauai_moho"); mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel"); memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim"); @@ -5985,6 +6056,11 @@ public class ModItems { 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_shell, ammo_shell.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell_explosive, ammo_shell_explosive.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell_apfsds_t, ammo_shell_apfsds_t.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell_apfsds_du, ammo_shell_apfsds_du.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell_w9, ammo_shell_w9.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke, ammo_nuke.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke_low, ammo_nuke_low.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke_high, ammo_nuke_high.getUnlocalizedName()); @@ -6088,6 +6164,7 @@ public class ModItems { GameRegistry.registerItem(grenade_if_spark, grenade_if_spark.getUnlocalizedName()); GameRegistry.registerItem(grenade_if_hopwire, grenade_if_hopwire.getUnlocalizedName()); GameRegistry.registerItem(grenade_if_null, grenade_if_null.getUnlocalizedName()); + GameRegistry.registerItem(nuclear_waste_pearl, nuclear_waste_pearl.getUnlocalizedName()); GameRegistry.registerItem(ullapool_caber, ullapool_caber.getUnlocalizedName()); GameRegistry.registerItem(weaponized_starblaster_cell, weaponized_starblaster_cell.getUnlocalizedName()); @@ -6126,6 +6203,16 @@ public class ModItems { GameRegistry.registerItem(cobalt_axe, cobalt_axe.getUnlocalizedName()); GameRegistry.registerItem(cobalt_shovel, cobalt_shovel.getUnlocalizedName()); GameRegistry.registerItem(cobalt_hoe, cobalt_hoe.getUnlocalizedName()); + GameRegistry.registerItem(cobalt_decorated_sword, cobalt_decorated_sword.getUnlocalizedName()); + GameRegistry.registerItem(cobalt_decorated_pickaxe, cobalt_decorated_pickaxe.getUnlocalizedName()); + GameRegistry.registerItem(cobalt_decorated_axe, cobalt_decorated_axe.getUnlocalizedName()); + GameRegistry.registerItem(cobalt_decorated_shovel, cobalt_decorated_shovel.getUnlocalizedName()); + GameRegistry.registerItem(cobalt_decorated_hoe, cobalt_decorated_hoe.getUnlocalizedName()); + GameRegistry.registerItem(starmetal_sword, starmetal_sword.getUnlocalizedName()); + GameRegistry.registerItem(starmetal_pickaxe, starmetal_pickaxe.getUnlocalizedName()); + GameRegistry.registerItem(starmetal_axe, starmetal_axe.getUnlocalizedName()); + GameRegistry.registerItem(starmetal_shovel, starmetal_shovel.getUnlocalizedName()); + GameRegistry.registerItem(starmetal_hoe, starmetal_hoe.getUnlocalizedName()); GameRegistry.registerItem(alloy_sword, alloy_sword.getUnlocalizedName()); GameRegistry.registerItem(alloy_pickaxe, alloy_pickaxe.getUnlocalizedName()); GameRegistry.registerItem(alloy_axe, alloy_axe.getUnlocalizedName()); @@ -6723,6 +6810,7 @@ public class ModItems { GameRegistry.registerItem(digamma_see, digamma_see.getUnlocalizedName()); GameRegistry.registerItem(digamma_feel, digamma_feel.getUnlocalizedName()); GameRegistry.registerItem(digamma_know, digamma_know.getUnlocalizedName()); + GameRegistry.registerItem(digamma_kauai_moho, digamma_kauai_moho.getUnlocalizedName()); GameRegistry.registerItem(mysteryshovel, mysteryshovel.getUnlocalizedName()); GameRegistry.registerItem(memory, memory.getUnlocalizedName()); } diff --git a/src/main/java/com/hbm/items/tool/ItemTurretControl.java b/src/main/java/com/hbm/items/tool/ItemTurretControl.java index aef1458b7..e027121d9 100644 --- a/src/main/java/com/hbm/items/tool/ItemTurretControl.java +++ b/src/main/java/com/hbm/items/tool/ItemTurretControl.java @@ -2,8 +2,11 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.turret.TurretBase; +import com.hbm.lib.Library; import com.hbm.tileentity.turret.TileEntityTurretBase; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.tileentity.turret.TileEntityTurretCheapo; import net.minecraft.entity.Entity; @@ -14,6 +17,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.ArrowLooseEvent; @@ -23,29 +29,32 @@ public class ItemTurretControl extends Item { @Override public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + if(entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer)entity; + EntityPlayer player = (EntityPlayer) entity; + if(player.getHeldItem() != null && stack != null && player.getHeldItem().equals(stack)) { + if(stack.hasTagCompound()) { int x = stack.getTagCompound().getInteger("xCoord"); int y = stack.getTagCompound().getInteger("yCoord"); int z = stack.getTagCompound().getInteger("zCoord"); - + TileEntity te = world.getTileEntity(x, y, z); - + if(te != null && te instanceof TileEntityTurretBase) { - TileEntityTurretBase turret = (TileEntityTurretBase)te; + TileEntityTurretBase turret = (TileEntityTurretBase) te; if(!turret.isAI) { turret.rotationYaw = player.rotationYaw; turret.rotationPitch = player.rotationPitch; - + if(turret.rotationPitch < -60) turret.rotationPitch = -60; if(turret.rotationPitch > 30) turret.rotationPitch = 30; - + if(turret instanceof TileEntityTurretCheapo) { if(turret.rotationPitch < -30) turret.rotationPitch = -30; @@ -54,16 +63,56 @@ public class ItemTurretControl extends Item { } } } + + if(te != null && te instanceof TileEntityTurretBaseNT) { + TileEntityTurretBaseNT turret = (TileEntityTurretBaseNT) te; + + MovingObjectPosition pos = Library.rayTrace(player, 200, 1, true, true, false); + + if(pos == null) + pos = Library.rayTrace(player, 200, 1); + + if(pos != null) { + + Vec3 vecOrigin = Vec3.createVectorHelper(player.posX, player.posY + player.eyeHeight - player.getYOffset(), player.posZ); + Vec3 vecDestination = Vec3.createVectorHelper(pos.blockX, pos.blockY, pos.blockZ); + + //List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(pos.blockX, pos.blockY, pos.blockZ).expand(1.0, 1.0, 1.0)); + List list = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.expand(200, 200, 200)); + + for(Entity e : list) { + + if (e.canBeCollidedWith() && e != player) { + + MovingObjectPosition mop = e.boundingBox.expand(0.2, 0.2, 0.2).calculateIntercept(vecOrigin, vecDestination); + + if(mop != null) { + + System.out.println(e.getCommandSenderName()); + pos = mop; + pos.typeOfHit = MovingObjectType.ENTITY; + pos.entityHit = e; + } + } + } + + if(pos.typeOfHit == MovingObjectType.ENTITY) { + turret.target = pos.entityHit; + turret.turnTowards(turret.getEntityPos(pos.entityHit)); + + } else { + turret.turnTowards(Vec3.createVectorHelper(pos.blockX + 0.5, pos.blockY + 0.5, pos.blockZ + 0.5)); + } + } + } } } } } - + @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - if(itemstack.stackTagCompound != null) - { + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(itemstack.stackTagCompound != null) { list.add("Linked to:"); list.add("X: " + String.valueOf(itemstack.stackTagCompound.getInteger("xCoord"))); list.add("Y: " + String.valueOf(itemstack.stackTagCompound.getInteger("yCoord"))); @@ -72,35 +121,61 @@ public class ItemTurretControl extends Item { list.add("Please select a turret."); } } - + @Override - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { - if((p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_) instanceof TurretBase)) - { - if(p_77648_1_.stackTagCompound != null) - { - p_77648_1_.stackTagCompound.setInteger("xCoord", p_77648_4_); - p_77648_1_.stackTagCompound.setInteger("yCoord", p_77648_5_); - p_77648_1_.stackTagCompound.setInteger("zCoord", p_77648_6_); - } else { - p_77648_1_.stackTagCompound = new NBTTagCompound(); - p_77648_1_.stackTagCompound.setInteger("xCoord", p_77648_4_); - p_77648_1_.stackTagCompound.setInteger("yCoord", p_77648_5_); - p_77648_1_.stackTagCompound.setInteger("zCoord", p_77648_6_); + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int fx, float fy, float fz, float f0) { + + if(world.getBlock(x, y, z) instanceof TurretBase) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); } - if(p_77648_3_.isRemote) - { - p_77648_2_.addChatMessage(new ChatComponentText("Turret Linked!")); + + stack.stackTagCompound.setInteger("xCoord", x); + stack.stackTagCompound.setInteger("yCoord", y); + stack.stackTagCompound.setInteger("zCoord", z); + + if(!world.isRemote) { + player.addChatMessage(new ChatComponentText("Turret Linked!")); } - p_77648_3_.playSoundAtEntity(p_77648_2_, "hbm:item.techBleep", 1.0F, 1.0F); - - return true; + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + return true; } - - return false; - } + + if(world.getBlock(x, y, z) instanceof BlockDummyable) { + + int[] pos = ((BlockDummyable)world.getBlock(x, y, z)).findCore(world, x, y, z); + + if(pos == null) + return false; + + int ix = pos[0]; + int iy = pos[1]; + int iz = pos[2]; + + TileEntity te = world.getTileEntity(ix, iy, iz); + + if(te instanceof TileEntityTurretBaseNT) { + + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("xCoord", ix); + stack.stackTagCompound.setInteger("yCoord", iy); + stack.stackTagCompound.setInteger("zCoord", iz); + + if(!world.isRemote) { + player.addChatMessage(new ChatComponentText("Turret Linked!")); + } + + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + return true; + } + } + + return false; + } @Override public EnumAction getItemUseAction(ItemStack par1ItemStack) { @@ -113,23 +188,23 @@ public class ItemTurretControl extends Item { int j = this.getMaxItemUseDuration(stack) - i; ArrowLooseEvent event = new ArrowLooseEvent(player, stack, j); MinecraftForge.EVENT_BUS.post(event); - - j = event.charge; - + + j = event.charge; + if(stack.hasTagCompound()) { int x = stack.getTagCompound().getInteger("xCoord"); int y = stack.getTagCompound().getInteger("yCoord"); int z = stack.getTagCompound().getInteger("zCoord"); - + if(world.getBlock(x, y, z) instanceof TurretBase) { TileEntity te = world.getTileEntity(x, y, z); - + if(te != null && te instanceof TileEntityTurretBase) { - TileEntityTurretBase turret = (TileEntityTurretBase)te; + TileEntityTurretBase turret = (TileEntityTurretBase) te; if(!turret.isAI) { - ((TurretBase)world.getBlock(x, y, z)).executeReleaseAction(world, j, player.rotationYaw, player.rotationPitch, x, y, z); + ((TurretBase) world.getBlock(x, y, z)).executeReleaseAction(world, j, player.rotationYaw, player.rotationPitch, x, y, z); } } } @@ -153,28 +228,37 @@ public class ItemTurretControl extends Item { } @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { World world = player.worldObj; - + if(stack.hasTagCompound()) { + int x = stack.getTagCompound().getInteger("xCoord"); int y = stack.getTagCompound().getInteger("yCoord"); int z = stack.getTagCompound().getInteger("zCoord"); - + if(world.getBlock(x, y, z) instanceof TurretBase) { TileEntity te = world.getTileEntity(x, y, z); - + if(te != null && te instanceof TileEntityTurretBase) { - TileEntityTurretBase turret = (TileEntityTurretBase)te; + TileEntityTurretBase turret = (TileEntityTurretBase) te; if(!turret.isAI && turret.ammo > 0) { - if(((TurretBase)world.getBlock(x, y, z)).executeHoldAction(world, stack.getMaxItemUseDuration() - count, player.rotationYaw, player.rotationPitch, x, y, z)) + if(((TurretBase) world.getBlock(x, y, z)).executeHoldAction(world, stack.getMaxItemUseDuration() - count, player.rotationYaw, player.rotationPitch, x, y, z)) turret.ammo--; } } } + + if(world.getTileEntity(x, y, z) instanceof TileEntityTurretBaseNT) { + + TileEntityTurretBaseNT turret = (TileEntityTurretBaseNT) world.getTileEntity(x, y, z); + + turret.manualSetup(); + if(!world.isRemote) + turret.updateFiringTick(); + } } } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGrenade.java index dc77cc385..5fe51a622 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenade.java @@ -43,6 +43,7 @@ import com.hbm.entity.grenade.EntityGrenadeSmart; import com.hbm.entity.grenade.EntityGrenadeStrong; import com.hbm.entity.grenade.EntityGrenadeTau; import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.entity.grenade.EntityWastePearl; import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; @@ -198,6 +199,9 @@ public class ItemGrenade extends Item { if (this == ModItems.grenade_if_null) { p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFNull(p_77659_2_, p_77659_3_)); } + if (this == ModItems.nuclear_waste_pearl) { + p_77659_2_.spawnEntityInWorld(new EntityWastePearl(p_77659_2_, p_77659_3_)); + } } return p_77659_1_; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 6d5e6b6bf..421ea4e89 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/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 (3781)"; + public static final String VERSION = "1.0.27 BETA (3801)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8d48ef492..1ef69b4ef 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -124,6 +124,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretCIWS.class, new RenderCIWSTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretCheapo.class, new RenderCheapoTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretChekhov.class, new RenderTurretChekhov()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFriendly.class, new RenderTurretFriendly()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretJeremy.class, new RenderTurretJeremy()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretTauon.class, new RenderTurretTauon()); //mines @@ -426,6 +427,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSpark.class, new RenderSnowball(ModItems.grenade_if_spark)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHopwire.class, new RenderSnowball(ModItems.grenade_if_hopwire)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFNull.class, new RenderSnowball(ModItems.grenade_if_null)); + RenderingRegistry.registerEntityRenderingHandler(EntityWastePearl.class, new RenderSnowball(ModItems.nuclear_waste_pearl)); //missiles RenderingRegistry.registerEntityRenderingHandler(EntityTestMissile.class, new RenderTestMissile()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); @@ -873,14 +875,19 @@ public class ClientProxy extends ServerProxy { } if("largeexplode".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, 1.5F, 0.0F, 0.0F); + + + fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, data.getFloat("size"), 0.0F, 0.0F); float r = 1.0F - rand.nextFloat() * 0.2F; fx.setRBGColorF(1F * r, 0.9F * r, 0.5F * r); - net.minecraft.client.particle.EntityExplodeFX sec = new net.minecraft.client.particle.EntityExplodeFX(world, x, y, z, 0.0F, 0.0F, 0.0F); - float r2 = 1.0F - rand.nextFloat() * 0.5F; - sec.setRBGColorF(0.5F * r2, 0.5F * r2, 0.5F * r2); - Minecraft.getMinecraft().effectRenderer.addEffect(sec); + for(int i = 0; i < data.getByte("count"); i++) { + net.minecraft.client.particle.EntityExplodeFX sec = new net.minecraft.client.particle.EntityExplodeFX(world, x, y, z, 0.0F, 0.0F, 0.0F); + float r2 = 1.0F - rand.nextFloat() * 0.5F; + sec.setRBGColorF(0.5F * r2, 0.5F * r2, 0.5F * r2); + sec.multipleParticleScaleBy(i + 1); + Minecraft.getMinecraft().effectRenderer.addEffect(sec); + } } if(fx != null) @@ -1199,6 +1206,13 @@ public class ClientProxy extends ServerProxy { } } } + + if("tau".equals(type)) { + + for(int i = 0; i < data.getByte("count"); i++) + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05)); + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); + } } @Override diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ebf0cfb18..5a7053e7e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -193,6 +193,7 @@ public class MainRegistry { public static Achievement digammaSee; public static Achievement digammaFeel; public static Achievement digammaKnow; + public static Achievement digammaKauaiMoho; public static int generalOverride = 0; public static int polaroidID = 1; @@ -453,6 +454,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityTurretChekhov.class, "tileentity_turret_chekhov"); GameRegistry.registerTileEntity(TileEntityTurretJeremy.class, "tileentity_turret_jeremy"); GameRegistry.registerTileEntity(TileEntityTurretTauon.class, "tileentity_turret_tauon"); + GameRegistry.registerTileEntity(TileEntityTurretFriendly.class, "tileentity_turret_friendly"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -601,6 +603,7 @@ public class MainRegistry { EntityRegistry.registerModEntity(EntityCloudTom.class, "entity_moonstone_blast", 147, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityBeamVortex.class, "entity_vortex_beam", 148, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityFireworks.class, "entity_firework_ball", 149, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityWastePearl.class, "entity_waste_pearl", 150, 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); @@ -877,6 +880,12 @@ public class MainRegistry { return new EntityGrenadeIFNull(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); } }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.nuclear_waste_pearl, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World world, IPosition position) { + return new EntityWastePearl(world, position.getX(), position.getY(), position.getZ()); + } + }); } @EventHandler @@ -921,6 +930,7 @@ public class MainRegistry { digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -2, 8, ModItems.digamma_see, null).initIndependentStat().registerStat(); digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 0, 8, ModItems.digamma_feel, digammaSee).initIndependentStat().registerStat(); digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 2, 8, ModItems.digamma_know, digammaFeel).initIndependentStat().registerStat().setSpecial(); + digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 4, 8, ModItems.digamma_kauai_moho, digammaKnow).initIndependentStat().registerStat().setSpecial(); AchievementPage.registerAchievementPage(new AchievementPage("Nuclear Tech", new Achievement[] { achSacrifice, @@ -956,7 +966,8 @@ public class MainRegistry { bossWorm, digammaSee, digammaFeel, - digammaKnow + digammaKnow, + digammaKauaiMoho })); // MUST be initialized AFTER achievements!! diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 4868fb4bd..e35c9de50 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -768,7 +768,7 @@ public class ModEventHandler } } - private static final String hash = "a4e6e2d37cc6bae3b19a925569c008d8f98b867e62ecb72398ee6fd5d7ee535a"; + private static final String hash = "41eb77f138ce350932e33b6b26b233df9aad0c0c80c6a49cb9a54ddd8fae3f83"; @SubscribeEvent public void onClickSign(PlayerInteractEvent event) { @@ -787,9 +787,9 @@ public class ModEventHandler if(result.equals(hash)) { world.func_147480_a(x, y, z, false); - EntityItem entityitem = new EntityItem(world, x, y, z, new ItemStack(ModItems.bobmazon_hidden)); - entityitem.delayBeforeCanPickup = 10; - world.spawnEntityInWorld(entityitem); + EntityItem entityitem = new EntityItem(world, x, y, z, new ItemStack(ModItems.bobmazon_hidden)); + entityitem.delayBeforeCanPickup = 10; + world.spawnEntityInWorld(entityitem); } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index f42016f47..e3858992b 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -264,7 +264,9 @@ public class ResourceManager { public static final ResourceLocation turret_cheapo_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_cheapo_gun.png"); public static final ResourceLocation turret_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base.png"); + public static final ResourceLocation turret_base_friendly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base_friendly.png"); public static final ResourceLocation turret_carriage_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/carriage.png"); + public static final ResourceLocation turret_carriage_friendly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/carriage_friendly.png"); public static final ResourceLocation turret_connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/connector.png"); public static final ResourceLocation turret_chekhov_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/chekhov.png"); public static final ResourceLocation turret_chekhov_barrels_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/chekhov_barrels.png"); diff --git a/src/main/java/com/hbm/particle/ParticleSpark.java b/src/main/java/com/hbm/particle/ParticleSpark.java new file mode 100644 index 000000000..386bd3678 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleSpark.java @@ -0,0 +1,89 @@ +package com.hbm.particle; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +public class ParticleSpark extends EntityFX { + + List steps = new ArrayList(); + int thresh; + + public ParticleSpark(World world, double x, double y, double z, double mX, double mY, double mZ) { + super(world, x, y, z, mX, mY, mZ); + thresh = 4 + rand.nextInt(3); + steps.add(new double[] { motionX, motionY, motionZ }); + this.particleMaxAge = 20 + rand.nextInt(10); + this.particleGravity = 0.5F; + } + + public int getFXLayer() { + return 3; + } + + public void onUpdate() { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } + + steps.add(new double[] { motionX, motionY, motionZ }); + + while(steps.size() > thresh) + steps.remove(0); + + this.motionY -= 0.04D * (double) this.particleGravity; + double lastY = this.motionY; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + if(this.onGround) { + this.onGround = false; + motionY = -lastY * 0.8D; + } + } + + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + if(steps.size() < 2) + return; + + GL11.glPushMatrix(); + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glLineWidth(3F); + + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + + tess.startDrawing(3); + tess.setBrightness(240); + tess.setColorOpaque_I(0xffffff); + + double[] prev = new double[] { pX, pY, pZ }; + + for(int i = 1; i < steps.size(); i++) { + + double[] curr = new double[] { prev[0] + steps.get(i)[0], prev[1] + steps.get(i)[1], prev[2] + steps.get(i)[2] }; + + tess.addVertex(prev[0], prev[1], prev[2]); + + prev = curr; + } + tess.draw(); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java index 9e60ea99c..db8b51aeb 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -8,12 +8,7 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelBaleflare; -import com.hbm.render.model.ModelBuckshot; import com.hbm.render.model.ModelBullet; -import com.hbm.render.model.ModelGrenade; -import com.hbm.render.model.ModelMIRV; -import com.hbm.render.model.ModelMiniNuke; -import com.hbm.render.model.ModelRocket; import com.hbm.render.util.RenderSparks; import net.minecraft.client.renderer.Tessellator; @@ -24,20 +19,10 @@ import net.minecraft.util.ResourceLocation; public class RenderBullet extends Render { private ModelBullet bullet; - private ModelBuckshot buckshot; - private ModelRocket rocket; - private ModelGrenade grenade; - private ModelMiniNuke nuke; - private ModelMIRV mirv; private ModelBaleflare bf; public RenderBullet() { bullet = new ModelBullet(); - buckshot = new ModelBuckshot(); - rocket = new ModelRocket(); - grenade = new ModelGrenade(); - nuke = new ModelMiniNuke(); - mirv = new ModelMIRV(); bf = new ModelBaleflare(); } @@ -62,6 +47,7 @@ public class RenderBullet extends Render { switch(style) { case BulletConfiguration.STYLE_NONE: break; case BulletConfiguration.STYLE_NORMAL: renderBullet(trail); break; + case BulletConfiguration.STYLE_PISTOL: renderPistol(trail); break; case BulletConfiguration.STYLE_BOLT: renderDart(trail, bullet.getEntityId()); break; case BulletConfiguration.STYLE_FLECHETTE: renderFlechette(); break; case BulletConfiguration.STYLE_FOLLY: renderBullet(trail); break; @@ -73,6 +59,7 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_BF: renderNuke(2); break; case BulletConfiguration.STYLE_ORB: renderOrb(trail); break; case BulletConfiguration.STYLE_METEOR: renderMeteor(trail); break; + case BulletConfiguration.STYLE_APDS: renderAPDS(); break; default: renderBullet(trail); break; } @@ -102,6 +89,19 @@ public class RenderBullet extends Render { } + private void renderPistol(int type) { + + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotated(90, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.bullet_pistol_tex); + ResourceManager.projectiles.renderPart("BulletPistol"); + GL11.glShadeModel(GL11.GL_FLAT); + + } + private void renderBuckshot() { GL11.glScaled(0.5, 0.5, 0.5); @@ -280,6 +280,18 @@ public class RenderBullet extends Render { GL11.glShadeModel(GL11.GL_FLAT); } + private void renderAPDS() { + + GL11.glScaled(2, 2, 2); + GL11.glRotated(90, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.flechette_tex); + ResourceManager.projectiles.renderPart("Flechette"); + GL11.glShadeModel(GL11.GL_FLAT); + } + private void renderDart(int style, int eID) { float red = 1F; diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 332497ef6..12cee4552 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -815,6 +815,64 @@ public class ItemRenderLibrary { GL11.glTranslated(0, -1, 0); ResourceManager.solar_mirror.renderPart("Mirror"); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.turret_chekhov), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + GL11.glTranslated(-0.75, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.turret_base_tex); ResourceManager.turret_chekhov.renderPart("Base"); + bindTexture(ResourceManager.turret_carriage_tex); ResourceManager.turret_chekhov.renderPart("Carriage"); + bindTexture(ResourceManager.turret_chekhov_tex); ResourceManager.turret_chekhov.renderPart("Body"); + bindTexture(ResourceManager.turret_chekhov_barrels_tex); ResourceManager.turret_chekhov.renderPart("Barrels"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.turret_friendly), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + GL11.glTranslated(-0.75, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.turret_base_friendly_tex); ResourceManager.turret_chekhov.renderPart("Base"); + bindTexture(ResourceManager.turret_carriage_friendly_tex); ResourceManager.turret_chekhov.renderPart("Carriage"); + bindTexture(ResourceManager.turret_chekhov_tex); ResourceManager.turret_chekhov.renderPart("Body"); + bindTexture(ResourceManager.turret_chekhov_barrels_tex); ResourceManager.turret_chekhov.renderPart("Barrels"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.turret_jeremy), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommon() { + GL11.glTranslated(-0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.turret_base_tex); ResourceManager.turret_chekhov.renderPart("Base"); + bindTexture(ResourceManager.turret_carriage_tex); ResourceManager.turret_chekhov.renderPart("Carriage"); + bindTexture(ResourceManager.turret_jeremy_tex); ResourceManager.turret_jeremy.renderPart("Gun"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.turret_tauon), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.turret_base_tex); ResourceManager.turret_chekhov.renderPart("Base"); + bindTexture(ResourceManager.turret_carriage_tex); ResourceManager.turret_chekhov.renderPart("Carriage"); + bindTexture(ResourceManager.turret_tauon_tex); ResourceManager.turret_tauon.renderPart("Cannon"); + ResourceManager.turret_tauon.renderPart("Rotor"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretFriendly.java b/src/main/java/com/hbm/render/tileentity/RenderTurretFriendly.java new file mode 100644 index 000000000..37b200fe3 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderTurretFriendly.java @@ -0,0 +1,54 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.turret.TileEntityTurretChekhov; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; + +public class RenderTurretFriendly extends RenderTurretBase { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + TileEntityTurretChekhov turret = (TileEntityTurretChekhov)te; + Vec3 pos = turret.getHorizontalOffset(); + + GL11.glPushMatrix(); + GL11.glTranslated(x + pos.xCoord, y, z + pos.zCoord); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + this.renderConnectors(turret, true, false, FluidType.NONE); + + bindTexture(ResourceManager.turret_base_friendly_tex); + ResourceManager.turret_chekhov.renderPart("Base"); + double yaw = -Math.toDegrees(turret.lastRotationYaw + (turret.rotationYaw - turret.lastRotationYaw) * interp) - 90D; + double pitch = Math.toDegrees(turret.lastRotationPitch + (turret.rotationPitch - turret.lastRotationPitch) * interp); + + GL11.glRotated(yaw, 0, 1, 0); + bindTexture(ResourceManager.turret_carriage_friendly_tex); + ResourceManager.turret_chekhov.renderPart("Carriage"); + + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated(pitch, 0, 0, 1); + GL11.glTranslated(0, -1.5, 0); + bindTexture(ResourceManager.turret_chekhov_tex); + ResourceManager.turret_chekhov.renderPart("Body"); + + float rot = turret.lastSpin + (turret.spin - turret.lastSpin) * interp; + + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated(rot, -1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + bindTexture(ResourceManager.turret_chekhov_barrels_tex); + ResourceManager.turret_chekhov.renderPart("Barrels"); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretTauon.java b/src/main/java/com/hbm/render/tileentity/RenderTurretTauon.java index 7cf0e84e4..12b3f205e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderTurretTauon.java +++ b/src/main/java/com/hbm/render/tileentity/RenderTurretTauon.java @@ -44,18 +44,16 @@ public class RenderTurretTauon extends RenderTurretBase { bindTexture(ResourceManager.turret_tauon_tex); ResourceManager.turret_tauon.renderPart("Cannon"); - if(turret.target != null && turret.aligned && System.currentTimeMillis() % 500 < 200) { + if(turret.beam > 0) { GL11.glPushMatrix(); GL11.glTranslated(0, 1.5D, 0); - Vec3 pos = turret.getTurretPos(); - Vec3 ent = turret.getEntityPos(turret.target); - double length = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord).lengthVector(); - BeamPronter.prontBeam(Vec3.createVectorHelper(length, 0, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0xffa200, 0xffd000, (int)te.getWorldObj().getTotalWorldTime() / 5 % 360, (int)length + 1, 0.1F, 0, 0); + BeamPronter.prontBeam(Vec3.createVectorHelper(turret.lastDist, 0, 0), EnumWaveType.RANDOM, EnumBeamType.LINE, 0xffa200, 0xffd000, (int)te.getWorldObj().getTotalWorldTime() / 5 % 360, (int)turret.lastDist + 1, 0.1F, 0, 0); GL11.glPopMatrix(); } + float rot = turret.lastSpin + (turret.spin - turret.lastSpin) * interp; GL11.glTranslated(0, 1.375, 0); - GL11.glRotated((te.getWorldObj().getTotalWorldTime() + interp) * 40, -1, 0, 0); + GL11.glRotated(rot, -1, 0, 0); GL11.glTranslated(0, -1.375, 0); ResourceManager.turret_tauon.renderPart("Rotor"); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index fc69b4e99..f80ba2e31 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -123,6 +123,8 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple nbt.setInteger("stattrak", this.stattrak); } + public void manualSetup() { } + @Override public void updateEntity() { @@ -393,13 +395,19 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple * Assumes that the target is not null */ protected void alignTurret() { + this.turnTowards(this.getEntityPos(target)); + } + + /** + * Turns the turret towards the specified position + */ + public void turnTowards(Vec3 ent) { double turnYaw = Math.toRadians(this.getTurretYawSpeed()); double turnPitch = Math.toRadians(this.getTurretPitchSpeed()); double pi2 = Math.PI * 2; Vec3 pos = this.getTurretPos(); - Vec3 ent = this.getEntityPos(target); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); double targetPitch = Math.asin(delta.yCoord / delta.lengthVector()); @@ -463,8 +471,9 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple Vec3 pos = this.getTurretPos(); Vec3 ent = this.getEntityPos(e); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); + double length = delta.lengthVector(); - if(delta.lengthVector() < this.getDecetorGrace()) + if(length < this.getDecetorGrace()) return false; delta = delta.normalize(); @@ -475,8 +484,19 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(pitchDeg < -this.getTurretDepression() || pitchDeg > this.getTurretElevation()) return false; - //TODO: figure out why this shit apparently doesn't work - return !Library.isObstructed(worldObj, pos.xCoord, pos.yCoord, pos.zCoord, ent.xCoord, ent.yCoord, ent.zCoord); + /*for(double i = 0; i < length; i += 0.25D) { + + double x = pos.xCoord + delta.xCoord * i; + double y = pos.yCoord + delta.yCoord * i; + double z = pos.zCoord + delta.zCoord * i; + + worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); + } + + worldObj.spawnParticle("cloud", pos.xCoord, pos.yCoord, pos.zCoord, 0, 0.1, 0); + worldObj.spawnParticle("flame", ent.xCoord, ent.yCoord, ent.zCoord, 0, 0.1, 0);*/ + + return !Library.isObstructed(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); } /** diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index 9bf911235..1cfc73152 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -55,6 +55,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { public double getBarrelLength() { return 3.5D; } + + @Override + public double getAcceptableInaccuracy() { + return 15; + } int timer; @@ -63,7 +68,7 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { timer++; - if(timer > 20 && timer % 2 == 0) { + if(timer > 20 && timer % getDelay() == 0) { BulletConfiguration conf = this.getFirstConfigLoaded(); @@ -80,14 +85,21 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); data.setString("mode", "largeexplode"); + data.setFloat("size", 1.5F); + data.setByte("count", (byte)1); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } } + public int getDelay() { + return 2; + } + public float spin; public float lastSpin; private float accel; + private boolean manual; @Override public void updateEntity() { @@ -95,12 +107,14 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { if(worldObj.isRemote) { - if(this.target != null) { + if(this.target != null || manual) { this.accel = Math.min(45F, this.accel += 2); } else { this.accel = Math.max(0F, this.accel -= 2); } + manual = false; + this.lastSpin = this.spin; this.spin += this.accel; @@ -110,7 +124,7 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { } } else { - if(this.target == null) { + if(this.target == null && !manual) { this.timer--; @@ -122,4 +136,10 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { } } } + + @Override + public void manualSetup() { + + manual = true; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java new file mode 100644 index 000000000..cadfc4c94 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java @@ -0,0 +1,34 @@ +package com.hbm.tileentity.turret; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.BulletConfigSyncingUtil; + +public class TileEntityTurretFriendly extends TileEntityTurretChekhov { + + static List configs = new ArrayList(); + + static { + configs.add(BulletConfigSyncingUtil.R5_NORMAL); + configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); + configs.add(BulletConfigSyncingUtil.R5_DU); + configs.add(BulletConfigSyncingUtil.R5_STAR); + configs.add(BulletConfigSyncingUtil.CHL_R5); + } + + @Override + protected List getAmmoList() { + return configs; + } + + @Override + public String getName() { + return "container.turretFriendly"; + } + + @Override + public int getDelay() { + return 5; + } +} diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index f2240e904..feddb8f2c 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -1,27 +1,47 @@ package com.hbm.tileentity.turret; +import java.util.ArrayList; import java.util.List; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { + static List configs = new ArrayList(); + + static { + configs.add(BulletConfigSyncingUtil.SHELL_NORMAL); + configs.add(BulletConfigSyncingUtil.SHELL_EXPLOSIVE); + configs.add(BulletConfigSyncingUtil.SHELL_AP); + configs.add(BulletConfigSyncingUtil.SHELL_DU); + configs.add(BulletConfigSyncingUtil.SHELL_W9); + } + @Override protected List getAmmoList() { - return null; + return configs; } @Override public String getName() { - return null; + return "container.turretJeremy"; } @Override public double getDecetorGrace() { - return 10D; + return 16D; } @Override public double getTurretDepression() { - return 35D; + return 45D; } @Override @@ -29,8 +49,58 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { return 10000; } + @Override + public double getBarrelLength() { + return 4.25D; + } + + @Override + public double getDecetorRange() { + return 80D; + } + + int timer; + int reload; + + @Override + public void updateEntity() { + + if(reload > 0) + reload--; + + if(reload == 1) + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_reload", 2.0F, 1.0F); + + super.updateEntity(); + } + @Override public void updateFiringTick() { + timer++; + + if(timer % 40 == 0) { + + BulletConfiguration conf = this.getFirstConfigLoaded(); + + if(conf != null) { + this.spawnBullet(conf); + this.conusmeAmmo(conf.ammo); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 4.0F, 1.0F); + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + reload = 20; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 0F); + data.setByte("count", (byte)5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + } + } } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index 571ac1575..c10dd3b8b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -1,22 +1,39 @@ package com.hbm.tileentity.turret; +import java.util.ArrayList; import java.util.List; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.lib.ModDamageSource; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + public class TileEntityTurretTauon extends TileEntityTurretBaseNT { + static List configs = new ArrayList(); + + static { + configs.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + } + @Override protected List getAmmoList() { - return null; + return configs; } @Override public String getName() { - return null; + return "container.turretTauon"; } @Override public double getDecetorGrace() { - return 7D; + return 3D; } @Override @@ -39,13 +56,98 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { return 35D; } + @Override + public double getDecetorRange() { + return 128D; + } + + @Override + public double getBarrelLength() { + return 2.0D - 0.0625D; + } + @Override public long getMaxPower() { - return 10000; + return 100000; + } + + @Override + public long getConsumption() { + return 1000; + } + + int timer; + public int beam; + public float spin; + public float lastSpin; + public double lastDist; + + @Override + public void updateEntity() { + + if(worldObj.isRemote) { + + if(this.target != null) { + Vec3 pos = this.getTurretPos(); + Vec3 ent = this.getEntityPos(this.target); + double length = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord).lengthVector(); + this.lastDist = length; + } + + if(beam > 0) + beam--; + + this.lastSpin = this.spin; + + if(this.target != null) { + this.spin += 45; + } + + if(this.spin >= 360F) { + this.spin -= 360F; + this.lastSpin -= 360F; + } + } + + super.updateEntity(); } @Override public void updateFiringTick() { + timer++; + + if(timer % 5 == 0) { + + BulletConfiguration conf = this.getFirstConfigLoaded(); + + if(conf != null && this.target != null) { + this.target.attackEntityFrom(ModDamageSource.electricity, 30F + worldObj.rand.nextInt(11)); + this.conusmeAmmo(conf.ammo); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.tauShoot", 4.0F, 0.9F + worldObj.rand.nextFloat() * 0.3F); + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("shot", true); + this.networkPack(data, 250);Vec3 pos = this.getTurretPos(); + + Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + NBTTagCompound dPart = new NBTTagCompound(); + dPart.setString("type", "tau"); + dPart.setByte("count", (byte)5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + } + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + + if(nbt.hasKey("shot")) + beam = 3; + else + super.networkUnpack(nbt); } } diff --git a/src/main/java/com/hbm/world/dungeon/AncientTomb.java b/src/main/java/com/hbm/world/dungeon/AncientTomb.java index 2d90117e8..c319fa4b2 100644 --- a/src/main/java/com/hbm/world/dungeon/AncientTomb.java +++ b/src/main/java/com/hbm/world/dungeon/AncientTomb.java @@ -127,11 +127,6 @@ public class AncientTomb { sVec.rotateAroundY(sRot); } - /// PRINT ACCESS /// - DungeonToolbox.generateBox(world, x + 4, y - 2, z - 1, 5, 1, 3, concrete); - DungeonToolbox.generateBox(world, x + 4, y - 1, z - 1, 5, 3, 3, ModBlocks.gas_radon_tomb); - DungeonToolbox.generateBox(world, x + 4, y + 2, z - 1, 5, 1, 3, concrete); - for(int dx = x + 4; dx < x + 8; dx++) { for(int dy = y - 1; dy < y + 4; dy++) { for(int dz = z - 2; dz < z + 3; dz++) { @@ -174,6 +169,9 @@ public class AncientTomb { DungeonToolbox.generateBox(world, x - core, y - core, z - core, dimCore, dimCore, dimCore, ModBlocks.ancient_scrap); - world.setBlock(x + size, y, z, ModBlocks.brick_concrete_marked); + /// PRINT ACCESS /// + DungeonToolbox.generateBox(world, x + 6, y - 2, z - 1, 2, 1, 3, concrete); + DungeonToolbox.generateBox(world, x + 4, y - 1, z - 1, 5, 3, 3, ModBlocks.gas_radon_tomb); + DungeonToolbox.generateBox(world, x + 6, y + 2, z - 1, 2, 1, 3, concrete); } } diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 6ce332ca6..fc6ce7ac1 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27-3781", + "version":"1.0.27-3801", "mcversion": "1.7.10", "url": "", "updateUrl": "",