From 5f3a641d731895c39aed019abfd7f99895c48c6b Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 10 Feb 2021 23:10:10 +0100 Subject: [PATCH] form fixes, derrick gas funnies, new radar model, more booze --- src/main/java/assets/hbm/lang/de_DE.lang | 2 + src/main/java/assets/hbm/lang/en_US.lang | 2 + .../java/assets/hbm/models/machines/radar.obj | 769 ++++++++++++++++++ .../textures/blocks/crate_tungsten_side.png | Bin 0 -> 659 bytes .../textures/blocks/crate_tungsten_top.png | Bin 0 -> 606 bytes .../hbm/textures/items/fabsols_vodka.png | Bin 0 -> 247 bytes .../textures/items/inanimate_carbon_rod.png | Bin 0 -> 163 bytes .../hbm/textures/models/machines/drum.png | Bin 0 -> 1448 bytes .../hbm/textures/models/machines/drum_alt.png | Bin 0 -> 1255 bytes .../textures/models/machines/radar_base.png | Bin 0 -> 1006 bytes .../textures/models/machines/radar_dish.png | Bin 0 -> 1502 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/generic/BlockOutgas.java | 21 + .../java/com/hbm/crafting/MineralRecipes.java | 14 + .../com/hbm/handler/EntityEffectHandler.java | 16 +- .../hbm/inventory/gui/GUIMachineDiesel.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 6 + .../com/hbm/items/armor/ItemModRevive.java | 24 +- .../items/machine/ItemChemistryTemplate.java | 3 +- .../items/machine/ItemFluidIdentifier.java | 3 +- src/main/java/com/hbm/main/ClientProxy.java | 6 +- .../java/com/hbm/main/ModEventHandler.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 3 + .../hbm/render/item/ItemRenderLibrary.java | 12 +- .../hbm/render/tileentity/RenderRadar.java | 46 +- .../machine/TileEntityMachineOilWell.java | 245 +++--- .../machine/TileEntityMachineRadar.java | 17 +- 27 files changed, 1034 insertions(+), 161 deletions(-) create mode 100644 src/main/java/assets/hbm/models/machines/radar.obj create mode 100644 src/main/java/assets/hbm/textures/blocks/crate_tungsten_side.png create mode 100644 src/main/java/assets/hbm/textures/blocks/crate_tungsten_top.png create mode 100644 src/main/java/assets/hbm/textures/items/fabsols_vodka.png create mode 100644 src/main/java/assets/hbm/textures/items/inanimate_carbon_rod.png create mode 100644 src/main/java/assets/hbm/textures/models/machines/drum.png create mode 100644 src/main/java/assets/hbm/textures/models/machines/drum_alt.png create mode 100644 src/main/java/assets/hbm/textures/models/machines/radar_base.png create mode 100644 src/main/java/assets/hbm/textures/models/machines/radar_dish.png diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index a2b3932d8..40bb10a3b 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -992,6 +992,7 @@ item.euphemium_kit.name=Euphemium Kit item.euphemium_legs.name=Euphemiumbeinschutz item.euphemium_plate.name=Euphemiumbrustpanzer item.euphemium_stopper.name=Stopper +item.fabsols_vodka.name=Fabsols Wodka item.factory_core_advanced.name=Fortgeschrittener Fabrikenergiecluster item.factory_core_titanium.name=Einfacher Fabrikenergiecluster item.fallout.name=Fallouthäufchen @@ -2180,6 +2181,7 @@ 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.wild_p.name=Wild Pegasus Trockener Wiskey item.wire_advanced_alloy.name=Supraleiter item.wire_aluminium.name=Aluminiumdraht item.wire_copper.name=Kupferdraht diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index fe9eb3e3a..aab26f5e3 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -998,6 +998,7 @@ item.euphemium_kit.name=Euphemium Kit item.euphemium_legs.name=Euphemium Leggings item.euphemium_plate.name=Euphemium Chestplate item.euphemium_stopper.name=Stopper +item.fabsols_vodka.name=Fabsol's Vodka item.factory_core_advanced.name=Advanced Factory Energy Cluster item.factory_core_titanium.name=Basic Factory Energy Cluster item.fallout.name=Pile of Fallout @@ -2186,6 +2187,7 @@ 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.wild_p.name=Wild Pegasus Dry Whiskey item.wire_advanced_alloy.name=Super Conductor item.wire_aluminium.name=Aluminium Wire item.wire_copper.name=Copper Wire diff --git a/src/main/java/assets/hbm/models/machines/radar.obj b/src/main/java/assets/hbm/models/machines/radar.obj new file mode 100644 index 000000000..5fadc51ae --- /dev/null +++ b/src/main/java/assets/hbm/models/machines/radar.obj @@ -0,0 +1,769 @@ +# Blender v2.79 (sub 0) OBJ File: 'radar.blend' +# www.blender.org +o Dish +v -0.500000 1.250000 0.500000 +v -0.500000 2.250000 0.500000 +v -0.500000 1.250000 -0.500000 +v -0.500000 2.250000 -0.500000 +v -0.250000 1.500000 -1.500000 +v -0.250000 2.000000 -1.500000 +v -0.250000 1.500000 1.500000 +v -0.250000 2.000000 1.500000 +v -0.500000 1.750000 0.250000 +v -0.500000 1.750000 -0.250000 +v -0.500000 1.750000 -0.125000 +v -0.500000 1.750000 0.125000 +v -0.625000 1.625000 0.250000 +v -0.625000 1.625000 -0.250000 +v -0.625000 1.625000 -0.125000 +v -0.625000 1.625000 0.125000 +v -0.625000 1.250000 0.250000 +v -0.625000 1.250000 -0.250000 +v -0.625000 1.250000 -0.125000 +v -0.625000 1.250000 0.125000 +v -0.500000 1.125000 0.250000 +v -0.500000 1.125000 -0.250000 +v -0.500000 1.125000 -0.125000 +v -0.500000 1.125000 0.125000 +v -0.500000 1.251000 0.250000 +v -0.500000 1.251000 -0.250000 +v -0.500000 1.251000 -0.125000 +v -0.500000 1.251000 0.125000 +v -0.250000 1.251000 0.250000 +v -0.250000 1.251000 -0.250000 +v -0.250000 1.251000 -0.125000 +v -0.250000 1.251000 0.125000 +v 0.250000 1.251000 0.250000 +v -0.125000 1.251000 0.000000 +v 0.250000 1.251000 -0.250000 +v 0.500000 1.251000 0.062500 +v 0.500000 1.251000 -0.062500 +v -0.250000 1.126000 0.250000 +v -0.250000 1.126000 -0.250000 +v 0.250000 1.126000 0.250000 +v 0.250000 1.126000 -0.250000 +v -0.250000 1.126000 -0.125000 +v -0.250000 1.126000 0.125000 +v -0.125000 1.126000 0.000000 +v 0.500000 1.126000 0.062500 +v 0.500000 1.126000 -0.062500 +v 0.562500 1.251000 0.062500 +v 0.562500 1.626000 0.062500 +v 0.562500 1.251000 -0.062500 +v 0.562500 1.626000 -0.062500 +v 0.687500 1.251000 0.062500 +v 0.687500 1.626000 0.062500 +v 0.687500 1.626000 -0.062500 +v 0.500000 1.251000 0.000000 +v 0.500000 1.626000 0.000000 +v 0.750000 1.251000 0.000000 +v 0.750000 1.626000 0.000000 +v 0.687500 1.251000 -0.062500 +v 0.687500 1.219750 0.062500 +v 0.687500 1.219750 -0.062500 +vt 0.666667 0.333333 +vt 0.333333 0.000000 +vt 0.666667 0.000000 +vt 1.000000 0.250000 +vt 0.333333 0.333333 +vt 0.000000 0.083333 +vt 0.166667 0.916667 +vt 0.208333 0.979167 +vt 0.166667 0.979167 +vt 0.041667 0.979167 +vt 0.083333 0.916667 +vt 0.083333 0.979167 +vt 0.166667 0.812500 +vt 0.208333 0.916667 +vt 0.041667 0.916667 +vt 0.083333 0.812500 +vt 0.166667 0.750000 +vt 0.208333 0.812500 +vt 0.041667 0.812500 +vt 0.083333 0.750000 +vt 0.250000 0.666667 +vt 0.291667 0.750000 +vt 0.250000 0.750000 +vt 0.375000 0.750000 +vt 0.416667 0.666667 +vt 0.416667 0.750000 +vt 0.333333 0.625000 +vt 0.291667 0.666667 +vt 0.416667 0.500000 +vt 0.333333 0.416667 +vt 0.250000 0.500000 +vt 0.458333 0.666667 +vt 0.208333 0.500000 +vt 0.333333 0.708333 +vt 0.375000 0.666667 +vt 0.375000 0.708333 +vt 0.291667 0.708333 +vt 0.333333 0.666667 +vt 0.250000 0.770833 +vt 0.250000 0.812500 +vt 0.125000 0.770833 +vt 0.125000 0.812500 +vt 0.125000 0.812500 +vt 0.000000 0.812500 +vt 0.125000 0.750000 +vt 0.083333 0.666667 +vt 0.125000 0.666667 +vt 0.166667 0.666667 +vt 0.125000 0.750000 +vt 0.125000 0.666667 +vt 0.208333 0.666667 +vt 0.041667 0.750000 +vt 0.208333 0.750000 +vt 0.125000 0.625000 +vt 0.041667 0.666667 +vt 0.041667 0.500000 +vt 0.104167 0.416667 +vt 0.208333 0.416667 +vt 0.250000 0.416667 +vt 0.458333 0.416667 +vt 0.416667 0.416667 +vt 0.416667 0.354167 +vt 0.416667 0.333333 +vt 0.437500 0.354167 +vt 0.479167 0.437500 +vt 0.520833 0.437500 +vt 0.520833 0.479167 +vt 0.416667 0.395833 +vt 0.104167 0.354167 +vt 0.125000 0.333333 +vt 0.145833 0.354167 +vt 0.145833 0.416667 +vt 0.354167 0.416667 +vt 0.354167 0.395833 +vt 0.312500 0.416667 +vt 0.312500 0.395833 +vt 0.250000 0.333333 +vt 0.250000 0.354167 +vt 0.229167 0.354167 +vt 0.250000 0.395833 +vt 0.604167 0.333333 +vt 0.625000 0.437500 +vt 0.604167 0.437500 +vt 0.458333 0.437500 +vt 0.479167 0.333333 +vt 0.520833 0.333333 +vt 0.541667 0.333333 +vt 0.562500 0.437500 +vt 0.541667 0.437500 +vt 0.562500 0.333333 +vt 1.000000 0.083333 +vt 0.000000 0.250000 +vt 0.375000 0.666667 +vt 0.458333 0.500000 +vt 0.291667 0.666667 +vt 0.250000 0.958333 +vt 0.125000 0.958333 +vt 0.125000 0.958333 +vt 0.125000 0.770833 +vt 0.000000 0.958333 +vt 0.000000 0.770833 +vt 0.458333 0.750000 +vt 0.541667 0.458333 +vt 0.479167 0.479167 +vt 0.458333 0.458333 +vt 0.625000 0.333333 +vt 0.458333 0.333333 +vn 1.0000 0.0000 0.0000 +vn 0.9701 0.0000 0.2425 +vn 0.9701 0.0000 -0.2425 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0040 -1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.6000 0.0000 0.8000 +vn 0.6000 0.0000 -0.8000 +vn 0.7071 0.0000 -0.7071 +vn 0.4472 -0.8944 0.0000 +vn 0.7071 0.0000 0.7071 +s off +f 4/1/1 1/2/1 3/3/1 +f 3/3/2 6/4/2 4/1/2 +f 2/5/3 7/6/3 1/2/3 +f 16/7/4 9/8/4 12/9/4 +f 10/10/4 15/11/4 11/12/4 +f 20/13/5 13/14/5 16/7/5 +f 14/15/5 19/16/5 15/11/5 +f 24/17/6 17/18/6 20/13/6 +f 18/19/6 23/20/6 19/16/6 +f 29/21/7 28/22/7 25/23/7 +f 27/24/7 30/25/7 26/26/7 +f 29/21/7 34/27/7 32/28/7 +f 30/25/7 34/27/7 35/29/7 +f 54/30/7 35/29/7 33/31/7 +f 35/29/8 39/32/8 30/25/8 +f 29/21/9 40/33/9 33/31/9 +f 34/34/10 43/35/10 32/36/10 +f 31/37/11 44/38/11 34/34/11 +f 17/18/9 21/39/9 25/40/9 +f 19/16/9 23/41/9 27/42/9 +f 28/43/8 20/13/8 16/7/8 +f 26/44/8 18/19/8 14/15/8 +f 27/45/9 42/46/9 31/47/9 +f 39/32/8 26/26/8 30/25/8 +f 43/48/8 28/49/8 32/50/8 +f 25/23/9 38/51/9 29/21/9 +f 22/52/12 42/46/12 23/20/12 +f 24/17/12 38/51/12 21/53/12 +f 38/51/13 44/54/13 40/33/13 +f 44/54/13 39/55/13 41/56/13 +f 40/33/13 41/56/13 46/57/13 +f 33/31/14 45/58/14 36/59/14 +f 46/60/15 35/29/15 37/61/15 +f 58/62/16 56/63/16 60/64/16 +f 48/65/7 52/66/7 53/67/7 +f 49/68/8 60/64/8 46/60/8 +f 60/69/17 56/70/17 59/71/17 +f 46/57/17 59/71/17 45/72/17 +f 37/73/7 54/30/7 49/74/7 +f 54/30/7 36/75/7 47/76/7 +f 56/77/18 51/78/18 59/79/18 +f 59/79/9 51/78/9 47/80/9 +f 49/81/10 55/82/10 50/83/10 +f 55/84/11 47/85/11 48/65/11 +f 48/65/9 51/86/9 52/66/9 +f 56/87/18 52/66/18 51/86/18 +f 56/87/16 53/88/16 57/89/16 +f 50/83/8 58/90/8 49/81/8 +f 4/1/1 2/5/1 1/2/1 +f 3/3/2 5/91/2 6/4/2 +f 2/5/3 8/92/3 7/6/3 +f 16/7/4 13/14/4 9/8/4 +f 10/10/4 14/15/4 15/11/4 +f 20/13/5 17/18/5 13/14/5 +f 14/15/5 18/19/5 19/16/5 +f 24/17/6 21/53/6 17/18/6 +f 18/19/6 22/52/6 23/20/6 +f 29/21/7 32/28/7 28/22/7 +f 27/24/7 31/93/7 30/25/7 +f 29/21/7 33/31/7 34/27/7 +f 30/25/7 31/93/7 34/27/7 +f 33/31/7 36/75/7 54/30/7 +f 54/30/7 37/73/7 35/29/7 +f 35/29/7 34/27/7 33/31/7 +f 35/29/8 41/94/8 39/32/8 +f 29/21/9 38/51/9 40/33/9 +f 34/34/10 44/38/10 43/35/10 +f 31/37/11 42/95/11 44/38/11 +f 25/40/9 9/96/9 13/14/9 +f 13/14/9 17/18/9 25/40/9 +f 27/42/9 11/97/9 15/11/9 +f 15/11/9 19/16/9 27/42/9 +f 16/7/8 12/98/8 28/43/8 +f 28/43/8 24/99/8 20/13/8 +f 14/15/8 10/100/8 26/44/8 +f 26/44/8 22/101/8 18/19/8 +f 27/45/9 23/20/9 42/46/9 +f 39/32/8 22/102/8 26/26/8 +f 43/48/8 24/17/8 28/49/8 +f 25/23/9 21/53/9 38/51/9 +f 22/52/12 39/55/12 42/46/12 +f 24/17/12 43/48/12 38/51/12 +f 38/51/13 43/48/13 44/54/13 +f 44/54/13 42/46/13 39/55/13 +f 46/57/13 45/72/13 40/33/13 +f 40/33/13 44/54/13 41/56/13 +f 33/31/14 40/33/14 45/58/14 +f 46/60/15 41/94/15 35/29/15 +f 57/103/7 53/67/7 52/66/7 +f 53/67/7 50/104/7 48/65/7 +f 50/104/7 55/105/7 48/65/7 +f 46/60/8 37/61/8 49/68/8 +f 49/68/8 58/62/8 60/64/8 +f 46/57/17 60/69/17 59/71/17 +f 36/59/9 45/58/9 47/80/9 +f 45/58/9 59/79/9 47/80/9 +f 49/81/10 54/106/10 55/82/10 +f 55/84/11 54/107/11 47/85/11 +f 48/65/9 47/85/9 51/86/9 +f 56/87/18 57/89/18 52/66/18 +f 56/87/16 58/90/16 53/88/16 +f 50/83/8 53/88/8 58/90/8 +o Base +v -0.500000 0.000000 0.500000 +v -0.500000 0.125000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.125000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.125000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.125000 -0.500000 +v -0.500000 0.312500 0.187500 +v -0.500000 0.687500 0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v 0.500000 0.312500 0.187500 +v 0.500000 0.687500 0.187500 +v 0.500000 0.312500 -0.187500 +v 0.500000 0.687500 -0.187500 +v 0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.500000 +v -0.187500 0.312500 0.500000 +v -0.187500 0.687500 0.500000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.500000 +v -0.375000 0.312500 0.187500 +v -0.375000 0.312500 -0.187500 +v -0.375000 0.687500 -0.187500 +v -0.375000 0.687500 0.187500 +v 0.375000 0.312500 -0.187500 +v 0.375000 0.312500 0.187500 +v 0.375000 0.687500 0.187500 +v 0.375000 0.687500 -0.187500 +v 0.187500 0.312500 0.375000 +v -0.187500 0.312500 0.375000 +v -0.187500 0.687500 0.375000 +v 0.187500 0.687500 0.375000 +v -0.187500 0.312500 -0.375000 +v 0.187500 0.312500 -0.375000 +v 0.187500 0.687500 -0.375000 +v -0.187500 0.687500 -0.375000 +v -0.312500 1.000000 0.312500 +v -0.312500 1.000000 -0.312500 +v 0.312500 1.000000 0.312500 +v 0.312500 1.000000 -0.312500 +v 0.437500 1.000000 -0.437500 +v 0.437500 1.000000 0.437500 +v -0.437500 1.000000 -0.437500 +v -0.437500 1.000000 0.437500 +v 0.437500 0.125000 0.437500 +v 0.437500 0.125000 0.312500 +v 0.312500 0.125000 0.437500 +v 0.437500 0.875000 0.437500 +v 0.437500 0.875000 0.312500 +v 0.312500 0.875000 0.437500 +v 0.437500 0.125000 -0.312500 +v 0.437500 0.125000 -0.437500 +v 0.312500 0.125000 -0.437500 +v 0.437500 0.875000 -0.312500 +v 0.437500 0.875000 -0.437500 +v 0.312500 0.875000 -0.437500 +v -0.312500 0.125000 0.437500 +v -0.437500 0.125000 0.437500 +v -0.437500 0.125000 0.312500 +v -0.312500 0.875000 0.437500 +v -0.437500 0.875000 0.437500 +v -0.437500 0.875000 0.312500 +v -0.312500 0.125000 -0.437500 +v -0.437500 0.125000 -0.312500 +v -0.437500 0.125000 -0.437500 +v -0.312500 0.875000 -0.437500 +v -0.437500 0.875000 -0.312500 +v -0.437500 0.875000 -0.437500 +v 0.312500 0.125000 0.375000 +v -0.312500 0.125000 0.375000 +v 0.312500 0.875000 0.375000 +v -0.312500 0.875000 0.375000 +v 0.312500 0.125000 -0.375000 +v 0.312500 0.875000 -0.375000 +v -0.312500 0.125000 -0.375000 +v -0.312500 0.875000 -0.375000 +v 0.375000 0.125000 0.312500 +v 0.375000 0.875000 0.312500 +v 0.375000 0.125000 -0.312500 +v 0.375000 0.875000 -0.312500 +v -0.375000 0.125000 0.312500 +v -0.375000 0.875000 0.312500 +v -0.375000 0.125000 -0.312500 +v -0.375000 0.875000 -0.312500 +v 0.312500 1.062500 0.312500 +v -0.312500 1.062500 0.312500 +v 0.312500 1.062500 -0.312500 +v -0.312500 1.062500 -0.312500 +v -0.156250 1.062500 0.156250 +v -0.156250 1.062500 -0.156250 +v 0.156250 1.062500 0.156250 +v 0.156250 1.062500 -0.156250 +v -0.156250 1.125000 0.156250 +v -0.156250 1.125000 -0.156250 +v 0.156250 1.125000 -0.156250 +v 0.156250 1.125000 0.156250 +vt -0.000000 0.380952 +vt 0.400000 0.428571 +vt -0.000000 0.428571 +vt -0.000000 0.380952 +vt 0.400000 0.428571 +vt -0.000000 0.428571 +vt 0.400000 0.428571 +vt -0.000000 0.380952 +vt 0.400000 0.380952 +vt 0.400000 0.428571 +vt -0.000000 0.380952 +vt 0.400000 0.380952 +vt 0.000000 0.000000 +vt 0.400000 -0.000000 +vt 0.700000 0.047619 +vt 0.450000 0.023810 +vt 0.700000 0.023810 +vt 0.275000 0.690476 +vt 0.125000 0.547619 +vt 0.275000 0.547619 +vt 0.275000 0.547619 +vt 0.125000 0.690476 +vt 0.125000 0.547619 +vt 0.275000 0.547619 +vt 0.125000 0.690476 +vt 0.125000 0.547619 +vt 0.275000 0.690476 +vt 0.125000 0.547619 +vt 0.275000 0.547619 +vt 0.125000 0.500000 +vt 0.075000 0.690476 +vt 0.275000 0.738095 +vt 0.275000 0.690476 +vt 0.325000 0.547619 +vt 0.125000 0.500000 +vt 0.075000 0.690476 +vt 0.125000 0.690476 +vt 0.275000 0.738095 +vt 0.325000 0.547619 +vt 0.125000 0.500000 +vt 0.075000 0.690476 +vt 0.275000 0.738095 +vt 0.275000 0.690476 +vt 0.325000 0.547619 +vt 0.125000 0.500000 +vt 0.075000 0.690476 +vt 0.125000 0.690476 +vt 0.275000 0.738095 +vt 0.325000 0.547619 +vt 0.425000 0.690476 +vt 0.400000 0.976190 +vt 0.400000 0.690476 +vt 0.425000 0.690476 +vt 0.400000 0.976190 +vt 0.400000 0.690476 +vt 0.525000 0.976190 +vt 0.550000 0.690476 +vt 0.550000 0.976190 +vt 0.550000 0.976190 +vt 0.525000 0.690476 +vt 0.550000 0.690476 +vt 0.400000 0.690476 +vt 0.425000 0.976190 +vt 0.400000 0.976190 +vt 0.750000 0.428571 +vt 0.400000 0.095238 +vt 0.750000 0.095238 +vt 0.525000 0.976190 +vt 0.550000 0.690476 +vt 0.550000 0.976190 +vt 0.475000 0.690476 +vt 0.425000 0.690476 +vt 0.375000 0.738095 +vt 0.375000 0.500000 +vt 0.425000 0.690476 +vt 0.400000 0.976190 +vt 0.400000 0.690476 +vt 0.475000 0.976190 +vt 0.700000 0.023810 +vt 0.450000 0.047619 +vt 0.450000 0.023810 +vt 0.525000 0.690476 +vt 0.475000 0.976190 +vt 0.475000 0.690476 +vt 0.425000 0.976190 +vt 0.000000 0.809524 +vt 0.075000 0.785714 +vt 0.325000 0.785714 +vt 0.525000 0.690476 +vt 0.475000 0.976190 +vt 0.475000 0.690476 +vt 0.425000 0.976190 +vt -0.000000 0.428571 +vt 0.025000 0.500000 +vt 0.025000 0.738095 +vt 0.550000 0.976190 +vt 0.525000 0.690476 +vt 0.550000 0.690476 +vt 0.475000 0.976190 +vt 0.475000 0.690476 +vt 0.425000 0.976190 +vt 0.325000 0.452381 +vt 0.075000 0.452381 +vt 1.000000 0.285714 +vt 0.750000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.750000 0.285714 +vt 0.750000 0.000000 +vt 1.000000 0.000000 +vt 0.750000 0.285714 +vt 0.750000 0.000000 +vt 1.000000 0.285714 +vt 0.750000 0.000000 +vt 1.000000 0.000000 +vt 0.700000 0.047619 +vt 0.450000 0.023810 +vt 0.700000 0.023810 +vt 0.700000 0.023810 +vt 0.450000 0.047619 +vt 0.450000 0.023810 +vt 0.700000 0.047619 +vt 0.400000 0.095238 +vt 0.700000 0.047619 +vt 0.750000 0.047619 +vt 0.750000 0.095238 +vt 0.750000 0.047619 +vt 0.750000 0.095238 +vt 0.400000 0.452381 +vt 0.650000 0.690476 +vt 0.400000 0.690476 +vt 0.400000 0.428571 +vt 0.650000 0.452381 +vt 0.400000 0.452381 +vt 0.400000 0.428571 +vt 0.650000 0.452381 +vt 0.400000 0.452381 +vt 0.650000 0.452381 +vt 0.400000 0.428571 +vt 0.650000 0.428571 +vt 0.650000 0.452381 +vt 0.400000 0.428571 +vt 0.650000 0.428571 +vt 0.875000 0.285714 +vt 0.750000 0.309524 +vt 0.750000 0.285714 +vt 0.750000 0.309524 +vt 0.875000 0.285714 +vt 0.875000 0.309524 +vt 0.875000 0.285714 +vt 0.750000 0.309524 +vt 0.750000 0.285714 +vt 0.750000 0.309524 +vt 0.875000 0.285714 +vt 0.875000 0.309524 +vt 0.400000 0.380952 +vt 0.400000 0.380952 +vt -0.000000 0.428571 +vt 0.450000 0.047619 +vt 0.275000 0.500000 +vt 0.075000 0.547619 +vt 0.125000 0.738095 +vt 0.325000 0.690476 +vt 0.275000 0.500000 +vt 0.075000 0.547619 +vt 0.125000 0.738095 +vt 0.325000 0.690476 +vt 0.275000 0.500000 +vt 0.075000 0.547619 +vt 0.125000 0.738095 +vt 0.325000 0.690476 +vt 0.275000 0.500000 +vt 0.075000 0.547619 +vt 0.125000 0.738095 +vt 0.325000 0.690476 +vt 0.525000 0.976190 +vt 0.400000 0.428571 +vt 0.400000 0.809524 +vt 0.375000 0.785714 +vt 0.350000 0.738095 +vt 0.350000 0.500000 +vt 0.375000 0.452381 +vt 0.025000 0.785714 +vt 0.075000 0.761905 +vt 0.325000 0.761905 +vt 0.025000 0.452381 +vt 0.050000 0.500000 +vt 0.050000 0.738095 +vt 0.525000 0.976190 +vt 0.325000 0.476190 +vt 0.075000 0.476190 +vt 0.750000 0.285714 +vt 1.000000 0.285714 +vt 1.000000 0.285714 +vt 0.750000 0.285714 +vt 0.450000 0.047619 +vt 0.750000 0.047619 +vt 0.400000 0.047619 +vt 0.750000 0.047619 +vt 0.750000 0.095238 +vt 0.400000 0.047619 +vt 0.400000 0.095238 +vt 0.400000 0.047619 +vt 0.400000 0.095238 +vt 0.400000 0.047619 +vt 0.650000 0.428571 +vt 0.650000 0.428571 +vt 0.400000 0.452381 +vt 0.875000 0.309524 +vt 0.750000 0.285714 +vt 0.875000 0.309524 +vt 0.750000 0.285714 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 62/108/19 63/109/19 61/110/19 +f 64/111/20 67/112/20 63/113/20 +f 68/114/21 65/115/21 67/116/21 +f 66/117/22 61/118/22 65/119/22 +f 67/116/23 61/120/23 63/121/23 +f 114/122/23 136/123/23 135/124/23 +f 84/125/20 81/126/20 83/127/20 +f 69/128/19 72/129/19 71/130/19 +f 77/131/22 80/132/22 79/133/22 +f 76/134/21 73/135/21 75/136/21 +f 86/137/23 69/128/23 71/130/23 +f 87/138/20 71/130/20 72/129/20 +f 88/139/24 72/129/24 70/140/24 +f 85/141/22 70/140/22 69/128/22 +f 90/142/23 75/136/23 73/135/23 +f 91/143/22 73/135/22 74/144/22 +f 92/145/24 74/144/24 76/134/24 +f 89/146/20 76/134/20 75/136/20 +f 94/147/23 77/131/23 79/133/23 +f 95/148/19 79/133/19 80/132/19 +f 96/149/24 80/132/24 78/150/24 +f 93/151/21 78/150/21 77/131/21 +f 98/152/23 83/127/23 81/126/23 +f 99/153/21 81/126/21 82/154/21 +f 100/155/24 82/154/24 84/125/24 +f 97/156/19 84/125/19 83/127/19 +f 115/157/22 144/158/22 143/159/22 +f 123/160/20 146/161/20 145/162/20 +f 120/163/19 137/164/19 138/165/19 +f 142/166/20 110/167/20 141/168/20 +f 133/169/19 114/170/19 135/171/19 +f 107/172/24 106/173/24 105/174/24 +f 124/175/21 134/176/21 136/177/21 +f 109/178/22 114/170/22 111/179/22 +f 127/180/24 117/181/24 68/114/24 +f 127/182/21 140/183/21 139/184/21 +f 110/167/21 112/185/21 109/178/21 +f 144/186/23 113/187/23 142/188/23 +f 117/189/20 119/190/20 116/191/20 +f 116/191/21 118/192/21 115/157/21 +f 62/193/24 123/194/24 128/195/24 +f 121/196/22 125/197/22 122/198/22 +f 122/198/19 126/199/19 123/160/19 +f 66/200/24 111/201/24 121/202/24 +f 148/203/22 128/204/22 147/205/22 +f 128/204/19 132/206/19 129/207/19 +f 129/207/20 130/208/20 127/182/20 +f 115/209/24 110/210/24 66/200/24 +f 135/211/22 134/212/22 133/213/22 +f 139/214/20 138/215/20 137/216/20 +f 143/217/21 142/218/21 141/219/21 +f 146/220/19 147/221/19 145/222/19 +f 126/223/23 148/224/23 146/225/23 +f 140/226/23 120/227/23 138/228/23 +f 106/173/21 113/187/21 118/229/21 +f 105/230/20 120/227/20 130/231/20 +f 126/223/19 125/232/19 108/233/19 +f 114/122/22 112/234/22 106/235/22 +f 149/236/24 152/237/24 150/238/24 +f 150/239/19 102/240/19 101/241/19 +f 152/242/20 104/243/20 102/244/20 +f 151/245/21 103/246/21 104/247/21 +f 149/248/22 101/249/22 103/250/22 +f 156/251/21 160/252/21 155/253/21 +f 153/254/19 158/255/19 154/256/19 +f 155/257/22 157/258/22 153/259/22 +f 154/260/20 159/261/20 156/262/20 +f 62/108/19 64/263/19 63/109/19 +f 64/111/20 68/264/20 67/112/20 +f 68/114/21 66/200/21 65/115/21 +f 66/117/22 62/265/22 61/118/22 +f 67/116/23 65/115/23 61/120/23 +f 114/122/23 124/266/23 136/123/23 +f 84/125/20 82/154/20 81/126/20 +f 69/128/19 70/140/19 72/129/19 +f 77/131/22 78/150/22 80/132/22 +f 76/134/21 74/144/21 73/135/21 +f 86/137/23 85/267/23 69/128/23 +f 87/138/20 86/268/20 71/130/20 +f 88/139/24 87/269/24 72/129/24 +f 85/141/22 88/270/22 70/140/22 +f 90/142/23 89/271/23 75/136/23 +f 91/143/22 90/272/22 73/135/22 +f 92/145/24 91/273/24 74/144/24 +f 89/146/20 92/274/20 76/134/20 +f 94/147/23 93/275/23 77/131/23 +f 95/148/19 94/276/19 79/133/19 +f 96/149/24 95/277/24 80/132/24 +f 93/151/21 96/278/21 78/150/21 +f 98/152/23 97/279/23 83/127/23 +f 99/153/21 98/280/21 81/126/21 +f 100/155/24 99/281/24 82/154/24 +f 97/156/19 100/282/19 84/125/19 +f 115/157/22 118/192/22 144/158/22 +f 123/160/20 126/199/20 146/161/20 +f 120/163/19 117/189/19 137/164/19 +f 142/166/20 113/283/20 110/167/20 +f 133/169/19 111/179/19 114/170/19 +f 107/172/24 108/284/24 106/173/24 +f 124/175/21 121/196/21 134/176/21 +f 109/178/22 112/185/22 114/170/22 +f 68/114/24 64/285/24 127/180/24 +f 64/285/24 129/286/24 127/180/24 +f 127/180/24 139/287/24 137/288/24 +f 117/181/24 116/289/24 68/114/24 +f 127/180/24 137/288/24 117/181/24 +f 127/182/21 130/208/21 140/183/21 +f 110/167/21 113/283/21 112/185/21 +f 144/186/23 118/229/23 113/187/23 +f 117/189/20 120/163/20 119/190/20 +f 116/191/21 119/190/21 118/192/21 +f 129/286/24 64/285/24 128/195/24 +f 64/285/24 62/193/24 128/195/24 +f 62/193/24 122/290/24 123/194/24 +f 123/194/24 145/291/24 147/292/24 +f 123/194/24 147/292/24 128/195/24 +f 121/196/22 124/175/22 125/197/22 +f 122/198/19 125/197/19 126/199/19 +f 122/290/24 62/193/24 121/202/24 +f 62/193/24 66/200/24 121/202/24 +f 66/200/24 109/293/24 111/201/24 +f 111/201/24 133/294/24 134/295/24 +f 111/201/24 134/295/24 121/202/24 +f 148/203/22 131/296/22 128/204/22 +f 128/204/19 131/296/19 132/206/19 +f 129/207/20 132/206/20 130/208/20 +f 66/200/24 68/114/24 115/209/24 +f 68/114/24 116/289/24 115/209/24 +f 115/209/24 143/297/24 141/298/24 +f 110/210/24 109/293/24 66/200/24 +f 115/209/24 141/298/24 110/210/24 +f 135/211/22 136/299/22 134/212/22 +f 139/214/20 140/300/20 138/215/20 +f 143/217/21 144/301/21 142/218/21 +f 146/220/19 148/302/19 147/221/19 +f 126/223/23 131/303/23 148/224/23 +f 140/226/23 130/231/23 120/227/23 +f 119/304/21 105/174/21 118/229/21 +f 105/174/21 106/173/21 118/229/21 +f 106/173/21 112/305/21 113/187/21 +f 132/306/20 107/307/20 130/231/20 +f 107/307/20 105/230/20 130/231/20 +f 105/230/20 119/308/20 120/227/20 +f 108/233/19 107/309/19 131/303/19 +f 107/309/19 132/310/19 131/303/19 +f 131/303/19 126/223/19 108/233/19 +f 106/235/22 108/311/22 124/266/22 +f 108/311/22 125/312/22 124/266/22 +f 124/266/22 114/122/22 106/235/22 +f 149/236/24 151/245/24 152/237/24 +f 150/239/19 152/313/19 102/240/19 +f 152/242/20 151/314/20 104/243/20 +f 151/245/21 149/236/21 103/246/21 +f 149/248/22 150/315/22 101/249/22 +f 156/251/21 159/316/21 160/252/21 +f 153/254/19 157/317/19 158/255/19 +f 155/257/22 160/318/22 157/258/22 +f 154/260/20 158/319/20 159/261/20 diff --git a/src/main/java/assets/hbm/textures/blocks/crate_tungsten_side.png b/src/main/java/assets/hbm/textures/blocks/crate_tungsten_side.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec27cd9679a2530a0391149a159ffb90b613151 GIT binary patch literal 659 zcmV;E0&M+>P)5Ym=(JOvGJLbcCEvkgrI z1ro@RB3xG_Hi{ja@z`5LHVeCdGsWn?ouebp&dzFM3=KM+4s~6VWf{g8(lo_!9Fio# zT1y5^ap(;^KnG$4A!I)&Qug3TtgE*uYwgQi>o5xWB(gYmM%7I*djm zs;c7o`I)`FJv`4N&vT@dIF5rc2G@1T^PJ7iO`<5`;o$+THPTwk`T04AhldOX172TW zDa#Vy_fbk=t;KO1vMghJdz&bVh@y!7{e6TGXr&ZNDQ<3VI5;>UiXwJ)cK8ls43o)( zmzNj9Fl2pw{j-8n3MnPm*Vl|jBYqxc^nMIm@_c;D`z+(+;y1(L5MvCEMe=_-}kBO8sJkvYfV*Et!qR44&V1l)0BR{zv7i;3D6F% ziQJ%ZetMb#kfteGYlIL~RfSBF1OO=|X_|g<`%Z2W2qBPCt}0|%)(ZR`f4RuM5CN1@ ztp8nf^YioTXnq9|}(7h?=cDZ(%$NfO56F~`Tp2q6%sr>AvM6eLN)+uIvK5UiB7CP|WZJ5oxj zs$wu0Fr7}B&1U3zzB;D)d`=w41VKQz+r{%dgb?(4J@P!KEK5AkLu*Z4*Yx{+q?Amj tQ^e8HQN36!P)hyN*;?DWfB$bT_7Bn@H`V|;MyLP)002ovPDHLkV1m+YDQy4% literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/blocks/crate_tungsten_top.png b/src/main/java/assets/hbm/textures/blocks/crate_tungsten_top.png new file mode 100644 index 0000000000000000000000000000000000000000..36e9094db7999951c74bd56206e6f7bcc2e811cf GIT binary patch literal 606 zcmV-k0-^nhP)Qk7XWDSu|prl9Jcd+#}QueiRx9<8-Zh@yyb95KdVt)*!i;y9+R zYn*dbRmJ}PK2=rm{QQiz)^c-mgL4k06ae0PoO2=Jgem6r^_4VD(ORRUD8e~Mp63)r z!TI?)X`0e?9a2i-IL2B_k|cCp$9lb{C<<1q6?I)BopU(nD2jrzEZN=NWf%ssEJG=U zbB;KUF~(qw32{l1AcR0GrBF(7c6Nr8lBQ``E|+|VwU(!+rx3Tdw}(<{D?urRloIbf z%jJ@vKMeWmG?3T#5BzyET>UOtEEZU6iQ^b4C3-SPN=cF=0OYGv*7pwp{CP6~w43eu z{{BvuWsKtp@R2}kjrTrOorvF&Wf@J=FrUx2ykQssf^k#J6Q;^9FK+-eO@r1NAq3ug zWL?()!NAY>PM$gtLLjBwN-)NR1fSb)H|7fwKq*Dnb!1r`j66V~cFyX_ZU)H-Pn(RZ*9#<@I!!ZHZzwyl)EI^ktc)I$ztaD0e0szr7V&eb+ literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/inanimate_carbon_rod.png b/src/main/java/assets/hbm/textures/items/inanimate_carbon_rod.png new file mode 100644 index 0000000000000000000000000000000000000000..653d0fc2dd5ff3dc78d6fe120b73535e34a866e3 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfsPyW-TKji02iOrd1EBgPp>HnsJf7<`-xBazK_GH^r`=>uKSXX*ZFSo(N z;(76>_1RX>x&C9y1M>z6gRBE97+D&3_5G8zxjRc!ggGzHrgy zlkkqk3PRgb1Q*?S*CCR_Wqke2ow@eYBa7dyso#HWU-kQWwnyLG%zuBT#(E>q?c2AP zr={7~)lAsErK`TaA}cK|Iy!o?)ZA--;>y;o;63m(ZPsoDpGi-b?lS*#@#D(nkNcia zjad70@0$q?3QNWLH%hHC^DNqtQaI%rP?S|(NMOmAtOJ)+cJ2!?E939?-}Cxz;fd{V zIiI#`0UK3*{=W733HRDR-;bX;p3Et{dZWzRA4}DIoSB-YoIIUwUzvaRk_xAAN`Ain zPp8+fU*9X7VX*Y1kWtzG{rCU3v-mgw)#)*|t9j}{DsWS9`;oiRtguZj{>Pq;zglmC zbncS7pz4{ayLI>O?6kDgr%yNY?06l&zcMB5`PQl4(+bX&2L3rDsiNRezdjGUTx}Tjm3y-yqodc?+5Cnc~(!LGHPOJK4*FEF`hH%a2br##DmQ=?rODp1hbYiW>yLslzV+*zRuj%ju z*|xLPjYC*XCCqxIm2!>#{t`D2km$YL#TmXcZg&e>+pm{eWxD?XSg_V1eD@A1?KczO za0n}!i_fx_U;lI4r1RNl^?!f@C3^jntThpjrWm~kX_+nyv^^#K@R6)F6K?H1AHgeH z_P*%8-`)FL&ob*b9((rv++Kc_6ege|pMN!lhr63@=rcbJt3HyY_2q*1%ZUvNski0} za-=gQ8MFVZ-Bb|{6z+Zv6kb~8@9|P!U}5_`9b1s*viQGep0Q4F1iJcV{Cm4f{yTSe zWTpN6yY8V+OLd%uxYW6$i`wJ7`dL^sFWxiQZg$RZZ|(Q}GrvAh;Gf?1HP4ZMZzRz1 zsZ!CYLPBF+V2T~Z2rRb z;Nizk^Qgm*7cOXz;{uA5m?pe@|901FFKcd~2-wQ-qWL$S?Jr++?w1mnwQ#$V)t?;w zx6{Q}vtDr4U+NBYbEbvS`SK0(&)B?+Pd7flxIL~@4rr4^gF-7KN6-u2=6N9?mw#z< z^j`&3E>d;4K?G>i1!*?hl^}(16?^X)?Emxa-kCGs%ER_@A3mP^y>6wtufAy6xASpSiy5j`hQ9$F2a??=H@s&Ax5_=3jTK+8^X^{HvOM z02oQ9y@0EYNuAQs5==iN} zmio89wSS4d*|(^l^Uqa7v3jtZ#n&>%)&@lP#EJY^oviZ@;@q7H6P)rTzAUK%=8%Qv zJXJxU;51-x`uDH6ZghpT8VekiAzfto0|vo%Fc3}A+r5~U*~c$smTH+ zOPmkJGTn1(%agm!5>=qcaz@v@<-x7AXl(QA zgYDhB*XO0)xPSls%$c@7zeZjQo_pv2vw1UT=H}*B>Xp8_mVY@mz`P;tv`uyXon1F) zyDM+3kKbG7HD%Y=+a)RrOOBnpSGjiKrZc;at%~07p~R?YTDC21?ZUb}|8rOJ{`vBx z@YUnU>@~Z-cB=>p1l?Pcy~4t??%&fupxlSQU@;a4x3&VDZEUXQSs^7U2R>H zpG?kPz0~Z(za6P*o7KIit@?U;mVqoM$I6wQ7P_AI{{0MJ$r}^DKR4~2XT;Sy&jTP= z{8_~Q?#-JSGjHbq-v8X{-RrgM&z#B0&tLyyz21_%zhgB1!KLGtfQtWy833c9lPzN;&fQx{{42s4K!n?Mkc!V(Dw55tBDT5qiq?yj4C z6{28O0n@SfE3ZAhtXledyQYVOhp69yMV$-0CP9t;5f$B)|@Z`Pjvd-IQ%zdRrH^j$YA z{(ahceVqEc`ky%~)6>3Pd|DS>IKTAe_j7moIA=Dow1hmXK6s$r1*?;b?nx$o*&A^E zb=Q^bFk4{I!#$J4pm>x4$(Q@S$8W#VbY*dz9MHiv*Z+R*`}fnjaCX&|)4}~LEmOAd z+4JVh%eKjrpL{P`>Au(IE6@j(@ijY7es59)IsE(IOaEeICP)Ll2nn)3pFbCu@@E*p z?JSfP2m%_tXX;eZ<=>lbzb$)onHOl?yeg2OMwgo3m&<-LcI=gP5$0}5oH64?=GQdS zY};SaJ^zlyHMS&XtmZ$nu5R0u9sgejW~`0ftTF4(i#-?S&tCQQIlH65j*UBaW~QY9 z#aHW3^3Qqu?LYtF3w(Th%fw{Xg|q#Ne)DhHI!1nTKlOhxqFhMtsBhKZrTh5J zrOt*r*XOOeaKANgd-mPD>vHRCIW>j7(8A5T-G@yGywow=S+bB literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/models/machines/radar_base.png b/src/main/java/assets/hbm/textures/models/machines/radar_base.png new file mode 100644 index 0000000000000000000000000000000000000000..0aece43646ffa46db78ed388c81a0f3fce23d639 GIT binary patch literal 1006 zcmVjkd6vzLrfk-%!tf)g(HLHhq$zmx3106c$OL_7K>KCYo z43@lPNIP^*#}1L=&>EZ4Ap#lXGaT>W?(q9b5s`6@MQjEUb5eAW#~a zcXxM%_HS-(dJ*};g|y@F8oLfcON+%q`_pP0;8~bR9)Up+q>keVBQKk+N2Afv247xY z0067i>R>xz7^b`34!hm1X`hWkdZ6pejjMtM5|I|DdhHfP5uzwMcrM$a6P-5!p+IVe zQvQ3$HVb1XfKT8QDZq7gd>%j?6|Va5Nern=SV{_U&qMw877hVgCDY zIE3RkwHD>ng}bh?xmmA2d_4U6uOEc2G?%DzVr%|yFH0oKvlUtFr7|Q-Ni*JAL(n^6VV+3s_Jlb+{fV5>H}3rs1fyn zU0uJ82z3B`rEL2*)OH`*niL(toa~`3iEXYZcu$0g5o4guoT}kYV zJb=eQGAxjY@H6}L^aSAbYf1JC9LM8vqx0G8x|z@Cspok(J3B*m+-x?8<2XOYag5n) zRx4u>3LKBexrDNmrsqvyGMV7~{2Uh-7y0q|`5Ei=IzO)0>)P!}%^FoAOcEvH;o+gy z`)0FQt!D(a1Xe|oiIH{;-}jZY6Gc%yfqjU)GIh(9MPx+=M(v4oO;d^c6&k{2%>INx zJzw=+n>jiQA4BGR_U&tZgcs68SRfG=NQ4CvVSz+gAQ2Ww#HdWf#wXRr2((ciV2D7Q zcjtHvBw|DaT3;KZo36G~Ss;-%YJjv0EZ6I`U7LM-d#kklfC8c5Xb*AzK4lpFy=7FK|*lg>a_0EyyjJ@Qa}8O@(E1p zln3tJrFC`1gM<)w<~bN_^VHnwie!`3YPHhXYwgOKADC#R(XKqRGqdYm1z?yu6R0P` zFpTB$bUIDR>?2<{{ze=FKokE00Di-N0D!Of5&%F$cT>CFM!VfE+z3^k`J|!tU=v{& z##H&8p6ZC`;TL-Ng>PsE-_Q)c;!7ZUKk)7WMHD5=Q019y8iT&~PYyih-hoM;$tSqSV%qJfnU{a#)8daXr(~y7H5sNAE%vPLREEd>oHlWHgW*Vw8 zb;wGk$}?sfK(S>+S%xalWYeT5imFsLLOwhSa!l^72;eix$_p~v?bf&+Aj`|-Ezpcc zqg4BHd&lNgrK|_ES}n9%t-|$D<*N+OgdM{Ma7^hdV!T}?N$CdQwc{jg0LPSW0Nv2E z&J;4hWHQl?y?2f0S#ts19N^e7j)FwE&?#D+ql6SOw$~|IoU6jCQT&C8Qg?zne{pz!bW7QbW4Dj&q@X_;q-@v6RT_{nfTwTWyvN|I; z^#I$7&+2hH&!BjUDyLJjN#R-b02LnvsqU@mCOM}6b&Smo#hR3U2<=h z%UNxklwQ=(S`XM|r<>`XD2mAS<=qnif%u5B`d7ZLlTqt3)te=6s?XG(I8GTr>^!3w zLCETMt%=nyiV=it*2>w{)m1D$=jZ1ipTZ4zgw_KnMldN~KruoQ4n7yG^Z#6$w2moEYVI`K7f?oEbpw@s!YW zdwZKGzrMa2<<%VE8`ggdI^-)v$M$*>P{H4VI0rbU);XZ)#A`B{1UEM~R(}={JG5(? z1E_Dx-{0R`i`O>m@{Q8Jm}w^K17**Y58jwg;o?h%VHmGgEAPs>XFU|wlW-A*`;Pp) z>i4m2ki9EYAF$i)?pvkT*!B?e&A!KQ*H8_TD_q4G?z*hgRTilna11frHIy6@)Gda) zM(w~U58xhNGO`D#F2m)+mn*$B@fb)gH8SPWmsczk@cB40*X)vvm%Fy#TNKp2KGhpFOp zyWNE1^R{u4x23o+MwR9P)OQ%jJL7a7B9{-9LwuPBs4;xsmqx7bd$gHDe8>Un_p|+$ zj`h8vRnH;R7``v1Z%?NfV?Lil*P~7A0Tg*1Wxt2^KQoFKBfs_PivR!s07*qoM6N<$ Ef{Z@lM*si- literal 0 HcmV?d00001 diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 095c8fa89..90c55eed7 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1010,7 +1010,7 @@ public class ModBlocks { block_trinitite = new BlockOre(Material.iron, 3F, 35F).setBlockName("block_trinitite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_trinitite"); block_waste = new BlockNuclearWaste(Material.iron, 5F, 60F).setBlockName("block_waste").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste"); block_waste_painted = new BlockNuclearWaste(Material.iron, 5F, 60F).setBlockName("block_waste_painted").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_painted"); - ancient_scrap = new BlockOutgas(Material.iron, true, 1, true).setBlockName("ancient_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ancient_scrap"); + ancient_scrap = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("ancient_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ancient_scrap"); block_scrap = new BlockFalling(Material.sand).setBlockName("block_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeGravel).setBlockTextureName(RefStrings.MODID + ":block_scrap"); block_electrical_scrap = new BlockFalling(Material.iron).setBlockName("block_electrical_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeMetal).setBlockTextureName(RefStrings.MODID + ":electrical_scrap_alt2"); block_beryllium = new BlockGeneric(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index 4618d136b..2d64ecbb6 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -16,6 +16,7 @@ public class BlockOutgas extends BlockOre { boolean randomTick; int rate; boolean onBreak; + boolean onNeighbour; public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak) { super(mat); @@ -23,6 +24,12 @@ public class BlockOutgas extends BlockOre { this.randomTick = randomTick; this.rate = rate; this.onBreak = onBreak; + this.onNeighbour = false; + } + + public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, boolean onNeighbour) { + this(mat, randomTick, rate, onBreak); + this.onNeighbour = onNeighbour; } public int tickRate(World p_149738_1_) { @@ -89,4 +96,18 @@ public class BlockOutgas extends BlockOre { super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + if(onNeighbour) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.air) { + world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, getGas()); + } + } + } + } } diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index efcb11ad6..01cc1ce78 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -76,6 +76,20 @@ public class MineralRecipes { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_schrabidium_fuel, 2), new Object[] { ModItems.billet_schrabidium, ModItems.billet_neptunium, ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium }); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_schrabidium_fuel, 1), new Object[] { ModItems.nugget_schrabidium, ModItems.nugget_schrabidium, "nuggetNeptunium", "nuggetNeptunium", ModItems.nugget_beryllium, ModItems.nugget_beryllium })); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_uranium, 2), new Object[] { ModItems.billet_uranium, ModItems.billet_uranium, ModItems.billet_uranium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_u233, 2), new Object[] { ModItems.billet_u233, ModItems.billet_u233, ModItems.billet_u233 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_u235, 2), new Object[] { ModItems.billet_u235, ModItems.billet_u235, ModItems.billet_u235 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_u238, 2), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_u238 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_plutonium, 2), new Object[] { ModItems.billet_plutonium, ModItems.billet_plutonium, ModItems.billet_plutonium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_pu238, 2), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_pu239, 2), new Object[] { ModItems.billet_pu239, ModItems.billet_pu239, ModItems.billet_pu239 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_pu240, 2), new Object[] { ModItems.billet_pu240, ModItems.billet_pu240, ModItems.billet_pu240 }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_pu_mix, 2), new Object[] { ModItems.billet_pu_mix, ModItems.billet_pu_mix, ModItems.billet_pu_mix }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_neptunium, 2), new Object[] { ModItems.billet_neptunium, ModItems.billet_neptunium, ModItems.billet_neptunium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_polonium, 2), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_schrabidium, 2), new Object[] { ModItems.billet_schrabidium, ModItems.billet_schrabidium, ModItems.billet_schrabidium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_solinium, 2), new Object[] { ModItems.billet_solinium, ModItems.billet_solinium, ModItems.billet_solinium }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.pellet_rtg), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238 }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.pellet_rtg_weak), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_pu238 }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.pellet_rtg_polonium), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium }); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 2424cfe36..ea80d7b0a 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -11,9 +11,11 @@ import com.hbm.saveddata.RadiationSavedData; import com.hbm.util.ContaminationUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; @@ -85,6 +87,17 @@ public class EntityEffectHandler { entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19)); } + + if(HbmLivingProps.getRadiation(entity) > 900 && world.getTotalWorldTime() % 10 == 0) { + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "sweat"); + nbt.setInteger("count", 1); + nbt.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); + nbt.setInteger("entity", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + + } } else { float radiation = HbmLivingProps.getRadiation(entity); @@ -112,8 +125,9 @@ public class EntityEffectHandler { if(chance == 1 || entity.getRNG().nextInt(chance) == 0) { NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "digammaDecay"); + data.setString("type", "sweat"); data.setInteger("count", 1); + data.setInteger("block", Block.getIdFromBlock(Blocks.soul_sand)); data.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java b/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java index 41275269c..37d7920d5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java @@ -36,7 +36,7 @@ public class GUIMachineDiesel extends GuiInfoContainer { " Diesel (500 HE/t)", " Petroil (300 HE/t)", " Biofuel (400 HE/t)", - " Diesel (1000 HE/t)", + " Hydrogen (1000 HE/t)", " NITAN Superfuel (5000 HE/t)" }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 93264a925..3a3ec03cb 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1863,6 +1863,8 @@ public class ModItems { public static Item heart_fab; public static Item wd40; public static Item scrumpy; + public static Item wild_p; + public static Item fabsols_vodka; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -2819,6 +2821,8 @@ public class ModItems { heart_fab = new ItemModHealth(60F).setUnlocalizedName("heart_fab").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_fab"); wd40 = new ItemModWD40().setUnlocalizedName("wd40").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":wd40"); scrumpy = new ItemModRevive(1).setUnlocalizedName("scrumpy").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":scrumpy"); + wild_p = new ItemModRevive(3).setUnlocalizedName("wild_p").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":wild_p"); + fabsols_vodka = new ItemModRevive(9999).setUnlocalizedName("fabsols_vodka").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":fabsols_vodka"); 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"); @@ -6308,6 +6312,8 @@ public class ModItems { GameRegistry.registerItem(heart_fab, heart_fab.getUnlocalizedName()); GameRegistry.registerItem(wd40, wd40.getUnlocalizedName()); GameRegistry.registerItem(scrumpy, scrumpy.getUnlocalizedName()); + GameRegistry.registerItem(wild_p, wild_p.getUnlocalizedName()); + GameRegistry.registerItem(fabsols_vodka, fabsols_vodka.getUnlocalizedName()); //The Gadget GameRegistry.registerItem(gadget_explosive, gadget_explosive.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModRevive.java b/src/main/java/com/hbm/items/armor/ItemModRevive.java index 94e9c4146..a6a997284 100644 --- a/src/main/java/com/hbm/items/armor/ItemModRevive.java +++ b/src/main/java/com/hbm/items/armor/ItemModRevive.java @@ -3,6 +3,7 @@ package com.hbm.items.armor; import java.util.List; import com.hbm.handler.ArmorModHandler; +import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -14,20 +15,35 @@ public class ItemModRevive extends ItemArmorMod { super(ArmorModHandler.extra, false, false, true, false); this.setMaxDamage(durability); } - + @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.GOLD + "But how did you survive?"); - list.add(EnumChatFormatting.RED + "I was drunk."); + if(this == ModItems.scrumpy) { + list.add(EnumChatFormatting.GOLD + "But how did you survive?"); + list.add(EnumChatFormatting.RED + "I was drunk."); + } + if(this == ModItems.wild_p) { + list.add(EnumChatFormatting.DARK_GRAY + "Explosive " + EnumChatFormatting.RED + "Reactive " + EnumChatFormatting.DARK_GRAY + "Plot " + EnumChatFormatting.RED + "Armor"); + } + if(this == ModItems.fabsols_vodka) { + list.add(EnumChatFormatting.ITALIC + "In the news:"); + list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.BOLD + "Man literally too angry to die."); + list.add(""); + list.add(EnumChatFormatting.ITALIC + "\"I ain't got time to die\" says local"); + list.add(EnumChatFormatting.ITALIC + "man after ripping the physical manifestation"); + list.add(EnumChatFormatting.ITALIC + "of disaster itself in half."); + } + list.add(""); + list.add(EnumChatFormatting.GOLD + "" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left"); list.add(""); super.addInformation(stack, player, list, bool); } @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName() + " (" + (stack.getMaxDamage() - stack.getItemDamage()) + " revives left)"); } diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 54dae7879..6fc247b08 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.inventory.FluidStack; import com.hbm.inventory.MachineRecipes; +import com.hbm.items.ModItems; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -284,7 +285,7 @@ public class ItemChemistryTemplate extends Item { ItemStack[] out = MachineRecipes.getChemOutputFromTempate(stack); FluidStack[] outF = MachineRecipes.getFluidOutputFromTempate(stack); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); list.add(""); try { diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java index 0a9938f00..6676e2565 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIdentifier.java @@ -2,6 +2,7 @@ package com.hbm.items.machine; import java.util.List; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.ModItems; import com.hbm.tileentity.conductor.TileEntityFluidDuct; import com.hbm.util.I18nUtil; @@ -65,7 +66,7 @@ public class ItemFluidIdentifier extends Item { if(!(stack.getItem() instanceof ItemFluidIdentifier)) return; - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder")); + list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); list.add(""); list.add("Universal fluid identifier for:"); list.add(" " + I18n.format(FluidType.getEnum(stack.getItemDamage()).getUnlocalizedName())); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index eccb0d8c0..6b8b97c6b 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1056,9 +1056,11 @@ public class ClientProxy extends ServerProxy { player.attackedAtYaw = 0F; } - if("digammaDecay".equals(type)) { + if("sweat".equals(type)) { Entity e = world.getEntityByID(data.getInteger("entity")); + Block b = Block.getBlockById(data.getInteger("block")); + int meta = data.getInteger("meta"); if(e instanceof EntityLivingBase) { @@ -1069,7 +1071,7 @@ public class ClientProxy extends ServerProxy { double iz = e.boundingBox.minZ - 0.2 + (e.boundingBox.maxZ - e.boundingBox.minZ + 0.4) * rand.nextDouble(); - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, Blocks.soul_sand, 0); + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, b, meta); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); Minecraft.getMinecraft().effectRenderer.addEffect(fx); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 6e5abaab6..724da02b5 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -307,7 +307,7 @@ public class ModEventHandler for(int i = 1; i < 5; i++) { - ItemStack prev = prevArmor!= null ? prevArmor[i] : null; + ItemStack prev = prevArmor != null ? prevArmor[i] : null; ItemStack armor = event.entityLiving.getEquipmentInSlot(i); boolean reapply = prevArmor != null && !ItemStack.areItemStacksEqual(prev, armor); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 3f7a07562..e1608eea7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -160,6 +160,7 @@ public class ResourceManager { //Radar public static final IModelCustom radar_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj")); public static final IModelCustom radar_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj")); + public static final IModelCustom radar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")); //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); @@ -402,6 +403,8 @@ public class ResourceManager { //Radar public static final ResourceLocation radar_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_base.png"); public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png"); + public static final ResourceLocation radar_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_base.png"); + public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 3cd881ea6..332497ef6 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -716,14 +716,14 @@ public class ItemRenderLibrary { renderers.put(Item.getItemFromBlock(ModBlocks.machine_radar), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -4, 0); - GL11.glScaled(6, 6, 6); + GL11.glScaled(5, 5, 5); } public void renderCommon() { - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotated(90, 0, -1, 0); - bindTexture(ResourceManager.radar_body_tex); ResourceManager.radar_body.renderAll(); - bindTexture(ResourceManager.radar_head_tex); ResourceManager.radar_head.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.radar_base_tex); ResourceManager.radar.renderPart("Base"); + GL11.glTranslated(-0.125, 0, 0); + bindTexture(ResourceManager.radar_dish_tex); ResourceManager.radar.renderPart("Dish"); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadar.java b/src/main/java/com/hbm/render/tileentity/RenderRadar.java index e9979b59d..45cc19fd0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadar.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadar.java @@ -10,41 +10,25 @@ import net.minecraft.tileentity.TileEntity; public class RenderRadar extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glRotatef(180, 0F, 1F, 0F); - bindTexture(ResourceManager.radar_body_tex); - - ResourceManager.radar_body.renderAll(); + bindTexture(ResourceManager.radar_base_tex); + ResourceManager.radar.renderPart("Base"); - GL11.glPopMatrix(); - - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glRotatef(180, 0F, 1F, 0F); - - TileEntityMachineRadar radar = (TileEntityMachineRadar)tileEntity; - - if(radar.power > 0) - GL11.glRotatef((System.currentTimeMillis() / 10) % 360, 0F, 1F, 0F); + TileEntityMachineRadar radar = (TileEntityMachineRadar) tileEntity; + GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, 1F, 0F); + GL11.glTranslated(-0.125D, 0, 0); - bindTexture(ResourceManager.radar_head_tex); - ResourceManager.radar_head.renderAll(); + bindTexture(ResourceManager.radar_dish_tex); + ResourceManager.radar.renderPart("Dish"); - GL11.glPopMatrix(); - } + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java index 7e1e83f3c..1499ba0ff 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java @@ -31,7 +31,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraftforge.oredict.OreDictionary; public class TileEntityMachineOilWell extends TileEntity implements ISidedInventory, IConsumer, IFluidContainer, IFluidSource { @@ -46,14 +45,14 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent public List list1 = new ArrayList(); public List list2 = new ArrayList(); public FluidTank[] tanks; - - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {2, 0}; - private static final int[] slots_side = new int[] {0}; + + private static final int[] slots_top = new int[] { 1 }; + private static final int[] slots_bottom = new int[] { 2, 0 }; + private static final int[] slots_side = new int[] { 0 }; Random rand = new Random(); - + private String customName; - + public TileEntityMachineOilWell() { slots = new ItemStack[6]; tanks = new FluidTank[2]; @@ -73,21 +72,19 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent @Override public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { + if(slots[i] != null) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } else { - return null; + return null; } } @Override public void setInventorySlotContents(int i, ItemStack itemStack) { slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } @@ -101,7 +98,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -113,78 +110,75 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; } } - - //You scrubs aren't needed for anything (right now) + + // You scrubs aren't needed for anything (right now) @Override - public void openInventory() {} + public void openInventory() { + } + @Override - public void closeInventory() {} + public void closeInventory() { + } @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { if(i == 0) if(itemStack.getItem() instanceof IBatteryItem) return true; - + if(i == 1) return true; - + return false; } - + @Override public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { + if(slots[i] != null) { + if(slots[i].stackSize <= j) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { + if(slots[i].stackSize == 0) { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.power = nbt.getLong("powerTime"); this.age = nbt.getInteger("age"); this.tanks[0].readFromNBT(nbt, "oil"); this.tanks[1].readFromNBT(nbt, "gas"); - + slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { + + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { + if(b0 >= 0 && b0 < slots.length) { slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -193,27 +187,24 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent this.tanks[0].writeToNBT(nbt, "oil"); this.tanks[1].writeToNBT(nbt, "gas"); - + NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); + nbt1.setByte("slot", (byte) i); slots[i].writeToNBT(nbt1); list.appendTag(nbt1); } } nbt.setTag("items", list); } - + @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { @@ -224,16 +215,16 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + public long getPowerScaled(long i) { return (power * i) / maxPower; } - + @Override public void updateEntity() { - + int timer = 50; - + age++; age2++; if(age >= timer) @@ -244,93 +235,128 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent fillFluidInit(tanks[0].getTankType()); fillFluidInit(tanks[1].getTankType()); } - + if(!worldObj.isRemote) { this.tanks[0].unloadTank(1, 2, slots); this.tanks[1].unloadTank(3, 4, slots); - + for(int i = 0; i < 2; i++) { tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); } power = Library.chargeTEFromItems(slots, 0, power, maxPower); - + if(power >= 100) { - - //operation start - + + // operation start + if(age == timer - 1) { warning = 0; - - //warning 0, green: derrick is operational - //warning 1, red: derrick is full, has no power or the drill is jammed - //warning 2, yellow: drill has reached max depth - + + // warning 0, green: derrick is operational + // warning 1, red: derrick is full, has no power or the + // drill is jammed + // warning 2, yellow: drill has reached max depth + for(int i = this.yCoord - 1; i > this.yCoord - 1 - 100; i--) { - + if(i <= 5) { - //Code 2: The drilling ended + // Code 2: The drilling ended warning = 2; break; } - + Block b = worldObj.getBlock(this.xCoord, i, this.zCoord); if(b == ModBlocks.oil_pipe) continue; - + if((b.isReplaceable(worldObj, xCoord, i, zCoord) || b.getExplosionResistance(null) < 100) && !(b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty)) { + + // wanted to add oreDict support for oreUranium, but + // to be honest it's such a fringe case even with + // regular uranium ore that it's not worth all the + // lull checking (for naughty blocks with no items) + // and tedious ore dict lookups (which can be done + // in 5 minutes but that's more effort than it's + // worth) + if(worldObj.getBlock(xCoord, i, zCoord) == ModBlocks.ore_uranium) { + + for(int u = -1; u <= 1; u++) { + for(int v = -1; v <= 1; v++) { + + if(worldObj.getBlock(xCoord + u, yCoord + 6, zCoord + v) == Blocks.air) { + worldObj.setBlock(xCoord + u, yCoord + 6, zCoord + v, ModBlocks.gas_radon_dense); + } + } + } + } + worldObj.setBlock(xCoord, i, zCoord, ModBlocks.oil_pipe); - - //Code 2: The drilling ended + + // Code 2: The drilling ended if(i == this.yCoord - 100) warning = 2; break; - + } else if(this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { if(succ(this.xCoord, i, this.zCoord)) { - + this.tanks[0].setFill(this.tanks[0].getFill() + 500); if(this.tanks[0].getFill() > this.tanks[0].getMaxFill()) this.tanks[0].setFill(tanks[0].getMaxFill()); - this.tanks[1].setFill(this.tanks[1].getFill() + (100 + rand.nextInt(401))); if(this.tanks[1].getFill() > this.tanks[1].getMaxFill()) this.tanks[1].setFill(tanks[1].getMaxFill()); - + ExplosionLarge.spawnOilSpills(worldObj, xCoord + 0.5F, yCoord + 5.5F, zCoord + 0.5F, 3); worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "game.neutral.swim.splash", 2.0F, 0.5F); - + break; } else { worldObj.setBlock(xCoord, i, zCoord, ModBlocks.oil_pipe); break; } - + } else { - //Code 1: Drill jammed + // Code 1: Drill jammed warning = 1; break; } } } - - //operation end - + + // operation end + power -= 100; } else { warning = 1; } warning2 = 0; + if(tanks[1].getFill() > 0) { + if(slots[5] != null && (slots[5].getItem() == ModItems.fuse || slots[5].getItem() == ModItems.screwdriver)) { + warning2 = 2; tanks[1].setFill(tanks[1].getFill() - 50); + if(tanks[1].getFill() <= 0) tanks[1].setFill(0); - worldObj.spawnEntityInWorld(new EntityGasFX(worldObj, this.xCoord + 0.5F, this.yCoord + 6.5F, this.zCoord + 0.5F, 0.0, 0.0, 0.0)); + + worldObj.spawnEntityInWorld(new EntityGasFX(worldObj, this.xCoord + 0.5F, this.yCoord + 6.5F, this.zCoord + 0.5F, 0.0, 0.0, 0.0)); + + for(int u = -1; u <= 1; u++) { + for(int v = -1; v <= 1; v++) { + + if(worldObj.rand.nextInt(10) == 0 && worldObj.getBlock(xCoord + u, yCoord + 6, zCoord + v) == Blocks.air) { + worldObj.setBlock(xCoord + u, yCoord + 6, zCoord + v, ModBlocks.gas_flammable); + } + } + } + } else { warning2 = 1; } @@ -338,33 +364,33 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } - + } - + public boolean succ(int x, int y, int z) { - + list.clear(); - + succ1(x, y, z); succ2(x, y, z); - + if(!list.isEmpty()) { - + int i = rand.nextInt(list.size()); int a = list.get(i)[0]; int b = list.get(i)[1]; int c = list.get(i)[2]; - + if(worldObj.getBlock(a, b, c) == ModBlocks.ore_oil) { - + worldObj.setBlock(a, b, c, ModBlocks.ore_oil_empty); return true; } } - + return false; } - + public void succInit1(int x, int y, int z) { succ1(x + 1, y, z); succ1(x - 1, y, z); @@ -373,7 +399,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent succ1(x, y, z + 1); succ1(x, y, z - 1); } - + public void succInit2(int x, int y, int z) { succ2(x + 1, y, z); succ2(x - 1, y, z); @@ -382,20 +408,18 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent succ2(x, y, z + 1); succ2(x, y, z - 1); } - + List list = new ArrayList(); - + public void succ1(int x, int y, int z) { - if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil_empty && - worldObj.getBlockMetadata(x, y, z) == 0) { + if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil_empty && worldObj.getBlockMetadata(x, y, z) == 0) { worldObj.setBlockMetadataWithNotify(x, y, z, 1, 2); succInit1(x, y, z); } } - + public void succ2(int x, int y, int z) { - if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil_empty && - worldObj.getBlockMetadata(x, y, z) == 1) { + if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil_empty && worldObj.getBlockMetadata(x, y, z) == 1) { worldObj.setBlockMetadataWithNotify(x, y, z, 0, 2); succInit2(x, y, z); } else if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil) { @@ -406,35 +430,34 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent @Override public void setPower(long i) { power = i; - + } @Override public long getPower() { return power; - + } @Override public long getMaxPower() { return maxPower; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } @Override public boolean getTact() { - if (age2 >= 0 && age2 < 10) { + if(age2 >= 0 && age2 < 10) { return true; } @@ -460,7 +483,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent return tanks[0].getFill(); else if(type.name().equals(tanks[1].getTankType().name())) return tanks[1].getFill(); - + return 0; } @@ -506,7 +529,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent List list = new ArrayList(); list.add(tanks[0]); list.add(tanks[1]); - + return list; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index dea2920bc..9450d4dc5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -25,7 +25,10 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements ICo public List nearbyMissiles = new ArrayList(); int pingTimer = 0; int lastPower; - final static int maxTimer = 40; + final static int maxTimer = 80; + + public float prevRotation; + public float rotation; public long power = 0; public static final int maxPower = 100000; @@ -84,6 +87,18 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements ICo pingTimer = 0; } } + } else { + + prevRotation = rotation; + + if(power > 0) { + rotation += 5F; + } + + if(rotation >= 360) { + rotation -= 360F; + prevRotation -= 360F; + } } }