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 000000000..cc1fef7b0 Binary files /dev/null and b/src/main/java/assets/hbm/textures/armor/mod_tesla.png differ diff --git a/src/main/java/assets/hbm/textures/blocks/brick_jungle_fragile.png b/src/main/java/assets/hbm/textures/blocks/brick_jungle_fragile.png new file mode 100644 index 000000000..7558ffad8 Binary files /dev/null and b/src/main/java/assets/hbm/textures/blocks/brick_jungle_fragile.png differ 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 000000000..94567ad9c Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/back_tesla.png differ diff --git a/src/main/java/assets/hbm/textures/items/broodwich.png b/src/main/java/assets/hbm/textures/items/broodwich.png index 9a692d3c0..6ff8aa608 100644 Binary files a/src/main/java/assets/hbm/textures/items/broodwich.png and b/src/main/java/assets/hbm/textures/items/broodwich.png differ 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 000000000..863ee9962 Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/insert_du.png differ 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 000000000..53340d0d2 Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/insert_era.png differ 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 000000000..41a4b53ce Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/insert_polonium.png differ 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 000000000..22f02eccc Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/insert_yharonite.png differ 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 000000000..30f1b322d Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/journal_pip.png differ diff --git a/src/main/java/assets/hbm/textures/items/wd40.png b/src/main/java/assets/hbm/textures/items/wd40.png new file mode 100644 index 000000000..eb9fc6944 Binary files /dev/null and b/src/main/java/assets/hbm/textures/items/wd40.png differ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 48174dfef..4f8f8439e 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -234,6 +234,7 @@ public class ModBlocks { public static Block brick_jungle; public static Block brick_jungle_cracked; + public static Block brick_jungle_fragile; public static Block brick_jungle_lava; public static Block brick_jungle_ooze; public static Block brick_jungle_mystic; @@ -1089,6 +1090,7 @@ public class ModBlocks { brick_jungle = new BlockGeneric(Material.rock).setBlockName("brick_jungle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle"); brick_jungle_cracked = new BlockGeneric(Material.rock).setBlockName("brick_jungle_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_cracked"); + brick_jungle_fragile = new FragileBrick(Material.rock).setBlockName("brick_jungle_fragile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_fragile"); brick_jungle_lava = new BlockGeneric(Material.rock).setBlockName("brick_jungle_lava").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_lava"); brick_jungle_ooze = new BlockOre(Material.rock).setBlockName("brick_jungle_ooze").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_ooze"); brick_jungle_mystic = new BlockOre(Material.rock).setBlockName("brick_jungle_mystic").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_mystic"); @@ -1825,6 +1827,7 @@ public class ModBlocks { GameRegistry.registerBlock(meteor_battery, ItemBlockLore.class, meteor_battery.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle, brick_jungle.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_cracked, brick_jungle_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_fragile, brick_jungle_fragile.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_lava, brick_jungle_lava.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_ooze, brick_jungle_ooze.getUnlocalizedName()); GameRegistry.registerBlock(brick_jungle_mystic, brick_jungle_mystic.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/DetCord.java b/src/main/java/com/hbm/blocks/bomb/DetCord.java index 01c94b313..a9d99342c 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetCord.java +++ b/src/main/java/com/hbm/blocks/bomb/DetCord.java @@ -7,9 +7,9 @@ import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNT; import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -80,7 +80,8 @@ public class DetCord extends Block implements IBomb { world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true); } if(this == ModBlocks.det_charge) { - ExplosionLarge.explode(world, x, y, z, 15, true, false, false); + new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 15).overrideResolution(64).explode(); + ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15)); } if(this == ModBlocks.det_nuke) { world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5)); diff --git a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java b/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java index 8718b56c2..02ef03941 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java @@ -22,59 +22,53 @@ public class BlockCoalOil extends Block { public BlockCoalOil(Material mat) { super(mat); } - - @Override + + @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block b) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - Block n = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - - if(n == ModBlocks.ore_coal_oil_burning || n == ModBlocks.balefire || n == Blocks.fire || n.getMaterial() == Material.lava) { - world.scheduleBlockUpdate(x, y, z, this, world.rand.nextInt(20) + 2); - } - } - } - - @Override + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + Block n = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + + if(n == ModBlocks.ore_coal_oil_burning || n == ModBlocks.balefire || n == Blocks.fire || n.getMaterial() == Material.lava) { + world.scheduleBlockUpdate(x, y, z, this, world.rand.nextInt(20) + 2); + } + } + } + + @Override public void updateTick(World world, int x, int y, int z, Random rand) { - world.setBlock(x, y, z, ModBlocks.ore_coal_oil_burning); - } + world.setBlock(x, y, z, ModBlocks.ore_coal_oil_burning); + } @Override public Item getItemDropped(int i, Random rand, int j) { return Items.coal; - } - - @Override + } + + @Override public int quantityDropped(Random rand) { - return 2 + rand.nextInt(2); - } - - /*public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { - - if(world.rand.nextInt(10) == 0) - world.setBlock(x, y, z, Blocks.fire); - }*/ + return 2 + rand.nextInt(2); + } - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { - - if(player.getHeldItem() == null) - return; - - if(!(player.getHeldItem().getItem() instanceof ItemTool || player.getHeldItem().getItem() instanceof ItemToolAbility)) - return; - - ItemTool tool = (ItemTool)player.getHeldItem().getItem(); - - if(tool.func_150913_i() != ToolMaterial.WOOD) { + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { - if(world.rand.nextInt(10) == 0) - world.setBlock(x, y, z, Blocks.fire); - } - } - - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { + if(player.getHeldItem() == null) + return; + + if(!(player.getHeldItem().getItem() instanceof ItemTool || player.getHeldItem().getItem() instanceof ItemToolAbility)) + return; + + ItemTool tool = (ItemTool) player.getHeldItem().getItem(); + + if(tool.func_150913_i() != ToolMaterial.WOOD) { + + if(world.rand.nextInt(10) == 0) + world.setBlock(x, y, z, Blocks.fire); + } + } + + public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { world.setBlock(x, y, z, Blocks.fire); - } + } } diff --git a/src/main/java/com/hbm/blocks/generic/FragileBrick.java b/src/main/java/com/hbm/blocks/generic/FragileBrick.java new file mode 100644 index 000000000..93406cda6 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/FragileBrick.java @@ -0,0 +1,58 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class FragileBrick extends Block { + + public FragileBrick(Material mat) { + super(mat); + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(world.isRemote) + return; + + world.func_147480_a(x, y, z, false); + notifyNeighbors(world, x, y, z); + } + + @Override + public void onEntityWalking(World world, int x, int y, int z, Entity entity) { + + if(world.isRemote) + return; + + world.func_147480_a(x, y, z, false); + notifyNeighbors(world, x, y, z); + } + + private void notifyNeighbors(World world, int x, int y, int z) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + Block n = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + + if(n == this) { + world.scheduleBlockUpdate(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, this, world.rand.nextInt(4) + 8); + } + } + } + + public void breakBlock(World world, int x, int y, int z, Block b, int m) { + notifyNeighbors(world, x, y, z); + } +} diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index dc9cb2711..cc0c42b95 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -131,6 +131,9 @@ public class ConsumableRecipes { //Inserts GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_steel, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', "blockSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_du, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', "blockUranium238" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_polonium, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', "blockPolonium" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', ModItems.ingot_semtex })); GameRegistry.addRecipe(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ModItems.plate_polymer, 'D', ModItems.ducttape }); GameRegistry.addRecipe(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', ModItems.ingot_polymer, 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); GameRegistry.addRecipe(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ModItems.ingot_polymer, 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', ModItems.plate_saturnite }); diff --git a/src/main/java/com/hbm/explosion/ExplosionNT.java b/src/main/java/com/hbm/explosion/ExplosionNT.java index b1888c003..625b150dd 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNT.java +++ b/src/main/java/com/hbm/explosion/ExplosionNT.java @@ -53,6 +53,11 @@ public class ExplosionNT extends Explosion { return this; } + public ExplosionNT overrideResolution(int res) { + field_77289_h = res; + return this; + } + public void explode() { doExplosionA(); doExplosionB(false); diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index a8fdf9094..3f0882e3a 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -43,17 +43,17 @@ public class ExplosionNukeSmall { } else if(size > 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; } }