From 24a787c4bbe244890b5b456643b8ce2920de428b Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 31 Jan 2021 02:03:14 +0100 Subject: [PATCH] alas, even more trash --- src/main/java/assets/hbm/lang/de_DE.lang | 9 +- src/main/java/assets/hbm/lang/en_US.lang | 7 + .../assets/hbm/models/armor/mod_tesla.obj | 704 ++++++++++++++++++ .../assets/hbm/textures/armor/mod_tesla.png | Bin 0 -> 636 bytes .../textures/blocks/brick_jungle_fragile.png | Bin 0 -> 739 bytes .../assets/hbm/textures/items/back_tesla.png | Bin 0 -> 372 bytes .../assets/hbm/textures/items/broodwich.png | Bin 461 -> 444 bytes .../assets/hbm/textures/items/insert_du.png | Bin 0 -> 259 bytes .../assets/hbm/textures/items/insert_era.png | Bin 0 -> 255 bytes .../hbm/textures/items/insert_polonium.png | Bin 0 -> 291 bytes .../hbm/textures/items/insert_yharonite.png | Bin 0 -> 318 bytes .../assets/hbm/textures/items/journal_pip.png | Bin 0 -> 361 bytes .../java/assets/hbm/textures/items/wd40.png | Bin 0 -> 300 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../java/com/hbm/blocks/bomb/DetCord.java | 5 +- .../com/hbm/blocks/generic/BlockCoalOil.java | 84 +-- .../com/hbm/blocks/generic/FragileBrick.java | 58 ++ .../com/hbm/crafting/ConsumableRecipes.java | 3 + .../java/com/hbm/explosion/ExplosionNT.java | 5 + .../com/hbm/explosion/ExplosionNukeSmall.java | 10 +- .../java/com/hbm/handler/ArmorModHandler.java | 15 +- src/main/java/com/hbm/items/ModItems.java | 36 +- .../com/hbm/items/armor/ItemModInsert.java | 47 +- .../com/hbm/items/armor/ItemModServos.java | 53 +- .../com/hbm/items/armor/ItemModTesla.java | 97 +++ .../java/com/hbm/items/armor/ItemModWD40.java | 77 ++ .../java/com/hbm/items/armor/JetpackBase.java | 69 +- .../com/hbm/items/armor/JetpackBooster.java | 5 +- .../com/hbm/items/armor/JetpackBreak.java | 5 +- .../com/hbm/items/armor/JetpackRegular.java | 5 +- .../hbm/items/armor/JetpackVectorized.java | 5 +- .../java/com/hbm/items/tool/ItemWandD.java | 8 +- .../java/com/hbm/main/CraftingManager.java | 4 +- src/main/java/com/hbm/main/MainRegistry.java | 10 + .../java/com/hbm/main/ModEventHandler.java | 13 +- .../com/hbm/main/ModEventHandlerClient.java | 5 + .../java/com/hbm/main/ResourceManager.java | 3 + .../hbm/render/loader/ModelRendererObj.java | 5 +- .../com/hbm/render/model/ModelArmorBase.java | 10 + .../com/hbm/render/model/ModelBackTesla.java | 33 + .../java/com/hbm/world/dungeon/Relay.java | 11 +- .../hbm/world/generator/JungleDungeon.java | 22 +- .../generator/room/JungleDungeonRoom.java | 2 +- 43 files changed, 1312 insertions(+), 116 deletions(-) create mode 100644 src/main/java/assets/hbm/models/armor/mod_tesla.obj create mode 100644 src/main/java/assets/hbm/textures/armor/mod_tesla.png create mode 100644 src/main/java/assets/hbm/textures/blocks/brick_jungle_fragile.png create mode 100644 src/main/java/assets/hbm/textures/items/back_tesla.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_du.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_era.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_polonium.png create mode 100644 src/main/java/assets/hbm/textures/items/insert_yharonite.png create mode 100644 src/main/java/assets/hbm/textures/items/journal_pip.png create mode 100644 src/main/java/assets/hbm/textures/items/wd40.png create mode 100644 src/main/java/com/hbm/blocks/generic/FragileBrick.java create mode 100644 src/main/java/com/hbm/items/armor/ItemModTesla.java create mode 100644 src/main/java/com/hbm/items/armor/ItemModWD40.java create mode 100644 src/main/java/com/hbm/render/model/ModelBackTesla.java diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index b71dc333e..f0d6c2fe2 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -588,6 +588,7 @@ item.attachment_mask.name=Anfügbare Gasmaske item.australium_iii.name=Mark III Lebensverlängerer item.australium_iv.name=Mark IV Lebensverlängerer item.australium_v.name=Mark V Lebensverlängerer +item.back_tesla.name=Teslarucksack item.balefire_and_ham.name=Ham and Balefire-Eggs item.balefire_and_steel.name=Balefire-Zeug item.balefire_scrambled.name=Rühr-Balefire-Ei @@ -1286,11 +1287,15 @@ item.ingot_uranium.name=Uranbarren item.ingot_uranium_fuel.name=Urankernbrennstoffbarren item.ingot_verticium.name=Verticiumbarren item.ingot_weidanium.name=Weidaniumbarren +item.insert_du.name=DU-Einlage +item.insert_era.name=Explosive Reaktivpaanzerungseinlage item.insert_esapi.name=ESAPI-Einlage -item.insert_kevlar.name=Kevlar-Einlage +item.insert_kevlar.name=Kevlareinlage item.insert_sapi.name=SAPI-Einlage +item.insert_polonium.name=Poloniumeinlage item.insert_steel.name=Schwere Stahleinlage item.insert_xsapi.name=XSAPI-Einlage +item.insert_yharonite.name=Yharoniteinlage item.jackt.name=Verdammt stylische Kugeljacke item.jackt2.name=Verdammt stylische Kugeljacke 2: Tokyo Drift item.jetpack_boost.name=Boosterrucksack @@ -2134,6 +2139,7 @@ item.weapon_pipe_lead.name=Die Handüberbrückung item.weapon_pipe_rusty.name=Der Einstellungskorrigierer item.weapon_saw.name=Ärztlich autorisierter Mord item.weaponized_starblaster_cell.name=§cManipulierte Sternenblaster-Energiezelle§r +item.wd40.name=VT-40 item.wire_advanced_alloy.name=Supraleiter item.wire_aluminium.name=Aluminiumdraht item.wire_copper.name=Kupferdraht @@ -2281,6 +2287,7 @@ tile.brick_dungeon_tile.name=Berzelianitfliese tile.brick_jungle.name=Enargitziegel tile.brick_jungle_circle.name=Mechanistenzirkel tile.brick_jungle_cracked.name=Rissige Enargitziegel +tile.brick_jungle_fragile.name=Brüchige Enargitziegel tile.brick_jungle_glyph.name=Enargit-Glyphenziegel tile.brick_jungle_lava.name=Magmatische Enargitziegel tile.brick_jungle_mystic.name=Arkane Enargitziegel diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index c1a86b62f..2248d7729 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -588,6 +588,7 @@ item.attachment_mask.name=Gas Mask Attachable item.australium_iii.name=Mark III Life Extender item.australium_iv.name=Mark IV Life Extender item.australium_v.name=Mark V Life Extender +item.back_tesla.name=Back-Mounted Tesla Coil item.balefire_and_ham.name=Ham and Balefire Eggs item.balefire_and_steel.name=Balefire and Steel item.balefire_scrambled.name=Scrambled Balefire Egg @@ -1286,11 +1287,15 @@ item.ingot_uranium.name=Uranium Ingot item.ingot_uranium_fuel.name=Ingot of Uranium Fuel item.ingot_verticium.name=Verticium Ingot item.ingot_weidanium.name=Weidanium Ingot +item.insert_du.name=DU Insert +item.insert_era.name=Explosive Reactive Armor Insert item.insert_esapi.name=ESAPI Insert item.insert_kevlar.name=Kevlar Insert item.insert_sapi.name=SAPI Insert +item.insert_polonium.name=Polonium Insert item.insert_steel.name=Heavy Steel Insert item.insert_xsapi.name=XSAPI Insert +item.insert_yharonite.name=Yharonite Insert item.jackt.name=Damn Stylish Ballistic Jacket item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift item.jetpack_boost.name=Boostpack @@ -2134,6 +2139,7 @@ item.weapon_pipe_lead.name=The Manual Override item.weapon_pipe_rusty.name=The Attitude Adjuster item.weapon_saw.name=Doctor Assisted Homicide item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r +item.wd40.name=VT-40 item.wire_advanced_alloy.name=Super Conductor item.wire_aluminium.name=Aluminium Wire item.wire_copper.name=Copper Wire @@ -2281,6 +2287,7 @@ tile.brick_dungeon_tile.name=Berzelianite Tile tile.brick_jungle.name=Enargite Bricks tile.brick_jungle_circle.name=Mechanist's Circle tile.brick_jungle_cracked.name=Cracked Enargite Bricks +tile.brick_jungle_fragile.name=Brittle Enargite Bricks tile.brick_jungle_glyph.name=Enargite Glyph Bricks tile.brick_jungle_lava.name=Magmatic Enargite Bricks tile.brick_jungle_mystic.name=Arcane Enargite Bricks diff --git a/src/main/java/assets/hbm/models/armor/mod_tesla.obj b/src/main/java/assets/hbm/models/armor/mod_tesla.obj new file mode 100644 index 000000000..5ae01aa9e --- /dev/null +++ b/src/main/java/assets/hbm/models/armor/mod_tesla.obj @@ -0,0 +1,704 @@ +# Blender v2.79 (sub 0) OBJ File: 'tesla.blend' +# www.blender.org +o Cube +v 1.999993 2.000000 2.500000 +v -2.000007 2.000000 2.500000 +v 1.999995 9.999999 2.500000 +v -2.000005 10.000001 2.500000 +v -2.000007 3.000000 4.500000 +v 1.999993 3.000000 4.500000 +v -2.000005 9.000001 4.500000 +v 1.999995 8.999999 4.500000 +v 1.999993 3.000000 2.500000 +v -2.000007 3.000000 2.500000 +v 1.999995 8.999999 2.500000 +v -2.000005 9.000001 2.500000 +v -3.000007 3.000002 2.500000 +v -3.000005 9.000001 2.500000 +v 2.999993 2.999998 2.500000 +v 2.999995 8.999999 2.500000 +v 1.999993 3.000000 3.500000 +v 1.999995 8.999999 3.500000 +v -2.000005 9.000001 3.500000 +v -2.000007 3.000000 3.500000 +v -3.000005 9.000001 3.500000 +v -3.000007 3.000002 3.500000 +v 2.999993 2.999998 3.500000 +v 2.999995 8.999999 3.500000 +v 1.999993 4.000000 4.500000 +v 1.999995 8.000000 4.500000 +v -2.000006 4.000000 4.500000 +v -2.000005 8.000001 4.500000 +v -3.000006 4.000002 3.500000 +v -3.000005 8.000001 3.500000 +v 2.999994 3.999998 3.500000 +v 2.999995 7.999998 3.500000 +v 1.999993 4.000000 3.500000 +v 1.999995 8.000000 3.500000 +v -2.000006 4.000000 3.500000 +v -2.000005 8.000001 3.500000 +v -0.000006 4.500000 11.000000 +v -1.060668 4.939341 5.000000 +v -1.060668 4.939341 11.000000 +v -1.500006 6.000000 5.000000 +v -1.500006 6.000000 11.000000 +v -1.060667 7.060661 5.000000 +v -1.060667 7.060661 11.000000 +v -0.000005 7.500000 5.000000 +v -0.000005 7.500000 11.000000 +v 1.060656 7.060659 5.000000 +v 1.060656 7.060659 11.000000 +v 1.499994 6.000000 5.000000 +v 1.499994 6.000000 11.000000 +v 1.060655 4.939341 5.000000 +v 1.060655 4.939341 11.000000 +v -0.000006 4.500000 9.500000 +v -0.000007 3.500000 10.500000 +v -0.000007 1.500000 10.500000 +v -0.000008 0.500000 9.500000 +v -0.000008 0.500000 8.500000 +v -0.000007 1.500000 7.500000 +v -0.000007 3.500000 7.500000 +v -0.000006 4.500000 8.500000 +v 1.060655 4.939339 9.500000 +v 1.767761 4.232231 10.500000 +v 3.181973 2.818018 10.500000 +v 3.889081 2.110910 9.500000 +v 3.889081 2.110910 8.500000 +v 3.181973 2.818018 7.500000 +v 1.767761 4.232231 7.500000 +v 1.060655 4.939339 8.500000 +v 1.499994 6.000000 9.500000 +v 2.499996 5.999998 10.500000 +v 4.499994 5.999998 10.500000 +v 5.499994 5.999996 9.500000 +v 5.499994 5.999996 8.500000 +v 4.499994 5.999998 7.500000 +v 2.499996 5.999998 7.500000 +v 1.499994 6.000000 8.500000 +v 1.060656 7.060661 9.500000 +v 1.767764 7.767765 10.500000 +v 3.181975 9.181980 10.500000 +v 3.889087 9.889085 9.500000 +v 3.889087 9.889085 8.500000 +v 3.181975 9.181980 7.500000 +v 1.767764 7.767765 7.500000 +v 1.060656 7.060661 8.500000 +v -0.000005 7.500000 9.500000 +v -0.000001 8.500000 10.500000 +v -0.000004 10.500000 10.500000 +v -0.000000 11.500001 9.500000 +v -0.000000 11.500001 8.500000 +v -0.000004 10.500000 7.500000 +v -0.000001 8.500000 7.500000 +v -0.000005 7.500000 8.500000 +v -1.060663 7.060661 9.500000 +v -1.767770 7.767769 10.500000 +v -3.181985 9.181982 10.500000 +v -3.889088 9.889092 9.500000 +v -3.889088 9.889092 8.500000 +v -3.181985 9.181982 7.500000 +v -1.767770 7.767769 7.500000 +v -1.060663 7.060661 8.500000 +v -1.500006 6.000000 9.500000 +v -2.500006 6.000004 10.500000 +v -4.500006 6.000002 10.500000 +v -5.500006 6.000008 9.500000 +v -5.500006 6.000008 8.500000 +v -4.500006 6.000002 7.500000 +v -2.500006 6.000004 7.500000 +v -1.500006 6.000000 8.500000 +v -1.060666 4.939341 9.500000 +v -1.767775 4.232235 10.500000 +v -3.181987 2.818022 10.500000 +v -3.889099 2.110918 9.500000 +v -3.889099 2.110918 8.500000 +v -3.181987 2.818022 7.500000 +v -1.767775 4.232235 7.500000 +v -1.060666 4.939341 8.500000 +v -0.000007 3.500000 10.500000 +v 1.767761 4.232231 10.500000 +v 2.499996 5.999998 10.500000 +v 1.767764 7.767765 10.500000 +v -0.000001 8.500000 10.500000 +v -1.767770 7.767769 10.500000 +v -2.500006 6.000004 10.500000 +v -1.767775 4.232235 10.500000 +v -0.000007 3.500000 11.000000 +v 1.767761 4.232231 11.000000 +v 2.499996 5.999998 11.000000 +v 1.767764 7.767765 11.000000 +v -0.000001 8.500000 11.000000 +v -1.767770 7.767769 11.000000 +v -2.500006 6.000004 11.000000 +v -1.767775 4.232235 11.000000 +v -0.000007 4.000000 4.500000 +v 1.414207 4.585787 4.500000 +v 1.999994 6.000000 4.500000 +v 1.414208 7.414213 4.500000 +v -0.000005 8.000000 4.500000 +v -1.414219 7.414213 4.500000 +v -2.000006 6.000000 4.500000 +v -1.414219 4.585787 4.500000 +v 1.414207 4.585787 5.000000 +v -0.000007 4.000000 5.000000 +v 1.999994 6.000000 5.000000 +v 1.414208 7.414213 5.000000 +v -0.000005 8.000000 5.000000 +v -1.414219 7.414213 5.000000 +v -2.000006 6.000000 5.000000 +v -1.414219 4.585787 5.000000 +v -0.000006 6.000000 5.000000 +v -0.000006 6.000000 11.000000 +v -0.000006 4.500000 5.000000 +vt 0.300000 0.476190 +vt 0.700000 0.380952 +vt 0.700000 0.476190 +vt 0.700000 0.000000 +vt 0.300000 0.095238 +vt 0.300000 -0.000000 +vt 0.000000 0.380952 +vt 0.100000 0.428571 +vt 0.000000 0.428571 +vt 1.000000 0.428571 +vt 0.900000 0.380952 +vt 1.000000 0.380952 +vt 0.000000 0.047619 +vt 0.100000 0.095238 +vt 0.000000 0.095238 +vt 1.000000 0.095238 +vt 0.900000 0.047619 +vt 1.000000 0.047619 +vt 0.100000 0.142857 +vt 0.100000 0.333333 +vt 0.100000 0.380952 +vt 0.200000 0.333333 +vt 0.200000 0.380952 +vt 0.300000 0.333333 +vt 0.200000 0.285714 +vt 0.200000 0.095238 +vt 0.100000 0.047619 +vt 0.300000 0.142857 +vt 0.200000 0.142857 +vt 0.200000 0.190476 +vt 0.100000 0.428571 +vt 0.300000 0.380952 +vt 0.800000 0.380952 +vt 0.900000 0.428571 +vt 0.900000 0.142857 +vt 0.900000 0.095238 +vt 0.800000 0.142857 +vt 0.800000 0.095238 +vt 0.700000 0.142857 +vt 0.900000 0.047619 +vt 0.700000 0.095238 +vt 0.800000 0.190476 +vt 0.800000 0.333333 +vt 0.800000 0.285714 +vt 0.900000 0.333333 +vt 0.700000 0.333333 +vt 0.800000 0.142857 +vt 0.800000 0.333333 +vt 0.200000 0.333333 +vt 0.200000 0.142857 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.428571 +vt 1.000000 0.428571 +vt 0.950000 0.785714 +vt 0.900000 0.714286 +vt 0.900000 0.714286 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.900000 0.714286 +vt 1.000000 0.428571 +vt 1.000000 0.714286 +vt 0.300000 0.833333 +vt 0.600000 0.928571 +vt 0.400000 0.928571 +vt 0.400000 0.547619 +vt 0.550000 0.476190 +vt 0.600000 0.547619 +vt 0.300000 0.714286 +vt 0.650000 0.642857 +vt 0.700000 0.714286 +vt 0.700000 0.761905 +vt 0.650000 0.833333 +vt 0.550000 1.000000 +vt 0.450000 1.000000 +vt 0.300000 0.642857 +vt 0.300000 0.761905 +vt 0.300000 0.642857 +vt 0.600000 0.547619 +vt 0.650000 0.642857 +vt 0.300000 0.714286 +vt 0.700000 0.761905 +vt 0.300000 0.761905 +vt 0.300000 0.833333 +vt 0.600000 0.928571 +vt 0.400000 0.928571 +vt 0.450000 0.476190 +vt 0.400000 0.547619 +vt 0.700000 0.714286 +vt 0.650000 0.833333 +vt 0.450000 1.000000 +vt 0.550000 1.000000 +vt 0.300000 0.833333 +vt 0.600000 0.928571 +vt 0.400000 0.928571 +vt 0.450000 0.476190 +vt 0.600000 0.547619 +vt 0.400000 0.547619 +vt 0.300000 0.642857 +vt 0.700000 0.714286 +vt 0.300000 0.714286 +vt 0.700000 0.761905 +vt 0.650000 0.833333 +vt 0.450000 1.000000 +vt 0.550000 1.000000 +vt 0.650000 0.642857 +vt 0.300000 0.761905 +vt 0.450000 0.476190 +vt 0.600000 0.547619 +vt 0.400000 0.547619 +vt 0.300000 0.642857 +vt 0.700000 0.714286 +vt 0.300000 0.714286 +vt 0.300000 0.833333 +vt 0.700000 0.761905 +vt 0.650000 0.833333 +vt 0.450000 1.000000 +vt 0.600000 0.928571 +vt 0.550000 1.000000 +vt 0.650000 0.642857 +vt 0.300000 0.761905 +vt 0.400000 0.928571 +vt 0.300000 0.642857 +vt 0.700000 0.714286 +vt 0.300000 0.714286 +vt 0.300000 0.833333 +vt 0.700000 0.761905 +vt 0.650000 0.833333 +vt 0.450000 1.000000 +vt 0.600000 0.928571 +vt 0.550000 1.000000 +vt 0.600000 0.547619 +vt 0.650000 0.642857 +vt 0.300000 0.761905 +vt 0.400000 0.928571 +vt 0.450000 0.476190 +vt 0.400000 0.547619 +vt 0.450000 1.000000 +vt 0.600000 0.928571 +vt 0.550000 1.000000 +vt 0.300000 0.642857 +vt 0.600000 0.547619 +vt 0.650000 0.642857 +vt 0.300000 0.714286 +vt 0.700000 0.761905 +vt 0.300000 0.761905 +vt 0.300000 0.833333 +vt 0.400000 0.928571 +vt 0.450000 0.476190 +vt 0.400000 0.547619 +vt 0.700000 0.714286 +vt 0.650000 0.833333 +vt 0.300000 0.642857 +vt 0.600000 0.547619 +vt 0.650000 0.642857 +vt 0.300000 0.714286 +vt 0.700000 0.761905 +vt 0.300000 0.761905 +vt 0.300000 0.833333 +vt 0.600000 0.928571 +vt 0.400000 0.928571 +vt 0.450000 0.476190 +vt 0.400000 0.547619 +vt 0.700000 0.714286 +vt 0.650000 0.833333 +vt 0.450000 1.000000 +vt 0.550000 1.000000 +vt 0.600000 0.928571 +vt 0.450000 1.000000 +vt 0.400000 0.928571 +vt 0.600000 0.547619 +vt 0.450000 0.476190 +vt 0.550000 0.476190 +vt 0.300000 0.642857 +vt 0.400000 0.547619 +vt 0.700000 0.714286 +vt 0.650000 0.642857 +vt 0.700000 0.761905 +vt 0.300000 0.714286 +vt 0.300000 0.833333 +vt 0.300000 0.761905 +vt 0.650000 0.833333 +vt 0.200000 0.547619 +vt 0.000000 0.571429 +vt 0.000000 0.547619 +vt 0.200000 0.547619 +vt 0.000000 0.571429 +vt 0.000000 0.547619 +vt 0.200000 0.547619 +vt 0.000000 0.571429 +vt 0.000000 0.547619 +vt 0.200000 0.571429 +vt -0.000000 0.547619 +vt 0.200000 0.547619 +vt 0.200000 0.571429 +vt 0.000000 0.547619 +vt 0.200000 0.547619 +vt 0.200000 0.547619 +vt 0.000000 0.571429 +vt 0.000000 0.547619 +vt 0.200000 0.547619 +vt -0.000000 0.571429 +vt -0.000000 0.547619 +vt 0.200000 0.571429 +vt -0.000000 0.547619 +vt 0.200000 0.547619 +vt 0.000000 0.452381 +vt 0.200000 0.452381 +vt 0.100000 0.547619 +vt 0.200000 0.428571 +vt 0.000000 0.452381 +vt 0.000000 0.428571 +vt 0.200000 0.428571 +vt 0.000000 0.452381 +vt 0.000000 0.428571 +vt 0.200000 0.428571 +vt 0.000000 0.452381 +vt 0.000000 0.428571 +vt 0.200000 0.428571 +vt -0.000000 0.452381 +vt -0.000000 0.428571 +vt 0.200000 0.428571 +vt 0.000000 0.428571 +vt 0.200000 0.428571 +vt -0.000000 0.452381 +vt -0.000000 0.428571 +vt 0.200000 0.428571 +vt 0.000000 0.452381 +vt 0.000000 0.428571 +vt 0.200000 0.428571 +vt 0.000000 0.452381 +vt 0.000000 0.428571 +vt 0.900000 0.714286 +vt 0.200000 0.452381 +vt 0.200000 0.452381 +vt 0.200000 0.452381 +vt 0.200000 0.452381 +vt 0.900000 0.714286 +vt 0.200000 0.452381 +vt 0.200000 0.452381 +vt 0.200000 0.452381 +vt 0.900000 0.714286 +vt 0.900000 0.714286 +vt 0.900000 0.714286 +vt 0.900000 0.428571 +vt 0.100000 0.047619 +vt 0.100000 0.095238 +vt 0.100000 0.380952 +vt 0.900000 0.380952 +vt 0.900000 0.095238 +vt 0.900000 0.428571 +vt 0.900000 0.428571 +vt 0.450000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 0.476190 +vt 0.550000 1.000000 +vt 0.200000 0.571429 +vt 0.200000 0.571429 +vt 0.200000 0.571429 +vt -0.000000 0.571429 +vt 0.000000 0.571429 +vt 0.200000 0.571429 +vt 0.200000 0.571429 +vt -0.000000 0.571429 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.2811 0.6786 -0.6786 +vn 0.2811 -0.6786 -0.6786 +vn 0.2811 -0.6786 0.6786 +vn -0.2811 0.6786 0.6786 +vn 0.0000 0.0000 -1.0000 +vn -0.6786 0.2811 -0.6786 +vn 0.6786 -0.2811 -0.6786 +vn 0.6786 -0.2811 0.6786 +vn -0.6786 0.2811 0.6786 +vn -0.6786 -0.2811 -0.6786 +vn 0.6786 0.2811 -0.6786 +vn 0.6786 0.2811 0.6786 +vn -0.6786 -0.2811 0.6786 +vn -0.2811 -0.6786 -0.6786 +vn 0.2811 0.6786 -0.6786 +vn 0.2811 0.6786 0.6786 +vn -0.2811 -0.6786 0.6786 +s off +f 1/1/1 5/2/1 2/3/1 +f 4/4/2 8/5/2 3/6/2 +f 15/7/3 17/8/3 9/9/3 +f 10/10/3 22/11/3 13/12/3 +f 11/13/4 24/14/4 16/15/4 +f 14/16/4 19/17/4 12/18/4 +f 32/19/5 31/20/5 15/7/5 +f 23/21/6 33/22/6 17/23/6 +f 25/24/5 17/23/5 33/22/5 +f 33/22/3 31/20/3 25/25/3 +f 18/26/5 3/27/5 8/5/5 +f 18/26/5 26/28/5 34/29/5 +f 34/29/6 24/14/6 18/26/6 +f 32/19/4 34/29/4 26/30/4 +f 1/31/5 17/23/5 6/32/5 +f 20/33/7 2/34/7 5/2/7 +f 30/35/7 14/16/7 13/12/7 +f 21/36/6 36/37/6 19/38/6 +f 28/39/7 19/38/7 36/37/7 +f 4/40/7 19/38/7 7/41/7 +f 36/37/4 30/35/4 28/42/4 +f 35/43/6 22/11/6 20/33/6 +f 35/43/3 27/44/3 29/45/3 +f 20/33/7 27/46/7 35/43/7 +f 27/46/8 30/47/8 29/48/8 +f 26/28/9 31/49/9 32/50/9 +f 28/39/6 27/46/6 26/28/6 +f 51/51/10 150/52/10 50/53/10 +f 39/54/11 40/55/11 38/56/11 +f 41/57/12 42/58/12 40/59/12 +f 43/60/13 44/61/13 42/62/13 +f 45/63/14 46/64/14 44/65/14 +f 47/66/15 48/67/15 46/68/15 +f 39/54/6 149/69/6 41/70/6 +f 39/71/16 150/72/16 37/73/16 +f 51/74/17 48/75/17 49/76/17 +f 54/77/6 61/78/6 53/79/6 +f 58/80/18 67/81/18 66/82/18 +f 56/83/19 65/84/19 64/85/19 +f 54/77/20 63/86/20 62/87/20 +f 53/79/21 60/88/21 52/89/21 +f 57/90/22 66/82/22 65/84/22 +f 56/83/10 63/86/10 55/91/10 +f 65/92/22 74/93/22 73/94/22 +f 64/95/17 71/96/17 63/97/17 +f 62/98/6 69/99/6 61/100/6 +f 67/101/23 74/93/23 66/102/23 +f 65/92/24 72/103/24 64/95/24 +f 62/98/25 71/96/25 70/104/25 +f 60/105/26 69/99/26 68/106/26 +f 70/107/6 77/108/6 69/109/6 +f 75/110/27 82/111/27 74/112/27 +f 73/113/28 80/114/28 72/115/28 +f 70/107/29 79/116/29 78/117/29 +f 68/118/30 77/108/30 76/119/30 +f 73/113/22 82/111/22 81/120/22 +f 72/115/15 79/116/15 71/121/15 +f 83/122/31 90/123/31 82/124/31 +f 81/125/32 88/126/32 80/127/32 +f 78/128/33 87/129/33 86/130/33 +f 76/131/34 85/132/34 84/133/34 +f 81/125/22 90/123/22 89/134/22 +f 80/127/14 87/129/14 79/135/14 +f 78/128/6 85/132/6 77/136/6 +f 89/137/18 96/138/18 88/139/18 +f 86/140/21 95/141/21 94/142/21 +f 84/143/20 93/144/20 92/145/20 +f 89/137/22 98/146/22 97/147/22 +f 88/139/13 95/141/13 87/148/13 +f 86/140/6 93/144/6 85/149/6 +f 91/150/19 98/146/19 90/151/19 +f 92/152/25 101/153/25 100/154/25 +f 97/155/22 106/156/22 105/157/22 +f 96/158/12 103/159/12 95/160/12 +f 94/161/6 101/153/6 93/162/6 +f 99/163/24 106/156/24 98/164/24 +f 97/155/23 104/165/23 96/158/23 +f 94/161/26 103/159/26 102/166/26 +f 105/167/22 114/168/22 113/169/22 +f 104/170/11 111/171/11 103/172/11 +f 102/173/6 109/174/6 101/175/6 +f 107/176/28 114/168/28 106/177/28 +f 105/167/27 112/178/27 104/170/27 +f 102/173/30 111/171/30 110/179/30 +f 100/180/29 109/174/29 108/181/29 +f 53/182/33 108/183/33 109/184/33 +f 58/185/32 115/186/32 59/187/32 +f 58/185/22 113/188/22 114/189/22 +f 56/190/31 113/188/31 57/191/31 +f 55/192/16 112/193/16 56/190/16 +f 55/192/34 110/194/34 111/195/34 +f 53/182/6 110/194/6 54/196/6 +f 119/197/15 126/198/15 118/199/15 +f 117/200/10 124/201/10 116/202/10 +f 116/203/16 131/204/16 123/205/16 +f 130/206/12 121/207/12 122/208/12 +f 128/209/14 119/210/14 120/211/14 +f 118/212/17 125/213/17 117/214/17 +f 123/215/11 130/216/11 122/217/11 +f 129/218/13 120/219/13 121/220/13 +f 140/221/6 142/222/6 148/223/6 +f 133/224/10 141/225/10 132/226/10 +f 132/227/16 147/228/16 139/229/16 +f 138/230/12 145/231/12 137/232/12 +f 136/233/14 143/234/14 135/235/14 +f 134/236/17 140/221/17 133/237/17 +f 139/238/11 146/239/11 138/240/11 +f 137/241/13 144/242/13 136/243/13 +f 135/244/15 142/245/15 134/246/15 +f 41/57/6 149/69/6 43/247/6 +f 141/248/6 148/223/6 147/228/6 +f 146/249/6 148/223/6 145/231/6 +f 148/223/6 142/245/6 143/250/6 +f 145/251/6 148/223/6 144/242/6 +f 45/63/6 149/69/6 47/252/6 +f 148/223/6 141/225/6 140/253/6 +f 143/234/6 144/254/6 148/223/6 +f 147/255/6 148/223/6 146/239/6 +f 49/76/6 149/69/6 51/74/6 +f 51/51/6 149/69/6 37/256/6 +f 43/60/6 149/69/6 45/257/6 +f 149/69/6 39/71/6 37/73/6 +f 47/66/6 149/69/6 49/258/6 +f 1/1/1 6/32/1 5/2/1 +f 4/4/2 7/41/2 8/5/2 +f 15/7/3 23/21/3 17/8/3 +f 10/10/3 20/259/3 22/11/3 +f 11/13/4 18/260/4 24/14/4 +f 14/16/4 21/36/4 19/17/4 +f 31/20/5 23/21/5 15/7/5 +f 15/7/5 16/15/5 32/19/5 +f 16/15/5 24/14/5 32/19/5 +f 23/21/6 31/20/6 33/22/6 +f 25/24/5 6/32/5 17/23/5 +f 18/26/5 11/261/5 3/27/5 +f 18/26/5 8/5/5 26/28/5 +f 34/29/6 32/19/6 24/14/6 +f 1/31/5 9/262/5 17/23/5 +f 20/33/7 10/263/7 2/34/7 +f 13/12/7 22/11/7 29/45/7 +f 30/35/7 21/36/7 14/16/7 +f 13/12/7 29/45/7 30/35/7 +f 21/36/6 30/35/6 36/37/6 +f 28/39/7 7/41/7 19/38/7 +f 4/40/7 12/264/7 19/38/7 +f 35/43/6 29/45/6 22/11/6 +f 20/33/7 5/2/7 27/46/7 +f 27/46/8 28/39/8 30/47/8 +f 26/28/9 25/24/9 31/49/9 +f 5/2/6 6/32/6 25/24/6 +f 26/28/6 8/5/6 7/41/6 +f 5/2/6 25/24/6 27/46/6 +f 25/24/6 26/28/6 27/46/6 +f 7/41/6 28/39/6 26/28/6 +f 51/51/10 37/256/10 150/52/10 +f 39/54/11 41/70/11 40/55/11 +f 41/57/12 43/247/12 42/58/12 +f 43/60/13 45/257/13 44/61/13 +f 45/63/14 47/252/14 46/64/14 +f 47/66/15 49/258/15 48/67/15 +f 39/71/16 38/265/16 150/72/16 +f 51/74/17 50/266/17 48/75/17 +f 54/77/6 62/87/6 61/78/6 +f 58/80/18 59/267/18 67/81/18 +f 56/83/19 57/90/19 65/84/19 +f 54/77/20 55/91/20 63/86/20 +f 53/79/21 61/78/21 60/88/21 +f 57/90/22 58/80/22 66/82/22 +f 56/83/10 64/85/10 63/86/10 +f 65/92/22 66/102/22 74/93/22 +f 64/95/17 72/103/17 71/96/17 +f 62/98/6 70/104/6 69/99/6 +f 67/101/23 75/268/23 74/93/23 +f 65/92/24 73/94/24 72/103/24 +f 62/98/25 63/97/25 71/96/25 +f 60/105/26 61/100/26 69/99/26 +f 70/107/6 78/117/6 77/108/6 +f 75/110/27 83/269/27 82/111/27 +f 73/113/28 81/120/28 80/114/28 +f 70/107/29 71/121/29 79/116/29 +f 68/118/30 69/109/30 77/108/30 +f 73/113/22 74/112/22 82/111/22 +f 72/115/15 80/114/15 79/116/15 +f 83/122/31 91/270/31 90/123/31 +f 81/125/32 89/134/32 88/126/32 +f 78/128/33 79/135/33 87/129/33 +f 76/131/34 77/136/34 85/132/34 +f 81/125/22 82/124/22 90/123/22 +f 80/127/14 88/126/14 87/129/14 +f 78/128/6 86/130/6 85/132/6 +f 89/137/18 97/147/18 96/138/18 +f 86/140/21 87/148/21 95/141/21 +f 84/143/20 85/149/20 93/144/20 +f 89/137/22 90/151/22 98/146/22 +f 88/139/13 96/138/13 95/141/13 +f 86/140/6 94/142/6 93/144/6 +f 91/150/19 99/271/19 98/146/19 +f 92/152/25 93/162/25 101/153/25 +f 97/155/22 98/164/22 106/156/22 +f 96/158/12 104/165/12 103/159/12 +f 94/161/6 102/166/6 101/153/6 +f 99/163/24 107/272/24 106/156/24 +f 97/155/23 105/157/23 104/165/23 +f 94/161/26 95/160/26 103/159/26 +f 105/167/22 106/177/22 114/168/22 +f 104/170/11 112/178/11 111/171/11 +f 102/173/6 110/179/6 109/174/6 +f 107/176/28 115/273/28 114/168/28 +f 105/167/27 113/169/27 112/178/27 +f 102/173/30 103/172/30 111/171/30 +f 100/180/29 101/175/29 109/174/29 +f 53/182/33 52/274/33 108/183/33 +f 58/185/32 114/189/32 115/186/32 +f 58/185/22 57/191/22 113/188/22 +f 56/190/31 112/193/31 113/188/31 +f 55/192/16 111/195/16 112/193/16 +f 55/192/34 54/196/34 110/194/34 +f 53/182/6 109/184/6 110/194/6 +f 119/197/15 127/275/15 126/198/15 +f 117/200/10 125/276/10 124/201/10 +f 116/203/16 124/277/16 131/204/16 +f 130/206/12 129/278/12 121/207/12 +f 128/209/14 127/279/14 119/210/14 +f 118/212/17 126/280/17 125/213/17 +f 123/215/11 131/281/11 130/216/11 +f 129/218/13 128/282/13 120/219/13 +f 133/224/10 140/253/10 141/225/10 +f 132/227/16 141/248/16 147/228/16 +f 138/230/12 146/249/12 145/231/12 +f 136/233/14 144/254/14 143/234/14 +f 134/236/17 142/222/17 140/221/17 +f 139/238/11 147/255/11 146/239/11 +f 137/241/13 145/251/13 144/242/13 +f 135/244/15 143/250/15 142/245/15 diff --git a/src/main/java/assets/hbm/textures/armor/mod_tesla.png b/src/main/java/assets/hbm/textures/armor/mod_tesla.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1fef7b0ccbe2134cf3d1505938356c48707c06 GIT binary patch literal 636 zcmV-?0)zdDP)yN=U96g~6Ui8Fy>h2#>A_=2=hMM6rQ4?x=O5Q2~JKM)}b zgv=l04@i}QVwF#D?J6tK;@FNa1)6MPd&Y5K5vTD(_Z}bL$I&o!Ac`WYJu_dt>>@PA zbcGy&_lo{g!mn?i)0Mixvzt%23f6e~?IZFpZ^)P9B`kM@pV=09Nx0qIf^i8h{8e%i z-hF=URnnVKDFx0shzOtxN-30Oi9FBGBV-^9l!O!o93GQWaDilH@FG_5;`Tokd zK$dNhWmzLWNfLM!R=Wa^M*&7U0LKo&-~xhGxO{SnM|#j-Vc({3&i#aan<9kp6Z-J- z!>ZAhPQt#MVhNp1k+0q}&Io!KKwSt7^$>ysQnaTCAs~c+^f_`Lx3LNt08Azm0)XXm z*{F@(0E_GE>(;5B&*uc3*%Y5bY1LV!b(MAlPA1%JHmw2U@tDFe#A>xVdOw{`DNR$X z*XyGXcMf)6Nco#e&Soqx?v1CQp2Olero%Zr z9PCr(@NlpnWDcdz?|i%5h9pVucllhmv3d5_8*XEb(;93W4h^>MI?l~Fm9UP#-jrV} W0VDFj%2x>h0000r52qdY!{*$%6ws$!!r;%nf^X9!b6MVTVzj0&5cW+W3G{#!3 zmic_{>!YsEx0_D-nU#Ftw?WOP8w;Ks_dIBE{FX2#n$3vgSZ&Pr1EwbzR#$4anxRgo zXJO36h|_N34JH#tBX-tH4!d(<6!Gkghj&(O*4b*X8YB+?&LjzYr~DGLvmU5cX$2gP zNYl9>Agt9`3wiva=T(=jCiN-rG}*u8?p1ELXjgJ+%Jnkm7j(Ns5#jSQE;1Tfrd{RR z*F~X|akW$+{x#s~KO_m`G4N}jEF)Y>xe~B_jXP@$hXuz;O1n}tTwc=5n9VpyiY;%} zIhqi)E97}GZ8&7H!qK=8Ydj_lS&KO7(`|6G!L4S|^R`6rSwo)Vy?~c_ftt;kXPi&D zSK)9>dy%s#_m>L_S;l-$^vP~hx6{)r)qGqJ)u%&0b@-^ok1si%b9;q*Z4Q!}`~u*}sKN)kTsSuLrp=wpYyNv2?=O8P_X3 zKcieG>h*G0LY|&78na#{8qkWU1T5DBkN${F(t^&r0j)Z3Q>rDR$%N%8CnGkN3%|={ zwoxka;v%=_lL!e{0Bn} VF9boZ6K((i002ovPDHLkV1jbhSd0Jw literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/back_tesla.png b/src/main/java/assets/hbm/textures/items/back_tesla.png new file mode 100644 index 0000000000000000000000000000000000000000..94567ad9c4305d18657ba151528f89e1b35f85d5 GIT binary patch literal 372 zcmV-)0gL{LP)m|a0M%+W zlRMWOUZ1PSr*{tbcd%Y+>}_xGR{P}WV3!B$mE$XGW~VqQJ}yqw&8e=MJr8%3(CE6f zoB{nH;@k1D2V**3nDXWXT24U63-KbwS6kwY68s1nT@M+=)Z2YRRifnt$RJKHD5ah+ z?+O6-Tbn8oE68C?y=}9)zJ~3O==o!sw#(V=b8c>#LF)SNxmhUwHCzPC7sw5yTrSUe zH%)V~k2JlgX&L}w80HGiSg2GgYO<(l8bSz!5b1lGlPMsjOlu)TW071|O!nLY z4Sk!zgHO1wgnzYrR|C+qC0l!X^{L#t02~z^R%dz2Kp)c$y3 z?S{S`z?V%g0tYLkuU@q3#gvS8e>SSO0xOjr@=h^UJA5J+OUH8pkhd2B7(Cejb#iRL w*?5oiCp0oWT>u>?#|E@Q?m}gJ+IRF3v delta 419 zcmV;U0bKsP1I+`FG=GFiL_t(Ijg67LOG053#(&rRf=nV(2_k98u%M-X!ywvQik9|t zYKfL;Xea`QAcX#dS|i*W4b&nc`Y=c+?gf2s+|wZU?V4BXjPHAX&w0*s;2-t27?-!j zxcL1Ue}MprWC(zdcbkUkFneQaE-(mABtwjk1`#EQ65=Dlo_{`H0T-@4w5h+SuD?_) zK=blUuhS#o!lHysIzlEL=@J<_aH!r?IG>6N{K~)!d&>wLh!XC$Q*7Ob*q^p>HXkWB z?H>n&Y>N`C9i`z!{^=)!>Re2`jhS?Wa?|b-v33-8yGX&xk;p&MFdgdV7XZQE)?NFV zbVN_K+eO|3yMJU$9T?z62^+6%!vJty%uIwisaUMf4+F5WItf6*%#ke}>B%mvL-Y&J zJK5QM)bHh{tzo@F^7_-LUu9(?+-X#;B5Soh3RZ=&Re1xvCd`Pu=-8zTEVSb^NU8yAQc?~7&zJ20l>vnR2-f?VGe=;z5!a-@6yyr$n^jK diff --git a/src/main/java/assets/hbm/textures/items/insert_du.png b/src/main/java/assets/hbm/textures/items/insert_du.png new file mode 100644 index 0000000000000000000000000000000000000000..863ee9962917fa3766bc4ae5275e8418b77c6f3a GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf$&ms$cOj?CUcz;>c0V!8kT literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/insert_era.png b/src/main/java/assets/hbm/textures/items/insert_era.png new file mode 100644 index 0000000000000000000000000000000000000000..53340d0d2f0d5fbd3d708f5c3e8f4fe1d3ab5f24 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfc6R^x?Rlov;Pmd=Euiqr{yZdhn zbNwj>2EnC)LdMc>-%el_3}pPuuEg|yuOs-yD_waE`Yk%jKRA+0XLW&*XGyq;CH%VVRo5zl!Ob)J=x8 z-W&#{pd5)0Wzo%PE8UqG&h30Su~ne$Yj72#y-ePwc~j3;1AV~Y>FVdQ&MBb@00bvo A&j0`b literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/insert_polonium.png b/src/main/java/assets/hbm/textures/items/insert_polonium.png new file mode 100644 index 0000000000000000000000000000000000000000..41a4b53ce77b4430dcd87d5184cc21e321ed37f3 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfFwB(&)+tG<1U5Oo8|_3xydc>H8{NCQ`njxgN@xNAj-qwM literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/insert_yharonite.png b/src/main/java/assets/hbm/textures/items/insert_yharonite.png new file mode 100644 index 0000000000000000000000000000000000000000..22f02ecccaba40f3888afb5d065805abbe750354 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfskb^89#;h_JE?;L*_?GJ8L*l~5`WRLbHXLZ$JS9NQT zHOm8;YEP@~+&#T|I`;>42?iUz<$1a<1YB}XZWrx7pFK0V%5j>R#r^yq0S1S_Z9z=Z zQk^^P?tkWDnY2o+`ur8nk5}xK85r&x229b-@phi^xzVGo_l?1spA+6#yXhakl(O&> zmrbzyjN+u@`{eS(Klhx~`rsq$8G6{b^u{!^2t`k=hd{fwr>i)4NJKxC>oBT4t`Ib( zn&D5HlgY*K%%s3=Pv$N+-rzN1Dep{!P@Os<1`DZouhhFMx6NALqCd|pZr-t$?Hs@W OVDNPHb6Mw<&;$VSe|xI{ literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/journal_pip.png b/src/main/java/assets/hbm/textures/items/journal_pip.png new file mode 100644 index 0000000000000000000000000000000000000000..30f1b322d38fe7f99b2d702470ceab7ae9f49979 GIT binary patch literal 361 zcmV-v0ha!WP)>1S@B8w-cX@CmdiBI42y%dB9QO|QI+k%< z@cQM4vG3;q+88E5kZWTsvJ|2c_pORQXk*xF-R&PZX-bAOhj8W;@$2L8e*yqk_nU%v z{jgy%AF`O+LX{zoeLt5%blP{NBw4KrUaNyP)P-Azcr%>>pp?S%Jd{#=B#BkmD)16T zjd@qfN?d87>)YzYMu7vQ5V%rS&hy=QqlndlHiq};5`cWa2Vl3`aXJ|A7M^kY^w}){ zuwHM;vJ8MUO_5Ua^YxA6I99E-Oc$e3u|Q?Z{HuMSR!Bm0000 safe && size < high) { switch(size) { - case 1: new ExplosionNT(world, null, posX, posY, posZ, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); + case 1: new ExplosionNT(world, null, posX, posY, posZ, 10F).addAllAttrib(ExplosionNT.nukeAttribs).overrideResolution(32).explode(); ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, 30); break; - case 2: new ExplosionNT(world, null, posX, posY, posZ, 15F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); + case 2: new ExplosionNT(world, null, posX, posY, posZ, 15F).addAllAttrib(ExplosionNT.nukeAttribs).overrideResolution(64).explode(); ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, 45); break; - case 3: new ExplosionNT(world, null, posX, posY, posZ, 15F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); - new ExplosionNT(world, null, posX + 7, posY, posZ, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); + case 3: new ExplosionNT(world, null, posX, posY, posZ, 20F).addAllAttrib(ExplosionNT.nukeAttribs).overrideResolution(64).explode(); + /*new ExplosionNT(world, null, posX + 7, posY, posZ, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); new ExplosionNT(world, null, posX - 7, posY, posZ, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); new ExplosionNT(world, null, posX, posY, posZ + 7, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); - new ExplosionNT(world, null, posX, posY, posZ - 7, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode(); + new ExplosionNT(world, null, posX, posY, posZ - 7, 10F).addAllAttrib(ExplosionNT.nukeAttribs).explode();*/ ExplosionNukeGeneric.dealDamage(world, posX, posY, posZ, 55); break; } diff --git a/src/main/java/com/hbm/handler/ArmorModHandler.java b/src/main/java/com/hbm/handler/ArmorModHandler.java index 21321291c..98a5a0b35 100644 --- a/src/main/java/com/hbm/handler/ArmorModHandler.java +++ b/src/main/java/com/hbm/handler/ArmorModHandler.java @@ -4,7 +4,6 @@ import java.util.UUID; import com.hbm.items.armor.ItemArmorMod; -import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -79,7 +78,10 @@ public class ArmorModHandler { ItemArmorMod aMod = (ItemArmorMod)mod.getItem(); int slot = aMod.type; - mods.setString(MOD_SLOT_KEY + slot, Item.itemRegistry.getNameForObject(mod.getItem())); + NBTTagCompound cmp = new NBTTagCompound(); + mod.writeToNBT(cmp); + + mods.setTag(MOD_SLOT_KEY + slot, cmp); } /** @@ -147,11 +149,12 @@ public class ArmorModHandler { for(int i = 0; i < 8; i++) { - String mod = mods.getString(MOD_SLOT_KEY + i); - Item item = (Item)Item.itemRegistry.getObject(mod); + NBTTagCompound cmp = mods.getCompoundTag(MOD_SLOT_KEY + i); - if(item != null) - slots[i] = new ItemStack(item); + ItemStack stack = ItemStack.loadItemStackFromNBT(cmp); + + if(stack != null) + slots[i] = stack; } return slots; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index e66fae718..d0261dfe2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1794,6 +1794,7 @@ public class ModItems { public static Item crystal_charred; public static Item attachment_mask; + public static Item back_tesla; public static Item servo_set; public static Item servo_set_desh; public static Item pads_rubber; @@ -1809,6 +1810,10 @@ public class ModItems { public static Item insert_esapi; public static Item insert_xsapi; public static Item insert_steel; + public static Item insert_du; + public static Item insert_polonium; + public static Item insert_era; + public static Item insert_yharonite; public static Item armor_polish; public static Item bandaid; public static Item serum; @@ -1823,6 +1828,7 @@ public class ModItems { public static Item heart_piece; public static Item heart_container; public static Item heart_booster; + public static Item wd40; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -2709,6 +2715,7 @@ public class ModItems { cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); attachment_mask = new ItemModGasmask().setUnlocalizedName("attachment_mask").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":attachment_mask"); + back_tesla = new ItemModTesla().setUnlocalizedName("back_tesla").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":back_tesla"); servo_set = new ItemModServos().setUnlocalizedName("servo_set").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":servo_set"); servo_set_desh = new ItemModServos().setUnlocalizedName("servo_set_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":servo_set_desh"); pads_rubber = new ItemModPads(0.5F).setUnlocalizedName("pads_rubber").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pads_rubber"); @@ -2719,11 +2726,15 @@ public class ModItems { cladding_lead = new ItemModCladding(0.2F).setUnlocalizedName("cladding_lead").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_lead"); cladding_desh = new ItemModCladding(0.4F).setUnlocalizedName("cladding_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_desh"); cladding_obsidian = new ItemModObsidian().setUnlocalizedName("cladding_obsidian").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_obsidian"); - insert_kevlar = new ItemModInsert(1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar"); - insert_sapi = new ItemModInsert(1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi"); - insert_esapi = new ItemModInsert(0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi"); - insert_xsapi = new ItemModInsert(0.9F, 0.75F, 1F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi"); - insert_steel = new ItemModInsert(1F, 0.95F, 0.75F, 0.95F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel"); + insert_kevlar = new ItemModInsert(1500, 1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar"); + insert_sapi = new ItemModInsert(1750, 1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi"); + insert_esapi = new ItemModInsert(2000, 0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi"); + insert_xsapi = new ItemModInsert(2500, 0.9F, 0.75F, 1F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi"); + insert_steel = new ItemModInsert(1000, 1F, 0.95F, 0.75F, 0.95F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel"); + insert_du = new ItemModInsert(1500, 0.9F, 0.85F, 0.5F, 0.9F).setUnlocalizedName("insert_du").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_du"); + insert_polonium = new ItemModInsert(500, 0.9F, 1F, 0.95F, 0.9F).setUnlocalizedName("insert_polonium").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_polonium"); + insert_era = new ItemModInsert(25, 0.5F, 1F, 0.25F, 1F).setUnlocalizedName("insert_era").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_era"); + insert_yharonite = new ItemModInsert(9999, 0.01F, 1F, 1F, 1F).setUnlocalizedName("insert_yharonite").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_yharonite"); armor_polish = new ItemModPolish().setUnlocalizedName("armor_polish").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":armor_polish"); bandaid = new ItemModBandaid().setUnlocalizedName("bandaid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bandaid"); serum = new ItemModSerum().setUnlocalizedName("serum").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":serum"); @@ -2738,6 +2749,7 @@ public class ModItems { heart_piece = new ItemModHealth(5F).setUnlocalizedName("heart_piece").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_piece"); heart_container = new ItemModHealth(20F).setUnlocalizedName("heart_container").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_container"); heart_booster = new ItemModHealth(40F).setUnlocalizedName("heart_booster").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_booster"); + wd40 = new ItemModWD40().setUnlocalizedName("wd40").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":wd40"); can_empty = new Item().setUnlocalizedName("can_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_empty"); can_smart = new ItemEnergy().setUnlocalizedName("can_smart").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_smart"); @@ -4196,10 +4208,10 @@ public class ModItems { australium_iii = new ArmorAustralium(MainRegistry.aMatAus3, 9, 1).setUnlocalizedName("australium_iii").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":australium_iii"); - jetpack_boost = new JetpackBooster(MainRegistry.aMatSteel, 9, 1, FluidType.BALEFIRE, 32000).setUnlocalizedName("jetpack_boost").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_boost"); - jetpack_break = new JetpackBreak(MainRegistry.aMatSteel, 9, 1, FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_break").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_break"); - jetpack_fly = new JetpackRegular(MainRegistry.aMatSteel, 9, 1, FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_fly").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_fly"); - jetpack_vector = new JetpackVectorized(MainRegistry.aMatSteel, 9, 1, FluidType.KEROSENE, 16000).setUnlocalizedName("jetpack_vector").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_vector"); + jetpack_boost = new JetpackBooster(FluidType.BALEFIRE, 32000).setUnlocalizedName("jetpack_boost").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_boost"); + jetpack_break = new JetpackBreak(FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_break").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_break"); + jetpack_fly = new JetpackRegular(FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_fly").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_fly"); + jetpack_vector = new JetpackVectorized(FluidType.KEROSENE, 16000).setUnlocalizedName("jetpack_vector").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_vector"); cape_test = new ArmorModel(MainRegistry.enumArmorMaterialEmerald, 9, 1).setUnlocalizedName("cape_test").setCreativeTab(null).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_test"); cape_radiation = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_radiation").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_radiation"); @@ -6146,6 +6158,7 @@ public class ModItems { //Armor mods GameRegistry.registerItem(attachment_mask, attachment_mask.getUnlocalizedName()); + GameRegistry.registerItem(back_tesla, back_tesla.getUnlocalizedName()); GameRegistry.registerItem(servo_set, servo_set.getUnlocalizedName()); GameRegistry.registerItem(servo_set_desh, servo_set_desh.getUnlocalizedName()); GameRegistry.registerItem(pads_rubber, pads_rubber.getUnlocalizedName()); @@ -6161,6 +6174,10 @@ public class ModItems { GameRegistry.registerItem(insert_esapi, insert_esapi.getUnlocalizedName()); GameRegistry.registerItem(insert_xsapi, insert_xsapi.getUnlocalizedName()); GameRegistry.registerItem(insert_steel, insert_steel.getUnlocalizedName()); + GameRegistry.registerItem(insert_du, insert_du.getUnlocalizedName()); + GameRegistry.registerItem(insert_polonium, insert_polonium.getUnlocalizedName()); + GameRegistry.registerItem(insert_era, insert_era.getUnlocalizedName()); + GameRegistry.registerItem(insert_yharonite, insert_yharonite.getUnlocalizedName()); GameRegistry.registerItem(armor_polish, armor_polish.getUnlocalizedName()); GameRegistry.registerItem(bandaid, bandaid.getUnlocalizedName()); GameRegistry.registerItem(serum, serum.getUnlocalizedName()); @@ -6175,6 +6192,7 @@ public class ModItems { GameRegistry.registerItem(heart_piece, heart_piece.getUnlocalizedName()); GameRegistry.registerItem(heart_container, heart_container.getUnlocalizedName()); GameRegistry.registerItem(heart_booster, heart_booster.getUnlocalizedName()); + GameRegistry.registerItem(wd40, wd40.getUnlocalizedName()); //The Gadget GameRegistry.registerItem(gadget_explosive, gadget_explosive.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModInsert.java b/src/main/java/com/hbm/items/armor/ItemModInsert.java index bae99a972..9b4329594 100644 --- a/src/main/java/com/hbm/items/armor/ItemModInsert.java +++ b/src/main/java/com/hbm/items/armor/ItemModInsert.java @@ -4,8 +4,12 @@ import java.util.ArrayList; import java.util.List; import com.google.common.collect.Multimap; +import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.ArmorModHandler; +import com.hbm.items.ModItems; +import com.hbm.util.ContaminationUtil; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -21,16 +25,17 @@ public class ItemModInsert extends ItemArmorMod { float explosionMod; float speed; - public ItemModInsert(float damageMod, float projectileMod, float explosionMod, float speed) { + public ItemModInsert(int durability, float damageMod, float projectileMod, float explosionMod, float speed) { super(ArmorModHandler.kevlar, false, true, false, false); this.damageMod = damageMod; this.projectileMod = projectileMod; this.explosionMod = explosionMod; this.speed = speed; + this.setMaxDamage(durability); } @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(damageMod != 1F) list.add(EnumChatFormatting.RED + "-" + Math.round((1F - damageMod) * 100) + "% damage"); @@ -41,8 +46,13 @@ public class ItemModInsert extends ItemArmorMod { if(speed != 1F) list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + "% speed"); + if(this == ModItems.insert_polonium) + list.add(EnumChatFormatting.DARK_RED + "+100 RAD/s"); + + list.add((stack.getMaxDamage() - stack.getItemDamage()) + "/" + stack.getMaxDamage() + "HP"); + list.add(""); - super.addInformation(itemstack, player, list, bool); + super.addInformation(stack, player, list, bool); } @Override @@ -58,10 +68,13 @@ public class ItemModInsert extends ItemArmorMod { desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp"); if(explosionMod != 1F) desc.add("-" + Math.round((1F - speed) * 100) + "% speed"); + + if(this == ModItems.insert_polonium) + desc.add("+100 RAD/s"); String join = String.join(" / ", desc); - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + ")"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (" + join + " / " + (stack.getMaxDamage() - stack.getItemDamage()) + "HP)"); } @Override @@ -74,6 +87,32 @@ public class ItemModInsert extends ItemArmorMod { if(event.source.isExplosion()) event.ammount *= explosionMod; + + ItemStack insert = ArmorModHandler.pryMods(armor)[ArmorModHandler.kevlar]; + + if(insert == null) + return; + + insert.setItemDamage(insert.getItemDamage() + 1); + + if(!event.entity.worldObj.isRemote && this == ModItems.insert_era) { + event.entity.worldObj.newExplosion(event.entity, event.entity.posX, event.entity.posY - event.entity.yOffset + event.entity.height * 0.5, event.entity.posZ, 0.05F, false, false); + } + + if(insert.getItemDamage() > insert.getMaxDamage()) { + ArmorModHandler.removeMod(armor, ArmorModHandler.kevlar); + } else { + ArmorModHandler.applyMod(armor, insert); + } + } + + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + + if(!entity.worldObj.isRemote && this == ModItems.insert_polonium) { + //HbmLivingProps.incrementRadiation(entity, 5); + ContaminationUtil.applyRadDirect(entity, 20); + } } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModServos.java b/src/main/java/com/hbm/items/armor/ItemModServos.java index d77d72d9b..82a9f4509 100644 --- a/src/main/java/com/hbm/items/armor/ItemModServos.java +++ b/src/main/java/com/hbm/items/armor/ItemModServos.java @@ -2,10 +2,13 @@ package com.hbm.items.armor; import java.util.List; +import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; @@ -23,12 +26,12 @@ public class ItemModServos extends ItemArmorMod { public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste I / Damage II"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed I / Jump II"); + list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste I / Damage +50%"); + list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +25% / Jump II"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste III / Damage III"); - list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed II / Jump III"); + list.add(EnumChatFormatting.DARK_PURPLE + "Chestplate: Haste III / Damage +150%"); + list.add(EnumChatFormatting.DARK_PURPLE + "Leggings: Speed +50% / Jump III"); } list.add(""); @@ -43,20 +46,20 @@ public class ItemModServos extends ItemArmorMod { if(item.armorType == 1) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste I / Damage II)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste I / Damage +50%)"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste III / Damage III)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Haste III / Damage +150%)"); } } if(item.armorType == 2) { if(this == ModItems.servo_set) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed I / Jump II)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +25% / Jump II)"); } if(this == ModItems.servo_set_desh) { - list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed II / Jump III)"); + list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Speed +50% / Jump III)"); } } } @@ -69,25 +72,49 @@ public class ItemModServos extends ItemArmorMod { if(this == ModItems.servo_set) { entity.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 60, 0)); - entity.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60, 1)); } if(this == ModItems.servo_set_desh) { entity.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 60, 2)); - entity.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 60, 2)); } } if(item.armorType == 2) { if(this == ModItems.servo_set) { - entity.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60, 0)); entity.addPotionEffect(new PotionEffect(Potion.jump.id, 60, 1)); } if(this == ModItems.servo_set_desh) { - entity.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 60, 1)); entity.addPotionEffect(new PotionEffect(Potion.jump.id, 60, 2)); } } } - + + @Override + public Multimap getModifiers(ItemStack armor) { + Multimap multimap = super.getItemAttributeModifiers(); + + ItemArmor item = (ItemArmor)armor.getItem(); + + if(item.armorType == 1) { + if(this == ModItems.servo_set) + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Servos", 0.5, 2)); + + if(this == ModItems.servo_set_desh) + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Servos", 1.5, 2)); + } + + if(item.armorType == 2) { + if(this == ModItems.servo_set) + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), + new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Servos", 0.25, 2)); + + if(this == ModItems.servo_set_desh) + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), + new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Servos", 0.5, 2)); + } + + return multimap; + } } diff --git a/src/main/java/com/hbm/items/armor/ItemModTesla.java b/src/main/java/com/hbm/items/armor/ItemModTesla.java new file mode 100644 index 000000000..114a1f69e --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModTesla.java @@ -0,0 +1,97 @@ +package com.hbm.items.armor; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.handler.ArmorModHandler; +import com.hbm.render.model.ModelBackTesla; +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; +import com.hbm.tileentity.machine.TileEntityTesla; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.event.RenderPlayerEvent; + +public class ItemModTesla extends ItemArmorMod { + + private ModelBackTesla modelTesla; + public List targets = new ArrayList(); + + public ItemModTesla() { + super(ArmorModHandler.plate_only, false, true, false, false); + } + + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + + if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer)entity)) { + targets = TileEntityTesla.zap(entity.worldObj, entity.posX, entity.posY + 1.25, entity.posZ, 5, entity); + + if(targets != null && !targets.isEmpty() && entity.getRNG().nextInt(5) == 0) { + armor.damageItem(1, entity); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void modRender(RenderPlayerEvent.SetArmorModel event, ItemStack armor) { + + if(this.modelTesla == null) { + this.modelTesla = new ModelBackTesla(); + } + + RenderPlayer renderer = event.renderer; + ModelBiped model = renderer.modelArmor; + EntityPlayer player = event.entityPlayer; + //EntityPlayer me = Minecraft.getMinecraft().thePlayer; + + modelTesla.isSneak = model.isSneak; + + float interp = event.partialRenderTick; + float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp; + float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp; + float yaw = yawHead - yawOffset; + float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset); + float pitch = player.rotationPitch; + + modelTesla.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); + + /*GL11.glPushMatrix(); + + GL11.glRotated(yawOffset, 0, -1, 0); + + Vec3 offset = Vec3.createVectorHelper(0, 0, -0.5); + offset.rotateAroundY((float)Math.toRadians(yawOffset)); + + double sx = player.posX + offset.xCoord; + double sy = player.posY - 0.25; + double sz = player.posZ + offset.zCoord; + + double x = me.posX - sx; + double y = me.posY - sy; + double z = me.posZ - sz; + GL11.glTranslated(x, y, z); + + for(double[] target : targets) { + + double length = Math.sqrt(Math.pow(target[0] - sx, 2) + Math.pow(target[1] - sy, 2) + Math.pow(target[2] - sz, 2)); + BeamPronter.prontBeam(Vec3.createVectorHelper((target[0] - sx + offset.xCoord * 1.5), target[1] - sy, -(target[2] - sz + offset.zCoord * 1.5)), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x404040, (int) (player.worldObj.getTotalWorldTime() % 1000 + 1), (int) (length * 5), 0.125F, 2, 0.03125F); + } + + GL11.glPopMatrix();*/ + } + +} diff --git a/src/main/java/com/hbm/items/armor/ItemModWD40.java b/src/main/java/com/hbm/items/armor/ItemModWD40.java new file mode 100644 index 000000000..496902ab6 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModWD40.java @@ -0,0 +1,77 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.google.common.collect.Multimap; +import com.hbm.handler.ArmorModHandler; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ItemModWD40 extends ItemArmorMod { + + public ItemModWD40() { + super(ArmorModHandler.extra, true, true, true, true); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); + + list.add(color + "Highly reduces damage taken by armor, +2 HP"); + list.add(""); + super.addInformation(itemstack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + + String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.BLUE : EnumChatFormatting.YELLOW); + + list.add(color + " " + stack.getDisplayName() + " (-80% armor wear / +2 HP)"); + } + + @Override + public void modDamage(LivingHurtEvent event, ItemStack armor) { + + if(!event.entityLiving.worldObj.isRemote && armor.getItemDamage() > 0 && event.entityLiving.getRNG().nextInt(5) != 0) { + armor.setItemDamage(armor.getItemDamage() - 1); + } + } + + @Override + public Multimap getModifiers(ItemStack armor) { + Multimap multimap = super.getItemAttributeModifiers(); + + multimap.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), + new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Health", 4, 0)); + + return multimap; + } + + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + + if(entity.worldObj.isRemote && entity.hurtTime > 0) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "reddust"); + data.setDouble("posX", entity.posX + (entity.getRNG().nextDouble() - 0.5) * entity.width * 2); + data.setDouble("posY", entity.posY - entity.yOffset + entity.getRNG().nextDouble() * entity.height); + data.setDouble("posZ", entity.posZ + (entity.getRNG().nextDouble() - 0.5) * entity.width * 2); + data.setDouble("mX", 0.01); + data.setDouble("mY", 0.5); + data.setDouble("mZ", 0.8); + MainRegistry.proxy.effectNT(data); + } + } +} diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index 5a03fdbec..2cea761df 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -2,6 +2,7 @@ package com.hbm.items.armor; import java.util.List; +import com.hbm.handler.ArmorModHandler; import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.interfaces.IPartiallyFillable; import com.hbm.render.model.ModelJetPack; @@ -9,29 +10,87 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderPlayerEvent; -public abstract class JetpackBase extends ItemArmor implements IPartiallyFillable { +public abstract class JetpackBase extends ItemArmorMod implements IPartiallyFillable { private ModelJetPack model; public FluidType fuel; public int maxFuel; - public JetpackBase(ArmorMaterial mat, int i, int j, FluidType fuel, int maxFuel) { - super(mat, i, j); + public JetpackBase(FluidType fuel, int maxFuel) { + super(ArmorModHandler.plate_only, false, true, false, false); this.fuel = fuel; this.maxFuel = maxFuel; } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.LIGHT_PURPLE + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(""); + super.addInformation(itemstack, player, list, bool); + list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + + ItemStack jetpack = ArmorModHandler.pryMods(armor)[ArmorModHandler.plate_only]; + + if(jetpack == null) + return; + + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + I18nUtil.resolveKey(fuel.getUnlocalizedName()) + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); + } + + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + + if(!(entity instanceof EntityPlayer)) + return; + + ItemStack jetpack = ArmorModHandler.pryMods(armor)[ArmorModHandler.plate_only]; + + if(jetpack == null) + return; + + onArmorTick(entity.worldObj, (EntityPlayer)entity, jetpack); + + ArmorModHandler.applyMod(armor, jetpack); + } + + @Override + @SideOnly(Side.CLIENT) + public void modRender(RenderPlayerEvent.SetArmorModel event, ItemStack armor) { + + ModelBiped modelJetpack = getArmorModel(event.entityLiving, null, 1); + + RenderPlayer renderer = event.renderer; + ModelBiped model = renderer.modelArmor; + EntityPlayer player = event.entityPlayer; + + modelJetpack.isSneak = model.isSneak; + + float interp = event.partialRenderTick; + float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp; + float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp; + float yaw = yawHead - yawOffset; + float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset); + float pitch = player.rotationPitch; + + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(this.getArmorTexture(armor, event.entity, 1, null))); + modelJetpack.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); } @Override diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index 07d3579da..e0e6af660 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -22,8 +22,8 @@ import net.minecraft.world.World; public class JetpackBooster extends JetpackBase { - public JetpackBooster(ArmorMaterial mat, int i, int j, FluidType fuel, int maxFuel) { - super(mat, i, j, fuel, maxFuel); + public JetpackBooster(FluidType fuel, int maxFuel) { + super(fuel, maxFuel); } @Override @@ -86,7 +86,6 @@ public class JetpackBooster extends JetpackBase { list.add("High-powered vectorized jetpack."); list.add("Highly increased fuel consumption."); - list.add(""); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 63a18db38..f65a8201a 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -23,8 +23,8 @@ public class JetpackBreak extends JetpackBase { public static int maxFuel = 1200; - public JetpackBreak(ArmorMaterial mat, int i, int j, FluidType fuel, int maxFuel) { - super(mat, i, j, fuel, maxFuel); + public JetpackBreak(FluidType fuel, int maxFuel) { + super(fuel, maxFuel); } @Override @@ -96,7 +96,6 @@ public class JetpackBreak extends JetpackBase { list.add("Regular jetpack that will automatically hover mid-air."); list.add("Sneaking will stop hover mode."); list.add("Hover mode will consume less fuel and increase air-mobility."); - list.add(""); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index 35e9d2670..67e9ddeb0 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -21,8 +21,8 @@ import net.minecraft.world.World; public class JetpackRegular extends JetpackBase { - public JetpackRegular(ArmorMaterial mat, int i, int j, FluidType fuel, int maxFuel) { - super(mat, i, j, fuel, maxFuel); + public JetpackRegular(FluidType fuel, int maxFuel) { + super(fuel, maxFuel); } @Override @@ -73,7 +73,6 @@ public class JetpackRegular extends JetpackBase { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { list.add("Regular jetpack for simple upwards momentum."); - list.add(""); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index 0c124335a..4f2454405 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -24,8 +24,8 @@ import net.minecraft.world.World; public class JetpackVectorized extends JetpackBase { - public JetpackVectorized(ArmorMaterial mat, int i, int j, FluidType fuel, int maxFuel) { - super(mat, i, j, fuel, maxFuel); + public JetpackVectorized(FluidType fuel, int maxFuel) { + super(fuel, maxFuel); } @Override @@ -88,7 +88,6 @@ public class JetpackVectorized extends JetpackBase { list.add("High-mobility jetpack."); list.add("Higher fuel consumption."); - list.add(""); super.addInformation(stack, player, list, ext); } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index a92c74797..53ed51b2e 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -38,13 +38,13 @@ public class ItemWandD extends Item { MainRegistry.proxy.effectNT(data);*/ - new Spaceship().generate_r0(world, world.rand, x - 4, y, z - 8); + //new Spaceship().generate_r0(world, world.rand, x - 4, y, z - 8); //new Ruin001().generate_r0(world, world.rand, x, y - 8, z); - /*CellularDungeonFactory.jungle.generate(world, x, y, z, world.rand); - CellularDungeonFactory.jungle.generate(world, x, y + 4, z, world.rand); - CellularDungeonFactory.jungle.generate(world, x, y + 8, z, world.rand);*/ + CellularDungeonFactory.jungle.generate(world, x, y, z, world.rand); + //CellularDungeonFactory.jungle.generate(world, x, y + 4, z, world.rand); + //CellularDungeonFactory.jungle.generate(world, x, y + 8, z, world.rand); //new ArcticVault().trySpawn(world, x, y, z); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 5ead7dc7c..d951b4a6e 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -421,8 +421,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PTP", "PSP", 'A', ModItems.wire_aluminium, 'P', "plateAluminum", 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite })); GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TRD", "PCW", 'P', ModItems.plate_advanced_alloy, 'C', ModItems.coil_advanced_alloy, 'W', ModItems.wire_advanced_alloy, 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', "ingotTungsten" })); GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TDR", "PCW", 'P', ModItems.plate_advanced_alloy, 'C', ModItems.coil_advanced_alloy, 'W', ModItems.wire_advanced_alloy, 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', "ingotTungsten" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "IEI", "ICI", 'W', ModItems.wire_gold, 'I', ModItems.plate_polymer, 'E', ModItems.powder_power, 'C', "dustCobalt" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "ICI", "IEI", 'W', ModItems.wire_gold, 'I', ModItems.plate_polymer, 'E', ModItems.powder_power, 'C', "dustCobalt" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "IEI", "ICI", 'W', ModItems.wire_gold, 'I', ModItems.plate_polymer, 'E', Items.redstone, 'C', "dustCobalt" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hev_battery, 4), new Object[] { " W ", "ICI", "IEI", 'W', ModItems.wire_gold, 'I', ModItems.plate_polymer, 'E', Items.redstone, 'C', "dustCobalt" })); GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getEmptyBattery(ModItems.battery_red_cell), new Object[] { "WBW", "PBP", "WBW", 'W', ModItems.wire_aluminium, 'P', "plateAluminum", 'B', ItemBattery.getEmptyBattery(ModItems.battery_generic) })); GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell), new Object[] { "WBW", "PBP", "WBW", 'W', ModItems.wire_red_copper, 'P', "plateCopper", 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced) })); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 3ab4173c2..da4b9a32d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -11,8 +11,10 @@ import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; import net.minecraftforge.common.AchievementPage; +import net.minecraftforge.common.ChestGenHooks; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.LoadingCallback; import net.minecraftforge.common.ForgeChunkManager.Ticket; @@ -259,6 +261,14 @@ public class MainRegistry { enumToolMaterialBottleOpener.setRepairItem(new ItemStack(ModItems.plate_steel)); tMatDesh.setRepairItem(new ItemStack(ModItems.ingot_desh)); + ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(new ItemStack(ModItems.armor_polish), 1, 1, 3)); + ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.serum), 1, 1, 5)); + ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.PYRAMID_JUNGLE_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GUIHandler()); GameRegistry.registerTileEntity(TileEntityTestBombAdvanced.class, "tilentity_testbombadvanced"); GameRegistry.registerTileEntity(TileEntityDiFurnace.class, "tilentity_diFurnace"); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index cf9e2323d..3bd6ad391 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -178,10 +178,17 @@ public class ModEventHandler if(!event.entityLiving.worldObj.isRemote) { - if(event.entityLiving instanceof EntitySpider && event.source instanceof EntityDamageSource && - ((EntityDamageSource)event.source).getEntity() instanceof EntityPlayer && event.entityLiving.getRNG().nextInt(500) == 0) { + if(event.source instanceof EntityDamageSource && ((EntityDamageSource)event.source).getEntity() instanceof EntityPlayer) { - event.entityLiving.dropItem(ModItems.spider_milk, 1); + if(event.entityLiving instanceof EntitySpider && event.entityLiving.getRNG().nextInt(500) == 0) { + + event.entityLiving.dropItem(ModItems.spider_milk, 1); + } + + if(event.entityLiving instanceof EntitySpider && event.entityLiving.getRNG().nextInt(1000) == 0) { + + event.entityLiving.dropItem(ModItems.heart_piece, 1); + } } } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index c54578a0f..1601fb9a4 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -246,6 +246,11 @@ public class ModEventHandlerClient { } } } + + //because armor thatisn't ItemArmor doesn't render at all + if(armor != null && armor.getItem() instanceof JetpackBase) { + ((ItemArmorMod)armor.getItem()).modRender(event, armor); + } } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index ec5cd2a4e..6dbfa8447 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -502,6 +502,7 @@ public class ResourceManager { public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj")); public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj")); public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj")); + public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")); ////Texture Items @@ -572,6 +573,8 @@ public class ResourceManager { public static final ResourceLocation fau_cassette = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_cassette.png"); public static final ResourceLocation fau_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_arm.png"); + public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png"); + public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png"); diff --git a/src/main/java/com/hbm/render/loader/ModelRendererObj.java b/src/main/java/com/hbm/render/loader/ModelRendererObj.java index cf1035982..698b28078 100644 --- a/src/main/java/com/hbm/render/loader/ModelRendererObj.java +++ b/src/main/java/com/hbm/render/loader/ModelRendererObj.java @@ -56,6 +56,9 @@ public class ModelRendererObj { @SideOnly(Side.CLIENT) public void render(float scale) { + if(parts == null) + return; + GL11.glPushMatrix(); GL11.glTranslatef(this.offsetX * scale, this.offsetY * scale, this.offsetZ * scale); @@ -81,7 +84,7 @@ public class ModelRendererObj { GL11.glScalef(scale, scale, scale); - if(parts != null && parts.length > 0) + if(parts.length > 0) for(String part : parts) model.renderPart(part); else diff --git a/src/main/java/com/hbm/render/model/ModelArmorBase.java b/src/main/java/com/hbm/render/model/ModelArmorBase.java index bb40c81e1..0fabf1f41 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorBase.java +++ b/src/main/java/com/hbm/render/model/ModelArmorBase.java @@ -24,6 +24,16 @@ public class ModelArmorBase extends ModelBiped { public ModelArmorBase(int type) { this.type = type; + + //generate null defaults to prevent major breakage from using incomplete models + head = new ModelRendererObj(null); + body = new ModelRendererObj(null); + leftArm = new ModelRendererObj(null).setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(null).setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); } public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity entity) { diff --git a/src/main/java/com/hbm/render/model/ModelBackTesla.java b/src/main/java/com/hbm/render/model/ModelBackTesla.java new file mode 100644 index 000000000..6c9296886 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelBackTesla.java @@ -0,0 +1,33 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; + +public class ModelBackTesla extends ModelArmorBase { + + public ModelBackTesla() { + super(1); + body = new ModelRendererObj(ResourceManager.armor_mod_tesla); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + + GL11.glPushMatrix(); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mod_tesla); + body.render(par7); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/world/dungeon/Relay.java b/src/main/java/com/hbm/world/dungeon/Relay.java index f467ec959..3cee2c90b 100644 --- a/src/main/java/com/hbm/world/dungeon/Relay.java +++ b/src/main/java/com/hbm/world/dungeon/Relay.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; +import com.hbm.items.ModItems; import com.hbm.lib.HbmChestContents; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; @@ -15,6 +16,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.item.ItemDoor; +import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; @@ -649,7 +651,12 @@ public class Relay extends WorldGenerator world.setBlock(x + 4, y + 0, z + 10, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 0, z + 10, ModBlocks.crate_iron, 0, 3); world.setBlockMetadataWithNotify(x + 6, y + 0, z + 10, 3, 3); - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.getLoot(1), (TileEntityCrateIron)world.getTileEntity(x + 6, y + 0, z + 10), 8); + WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.getLoot(1), (TileEntityCrateIron)world.getTileEntity(x + 6, y + 0, z + 10), 8); + + if(world.rand.nextInt(5) == 0) { + ((TileEntityCrateIron)world.getTileEntity(x + 6, y + 0, z + 10)).setInventorySlotContents(11, new ItemStack(ModItems.morning_glory)); + } + world.setBlock(x + 7, y + 0, z + 10, Blocks.brick_block, 0, 3); world.setBlock(x + 8, y + 0, z + 10, Blocks.brick_block, 0, 3); world.setBlock(x + 10, y + 0, z + 10, ModBlocks.fence_metal, 0, 3); @@ -659,7 +666,7 @@ public class Relay extends WorldGenerator world.setBlock(x + 10, y + 0, z + 11, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 0, y + 0, z + 12, Library.getRandomConcrete(), 0, 3); //world.setBlock(x + 4, y + 0, z + 12, Blocks.iron_door, 0, 3); - ItemDoor.placeDoorBlock(world, x + 4, y + 0, z + 12, 0, Blocks.iron_door); + ItemDoor.placeDoorBlock(world, x + 4, y + 0, z + 12, 0, Blocks.iron_door); world.setBlock(x + 7, y + 0, z + 12, Blocks.brick_block, 0, 3); world.setBlock(x + 8, y + 0, z + 12, Blocks.brick_block, 0, 3); world.setBlock(x + 10, y + 0, z + 12, ModBlocks.fence_metal, 0, 3); diff --git a/src/main/java/com/hbm/world/generator/JungleDungeon.java b/src/main/java/com/hbm/world/generator/JungleDungeon.java index 7680ff9ce..a0ddadfc8 100644 --- a/src/main/java/com/hbm/world/generator/JungleDungeon.java +++ b/src/main/java/com/hbm/world/generator/JungleDungeon.java @@ -1,5 +1,7 @@ package com.hbm.world.generator; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; @@ -41,7 +43,25 @@ public class JungleDungeon extends CellularDungeon { //A hole has not been made -> this is the bottom floor if(!that.hasHole) { - world.setBlock(x, y, z, ModBlocks.brick_jungle_circle); + + List rooms = new ArrayList(); + + for(int i = 0; i < that.cells.length; i++) { + for(int j = 0; j < that.cells[0].length; j++) { + + if(that.cells[i][j] != null) + rooms.add(new int[]{i, j}); + } + } + + if(!rooms.isEmpty()) { + + int ix = x - dimX * width / 2; + int iz = z - dimZ * width / 2; + + int[] room = rooms.get(world.rand.nextInt(rooms.size())); + world.setBlock(ix + room[0] * (width - 1) + width / 2, y, iz + room[1] * (width - 1) + width / 2, ModBlocks.brick_jungle_circle); + } } that.hasHole = false; diff --git a/src/main/java/com/hbm/world/generator/room/JungleDungeonRoom.java b/src/main/java/com/hbm/world/generator/room/JungleDungeonRoom.java index 92a9c35d6..e65153f2b 100644 --- a/src/main/java/com/hbm/world/generator/room/JungleDungeonRoom.java +++ b/src/main/java/com/hbm/world/generator/room/JungleDungeonRoom.java @@ -67,7 +67,7 @@ public class JungleDungeonRoom extends CellularDungeonRoom { if(world.getBlock(x + 1 + a, y - 1, z + 1 + b) == Blocks.air) { if(bl == ModBlocks.brick_jungle || bl == ModBlocks.brick_jungle_cracked || bl == ModBlocks.brick_jungle_lava || bl == ModBlocks.brick_jungle_trap) { - world.setBlockToAir(x + 1 + a, y, z + 1 + b); + world.setBlock(x + 1 + a, y, z + 1 + b, ModBlocks.brick_jungle_fragile); punched = true; } }