diff --git a/Factory1.png b/Factory1.png deleted file mode 100644 index c61802a14..000000000 Binary files a/Factory1.png and /dev/null differ diff --git a/Factory2.png b/Factory2.png deleted file mode 100644 index 4c7d8b43e..000000000 Binary files a/Factory2.png and /dev/null differ diff --git a/Factory3.png b/Factory3.png deleted file mode 100644 index c61802a14..000000000 Binary files a/Factory3.png and /dev/null differ diff --git a/Fusion1.png b/Fusion1.png deleted file mode 100644 index 6f528ffbc..000000000 Binary files a/Fusion1.png and /dev/null differ diff --git a/Fusion2.png b/Fusion2.png deleted file mode 100644 index 2f8fd88ed..000000000 Binary files a/Fusion2.png and /dev/null differ diff --git a/Fusion3.png b/Fusion3.png deleted file mode 100644 index e513765a9..000000000 Binary files a/Fusion3.png and /dev/null differ diff --git a/Fusion4.png b/Fusion4.png deleted file mode 100644 index 2f8fd88ed..000000000 Binary files a/Fusion4.png and /dev/null differ diff --git a/Fusion5.png b/Fusion5.png deleted file mode 100644 index 6f528ffbc..000000000 Binary files a/Fusion5.png and /dev/null differ diff --git a/Info.txt b/Info.txt deleted file mode 100644 index 932745575..000000000 --- a/Info.txt +++ /dev/null @@ -1,2 +0,0 @@ -The included images are schematics for all multiblock structures, layer by layer. If a block is seperated by a black line, it is interchangeable, such as the electricity ports of factories which are opitonal, the inner tungsten blanket of the fusion reactor which can be removed completely and the concrete around the nuclear reactor (leaving out these parts will have it's downsites, such as less energy, missing ports or radiation) -The advanced factory can be built like the basic one, but with it's own parts. \ No newline at end of file diff --git a/Reactor1.png b/Reactor1.png deleted file mode 100644 index e28e7e15d..000000000 Binary files a/Reactor1.png and /dev/null differ diff --git a/Reactor2.png b/Reactor2.png deleted file mode 100644 index b3cdd7005..000000000 Binary files a/Reactor2.png and /dev/null differ diff --git a/Reactor3.png b/Reactor3.png deleted file mode 100644 index 13656df24..000000000 Binary files a/Reactor3.png and /dev/null differ diff --git a/Reactor4.png b/Reactor4.png deleted file mode 100644 index b3cdd7005..000000000 Binary files a/Reactor4.png and /dev/null differ diff --git a/Reactor5.png b/Reactor5.png deleted file mode 100644 index e28e7e15d..000000000 Binary files a/Reactor5.png and /dev/null differ diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 096e51f4f..f8ba2b85f 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -106,6 +106,7 @@ tile.therm_exo.name=Exothermische Bombe tile.crashed_bomb.name=Blindgänger tile.crate.name=Vorratskiste +tile.marker_structure.name=Multiblock-Strukturvorlage tile.machine_difurnace_off.name=Legierungshochofen tile.machine_difurnace_on.name=Legierungshochofen @@ -167,6 +168,11 @@ tile.machine_flare.name=Abfackelturm container.gasFlare=Abfackelturm tile.gas_duct.name=Gasleitung tile.gas_duct_solid.name=Verstärkte Gasleitung +tile.machine_drill.name=Automatischer Minenbohrer +container.miningDrill=Automatischer Minenbohrer + +tile.red_pylon.name=Strommasten +item.wiring_red_copper.name=Kabeltrommel tile.rail_highspeed.name=Hochgeschwindigkeitsschienen tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen @@ -291,6 +297,10 @@ item.nugget_unobtainium.name=Unobtainiumnugget item.nugget_daffergon.name=Daffergonnugget item.nugget_verticium.name=Verticiumnugget +item.ingot_desh.name=Deshbarren +item.nugget_desh.name=Deshnugget +item.powder_desh.name=Deshstaub + item.nugget_u235.name=U235-Nugget item.nugget_u238.name=U238-Nugget item.nugget_pu238.name=Pu238-Nugget @@ -337,6 +347,7 @@ tile.block_reiium.name=Reiiumblock tile.block_unobtainium.name=Unobtainiumblock tile.block_daffergon.name=Daffergonblock tile.block_verticium.name=Verticiumblock +tile.block_desh.name=Verstärketer Deshblock tile.ore_aluminium.name=Aluminiumerz tile.ore_copper.name=Kupfererz @@ -376,6 +387,7 @@ tile.reinforced_lamp_on.name=Verstärkte Lampe tile.brick_concrete.name=Betonziegel tile.brick_obsidian.name=Obsidianziegel tile.brick_light.name=Helle Ziegel +tile.asphalt.name=Asphalt tile.cmb_brick.name=CMB-Stahlfliese tile.cmb_brick_reinforced.name=Verstärkte CMB-Ziegel @@ -441,6 +453,8 @@ item.powder_dura_steel.name=Schnellarbeitsstahlstaub item.powder_polymer.name=Polymerstaub item.powder_lanthanium.name=Lanthanstaub item.powder_actinium.name=Actiniumstaub +item.powder_lithium_tiny.name=Kleiner Haufen Lithiumstaub +item.powder_cobalt_tiny.name=Kleiner Haufen Cobaltstaub item.battery_generic.name=Batterie item.battery_advanced.name=Fortgeschrittene Batterie @@ -461,6 +475,20 @@ item.battery_advanced_cell_12.name=Zwölffache fortgeschrittene Energiezelle item.battery_lithium_cell_6.name=Sechsfache Lithium-Ionen-Energiezelle item.battery_schrabidium_cell_4.name=Vierfache Schrabidium-Energiezelle +item.upgrade_template.name=Maschinenupgrade-Vorlage +item.upgrade_speed_1.name=Rotes Maschinenupgrade Mk.I +item.upgrade_speed_2.name=Rotes Maschinenupgrade Mk.II +item.upgrade_speed_3.name=Rotes Maschinenupgrade Mk.III +item.upgrade_effect_1.name=Grünes Maschinenupgrade Mk.I +item.upgrade_effect_2.name=Grünes Maschinenupgrade Mk.II +item.upgrade_effect_3.name=Grünes Maschinenupgrade Mk.III +item.upgrade_power_1.name=Blaues Maschinenupgrade Mk.I +item.upgrade_power_2.name=Blaues Maschinenupgrade Mk.II +item.upgrade_power_3.name=Blaues Maschinenupgrade Mk.III +item.upgrade_fortune_1.name=Lila Maschinenupgrade Mk.I +item.upgrade_fortune_2.name=Lila Maschinenupgrade Mk.II +item.upgrade_fortune_3.name=Lila Maschinenupgrade Mk.III + item.fusion_core.name=Fusionskern item.energy_core.name=Selbstgebauter Energiekern @@ -489,6 +517,7 @@ item.ducttape.name=Klebeband item.magnet_dee.name=Duantenmagnete item.magnet_circular.name=Flachmagnet item.cyclotron_tower.name=Zyklotronenturm +item.plate_dalekanium.name=Wütendes Metall item.cell_empty.name=Leere Zelle item.cell_uf6.name=Uranhexafluorit-Zelle @@ -521,6 +550,8 @@ item.canister_canola.name=Schmiermittelkanister item.canister_oil.name=Rohölkanister item.canister_fuel.name=Treibstoffkanister item.canister_kerosene.name=Kerosinkanister +item.canister_reoil.name=Kanister voll aufbereitetem Industrieöl +item.canister_petroil.name=Gemischkanister item.canister_napalm.name=Napalm B item.canister_NITAN.name=NITAN© 100 Oktan Supertreibstoff item.gas_empty.name=Leerer Gastank @@ -747,6 +778,7 @@ item.gun_jack.name=Jackhammer item.gun_spark.name=Die Zündkerze item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia +item.gun_defabricator.name=Defabrikator item.gun_revolver_iron_ammo.name=Patrone item.gun_revolver_ammo.name=Bleipatrone @@ -772,6 +804,7 @@ item.gun_jack_ammo.name=Vierfache Schrotpatrone item.gun_spark_ammo.name=Elektromagnetische Katusche item.gun_hp_ammo.name=Tintenpatrone item.gun_euthanasia_ammo.name=Spritze +item.gun_defabricator_ammo.name=Defabrikator-Energiezelle item.clip_revolver_iron.name=Box voll Eisenkugeln item.clip_revolver.name=.357 Magnum Patronen @@ -815,6 +848,7 @@ entity.hbm.entity_rocket.name=Rakete entity.hbm.entity_schrabnel.name=Schrabnel entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_hunter_chopper.name=Jagdschrauber +entity.entity_cyber_crab.name=Cyber-Krabbe item.cap_aluminium.name=Aluminiumdeckel item.hull_small_steel.name=Kleine Stahlhülle diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 0b49ae06f..339c08e3e 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -106,6 +106,7 @@ tile.therm_exo.name=Exothermic Bomb tile.crashed_bomb.name=Dud tile.crate.name=Supply Crate +tile.marker_structure.name=Multiblock Structure Marker tile.machine_difurnace_off.name=Alloy Furnace tile.machine_difurnace_on.name=Alloy Furnace @@ -167,6 +168,11 @@ tile.machine_flare.name=Gas Flare container.gasFlare=Gas Flare tile.gas_duct.name=Gas Pipe tile.gas_duct_solid.name=Coated Gas Pipe +tile.machine_drill.name=Automatic Mining Drill +container.miningDrill=Automatic Mining Drill + +tile.red_pylon.name=Electricity Pole +item.wiring_red_copper.name=Cable Drum tile.rail_highspeed.name=High Speed Rail tile.rail_booster.name=High Speed Booster Rail @@ -291,6 +297,10 @@ item.nugget_unobtainium.name=Unobtainium Nugget item.nugget_daffergon.name=Daffergon Nugget item.nugget_verticium.name=Verticium Nugget +item.ingot_desh.name=Desh Ingot +item.nugget_desh.name=Desh Nugget +item.powder_desh.name=Desh Powder + item.nugget_u235.name=U235 Nugget item.nugget_u238.name=U238 Nugget item.nugget_pu238.name=Pu238 Nugget @@ -337,6 +347,7 @@ tile.block_reiium.name=Block of Reiium tile.block_unobtainium.name=Block of Unobtainium tile.block_daffergon.name=Block of Daffergon tile.block_verticium.name=Block of Verticium +tile.block_desh.name=Reinfoced Block of Desh tile.ore_aluminium.name=Aluminium Ore tile.ore_copper.name=Copper Ore @@ -376,6 +387,7 @@ tile.reinforced_lamp_on.name=Reinforced Lamp tile.brick_concrete.name=Concrete Bricks tile.brick_obsidian.name=Obsidian Bricks tile.brick_light.name=Light Bricks +tile.asphalt.name=Asphalt tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks @@ -441,6 +453,8 @@ item.powder_dura_steel.name=High-Speed Steel Powder item.powder_polymer.name=Polymer Powder item.powder_lanthanium.name=Lanthanium Powder item.powder_actinium.name=Actinium Powder +item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder +item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder item.battery_generic.name=Battery item.battery_advanced.name=Advanced Battery @@ -461,6 +475,20 @@ item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell +item.upgrade_template.name=Machine Upgrade Piece Template +item.upgrade_speed_1.name=Red Machine Upgrade Mk.I +item.upgrade_speed_2.name=Red Machine Upgrade Mk.II +item.upgrade_speed_3.name=Red Machine Upgrade Mk.III +item.upgrade_effect_1.name=Green Machine Upgrade Mk.I +item.upgrade_effect_2.name=Green Machine Upgrade Mk.II +item.upgrade_effect_3.name=Green Machine Upgrade Mk.III +item.upgrade_power_1.name=Blue Machine Upgrade Mk.I +item.upgrade_power_2.name=Blue Machine Upgrade Mk.II +item.upgrade_power_3.name=Blue Machine Upgrade Mk.III +item.upgrade_fortune_1.name=Purple Machine Upgrade Mk.I +item.upgrade_fortune_2.name=Purple Machine Upgrade Mk.II +item.upgrade_fortune_3.name=Purple Machine Upgrade Mk.III + item.fusion_core.name=Fusion Core item.energy_core.name=Makeshift Energy Core @@ -489,6 +517,7 @@ item.ducttape.name=Duct Tape item.magnet_dee.name=Dee Magnets item.magnet_circular.name=Flat Magnet item.cyclotron_tower.name=Cyclotron Tower +item.plate_dalekanium.name=Angry Metal item.cell_empty.name=Empty Cell item.cell_uf6.name=Uranium Hexafluorite Cell @@ -521,6 +550,8 @@ item.canister_canola.name=Engine Lubricant item.canister_oil.name=Crude Oil Canister item.canister_fuel.name=Fuel Canister item.canister_kerosene.name=Kerosene Canister +item.canister_reoil.name=Canister of Reclaimed Industrial Oil +item.canister_petroil.name=Petroil Canister item.canister_napalm.name=Napalm B item.canister_NITAN.name=NITAN© 100 Octane Super Fuel item.gas_empty.name=Empty Gas Tank @@ -747,6 +778,7 @@ item.gun_jack.name=Jackhammer item.gun_spark.name=Spark Plug item.gun_hp.name=HPP Lazerjet item.gun_euthanasia.name=Euthanasia +item.gun_defabricator.name=Defabricator item.gun_revolver_iron_ammo.name=Bullet item.gun_revolver_ammo.name=Lead Bullet @@ -772,6 +804,7 @@ item.gun_jack_ammo.name=Quadruple Shotgun Shell item.gun_spark_ammo.name=Electromagnetic Cartridge item.gun_hp_ammo.name=Ink Cartridge item.gun_euthanasia_ammo.name=Syringe +item.gun_defabricator_ammo.name=Defabricator Energy Cell item.clip_revolver_iron.name=Box of Iron Rounds item.clip_revolver.name=Box of .357 Rounds @@ -814,7 +847,8 @@ entity.hbm.entity_bullet.name=Bullet entity.hbm.entity_rocket.name=Rocket entity.hbm.entity_schrabnel.name=Schrabnel entity.entity_mob_nuclear_creeper.name=Nuclear Creeper -entity.entity_mob_hunter_chopper.name=Hunter Chopper +entity.entity_mob_hunter_chopper.name=Hunter ChopperCreeper +entity.entity_cyber_crab.name=Cyber Crab item.cap_aluminium.name=Aluminium Cap item.hull_small_steel.name=Small Steel Shell diff --git a/assets/hbm/models/drill_bolt.obj b/assets/hbm/models/drill_bolt.obj new file mode 100644 index 000000000..dcf0a5d40 --- /dev/null +++ b/assets/hbm/models/drill_bolt.obj @@ -0,0 +1,1595 @@ +# Blender v2.76 (sub 0) OBJ File: 'drill_bolt.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.125000 3.000000 -0.216506 +v 0.000000 3.000000 -0.250000 +v 0.216506 3.000000 -0.125000 +v 0.250000 3.000000 0.000000 +v 0.216506 3.000000 0.125000 +v 0.125000 3.000000 0.216506 +v 0.000000 3.000000 0.250000 +v -0.125000 3.000000 0.216506 +v -0.216506 3.000000 0.125000 +v -0.250000 3.000000 0.000000 +v -0.216506 3.000000 -0.125000 +v -0.125000 3.000000 -0.216506 +v -0.125000 2.750000 -0.216506 +v -0.000000 2.750000 -0.250000 +v -0.051764 3.000000 -0.443185 +v -0.176764 3.000000 -0.409691 +v 0.125000 2.750000 -0.216506 +v 0.216506 2.750000 -0.125000 +v 0.250000 2.750000 -0.000000 +v 0.216506 2.750000 0.125000 +v 0.125000 2.750000 0.216506 +v 0.000000 2.750000 0.250000 +v -0.125000 2.750000 0.216506 +v -0.216506 2.750000 0.125000 +v -0.250000 2.750000 0.000000 +v -0.216506 2.750000 -0.125000 +v -0.266421 2.750000 -0.357928 +v -0.357928 2.750000 -0.266421 +v 0.443185 3.000000 0.051764 +v 0.409692 3.000000 0.176764 +v 0.443185 2.750000 -0.051764 +v 0.409692 2.750000 -0.176764 +v -0.266421 3.000000 0.357928 +v -0.357928 3.000000 0.266421 +v -0.176764 2.750000 0.409692 +v -0.051764 2.750000 0.443185 +v 0.125000 2.500000 -0.216506 +v -0.000000 2.500000 -0.250000 +v -0.125000 2.500000 -0.216506 +v -0.216506 2.500000 -0.125000 +v 0.216506 2.500000 -0.125000 +v 0.250000 2.500000 -0.000000 +v 0.216506 2.500000 0.125000 +v 0.125000 2.500000 0.216506 +v 0.000000 2.500000 0.250000 +v -0.125000 2.500000 0.216506 +v -0.216506 2.500000 0.125000 +v -0.250000 2.500000 0.000000 +v -0.409692 2.500000 -0.176764 +v -0.443185 2.500000 -0.051763 +v 0.266421 2.500000 -0.357928 +v 0.357928 2.500000 -0.266421 +v 0.176764 2.500000 0.409691 +v 0.051764 2.500000 0.443185 +v -0.000000 2.250000 -0.250000 +v -0.125000 2.250000 -0.216506 +v -0.216506 2.250000 -0.125000 +v -0.250000 2.250000 0.000000 +v 0.125000 2.250000 -0.216506 +v 0.216506 2.250000 -0.125000 +v 0.250000 2.250000 -0.000000 +v 0.216506 2.250000 0.125000 +v 0.125000 2.250000 0.216506 +v 0.000000 2.250000 0.250000 +v -0.125000 2.250000 0.216506 +v -0.216506 2.250000 0.125000 +v -0.443185 2.250000 0.051764 +v -0.409691 2.250000 0.176764 +v 0.051764 2.250000 -0.443185 +v 0.176764 2.250000 -0.409692 +v 0.357928 2.250000 0.266421 +v 0.266422 2.250000 0.357928 +v -0.125000 2.000000 -0.216506 +v -0.216506 2.000000 -0.125000 +v -0.250000 2.000000 0.000000 +v -0.216506 2.000000 0.125000 +v -0.000000 2.000000 -0.250000 +v 0.125000 2.000000 -0.216506 +v 0.216506 2.000000 -0.125000 +v 0.250000 2.000000 -0.000000 +v 0.216506 2.000000 0.125000 +v 0.125000 2.000000 0.216506 +v 0.000000 2.000000 0.250000 +v -0.125000 2.000000 0.216507 +v -0.357928 2.000000 0.266422 +v -0.266421 2.000000 0.357928 +v -0.176764 2.000000 -0.409691 +v -0.051764 2.000000 -0.443185 +v 0.443185 2.000000 0.051763 +v 0.409692 2.000000 0.176763 +v -0.216506 1.750000 -0.125000 +v -0.250000 1.750000 0.000000 +v -0.216506 1.750000 0.125000 +v -0.125000 1.750000 0.216506 +v -0.125000 1.750000 -0.216506 +v -0.000000 1.750000 -0.250000 +v 0.125000 1.750000 -0.216506 +v 0.216506 1.750000 -0.125000 +v 0.250000 1.750000 -0.000000 +v 0.216506 1.750000 0.125000 +v 0.125000 1.750000 0.216506 +v 0.000000 1.750000 0.250000 +v -0.176764 1.750000 0.409692 +v -0.051763 1.750000 0.443185 +v -0.357928 1.750000 -0.266421 +v -0.266422 1.750000 -0.357927 +v 0.409691 1.750000 -0.176764 +v 0.443185 1.750000 -0.051764 +v -0.250000 1.500000 0.000000 +v -0.216506 1.500000 0.125000 +v -0.125000 1.500000 0.216506 +v 0.000000 1.500000 0.250000 +v -0.216506 1.500000 -0.125000 +v -0.125000 1.500000 -0.216506 +v -0.000000 1.500000 -0.250000 +v 0.125000 1.500000 -0.216506 +v 0.216506 1.500000 -0.125000 +v 0.250000 1.500000 -0.000000 +v 0.216506 1.500000 0.125000 +v 0.125000 1.500000 0.216506 +v 0.051764 1.500000 0.443185 +v 0.176764 1.500000 0.409691 +v -0.443185 1.500000 -0.051763 +v -0.409692 1.500000 -0.176763 +v 0.266421 1.500000 -0.357928 +v 0.357927 1.500000 -0.266422 +v -0.216506 1.250000 0.125000 +v -0.125000 1.250000 0.216506 +v 0.000000 1.250000 0.250000 +v 0.125000 1.250000 0.216506 +v -0.250000 1.250000 0.000000 +v -0.216506 1.250000 -0.125000 +v -0.125000 1.250000 -0.216506 +v -0.000000 1.250000 -0.250000 +v 0.125000 1.250000 -0.216506 +v 0.216506 1.250000 -0.125000 +v 0.250000 1.250000 -0.000000 +v 0.216507 1.250000 0.125000 +v 0.266422 1.250000 0.357928 +v 0.357928 1.250000 0.266421 +v -0.409691 1.250000 0.176764 +v -0.443185 1.250000 0.051764 +v 0.051763 1.250000 -0.443185 +v 0.176763 1.250000 -0.409692 +v -0.125000 1.000000 0.216506 +v 0.000000 1.000000 0.250000 +v 0.125000 1.000000 0.216506 +v 0.216506 1.000000 0.125000 +v -0.216506 1.000000 0.125000 +v -0.250000 1.000000 0.000000 +v -0.216506 1.000000 -0.125000 +v -0.125000 1.000000 -0.216506 +v -0.000000 1.000000 -0.250000 +v 0.125000 1.000000 -0.216506 +v 0.216506 1.000000 -0.125000 +v 0.250000 1.000000 -0.000000 +v 0.409692 1.000000 0.176763 +v 0.443185 1.000000 0.051763 +v -0.266421 1.000000 0.357928 +v -0.357927 1.000000 0.266422 +v -0.176764 1.000000 -0.409691 +v -0.051764 1.000000 -0.443185 +v 0.000000 0.750000 0.250000 +v 0.125000 0.750000 0.216506 +v 0.216506 0.750000 0.125000 +v 0.250000 0.750000 -0.000000 +v -0.125000 0.750000 0.216506 +v -0.216506 0.750000 0.125000 +v -0.250000 0.750000 0.000000 +v -0.216506 0.750000 -0.125000 +v -0.125000 0.750000 -0.216506 +v -0.000000 0.750000 -0.250000 +v 0.125000 0.750000 -0.216506 +v 0.216506 0.750000 -0.125000 +v 0.443185 0.750000 -0.051764 +v 0.409691 0.750000 -0.176764 +v -0.051763 0.750000 0.443185 +v -0.176763 0.750000 0.409692 +v -0.357928 0.750000 -0.266421 +v -0.266422 0.750000 -0.357927 +v 0.125000 0.500000 0.216506 +v 0.216506 0.500000 0.125000 +v 0.250000 0.500000 -0.000000 +v 0.216506 0.500000 -0.125000 +v 0.000000 0.500000 0.250000 +v -0.125000 0.500000 0.216506 +v -0.216506 0.500000 0.125000 +v -0.250000 0.500000 0.000000 +v -0.216507 0.500000 -0.125000 +v -0.125000 0.500000 -0.216506 +v -0.000000 0.500000 -0.250000 +v 0.125000 0.500000 -0.216507 +v 0.357927 0.500000 -0.266422 +v 0.266421 0.500000 -0.357928 +v 0.176764 0.500000 0.409691 +v 0.051764 0.500000 0.443185 +v -0.443185 0.500000 -0.051763 +v -0.409692 0.500000 -0.176763 +v 0.216506 0.250000 0.125000 +v 0.250000 0.250000 -0.000000 +v 0.216506 0.250000 -0.125000 +v 0.125000 0.250000 -0.216506 +v 0.125000 0.250000 0.216506 +v 0.000000 0.250000 0.250000 +v -0.125000 0.250000 0.216507 +v -0.216506 0.250000 0.125000 +v -0.250000 0.250000 0.000000 +v -0.216507 0.250000 -0.125000 +v -0.125000 0.250000 -0.216506 +v -0.000001 0.250000 -0.250000 +v 0.176763 0.250000 -0.409692 +v 0.051763 0.250000 -0.443185 +v 0.357928 0.250000 0.266421 +v 0.266422 0.250000 0.357927 +v -0.409691 0.250000 0.176765 +v -0.443185 0.250000 0.051765 +v 0.250000 0.000000 -0.000000 +v 0.216506 0.000000 -0.125000 +v 0.125000 0.000000 -0.216506 +v -0.000000 0.000000 -0.250000 +v 0.216506 0.000000 0.125000 +v 0.125000 0.000000 0.216506 +v 0.000000 0.000000 0.250000 +v -0.125000 0.000000 0.216507 +v -0.216506 0.000000 0.125000 +v -0.250000 0.000000 0.000001 +v -0.216507 0.000000 -0.125000 +v -0.125000 0.000000 -0.216506 +v -0.051765 0.000000 -0.443185 +v -0.176765 0.000000 -0.409691 +v 0.443185 0.000000 0.051763 +v 0.409692 0.000000 0.176763 +v -0.266421 0.000000 0.357928 +v -0.357927 0.000000 0.266422 +vt 0.734654 0.961016 +vt 0.705579 0.975604 +vt 0.705579 0.902663 +vt 0.255629 0.062086 +vt 0.364401 0.091333 +vt 0.284775 0.171236 +vt 0.186790 0.125104 +vt 0.186790 0.091333 +vt 0.238802 0.091333 +vt 0.647427 0.624623 +vt 0.671421 0.602614 +vt 0.671421 0.691005 +vt 0.885455 0.327893 +vt 0.856379 0.342481 +vt 0.856379 0.269539 +vt 0.734654 0.902663 +vt 0.763730 0.888074 +vt 0.763730 0.961016 +vt 0.840715 0.160472 +vt 0.811640 0.175060 +vt 0.811640 0.102118 +vt 0.796471 0.727603 +vt 0.825547 0.713014 +vt 0.825547 0.785956 +vt 0.758571 0.132409 +vt 0.782564 0.110400 +vt 0.782564 0.198791 +vt 0.146287 0.925935 +vt 0.117211 0.940524 +vt 0.117211 0.867582 +vt 0.439954 0.627453 +vt 0.463948 0.605444 +vt 0.463948 0.693835 +vt 0.087681 0.836936 +vt 0.058606 0.851525 +vt 0.058606 0.778583 +vt 0.640691 0.962303 +vt 0.611615 0.976891 +vt 0.611615 0.903950 +vt 0.490791 0.410204 +vt 0.443651 0.429303 +vt 0.432186 0.341922 +vt 0.811640 0.072942 +vt 0.782564 0.087530 +vt 0.782564 0.014588 +vt 0.796471 0.785956 +vt 0.767395 0.800544 +vt 0.767395 0.727603 +vt 0.617057 0.254951 +vt 0.667297 0.262750 +vt 0.658587 0.334853 +vt 0.029076 0.865793 +vt 0.058151 0.851205 +vt 0.058151 0.924147 +vt 0.782564 0.088391 +vt 0.758571 0.110400 +vt 0.758571 0.022009 +vt 0.373580 0.199551 +vt 0.344435 0.216436 +vt 0.318429 0.171236 +vt 0.599637 0.334853 +vt 0.549397 0.342652 +vt 0.558107 0.254951 +vt 0.811640 0.014588 +vt 0.840715 0.000000 +vt 0.840715 0.072942 +vt 0.304001 0.371690 +vt 0.256861 0.390788 +vt 0.245396 0.303408 +vt 0.647427 0.779823 +vt 0.623434 0.801832 +vt 0.623434 0.713440 +vt 0.318429 0.045200 +vt 0.344435 0.000000 +vt 0.373580 0.016886 +vt 0.725867 0.079902 +vt 0.675627 0.087700 +vt 0.684337 0.000000 +vt 0.854622 0.785956 +vt 0.825547 0.800544 +vt 0.825547 0.727603 +vt 0.175817 0.371690 +vt 0.128677 0.390788 +vt 0.117211 0.303408 +vt 0.029076 0.836617 +vt 0.000000 0.851205 +vt 0.000000 0.778263 +vt 0.058606 0.546041 +vt 0.011466 0.565140 +vt 0.000000 0.477760 +vt 0.608347 0.406956 +vt 0.798572 0.443891 +vt 0.827648 0.429303 +vt 0.827648 0.502245 +vt 0.482873 0.338010 +vt 0.450138 0.254951 +vt 0.734577 0.152004 +vt 0.245396 0.751999 +vt 0.274471 0.737410 +vt 0.274471 0.810352 +vt 0.296083 0.299495 +vt 0.263348 0.216436 +vt 0.146287 0.838405 +vt 0.117211 0.852994 +vt 0.117211 0.780052 +vt 0.608347 0.342651 +vt 0.667297 0.406956 +vt 0.167899 0.299495 +vt 0.135164 0.216436 +vt 0.647427 0.727603 +vt 0.676503 0.713014 +vt 0.676503 0.785956 +vt 0.587621 0.713440 +vt 0.611615 0.691432 +vt 0.611615 0.779823 +vt 0.233968 0.836617 +vt 0.204893 0.851205 +vt 0.204893 0.778263 +vt 0.199811 0.675284 +vt 0.223804 0.653275 +vt 0.223804 0.741666 +vt 0.854622 0.961016 +vt 0.825547 0.975604 +vt 0.825547 0.902663 +vt 0.695415 0.691005 +vt 0.671421 0.713014 +vt 0.671421 0.624623 +vt 0.667297 0.342652 +vt 0.717537 0.334853 +vt 0.726247 0.406956 +vt 0.914530 0.269539 +vt 0.943606 0.254951 +vt 0.943606 0.327893 +vt 0.023994 0.741666 +vt 0.000000 0.763675 +vt 0.000000 0.675284 +vt 0.676007 0.254951 +vt 0.726247 0.262750 +vt 0.487941 0.693835 +vt 0.463948 0.715844 +vt 0.463948 0.627453 +vt 0.058151 0.836617 +vt 0.029076 0.851205 +vt 0.029076 0.778263 +vt 0.234423 0.546041 +vt 0.187283 0.565140 +vt 0.175817 0.477759 +vt 0.557727 0.155253 +vt 0.510587 0.174352 +vt 0.499121 0.086971 +vt 0.469030 0.963845 +vt 0.439954 0.978434 +vt 0.439954 0.905492 +vt 0.254106 0.564099 +vt 0.304346 0.571898 +vt 0.295635 0.644001 +vt 0.714326 0.727603 +vt 0.743402 0.713014 +vt 0.743402 0.785956 +vt 0.750585 0.517694 +vt 0.726592 0.539703 +vt 0.726592 0.451312 +vt 0.303547 0.810352 +vt 0.274471 0.824940 +vt 0.274471 0.751999 +vt 0.676503 0.727603 +vt 0.705579 0.713014 +vt 0.705579 0.785956 +vt 0.313056 0.390788 +vt 0.363296 0.398587 +vt 0.354585 0.470690 +vt 0.791389 0.617203 +vt 0.820465 0.602614 +vt 0.820464 0.675556 +vt 0.469030 0.788786 +vt 0.439954 0.803374 +vt 0.439954 0.730432 +vt 0.305887 0.576859 +vt 0.355109 0.564099 +vt 0.355109 0.652234 +vt 1.000000 0.961016 +vt 0.970924 0.975604 +vt 0.970924 0.902663 +vt 0.328339 0.674243 +vt 0.352333 0.652234 +vt 0.352333 0.740625 +vt 0.423998 0.690749 +vt 0.373236 0.687988 +vt 0.374777 0.615374 +vt 0.957018 0.014588 +vt 0.986093 0.000000 +vt 0.986093 0.072942 +vt 0.226504 0.473847 +vt 0.193769 0.390788 +vt 0.549809 0.083058 +vt 0.517074 0.000000 +vt 0.519867 0.874773 +vt 0.490791 0.889362 +vt 0.490791 0.816420 +vt 0.245396 0.651800 +vt 0.304346 0.716104 +vt 0.676503 0.873486 +vt 0.647427 0.888074 +vt 0.647427 0.815133 +vt 0.743402 0.624623 +vt 0.767395 0.602614 +vt 0.767395 0.691005 +vt 0.869791 0.072942 +vt 0.840715 0.087530 +vt 0.840715 0.014588 +vt 0.883698 0.873486 +vt 0.854622 0.888074 +vt 0.854622 0.815133 +vt 0.304346 0.478489 +vt 0.363296 0.542793 +vt 0.058606 0.866113 +vt 0.087681 0.851525 +vt 0.087681 0.924466 +vt 0.640691 0.874773 +vt 0.611615 0.889362 +vt 0.611615 0.816420 +vt 0.050687 0.473847 +vt 0.017952 0.390788 +vt 0.548943 0.816420 +vt 0.578018 0.801832 +vt 0.578018 0.874773 +vt 0.401586 0.000000 +vt 0.440516 0.017026 +vt 0.424375 0.086341 +vt 0.245396 0.927058 +vt 0.274471 0.912470 +vt 0.274471 0.985412 +vt 0.109293 0.299495 +vt 0.058606 0.303408 +vt 0.076558 0.216436 +vt 0.616677 0.152004 +vt 0.579899 0.173311 +vt 0.557727 0.087700 +vt 0.117211 0.371690 +vt 0.070071 0.390788 +vt 0.994918 0.675556 +vt 0.965842 0.690144 +vt 0.965842 0.617202 +vt 0.167974 0.655064 +vt 0.117211 0.652303 +vt 0.118753 0.579689 +vt 0.912773 0.961016 +vt 0.883698 0.975604 +vt 0.883698 0.902663 +vt 0.047987 0.741666 +vt 0.023994 0.763675 +vt 0.023994 0.675284 +vt 1.000000 0.873486 +vt 0.970924 0.888074 +vt 0.970924 0.815133 +vt 0.856723 0.502245 +vt 0.827648 0.516833 +vt 0.827648 0.443891 +vt 0.381946 0.429303 +vt 0.432186 0.437102 +vt 0.423475 0.509205 +vt 0.578018 0.962303 +vt 0.548943 0.976892 +vt 0.548943 0.903950 +vt 0.782564 0.102118 +vt 0.811640 0.087530 +vt 0.811640 0.160472 +vt 0.362607 0.371690 +vt 0.315467 0.390788 +vt 0.304001 0.303408 +vt 0.116757 0.836936 +vt 0.087681 0.778583 +vt 0.421223 0.779140 +vt 0.397229 0.801149 +vt 0.397229 0.712758 +vt 0.303547 0.897882 +vt 0.274471 0.839528 +vt 0.402311 0.961621 +vt 0.373236 0.976209 +vt 0.373236 0.903267 +vt 0.106593 0.741986 +vt 0.082599 0.763995 +vt 0.082599 0.675604 +vt 0.849540 0.617202 +vt 0.878616 0.602614 +vt 0.878616 0.675556 +vt 0.373580 0.084254 +vt 0.423790 0.158969 +vt 0.714326 0.815133 +vt 0.743402 0.800544 +vt 0.743402 0.873486 +vt 0.117211 0.677073 +vt 0.141205 0.655064 +vt 0.141205 0.743455 +vt 0.175362 0.838405 +vt 0.146287 0.852994 +vt 0.146287 0.780052 +vt 0.869791 0.102118 +vt 0.898867 0.087530 +vt 0.898867 0.160472 +vt 0.373236 0.517003 +vt 0.432186 0.581307 +vt 0.898867 0.072942 +vt 0.869791 0.087530 +vt 0.869791 0.014588 +vt 0.912773 0.815133 +vt 0.941849 0.800544 +vt 0.941849 0.873486 +vt 0.354689 0.299495 +vt 0.321954 0.216436 +vt 0.943950 0.502245 +vt 0.914875 0.516833 +vt 0.914875 0.443891 +vt 0.397229 0.779140 +vt 0.373236 0.801149 +vt 0.373236 0.712758 +vt 0.820465 0.617203 +vt 0.849540 0.602614 +vt 0.849540 0.675556 +vt 0.458468 0.000000 +vt 0.499121 0.012321 +vt 0.491203 0.083058 +vt 0.719408 0.691005 +vt 0.695415 0.713014 +vt 0.695415 0.624623 +vt 0.798228 0.269539 +vt 0.827303 0.254951 +vt 0.827303 0.327893 +vt 0.970924 0.785956 +vt 0.941849 0.727603 +vt 0.970924 0.727603 +vt 1.000000 0.713014 +vt 1.000000 0.785956 +vt 0.587621 0.779823 +vt 0.563628 0.801832 +vt 0.563628 0.713441 +vt 0.323257 0.777223 +vt 0.352333 0.762634 +vt 0.352333 0.835576 +vt 0.827303 0.269539 +vt 0.856379 0.254951 +vt 0.856379 0.327893 +vt 0.167974 0.566929 +vt 0.117211 0.564168 +vt 0.118753 0.491554 +vt 0.146287 0.867582 +vt 0.175362 0.852994 +vt 0.175362 0.925935 +vt 0.274471 0.897882 +vt 0.245396 0.912470 +vt 0.245396 0.839528 +vt 0.001541 0.577900 +vt 0.050763 0.565140 +vt 0.050763 0.653275 +vt 0.854622 0.873486 +vt 0.825547 0.888074 +vt 0.825547 0.815133 +vt 0.774579 0.451312 +vt 0.798572 0.429303 +vt 0.798572 0.517694 +vt 0.927942 0.014588 +vt 0.957018 0.000000 +vt 0.957018 0.072942 +vt 0.440516 0.086971 +vt 0.499121 0.155253 +vt 0.743402 0.691005 +vt 0.719408 0.713014 +vt 0.719408 0.624623 +vt 0.883698 0.727603 +vt 0.912773 0.713014 +vt 0.912773 0.785956 +vt 0.607967 0.079902 +vt 0.566437 0.000000 +vt 0.177358 0.577900 +vt 0.226580 0.565140 +vt 0.226580 0.653275 +vt 0.402311 0.815737 +vt 0.431387 0.801149 +vt 0.431387 0.874091 +vt 0.796471 0.961016 +vt 0.767395 0.975604 +vt 0.767395 0.902663 +vt 0.854622 0.902663 +vt 0.883698 0.888074 +vt 0.883698 0.961016 +vt 0.373580 0.341922 +vt 0.424268 0.338010 +vt 0.432186 0.410204 +vt 0.204893 0.836617 +vt 0.175817 0.851205 +vt 0.175817 0.778263 +vt 0.391533 0.254951 +vt 0.432186 0.267273 +vt 0.986093 0.160472 +vt 0.957018 0.175060 +vt 0.957018 0.102118 +vt 0.578018 0.903950 +vt 0.607094 0.889362 +vt 0.607094 0.962303 +vt 0.304346 0.542793 +vt 0.267568 0.564099 +vt 0.245396 0.478489 +vt 0.705579 0.873486 +vt 0.676503 0.888074 +vt 0.676503 0.815133 +vt 0.750585 0.451312 +vt 0.774579 0.429303 +vt 0.774579 0.517694 +vt 0.274471 0.927058 +vt 0.303547 0.912470 +vt 0.303547 0.985412 +vt 0.508744 0.254951 +vt 0.549397 0.267273 +vt 0.541479 0.338010 +vt 0.304346 0.674243 +vt 0.328339 0.652234 +vt 0.328339 0.740625 +vt 0.825547 0.873486 +vt 0.796471 0.888074 +vt 0.796471 0.815133 +vt 0.667641 0.581308 +vt 0.630863 0.602614 +vt 0.608691 0.517003 +vt 0.675627 0.152004 +vt 0.638849 0.173311 +vt 0.616677 0.087700 +vt 0.973026 0.502245 +vt 0.943950 0.516833 +vt 0.943950 0.443891 +vt 0.374741 0.172381 +vt 0.440516 0.229634 +vt 0.767395 0.624623 +vt 0.791389 0.602614 +vt 0.791389 0.691005 +vt 0.519867 0.962303 +vt 0.490791 0.976892 +vt 0.490791 0.903950 +vt 0.726592 0.581308 +vt 0.689813 0.602614 +vt 0.667641 0.517003 +vt 0.941849 0.785956 +vt 0.912773 0.800544 +vt 0.912773 0.727603 +vt 0.295635 0.470690 +vt 0.254106 0.390788 +vt 0.431387 0.961621 +vt 0.402311 0.976209 +vt 0.402311 0.903267 +vt 0.750241 0.276960 +vt 0.774234 0.254951 +vt 0.774234 0.343342 +vt 0.883698 0.785956 +vt 0.854622 0.800544 +vt 0.854622 0.727603 +vt 0.490791 0.341922 +vt 0.549397 0.410204 +vt 0.750241 0.343342 +vt 0.726247 0.365351 +vt 0.726247 0.276960 +vt 0.883698 0.815133 +vt 0.912773 0.873486 +vt 0.658931 0.509205 +vt 0.617402 0.429303 +vt 0.666917 0.079902 +vt 0.625387 0.000000 +vt 0.941849 0.902663 +vt 0.970924 0.961016 +vt 0.490717 0.605444 +vt 0.439954 0.602683 +vt 0.441496 0.530069 +vt 0.907691 0.675556 +vt 0.878616 0.690144 +vt 0.878616 0.617202 +vt 0.514785 0.713441 +vt 0.538778 0.691432 +vt 0.538778 0.779823 +vt 0.373236 0.815737 +vt 0.402311 0.801149 +vt 0.402311 0.874091 +vt 0.175817 0.675284 +vt 0.199811 0.653275 +vt 0.199811 0.741666 +vt 0.058606 0.477759 +vt 0.109293 0.473847 +vt 0.117211 0.546041 +vt 0.936767 0.675556 +vt 0.907691 0.690144 +vt 0.907691 0.617202 +vt 0.539634 0.713441 +vt 0.563628 0.691432 +vt 0.563628 0.779823 +vt 0.352333 0.923106 +vt 0.323257 0.937694 +vt 0.323257 0.864753 +vt 0.076558 0.390788 +vt 0.117211 0.403110 +vt 0.734577 0.022009 +vt 0.758571 0.000000 +vt 0.758571 0.088391 +vt 0.204893 0.924147 +vt 0.175817 0.938735 +vt 0.175817 0.865793 +vt 0.608691 0.581308 +vt 0.571913 0.602614 +vt 0.549741 0.517003 +vt 0.549741 0.581308 +vt 0.512963 0.602614 +vt 0.490791 0.517003 +vt 0.000000 0.865793 +vt 0.029076 0.924147 +vt 0.017952 0.216436 +vt 0.058606 0.228758 +vt 0.050688 0.299495 +vt 0.914530 0.327893 +vt 0.885455 0.342481 +vt 0.885455 0.269540 +vt 0.082599 0.741986 +vt 0.058606 0.763995 +vt 0.058606 0.675604 +vt 0.970924 0.873486 +vt 0.941849 0.888074 +vt 0.941849 0.815133 +vt 0.957018 0.160472 +vt 0.927942 0.175060 +vt 0.927942 0.102118 +vt 0.204742 0.216436 +vt 0.245396 0.228758 +vt 0.237478 0.299495 +vt 0.914875 0.502245 +vt 0.885799 0.516833 +vt 0.885799 0.443891 +vt 0.116757 0.924466 +vt 0.087681 0.939055 +vt 0.087681 0.866113 +vt 0.758571 0.198791 +vt 0.734577 0.220801 +vt 0.734577 0.132409 +vt 0.647427 0.691432 +vt 0.605129 0.687641 +vt 0.598584 0.616762 +vt 0.607094 0.874773 +vt 0.578018 0.889362 +vt 0.578018 0.816420 +vt 0.840716 0.102118 +vt 0.869791 0.160472 +vt 0.599981 0.509205 +vt 0.558452 0.429303 +vt 0.541031 0.509205 +vt 0.499502 0.429303 +vt 0.204893 0.865793 +vt 0.233968 0.851205 +vt 0.233968 0.924147 +vt 0.000000 0.303408 +vt 0.058606 0.371690 +vt 0.972681 0.327893 +vt 0.943606 0.342481 +vt 0.943606 0.269539 +vt 0.165198 0.743455 +vt 0.141205 0.765464 +vt 0.141205 0.677073 +vt 0.705579 0.961016 +vt 0.676503 0.975604 +vt 0.676503 0.902663 +vt 0.856723 0.443891 +vt 0.885799 0.429303 +vt 0.885799 0.502245 +vt 0.186790 0.303408 +vt 0.245396 0.371689 +vt 0.796471 0.873486 +vt 0.767395 0.888074 +vt 0.767395 0.815133 +vt 0.825547 0.961016 +vt 0.796471 0.975604 +vt 0.796471 0.902662 +vt 0.717881 0.509205 +vt 0.676352 0.429303 +vt 0.676503 0.961016 +vt 0.647427 0.975604 +vt 0.647427 0.902663 +vt 0.052012 0.091333 +vt 0.052012 0.125104 +vt 0.000000 0.125104 +vt 0.160784 0.062086 +vt 0.131639 0.171236 +vt 0.157645 0.000000 +vt 0.186790 0.016886 +vt 0.160784 0.154351 +vt 0.186790 0.199551 +vt 0.157645 0.216436 +vt 0.119588 0.406202 +vt 0.159179 0.390788 +vt 0.168049 0.478794 +vt 0.068249 0.576479 +vt 0.109185 0.565140 +vt 0.109185 0.653595 +vt 0.519867 0.816420 +vt 0.548943 0.801832 +vt 0.548943 0.874773 +vt 0.598584 0.691432 +vt 0.556286 0.687641 +vt 0.549741 0.616762 +vt 0.927942 0.160472 +vt 0.898867 0.175060 +vt 0.898867 0.102118 +vt 0.774234 0.276960 +vt 0.798228 0.254951 +vt 0.798228 0.343342 +vt 0.912773 0.902663 +vt 0.941849 0.961016 +vt 0.965842 0.675556 +vt 0.936767 0.690144 +vt 0.936767 0.617202 +vt 0.539634 0.691432 +vt 0.497336 0.687641 +vt 0.490791 0.616762 +vt 0.469030 0.876316 +vt 0.439954 0.890904 +vt 0.439954 0.817962 +vt 0.519867 0.903950 +vt 0.548943 0.889362 +vt 0.548942 0.962303 +vt 0.442331 0.444717 +vt 0.481922 0.429303 +vt 0.490791 0.517309 +vt 0.898867 0.014588 +vt 0.927942 0.000000 +vt 0.927942 0.072942 +vt 0.514785 0.779823 +vt 0.490791 0.801832 +vt 0.490791 0.713441 +vt 0.734654 0.888074 +vt 0.255629 0.154351 +vt 0.238802 0.125104 +vt 0.284775 0.045200 +vt 0.347574 0.062086 +vt 0.364401 0.125104 +vt 0.347574 0.154350 +vt 0.647427 0.713014 +vt 0.885455 0.254951 +vt 0.734654 0.975604 +vt 0.796471 0.800544 +vt 0.758571 0.220800 +vt 0.439954 0.715844 +vt 0.087681 0.763995 +vt 0.640691 0.889362 +vt 0.811640 0.000000 +vt 0.796471 0.713014 +vt 0.029076 0.938735 +vt 0.782564 0.000000 +vt 0.608347 0.262750 +vt 0.734577 0.007799 +vt 0.854622 0.713014 +vt 0.029076 0.763675 +vt 0.571569 0.428262 +vt 0.798572 0.516833 +vt 0.490791 0.267273 +vt 0.697799 0.173311 +vt 0.245396 0.824940 +vt 0.304001 0.228758 +vt 0.146287 0.765464 +vt 0.630519 0.428262 +vt 0.175817 0.228758 +vt 0.647427 0.800544 +vt 0.587621 0.801832 +vt 0.233968 0.763675 +vt 0.199811 0.763675 +vt 0.695415 0.602614 +vt 0.689469 0.428262 +vt 0.914530 0.342481 +vt 0.023994 0.653275 +vt 0.487941 0.605444 +vt 0.058151 0.763675 +vt 0.469030 0.890904 +vt 0.714326 0.800544 +vt 0.750585 0.429303 +vt 0.303547 0.737410 +vt 0.676503 0.800544 +vt 0.791389 0.690144 +vt 0.469030 0.715844 +vt 0.304346 0.649474 +vt 1.000000 0.888074 +vt 0.328339 0.762634 +vt 0.423998 0.602614 +vt 0.957018 0.087530 +vt 0.234423 0.403110 +vt 0.557727 0.012321 +vt 0.519867 0.801832 +vt 0.267568 0.737410 +vt 0.869791 0.000000 +vt 0.883698 0.800544 +vt 0.326518 0.564099 +vt 0.058606 0.939055 +vt 0.640691 0.801832 +vt 0.058606 0.403110 +vt 0.245396 1.000000 +vt 0.117211 0.228758 +vt 0.994918 0.602614 +vt 0.912773 0.888074 +vt 0.047987 0.653275 +vt 1.000000 0.800544 +vt 0.856723 0.429303 +vt 0.782564 0.175060 +vt 0.116757 0.763995 +vt 0.421223 0.690749 +vt 0.303547 0.824940 +vt 0.402311 0.888679 +vt 0.106593 0.653595 +vt 0.849540 0.690144 +vt 0.714326 0.888074 +vt 0.117211 0.765464 +vt 0.175362 0.765464 +vt 0.869791 0.175060 +vt 0.395408 0.602614 +vt 0.898867 0.000000 +vt 0.362607 0.228758 +vt 0.943950 0.429303 +vt 0.397229 0.690749 +vt 0.820465 0.690144 +vt 0.719408 0.602614 +vt 0.798228 0.342481 +vt 0.970924 0.713014 +vt 0.970924 0.800544 +vt 0.587621 0.691432 +vt 0.323257 0.850164 +vt 0.827303 0.342481 +vt 0.146287 0.940524 +vt 0.000000 0.650514 +vt 0.774579 0.539703 +vt 0.927942 0.087530 +vt 0.451981 0.174352 +vt 0.743402 0.602614 +vt 0.616677 0.007799 +vt 0.175817 0.650514 +vt 0.854622 0.975604 +vt 0.385046 0.429303 +vt 0.204893 0.763675 +vt 0.986093 0.087530 +vt 0.578018 0.976892 +vt 0.705579 0.800544 +vt 0.750585 0.539703 +vt 0.274471 1.000000 +vt 0.304346 0.762634 +vt 0.973026 0.429303 +vt 0.406355 0.254951 +vt 0.767395 0.713014 +vt 0.519867 0.889362 +vt 0.941849 0.713014 +vt 0.304346 0.398587 +vt 0.431387 0.888679 +vt 0.750241 0.365351 +vt 0.883698 0.713014 +vt 0.502257 0.429303 +vt 0.750241 0.254951 +vt 0.667641 0.437102 +vt 0.675627 0.007799 +vt 0.941849 0.975604 +vt 0.490717 0.517309 +vt 0.907691 0.602614 +vt 0.514785 0.801832 +vt 0.373236 0.888679 +vt 0.175817 0.763675 +vt 0.070071 0.565140 +vt 0.936767 0.602614 +vt 0.539634 0.801832 +vt 0.352333 0.850164 +vt 0.734577 0.110400 +vt 0.000000 0.938735 +vt 0.914530 0.254951 +vt 0.082599 0.653595 +vt 0.914875 0.429303 +vt 0.116757 0.851525 +vt 0.647427 0.602614 +vt 0.607094 0.801832 +vt 0.840715 0.175060 +vt 0.608691 0.437102 +vt 0.549741 0.437102 +vt 0.204893 0.938735 +vt 0.011466 0.390788 +vt 0.972681 0.254951 +vt 0.165198 0.655064 +vt 0.705579 0.888074 +vt 0.856723 0.516833 +vt 0.198256 0.390788 +vt 0.726592 0.437102 +vt 0.000000 0.091333 +vt 0.068839 0.062086 +vt 0.097984 0.045200 +vt 0.131639 0.045200 +vt 0.177611 0.091333 +vt 0.177611 0.125104 +vt 0.097985 0.171236 +vt 0.068839 0.154351 +vt 0.117211 0.478794 +vt 0.058606 0.648462 +vt 0.598584 0.602614 +vt 0.774234 0.365351 +vt 0.912773 0.975604 +vt 0.965842 0.602614 +vt 0.539634 0.602614 +vt 0.469030 0.803374 +vt 0.519867 0.976892 +vt 0.439954 0.517309 +vt 0.514785 0.691432 +vn 0.707100 0.000000 0.707100 +vn 0.000000 1.000000 0.000000 +vn -0.703100 -0.106600 -0.703100 +vn 0.965900 -0.000000 -0.258800 +vn 0.258800 -0.000000 0.965900 +vn -0.258800 -0.000000 0.965900 +vn 0.257300 -0.106600 0.960400 +vn 0.258800 0.000000 -0.965900 +vn -0.257300 -0.106600 -0.960400 +vn -0.965900 0.000000 0.258800 +vn 0.707100 0.000000 -0.707100 +vn -0.736600 0.646900 0.197400 +vn -0.965900 0.000000 -0.258800 +vn 0.857800 -0.459700 -0.229900 +vn -0.707100 0.000000 -0.707100 +vn 0.960400 -0.106600 0.257300 +vn 0.197400 -0.646900 0.736600 +vn 0.197400 0.646900 -0.736600 +vn -0.703100 -0.106600 0.703100 +vn -0.736600 -0.646900 -0.197400 +vn 0.965900 -0.000000 0.258800 +vn 0.539200 0.646900 0.539200 +vn -0.539200 0.646900 -0.539200 +vn 0.229900 -0.459700 0.857800 +vn -0.539200 0.646900 0.539200 +vn -0.857800 -0.459700 -0.229900 +vn -0.197400 0.646900 -0.736600 +vn -0.258800 -0.000000 -0.965900 +vn 0.628000 -0.459700 -0.628000 +vn 0.736600 0.646900 0.197400 +vn -0.707100 0.000000 0.707100 +vn 0.960400 -0.106600 -0.257300 +vn -0.257300 -0.106600 0.960400 +vn -0.960400 -0.106600 0.257300 +vn -0.628000 -0.459700 0.628000 +vn 0.703100 -0.106600 0.703100 +vn -0.857800 -0.459700 0.229900 +vn -0.960400 -0.106600 -0.257300 +vn 0.736600 0.646900 -0.197400 +vn -0.197400 0.646900 0.736600 +vn 0.229800 -0.459700 -0.857800 +vn 0.703100 -0.106600 -0.703100 +vn 0.628000 -0.459700 0.628000 +vn -0.229800 -0.459700 0.857800 +vn 0.539200 0.646900 -0.539200 +vn 0.197400 0.646900 0.736600 +vn -0.229900 -0.459700 -0.857800 +vn 0.257300 -0.106600 -0.960400 +vn 0.857800 -0.459700 0.229900 +vn -0.736600 0.646900 -0.197400 +vn -0.857800 -0.459700 -0.229800 +vn -0.628000 -0.459700 -0.628000 +vn 0.857800 -0.459700 0.229800 +vn 0.000000 -1.000000 0.000000 +vn -0.960400 0.106600 -0.257300 +vn 0.703100 0.106600 0.703100 +vn -0.703100 0.106600 -0.703100 +vn -0.628000 0.459700 0.628000 +vn 0.539200 -0.646900 -0.539200 +vn 0.960400 0.106600 -0.257300 +vn -0.229900 -0.459700 0.857800 +vn -0.229900 0.459700 -0.857800 +vn -0.257300 0.106600 0.960400 +vn 0.857800 0.459700 0.229800 +vn -0.857800 0.459700 -0.229800 +vn 0.539200 -0.646900 0.539200 +vn -0.229900 0.459700 0.857800 +vn -0.736600 -0.646900 0.197400 +vn -0.628000 0.459700 -0.628000 +vn 0.197400 -0.646900 -0.736600 +vn 0.857800 0.459700 -0.229900 +vn 0.703100 0.106600 -0.703100 +vn 0.257300 0.106600 0.960400 +vn -0.703100 0.106600 0.703100 +vn -0.197400 -0.646900 0.736600 +vn 0.960400 0.106600 0.257300 +vn -0.539200 -0.646900 0.539200 +vn -0.960400 0.106600 0.257300 +vn 0.628000 0.459700 -0.628000 +vn 0.229900 0.459700 0.857800 +vn -0.197400 -0.646900 -0.736600 +vn 0.257300 0.106600 -0.960400 +vn 0.736600 -0.646900 0.197400 +vn 0.229800 0.459700 -0.857800 +vn 0.628000 0.459700 0.628000 +vn -0.539200 -0.646900 -0.539200 +vn -0.257300 0.106600 -0.960400 +vn 0.736600 -0.646900 -0.197400 +vn -0.857800 0.459700 0.229900 +vn -0.229800 0.459700 0.857800 +s off +f 20/1/1 21/2/1 43/3/1 +f 11/4/2 7/5/2 3/6/2 +f 15/7/2 16/8/2 12/9/2 +f 28/10/3 27/11/3 49/12/3 +f 41/13/4 42/14/4 60/15/4 +f 5/16/1 6/17/1 20/18/1 +f 6/19/5 7/20/5 21/21/5 +f 7/22/6 8/23/6 22/24/6 +f 53/25/7 54/26/7 72/27/7 +f 2/28/8 1/29/8 14/30/8 +f 16/31/9 15/32/9 27/33/9 +f 9/34/10 10/35/10 24/36/10 +f 1/37/11 3/38/11 17/39/11 +f 12/40/12 16/41/12 28/42/12 +f 10/43/13 11/44/13 25/45/13 +f 3/46/4 4/47/4 18/48/4 +f 15/49/14 2/50/14 13/51/14 +f 11/52/15 12/53/15 26/54/15 +f 29/55/16 30/56/16 31/57/16 +f 30/58/2 29/59/2 4/60/2 +f 19/61/17 31/62/17 30/63/17 +f 17/64/11 18/65/11 37/66/11 +f 4/67/18 29/68/18 32/69/18 +f 33/70/19 34/71/19 35/72/19 +f 9/73/2 34/74/2 33/75/2 +f 23/76/20 35/77/20 34/78/20 +f 19/79/21 20/80/21 42/81/21 +f 8/82/22 33/83/22 36/84/22 +f 47/85/10 48/86/10 66/87/10 +f 37/88/23 51/89/23 69/90/23 +f 31/62/24 19/61/24 41/91/24 +f 14/92/8 17/93/8 38/94/8 +f 26/95/25 28/42/25 50/96/25 +f 35/77/26 23/76/26 45/97/26 +f 21/98/5 22/99/5 44/100/5 +f 18/101/27 32/69/27 51/102/27 +f 13/103/28 14/104/28 39/105/28 +f 27/106/29 13/51/29 40/107/29 +f 22/108/30 36/84/30 53/109/30 +f 23/110/31 24/111/31 46/112/31 +f 32/113/32 31/114/32 52/115/32 +f 24/116/10 25/117/10 47/118/10 +f 36/119/33 35/120/33 54/121/33 +f 25/122/13 26/123/13 48/124/13 +f 68/125/34 67/126/34 85/127/34 +f 72/128/35 63/129/35 81/130/35 +f 59/131/11 60/132/11 78/133/11 +f 71/134/36 72/135/36 90/136/36 +f 54/137/37 45/138/37 63/129/37 +f 50/139/38 49/140/38 67/141/38 +f 42/142/21 43/143/21 61/144/21 +f 44/145/39 53/146/39 71/147/39 +f 48/148/40 50/149/40 68/150/40 +f 43/151/1 44/152/1 62/153/1 +f 49/154/41 40/155/41 58/156/41 +f 38/157/8 37/158/8 55/159/8 +f 51/160/42 52/161/42 70/162/42 +f 45/163/6 46/164/6 64/165/6 +f 39/166/28 38/167/28 56/168/28 +f 52/169/43 41/170/43 59/171/43 +f 46/172/31 47/173/31 65/174/31 +f 40/175/15 39/176/15 57/177/15 +f 80/178/18 89/179/18 107/180/18 +f 78/181/11 79/182/11 97/183/11 +f 86/184/19 85/185/19 103/186/19 +f 90/187/44 81/188/44 99/189/44 +f 60/190/4 61/191/4 79/192/4 +f 62/193/45 71/147/45 89/194/45 +f 66/195/46 68/150/46 86/196/46 +f 61/197/21 62/198/21 80/199/21 +f 67/200/47 58/156/47 76/201/47 +f 56/202/28 55/203/28 73/204/28 +f 69/205/48 70/206/48 88/207/48 +f 63/208/5 64/209/5 82/210/5 +f 57/211/15 56/212/15 74/213/15 +f 70/214/49 59/171/49 77/215/49 +f 64/216/6 65/217/6 83/218/6 +f 58/219/13 57/220/13 75/221/13 +f 55/222/50 69/90/50 87/223/50 +f 65/224/31 66/225/31 84/226/31 +f 103/227/51 94/228/51 112/229/51 +f 97/230/11 98/231/11 116/232/11 +f 102/233/30 104/234/30 122/235/30 +f 98/236/27 107/237/27 125/238/27 +f 84/239/22 86/240/22 104/234/22 +f 79/241/4 80/242/4 98/243/4 +f 85/244/52 76/245/52 94/246/52 +f 74/247/15 73/248/15 91/249/15 +f 87/250/9 88/251/9 106/252/9 +f 81/253/1 82/254/1 100/255/1 +f 75/256/13 74/257/13 92/258/13 +f 88/259/14 77/260/14 95/261/14 +f 82/262/5 83/263/5 101/264/5 +f 76/265/10 75/266/10 93/267/10 +f 73/268/12 87/269/12 105/270/12 +f 83/271/6 84/217/6 102/272/6 +f 89/273/16 90/274/16 108/275/16 +f 77/276/8 78/231/8 96/277/8 +f 117/278/4 118/279/4 136/280/4 +f 123/281/38 124/282/38 142/283/38 +f 110/284/10 109/285/10 127/286/10 +f 121/287/37 112/229/37 130/288/37 +f 92/289/13 91/290/13 109/291/13 +f 105/292/3 106/293/3 124/294/3 +f 99/295/21 100/296/21 118/297/21 +f 93/298/10 92/299/10 110/300/10 +f 106/301/29 95/261/29 113/302/29 +f 100/303/1 101/304/1 119/305/1 +f 94/306/31 93/307/31 111/308/31 +f 91/309/25 105/270/25 123/310/25 +f 101/311/5 102/312/5 120/313/5 +f 107/314/32 108/315/32 126/316/32 +f 95/317/28 96/318/28 114/319/28 +f 108/320/24 99/321/24 117/322/24 +f 104/323/33 103/324/33 121/325/33 +f 96/326/8 97/327/8 115/328/8 +f 129/329/6 128/307/6 146/330/6 +f 135/331/11 136/332/11 154/333/11 +f 141/334/34 142/335/34 160/336/34 +f 128/337/31 127/338/31 145/339/31 +f 111/340/31 110/341/31 128/342/31 +f 124/343/41 113/344/41 131/345/41 +f 118/346/21 119/347/21 137/348/21 +f 112/349/6 111/350/6 129/351/6 +f 109/352/40 123/353/40 141/354/40 +f 119/355/1 120/356/1 138/357/1 +f 125/358/42 126/359/42 144/360/42 +f 113/361/15 114/362/15 132/363/15 +f 126/364/43 117/322/43 135/365/43 +f 122/366/7 121/367/7 139/368/7 +f 114/369/28 115/370/28 133/371/28 +f 116/372/23 125/238/23 143/373/23 +f 120/374/39 122/375/39 140/376/39 +f 115/377/8 116/378/8 134/379/8 +f 148/380/1 147/381/1 165/382/1 +f 154/383/11 155/384/11 173/385/11 +f 160/386/52 149/387/52 167/388/52 +f 147/389/5 146/390/5 164/391/5 +f 142/392/47 131/393/47 149/387/47 +f 136/394/4 137/395/4 155/396/4 +f 130/397/5 129/398/5 147/399/5 +f 127/400/46 141/401/46 159/402/46 +f 137/403/21 138/404/21 156/405/21 +f 143/406/48 144/407/48 162/408/48 +f 131/409/13 132/410/13 150/411/13 +f 144/412/53 135/413/53 153/414/53 +f 140/415/36 139/416/36 157/417/36 +f 132/418/15 133/419/15 151/420/15 +f 134/421/50 143/422/50 161/423/50 +f 138/424/45 140/425/45 158/426/45 +f 133/427/28 134/428/28 152/429/28 +f 139/430/35 130/288/35 148/431/35 +f 179/432/3 180/433/3 198/434/3 +f 173/435/11 174/436/11 192/437/11 +f 163/438/30 177/439/30 195/440/30 +f 166/441/21 165/442/21 183/443/21 +f 145/444/22 159/402/22 177/445/22 +f 155/446/4 156/447/4 174/448/4 +f 161/449/9 162/450/9 180/451/9 +f 149/452/10 150/453/10 168/454/10 +f 162/455/14 153/414/14 171/456/14 +f 158/457/16 157/458/16 175/459/16 +f 150/460/13 151/442/13 169/461/13 +f 152/462/12 161/423/12 179/463/12 +f 156/464/18 158/426/18 176/465/18 +f 151/466/15 152/254/15 170/467/15 +f 157/468/44 148/469/44 166/470/44 +f 146/471/6 145/472/6 163/473/6 +f 159/474/19 160/475/19 178/476/19 +f 153/477/8 154/478/8 172/479/8 +f 194/480/42 193/481/42 211/482/42 +f 198/483/41 189/484/41 207/485/41 +f 185/486/6 186/487/6 204/488/6 +f 197/489/38 198/490/38 216/491/38 +f 167/492/31 168/493/31 186/494/31 +f 180/495/29 171/496/29 189/484/29 +f 176/497/32 175/498/32 193/499/32 +f 168/500/10 169/501/10 187/502/10 +f 170/503/25 179/504/25 197/505/25 +f 174/506/27 176/507/27 194/508/27 +f 169/509/13 170/143/13 188/510/13 +f 175/511/24 166/512/24 184/513/24 +f 164/514/5 163/515/5 181/516/5 +f 177/517/33 178/518/33 196/519/33 +f 171/520/28 172/521/28 190/522/28 +f 165/523/1 164/524/1 182/525/1 +f 178/526/51 167/527/51 185/528/51 +f 172/529/8 173/530/8 191/531/8 +f 204/532/6 205/533/6 223/534/6 +f 212/535/48 211/536/48 229/537/48 +f 216/538/47 207/539/47 225/540/47 +f 203/541/5 204/542/5 222/543/5 +f 186/544/31 187/304/31 205/545/31 +f 188/546/40 197/505/40 215/547/40 +f 192/548/23 194/508/23 212/549/23 +f 187/550/10 188/551/10 206/552/10 +f 193/553/43 184/513/43 202/554/43 +f 182/555/1 181/556/1 199/557/1 +f 195/558/7 196/559/7 214/560/7 +f 189/561/15 190/562/15 208/563/15 +f 183/564/21 182/565/21 200/566/21 +f 196/567/37 185/528/37 203/568/37 +f 190/569/28 191/570/28 209/571/28 +f 184/572/4 183/573/4 201/574/4 +f 181/575/39 195/440/39 213/576/39 +f 191/577/8 192/578/8 210/579/8 +f 220/580/54 228/581/54 230/582/54 +f 221/583/54 225/584/54 220/580/54 +f 231/585/54 232/586/54 221/583/54 +f 224/587/54 233/588/54 234/589/54 +f 206/590/46 215/591/46 233/592/46 +f 210/593/50 212/594/50 230/595/50 +f 205/596/31 206/597/31 224/598/31 +f 211/599/53 202/600/53 220/601/53 +f 200/602/21 199/603/21 217/604/21 +f 213/605/36 214/606/36 232/607/36 +f 207/608/13 208/521/13 226/609/13 +f 201/610/4 200/611/4 218/612/4 +f 214/613/35 203/614/35 221/615/35 +f 208/616/15 209/617/15 227/618/15 +f 202/619/11 201/620/11 219/621/11 +f 199/622/45 213/623/45 231/624/45 +f 209/625/28 210/626/28 228/627/28 +f 215/628/34 216/629/34 234/630/34 +f 42/631/21 20/1/21 43/3/21 +f 3/6/2 1/632/2 2/633/2 +f 2/633/2 12/9/2 3/6/2 +f 11/4/2 10/634/2 9/73/2 +f 9/73/2 8/635/2 7/5/2 +f 7/5/2 6/636/2 5/637/2 +f 5/637/2 4/60/2 7/5/2 +f 3/6/2 12/9/2 11/4/2 +f 11/4/2 9/73/2 7/5/2 +f 7/5/2 4/60/2 3/6/2 +f 2/633/2 15/7/2 12/9/2 +f 50/638/55 28/10/55 49/12/55 +f 59/639/11 41/13/11 60/15/11 +f 19/640/21 5/16/21 20/18/21 +f 20/209/1 6/19/1 21/21/1 +f 21/641/5 7/22/5 22/24/5 +f 71/642/56 53/25/56 72/27/56 +f 13/296/28 2/28/28 14/30/28 +f 28/643/57 16/31/57 27/33/57 +f 23/644/31 9/34/31 24/36/31 +f 14/645/8 1/37/8 17/39/8 +f 26/95/58 12/40/58 28/42/58 +f 24/646/10 10/43/10 25/45/10 +f 17/647/11 3/46/11 18/48/11 +f 27/106/59 15/49/59 13/51/59 +f 25/648/13 11/52/13 26/54/13 +f 32/649/60 29/55/60 31/57/60 +f 5/637/2 30/58/2 4/60/2 +f 5/650/61 19/61/61 30/63/61 +f 38/266/8 17/64/8 37/66/8 +f 18/101/62 4/67/62 32/69/62 +f 36/538/63 33/70/63 35/72/63 +f 8/635/2 9/73/2 33/75/2 +f 9/651/52 23/76/52 34/78/52 +f 41/652/4 19/79/4 42/81/4 +f 22/108/64 8/82/64 36/84/64 +f 65/653/31 47/85/31 66/87/31 +f 55/222/65 37/88/65 69/90/65 +f 52/654/66 31/62/66 41/91/66 +f 39/655/28 14/92/28 38/94/28 +f 48/656/67 26/95/67 50/96/67 +f 54/657/68 35/77/68 45/97/68 +f 43/658/1 21/98/1 44/100/1 +f 37/659/69 18/101/69 51/102/69 +f 40/660/15 13/103/15 39/105/15 +f 49/661/70 27/106/70 40/107/70 +f 44/662/71 22/108/71 53/109/71 +f 45/663/6 23/110/6 46/112/6 +f 51/664/72 32/113/72 52/115/72 +f 46/665/31 24/116/31 47/118/31 +f 53/666/73 36/119/73 54/121/73 +f 47/212/10 25/122/10 48/124/10 +f 86/667/74 68/125/74 85/127/74 +f 90/668/75 72/128/75 81/130/75 +f 77/669/8 59/131/8 78/133/8 +f 89/670/76 71/134/76 90/136/76 +f 72/128/77 54/137/77 63/129/77 +f 68/671/78 50/139/78 67/141/78 +f 60/672/4 42/142/4 61/144/4 +f 62/193/79 44/145/79 71/147/79 +f 66/195/80 48/148/80 68/150/80 +f 61/673/21 43/151/21 62/153/21 +f 67/200/81 49/154/81 58/156/81 +f 56/674/28 38/157/28 55/159/28 +f 69/675/82 51/160/82 70/162/82 +f 63/676/5 45/163/5 64/165/5 +f 57/677/15 39/166/15 56/168/15 +f 70/214/83 52/169/83 59/171/83 +f 64/678/6 46/172/6 65/174/6 +f 58/679/13 40/175/13 57/177/13 +f 98/680/62 80/178/62 107/180/62 +f 96/681/8 78/181/8 97/183/8 +f 104/682/63 86/184/63 103/186/63 +f 108/683/17 90/187/17 99/189/17 +f 78/684/11 60/190/11 79/192/11 +f 80/685/84 62/193/84 89/194/84 +f 84/686/85 66/195/85 86/196/85 +f 79/687/4 61/197/4 80/199/4 +f 85/688/86 67/200/86 76/201/86 +f 74/677/15 56/202/15 73/204/15 +f 87/158/87 69/205/87 88/207/87 +f 81/689/1 63/208/1 82/210/1 +f 75/690/13 57/211/13 74/213/13 +f 88/691/88 70/214/88 77/215/88 +f 82/692/5 64/216/5 83/218/5 +f 76/693/10 58/219/10 75/221/10 +f 73/694/89 55/222/89 87/223/89 +f 83/620/6 65/224/6 84/226/6 +f 121/287/68 103/227/68 112/229/68 +f 115/695/8 97/230/8 116/232/8 +f 120/696/71 102/233/71 122/235/71 +f 116/372/69 98/236/69 125/238/69 +f 102/233/64 84/239/64 104/234/64 +f 97/697/11 79/241/11 98/243/11 +f 103/343/20 85/244/20 94/246/20 +f 92/698/13 74/247/13 91/249/13 +f 105/699/57 87/250/57 106/252/57 +f 99/700/21 81/253/21 100/255/21 +f 93/701/10 75/256/10 92/258/10 +f 106/301/59 88/259/59 95/261/59 +f 100/542/1 82/262/1 101/264/1 +f 94/702/31 76/265/31 93/267/31 +f 91/309/58 73/268/58 105/270/58 +f 101/703/5 83/271/5 102/272/5 +f 107/704/60 89/273/60 108/275/60 +f 95/705/28 77/276/28 96/277/28 +f 135/706/11 117/278/11 136/280/11 +f 141/707/78 123/281/78 142/283/78 +f 128/708/31 110/284/31 127/286/31 +f 139/430/77 121/287/77 130/288/77 +f 110/709/10 92/289/10 109/291/10 +f 123/710/55 105/292/55 124/294/55 +f 117/711/4 99/295/4 118/297/4 +f 111/712/31 93/298/31 110/300/31 +f 124/713/70 106/301/70 113/302/70 +f 118/714/21 100/303/21 119/305/21 +f 112/698/6 94/306/6 111/308/6 +f 109/715/90 91/309/90 123/310/90 +f 119/716/1 101/311/1 120/313/1 +f 125/717/72 107/314/72 126/316/72 +f 113/718/15 95/317/15 114/319/15 +f 126/364/66 108/320/66 117/322/66 +f 122/719/73 104/323/73 121/325/73 +f 114/720/28 96/326/28 115/328/28 +f 147/721/5 129/329/5 146/330/5 +f 153/722/8 135/331/8 154/333/8 +f 159/723/74 141/334/74 160/336/74 +f 146/724/6 128/337/6 145/339/6 +f 129/725/6 111/340/6 128/342/6 +f 142/592/81 124/343/81 131/345/81 +f 136/726/4 118/346/4 137/348/4 +f 130/164/5 112/349/5 129/351/5 +f 127/727/80 109/352/80 141/354/80 +f 137/453/21 119/355/21 138/357/21 +f 143/728/82 125/358/82 144/360/82 +f 131/729/13 113/361/13 132/363/13 +f 144/730/83 126/364/83 135/365/83 +f 140/731/56 122/366/56 139/368/56 +f 132/690/15 114/369/15 133/371/15 +f 134/732/65 116/372/65 143/373/65 +f 138/733/79 120/374/79 140/376/79 +f 133/706/28 115/377/28 134/379/28 +f 166/419/21 148/380/21 165/382/21 +f 172/734/8 154/383/8 173/385/8 +f 178/735/20 160/386/20 167/388/20 +f 165/736/1 147/389/1 164/391/1 +f 160/386/86 142/392/86 149/387/86 +f 154/737/11 136/394/11 155/396/11 +f 148/738/1 130/397/1 147/399/1 +f 145/444/85 127/400/85 159/402/85 +f 155/739/4 137/403/4 156/405/4 +f 161/740/87 143/406/87 162/408/87 +f 149/741/10 131/409/10 150/411/10 +f 162/455/88 144/412/88 153/414/88 +f 158/742/76 140/415/76 157/417/76 +f 150/80/13 132/418/13 151/420/13 +f 152/462/89 134/421/89 161/423/89 +f 156/464/84 138/424/84 158/426/84 +f 151/743/15 133/427/15 152/429/15 +f 157/744/75 139/430/75 148/431/75 +f 197/745/55 179/432/55 198/434/55 +f 191/746/8 173/435/8 192/437/8 +f 181/575/71 163/438/71 195/440/71 +f 184/747/4 166/441/4 183/443/4 +f 163/748/64 145/444/64 177/445/64 +f 173/749/11 155/446/11 174/448/11 +f 179/750/57 161/449/57 180/451/57 +f 167/751/31 149/452/31 168/454/31 +f 180/752/59 162/455/59 171/456/59 +f 176/753/60 158/457/60 175/459/60 +f 168/384/10 150/460/10 169/461/10 +f 170/754/58 152/462/58 179/463/58 +f 174/755/62 156/464/62 176/465/62 +f 169/756/13 151/466/13 170/467/13 +f 175/757/17 157/468/17 166/470/17 +f 164/758/5 146/471/5 163/473/5 +f 177/759/63 159/474/63 178/476/63 +f 171/760/28 153/477/28 172/479/28 +f 212/761/82 194/480/82 211/482/82 +f 216/762/81 198/483/81 207/485/81 +f 203/763/5 185/486/5 204/488/5 +f 215/764/78 197/489/78 216/491/78 +f 185/765/6 167/492/6 186/494/6 +f 198/483/70 180/495/70 189/484/70 +f 194/766/72 176/497/72 193/499/72 +f 186/117/31 168/500/31 187/502/31 +f 188/546/90 170/503/90 197/505/90 +f 192/548/69 174/506/69 194/508/69 +f 187/767/10 169/509/10 188/510/10 +f 193/553/66 175/511/66 184/513/66 +f 182/768/1 164/514/1 181/516/1 +f 195/769/73 177/517/73 196/519/73 +f 189/722/15 171/520/15 190/522/15 +f 183/684/21 165/523/21 182/525/21 +f 196/567/68 178/526/68 185/528/68 +f 190/770/28 172/529/28 191/531/28 +f 222/771/5 204/532/5 223/534/5 +f 230/56/87 212/535/87 229/537/87 +f 234/772/86 216/538/86 225/540/86 +f 221/773/1 203/541/1 222/543/1 +f 204/774/6 186/544/6 205/545/6 +f 206/775/80 188/546/80 215/547/80 +f 210/776/65 192/548/65 212/549/65 +f 205/777/31 187/550/31 206/552/31 +f 211/778/83 193/553/83 202/554/83 +f 200/779/21 182/555/21 199/557/21 +f 213/780/56 195/558/56 214/560/56 +f 207/781/13 189/561/13 208/563/13 +f 201/782/4 183/564/4 200/566/4 +f 214/783/77 196/567/77 203/568/77 +f 208/641/15 190/569/15 209/571/15 +f 202/356/11 184/572/11 201/574/11 +f 199/784/79 181/575/79 213/576/79 +f 209/404/28 191/577/28 210/579/28 +f 229/785/54 220/580/54 230/582/54 +f 220/580/54 219/786/54 218/787/54 +f 218/787/54 217/788/54 221/583/54 +f 221/583/54 222/789/54 223/790/54 +f 223/790/54 224/587/54 221/583/54 +f 225/584/54 226/791/54 227/792/54 +f 227/792/54 228/581/54 220/580/54 +f 220/580/54 218/787/54 221/583/54 +f 221/583/54 224/587/54 225/584/54 +f 225/584/54 227/792/54 220/580/54 +f 217/788/54 231/585/54 221/583/54 +f 225/584/54 224/587/54 234/589/54 +f 224/793/85 206/590/85 233/592/85 +f 228/794/89 210/593/89 230/595/89 +f 223/746/6 205/596/6 224/598/6 +f 229/795/88 211/599/88 220/601/88 +f 218/729/4 200/602/4 217/604/4 +f 231/796/76 213/605/76 232/607/76 +f 225/797/10 207/608/10 226/609/10 +f 219/798/11 201/610/11 218/612/11 +f 232/799/75 214/613/75 221/615/75 +f 226/800/13 208/616/13 227/618/13 +f 220/801/8 202/619/8 219/621/8 +f 217/802/84 199/622/84 231/624/84 +f 227/299/15 209/625/15 228/627/15 +f 233/803/74 215/628/74 234/630/74 diff --git a/assets/hbm/models/drill_main.obj b/assets/hbm/models/drill_main.obj new file mode 100644 index 000000000..5d0baf4e8 --- /dev/null +++ b/assets/hbm/models/drill_main.obj @@ -0,0 +1,1810 @@ +# Blender v2.76 (sub 0) OBJ File: 'drill_main.blend' +# www.blender.org +o Plane.001 +v -0.500000 0.250000 0.250000 +v -0.500000 0.750000 0.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.750000 -0.250000 +v -1.500000 0.000000 0.500000 +v -1.500000 1.000000 0.500000 +v -1.500000 0.000000 -0.500000 +v -1.500000 1.000000 -0.500000 +v -1.000000 1.000000 -0.500000 +v -1.000000 0.000000 -0.500000 +v -1.000000 1.000000 0.500000 +v -1.000000 0.000000 0.500000 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.000000 0.687500 -0.187500 +v -1.000000 0.312500 -0.187500 +v -1.000000 0.687500 0.187500 +v -1.000000 0.312500 0.187500 +v -1.083333 0.250000 -0.600000 +v -1.083333 0.750000 -0.600000 +v -1.333333 0.500000 -0.600000 +v -1.083333 0.250000 0.600000 +v -1.083333 0.750000 0.600000 +v -1.333333 0.500000 0.600000 +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 0.000000 1.250000 +v 1.250000 0.000000 1.500000 +v 1.500000 0.000000 -1.250000 +v -1.250000 0.000000 -1.500000 +v -1.500000 0.000000 -1.250000 +v -1.250000 0.000000 1.500000 +v 1.500000 0.000000 1.250000 +v 1.250000 0.000000 -1.500000 +v 1.250000 0.000000 1.250000 +v -1.250000 0.000000 1.250000 +v -1.250000 0.000000 -1.250000 +v 1.250000 0.000000 -1.250000 +v -0.000000 3.500000 -0.250000 +v 0.125000 3.500000 -0.216506 +v 0.000000 3.000000 -0.500000 +v 0.000000 3.250000 -0.500000 +v 0.250000 3.000000 -0.433013 +v 0.250000 3.250000 -0.433013 +v 0.433013 3.000000 -0.250000 +v 0.433013 3.250000 -0.250000 +v 0.500000 3.000000 0.000000 +v 0.500000 3.250000 0.000000 +v 0.433013 3.000000 0.250000 +v 0.433013 3.250000 0.250000 +v 0.250000 3.000000 0.433013 +v 0.250000 3.250000 0.433013 +v 0.000000 3.000000 0.500000 +v 0.000000 3.250000 0.500000 +v -0.250000 3.000000 0.433013 +v -0.250000 3.250000 0.433013 +v -0.433013 3.000000 0.250000 +v -0.433013 3.250000 0.250000 +v -0.500000 3.000000 0.000000 +v -0.500000 3.250000 0.000000 +v -0.433013 3.000000 -0.250000 +v -0.433013 3.250000 -0.250000 +v -0.250000 3.000000 -0.433013 +v -0.250000 3.250000 -0.433013 +v 0.216506 3.500000 -0.125000 +v 0.250000 3.500000 0.000000 +v 0.216506 3.500000 0.125000 +v 0.125000 3.500000 0.216506 +v 0.000000 3.500000 0.250000 +v -0.125000 3.500000 0.216506 +v -0.216506 3.500000 0.125000 +v -0.250000 3.500000 0.000000 +v -0.216506 3.500000 -0.125000 +v -0.125000 3.500000 -0.216506 +v -0.000000 3.500000 -0.087500 +v -0.043750 3.500000 -0.075777 +v -0.075777 3.500000 -0.043750 +v -0.087500 3.500000 0.000000 +v -0.075777 3.500000 0.043750 +v -0.043750 3.500000 0.075777 +v 0.000000 3.500000 0.087500 +v 0.043750 3.500000 0.075777 +v 0.075777 3.500000 0.043750 +v 0.087500 3.500000 0.000000 +v 0.075777 3.500000 -0.043750 +v 0.043750 3.500000 -0.075777 +v 0.000001 4.000000 -0.087500 +v -0.043749 4.000000 -0.075777 +v -0.075777 4.000000 -0.043750 +v -0.087499 4.000000 0.000000 +v -0.075777 4.000000 0.043750 +v -0.043749 4.000000 0.075777 +v 0.000001 4.000000 0.087500 +v 0.043751 4.000000 0.075777 +v 0.075778 4.000000 0.043750 +v 0.087501 4.000000 0.000000 +v 0.075778 4.000000 -0.043750 +v 0.043751 4.000000 -0.075777 +v -0.750000 3.000000 -0.750000 +v -0.500000 3.000000 -0.750000 +v -0.750000 3.000000 -0.500000 +v -0.500000 3.000000 -0.500000 +v 0.750000 3.000000 -0.750000 +v 0.750000 3.000000 -0.500000 +v 0.500000 3.000000 -0.750000 +v 0.500000 3.000000 -0.500000 +v 0.750000 3.000000 0.750000 +v 0.500000 3.000000 0.750000 +v 0.750000 3.000000 0.500000 +v 0.500000 3.000000 0.500000 +v -0.750000 3.000000 0.750000 +v -0.750000 3.000000 0.500000 +v -0.500000 3.000000 0.750000 +v -0.500000 3.000000 0.500000 +v 0.156236 0.656250 1.502073 +v -0.156236 0.656250 1.497927 +v 0.156236 0.343750 1.502073 +v -0.156236 0.343750 1.497927 +v 0.159552 0.656250 1.252095 +v -0.152920 0.656250 1.247949 +v 0.159552 0.343750 1.252095 +v -0.152920 0.343750 1.247949 +v -0.500000 0.000000 1.250000 +v -0.500000 1.000000 1.250000 +v -0.500000 0.000000 1.000000 +v -0.500000 1.000000 1.000000 +v 0.500000 0.000000 1.250000 +v 0.500000 1.000000 1.250000 +v 0.500000 0.000000 1.000000 +v 0.500000 1.000000 1.000000 +v -0.496481 0.739070 0.748450 +v -0.500000 0.000000 0.750000 +v 0.503519 0.739070 0.748450 +v 0.500000 0.000000 0.750000 +v 0.156236 0.656250 -1.497927 +v -0.156236 0.656250 -1.502073 +v 0.156236 0.343750 -1.497927 +v -0.156236 0.343750 -1.502073 +v 0.152920 0.656250 -1.247949 +v -0.159552 0.656250 -1.252095 +v 0.152920 0.343750 -1.247949 +v -0.159552 0.343750 -1.252095 +v -0.500000 0.000000 -1.000000 +v -0.500000 1.000000 -1.000000 +v -0.500000 0.000000 -1.250000 +v -0.500000 1.000000 -1.250000 +v 0.500000 0.000000 -1.000000 +v 0.500000 1.000000 -1.000000 +v 0.500000 0.000000 -1.250000 +v 0.500000 1.000000 -1.250000 +v -0.500000 0.000000 -0.750000 +v -0.500000 0.750000 -0.750000 +v 0.500000 0.750000 -0.750000 +v 0.500000 0.000000 -0.750000 +v -0.749622 0.250000 0.750000 +v 0.750378 1.000000 0.750000 +v -0.749622 0.250000 -0.750000 +v 0.750378 1.000000 -0.750000 +v -0.249622 0.500000 -0.433013 +v 0.000378 0.625000 -0.500000 +v 0.250378 0.750000 -0.433012 +v 0.433391 0.841506 -0.250000 +v 0.500378 0.875000 0.000000 +v 0.433390 0.841505 0.250000 +v 0.250378 0.750000 0.433013 +v 0.000378 0.625000 0.500000 +v -0.249622 0.500000 0.433013 +v -0.432635 0.408494 0.250000 +v -0.499622 0.375000 -0.000000 +v -0.432635 0.408494 -0.250000 +v -0.749622 0.750000 0.750000 +v 0.750378 1.500000 0.750000 +v -0.749622 0.750000 -0.750000 +v 0.750378 1.500000 -0.750000 +v -0.249622 1.000000 -0.433013 +v 0.000378 1.125000 -0.500000 +v 0.250378 1.250000 -0.433012 +v 0.433391 1.341506 -0.250000 +v 0.500378 1.375000 0.000000 +v 0.433390 1.341505 0.250000 +v 0.250378 1.250000 0.433013 +v 0.000378 1.125000 0.500000 +v -0.249622 1.000000 0.433013 +v -0.432635 0.908494 0.250000 +v -0.499622 0.875000 -0.000000 +v -0.432635 0.908494 -0.250000 +v -0.999622 0.250000 -0.375000 +v -0.999622 0.250000 0.375000 +v -0.999622 0.750000 -0.375000 +v -0.999622 0.750000 0.375000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.250000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.250000 -0.500000 +v 1.500000 0.000000 0.500000 +v 1.500000 0.250000 0.500000 +v 1.500000 0.000000 -0.500000 +v 1.500000 0.250000 -0.500000 +v 0.750000 0.375000 0.250000 +v 0.750000 0.375000 -0.250000 +v 1.250000 0.375000 -0.250000 +v 1.250000 0.375000 0.250000 +v 0.750000 1.000000 0.250000 +v 0.750000 1.000000 -0.250000 +v 1.250000 1.000000 -0.250000 +v 1.250000 1.000000 0.250000 +v 0.750000 1.500000 0.250000 +v 0.750000 1.500000 -0.250000 +v 1.250000 1.500000 -0.250000 +v 1.250000 1.500000 0.250000 +v 0.750000 2.125000 0.250000 +v 0.750000 2.125000 -0.250000 +v 1.250000 2.125000 -0.250000 +v 1.250000 2.125000 0.250000 +v 0.500000 2.500000 0.500000 +v 0.500000 2.500000 -0.500000 +v 1.500000 2.500000 0.500000 +v 1.500000 2.500000 -0.500000 +v 0.500000 2.250000 -0.500000 +v 0.500000 2.250000 0.500000 +v 1.500000 2.250000 -0.500000 +v 1.500000 2.250000 0.500000 +v 0.750000 3.125000 -0.250000 +v 0.750000 3.125000 0.250000 +v 0.750000 3.125000 -0.178571 +v 0.750000 3.125000 -0.107143 +v 0.750000 3.125000 -0.035714 +v 0.750000 3.125000 0.035714 +v 0.750000 3.125000 0.107143 +v 0.750000 3.125000 0.178571 +v 0.400000 3.125000 -0.250000 +v 0.400000 3.125000 0.250000 +v 0.400000 3.125000 -0.178571 +v 0.400000 3.125000 -0.107143 +v 0.400000 3.125000 -0.035714 +v 0.400000 3.125000 0.035714 +v 0.400000 3.125000 0.107143 +v 0.400000 3.125000 0.178571 +v 1.000000 2.875000 -0.250000 +v 1.000000 2.875000 0.250000 +v 1.000000 2.875000 -0.178571 +v 1.000000 2.875000 -0.107143 +v 1.000000 2.875000 -0.035714 +v 1.000000 2.875000 0.035714 +v 1.000000 2.875000 0.107143 +v 1.000000 2.875000 0.178571 +v 1.000000 2.500000 -0.250000 +v 1.000000 2.500000 0.250000 +v 1.000000 2.500000 -0.178571 +v 1.000000 2.500000 -0.107143 +v 1.000000 2.500000 -0.035714 +v 1.000000 2.500000 0.035714 +v 1.000000 2.500000 0.107143 +v 1.000000 2.500000 0.178571 +v 1.250000 1.000000 -1.250000 +v 1.000000 2.000000 -1.000000 +v 1.000000 1.000000 -1.250000 +v 0.750000 2.000000 -1.000000 +v 1.250000 1.000000 -1.000000 +v 1.000000 2.000000 -0.750000 +v 1.000000 1.000000 -1.000000 +v 0.750000 2.000000 -0.750000 +v -1.000000 1.000000 -1.250000 +v -0.750000 2.000000 -1.000000 +v -1.250000 1.000000 -1.250000 +v -1.000000 2.000000 -1.000000 +v -1.250000 1.000000 -1.000000 +v -1.000000 2.000000 -0.750000 +v -1.000000 1.000000 -1.000000 +v -0.750000 2.000000 -0.750000 +v -1.000000 1.000000 1.000000 +v -0.750000 2.000000 0.750000 +v -1.250000 1.000000 1.000000 +v -1.000000 2.000000 0.750000 +v -1.000000 1.000000 1.250000 +v -0.750000 2.000000 1.000000 +v -1.250000 1.000000 1.250000 +v -1.000000 2.000000 1.000000 +v 1.250000 1.000000 1.250000 +v 1.000000 2.000000 1.000000 +v 1.250000 1.000000 1.000000 +v 1.000000 2.000000 0.750000 +v 1.000000 1.000000 1.250000 +v 0.750000 2.000000 1.000000 +v 1.000000 1.000000 1.000000 +v 0.750000 2.000000 0.750000 +v -1.250000 1.000000 -0.500000 +v -1.000000 1.000000 -0.500000 +v -1.000000 1.000000 0.500000 +v -1.250000 1.000000 0.500000 +v 1.000000 1.000000 0.500000 +v 1.000000 1.000000 -0.500000 +vt 0.742850 0.869892 +vt 0.794307 0.869891 +vt 0.794307 0.921513 +vt 0.788877 0.109438 +vt 0.737417 0.109438 +vt 0.737417 0.006195 +vt 0.429689 0.019100 +vt 0.352503 0.019100 +vt 0.339639 0.006195 +vt 0.736573 0.433689 +vt 0.679039 0.407878 +vt 0.679039 0.356257 +vt 0.748924 0.549321 +vt 0.748924 0.446078 +vt 0.800384 0.446078 +vt 0.736573 0.471889 +vt 0.736573 0.523511 +vt 0.679039 0.549321 +vt 0.454904 0.803419 +vt 0.454904 0.700176 +vt 0.506364 0.700176 +vt 0.736573 0.214814 +vt 0.736573 0.318057 +vt 0.679039 0.292246 +vt 0.679039 0.677343 +vt 0.730499 0.677343 +vt 0.730499 0.780586 +vt 0.679039 0.587521 +vt 0.736573 0.561711 +vt 0.736573 0.664954 +vt 0.348647 0.805319 +vt 0.348647 0.766602 +vt 0.403607 0.747244 +vt 0.352504 0.096532 +vt 0.429689 0.096532 +vt 0.442553 0.109438 +vt 0.339640 0.109438 +vt 0.442553 0.006195 +vt 0.089013 0.920298 +vt 0.127606 0.920298 +vt 0.127606 0.959015 +vt 0.263570 0.790128 +vt 0.263570 0.751411 +vt 0.318529 0.732053 +vt 0.089013 0.803185 +vt 0.089013 0.764469 +vt 0.143973 0.745111 +vt 0.748924 0.619785 +vt 0.748924 0.581069 +vt 0.803884 0.561711 +vt 0.955744 0.406846 +vt 0.955744 0.458468 +vt 0.930014 0.432657 +vt 0.955744 0.330446 +vt 0.930014 0.304635 +vt 0.955744 0.278824 +vt 0.968095 0.214814 +vt 0.993825 0.214814 +vt 0.993825 0.240624 +vt 0.965057 0.750801 +vt 0.990788 0.750801 +vt 0.990788 0.776612 +vt 0.923940 0.638627 +vt 0.949670 0.638627 +vt 0.949670 0.664437 +vt 0.816234 0.638627 +vt 0.841964 0.638627 +vt 0.841964 0.664438 +vt 0.728746 0.896592 +vt 0.728746 0.909952 +vt 0.712591 0.905610 +vt 0.833299 0.970304 +vt 0.806661 0.970304 +vt 0.813320 0.934418 +vt 0.926128 0.106374 +vt 0.926128 0.079653 +vt 0.951858 0.079653 +vt 0.679039 0.909952 +vt 0.679039 0.896592 +vt 0.695194 0.900934 +vt 0.238533 0.982264 +vt 0.211895 0.982264 +vt 0.218555 0.946378 +vt 0.566971 0.992904 +vt 0.566971 0.966183 +vt 0.592702 0.966183 +vt 0.685698 0.921523 +vt 0.697524 0.909660 +vt 0.701561 0.911998 +vt 0.973435 0.157712 +vt 0.946797 0.157712 +vt 0.953457 0.121827 +vt 0.045164 0.992712 +vt 0.045164 0.965990 +vt 0.070894 0.965990 +vt 0.710552 0.878341 +vt 0.706223 0.894546 +vt 0.701561 0.894546 +vt 0.679039 0.976478 +vt 0.685698 0.940593 +vt 0.699017 0.940593 +vt 0.930014 0.545853 +vt 0.930014 0.519131 +vt 0.955744 0.519131 +vt 0.712591 0.900934 +vt 0.710260 0.896884 +vt 0.923940 0.982693 +vt 0.930599 0.946807 +vt 0.943918 0.946807 +vt 0.454904 0.992904 +vt 0.454904 0.966182 +vt 0.480634 0.966182 +vt 0.722086 0.921523 +vt 0.710260 0.909660 +vt 0.956652 0.506742 +vt 0.930014 0.506742 +vt 0.936673 0.470857 +vt 0.826958 0.173449 +vt 0.826958 0.200170 +vt 0.801228 0.200170 +vt 0.710552 0.928203 +vt 0.697233 0.928203 +vt 0.879430 0.989146 +vt 0.886089 0.953260 +vt 0.899408 0.953260 +vt 0.031905 0.965990 +vt 0.031905 0.992712 +vt 0.006175 0.992712 +vt 0.685698 0.885021 +vt 0.697524 0.896884 +vt 0.630782 0.967319 +vt 0.637442 0.931434 +vt 0.650761 0.931434 +vt 0.069983 0.732694 +vt 0.069983 0.705972 +vt 0.095713 0.705972 +vt 0.154777 0.886554 +vt 0.154777 0.834933 +vt 0.159439 0.834933 +vt 0.769488 0.969788 +vt 0.742850 0.969788 +vt 0.749509 0.933903 +vt 0.302558 0.992981 +vt 0.302558 0.966260 +vt 0.328288 0.966260 +vt 0.415916 0.967749 +vt 0.422575 0.931863 +vt 0.435894 0.931863 +vt 0.695194 0.905610 +vt 0.348647 0.993805 +vt 0.348647 0.967084 +vt 0.374377 0.967084 +vt 0.962928 0.597596 +vt 0.969588 0.561711 +vt 0.982907 0.561711 +vt 0.952707 0.750801 +vt 0.952707 0.777522 +vt 0.926977 0.777522 +vt 0.263570 0.992981 +vt 0.263570 0.966260 +vt 0.289300 0.966260 +vt 0.706223 0.911998 +vt 0.172907 0.982264 +vt 0.179567 0.946378 +vt 0.192885 0.946378 +vt 0.272321 0.459494 +vt 0.172907 0.486216 +vt 0.186226 0.436353 +vt 0.722086 0.885021 +vt 0.697233 0.878341 +vt 0.763990 0.345986 +vt 0.748924 0.341936 +vt 0.766321 0.337260 +vt 0.074644 0.809094 +vt 0.074644 0.860715 +vt 0.069983 0.860715 +vt 0.074644 0.745083 +vt 0.074644 0.796704 +vt 0.069983 0.796704 +vt 0.241540 0.650739 +vt 0.241540 0.702361 +vt 0.236878 0.702361 +vt 0.142427 0.834933 +vt 0.142427 0.886554 +vt 0.137765 0.886554 +vt 0.248290 0.882004 +vt 0.248290 0.933626 +vt 0.243629 0.933626 +vt 0.397399 0.888687 +vt 0.397399 0.837066 +vt 0.402061 0.837066 +vt 0.267110 0.535107 +vt 0.267110 0.586729 +vt 0.262448 0.586729 +vt 0.610621 0.892724 +vt 0.610621 0.944346 +vt 0.605960 0.944346 +vt 0.330880 0.847686 +vt 0.330880 0.796064 +vt 0.335541 0.796064 +vt 0.335541 0.732053 +vt 0.335541 0.783675 +vt 0.330880 0.783675 +vt 0.498554 0.892724 +vt 0.498554 0.944346 +vt 0.493892 0.944346 +vt 0.134826 0.217539 +vt 0.134826 0.191728 +vt 0.160556 0.191728 +vt 0.006175 0.217539 +vt 0.006175 0.191728 +vt 0.031905 0.191728 +vt 0.006175 0.346593 +vt 0.006175 0.320782 +vt 0.031905 0.320782 +vt 0.134826 0.346593 +vt 0.134826 0.320782 +vt 0.160556 0.320782 +vt 0.083366 0.320782 +vt 0.031905 0.217539 +vt 0.031905 0.269160 +vt 0.083366 0.217539 +vt 0.134826 0.269160 +vt 0.492260 0.115700 +vt 0.492260 0.006195 +vt 0.517265 0.012278 +vt 0.080887 0.365065 +vt 0.105892 0.358982 +vt 0.105892 0.468488 +vt 0.666688 0.231290 +vt 0.666688 0.340796 +vt 0.641683 0.334712 +vt 0.604327 0.012278 +vt 0.629333 0.006195 +vt 0.629333 0.115701 +vt 0.492260 0.359269 +vt 0.517265 0.353185 +vt 0.517265 0.462691 +vt 0.591977 0.578281 +vt 0.591977 0.687787 +vt 0.566971 0.681703 +vt 0.554621 0.231290 +vt 0.554621 0.340796 +vt 0.529616 0.334712 +vt 0.068536 0.687499 +vt 0.043531 0.693583 +vt 0.043531 0.584077 +vt 0.554621 0.578281 +vt 0.554621 0.687786 +vt 0.529616 0.681703 +vt 0.641683 0.359269 +vt 0.666688 0.353185 +vt 0.666688 0.462691 +vt 0.629333 0.578281 +vt 0.629333 0.687787 +vt 0.604327 0.681703 +vt 0.442553 0.450345 +vt 0.417548 0.456428 +vt 0.417548 0.346922 +vt 0.454904 0.359269 +vt 0.479909 0.353185 +vt 0.479909 0.462691 +vt 0.454904 0.115700 +vt 0.454904 0.006195 +vt 0.479909 0.012278 +vt 0.591977 0.231290 +vt 0.591977 0.340796 +vt 0.566971 0.334712 +vt 0.006175 0.365065 +vt 0.031181 0.358982 +vt 0.031181 0.468488 +vt 0.109096 0.224455 +vt 0.127932 0.243349 +vt 0.057636 0.224455 +vt 0.038800 0.243349 +vt 0.038800 0.294971 +vt 0.057636 0.313866 +vt 0.109096 0.313866 +vt 0.127932 0.294971 +vt 0.911589 0.908608 +vt 0.911589 0.940871 +vt 0.879430 0.940871 +vt 0.991695 0.709606 +vt 0.965965 0.709606 +vt 0.965965 0.677343 +vt 0.962928 0.882281 +vt 0.988658 0.882281 +vt 0.988658 0.914544 +vt 0.962928 0.642249 +vt 0.962928 0.609985 +vt 0.988658 0.609985 +vt 0.988658 0.869891 +vt 0.962928 0.869891 +vt 0.962928 0.837628 +vt 0.198799 0.753983 +vt 0.198799 0.650739 +vt 0.224528 0.650740 +vt 0.172907 0.766735 +vt 0.210210 0.766372 +vt 0.210210 0.869615 +vt 0.403607 0.631612 +vt 0.403607 0.734855 +vt 0.377878 0.734855 +vt 0.339635 0.616421 +vt 0.339635 0.719664 +vt 0.263570 0.719301 +vt 0.768580 0.677343 +vt 0.768580 0.780586 +vt 0.742850 0.780586 +vt 0.442553 0.520439 +vt 0.442553 0.623682 +vt 0.416823 0.623682 +vt 0.172907 0.727043 +vt 0.352150 0.734855 +vt 0.351986 0.658551 +vt 0.794310 0.677343 +vt 0.794310 0.780586 +vt 0.275828 0.191728 +vt 0.275828 0.294971 +vt 0.240789 0.259481 +vt 0.208629 0.259481 +vt 0.172907 0.294971 +vt 0.172907 0.191728 +vt 0.208629 0.227218 +vt 0.348647 0.922431 +vt 0.380807 0.922432 +vt 0.380807 0.954695 +vt 0.522461 0.963697 +vt 0.522461 0.931434 +vt 0.554621 0.931434 +vt 0.972527 0.170102 +vt 0.972527 0.202365 +vt 0.946797 0.202365 +vt 0.962928 0.792975 +vt 0.988658 0.792975 +vt 0.988658 0.825239 +vt 0.965116 0.006195 +vt 0.990846 0.006195 +vt 0.990846 0.038458 +vt 0.965116 0.050847 +vt 0.990846 0.050847 +vt 0.990846 0.083111 +vt 0.006175 0.809215 +vt 0.006175 0.705972 +vt 0.031904 0.705973 +vt 0.391099 0.191728 +vt 0.391099 0.294971 +vt 0.288178 0.294971 +vt 0.592700 0.700176 +vt 0.592700 0.803419 +vt 0.566971 0.803419 +vt 0.875697 0.109438 +vt 0.839309 0.109438 +vt 0.839309 0.006195 +vt 0.748924 0.318057 +vt 0.748924 0.214814 +vt 0.774654 0.214814 +vt 0.143973 0.410603 +vt 0.143973 0.513847 +vt 0.118243 0.513847 +vt 0.172907 0.535107 +vt 0.250098 0.535107 +vt 0.250098 0.638350 +vt 0.618428 0.725986 +vt 0.057632 0.705973 +vt 0.057632 0.783405 +vt 0.800384 0.214814 +vt 0.800384 0.318057 +vt 0.109096 0.006230 +vt 0.083366 0.035052 +vt 0.057636 0.006230 +vt 0.006175 0.179339 +vt 0.031905 0.092767 +vt 0.038800 0.121624 +vt 0.160557 0.179339 +vt 0.127932 0.121624 +vt 0.134826 0.092767 +vt 0.083366 0.150481 +vt 0.250098 0.150481 +vt 0.275828 0.179304 +vt 0.224367 0.179304 +vt 0.198637 0.092767 +vt 0.172907 0.179339 +vt 0.172907 0.006195 +vt 0.294664 0.063909 +vt 0.327288 0.006195 +vt 0.301558 0.092767 +vt 0.250098 0.035052 +vt 0.725066 0.029280 +vt 0.725066 0.202424 +vt 0.679039 0.179339 +vt 0.442553 0.842558 +vt 0.416823 0.803842 +vt 0.416823 0.726409 +vt 0.398013 0.596137 +vt 0.351986 0.619222 +vt 0.351986 0.446078 +vt 0.057632 0.821605 +vt 0.057632 0.886132 +vt 0.006175 0.886132 +vt 0.926977 0.686790 +vt 0.953615 0.677343 +vt 0.953615 0.728964 +vt 0.950578 0.921513 +vt 0.923940 0.934418 +vt 0.923940 0.882797 +vt 0.442553 0.906568 +vt 0.415916 0.919474 +vt 0.415916 0.867852 +vt 0.926128 0.015642 +vt 0.952766 0.006195 +vt 0.952766 0.057816 +vt 0.045164 0.901979 +vt 0.071801 0.898521 +vt 0.071802 0.950143 +vt 0.290207 0.902249 +vt 0.290207 0.953871 +vt 0.263570 0.950413 +vt 0.593609 0.902172 +vt 0.593609 0.953793 +vt 0.566971 0.944346 +vt 0.923940 0.613332 +vt 0.923940 0.561711 +vt 0.950578 0.574616 +vt 0.923940 0.844597 +vt 0.923940 0.792975 +vt 0.950578 0.805881 +vt 0.481542 0.902172 +vt 0.481542 0.953793 +vt 0.454904 0.944346 +vt 0.329196 0.902249 +vt 0.329196 0.953871 +vt 0.302558 0.950413 +vt 0.006175 0.901980 +vt 0.032813 0.898521 +vt 0.032813 0.950143 +vt 0.737417 0.199255 +vt 0.737417 0.121827 +vt 0.788877 0.121827 +vt 0.888061 0.121827 +vt 0.934447 0.121827 +vt 0.934447 0.173449 +vt 0.838465 0.536932 +vt 0.812735 0.498216 +vt 0.812735 0.420784 +vt 0.172907 0.882368 +vt 0.219293 0.882368 +vt 0.219293 0.933989 +vt 0.630782 0.815809 +vt 0.656513 0.815808 +vt 0.656513 0.919045 +vt 0.913777 0.109438 +vt 0.888047 0.109438 +vt 0.888047 0.006195 +vt 0.891933 0.214814 +vt 0.917663 0.214814 +vt 0.917663 0.318050 +vt 0.885859 0.792975 +vt 0.911589 0.792975 +vt 0.911589 0.896218 +vt 0.391099 0.410603 +vt 0.288178 0.410603 +vt 0.288178 0.307360 +vt 0.879583 0.549321 +vt 0.850815 0.523511 +vt 0.850815 0.471889 +vt 0.742850 0.857502 +vt 0.742850 0.792975 +vt 0.794310 0.792975 +vt 0.885859 0.677343 +vt 0.914626 0.703154 +vt 0.914626 0.754775 +vt 0.554621 0.803419 +vt 0.525854 0.777608 +vt 0.525854 0.725987 +vt 0.873509 0.780586 +vt 0.844741 0.754775 +vt 0.844741 0.703154 +vt 0.339635 0.487519 +vt 0.339635 0.539141 +vt 0.288178 0.539141 +vt 0.454904 0.880335 +vt 0.454904 0.815808 +vt 0.506364 0.815808 +vt 0.339635 0.422992 +vt 0.288178 0.487520 +vt 0.263570 0.886402 +vt 0.263570 0.821875 +vt 0.315027 0.821875 +vt 0.385049 0.910042 +vt 0.348647 0.873554 +vt 0.385049 0.837066 +vt 0.875697 0.158329 +vt 0.875710 0.194803 +vt 0.839309 0.158315 +vt 0.891933 0.523511 +vt 0.891933 0.446078 +vt 0.917663 0.471889 +vt 0.850815 0.318057 +vt 0.850815 0.214814 +vt 0.879583 0.240624 +vt 0.566971 0.880335 +vt 0.566971 0.815808 +vt 0.618432 0.815808 +vt 0.816234 0.626238 +vt 0.816234 0.561711 +vt 0.867694 0.561711 +vt 0.339635 0.603668 +vt 0.288178 0.603668 +vt 0.391099 0.173448 +vt 0.339639 0.173409 +vt 0.365369 0.147638 +vt 0.806661 0.870408 +vt 0.832391 0.844597 +vt 0.832391 0.922029 +vt 0.089013 0.871421 +vt 0.125415 0.834933 +vt 0.125415 0.907909 +vt 0.172907 0.410603 +vt 0.172907 0.307360 +vt 0.275828 0.307360 +vt 0.850815 0.433689 +vt 0.850815 0.330446 +vt 0.879583 0.356257 +vt 0.554621 0.919045 +vt 0.528891 0.919045 +vt 0.528891 0.815808 +vt 0.891933 0.330446 +vt 0.917663 0.330446 +vt 0.917663 0.433682 +vt 0.248290 0.869615 +vt 0.222560 0.869615 +vt 0.222560 0.766372 +vt 0.885859 0.561711 +vt 0.911589 0.561711 +vt 0.911589 0.664954 +vt 0.873509 0.792975 +vt 0.873509 0.896218 +vt 0.844741 0.870408 +vt 0.659546 0.700176 +vt 0.659546 0.803419 +vt 0.630779 0.777608 +vt 0.975446 0.350796 +vt 0.975446 0.386931 +vt 0.968095 0.386931 +vt 0.159440 0.950049 +vt 0.159440 0.986184 +vt 0.152088 0.986184 +vt 0.976354 0.470857 +vt 0.976354 0.506992 +vt 0.969002 0.506992 +vt 0.975446 0.399320 +vt 0.975446 0.435455 +vt 0.968095 0.435455 +vt 0.718027 0.940593 +vt 0.725379 0.940593 +vt 0.725379 0.977094 +vt 0.968095 0.301905 +vt 0.975446 0.301905 +vt 0.975446 0.338407 +vt 0.968095 0.253014 +vt 0.975446 0.253014 +vt 0.975446 0.289516 +vt 0.781838 0.933903 +vt 0.789190 0.933903 +vt 0.789190 0.970405 +vt 0.393157 0.922431 +vt 0.400508 0.922431 +vt 0.400508 0.961148 +vt 0.159439 0.937660 +vt 0.152088 0.937660 +vt 0.152088 0.898943 +vt 0.867079 0.947324 +vt 0.859728 0.947324 +vt 0.859728 0.908608 +vt 0.236878 0.714750 +vt 0.244229 0.714750 +vt 0.244229 0.753466 +vt 0.604327 0.231290 +vt 0.629333 0.225206 +vt 0.629333 0.334712 +vt 0.604327 0.121784 +vt 0.666688 0.012278 +vt 0.666688 0.121784 +vt 0.641683 0.115701 +vt 0.641683 0.225206 +vt 0.080887 0.584077 +vt 0.105892 0.577994 +vt 0.105892 0.687499 +vt 0.080887 0.474571 +vt 0.492260 0.334712 +vt 0.492260 0.225206 +vt 0.517265 0.231290 +vt 0.517265 0.121784 +vt 0.068536 0.468488 +vt 0.043531 0.474571 +vt 0.043531 0.365065 +vt 0.068536 0.577994 +vt 0.554621 0.012278 +vt 0.554621 0.121784 +vt 0.529616 0.115701 +vt 0.529616 0.225206 +vt 0.591977 0.359269 +vt 0.591977 0.468775 +vt 0.566971 0.462691 +vt 0.566971 0.572197 +vt 0.492260 0.578281 +vt 0.517265 0.572197 +vt 0.517265 0.681703 +vt 0.492260 0.468775 +vt 0.006175 0.584077 +vt 0.031181 0.577994 +vt 0.031181 0.687499 +vt 0.006175 0.474571 +vt 0.591977 0.012278 +vt 0.591977 0.121784 +vt 0.566971 0.115701 +vt 0.566971 0.225206 +vt 0.454904 0.334712 +vt 0.454904 0.225206 +vt 0.479909 0.231290 +vt 0.479909 0.121784 +vt 0.454904 0.578281 +vt 0.479909 0.572197 +vt 0.479909 0.681703 +vt 0.454904 0.468775 +vt 0.442553 0.231333 +vt 0.417548 0.237417 +vt 0.417548 0.127911 +vt 0.442553 0.340839 +vt 0.629333 0.359269 +vt 0.629333 0.468775 +vt 0.604327 0.462691 +vt 0.604327 0.572197 +vt 0.641683 0.578281 +vt 0.666688 0.572197 +vt 0.666688 0.681703 +vt 0.641683 0.468775 +vt 0.554621 0.359269 +vt 0.554621 0.468775 +vt 0.529616 0.462691 +vt 0.529616 0.572197 +vt 0.442553 0.675304 +vt 0.416823 0.675304 +vt 0.416823 0.520439 +vt 0.416823 0.468818 +vt 0.118243 0.410603 +vt 0.118243 0.358982 +vt 0.143973 0.565468 +vt 0.118243 0.565468 +vt 0.826958 0.006195 +vt 0.826958 0.161059 +vt 0.801228 0.161059 +vt 0.838465 0.214814 +vt 0.838465 0.369678 +vt 0.812735 0.369678 +vt 0.143973 0.577857 +vt 0.143973 0.732722 +vt 0.118243 0.732722 +vt 0.806661 0.832208 +vt 0.806661 0.677343 +vt 0.832391 0.677343 +vt 0.930014 0.342835 +vt 0.955744 0.342835 +vt 0.955744 0.394457 +vt 0.955744 0.266435 +vt 0.930014 0.266435 +vt 0.930014 0.214814 +vt 0.679039 0.865952 +vt 0.679039 0.792975 +vt 0.730499 0.829477 +vt 0.800384 0.397187 +vt 0.748924 0.433689 +vt 0.748924 0.360713 +vt 0.742850 0.921513 +vt 0.788877 0.006195 +vt 0.736573 0.330446 +vt 0.800384 0.549321 +vt 0.679039 0.446078 +vt 0.506364 0.803419 +vt 0.679039 0.240624 +vt 0.679039 0.780586 +vt 0.679039 0.639143 +vt 0.403607 0.824677 +vt 0.089013 0.959014 +vt 0.318529 0.809486 +vt 0.143973 0.822544 +vt 0.803884 0.639143 +vt 0.968095 0.240624 +vt 0.965057 0.776612 +vt 0.923940 0.664437 +vt 0.816234 0.664438 +vt 0.826639 0.934418 +vt 0.951858 0.106374 +vt 0.231874 0.946378 +vt 0.592702 0.992904 +vt 0.966776 0.121827 +vt 0.070894 0.992712 +vt 0.705677 0.976478 +vt 0.955744 0.545853 +vt 0.950578 0.982693 +vt 0.480634 0.992904 +vt 0.949992 0.470857 +vt 0.801228 0.173449 +vt 0.906067 0.989146 +vt 0.006175 0.965990 +vt 0.657420 0.967319 +vt 0.095713 0.732694 +vt 0.159439 0.886554 +vt 0.762828 0.933903 +vt 0.328288 0.992981 +vt 0.442553 0.967749 +vt 0.374377 0.993805 +vt 0.989566 0.597596 +vt 0.926977 0.750801 +vt 0.289300 0.992981 +vt 0.199545 0.982264 +vt 0.209295 0.422992 +vt 0.235933 0.422992 +vt 0.259002 0.436353 +vt 0.272321 0.486216 +vt 0.259002 0.509357 +vt 0.235933 0.522718 +vt 0.209295 0.522718 +vt 0.186226 0.509357 +vt 0.172907 0.459495 +vt 0.759953 0.330872 +vt 0.763990 0.333210 +vt 0.766321 0.341936 +vt 0.759953 0.348324 +vt 0.755292 0.348324 +vt 0.751255 0.345986 +vt 0.748924 0.337260 +vt 0.751255 0.333210 +vt 0.755292 0.330872 +vt 0.069983 0.809094 +vt 0.069983 0.745083 +vt 0.236878 0.650739 +vt 0.137765 0.834933 +vt 0.243629 0.882004 +vt 0.402061 0.888687 +vt 0.262448 0.535107 +vt 0.605960 0.892724 +vt 0.335541 0.847686 +vt 0.330880 0.732053 +vt 0.493892 0.892724 +vt 0.160556 0.217539 +vt 0.031905 0.346593 +vt 0.160556 0.346593 +vt 0.879430 0.908608 +vt 0.991695 0.677343 +vt 0.962928 0.914544 +vt 0.988658 0.642249 +vt 0.988658 0.837628 +vt 0.224528 0.753983 +vt 0.172907 0.869978 +vt 0.377878 0.631612 +vt 0.263570 0.616058 +vt 0.742850 0.677343 +vt 0.173071 0.650739 +vt 0.240789 0.227218 +vt 0.348647 0.954695 +vt 0.554621 0.963697 +vt 0.946797 0.170102 +vt 0.962928 0.825239 +vt 0.965116 0.038458 +vt 0.965116 0.083111 +vt 0.031904 0.809216 +vt 0.288178 0.191728 +vt 0.566971 0.700176 +vt 0.875697 0.006195 +vt 0.774654 0.318057 +vt 0.172907 0.638350 +vt 0.618428 0.803419 +vt 0.038800 0.063909 +vt 0.006175 0.006195 +vt 0.057636 0.042784 +vt 0.160556 0.006195 +vt 0.109096 0.042784 +vt 0.127932 0.063909 +vt 0.057636 0.142749 +vt 0.109096 0.142749 +vt 0.205532 0.121624 +vt 0.224367 0.142749 +vt 0.275828 0.142749 +vt 0.294664 0.121624 +vt 0.327288 0.179339 +vt 0.224367 0.042784 +vt 0.205532 0.063909 +vt 0.275828 0.042784 +vt 0.679039 0.006195 +vt 0.442553 0.687693 +vt 0.398013 0.422992 +vt 0.006175 0.821605 +vt 0.926977 0.738412 +vt 0.950578 0.869891 +vt 0.442553 0.854947 +vt 0.926128 0.067264 +vt 0.045164 0.953601 +vt 0.263570 0.898791 +vt 0.566971 0.892724 +vt 0.950578 0.626238 +vt 0.950578 0.857502 +vt 0.454904 0.892724 +vt 0.302558 0.898791 +vt 0.006175 0.953601 +vt 0.788877 0.199254 +vt 0.888061 0.173449 +vt 0.838465 0.382068 +vt 0.172907 0.933989 +vt 0.630782 0.919045 +vt 0.913777 0.006195 +vt 0.891933 0.318050 +vt 0.885859 0.896218 +vt 0.391099 0.307360 +vt 0.879583 0.446078 +vt 0.794310 0.857502 +vt 0.885859 0.780586 +vt 0.554621 0.700176 +vt 0.873509 0.677343 +vt 0.506364 0.880335 +vt 0.288178 0.422993 +vt 0.315027 0.886402 +vt 0.875710 0.121827 +vt 0.917663 0.523511 +vt 0.879583 0.292246 +vt 0.618432 0.880335 +vt 0.867694 0.626238 +vt 0.391099 0.121827 +vt 0.806661 0.922029 +vt 0.275828 0.410603 +vt 0.879583 0.407878 +vt 0.554621 0.815809 +vt 0.891933 0.433682 +vt 0.248290 0.766372 +vt 0.885859 0.664954 +vt 0.844741 0.818786 +vt 0.630779 0.725987 +vt 0.968095 0.350796 +vt 0.152088 0.950049 +vt 0.969002 0.470857 +vt 0.968095 0.399320 +vt 0.718027 0.977094 +vt 0.968095 0.338407 +vt 0.968095 0.289516 +vt 0.781838 0.970405 +vt 0.393157 0.961148 +vt 0.159439 0.898943 +vt 0.867079 0.908608 +vt 0.236878 0.753466 +vt 0.604327 0.340796 +vt 0.641683 0.006195 +vt 0.080887 0.693583 +vt 0.517265 0.340796 +vt 0.068536 0.358982 +vt 0.529616 0.006195 +vt 0.566971 0.353185 +vt 0.492260 0.687786 +vt 0.006175 0.693583 +vt 0.566971 0.006195 +vt 0.479909 0.340796 +vt 0.454904 0.687787 +vt 0.442553 0.121827 +vt 0.604327 0.353185 +vt 0.641683 0.687787 +vt 0.529616 0.353185 +vt 0.442553 0.468818 +vt 0.143973 0.358982 +vt 0.801228 0.006195 +vt 0.812735 0.214814 +vt 0.118243 0.577857 +vt 0.832391 0.832208 +vt 0.930014 0.394457 +vt 0.955744 0.214814 +vt 0.730499 0.792975 +vt 0.730499 0.865952 +vt 0.800384 0.360713 +vt 0.800384 0.433689 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.447200 0.000000 0.894400 +vn 0.000000 -1.000000 0.000000 +vn 0.447200 0.894400 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.447200 -0.894400 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.447200 0.000000 -0.894400 +vn -0.351100 0.000000 -0.936300 +vn -0.351100 0.000000 0.936300 +vn -0.351100 0.936300 0.000000 +vn -0.351100 -0.936300 0.000000 +vn 0.508600 0.694700 0.508600 +vn 0.258800 0.000000 -0.965900 +vn -0.186200 0.694700 0.694700 +vn 0.707100 0.000000 -0.707100 +vn -0.694700 0.694700 0.186200 +vn 0.965900 0.000000 -0.258800 +vn 0.186200 0.694700 -0.694700 +vn 0.965900 0.000000 0.258800 +vn -0.508600 0.694700 -0.508600 +vn 0.707100 0.000000 0.707100 +vn -0.186200 0.694700 -0.694700 +vn 0.258800 0.000000 0.965900 +vn 0.508600 0.694700 -0.508600 +vn -0.258800 0.000000 0.965900 +vn 0.694700 0.694700 0.186200 +vn -0.707100 0.000000 0.707100 +vn 0.186200 0.694700 0.694700 +vn -0.965900 0.000000 0.258800 +vn -0.694700 0.694700 -0.186200 +vn -0.965900 0.000000 -0.258800 +vn -0.508600 0.694700 0.508600 +vn -0.258800 0.000000 -0.965900 +vn -0.707100 0.000000 -0.707100 +vn 0.694700 0.694700 -0.186200 +vn 0.000000 0.242500 -0.970100 +vn 0.970100 0.242500 0.000000 +vn -0.970100 -0.242500 0.000000 +vn 0.000000 -0.242500 0.970100 +vn -0.970100 0.242500 0.000000 +vn 0.970100 -0.242500 0.000000 +vn 0.000000 0.242500 0.970100 +vn 0.000000 -0.242500 -0.970100 +vn -0.013300 0.000000 0.999900 +vn -0.999900 0.000000 -0.013300 +vn 0.999900 0.000000 0.013300 +vn 0.000000 0.694000 -0.719900 +vn 0.000000 -0.002100 -1.000000 +vn -0.999900 0.000000 -0.014000 +vn 1.000000 -0.004800 0.000000 +vn 0.006200 0.000000 1.000000 +vn -0.013300 0.019200 0.999700 +vn 0.005900 0.000000 1.000000 +vn 0.000000 0.006000 1.000000 +vn 0.013300 0.000000 -0.999900 +vn 0.000000 0.707100 0.707100 +vn 0.447800 -0.894200 0.000000 +vn -0.447800 0.894200 0.000000 +vn -0.447200 0.894400 0.000000 +vn -0.832100 0.000000 0.554700 +vn -0.832100 0.000000 -0.554700 +vn 0.000000 0.894400 -0.447200 +vn 0.000000 0.894400 0.447200 +vn 0.000000 -0.894400 0.447200 +vn 0.000000 -0.894400 -0.447200 +vn -0.447200 -0.894400 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.707400 -0.000300 -0.706800 +vn 0.707400 -0.000300 0.706800 +vn -1.000000 0.004800 0.000000 +vn 0.999900 0.000000 0.014000 +vn 0.000000 -0.006000 1.000000 +vn -0.013300 -0.019200 0.999700 +vn 0.447600 -0.894200 -0.000300 +vn 0.447600 -0.894200 0.000300 +vn 0.447600 -0.894200 -0.000100 +vn 0.447600 -0.894200 0.000100 +vn -0.447600 0.894200 -0.000300 +vn -0.447600 0.894200 -0.000100 +vn -0.447600 0.894200 0.000100 +vn -0.447600 0.894200 0.000300 +vn 0.707600 0.000000 -0.706600 +vn 0.707600 0.000000 0.706600 +s off +f 1/1/1 3/2/1 4/3/1 +f 10/4/2 7/5/2 8/6/2 +f 16/7/3 14/8/3 7/9/3 +f 12/10/4 1/11/4 2/12/4 +f 5/13/5 7/14/5 10/15/5 +f 2/16/6 4/17/6 9/18/6 +f 11/19/7 9/20/7 8/21/7 +f 12/22/8 10/23/8 3/24/8 +f 5/25/9 12/26/9 11/27/9 +f 3/28/10 10/29/10 9/30/10 +f 19/31/11 20/32/11 16/33/11 +f 13/34/3 15/35/3 6/36/3 +f 14/8/3 13/34/3 8/37/3 +f 15/35/3 16/7/3 5/38/3 +f 18/39/3 20/40/3 19/41/3 +f 18/42/12 17/43/12 13/44/12 +f 20/45/13 18/46/13 14/47/13 +f 17/48/14 19/49/14 15/50/14 +f 22/51/2 21/52/2 23/53/2 +f 25/54/9 26/55/9 24/56/9 +f 38/57/5 30/58/5 33/59/5 +f 39/60/5 37/61/5 28/62/5 +f 31/63/5 40/64/5 36/65/5 +f 29/66/5 34/67/5 41/68/5 +f 73/69/7 72/70/7 86/71/7 +f 56/72/15 54/73/15 71/74/15 +f 46/75/16 48/76/16 47/77/16 +f 43/78/7 78/79/7 80/80/7 +f 60/81/17 58/82/17 73/83/17 +f 48/84/18 50/85/18 49/86/18 +f 44/87/7 90/88/7 89/89/7 +f 64/90/19 62/91/19 75/92/19 +f 50/93/20 52/94/20 51/95/20 +f 75/96/7 83/97/7 82/98/7 +f 46/99/21 43/100/21 44/101/21 +f 52/102/22 54/103/22 53/104/22 +f 73/69/7 85/105/7 84/106/7 +f 66/107/23 77/108/23 78/109/23 +f 54/110/24 56/111/24 55/112/24 +f 71/113/7 87/114/7 86/71/7 +f 46/115/25 68/116/25 78/117/25 +f 56/118/26 58/119/26 57/120/26 +f 70/121/7 69/122/7 89/89/7 +f 48/123/27 44/124/27 69/125/27 +f 58/126/28 60/127/28 59/128/28 +f 77/129/7 81/130/7 80/80/7 +f 52/131/29 70/132/29 71/133/29 +f 60/134/30 62/135/30 61/136/30 +f 85/137/28 97/138/28 96/139/28 +f 58/140/31 56/141/31 72/142/31 +f 62/143/32 64/144/32 63/145/32 +f 64/146/33 76/147/33 77/148/33 +f 43/78/7 79/149/7 90/88/7 +f 64/150/34 66/151/34 65/152/34 +f 60/153/35 74/154/35 75/155/35 +f 68/156/36 46/157/36 45/158/36 +f 66/159/37 68/160/37 67/161/37 +f 71/113/7 70/121/7 88/162/7 +f 50/163/38 69/164/38 70/165/38 +f 51/166/5 63/167/5 67/168/5 +f 74/169/7 84/106/7 83/97/7 +f 76/170/7 82/98/7 81/130/7 +f 93/171/7 97/172/7 91/173/7 +f 82/174/34 94/175/34 93/176/34 +f 89/177/20 101/178/20 100/179/20 +f 86/180/26 98/181/26 97/182/26 +f 83/183/32 95/184/32 94/185/32 +f 90/186/18 102/187/18 101/188/18 +f 80/189/36 92/190/36 91/191/36 +f 87/192/24 99/193/24 98/194/24 +f 84/195/30 96/196/30 95/197/30 +f 79/198/16 91/199/16 102/200/16 +f 81/201/37 93/202/37 92/203/37 +f 88/204/22 100/205/22 99/206/22 +f 106/207/7 104/208/7 103/209/7 +f 108/210/7 107/211/7 109/212/7 +f 111/213/7 113/214/7 114/215/7 +f 117/216/7 118/217/7 116/218/7 +f 57/219/7 118/217/7 117/216/7 +f 110/220/7 51/221/7 108/210/7 +f 109/212/7 104/208/7 45/222/7 +f 116/218/7 118/217/7 63/223/7 +f 262/224/39 109/225/39 107/226/39 +f 107/227/40 108/228/40 264/229/40 +f 266/230/41 110/231/41 109/232/41 +f 108/233/42 110/234/42 266/235/42 +f 103/236/39 104/237/39 268/238/39 +f 272/239/43 105/240/43 103/241/43 +f 274/242/42 106/243/42 105/244/42 +f 41/245/44 34/246/44 267/247/44 +f 286/248/40 113/249/40 111/250/40 +f 111/251/45 112/252/45 288/253/45 +f 285/254/46 37/255/46 39/256/46 +f 112/257/41 114/258/41 290/259/41 +f 40/260/46 31/261/46 277/262/46 +f 279/263/44 36/264/44 40/265/44 +f 280/266/45 117/267/45 115/268/45 +f 115/269/43 116/270/43 278/271/43 +f 106/207/7 67/272/7 45/222/7 +f 63/223/7 65/273/7 106/207/7 +f 106/207/7 65/273/7 67/272/7 +f 110/220/7 45/222/7 47/274/7 +f 110/220/7 47/274/7 49/275/7 +f 49/275/7 51/221/7 110/220/7 +f 114/215/7 51/221/7 53/276/7 +f 114/215/7 53/276/7 55/277/7 +f 55/277/7 57/219/7 114/215/7 +f 57/219/7 59/278/7 118/217/7 +f 118/217/7 59/278/7 61/279/7 +f 61/279/7 63/223/7 118/217/7 +f 121/280/47 119/281/47 120/282/47 +f 120/283/48 124/284/48 126/285/48 +f 121/286/49 125/287/49 123/288/49 +f 121/289/5 122/290/5 126/291/5 +f 119/292/7 123/293/7 124/294/7 +f 130/295/3 129/296/3 127/297/3 +f 134/298/50 137/299/50 135/300/50 +f 132/301/1 131/302/1 133/303/1 +f 135/304/51 137/305/51 138/306/51 +f 129/307/5 133/308/5 131/309/5 +f 134/310/7 130/311/7 128/312/7 +f 129/296/52 130/295/52 135/313/52 +f 133/303/53 138/314/53 137/315/53 +f 129/307/5 136/316/5 138/317/5 +f 131/318/54 132/319/54 123/320/54 +f 124/321/55 123/320/55 132/319/55 +f 128/322/56 127/323/56 126/324/56 +f 126/324/57 127/323/57 131/318/57 +f 140/325/58 139/326/58 141/327/58 +f 145/328/47 143/329/47 144/330/47 +f 142/331/5 141/332/5 145/333/5 +f 140/334/7 144/335/7 143/336/7 +f 142/337/48 146/338/48 144/339/48 +f 139/340/49 143/341/49 145/342/49 +f 150/343/3 149/344/3 147/345/3 +f 154/346/2 153/347/2 149/348/2 +f 152/349/1 151/350/1 153/351/1 +f 148/352/59 156/353/59 157/354/59 +f 149/355/5 153/356/5 151/357/5 +f 154/358/7 150/359/7 148/360/7 +f 156/361/9 155/362/9 158/363/9 +f 151/350/1 152/349/1 157/364/1 +f 147/345/3 155/365/3 156/366/3 +f 151/357/5 158/367/5 155/368/5 +f 207/369/60 167/370/60 208/371/60 +f 161/372/8 164/373/8 163/374/8 +f 159/375/8 171/376/8 170/377/8 +f 173/378/8 159/375/8 161/372/8 +f 183/379/61 211/380/61 212/381/61 +f 180/382/62 178/383/62 177/384/62 +f 187/385/62 175/386/62 186/387/62 +f 189/388/62 177/384/62 175/386/62 +f 177/389/2 178/390/2 162/391/2 +f 177/392/7 193/393/7 194/394/7 +f 160/395/9 176/396/9 175/397/9 +f 211/398/3 215/399/3 216/400/3 +f 168/401/37 169/402/37 185/403/37 +f 186/404/36 185/405/36 169/406/36 +f 170/407/16 171/408/16 187/409/16 +f 171/410/18 172/411/18 188/412/18 +f 172/413/20 173/414/20 189/415/20 +f 174/416/22 190/417/22 189/418/22 +f 163/419/24 179/420/24 190/421/24 +f 164/422/26 180/423/26 179/424/26 +f 165/425/28 181/426/28 180/427/28 +f 166/428/30 182/429/30 181/430/30 +f 167/431/32 183/432/32 182/433/32 +f 167/434/34 168/435/34 184/436/34 +f 194/437/3 193/438/3 191/439/3 +f 175/440/63 194/441/63 192/442/63 +f 159/443/5 192/444/5 191/445/5 +f 161/446/64 191/447/64 193/448/64 +f 198/449/3 197/450/3 195/451/3 +f 202/452/2 201/453/2 197/454/2 +f 200/455/1 199/456/1 201/457/1 +f 196/458/9 195/459/9 199/460/9 +f 197/461/5 201/462/5 199/463/5 +f 198/464/65 204/465/65 205/466/65 +f 206/467/9 210/468/9 207/469/9 +f 202/470/6 205/471/6 206/472/6 +f 196/473/62 203/474/62 204/475/62 +f 200/476/66 206/477/66 203/478/66 +f 209/479/1 213/480/1 214/481/1 +f 204/482/2 208/483/2 209/484/2 +f 205/485/1 209/479/1 210/486/1 +f 203/487/3 207/488/3 208/489/3 +f 214/490/7 211/491/7 176/492/7 +f 295/493/5 160/494/5 207/495/5 +f 285/496/7 210/497/7 295/498/7 +f 226/499/67 224/500/67 215/501/67 +f 214/502/9 218/503/9 215/504/9 +f 212/505/2 216/506/2 217/507/2 +f 213/480/1 217/508/1 218/509/1 +f 208/510/5 162/511/5 296/512/5 +f 296/513/7 209/514/7 263/515/7 +f 212/516/7 213/517/7 178/518/7 +f 221/519/7 222/520/7 220/521/7 +f 225/522/8 226/523/8 218/524/8 +f 221/525/1 226/526/1 225/527/1 +f 220/528/3 223/529/3 224/530/3 +f 219/531/9 224/532/9 226/533/9 +f 222/534/2 225/535/2 223/536/2 +f 223/537/68 225/538/68 217/539/68 +f 224/540/69 223/541/69 216/542/69 +f 234/543/7 242/544/7 236/545/7 +f 232/546/7 240/547/7 241/548/7 +f 230/549/7 238/550/7 239/551/7 +f 227/552/7 235/553/7 237/554/7 +f 245/555/70 243/556/70 227/557/70 +f 247/558/70 246/559/70 230/560/70 +f 249/561/70 248/562/70 232/563/70 +f 244/564/70 250/565/70 234/566/70 +f 253/567/1 251/568/1 243/569/1 +f 255/570/1 254/571/1 246/572/1 +f 257/573/1 256/574/1 248/575/1 +f 252/576/1 258/577/1 250/578/1 +f 263/579/42 265/580/42 42/581/42 +f 264/582/42 266/235/42 265/580/42 +f 42/583/41 265/584/41 261/585/41 +f 265/584/41 266/230/41 262/586/41 +f 259/587/40 263/588/40 33/589/40 +f 260/590/40 264/229/40 263/588/40 +f 38/591/39 261/592/39 259/593/39 +f 261/592/39 262/224/39 260/594/39 +f 274/595/44 268/596/44 104/597/44 +f 273/598/44 267/247/44 268/596/44 +f 41/599/42 273/600/42 271/601/42 +f 273/600/42 274/242/42 272/602/42 +f 35/603/43 271/604/43 269/605/43 +f 271/604/43 272/239/43 270/606/43 +f 269/607/39 267/608/39 34/609/39 +f 270/610/39 268/238/39 267/608/39 +f 281/611/43 277/612/43 31/613/43 +f 282/614/43 278/271/43 277/612/43 +f 36/615/45 279/616/45 281/617/45 +f 279/616/45 280/266/45 282/618/45 +f 117/619/44 280/620/44 276/621/44 +f 280/620/44 279/263/44 275/622/44 +f 276/623/46 278/624/46 116/625/46 +f 275/626/46 277/262/46 278/624/46 +f 287/627/41 289/628/41 39/629/41 +f 288/630/41 290/259/41 289/628/41 +f 113/631/46 286/632/46 290/633/46 +f 286/632/46 285/254/46 289/634/46 +f 283/635/45 287/636/45 32/637/45 +f 284/638/45 288/253/45 287/636/45 +f 37/639/40 285/640/40 283/641/40 +f 285/640/40 286/248/40 284/642/40 +f 275/643/7 279/644/7 128/312/7 +f 134/310/7 132/645/7 287/646/7 +f 154/358/7 152/647/7 265/648/7 +f 267/649/7 273/650/7 148/360/7 +f 262/651/7 268/652/7 274/653/7 +f 272/654/7 278/655/7 276/656/7 +f 290/657/7 276/658/7 280/659/7 +f 286/660/7 264/661/7 266/662/7 +f 273/663/7 271/664/7 291/665/7 +f 277/666/7 275/667/7 293/668/7 +f 178/669/71 213/670/71 296/671/71 +f 295/672/72 214/673/72 176/674/72 +f 2/675/1 1/1/1 4/3/1 +f 9/676/2 10/4/2 8/6/2 +f 5/38/3 16/7/3 7/9/3 +f 11/677/4 12/10/4 2/12/4 +f 12/678/5 5/13/5 10/15/5 +f 11/679/6 2/16/6 9/18/6 +f 6/680/7 11/19/7 8/21/7 +f 1/681/8 12/22/8 3/24/8 +f 6/682/9 5/25/9 11/27/9 +f 4/683/10 3/28/10 9/30/10 +f 15/684/11 19/31/11 16/33/11 +f 8/37/3 13/34/3 6/36/3 +f 7/9/3 14/8/3 8/37/3 +f 6/36/3 15/35/3 5/38/3 +f 17/685/3 18/39/3 19/41/3 +f 14/686/12 18/42/12 13/44/12 +f 16/687/13 20/45/13 14/47/13 +f 13/688/14 17/48/14 15/50/14 +f 42/689/5 38/57/5 33/59/5 +f 32/690/5 39/60/5 28/62/5 +f 27/691/5 31/63/5 36/65/5 +f 35/692/5 29/66/5 41/68/5 +f 85/105/7 73/69/7 86/71/7 +f 72/693/15 56/72/15 71/74/15 +f 45/694/16 46/75/16 47/77/16 +f 79/149/7 43/78/7 80/80/7 +f 74/695/17 60/81/17 73/83/17 +f 47/696/18 48/84/18 49/86/18 +f 69/122/7 44/87/7 89/89/7 +f 76/697/19 64/90/19 75/92/19 +f 49/698/20 50/93/20 51/95/20 +f 76/170/7 75/96/7 82/98/7 +f 48/699/21 46/99/21 44/101/21 +f 51/700/22 52/102/22 53/104/22 +f 74/169/7 73/69/7 84/106/7 +f 68/701/23 66/107/23 78/109/23 +f 53/702/24 54/110/24 55/112/24 +f 72/70/7 71/113/7 86/71/7 +f 43/703/25 46/115/25 78/117/25 +f 55/704/26 56/118/26 57/120/26 +f 88/162/7 70/121/7 89/89/7 +f 50/705/27 48/123/27 69/125/27 +f 57/706/28 58/126/28 59/128/28 +f 78/79/7 77/129/7 80/80/7 +f 54/707/29 52/131/29 71/133/29 +f 59/708/30 60/134/30 61/136/30 +f 84/709/28 85/137/28 96/139/28 +f 73/710/31 58/140/31 72/142/31 +f 61/711/32 62/143/32 63/145/32 +f 66/712/33 64/146/33 77/148/33 +f 44/87/7 43/78/7 90/88/7 +f 63/713/34 64/150/34 65/152/34 +f 62/714/35 60/153/35 75/155/35 +f 67/715/36 68/156/36 45/158/36 +f 65/716/37 66/159/37 67/161/37 +f 87/114/7 71/113/7 88/162/7 +f 52/717/38 50/163/38 70/165/38 +f 67/168/5 45/718/5 47/719/5 +f 47/719/5 49/720/5 67/168/5 +f 51/166/5 53/721/5 55/722/5 +f 55/722/5 57/723/5 59/724/5 +f 59/724/5 61/725/5 63/167/5 +f 63/167/5 65/726/5 67/168/5 +f 67/168/5 49/720/5 51/166/5 +f 51/166/5 55/722/5 59/724/5 +f 59/724/5 63/167/5 51/166/5 +f 75/96/7 74/169/7 83/97/7 +f 77/129/7 76/170/7 81/130/7 +f 101/727/7 102/728/7 91/173/7 +f 91/173/7 92/729/7 93/171/7 +f 93/171/7 94/730/7 97/172/7 +f 95/731/7 96/732/7 97/172/7 +f 97/172/7 98/733/7 99/734/7 +f 99/734/7 100/735/7 97/172/7 +f 101/727/7 91/173/7 97/172/7 +f 94/730/7 95/731/7 97/172/7 +f 97/172/7 100/735/7 101/727/7 +f 81/736/34 82/174/34 93/176/34 +f 88/737/20 89/177/20 100/179/20 +f 85/738/26 86/180/26 97/182/26 +f 82/739/32 83/183/32 94/185/32 +f 89/740/18 90/186/18 101/188/18 +f 79/741/36 80/189/36 91/191/36 +f 86/742/24 87/192/24 98/194/24 +f 83/743/30 84/195/30 95/197/30 +f 90/744/16 79/198/16 102/200/16 +f 80/745/37 81/201/37 92/203/37 +f 87/746/22 88/204/22 99/206/22 +f 105/747/7 106/207/7 103/209/7 +f 110/220/7 108/210/7 109/212/7 +f 112/748/7 111/213/7 114/215/7 +f 115/749/7 117/216/7 116/218/7 +f 117/216/7 112/748/7 57/219/7 +f 114/215/7 57/219/7 112/748/7 +f 113/214/7 108/210/7 51/221/7 +f 51/221/7 114/215/7 113/214/7 +f 106/207/7 45/222/7 104/208/7 +f 110/220/7 109/212/7 45/222/7 +f 63/223/7 106/207/7 105/747/7 +f 105/747/7 116/218/7 63/223/7 +f 260/594/39 262/224/39 107/226/39 +f 260/590/40 107/227/40 264/229/40 +f 262/586/41 266/230/41 109/232/41 +f 264/582/42 108/233/42 266/235/42 +f 270/610/39 103/236/39 268/238/39 +f 270/606/43 272/239/43 103/241/43 +f 272/602/42 274/242/42 105/244/42 +f 273/598/44 41/245/44 267/247/44 +f 284/642/40 286/248/40 111/250/40 +f 284/638/45 111/251/45 288/253/45 +f 289/634/46 285/254/46 39/256/46 +f 288/630/41 112/257/41 290/259/41 +f 275/626/46 40/260/46 277/262/46 +f 275/622/44 279/263/44 40/265/44 +f 282/618/45 280/266/45 115/268/45 +f 282/614/43 115/269/43 278/271/43 +f 122/750/47 121/280/47 120/282/47 +f 122/751/48 120/283/48 126/285/48 +f 119/752/49 121/286/49 123/288/49 +f 125/753/5 121/289/5 126/291/5 +f 120/754/7 119/292/7 124/294/7 +f 128/755/3 130/295/3 127/297/3 +f 130/756/50 134/298/50 135/300/50 +f 134/757/1 132/301/1 133/303/1 +f 136/758/51 135/304/51 138/306/51 +f 127/759/5 129/307/5 131/309/5 +f 132/645/7 134/310/7 128/312/7 +f 136/760/73 129/296/73 135/313/73 +f 134/757/74 133/303/74 137/315/74 +f 133/308/5 129/307/5 138/317/5 +f 125/761/54 131/318/54 123/320/54 +f 128/322/75 124/321/75 132/319/75 +f 124/321/56 128/322/56 126/324/56 +f 125/761/76 126/324/76 131/318/76 +f 142/762/58 140/325/58 141/327/58 +f 146/763/47 145/328/47 144/330/47 +f 146/764/5 142/331/5 145/333/5 +f 139/765/7 140/334/7 143/336/7 +f 140/766/48 142/337/48 144/339/48 +f 141/767/49 139/340/49 145/342/49 +f 148/768/3 150/343/3 147/345/3 +f 150/769/2 154/346/2 149/348/2 +f 154/770/1 152/349/1 153/351/1 +f 152/771/59 148/352/59 157/354/59 +f 147/772/5 149/355/5 151/357/5 +f 152/647/7 154/358/7 148/360/7 +f 157/773/9 156/361/9 158/363/9 +f 158/774/1 151/350/1 157/364/1 +f 148/768/3 147/345/3 156/366/3 +f 147/772/5 151/357/5 155/368/5 +f 165/775/8 162/776/8 166/777/8 +f 207/369/77 160/778/77 168/779/77 +f 166/777/78 162/776/78 208/371/78 +f 160/778/8 169/780/8 168/779/8 +f 166/777/79 208/371/79 167/370/79 +f 207/369/80 168/779/80 167/370/80 +f 174/781/8 173/378/8 161/372/8 +f 161/372/8 162/776/8 164/373/8 +f 163/374/8 174/781/8 161/372/8 +f 162/776/8 165/775/8 164/373/8 +f 170/377/8 169/780/8 160/778/8 +f 159/375/8 173/378/8 172/782/8 +f 170/377/8 160/778/8 159/375/8 +f 159/375/8 172/782/8 171/376/8 +f 178/383/62 181/783/62 182/784/62 +f 184/785/62 185/786/62 176/787/62 +f 178/383/81 182/784/81 212/381/81 +f 183/379/82 184/785/82 211/380/82 +f 212/381/83 182/784/83 183/379/83 +f 184/785/84 176/787/84 211/380/84 +f 177/384/62 189/388/62 190/788/62 +f 180/382/62 181/783/62 178/383/62 +f 177/384/62 190/788/62 179/789/62 +f 179/789/62 180/382/62 177/384/62 +f 176/787/62 185/786/62 186/387/62 +f 188/790/62 189/388/62 175/386/62 +f 176/787/62 186/387/62 175/386/62 +f 187/385/62 188/790/62 175/386/62 +f 161/791/2 177/389/2 162/391/2 +f 175/792/7 177/392/7 194/394/7 +f 159/793/9 160/395/9 175/397/9 +f 212/794/3 211/398/3 216/400/3 +f 184/795/37 168/401/37 185/403/37 +f 170/796/36 186/404/36 169/406/36 +f 186/797/16 170/407/16 187/409/16 +f 187/798/18 171/410/18 188/412/18 +f 188/799/20 172/413/20 189/415/20 +f 173/800/22 174/416/22 189/418/22 +f 174/801/24 163/419/24 190/421/24 +f 163/802/26 164/422/26 179/424/26 +f 164/803/28 165/425/28 180/427/28 +f 165/804/30 166/428/30 181/430/30 +f 166/805/32 167/431/32 182/433/32 +f 183/806/34 167/434/34 184/436/34 +f 192/807/3 194/437/3 191/439/3 +f 159/808/63 175/440/63 192/442/63 +f 161/809/5 159/443/5 191/445/5 +f 177/810/64 161/446/64 193/448/64 +f 196/811/3 198/449/3 195/451/3 +f 198/812/2 202/452/2 197/454/2 +f 202/813/1 200/455/1 201/457/1 +f 200/814/9 196/458/9 199/460/9 +f 195/815/5 197/461/5 199/463/5 +f 202/816/65 198/464/65 205/466/65 +f 203/817/9 206/467/9 207/469/9 +f 200/818/6 202/470/6 206/472/6 +f 198/819/62 196/473/62 204/475/62 +f 196/820/66 200/476/66 203/478/66 +f 210/486/1 209/479/1 214/481/1 +f 205/821/2 204/482/2 209/484/2 +f 206/822/1 205/485/1 210/486/1 +f 204/823/3 203/487/3 208/489/3 +f 210/824/5 295/493/5 207/495/5 +f 289/825/7 285/496/7 295/498/7 +f 218/826/67 226/499/67 215/501/67 +f 211/827/9 214/502/9 215/504/9 +f 213/828/2 212/505/2 217/507/2 +f 214/481/1 213/480/1 218/509/1 +f 209/829/5 208/510/5 296/512/5 +f 265/830/7 296/513/7 263/515/7 +f 219/831/7 221/519/7 220/521/7 +f 217/832/8 225/522/8 218/524/8 +f 222/833/1 221/525/1 225/527/1 +f 219/834/3 220/528/3 224/530/3 +f 221/835/9 219/531/9 226/533/9 +f 220/836/2 222/534/2 223/536/2 +f 216/837/68 223/537/68 217/539/68 +f 215/838/69 224/540/69 216/542/69 +f 228/839/7 234/543/7 236/545/7 +f 233/840/7 232/546/7 241/548/7 +f 231/841/7 230/549/7 239/551/7 +f 229/842/7 227/552/7 237/554/7 +f 229/843/70 245/555/70 227/557/70 +f 231/844/70 247/558/70 230/560/70 +f 233/845/70 249/561/70 232/563/70 +f 228/846/70 244/564/70 234/566/70 +f 245/847/1 253/567/1 243/569/1 +f 247/848/1 255/570/1 246/572/1 +f 249/849/1 257/573/1 248/575/1 +f 244/850/1 252/576/1 250/578/1 +f 33/851/42 263/579/42 42/581/42 +f 263/579/42 264/582/42 265/580/42 +f 38/852/41 42/583/41 261/585/41 +f 261/585/41 265/584/41 262/586/41 +f 30/853/40 259/587/40 33/589/40 +f 259/587/40 260/590/40 263/588/40 +f 30/854/39 38/591/39 259/593/39 +f 259/593/39 261/592/39 260/594/39 +f 106/855/44 274/595/44 104/597/44 +f 274/595/44 273/598/44 268/596/44 +f 35/856/42 41/599/42 271/601/42 +f 271/601/42 273/600/42 272/602/42 +f 29/857/43 35/603/43 269/605/43 +f 269/605/43 271/604/43 270/606/43 +f 29/858/39 269/607/39 34/609/39 +f 269/607/39 270/610/39 267/608/39 +f 27/859/43 281/611/43 31/613/43 +f 281/611/43 282/614/43 277/612/43 +f 27/860/45 36/615/45 281/617/45 +f 281/617/45 279/616/45 282/618/45 +f 118/861/44 117/619/44 276/621/44 +f 276/621/44 280/620/44 275/622/44 +f 118/862/46 276/623/46 116/625/46 +f 276/623/46 275/626/46 278/624/46 +f 32/863/41 287/627/41 39/629/41 +f 287/627/41 288/630/41 289/628/41 +f 114/864/46 113/631/46 290/633/46 +f 290/633/46 286/632/46 289/634/46 +f 28/865/45 283/635/45 32/637/45 +f 283/635/45 284/638/45 287/636/45 +f 28/866/40 37/639/40 283/641/40 +f 283/641/40 285/640/40 284/642/40 +f 130/311/7 275/643/7 128/312/7 +f 289/867/7 134/310/7 287/646/7 +f 261/868/7 154/358/7 265/648/7 +f 150/359/7 267/649/7 148/360/7 +f 266/869/7 262/651/7 274/653/7 +f 274/870/7 272/654/7 276/656/7 +f 288/871/7 290/657/7 280/659/7 +f 290/872/7 286/660/7 266/662/7 +f 292/873/7 273/663/7 291/665/7 +f 294/874/7 277/666/7 293/668/7 +f 209/875/18 296/671/18 213/670/18 +f 162/876/85 178/669/85 296/671/85 +f 176/674/86 160/877/86 295/672/86 +f 295/672/24 210/878/24 214/673/24 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 6da239b82..8ab9dd92f 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -34,6 +34,9 @@ "weapon.immolatorShoot": {"category": "player", "sounds": [{"name": "weapon/immolatorShoot", "stream": false}]}, "weapon.cryolatorShoot": {"category": "player", "sounds": [{"name": "weapon/cryolatorShoot", "stream": false}]}, "weapon.missileTakeOff": {"category": "player", "sounds": [{"name": "weapon/missileTakeOff", "stream": false}]}, + "weapon.defabSpinup": {"category": "player", "sounds": [{"name": "weapon/defabSpinup", "stream": false}]}, + "weapon.defabShoot": {"category": "player", "sounds": [{"name": "weapon/defabShoot", "stream": false}]}, + "weapon.sparkShoot": {"category": "player", "sounds": ["weapon/sparkShoot1", "weapon/sparkShoot2", "weapon/sparkShoot3"]}, "entity.chopperFlyingLoop": {"category": "hostile", "sounds": [{"name": "entity/chopperFlyingLoop", "stream": true}]}, "entity.chopperDrop": {"category": "hostile", "sounds": [{"name": "entity/chopperDrop", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/defabShoot.ogg b/assets/hbm/sounds/weapon/defabShoot.ogg new file mode 100644 index 000000000..f793c7b6a Binary files /dev/null and b/assets/hbm/sounds/weapon/defabShoot.ogg differ diff --git a/assets/hbm/sounds/weapon/defabSpinup.ogg b/assets/hbm/sounds/weapon/defabSpinup.ogg new file mode 100644 index 000000000..6e662e35b Binary files /dev/null and b/assets/hbm/sounds/weapon/defabSpinup.ogg differ diff --git a/assets/hbm/sounds/weapon/sparkShoot1.ogg b/assets/hbm/sounds/weapon/sparkShoot1.ogg new file mode 100644 index 000000000..e3d2992d6 Binary files /dev/null and b/assets/hbm/sounds/weapon/sparkShoot1.ogg differ diff --git a/assets/hbm/sounds/weapon/sparkShoot2.ogg b/assets/hbm/sounds/weapon/sparkShoot2.ogg new file mode 100644 index 000000000..3a466efb2 Binary files /dev/null and b/assets/hbm/sounds/weapon/sparkShoot2.ogg differ diff --git a/assets/hbm/sounds/weapon/sparkShoot3.ogg b/assets/hbm/sounds/weapon/sparkShoot3.ogg new file mode 100644 index 000000000..770c05b16 Binary files /dev/null and b/assets/hbm/sounds/weapon/sparkShoot3.ogg differ diff --git a/assets/hbm/textures/blocks/crate_iron_side.png b/assets/hbm/textures/blocks/crate_iron_side.png new file mode 100644 index 000000000..f32ef1041 Binary files /dev/null and b/assets/hbm/textures/blocks/crate_iron_side.png differ diff --git a/assets/hbm/textures/blocks/crate_iron_top.png b/assets/hbm/textures/blocks/crate_iron_top.png new file mode 100644 index 000000000..b2c81a8ae Binary files /dev/null and b/assets/hbm/textures/blocks/crate_iron_top.png differ diff --git a/assets/hbm/textures/blocks/crate_steel_side.png b/assets/hbm/textures/blocks/crate_steel_side.png new file mode 100644 index 000000000..9765924b7 Binary files /dev/null and b/assets/hbm/textures/blocks/crate_steel_side.png differ diff --git a/assets/hbm/textures/blocks/crate_steel_top.png b/assets/hbm/textures/blocks/crate_steel_top.png new file mode 100644 index 000000000..582ba1a63 Binary files /dev/null and b/assets/hbm/textures/blocks/crate_steel_top.png differ diff --git a/assets/hbm/textures/blocks/drill_pipe.png b/assets/hbm/textures/blocks/drill_pipe.png new file mode 100644 index 000000000..ce47da701 Binary files /dev/null and b/assets/hbm/textures/blocks/drill_pipe.png differ diff --git a/assets/hbm/textures/blocks/marker_structure.png b/assets/hbm/textures/blocks/marker_structure.png new file mode 100755 index 000000000..9d7ad2cad Binary files /dev/null and b/assets/hbm/textures/blocks/marker_structure.png differ diff --git a/assets/hbm/textures/blocks/red_pylon.png b/assets/hbm/textures/blocks/red_pylon.png new file mode 100644 index 000000000..edaca7755 Binary files /dev/null and b/assets/hbm/textures/blocks/red_pylon.png differ diff --git a/assets/hbm/textures/gui/gui_drill.png b/assets/hbm/textures/gui/gui_drill.png new file mode 100644 index 000000000..7aab1b10c Binary files /dev/null and b/assets/hbm/textures/gui/gui_drill.png differ diff --git a/assets/hbm/textures/gui/gui_nei_refinery.png b/assets/hbm/textures/gui/gui_nei_refinery.png new file mode 100644 index 000000000..dc2c7f996 Binary files /dev/null and b/assets/hbm/textures/gui/gui_nei_refinery.png differ diff --git a/assets/hbm/textures/items/canister_petroil.png b/assets/hbm/textures/items/canister_petroil.png new file mode 100644 index 000000000..0c7aa508d Binary files /dev/null and b/assets/hbm/textures/items/canister_petroil.png differ diff --git a/assets/hbm/textures/items/canister_reoil.png b/assets/hbm/textures/items/canister_reoil.png new file mode 100644 index 000000000..729168060 Binary files /dev/null and b/assets/hbm/textures/items/canister_reoil.png differ diff --git a/assets/hbm/textures/items/fragment_actinium.png b/assets/hbm/textures/items/fragment_actinium.png new file mode 100644 index 000000000..24808309d Binary files /dev/null and b/assets/hbm/textures/items/fragment_actinium.png differ diff --git a/assets/hbm/textures/items/fragment_cerium.png b/assets/hbm/textures/items/fragment_cerium.png new file mode 100644 index 000000000..abee3a38e Binary files /dev/null and b/assets/hbm/textures/items/fragment_cerium.png differ diff --git a/assets/hbm/textures/items/fragment_cobalt.png b/assets/hbm/textures/items/fragment_cobalt.png new file mode 100644 index 000000000..b844b3222 Binary files /dev/null and b/assets/hbm/textures/items/fragment_cobalt.png differ diff --git a/assets/hbm/textures/items/fragment_lanthanium.png b/assets/hbm/textures/items/fragment_lanthanium.png new file mode 100644 index 000000000..552b1c41b Binary files /dev/null and b/assets/hbm/textures/items/fragment_lanthanium.png differ diff --git a/assets/hbm/textures/items/fragment_neodymium.png b/assets/hbm/textures/items/fragment_neodymium.png new file mode 100644 index 000000000..e8ea7cf4f Binary files /dev/null and b/assets/hbm/textures/items/fragment_neodymium.png differ diff --git a/assets/hbm/textures/items/fragment_niobium.png b/assets/hbm/textures/items/fragment_niobium.png new file mode 100644 index 000000000..25782d270 Binary files /dev/null and b/assets/hbm/textures/items/fragment_niobium.png differ diff --git a/assets/hbm/textures/items/gun_defabricator.png b/assets/hbm/textures/items/gun_defabricator.png new file mode 100644 index 000000000..e4b21e0b6 Binary files /dev/null and b/assets/hbm/textures/items/gun_defabricator.png differ diff --git a/assets/hbm/textures/items/gun_defabricator_ammo.png b/assets/hbm/textures/items/gun_defabricator_ammo.png new file mode 100644 index 000000000..8b4ad03e3 Binary files /dev/null and b/assets/hbm/textures/items/gun_defabricator_ammo.png differ diff --git a/assets/hbm/textures/items/gun_hp.png b/assets/hbm/textures/items/gun_hp.png new file mode 100644 index 000000000..9c65ba2e2 Binary files /dev/null and b/assets/hbm/textures/items/gun_hp.png differ diff --git a/assets/hbm/textures/items/gun_hp_ammo.png b/assets/hbm/textures/items/gun_hp_ammo.png new file mode 100644 index 000000000..4c7f3acf5 Binary files /dev/null and b/assets/hbm/textures/items/gun_hp_ammo.png differ diff --git a/assets/hbm/textures/items/gun_spark.png b/assets/hbm/textures/items/gun_spark.png new file mode 100644 index 000000000..d308afeef Binary files /dev/null and b/assets/hbm/textures/items/gun_spark.png differ diff --git a/assets/hbm/textures/items/gun_spark_ammo.png b/assets/hbm/textures/items/gun_spark_ammo.png new file mode 100644 index 000000000..150780fcb Binary files /dev/null and b/assets/hbm/textures/items/gun_spark_ammo.png differ diff --git a/assets/hbm/textures/items/ingot_desh.png b/assets/hbm/textures/items/ingot_desh.png new file mode 100644 index 000000000..5d6e1e85e Binary files /dev/null and b/assets/hbm/textures/items/ingot_desh.png differ diff --git a/assets/hbm/textures/items/nugget_desh.png b/assets/hbm/textures/items/nugget_desh.png new file mode 100644 index 000000000..4fdf1a57b Binary files /dev/null and b/assets/hbm/textures/items/nugget_desh.png differ diff --git a/assets/hbm/textures/items/plate_dalekanium.png b/assets/hbm/textures/items/plate_dalekanium.png new file mode 100644 index 000000000..d49479a50 Binary files /dev/null and b/assets/hbm/textures/items/plate_dalekanium.png differ diff --git a/assets/hbm/textures/items/powder_cobalt_tiny.png b/assets/hbm/textures/items/powder_cobalt_tiny.png new file mode 100644 index 000000000..951d383ed Binary files /dev/null and b/assets/hbm/textures/items/powder_cobalt_tiny.png differ diff --git a/assets/hbm/textures/items/powder_desh.png b/assets/hbm/textures/items/powder_desh.png new file mode 100644 index 000000000..5ae4a5f24 Binary files /dev/null and b/assets/hbm/textures/items/powder_desh.png differ diff --git a/assets/hbm/textures/items/powder_lithium_tiny.png b/assets/hbm/textures/items/powder_lithium_tiny.png new file mode 100644 index 000000000..d2f3419d3 Binary files /dev/null and b/assets/hbm/textures/items/powder_lithium_tiny.png differ diff --git a/assets/hbm/textures/items/upgrade_effect_1.png b/assets/hbm/textures/items/upgrade_effect_1.png new file mode 100644 index 000000000..6c04085e4 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_effect_1.png differ diff --git a/assets/hbm/textures/items/upgrade_effect_2.png b/assets/hbm/textures/items/upgrade_effect_2.png new file mode 100644 index 000000000..784f1cb77 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_effect_2.png differ diff --git a/assets/hbm/textures/items/upgrade_effect_3.png b/assets/hbm/textures/items/upgrade_effect_3.png new file mode 100644 index 000000000..197691c46 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_effect_3.png differ diff --git a/assets/hbm/textures/items/upgrade_fortune_1.png b/assets/hbm/textures/items/upgrade_fortune_1.png new file mode 100644 index 000000000..e63b62493 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_fortune_1.png differ diff --git a/assets/hbm/textures/items/upgrade_fortune_2.png b/assets/hbm/textures/items/upgrade_fortune_2.png new file mode 100644 index 000000000..7b7e8b980 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_fortune_2.png differ diff --git a/assets/hbm/textures/items/upgrade_fortune_3.png b/assets/hbm/textures/items/upgrade_fortune_3.png new file mode 100644 index 000000000..51b81ff58 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_fortune_3.png differ diff --git a/assets/hbm/textures/items/upgrade_power_1.png b/assets/hbm/textures/items/upgrade_power_1.png new file mode 100644 index 000000000..0cb39dbf7 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_power_1.png differ diff --git a/assets/hbm/textures/items/upgrade_power_2.png b/assets/hbm/textures/items/upgrade_power_2.png new file mode 100644 index 000000000..0e94921f4 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_power_2.png differ diff --git a/assets/hbm/textures/items/upgrade_power_3.png b/assets/hbm/textures/items/upgrade_power_3.png new file mode 100644 index 000000000..8f73d8abc Binary files /dev/null and b/assets/hbm/textures/items/upgrade_power_3.png differ diff --git a/assets/hbm/textures/items/upgrade_speed_1.png b/assets/hbm/textures/items/upgrade_speed_1.png new file mode 100644 index 000000000..cade96254 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_speed_1.png differ diff --git a/assets/hbm/textures/items/upgrade_speed_2.png b/assets/hbm/textures/items/upgrade_speed_2.png new file mode 100644 index 000000000..2aaa7d179 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_speed_2.png differ diff --git a/assets/hbm/textures/items/upgrade_speed_3.png b/assets/hbm/textures/items/upgrade_speed_3.png new file mode 100644 index 000000000..d7d9f2cd6 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_speed_3.png differ diff --git a/assets/hbm/textures/items/upgrade_template.png b/assets/hbm/textures/items/upgrade_template.png new file mode 100644 index 000000000..777f58410 Binary files /dev/null and b/assets/hbm/textures/items/upgrade_template.png differ diff --git a/assets/hbm/textures/models/ModelHP.png b/assets/hbm/textures/models/ModelHP.png index 27fb063c9..cdfa45fda 100755 Binary files a/assets/hbm/textures/models/ModelHP.png and b/assets/hbm/textures/models/ModelHP.png differ diff --git a/assets/hbm/textures/models/ModelPylon.png b/assets/hbm/textures/models/ModelPylon.png new file mode 100755 index 000000000..65cf39dad Binary files /dev/null and b/assets/hbm/textures/models/ModelPylon.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index c4fc80b80..c6b476233 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -1,114 +1,10 @@ package com.hbm.blocks; -import com.hbm.blocks.bomb.BlockCrashedBomb; -import com.hbm.blocks.bomb.BombFlameWar; -import com.hbm.blocks.bomb.BombFloat; -import com.hbm.blocks.bomb.BombMulti; -import com.hbm.blocks.bomb.BombThermo; -import com.hbm.blocks.bomb.CheaterVirus; -import com.hbm.blocks.bomb.CheaterVirusSeed; -import com.hbm.blocks.bomb.CrystalPulsar; -import com.hbm.blocks.bomb.CrystalVirus; -import com.hbm.blocks.bomb.DetCord; -import com.hbm.blocks.bomb.LaunchPad; -import com.hbm.blocks.bomb.NukeBoy; -import com.hbm.blocks.bomb.NukeCustom; -import com.hbm.blocks.bomb.NukeFleija; -import com.hbm.blocks.bomb.NukeGadget; -import com.hbm.blocks.bomb.NukeMan; -import com.hbm.blocks.bomb.NukeMike; -import com.hbm.blocks.bomb.NukePrototype; -import com.hbm.blocks.bomb.NukeTsar; -import com.hbm.blocks.fluid.AcidBlock; -import com.hbm.blocks.fluid.AcidFluid; -import com.hbm.blocks.fluid.MudBlock; -import com.hbm.blocks.fluid.MudFluid; -import com.hbm.blocks.fluid.ToxicBlock; -import com.hbm.blocks.fluid.ToxicFluid; -import com.hbm.blocks.generic.BlockCrate; -import com.hbm.blocks.generic.BlockGeneric; -import com.hbm.blocks.generic.BlockMush; -import com.hbm.blocks.generic.BlockMushHuge; -import com.hbm.blocks.generic.BlockNoDrop; -import com.hbm.blocks.generic.BlockOre; -import com.hbm.blocks.generic.BlockPlasma; -import com.hbm.blocks.generic.DecoBlock; -import com.hbm.blocks.generic.DecoBlockAlt; -import com.hbm.blocks.generic.DecoPoleSatelliteReceiver; -import com.hbm.blocks.generic.DecoPoleTop; -import com.hbm.blocks.generic.DecoSteelPoles; -import com.hbm.blocks.generic.DecoTapeRecorder; -import com.hbm.blocks.generic.Guide; -import com.hbm.blocks.generic.RedBarrel; -import com.hbm.blocks.generic.ReinforcedBlock; -import com.hbm.blocks.generic.ReinforcedLamp; -import com.hbm.blocks.generic.WasteEarth; -import com.hbm.blocks.generic.WasteLog; -import com.hbm.blocks.generic.YellowBarrel; -import com.hbm.blocks.machine.BlockCable; -import com.hbm.blocks.machine.BlockConverterHeRf; -import com.hbm.blocks.machine.BlockConverterRfHe; -import com.hbm.blocks.machine.BlockGasDuct; -import com.hbm.blocks.machine.BlockHatch; -import com.hbm.blocks.machine.BlockOilDuct; -import com.hbm.blocks.machine.OilDuctSolid; -import com.hbm.blocks.machine.PylonRedWire; -import com.hbm.blocks.machine.BlockReactor; -import com.hbm.blocks.machine.BlockSeal; -import com.hbm.blocks.machine.DummyBlockCentrifuge; -import com.hbm.blocks.machine.DummyBlockCyclotron; -import com.hbm.blocks.machine.DummyBlockFlare; -import com.hbm.blocks.machine.DummyBlockIGenerator; -import com.hbm.blocks.machine.DummyBlockWell; -import com.hbm.blocks.machine.FWatzCore; -import com.hbm.blocks.machine.FWatzHatch; -import com.hbm.blocks.machine.FactoryCoreAdvanced; -import com.hbm.blocks.machine.FactoryCoreTitanium; -import com.hbm.blocks.machine.FactoryHatch; -import com.hbm.blocks.machine.FusionCore; -import com.hbm.blocks.machine.FusionHatch; -import com.hbm.blocks.machine.GasDuctSolid; -import com.hbm.blocks.machine.MachineBattery; -import com.hbm.blocks.machine.MachineCMBFactory; -import com.hbm.blocks.machine.MachineCentrifuge; -import com.hbm.blocks.machine.MachineCoal; -import com.hbm.blocks.machine.MachineCyclotron; -import com.hbm.blocks.machine.MachineDeuterium; -import com.hbm.blocks.machine.MachineDiFurnace; -import com.hbm.blocks.machine.MachineDiesel; -import com.hbm.blocks.machine.MachineElectricFurnace; -import com.hbm.blocks.machine.MachineGasFlare; -import com.hbm.blocks.machine.MachineGenerator; -import com.hbm.blocks.machine.MachineIGenerator; -import com.hbm.blocks.machine.MachineNukeFurnace; -import com.hbm.blocks.machine.MachineOilWell; -import com.hbm.blocks.machine.MachinePuF6Tank; -import com.hbm.blocks.machine.MachineRTG; -import com.hbm.blocks.machine.MachineReactor; -import com.hbm.blocks.machine.MachineRefinery; -import com.hbm.blocks.machine.MachineReiXMainframe; -import com.hbm.blocks.machine.MachineRtgFurnace; -import com.hbm.blocks.machine.MachineSchrabidiumTransmutator; -import com.hbm.blocks.machine.MachineShredder; -import com.hbm.blocks.machine.MachineTeleporter; -import com.hbm.blocks.machine.MachineUF6Tank; -import com.hbm.blocks.machine.RailBooster; -import com.hbm.blocks.machine.RailHighspeed; -import com.hbm.blocks.machine.ReactorCore; -import com.hbm.blocks.machine.ReactorHatch; -import com.hbm.blocks.machine.WatzCore; -import com.hbm.blocks.machine.WatzHatch; -import com.hbm.blocks.machine.WireCoated; -import com.hbm.blocks.test.TestBomb; -import com.hbm.blocks.test.TestBombAdvanced; -import com.hbm.blocks.test.TestContainer; -import com.hbm.blocks.test.TestEventTester; -import com.hbm.blocks.test.TestMissile; -import com.hbm.blocks.test.TestNuke; -import com.hbm.blocks.test.TestObjTester; -import com.hbm.blocks.test.TestRender; -import com.hbm.blocks.test.TestRotationTester; -import com.hbm.blocks.test.TestTicker; +import com.hbm.blocks.generic.*; +import com.hbm.blocks.bomb.*; +import com.hbm.blocks.fluid.*; +import com.hbm.blocks.machine.*; +import com.hbm.blocks.test.*; import com.hbm.items.bomb.ItemPrototypeBlock; import com.hbm.items.special.ItemOreBlock; import com.hbm.items.special.ItemPlasmaBlock; @@ -267,6 +163,14 @@ public class ModBlocks { public static Block seal_frame; public static Block seal_controller; public static Block seal_hatch; + + public static Block marker_structure; + + public static Block crate_iron; + public static final int guiID_crate_iron = 46; + + public static Block crate_steel; + public static final int guiID_crate_steel = 47; public static Block nuke_gadget; public static final int guiID_nuke_gadget = 3; @@ -444,6 +348,10 @@ public class ModBlocks { public static Block machine_refinery; public static final int guiID_machine_refinery = 43; + public static Block machine_drill; + public static Block drill_pipe; + public static final int guiID_machine_drill = 45; + public static Block launch_pad; public static Block launch_pad_generic; public static Block launch_pad_incendiary; @@ -501,6 +409,8 @@ public class ModBlocks { public static Block dummy_port_well; public static Block dummy_block_flare; public static Block dummy_port_flare; + public static Block dummy_block_drill; + public static Block dummy_port_drill; private static void initializeBlock() { @@ -580,7 +490,7 @@ public class ModBlocks { block_verticium = new BlockGeneric(Material.iron).setBlockName("block_verticium").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_verticium"); gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.tabBlock).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); - asphalt = new BlockGeneric(Material.rock).setBlockName("asphalt").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); + asphalt = new BlockGeneric(Material.rock).setBlockName("asphalt").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(15).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); reinforced_glass = new ReinforcedBlock(Material.glass).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.tabBlock).setLightOpacity(0).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_glass"); @@ -596,7 +506,7 @@ public class ModBlocks { cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.tabBlock).setHardness(25.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.tabBlock).setHardness(25.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); - block_meteor = new BlockGeneric(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor"); + block_meteor = new BlockOre(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_meteor"); tape_recorder = new DecoTapeRecorder(Material.rock).setBlockName("tape_recorder").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); steel_poles = new DecoSteelPoles(Material.rock).setBlockName("steel_poles").setCreativeTab(MainRegistry.tabBlock).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_poles"); @@ -748,6 +658,8 @@ public class ModBlocks { seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); + marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.0F).setResistance(0.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":marker_structure"); + launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":launch_pad"); launch_pad_generic = new LaunchPad(Material.iron).setBlockName("launch_pad_generic").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":launch_pad"); launch_pad_incendiary = new LaunchPad(Material.iron).setBlockName("launch_pad_incendiary").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":launch_pad"); @@ -773,11 +685,15 @@ public class ModBlocks { rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); crate = new BlockCrate(Material.iron).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":crate"); + crate_iron = new BlockStorageCrate(Material.iron).setBlockName("crate_iron").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); + crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); machine_well = new MachineOilWell(Material.iron).setBlockName("machine_well").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_well"); oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_flare"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_refinery_side"); + machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_drill"); + drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.tabBlock); @@ -815,6 +731,8 @@ public class ModBlocks { dummy_port_well = new DummyBlockWell(Material.iron).setBlockName("dummy_port_well").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_flare = new DummyBlockFlare(Material.iron).setBlockName("dummy_block_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_port_flare = new DummyBlockFlare(Material.iron).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_block_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_drill = new DummyBlockDrill(Material.iron).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); } private static void registerBlock() { @@ -970,6 +888,10 @@ public class ModBlocks { GameRegistry.registerBlock(seal_controller, seal_controller.getUnlocalizedName()); GameRegistry.registerBlock(seal_hatch, seal_hatch.getUnlocalizedName()); + //Crates + GameRegistry.registerBlock(crate_iron, crate_iron.getUnlocalizedName()); + GameRegistry.registerBlock(crate_steel, crate_steel.getUnlocalizedName()); + //Machines GameRegistry.registerBlock(machine_difurnace_off, machine_difurnace_off.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_on, machine_difurnace_on.getUnlocalizedName()); @@ -1012,6 +934,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_well, machine_well.getUnlocalizedName()); GameRegistry.registerBlock(machine_flare, machine_flare.getUnlocalizedName()); GameRegistry.registerBlock(machine_refinery, machine_refinery.getUnlocalizedName()); + GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); @@ -1019,6 +942,9 @@ public class ModBlocks { //ReiX Machines //GameRegistry.registerBlock(machine_reix_mainframe, machine_reix_mainframe.getUnlocalizedName()); + //Multiblock Helpers + GameRegistry.registerBlock(marker_structure, marker_structure.getUnlocalizedName()); + //Industrial Factories GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); GameRegistry.registerBlock(factory_titanium_furnace, factory_titanium_furnace.getUnlocalizedName()); @@ -1112,9 +1038,12 @@ public class ModBlocks { GameRegistry.registerBlock(dummy_port_well, dummy_port_well.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_flare, dummy_block_flare.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_flare, dummy_port_flare.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); + GameRegistry.registerBlock(drill_pipe, drill_pipe.getUnlocalizedName()); //??? GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); diff --git a/com/hbm/blocks/generic/BlockMarker.java b/com/hbm/blocks/generic/BlockMarker.java new file mode 100644 index 000000000..2bd3626af --- /dev/null +++ b/com/hbm/blocks/generic/BlockMarker.java @@ -0,0 +1,209 @@ +package com.hbm.blocks.generic; + +import static net.minecraftforge.common.util.ForgeDirection.EAST; +import static net.minecraftforge.common.util.ForgeDirection.NORTH; +import static net.minecraftforge.common.util.ForgeDirection.SOUTH; +import static net.minecraftforge.common.util.ForgeDirection.WEST; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityCoreAdvanced; +import com.hbm.tileentity.TileEntityCoreTitanium; +import com.hbm.tileentity.TileEntityStructureMarker; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class BlockMarker extends BlockContainer { + + public BlockMarker(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityStructureMarker(); + } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) + { + return null; + } + + public boolean isOpaqueCube() + { + return false; + } + + public boolean renderAsNormalBlock() + { + return false; + } + + public int getRenderType() + { + return 2; + } + + private boolean func_150107_m(World p_150107_1_, int p_150107_2_, int p_150107_3_, int p_150107_4_) + { + if (World.doesBlockHaveSolidTopSurface(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_)) + { + return true; + } + else + { + Block block = p_150107_1_.getBlock(p_150107_2_, p_150107_3_, p_150107_4_); + return block.canPlaceTorchOnTop(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_); + } + } + + public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) + { + return func_150107_m(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) + { + world.setBlockMetadataWithNotify(x, y, z, 6, 2); + } + if(i == 1) + { + world.setBlockMetadataWithNotify(x, y, z, 7, 2); + } + if(i == 2) + { + world.setBlockMetadataWithNotify(x, y, z, 8, 2); + } + if(i == 3) + { + world.setBlockMetadataWithNotify(x, y, z, 9, 2); + } + } + + public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) + { + super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); + + if (p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_) == 0) + { + this.onBlockAdded(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); + } + } + + public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) + { + this.func_150108_b(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); + } + + protected boolean func_150108_b(World p_150108_1_, int p_150108_2_, int p_150108_3_, int p_150108_4_, Block p_150108_5_) + { + if (this.func_150109_e(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_)) + { + int l = p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_); + boolean flag = false; + + if (!this.func_150107_m(p_150108_1_, p_150108_2_, p_150108_3_ - 1, p_150108_4_)) + { + flag = true; + } + + if (flag) + { + this.dropBlockAsItem(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_, p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_), 0); + p_150108_1_.setBlockToAir(p_150108_2_, p_150108_3_, p_150108_4_); + return true; + } + else + { + return false; + } + } + else + { + return true; + } + } + + protected boolean func_150109_e(World p_150109_1_, int p_150109_2_, int p_150109_3_, int p_150109_4_) + { + if (!this.canPlaceBlockAt(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_)) + { + if (p_150109_1_.getBlock(p_150109_2_, p_150109_3_, p_150109_4_) == this) + { + this.dropBlockAsItem(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_, p_150109_1_.getBlockMetadata(p_150109_2_, p_150109_3_, p_150109_4_), 0); + p_150109_1_.setBlockToAir(p_150109_2_, p_150109_3_, p_150109_4_); + } + + return false; + } + else + { + return true; + } + } + + public MovingObjectPosition collisionRayTrace(World p_149731_1_, int p_149731_2_, int p_149731_3_, int p_149731_4_, Vec3 p_149731_5_, Vec3 p_149731_6_) + { + int l = p_149731_1_.getBlockMetadata(p_149731_2_, p_149731_3_, p_149731_4_) & 7; + float f = 0.15F; + f = 0.1F; + this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); + + return super.collisionRayTrace(p_149731_1_, p_149731_2_, p_149731_3_, p_149731_4_, p_149731_5_, p_149731_6_); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) + { + int i = ((TileEntityStructureMarker)world.getTileEntity(x, y, z)).type + 1; + if(i > 6) + i -= 7; + if(i == 0) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Factory")); + if(i == 1) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor")); + if(i == 2) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Nuclear Reactor with Concrete Casing")); + if(i == 3) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor")); + if(i == 4) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusion Reactor with Internal Coating")); + if(i == 5) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Watz Power Plant")); + if(i == 6) + player.addChatMessage(new ChatComponentText("[Structure Marker] Set template: Fusionary Watz Plant")); + return true; + } else if(!player.isSneaking()) + { + if(world.getTileEntity(x, y, z) != null && world.getTileEntity(x, y, z) instanceof TileEntityStructureMarker) { + ((TileEntityStructureMarker)world.getTileEntity(x, y, z)).type ++; + } + return true; + } else { + return false; + } + } + +} diff --git a/com/hbm/blocks/generic/BlockOre.java b/com/hbm/blocks/generic/BlockOre.java index 44cb651da..3197e843f 100644 --- a/com/hbm/blocks/generic/BlockOre.java +++ b/com/hbm/blocks/generic/BlockOre.java @@ -34,7 +34,7 @@ public class BlockOre extends Block { } @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + public Item getItemDropped(int i, Random rand, int j) { if(this == ModBlocks.ore_fluorite) { @@ -66,7 +66,11 @@ public class BlockOre extends Block { } if(this == ModBlocks.ore_nether_fire) { - return p_149650_2_.nextInt(2) == 0 ? ModItems.powder_fire : Items.blaze_powder; + return rand.nextInt(2) == 0 ? ModItems.powder_fire : Items.blaze_powder; + } + if(this == ModBlocks.block_meteor) + { + return rand.nextInt(10) == 0 ? ModItems.plate_dalekanium : Item.getItemFromBlock(ModBlocks.block_meteor); } return Item.getItemFromBlock(this); diff --git a/com/hbm/blocks/generic/BlockStorageCrate.java b/com/hbm/blocks/generic/BlockStorageCrate.java new file mode 100644 index 000000000..415637c14 --- /dev/null +++ b/com/hbm/blocks/generic/BlockStorageCrate.java @@ -0,0 +1,43 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockStorageCrate extends Block { + + @SideOnly(Side.CLIENT) + private IIcon iconTop; + + public BlockStorageCrate(Material p_i45394_1_) { + super(p_i45394_1_); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + if(this == ModBlocks.crate_iron) + { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crate_iron_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_iron_side"); + } + if(this == ModBlocks.crate_steel) + { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crate_steel_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_steel_side"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); + } + +} diff --git a/com/hbm/blocks/machine/DummyBlockDrill.java b/com/hbm/blocks/machine/DummyBlockDrill.java new file mode 100644 index 000000000..d16574e5b --- /dev/null +++ b/com/hbm/blocks/machine/DummyBlockDrill.java @@ -0,0 +1,109 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IDummy; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityDummy; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; +import com.hbm.tileentity.TileEntityMachineCentrifuge; +import com.hbm.tileentity.TileEntityMachineElectricFurnace; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class DummyBlockDrill extends BlockContainer implements IDummy { + + public static boolean safeBreak = false; + + public DummyBlockDrill(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityDummy(); + } + + public void breakBlock(World world, int x, int y, int z, Block block, int i) + { + if(!safeBreak) { + TileEntity te = world.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityDummy) { + int a = ((TileEntityDummy)te).targetX; + int b = ((TileEntityDummy)te).targetY; + int c = ((TileEntityDummy)te).targetZ; + + //world.getBlock(a, b, c).breakBlock(world, a, b, c, block, i); + if(!world.isRemote) + world.func_147480_a(a, b, c, true); + } + } + world.removeTileEntity(x, y, z); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) + { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public Item getItem(World world, int x, int y, int z) + { + return Item.getItemFromBlock(ModBlocks.machine_drill); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) + { + return true; + } else if(!player.isSneaking()) + { + TileEntity te = world.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityDummy) { + int a = ((TileEntityDummy)te).targetX; + int b = ((TileEntityDummy)te).targetY; + int c = ((TileEntityDummy)te).targetZ; + + TileEntityMachineMiningDrill entity = (TileEntityMachineMiningDrill) world.getTileEntity(a, b, c); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_drill, world, a, b, c); + } + } + return true; + } else { + return false; + } + } + +} diff --git a/com/hbm/blocks/machine/MachineMiningDrill.java b/com/hbm/blocks/machine/MachineMiningDrill.java new file mode 100644 index 000000000..aae8b8467 --- /dev/null +++ b/com/hbm/blocks/machine/MachineMiningDrill.java @@ -0,0 +1,180 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.MultiblockHandler; +import com.hbm.interfaces.IMultiblock; +import com.hbm.tileentity.TileEntityDummy; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class MachineMiningDrill extends BlockContainer implements IMultiblock { + + public MachineMiningDrill(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineMiningDrill(); + + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(ModBlocks.machine_drill); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if (i == 0) { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x + 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x - 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 1) { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x, y, z + 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x, y, z - 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 2) { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x + 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x + 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x - 1, y, z, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x - 1, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + if (i == 3) { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.drillDimension)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.drillDimension, ModBlocks.dummy_block_drill); + + // + DummyBlockDrill.safeBreak = true; + world.setBlock(x, y, z + 1, ModBlocks.dummy_port_drill); + TileEntity te = world.getTileEntity(x, y, z + 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + world.setBlock(x, y, z - 1, ModBlocks.dummy_port_drill); + TileEntity te2 = world.getTileEntity(x, y, z - 1); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te2; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockDrill.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) + { + return true; + } +} diff --git a/com/hbm/blocks/machine/PylonRedWire.java b/com/hbm/blocks/machine/PylonRedWire.java index dbd0f9d84..3931cd9c7 100644 --- a/com/hbm/blocks/machine/PylonRedWire.java +++ b/com/hbm/blocks/machine/PylonRedWire.java @@ -17,5 +17,20 @@ public class PylonRedWire extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityPylonRedWire(); } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } } diff --git a/com/hbm/entity/projectile/EntitySparkBeam.java b/com/hbm/entity/projectile/EntitySparkBeam.java new file mode 100644 index 000000000..d79eb4d1b --- /dev/null +++ b/com/hbm/entity/projectile/EntitySparkBeam.java @@ -0,0 +1,536 @@ +package com.hbm.entity.projectile; + +import java.util.List; + +import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.lib.ModDamageSource; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.S2BPacketChangeGameState; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntitySparkBeam extends Entity implements IProjectile +{ + private int field_145791_d = -1; + private int field_145792_e = -1; + private int field_145789_f = -1; + public double gravity = 0.0D; + private Block field_145790_g; + private int inData; + private boolean inGround; + /** 1 if the player can pick up the arrow */ + public int canBePickedUp; + /** Seems to be some sort of timer for animating an arrow. */ + public int arrowShake; + /** The owner of this arrow. */ + public Entity shootingEntity; + private int ticksInGround; + private int ticksInAir; + private double damage = 2.0D; + /** The amount of knockback an arrow applies when it hits a mob. */ + private int knockbackStrength; + private static final String __OBFID = "CL_00001715"; + + + public EntitySparkBeam(World p_i1753_1_) + { + super(p_i1753_1_); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + } + + public EntitySparkBeam(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) + { + super(p_i1754_1_); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); + this.yOffset = 0.0F; + } + + public EntitySparkBeam(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) + { + super(p_i1755_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1755_2_; + + if (p_i1755_2_ instanceof EntityPlayer) + { + this.canBePickedUp = 1; + } + + this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; + double d0 = p_i1755_3_.posX - p_i1755_2_.posX; + double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; + double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; + double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); + + if (d3 >= 1.0E-7D) + { + float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; + float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); + double d4 = d0 / d3; + double d5 = d2 / d3; + this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); + this.yOffset = 0.0F; + float f4 = (float)d3 * 0.2F; + this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); + } + } + + public EntitySparkBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, EntityGrenadeZOMG grenade) { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(grenade.posX, grenade.posY + grenade.getEyeHeight(), grenade.posZ, + grenade.rotationYaw, grenade.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntitySparkBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) + { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntitySparkBeam(World world, int x, int y, int z, double mx, double my, double mz, double grav) { + super(world); + this.posX = x + 0.5F; + this.posY = y + 0.5F; + this.posZ = z + 0.5F; + + this.motionX = mx; + this.motionY = my; + this.motionZ = mz; + + this.gravity = grav; + } + + @Override + protected void entityInit() + { + this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); + } + + /** + * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. + */ + @Override + public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) + { + float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); + p_70186_1_ /= f2; + p_70186_3_ /= f2; + p_70186_5_ /= f2; + p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_1_ *= p_70186_7_; + p_70186_3_ *= p_70186_7_; + p_70186_5_ *= p_70186_7_; + this.motionX = p_70186_1_; + this.motionY = p_70186_3_; + this.motionZ = p_70186_5_; + float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); + this.ticksInGround = 0; + } + + /** + * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, + * posY, posZ, yaw, pitch + */ + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) + { + this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); + this.setRotation(p_70056_7_, p_70056_8_); + } + + /** + * Sets the velocity to the args. Args: x, y, z + */ + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) + { + this.motionX = p_70016_1_; + this.motionY = p_70016_3_; + this.motionZ = p_70016_5_; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); + this.ticksInGround = 0; + } + } + + /** + * Called to update the entity's position/logic. + */ + //@Override + @Override + public void onUpdate() + { + super.onUpdate(); + + if(this.ticksExisted > 100) + this.setDead(); + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } + + Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + + if (block.getMaterial() != Material.air) + { + block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + if(!worldObj.isRemote) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 50, true, true, true); + } + this.setDead(); + } + + if (this.arrowShake > 0) + { + --this.arrowShake; + } + else + { + ++this.ticksInAir; + Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); + vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + + if (movingobjectposition != null) + { + vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); + } + + Entity entity = null; + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); + double d0 = 0.0D; + int i; + float f1; + + for (i = 0; i < list.size(); ++i) + { + Entity entity1 = (Entity)list.get(i); + + if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) + { + f1 = 0.3F; + AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); + MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); + + if (movingobjectposition1 != null) + { + double d1 = vec31.distanceTo(movingobjectposition1.hitVec); + + if (d1 < d0 || d0 == 0.0D) + { + entity = entity1; + d0 = d1; + } + } + } + } + + if (entity != null) + { + movingobjectposition = new MovingObjectPosition(entity); + } + + if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) + { + EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; + + if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) + { + movingobjectposition = null; + } + } + + float f2; + float f4; + + if (movingobjectposition != null) + { + if (movingobjectposition.entityHit != null) + { + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); + int k = MathHelper.ceiling_double_int(f2 * this.damage); + + if (this.getIsCritical()) + { + k += this.rand.nextInt(k / 2 + 2); + } + + DamageSource damagesource = null; + + if (this.shootingEntity == null) + { + damagesource = DamageSource.generic; + } + else + { + damagesource = DamageSource.generic; + } + + if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) + { + movingobjectposition.entityHit.setFire(5); + } + + if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) + { + if (movingobjectposition.entityHit instanceof EntityLivingBase) + { + EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; + + if (this.knockbackStrength > 0) + { + f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + + if (f4 > 0.0F) + { + movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); + } + } + + if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) + { + EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); + EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); + } + + if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) + { + ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); + } + } + + if (!(movingobjectposition.entityHit instanceof EntityEnderman)) + { + if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) + { + movingobjectposition.entityHit.attackEntityFrom(damagesource, 25 + rand.nextInt(20)); + if(!worldObj.isRemote) { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 50, true, true, true); + } + this.setDead(); + } + } + } + } + else + { + this.field_145791_d = movingobjectposition.blockX; + this.field_145792_e = movingobjectposition.blockY; + this.field_145789_f = movingobjectposition.blockZ; + this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); + } + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + float f3 = 0.99F; + f1 = 0.05F; + + if (this.isInWater()) + { + this.setDead(); + } + + if (this.isWet()) + { + this.extinguish(); + } + + this.setPosition(this.posX, this.posY, this.posZ); + this.func_145775_I(); + } + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + */ + @Override + public void writeEntityToNBT(NBTTagCompound p_70014_1_) + { + p_70014_1_.setShort("xTile", (short)this.field_145791_d); + p_70014_1_.setShort("yTile", (short)this.field_145792_e); + p_70014_1_.setShort("zTile", (short)this.field_145789_f); + p_70014_1_.setShort("life", (short)this.ticksInGround); + p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); + p_70014_1_.setByte("inData", (byte)this.inData); + p_70014_1_.setByte("shake", (byte)this.arrowShake); + p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); + p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); + p_70014_1_.setDouble("damage", this.damage); + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + */ + @Override + public void readEntityFromNBT(NBTTagCompound p_70037_1_) + { + this.field_145791_d = p_70037_1_.getShort("xTile"); + this.field_145792_e = p_70037_1_.getShort("yTile"); + this.field_145789_f = p_70037_1_.getShort("zTile"); + this.ticksInGround = p_70037_1_.getShort("life"); + this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); + this.inData = p_70037_1_.getByte("inData") & 255; + this.arrowShake = p_70037_1_.getByte("shake") & 255; + this.inGround = p_70037_1_.getByte("inGround") == 1; + + if (p_70037_1_.hasKey("damage", 99)) + { + this.damage = p_70037_1_.getDouble("damage"); + } + + if (p_70037_1_.hasKey("pickup", 99)) + { + this.canBePickedUp = p_70037_1_.getByte("pickup"); + } + else if (p_70037_1_.hasKey("player", 99)) + { + this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; + } + } + + /** + * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to + * prevent them from trampling crops + */ + @Override + protected boolean canTriggerWalking() + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() + { + return 0.0F; + } + + public void setDamage(double p_70239_1_) + { + this.damage = p_70239_1_; + } + + public double getDamage() + { + return this.damage; + } + + /** + * Sets the amount of knockback the arrow applies when it hits a mob. + */ + public void setKnockbackStrength(int p_70240_1_) + { + this.knockbackStrength = p_70240_1_; + } + + /** + * If returns false, the item will not inflict any damage against entities. + */ + @Override + public boolean canAttackWithItem() + { + return false; + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public void setIsCritical(boolean p_70243_1_) + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + + if (p_70243_1_) + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); + } + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public boolean getIsCritical() + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + return (b0 & 1) != 0; + } +} diff --git a/com/hbm/handler/FuelHandler.java b/com/hbm/handler/FuelHandler.java index 132190e10..39492d29d 100644 --- a/com/hbm/handler/FuelHandler.java +++ b/com/hbm/handler/FuelHandler.java @@ -11,9 +11,21 @@ public class FuelHandler implements IFuelHandler { @Override public int getBurnTime(ItemStack fuel) { - + + if(fuel.getItem().equals(ModItems.canister_oil)) + return 3200; + if(fuel.getItem().equals(ModItems.canister_smear)) + return 6400; + if(fuel.getItem().equals(ModItems.canister_reoil)) + return 9600; + if(fuel.getItem().equals(ModItems.canister_petroil)) + return 9200; + if(fuel.getItem().equals(ModItems.canister_canola)) + return 4800; if(fuel.getItem().equals(ModItems.canister_fuel)) return 3200; + if(fuel.getItem().equals(ModItems.canister_kerosene)) + return 2400; if(fuel.getItem().equals(ModItems.powder_coal)) return 1600; if(fuel.getItem().equals(ModItems.scrap)) @@ -22,6 +34,10 @@ public class FuelHandler implements IFuelHandler { return 400; if(fuel.getItem().equals(ModItems.powder_fire)) return 6400; + if(fuel.getItem().equals(Item.getItemFromBlock(ModBlocks.red_barrel))) + return 32000; + if(fuel.getItem().equals(Item.getItemFromBlock(ModBlocks.block_scrap))) + return 8000; return 0; } diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index a5c0f535b..4d405ac95 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -21,6 +21,7 @@ import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.inventory.container.ContainerMachineDeuterium; import com.hbm.inventory.container.ContainerMachineDiesel; import com.hbm.inventory.container.ContainerMachineGasFlare; +import com.hbm.inventory.container.ContainerMachineMiningDrill; import com.hbm.inventory.container.ContainerMachineOilWell; import com.hbm.inventory.container.ContainerMachineRTG; import com.hbm.inventory.container.ContainerMachineRefinery; @@ -63,6 +64,7 @@ import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.inventory.gui.GUIMachineElectricFurnace; import com.hbm.inventory.gui.GUIMachineGasFlare; import com.hbm.inventory.gui.GUIMachineGenerator; +import com.hbm.inventory.gui.GUIMachineMiningDrill; import com.hbm.inventory.gui.GUIMachineOilWell; import com.hbm.inventory.gui.GUIMachinePuF6Tank; import com.hbm.inventory.gui.GUIMachineRTG; @@ -96,6 +98,7 @@ import com.hbm.tileentity.TileEntityDiFurnace; import com.hbm.tileentity.TileEntityFWatzCore; import com.hbm.tileentity.TileEntityFusionMultiblock; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineBattery; @@ -488,6 +491,14 @@ public class GUIHandler implements IGuiHandler { return new ContainerMachineGasFlare(player.inventory, (TileEntityMachineGasFlare) entity); } } + + case ModBlocks.guiID_machine_drill: + { + if(entity instanceof TileEntityMachineMiningDrill) + { + return new ContainerMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity); + } + } } return null; } @@ -844,6 +855,14 @@ public class GUIHandler implements IGuiHandler { return new GUIMachineGasFlare(player.inventory, (TileEntityMachineGasFlare) entity); } } + + case ModBlocks.guiID_machine_drill: + { + if(entity instanceof TileEntityMachineMiningDrill) + { + return new GUIMachineMiningDrill(player.inventory, (TileEntityMachineMiningDrill) entity); + } + } } } return null; diff --git a/com/hbm/handler/MultiblockHandler.java b/com/hbm/handler/MultiblockHandler.java index 883060513..98e6da33a 100644 --- a/com/hbm/handler/MultiblockHandler.java +++ b/com/hbm/handler/MultiblockHandler.java @@ -48,6 +48,7 @@ public class MultiblockHandler { public static final int[] cyclDimension = new int[] { 1, 1, 5, 0, 1, 1 }; public static final int[] wellDimension = new int[] { 1, 1, 5, 0, 1, 1 }; public static final int[] flareDimension = new int[] { 1, 1, 9, 0, 1, 1 }; + public static final int[] drillDimension = new int[] { 1, 1, 3, 0, 1, 1 }; //Approved! public static boolean checkSpace(World world, int x, int y, int z, int[] i) { diff --git a/com/hbm/inventory/MachineRecipes.java b/com/hbm/inventory/MachineRecipes.java index afa605f49..09dde17b4 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -41,8 +41,8 @@ public class MachineRecipes { } } - if (item == ModItems.ingot_tungsten && item2 == Items.coal - || item == Items.coal && item2 == ModItems.ingot_tungsten) { + if (mODE(item, new String[] {"ingotTungsten", "dustTungsten"}) && mODE(item2, "gemCoal") + || mODE(item, "gemCoal") && mODE(item2, new String[] {"ingotTungsten", "dustTungsten"})) { return new ItemStack(ModItems.neutron_reflector, 2); } @@ -65,11 +65,6 @@ public class MachineRecipes { return new ItemStack(ModItems.ingot_red_copper, 2); } - if (item == ModItems.canister_empty && item2 == Items.coal - || item == Items.coal && item2 == ModItems.canister_empty) { - return new ItemStack(ModItems.canister_fuel, 1); - } - if (item == ModItems.canister_fuel && item2 == Items.slime_ball || item == Items.slime_ball && item2 == ModItems.canister_fuel) { return new ItemStack(ModItems.canister_napalm, 1); @@ -152,10 +147,6 @@ public class MachineRecipes { ItemStack[] schrabidium = new ItemStack[] { new ItemStack(ModItems.ingot_schrabidium, 1), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.cell_empty, 1) }; - ItemStack[] lithium2 = new ItemStack[] { new ItemStack(ModItems.lithium, 1), new ItemStack(ModItems.lithium, 1), - new ItemStack(ModItems.lithium, 1), new ItemStack(ModItems.lithium, 1) }; - ItemStack[] lithium3 = new ItemStack[] { new ItemStack(ModItems.lithium, 4), new ItemStack(ModItems.lithium, 4), - new ItemStack(ModItems.lithium, 4), new ItemStack(ModItems.lithium, 4) }; ItemStack[] uran1 = new ItemStack[] { new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.nugget_u238, 3), new ItemStack(ModItems.nugget_pu239, 2), @@ -260,14 +251,6 @@ public class MachineRecipes { return schrabidium3; } - if (item == item.getItemFromBlock(Blocks.quartz_block) || item == item.getItemFromBlock(Blocks.quartz_stairs)) { - return lithium3; - } - - if (item == Items.quartz) { - return lithium2; - } - return null; } @@ -630,8 +613,6 @@ public class MachineRecipes { new ItemStack(ModItems.ingot_red_copper, 2)); recipes.put(new ItemStack[] { new ItemStack(ModItems.ingot_red_copper), new ItemStack(ModItems.ingot_steel) }, new ItemStack(ModItems.ingot_advanced_alloy, 2)); - recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_empty), new ItemStack(Items.coal) }, - new ItemStack(ModItems.canister_fuel, 1)); recipes.put(new ItemStack[] { new ItemStack(ModItems.canister_fuel), new ItemStack(Items.slime_ball) }, new ItemStack(ModItems.canister_napalm, 1)); recipes.put( @@ -705,9 +686,6 @@ public class MachineRecipes { // recipes.put(new // ItemStack(ModItems.rod_quad_schrabidium_fuel_depleted), // getCentrifugeOutput(ModItems.rod_quad_schrabidium_fuel_depleted)); - recipes.put(new ItemStack(Item.getItemFromBlock(Blocks.quartz_block)), - getCentrifugeOutput(Item.getItemFromBlock(Blocks.quartz_block))); - recipes.put(new ItemStack(Items.quartz), getCentrifugeOutput(Items.quartz)); return recipes; } @@ -1443,8 +1421,21 @@ public class MachineRecipes { public ArrayList getBatteries() { ArrayList fuels = new ArrayList(); fuels.add(new ItemStack(ModItems.battery_generic)); + fuels.add(new ItemStack(ModItems.battery_red_cell)); + fuels.add(new ItemStack(ModItems.battery_red_cell_6)); + fuels.add(new ItemStack(ModItems.battery_red_cell_24)); fuels.add(new ItemStack(ModItems.battery_advanced)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell_4)); + fuels.add(new ItemStack(ModItems.battery_advanced_cell_12)); + fuels.add(new ItemStack(ModItems.battery_lithium)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell_3)); + fuels.add(new ItemStack(ModItems.battery_lithium_cell_6)); fuels.add(new ItemStack(ModItems.battery_schrabidium)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_2)); + fuels.add(new ItemStack(ModItems.battery_schrabidium_cell_4)); fuels.add(new ItemStack(ModItems.fusion_core)); fuels.add(new ItemStack(ModItems.energy_core)); return fuels; @@ -1462,4 +1453,40 @@ public class MachineRecipes { fuels.add(new ItemStack(ModItems.blades_schrabidium)); return fuels; } + + public static boolean mODE(Item item, String[] names) { + return mODE(new ItemStack(item), names); + } + + public static boolean mODE(ItemStack item, String[] names) { + boolean flag = false; + if(names.length > 0) { + for(int i = 0; i < names.length; i++) { + if(mODE(item, names[i])) + flag = true; + } + } + + return flag; + } + + public static boolean mODE(Item item, String name) { + return mODE(new ItemStack(item), name); + } + + //Matches Ore Dict Entry + public static boolean mODE(ItemStack stack, String name) { + + int[] ids = OreDictionary.getOreIDs(new ItemStack(stack.getItem(), 1, stack.getItemDamage())); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 0 && s.equals(name)) + return true; + } + + return false; + } } diff --git a/com/hbm/inventory/container/ContainerMachineDeuterium.java b/com/hbm/inventory/container/ContainerMachineDeuterium.java index a6e3be8cf..53832d40e 100644 --- a/com/hbm/inventory/container/ContainerMachineDeuterium.java +++ b/com/hbm/inventory/container/ContainerMachineDeuterium.java @@ -92,7 +92,7 @@ private TileEntityMachineDeuterium nukeBoy; { ICrafting par1 = (ICrafting)this.crafters.get(i); - if(this.power != this.nukeBoy.process) + if(this.progress != this.nukeBoy.process) { par1.sendProgressBarUpdate(this, 0, this.nukeBoy.process); } diff --git a/com/hbm/inventory/container/ContainerMachineMiningDrill.java b/com/hbm/inventory/container/ContainerMachineMiningDrill.java new file mode 100644 index 000000000..c0157100c --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineMiningDrill.java @@ -0,0 +1,122 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.TileEntityMachineDeuterium; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineMiningDrill extends Container { + +private TileEntityMachineMiningDrill nukeBoy; + + private int power; + private int water; + private int sulfur; + private int progress; + + public ContainerMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { + + nukeBoy = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 44, 53)); + //Outputs + this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); + this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); + this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); + this.addSlotToContainer(new Slot(tedf, 4, 80, 35)); + this.addSlotToContainer(new Slot(tedf, 5, 98, 35)); + this.addSlotToContainer(new Slot(tedf, 6, 116, 35)); + this.addSlotToContainer(new Slot(tedf, 7, 80, 53)); + this.addSlotToContainer(new Slot(tedf, 8, 98, 53)); + this.addSlotToContainer(new Slot(tedf, 9, 116, 53)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 10, 152, 17)); + this.addSlotToContainer(new Slot(tedf, 11, 152, 35)); + this.addSlotToContainer(new Slot(tedf, 12, 152, 53)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 12) { + if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 13, false)) + { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + + for(int i = 0; i < this.crafters.size(); i++) + { + ICrafting par1 = (ICrafting)this.crafters.get(i); + + if(this.power != this.nukeBoy.power) + { + par1.sendProgressBarUpdate(this, 0, this.nukeBoy.power); + } + } + + this.power = this.nukeBoy.power; + } + + @Override + public void updateProgressBar(int i, int j) { + if(i == 0) + { + nukeBoy.power = j; + } + } +} diff --git a/com/hbm/inventory/gui/GUIMachineMiningDrill.java b/com/hbm/inventory/gui/GUIMachineMiningDrill.java new file mode 100644 index 000000000..875661849 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineMiningDrill.java @@ -0,0 +1,49 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineDiesel; +import com.hbm.inventory.container.ContainerMachineMiningDrill; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineDiesel; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineMiningDrill extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_drill.png"); + private TileEntityMachineMiningDrill diFurnace; + + public GUIMachineMiningDrill(InventoryPlayer invPlayer, TileEntityMachineMiningDrill tedf) { + super(new ContainerMachineMiningDrill(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(diFurnace.power > 0) { + int i = diFurnace.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i, 176, 52 - i, 16, i); + } + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 79fbbc410..fc765abd0 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -2,97 +2,12 @@ package com.hbm.items; import com.hbm.blocks.ModBlocks; import com.hbm.handler.BucketHandler; -import com.hbm.items.bomb.ItemBoy; -import com.hbm.items.bomb.ItemFleija; -import com.hbm.items.bomb.ItemGadget; -import com.hbm.items.bomb.ItemMan; -import com.hbm.items.bomb.ItemManMike; -import com.hbm.items.bomb.ItemMike; -import com.hbm.items.bomb.ItemTsar; -import com.hbm.items.food.ItemAppleEuphemium; -import com.hbm.items.food.ItemAppleSchrabidium; -import com.hbm.items.food.ItemCottonCandy; -import com.hbm.items.food.ItemEnergy; -import com.hbm.items.food.ItemLemon; -import com.hbm.items.food.ItemNugget; -import com.hbm.items.food.ItemPill; -import com.hbm.items.food.ItemSchnitzelVegan; -import com.hbm.items.food.ItemTemFlakes; -import com.hbm.items.food.ItemWaffle; -import com.hbm.items.gear.ArmorAsbestos; -import com.hbm.items.gear.ArmorAustralium; -import com.hbm.items.gear.ArmorEuphemium; -import com.hbm.items.gear.ArmorHazmat; -import com.hbm.items.gear.ArmorModel; -import com.hbm.items.gear.ArmorSchrabidium; -import com.hbm.items.gear.ArmorT45; -import com.hbm.items.gear.ArmorTest; -import com.hbm.items.gear.AxeSchrabidium; -import com.hbm.items.gear.BigSword; -import com.hbm.items.gear.HoeSchrabidium; -import com.hbm.items.gear.MaskOfInfamy; -import com.hbm.items.gear.ModArmor; -import com.hbm.items.gear.ModAxe; -import com.hbm.items.gear.ModHoe; -import com.hbm.items.gear.ModPickaxe; -import com.hbm.items.gear.ModSpade; -import com.hbm.items.gear.ModSword; -import com.hbm.items.gear.PickaxeSchrabidium; -import com.hbm.items.gear.RedstoneSword; -import com.hbm.items.gear.SpadeSchrabidium; -import com.hbm.items.gear.SwordSchrabidium; -import com.hbm.items.gear.WeaponSpecial; -import com.hbm.items.special.ItemAntiCheat; -import com.hbm.items.special.ItemBattery; -import com.hbm.items.special.ItemBlades; -import com.hbm.items.special.ItemCapacitor; -import com.hbm.items.special.ItemCell; -import com.hbm.items.special.ItemChopper; -import com.hbm.items.special.ItemCustomLore; -import com.hbm.items.special.ItemDrop; -import com.hbm.items.special.ItemFuelRod; -import com.hbm.items.special.ItemModRecord; -import com.hbm.items.special.ItemPolaroid; -import com.hbm.items.special.ItemRadioactive; -import com.hbm.items.special.ItemStarterKit; -import com.hbm.items.special.ItemSyringe; -import com.hbm.items.special.ItemTankWaste; -import com.hbm.items.special.ItemTeleLink; -import com.hbm.items.special.WatzFuel; -import com.hbm.items.tool.ItemCrateCaller; -import com.hbm.items.tool.ItemDesingator; -import com.hbm.items.tool.ItemDesingatorRange; -import com.hbm.items.tool.ItemDetonator; -import com.hbm.items.tool.ItemMatch; -import com.hbm.items.tool.ItemModBucket; -import com.hbm.items.tool.ItemMultitoolPassive; -import com.hbm.items.tool.ItemMultitoolTool; -import com.hbm.items.tool.ItemOilDetector; -import com.hbm.items.tool.ItemRamManipulator; -import com.hbm.items.tool.ItemWand; -import com.hbm.items.tool.ItemWandD; -import com.hbm.items.tool.ItemWandS; -import com.hbm.items.tool.ItemWiring; -import com.hbm.items.weapon.GunBaleFlare; -import com.hbm.items.weapon.GunCryolator; -import com.hbm.items.weapon.GunEMPRay; -import com.hbm.items.weapon.GunEuthanasia; -import com.hbm.items.weapon.GunFatman; -import com.hbm.items.weapon.GunImmolator; -import com.hbm.items.weapon.GunJack; -import com.hbm.items.weapon.GunMIRV; -import com.hbm.items.weapon.GunMP; -import com.hbm.items.weapon.GunNightmare; -import com.hbm.items.weapon.GunOSIPR; -import com.hbm.items.weapon.GunRevolver; -import com.hbm.items.weapon.GunRpg; -import com.hbm.items.weapon.GunSMG; -import com.hbm.items.weapon.GunShotgun; -import com.hbm.items.weapon.GunSuicide; -import com.hbm.items.weapon.GunXVL1456; -import com.hbm.items.weapon.GunZOMG; -import com.hbm.items.weapon.ItemClip; -import com.hbm.items.weapon.ItemGrenade; +import com.hbm.items.bomb.*; +import com.hbm.items.food.*; +import com.hbm.items.gear.*; +import com.hbm.items.special.*; +import com.hbm.items.tool.*; +import com.hbm.items.weapon.*; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -173,6 +88,9 @@ public class ModItems { public static Item nugget_unobtainium; public static Item nugget_daffergon; public static Item nugget_verticium; + + public static Item ingot_desh; + public static Item nugget_desh; public static Item nugget_uranium; public static Item nugget_u235; @@ -209,6 +127,7 @@ public class ModItems { public static Item bolt_dura_steel; public static Item pipes_steel; public static Item drill_titanium; + public static Item plate_dalekanium; public static Item ingot_dura_steel; public static Item ingot_polymer; @@ -266,9 +185,12 @@ public class ModItems { public static Item powder_dura_steel; public static Item powder_polymer; + public static Item powder_lithium_tiny; + public static Item powder_cobalt_tiny; public static Item powder_lanthanium; public static Item powder_actinium; + public static Item powder_desh; public static Item coil_copper; public static Item coil_copper_torus; @@ -429,6 +351,8 @@ public class ModItems { public static Item canister_oil; public static Item canister_fuel; public static Item canister_kerosene; + public static Item canister_reoil; + public static Item canister_petroil; public static Item canister_napalm; public static Item canister_NITAN; @@ -751,6 +675,20 @@ public class ModItems { public static Item factory_core_titanium; public static Item factory_core_advanced; + public static Item upgrade_template; + public static Item upgrade_speed_1; + public static Item upgrade_speed_2; + public static Item upgrade_speed_3; + public static Item upgrade_effect_1; + public static Item upgrade_effect_2; + public static Item upgrade_effect_3; + public static Item upgrade_power_1; + public static Item upgrade_power_2; + public static Item upgrade_power_3; + public static Item upgrade_fortune_1; + public static Item upgrade_fortune_2; + public static Item upgrade_fortune_3; + public static Item ingot_euphemium; public static Item nugget_euphemium; public static Item rod_quad_euphemium; @@ -1087,9 +1025,12 @@ public class ModItems { bolt_dura_steel = new Item().setUnlocalizedName("bolt_dura_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":bolt_dura_steel"); pipes_steel = new Item().setUnlocalizedName("pipes_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":pipes_steel"); drill_titanium = new Item().setUnlocalizedName("drill_titanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":drill_titanium"); + plate_dalekanium = new Item().setUnlocalizedName("plate_dalekanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":plate_dalekanium"); ingot_dura_steel = new ItemCustomLore().setUnlocalizedName("ingot_dura_steel").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_dura_steel"); ingot_polymer = new ItemCustomLore().setUnlocalizedName("ingot_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_polymer"); + ingot_desh = new ItemCustomLore().setUnlocalizedName("ingot_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_desh"); + nugget_desh = new ItemCustomLore().setUnlocalizedName("nugget_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_desh"); ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -1178,6 +1119,9 @@ public class ModItems { powder_polymer = new ItemCustomLore().setUnlocalizedName("powder_polymer").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_polymer"); powder_lanthanium = new ItemCustomLore().setUnlocalizedName("powder_lanthanium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_lanthanium"); powder_actinium = new ItemCustomLore().setUnlocalizedName("powder_actinium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_actinium"); + powder_desh = new Item().setUnlocalizedName("powder_desh").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_desh"); + powder_lithium_tiny = new Item().setUnlocalizedName("powder_lithium_tiny").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_lithium_tiny"); + powder_cobalt_tiny = new Item().setUnlocalizedName("powder_cobalt_tiny").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":powder_cobalt_tiny"); coil_copper = new Item().setUnlocalizedName("coil_copper").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_copper"); coil_copper_torus = new Item().setUnlocalizedName("coil_copper_torus").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":coil_copper_torus"); @@ -1326,6 +1270,8 @@ public class ModItems { canister_oil = new ItemCustomLore().setUnlocalizedName("canister_oil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_oil"); canister_fuel = new ItemCustomLore().setUnlocalizedName("canister_fuel").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_fuel"); canister_kerosene = new ItemCustomLore().setUnlocalizedName("canister_kerosene").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_kerosene"); + canister_reoil = new ItemCustomLore().setUnlocalizedName("canister_reoil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_reoil"); + canister_petroil = new ItemCustomLore().setUnlocalizedName("canister_petroil").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_petroil"); canister_napalm = new ItemCustomLore().setUnlocalizedName("canister_napalm").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_napalm"); canister_NITAN = new ItemCustomLore().setUnlocalizedName("canister_NITAN").setCreativeTab(MainRegistry.tabParts).setContainerItem(ModItems.canister_empty).setTextureName(RefStrings.MODID + ":canister_superfuel"); gas_empty = new Item().setUnlocalizedName("gas_empty").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":gas_empty"); @@ -1542,13 +1488,13 @@ public class ModItems { gun_jack_ammo = new Item().setUnlocalizedName("gun_jack_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_jack_ammo"); gun_jack = new GunJack().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_jack"); gun_spark_ammo = new Item().setUnlocalizedName("gun_spark_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark_ammo"); - gun_spark = new GunJack().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark"); + gun_spark = new GunSpark().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_spark"); gun_hp_ammo = new Item().setUnlocalizedName("gun_hp_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp_ammo"); - gun_hp = new GunJack().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp"); + gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_hp"); gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_euthanasia"); gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); - gun_defabricator = new GunJack().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator"); + gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_defabricator"); gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); @@ -1644,6 +1590,20 @@ public class ModItems { factory_core_titanium = new ItemBattery(70400).setUnlocalizedName("factory_core_titanium").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":factory_core_titanium"); factory_core_advanced = new ItemBattery(41600).setUnlocalizedName("factory_core_advanced").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":factory_core_advanced"); + upgrade_template = new ItemCustomLore().setUnlocalizedName("upgrade_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_template"); + upgrade_speed_1 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_1"); + upgrade_speed_2 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_2"); + upgrade_speed_3 = new ItemCustomLore().setUnlocalizedName("upgrade_speed_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_speed_3"); + upgrade_effect_1 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_1"); + upgrade_effect_2 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_2"); + upgrade_effect_3 = new ItemCustomLore().setUnlocalizedName("upgrade_effect_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_effect_3"); + upgrade_power_1 = new ItemCustomLore().setUnlocalizedName("upgrade_power_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_1"); + upgrade_power_2 = new ItemCustomLore().setUnlocalizedName("upgrade_power_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_2"); + upgrade_power_3 = new ItemCustomLore().setUnlocalizedName("upgrade_power_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_power_3"); + upgrade_fortune_1 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_1").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_1"); + upgrade_fortune_2 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_2").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_2"); + upgrade_fortune_3 = new ItemCustomLore().setUnlocalizedName("upgrade_fortune_3").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":upgrade_fortune_3"); + wand = new ItemWand().setUnlocalizedName("wand_k").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand"); wand_s = new ItemWandS().setUnlocalizedName("wand_s").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand_s"); wand_d = new ItemWandD().setUnlocalizedName("wand_d").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setFull3D().setTextureName(RefStrings.MODID + ":wand_d"); @@ -1707,7 +1667,7 @@ public class ModItems { goggles = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("goggles").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":goggles"); gas_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("gas_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask"); - oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); + //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); t45_helmet = new ArmorT45(MainRegistry.enumArmorMaterialT45, 2, 0).setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(MainRegistry.enumArmorMaterialT45, 2, 1).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); @@ -1979,6 +1939,7 @@ public class ModItems { GameRegistry.registerItem(ingot_verticium, ingot_verticium.getUnlocalizedName()); GameRegistry.registerItem(ingot_lanthanium, ingot_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(ingot_actinium, ingot_actinium.getUnlocalizedName()); + GameRegistry.registerItem(ingot_desh, ingot_desh.getUnlocalizedName()); //Dusts & Other GameRegistry.registerItem(lithium, lithium.getUnlocalizedName()); @@ -2029,7 +1990,10 @@ public class ModItems { GameRegistry.registerItem(powder_cerium, powder_cerium.getUnlocalizedName()); GameRegistry.registerItem(powder_lanthanium, powder_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(powder_actinium, powder_actinium.getUnlocalizedName()); + GameRegistry.registerItem(powder_desh, powder_desh.getUnlocalizedName()); GameRegistry.registerItem(dust, dust.getUnlocalizedName()); + GameRegistry.registerItem(powder_lithium_tiny, powder_lithium_tiny.getUnlocalizedName()); + GameRegistry.registerItem(powder_cobalt_tiny, powder_cobalt_tiny.getUnlocalizedName()); //Powders GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName()); @@ -2062,6 +2026,7 @@ public class ModItems { GameRegistry.registerItem(nugget_unobtainium, nugget_unobtainium.getUnlocalizedName()); GameRegistry.registerItem(nugget_daffergon, nugget_daffergon.getUnlocalizedName()); GameRegistry.registerItem(nugget_verticium, nugget_verticium.getUnlocalizedName()); + GameRegistry.registerItem(nugget_desh, nugget_desh.getUnlocalizedName()); //Plates GameRegistry.registerItem(plate_iron, plate_iron.getUnlocalizedName()); @@ -2077,6 +2042,7 @@ public class ModItems { GameRegistry.registerItem(plate_combine_steel, plate_combine_steel.getUnlocalizedName()); GameRegistry.registerItem(plate_mixed, plate_mixed.getUnlocalizedName()); GameRegistry.registerItem(plate_paa, plate_paa.getUnlocalizedName()); + GameRegistry.registerItem(plate_dalekanium, plate_dalekanium.getUnlocalizedName()); //Boards GameRegistry.registerItem(board_copper, board_copper.getUnlocalizedName()); @@ -2259,6 +2225,8 @@ public class ModItems { GameRegistry.registerItem(canister_canola, canister_canola.getUnlocalizedName()); GameRegistry.registerItem(canister_fuel, canister_fuel.getUnlocalizedName()); GameRegistry.registerItem(canister_kerosene, canister_kerosene.getUnlocalizedName()); + GameRegistry.registerItem(canister_reoil, canister_reoil.getUnlocalizedName()); + GameRegistry.registerItem(canister_petroil, canister_petroil.getUnlocalizedName()); GameRegistry.registerItem(canister_napalm, canister_napalm.getUnlocalizedName()); GameRegistry.registerItem(canister_NITAN, canister_NITAN.getUnlocalizedName()); @@ -2288,6 +2256,23 @@ public class ModItems { GameRegistry.registerItem(energy_core, energy_core.getUnlocalizedName()); GameRegistry.registerItem(factory_core_titanium, factory_core_titanium.getUnlocalizedName()); GameRegistry.registerItem(factory_core_advanced, factory_core_advanced.getUnlocalizedName()); + + //Machine Upgrades + GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_2, upgrade_speed_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_speed_3, upgrade_speed_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_1, upgrade_effect_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_2, upgrade_effect_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_effect_3, upgrade_effect_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_1, upgrade_power_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_2, upgrade_power_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_power_3, upgrade_power_3.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_1, upgrade_fortune_1.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_2, upgrade_fortune_2.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_fortune_3, upgrade_fortune_3.getUnlocalizedName()); + + //Machine Items GameRegistry.registerItem(fuse, fuse.getUnlocalizedName()); GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName()); GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); @@ -2513,7 +2498,7 @@ public class ModItems { GameRegistry.registerItem(gun_jack_ammo, gun_jack_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_spark_ammo, gun_spark_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_hp_ammo, gun_hp_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_defabricator, gun_defabricator.getUnlocalizedName()); + GameRegistry.registerItem(gun_defabricator_ammo, gun_defabricator_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_euthanasia_ammo, gun_euthanasia_ammo.getUnlocalizedName()); //-C-l-i-p-s- Magazines @@ -2711,7 +2696,7 @@ public class ModItems { //Conventional Armor GameRegistry.registerItem(goggles, goggles.getUnlocalizedName()); GameRegistry.registerItem(gas_mask, gas_mask.getUnlocalizedName()); - GameRegistry.registerItem(oxy_mask, oxy_mask.getUnlocalizedName()); + //GameRegistry.registerItem(oxy_mask, oxy_mask.getUnlocalizedName()); GameRegistry.registerItem(steel_helmet, steel_helmet.getUnlocalizedName()); GameRegistry.registerItem(steel_plate, steel_plate.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemBattery.java b/com/hbm/items/special/ItemBattery.java index 454afc2fc..c588be370 100644 --- a/com/hbm/items/special/ItemBattery.java +++ b/com/hbm/items/special/ItemBattery.java @@ -83,13 +83,13 @@ public class ItemBattery extends Item { } } - public long getCharge(ItemStack stack) { + public static long getCharge(ItemStack stack) { if(stack.getItem() instanceof ItemBattery) { if(stack.hasTagCompound()) { return stack.stackTagCompound.getLong("charge"); } else { stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setLong("charge", this.maxCharge); + stack.stackTagCompound.setLong("charge", ((ItemBattery)stack.getItem()).maxCharge); return stack.stackTagCompound.getLong("charge"); } } @@ -101,6 +101,10 @@ public class ItemBattery extends Item { return maxCharge; } + public static long getMaxChargeStatic(ItemStack stack) { + return ((ItemBattery)stack.getItem()).maxCharge; + } + public static ItemStack getEmptyBattery(Item item) { if(item instanceof ItemBattery) { diff --git a/com/hbm/items/special/ItemCustomLore.java b/com/hbm/items/special/ItemCustomLore.java index fee04fc36..df3e2555b 100644 --- a/com/hbm/items/special/ItemCustomLore.java +++ b/com/hbm/items/special/ItemCustomLore.java @@ -417,6 +417,90 @@ public class ItemCustomLore extends ItemRadioactive { list.add("Required for cyclotron operation."); list.add("Do NOT operate cyclotron without it!"); } + + if(this == ModItems.upgrade_speed_1) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -15 (from 50)"); + list.add("Drawback: Power consumption +300 (from 100)"); + } + + if(this == ModItems.upgrade_speed_2) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -30 (from 50)"); + list.add("Drawback: Power consumption +600 (from 100)"); + } + + if(this == ModItems.upgrade_speed_3) + { + list.add("Mining drill speed upgrade"); + list.add("Effect: Delay -45 (from 50)"); + list.add("Drawback: Power consumption +900 (from 100)"); + } + + if(this == ModItems.upgrade_effect_1) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +1 (from 1)"); + list.add("Drawback: Power consumption +80 (from 100)"); + } + + if(this == ModItems.upgrade_effect_2) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +2 (from 1)"); + list.add("Drawback: Power consumption +160 (from 100)"); + } + + if(this == ModItems.upgrade_effect_3) + { + list.add("Mining drill effectiveness upgrade"); + list.add("Effect: Radius +3 (from 1)"); + list.add("Drawback: Power consumption +240 (from 100)"); + } + + if(this == ModItems.upgrade_power_1) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -30 (from 100)"); + list.add("Drawback: Delay +5 (from 50)"); + } + + if(this == ModItems.upgrade_power_2) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -60 (from 100)"); + list.add("Drawback: Delay +10 (from 50)"); + } + + if(this == ModItems.upgrade_power_3) + { + list.add("Mining drill power saving upgrade"); + list.add("Effect: Power consumption -90 (from 100)"); + list.add("Drawback: Delay +15 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_1) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +1 (from 0"); + list.add("Drawback: Delay +15 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_2) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +2 (from 0"); + list.add("Drawback: Delay +30 (from 50)"); + } + + if(this == ModItems.upgrade_fortune_3) + { + list.add("Mining drill fortune upgrade"); + list.add("Effect: Fortune +3 (from 0"); + list.add("Drawback: Delay +45 (from 50)"); + } } @Override diff --git a/com/hbm/items/special/ItemStarterKit.java b/com/hbm/items/special/ItemStarterKit.java index fc52226a3..2804a24b4 100644 --- a/com/hbm/items/special/ItemStarterKit.java +++ b/com/hbm/items/special/ItemStarterKit.java @@ -237,6 +237,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_strong, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_frag, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_fire, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_shrapnel, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_cluster, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_flare, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_electric, 16)); @@ -252,6 +253,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_nuke, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_nuclear, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_zomg, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_black_hole, 16)); } if(this == ModItems.fleija_kit) diff --git a/com/hbm/items/tool/ItemWandD.java b/com/hbm/items/tool/ItemWandD.java index 0caaec5a2..8370ff018 100644 --- a/com/hbm/items/tool/ItemWandD.java +++ b/com/hbm/items/tool/ItemWandD.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityPylonRedWire; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -34,6 +35,12 @@ public class ItemWandD extends Item { MainRegistry.z++; if (b == ModBlocks.block_copper) MainRegistry.z--; + if (b == ModBlocks.red_pylon) { + TileEntityPylonRedWire te = (TileEntityPylonRedWire) world.getTileEntity(x, y, z); + for(int i = 0; i < te.connected.size(); i++) + if(world.isRemote) + player.addChatMessage(new ChatComponentText(te.connected.get(i).xCoord + " " + te.connected.get(i).yCoord + " " + te.connected.get(i).zCoord)); + } } return true; diff --git a/com/hbm/items/tool/ItemWiring.java b/com/hbm/items/tool/ItemWiring.java index bbabe2b6c..e45efd67a 100644 --- a/com/hbm/items/tool/ItemWiring.java +++ b/com/hbm/items/tool/ItemWiring.java @@ -1,16 +1,88 @@ package com.hbm.items.tool; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEPylonSenderPacket; +import com.hbm.tileentity.TileEntityMachineTeleporter; +import com.hbm.tileentity.TileEntityPylonRedWire; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; public class ItemWiring extends Item { - + @Override - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, + float p_77648_8_, float p_77648_9_, float p_77648_10_) { + if (!player.isSneaking()) { + TileEntity te = world.getTileEntity(x, y, z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + + if (world.isRemote) + player.addChatMessage(new ChatComponentText( + "Wire start")); + } else { + int x1 = stack.stackTagCompound.getInteger("x"); + int y1 = stack.stackTagCompound.getInteger("y"); + int z1 = stack.stackTagCompound.getInteger("z"); + + if (world.getTileEntity(x1, y1, z1) != null + && world.getTileEntity(x1, y1, z1) instanceof TileEntityPylonRedWire && this.isLengthValid(x, y, z, x1, y1, z1, 25)) { + + ((TileEntityPylonRedWire) te).connected.add((TileEntityPylonRedWire) world.getTileEntity(x1, y1, z1)); + ((TileEntityPylonRedWire) world.getTileEntity(x1, y1, z1)).connected.add(((TileEntityPylonRedWire) te)); + + if (world.isRemote) + player.addChatMessage( + new ChatComponentText("Wire end")); + + stack.stackTagCompound = null; + } else { + if (world.isRemote) + player.addChatMessage(new ChatComponentText( + "Wire error")); + stack.stackTagCompound = null; + } + } + + player.swingItem(); + return true; + } + } + return false; - } + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if (itemstack.stackTagCompound != null) { + list.add("Wire start x: " + itemstack.stackTagCompound.getInteger("x")); + list.add("Wire start y: " + itemstack.stackTagCompound.getInteger("y")); + list.add("Wire start z: " + itemstack.stackTagCompound.getInteger("z")); + } else { + list.add("Richt-click poles to connect"); + } + } + + public boolean isLengthValid(int x1, int y1, int z1, int x2, int y2, int z2, int length) { + double l = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2)); + + return l <= length; + } } diff --git a/com/hbm/items/weapon/GunDefabricator.java b/com/hbm/items/weapon/GunDefabricator.java new file mode 100644 index 000000000..087f183f3 --- /dev/null +++ b/com/hbm/items/weapon/GunDefabricator.java @@ -0,0 +1,94 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.items.ModItems; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunDefabricator extends Item { + + Random rand = new Random(); + + public GunDefabricator() + { + this.maxStackSize = 1; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) + { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_defabricator_ammo)) + && count % 2 == 0) { + EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, 40, 120, false, "tauDay"); + entitybullet.setDamage(40 + rand.nextInt(120 - 40)); + + //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); + world.playSoundAtEntity(player, "hbm:weapon.defabShoot", 1.0F, 0.9F + (rand.nextFloat() * 0.2F)); + if(count == this.getMaxItemUseDuration(stack)) + world.playSoundAtEntity(player, "hbm:weapon.defabSpinup", 1.0F, 1.0F); + + if(count % 20 == 0 && !flag) + player.inventory.consumeInventoryItem(ModItems.gun_defabricator_ammo); + + if (!world.isRemote) { + world.spawnEntityInWorld(entitybullet); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("BAD WOLF"); + list.add(""); + list.add("Ammo: Defabricator Energy Cell"); + list.add("Damage: 40 - 120"); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 6.5, 0)); + return multimap; + } +} diff --git a/com/hbm/items/weapon/GunHP.java b/com/hbm/items/weapon/GunHP.java new file mode 100644 index 000000000..385f4a8bc --- /dev/null +++ b/com/hbm/items/weapon/GunHP.java @@ -0,0 +1,122 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityFire; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.items.ModItems; +import com.hbm.lib.Library; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunHP extends Item { + + Random rand = new Random(); + + public GunHP() { + this.maxStackSize = 1; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_hp_ammo))) { + + EntityPlasmaBeam plasma = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma1 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma2 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma3 = new EntityPlasmaBeam(world, player, 1F); + EntityPlasmaBeam plasma4 = new EntityPlasmaBeam(world, player, 1F); + plasma1.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma1.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma1.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma2.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma3.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionX *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionY *= (0.75 + (rand.nextDouble() * 0.5)); + plasma4.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); + + if (flag) { + plasma.canBePickedUp = 2; + } else { + if (count % 20 == 0) + player.inventory.consumeInventoryItem(ModItems.gun_hp_ammo); + } + + if (count == this.getMaxItemUseDuration(stack)) + world.playSoundAtEntity(player, "hbm:weapon.immolatorIgnite", 1.0F, 1F); + if (count % 10 == 0) + world.playSoundAtEntity(player, "hbm:weapon.immolatorShoot", 1.0F, 1F); + + if (!world.isRemote) { + world.spawnEntityInWorld(plasma); + world.spawnEntityInWorld(plasma1); + world.spawnEntityInWorld(plasma2); + world.spawnEntityInWorld(plasma3); + world.spawnEntityInWorld(plasma4); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("Rrrrt - rrrrt - rrrrt, weeee!"); + list.add(""); + list.add("Ammo: Ink Cartridge"); + list.add("Damage: 25 - 45"); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 4, 0)); + return multimap; + } +} diff --git a/com/hbm/items/weapon/GunSpark.java b/com/hbm/items/weapon/GunSpark.java new file mode 100644 index 000000000..b7bfd3003 --- /dev/null +++ b/com/hbm/items/weapon/GunSpark.java @@ -0,0 +1,142 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntitySparkBeam; +import com.hbm.items.ModItems; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ArrowLooseEvent; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunSpark extends Item { + Random rand = new Random(); + + public int dmgMin = 12; + public int dmgMax = 24; + + public GunSpark() { + + this.maxStackSize = 1; + } + + /** + * called when the player releases the use item button. Args: itemstack, + * world, entityplayer, itemInUseCount + */ + @Override + public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { + int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; + + ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); + MinecraftForge.EVENT_BUS.post(event); + j = event.charge; + + boolean flag = p_77615_3_.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; + + if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_spark_ammo)) { + float f = j / 20.0F; + f = (f * f + f * 2.0F) / 3.0F; + + if (j < 10.0D) { + return; + } + + if (j > 10.0F) { + f = 10.0F; + } + + p_77615_1_.damageItem(1, p_77615_3_); + + p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 1.0F, 1.0F); + + if (flag) { } else { + p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_spark_ammo); + } + + EntitySparkBeam beam = new EntitySparkBeam(p_77615_2_, p_77615_3_, 3F); + beam.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + + if(!p_77615_2_.isRemote) + p_77615_2_.spawnEntityInWorld(beam); + } + } + + @Override + public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { + return p_77654_1_; + } + + /** + * How long it takes to use or consume an item + */ + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + /** + * returns the action that specifies what animation to play when the items + * is being used + */ + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) { + return EnumAction.bow; + } + + /** + * Called whenever this item is equipped and the right mouse button is + * pressed. Args: itemStack, world, entityPlayer + */ + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + MinecraftForge.EVENT_BUS.post(event); + + if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + /** + * Return the enchantability factor of the item, most of the time is based + * on material. + */ + @Override + public int getItemEnchantability() { + return 1; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("'magic does not compute'"); + list.add("'aeiou'"); + list.add(""); + list.add("Ammo: Electromagnetic Cartridge"); + list.add("Projectiles explode on impact."); + } + + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 4.5, 0)); + return multimap; + } +} diff --git a/com/hbm/lib/HbmChestContents.java b/com/hbm/lib/HbmChestContents.java index 859912063..5b3982f92 100644 --- a/com/hbm/lib/HbmChestContents.java +++ b/com/hbm/lib/HbmChestContents.java @@ -20,8 +20,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ingot_titanium, 0, 7, 10, 4), new WeightedRandomChestContent(ModItems.gun_revolver, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gun_revolver_ammo, 0, 2, 6, 2), - new WeightedRandomChestContent(ModItems.battery_generic, 50, 1, 1, 4), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 1), + new WeightedRandomChestContent(ModItems.battery_generic, 0, 1, 1, 4), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_titanium), 0, 0, 3, 1) }; private static WeightedRandomChestContent[] antenna = new WeightedRandomChestContent[] { @@ -32,8 +32,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.circuit_aluminium, 0, 1, 5, 3), new WeightedRandomChestContent(ModItems.circuit_copper, 0, 1, 3, 2), new WeightedRandomChestContent(ModItems.circuit_red_copper, 0, 1, 2, 1), - new WeightedRandomChestContent(ModItems.battery_generic, 50, 1, 1, 5), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 3), + new WeightedRandomChestContent(ModItems.battery_generic, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 3), new WeightedRandomChestContent(ModItems.powder_iodine, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.powder_bromine, 0, 1, 1, 1), new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.block_titanium), 0, 1, 2, 2), @@ -61,8 +61,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.gun_xvl1456_ammo, 0, 16, 64, 2), new WeightedRandomChestContent(ModItems.grenade_nuclear, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.stealth_boy, 0, 1, 1, 2), - new WeightedRandomChestContent(ModItems.battery_advanced, 200, 1, 1, 3), - new WeightedRandomChestContent(ModItems.battery_schrabidium, 10000, 1, 1, 1), + new WeightedRandomChestContent(ModItems.battery_advanced, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.battery_schrabidium, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.syringe_awesome, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.crate_caller, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.fusion_core, 0, 1, 1, 4), diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index cf648ba69..5d10a3af0 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -160,10 +160,6 @@ public class Library { book5.add("Supply Drop Requester\nRight click to call in a supply drop, has five uses in survival mode."); book5.add("Magazines\nRight click to retrieve ammo for a specific gun."); book5.add("Syringes\nRight click to inject the syringe's content, hit somebody else to give them the effects."); - book5.add(""); - book5.add(""); - book5.add(""); - book5.add("Coincidences are less likely than most people believe, don't you think? Look at things twice. Try imagining what the creators and inventors were thinking. All things happen for a reason, tough sometimes they are not as clear. \n\nPPPPPPP"); } public static boolean checkArmor(EntityPlayer player, Item helmet, Item plate, Item legs, Item boots) { @@ -283,7 +279,8 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_igenerator || world.getBlock(x, y, z) == ModBlocks.dummy_port_cyclotron || world.getBlock(x, y, z) == ModBlocks.dummy_port_well || - world.getBlock(x, y, z) == ModBlocks.dummy_port_flare) + world.getBlock(x, y, z) == ModBlocks.dummy_port_flare || + world.getBlock(x, y, z) == ModBlocks.dummy_port_drill) { return true; } @@ -796,6 +793,22 @@ public class Library { { tileentity = worldObj.getTileEntity(x, y, z - 1); } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x + 1, y, z) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x + 1, y, z); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x - 1, y, z) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x - 1, y, z); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x, y, z + 1) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x, y, z + 1); + } + if(block == ModBlocks.dummy_port_drill && worldObj.getBlock(x, y, z - 1) == ModBlocks.machine_drill) + { + tileentity = worldObj.getTileEntity(x, y, z - 1); + } if(tileentity instanceof IConductor) { @@ -858,13 +871,19 @@ public class Library { if(((TileEntityPylonRedWire)tileentity).uoteab.get(i).ticked != newTact) { ((TileEntityPylonRedWire)tileentity).uoteab.get(i).ticked = newTact; - //that.ffgeua(x, y + 1, z, that.getTact()); - //that.ffgeua(x, y - 1, z, that.getTact()); - //that.ffgeua(x - 1, y, z, that.getTact()); - //that.ffgeua(x + 1, y, z, that.getTact()); - //that.ffgeua(x, y, z - 1, that.getTact()); - //that.ffgeua(x, y, z + 1, that.getTact()); - //TODO: connections + for(int j = 0; j < ((TileEntityPylonRedWire)tileentity).connected.size(); j++) { + TileEntityPylonRedWire pylon = ((TileEntityPylonRedWire)tileentity).connected.get(j); + if(pylon != null) { + that.ffgeua(pylon.xCoord + 1, pylon.yCoord, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord - 1, pylon.yCoord, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord + 1, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord - 1, pylon.zCoord, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord + 1, that.getTact()); + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord - 1, that.getTact()); + + that.ffgeua(pylon.xCoord, pylon.yCoord, pylon.zCoord, that.getTact()); + } + } } } } diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 09fd54735..522e150e2 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.25 BETA (Tennessine-Luna-X02)"; + public static final String VERSION = "1.0.25"; //HBM's Beta Naming Convention: //V T (X-Y-Z) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 57ec2b164..deed6d3c2 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -83,6 +83,7 @@ import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntitySchrab; import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySparkBeam; import com.hbm.items.ModItems; import com.hbm.render.entity.BSmokeRenderer; import com.hbm.render.entity.DSmokeRenderer; @@ -94,6 +95,7 @@ import com.hbm.render.entity.RenderBaleflare; import com.hbm.render.entity.RenderBeam; import com.hbm.render.entity.RenderBeam2; import com.hbm.render.entity.RenderBeam3; +import com.hbm.render.entity.RenderBeam4; import com.hbm.render.entity.RenderBigNuke; import com.hbm.render.entity.RenderBlackHole; import com.hbm.render.entity.RenderChopperMine; @@ -174,6 +176,7 @@ import com.hbm.render.tileentity.RenderGasDuct; import com.hbm.render.tileentity.RenderGasFlare; import com.hbm.render.tileentity.RenderIGenerator; import com.hbm.render.tileentity.RenderLaunchPadTier1; +import com.hbm.render.tileentity.RenderMiningDrill; import com.hbm.render.tileentity.RenderNukeBoy; import com.hbm.render.tileentity.RenderNukeCustom; import com.hbm.render.tileentity.RenderNukeFleija; @@ -186,9 +189,11 @@ import com.hbm.render.tileentity.RenderOilDuct; import com.hbm.render.tileentity.RenderPoleSatelliteReceiver; import com.hbm.render.tileentity.RenderPoleTop; import com.hbm.render.tileentity.RenderPuF6Tank; +import com.hbm.render.tileentity.RenderPylon; import com.hbm.render.tileentity.RenderRedBarrel; import com.hbm.render.tileentity.RenderRotationTester; import com.hbm.render.tileentity.RenderSteelPoles; +import com.hbm.render.tileentity.RenderStructureMaker; import com.hbm.render.tileentity.RenderTapeRecorder; import com.hbm.render.tileentity.RenderTestBombAdvanced; import com.hbm.render.tileentity.RenderTestContainer; @@ -211,6 +216,7 @@ import com.hbm.tileentity.TileEntityDecoSteelPoles; import com.hbm.tileentity.TileEntityDecoTapeRecorder; import com.hbm.tileentity.TileEntityGasDuct; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineCentrifuge; @@ -228,8 +234,10 @@ import com.hbm.tileentity.TileEntityNukePrototype; import com.hbm.tileentity.TileEntityNukeTsar; import com.hbm.tileentity.TileEntityObjTester; import com.hbm.tileentity.TileEntityOilDuct; +import com.hbm.tileentity.TileEntityPylonRedWire; import com.hbm.tileentity.TileEntityRedBarrel; import com.hbm.tileentity.TileEntityRotationTester; +import com.hbm.tileentity.TileEntityStructureMarker; import com.hbm.tileentity.TileEntityTestBombAdvanced; import com.hbm.tileentity.TileEntityTestContainer; import com.hbm.tileentity.TileEntityTestRender; @@ -270,6 +278,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); @@ -381,6 +390,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityPlasmaBeam.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); + RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); RenderingRegistry.registerEntityRenderingHandler(EntityLN2.class, new RenderLN2(ModItems.energy_ball)); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); @@ -396,6 +406,9 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOilDuct.class, new RenderOilDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGasDuct.class, new RenderGasDuct()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonRedWire.class, new RenderPylon()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 8a8f39529..bfd500e59 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -46,7 +46,9 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.wire_advanced_alloy, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_advanced_alloy }); GameRegistry.addRecipe(new ItemStack(ModItems.wire_magnetized_tungsten, 6), new Object[] { "CCC", 'S', Items.string, 'C', ModItems.ingot_magnetized_tungsten }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "LN", "LN", 'L', Items.leather, 'N', "nuggetLead" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.leather, 'C', "dustLead" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.leather, 'C', "dustLead" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_cloth, 4), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Blocks.wool, 'C', "dustNetherQuartz" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_cloth, 16), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', ModItems.powder_bromine, 'C', Blocks.wool })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.filter_coal, 1), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', Items.paper, 'C', "dustCoal" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.plate_mixed, 3), new Object[] { "ANA", "NCN", "ANA", 'A', ModItems.plate_advanced_alloy, 'N', "plateDenseLead", 'C', ModItems.plate_combine_steel })); GameRegistry.addRecipe(new ItemStack(ModItems.bolt_dura_steel, 4), new Object[] { "D", "D", 'D', ModItems.ingot_dura_steel}); @@ -56,6 +58,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.magnet_dee, 1), new Object[] { "SMM", "M M", "MMT", 'S', "ingotSteel", 'M', ModBlocks.fusion_conductor, 'T', ModItems.coil_advanced_torus })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.magnet_circular, 2), new Object[] { "PSP", "MMM", "PSP", 'S', "ingotSteel", 'M', ModBlocks.fusion_conductor, 'P', "plateAdvanced" })); GameRegistry.addRecipe(new ItemStack(ModItems.cyclotron_tower, 1), new Object[] { "CDC", "CDC", "CDC", 'C', ModItems.magnet_circular, 'D', ModItems.magnet_dee }); + + GameRegistry.addRecipe(new ItemStack(ModBlocks.marker_structure, 1), new Object[] { "L", "G", "R", 'L', ModItems.powder_lapis, 'G', Items.glowstone_dust, 'R', Blocks.redstone_torch }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_aluminium, 1), new Object[] { "RAR", "ASA", "RAR", 'S', "plateSteel", 'R', "dustRedstone", 'A', ModItems.wire_aluminium })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.circuit_copper, 1), new Object[] { "RAR", "ASA", "RAR", 'S', ModItems.circuit_aluminium, 'R', "dustNetherQuartz", 'A', ModItems.wire_copper })); @@ -188,6 +192,10 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.nugget_daffergon, 9), new Object[] { "#", '#', ModItems.ingot_daffergon }); GameRegistry.addRecipe(new ItemStack(ModItems.ingot_verticium, 1), new Object[] { "###", "###", "###", '#', ModItems.nugget_verticium }); GameRegistry.addRecipe(new ItemStack(ModItems.nugget_verticium, 9), new Object[] { "#", '#', ModItems.ingot_verticium }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_lithium, 1), new Object[] { "###", "###", "###", '#', ModItems.powder_lithium_tiny }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_lithium_tiny, 9), new Object[] { "#", '#', ModItems.powder_lithium }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_cobalt, 1), new Object[] { "###", "###", "###", '#', ModItems.powder_cobalt_tiny }); + GameRegistry.addRecipe(new ItemStack(ModItems.powder_cobalt_tiny, 9), new Object[] { "#", '#', ModItems.powder_cobalt }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.rod_empty, 16), new Object[] { "SSS", "L L", "SSS", 'S', "plateSteel", 'L', "plateLead" })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.rod_uranium, 1), new Object[] { ModItems.rod_empty, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium, ModItems.nugget_uranium }); @@ -457,6 +465,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_industrial_generator), 1), new Object[] { "PPP", "FGG", "WSS", 'P', ModItems.board_copper, 'F', ModItems.generator_front, 'G', ModItems.generator_steel, 'W', ModBlocks.red_wire_coated, 'S', ModItems.pedestal_steel }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 16), new Object[] { "WRW", "RIR", "WRW", 'W', "ingotTungsten", 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { "WRW", "RIR", "WRW", 'W', "plateSteel", 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_pylon), 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper_torus, 'W', "plankWood", 'P', "plateSteel", 'T', ModBlocks.red_wire_coated })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', "ingotSteel", 'P', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct), 16), new Object[] { "SIS", " ", "SIS", 'S', "plateSteel", 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.gas_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', "ingotSteel", 'P', "plateCopper" })); @@ -547,7 +556,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_hatch), 1), new Object[] { "SSS", "SFS", "SSS", 'S', ModBlocks.fwatz_scaffold, 'F', Blocks.furnace })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_computer), 1), new Object[] { "DTD", "TMT", "DTD", 'D', "dustDiamond", 'T', "dustMagnetizedTungsten", 'M', ModBlocks.block_meteor })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_core), 1), new Object[] { "CMC", "MAM", "CMC", 'C', ModItems.circuit_schrabidium, 'M', ModBlocks.fwatz_computer, 'A', ModBlocks.fwatz_conductor })); - + + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.asphalt), 8), new Object[] { "BGB", "GSG", "BGB", 'B', ModItems.canister_smear, 'G', Blocks.gravel, 'S', Blocks.sand }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_light), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.fence, 'B', Blocks.brick_block }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.stone }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_obsidian), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.obsidian }); @@ -632,6 +642,12 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.gun_jack_ammo, 1), new Object[] { ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo, ModItems.gun_uboinik_ammo }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_euthanasia, 1), new Object[] { "TDT", "AAS", " T ", 'A', "ingotAustralium", 'T', ModItems.toothpicks, 'S', ModItems.gun_mp40, 'D', ModItems.ducttape })); GameRegistry.addShapedRecipe(new ItemStack(ModItems.gun_euthanasia_ammo, 12), new Object[] { "P", "S", "N", 'P', ModItems.powder_poison, 'N', ModItems.niter, 'S', ModItems.syringe_metal_empty }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_spark, 1), new Object[] { "TTD", "AAS", " T", 'A', "ingotDaffergon", 'T', ModItems.toothpicks, 'S', ModItems.gun_rpg, 'D', ModItems.ducttape })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_spark_ammo, 4), new Object[] { "PCP", "DDD", "PCP", 'P', "plateLead", 'C', ModItems.coil_gold, 'D', ModItems.powder_power })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_hp, 1), new Object[] { "TDT", "ASA", " T ", 'A', "ingotReiium", 'T', ModItems.toothpicks, 'S', ModItems.gun_xvl1456, 'D', ModItems.ducttape })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_hp_ammo, 8), new Object[] { " R ", "BSK", " Y ", 'S', "plateSteel", 'K', new ItemStack(Items.dye, 1, 0), 'R', new ItemStack(Items.dye, 1, 1), 'B', new ItemStack(Items.dye, 1, 4), 'Y', new ItemStack(Items.dye, 1, 11) })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_defabricator, 1), new Object[] { " SS", "DDD", "TCB", 'S', "plateSteel", 'D', ModItems.plate_dalekanium, 'T', "plateTitanium", 'C', ModItems.circuit_gold, 'B', ModItems.battery_lithium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_defabricator_ammo, 16), new Object[] { "PCP", "DDD", "PCP", 'P', "plateSteel", 'C', ModItems.coil_copper, 'D', "dustLithium" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.grenade_generic, 4), new Object[] { "RS ", "ITI", " I ", 'I', "plateIron", 'R', ModItems.wire_red_copper, 'S', "plateSteel", 'T', Item.getItemFromBlock(Blocks.tnt) })); GameRegistry.addRecipe(new ItemStack(ModItems.grenade_strong, 2), new Object[] { " G ", "SGS", " S ", 'G', ModItems.grenade_generic, 'S', Items.gunpowder }); @@ -840,6 +856,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.chainsaw, 1), new Object[] { "TTG", "SSM", 'T', "plateIron", 'S', "plateSteel", 'M', ModItems.motor, 'G', ModItems.circuit_gold })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', "plateSteel", 'I', "ingotSteel" })); + ItemStack multitool = new ItemStack(ModItems.multitool_dig, 1); multitool.addEnchantment(Enchantment.looting, 3); multitool.addEnchantment(Enchantment.fortune, 3); @@ -851,6 +869,10 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.hazmat_cloth }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.hazmat_cloth }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_boots, 1), new Object[] { "E E", "E E", 'E', ModItems.hazmat_cloth }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.asbestos_helmet, 1), new Object[] { "EEE", "EIE", 'E', ModItems.asbestos_cloth, 'I', "plateGold" })); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.asbestos_cloth }); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.asbestos_cloth }); + GameRegistry.addRecipe(new ItemStack(ModItems.asbestos_boots, 1), new Object[] { "E E", "E E", 'E', ModItems.asbestos_cloth }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.hazmat_paa_helmet, 1), new Object[] { "EEE", "IEI", "FPF", 'E', ModItems.plate_paa, 'I', "paneGlass", 'P', "plateSteel", 'F', ModItems.filter_coal })); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_paa_plate, 1), new Object[] { "E E", "EEE", "EEE", 'E', ModItems.plate_paa }); GameRegistry.addRecipe(new ItemStack(ModItems.hazmat_paa_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ModItems.plate_paa }); @@ -901,10 +923,12 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.dye, 1, 4), new Object[] { "#", '#', "dustLapis" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.diamond, 1), new Object[] { "#", '#', "dustDiamond" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.emerald, 1), new Object[] { "#", '#', "dustEmerald" })); - if(MainRegistry.enableNITAN) + if(MainRegistry.enableNITAN) { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_neptunium, ModItems.powder_iodine, ModItems.powder_thorium, ModItems.powder_astatine, ModItems.powder_neodymium, ModItems.powder_caesium }); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_tennessine, ModItems.powder_niobium, ModItems.powder_cerium }); - + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.canister_NITAN, 1), new Object[] { ModItems.canister_empty, ModItems.canister_napalm, ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_tennessine, ModItems.powder_niobium, ModItems.powder_cerium }); + } + GameRegistry.addRecipe(new ItemStack(ModItems.canister_petroil, 9), new Object[] { "RRR", "RLR", "RRR", 'R', ModItems.canister_reoil, 'L', ModItems.canister_canola }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_lc, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustLapis" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_ss, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustAdvanced" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.record_vc, 1), new Object[] { " S ", "SDS", " S ", 'S', "ingotSteel", 'D', "dustCMBSteel" })); @@ -941,7 +965,7 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.crystal_horn, 1), new Object[] { ModItems.powder_neptunium, ModItems.powder_iodine, ModItems.powder_thorium, ModItems.powder_astatine, ModItems.powder_neodymium, ModItems.powder_caesium, ModBlocks.block_meteor, ModBlocks.gravel_obsidian, Items.water_bucket }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.crystal_charred, 1), new Object[] { ModItems.powder_strontium, ModItems.powder_cobalt, ModItems.powder_bromine, ModItems.powder_niobium, ModItems.powder_tennessine, ModItems.powder_cerium, ModBlocks.block_meteor, ModBlocks.block_aluminium, Items.water_bucket }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_virus, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_sas3, 'T', "dustTungsten", 'H', ModItems.crystal_horn })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 1), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred })); } public static void AddSmeltingRec() @@ -997,6 +1021,7 @@ public class CraftingManager { GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.tank_waste, new ItemStack(ModItems.tank_waste), 0.0F); + GameRegistry.addSmelting(ModItems.canister_smear, new ItemStack(ModItems.canister_reoil), 1.0F); GameRegistry.addSmelting(Items.bone, new ItemStack(Items.slime_ball, 3), 0.0F); GameRegistry.addSmelting(new ItemStack(Items.dye, 1, 15), new ItemStack(Items.slime_ball, 1), 0.0F); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index fd8f161d9..dcf5a0360 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -109,6 +109,7 @@ import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntitySchrab; import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySparkBeam; import com.hbm.handler.FuelHandler; import com.hbm.handler.GUIHandler; import com.hbm.inventory.MachineRecipes; @@ -117,6 +118,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.HbmWorld; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.TileEntityBombMulti; import com.hbm.tileentity.TileEntityCable; import com.hbm.tileentity.TileEntityConverterHeRf; @@ -137,6 +139,7 @@ import com.hbm.tileentity.TileEntityGasDuct; import com.hbm.tileentity.TileEntityGasDuctSolid; import com.hbm.tileentity.TileEntityHatch; import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; import com.hbm.tileentity.TileEntityMachineBattery; @@ -174,6 +177,7 @@ import com.hbm.tileentity.TileEntityReactorMultiblock; import com.hbm.tileentity.TileEntityRedBarrel; import com.hbm.tileentity.TileEntityRotationTester; import com.hbm.tileentity.TileEntityRtgFurnace; +import com.hbm.tileentity.TileEntityStructureMarker; import com.hbm.tileentity.TileEntityTestBombAdvanced; import com.hbm.tileentity.TileEntityTestContainer; import com.hbm.tileentity.TileEntityTestNuke; @@ -200,6 +204,9 @@ public class MainRegistry @SidedProxy(clientSide = RefStrings.CLIENTSIDE, serverSide = RefStrings.SERVERSIDE) public static ServerProxy proxy; + //We'll get to that eventually + //public static PacketHandler packetHandler; + @Metadata public static ModMetadata meta; @@ -246,7 +253,7 @@ public class MainRegistry public static CreativeTabs tabNuke = new NukeTab(CreativeTabs.getNextID(), "tabNuke"); //Achievements - public static Achievement achievementGetTitanium; + /*public static Achievement achievementGetTitanium; public static Achievement achievementGetCopper; public static Achievement achievementCraftAlloyFurnace; public static Achievement achievementCraftElectricFurnace; @@ -284,7 +291,7 @@ public class MainRegistry public static Achievement achievementGetAustalium; public static Achievement achievementGetVerticium; public static Achievement achievementGetUnobtainium; - public static Achievement achievementGetDaffergon; + public static Achievement achievementGetDaffergon;*/ public static boolean enableDebugMode = true; public static boolean enableMycelium = false; @@ -446,6 +453,8 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityGasDuctSolid.class, "tileentity_gas_duct_solid"); GameRegistry.registerTileEntity(TileEntityMachineRTG.class, "tileentity_machine_rtg"); GameRegistry.registerTileEntity(TileEntityPylonRedWire.class, "tileentity_pylon_redwire"); + GameRegistry.registerTileEntity(TileEntityStructureMarker.class, "tileentity_structure_marker"); + GameRegistry.registerTileEntity(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -524,6 +533,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityGasFX.class, "entity_spill_fx", 74, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityGasFlameFX.class, "entity_gasflame_fx", 75, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMinecartTest.class, "entity_minecart_test", 76, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntitySparkBeam.class, "entity_spark_beam", 77, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityHunterChopper.class, "entity_mob_hunter_chopper", EntityRegistry.findGlobalUniqueEntityId(), 0x000020, 0x2D2D72); @@ -533,7 +543,7 @@ public class MainRegistry @EventHandler public static void load(FMLInitializationEvent event) { - achievementGetTitanium = new Achievement("achievement.getTitanium", "getTitanium", 0, -6, ModItems.ingot_titanium, (Achievement)null).initIndependentStat() .registerStat(); + /*achievementGetTitanium = new Achievement("achievement.getTitanium", "getTitanium", 0, -6, ModItems.ingot_titanium, (Achievement)null).initIndependentStat() .registerStat(); achievementCraftAlloyFurnace = new Achievement("achievement.craftAlloyFurnace", "craftAlloyFurnace", -2, -4, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), (Achievement)null).initIndependentStat() .registerStat(); achievementCraftBreedingReactor = new Achievement("achievement.craftBreedingReactor", "craftBreedingReactor", 2, -4, Item.getItemFromBlock(ModBlocks.machine_reactor), (Achievement)null).initIndependentStat() .registerStat(); achievementCraftCentrifuge = new Achievement("achievement.craftCentrifuge", "craftCentrifuge", 2, -2, Item.getItemFromBlock(ModBlocks.machine_centrifuge), achievementCraftBreedingReactor).initIndependentStat() .registerStat(); @@ -542,7 +552,7 @@ public class MainRegistry achievementCraftAlloyFurnace, achievementCraftBreedingReactor, achievementCraftCentrifuge - })); + }));*/ OreDictionary.registerOre("ingotUranium", ModItems.ingot_uranium); OreDictionary.registerOre("ingotUranium235", ModItems.ingot_u235); @@ -764,6 +774,8 @@ public class MainRegistry recipes.overridePreSetRecipe(new ItemStack(Blocks.tnt), new ItemStack(Items.gunpowder, 5)); recipes.overridePreSetRecipe(new ItemStack(Items.wheat_seeds), new ItemStack(ModItems.oil_canola, 1)); recipes.overridePreSetRecipe(new ItemStack(Items.pumpkin_seeds), new ItemStack(ModItems.oil_canola, 2)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_quartz), new ItemStack(ModItems.powder_lithium_tiny, 1)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.powder_lapis), new ItemStack(ModItems.powder_cobalt_tiny, 1)); recipes.PrintRecipes(); } @@ -775,6 +787,7 @@ public class MainRegistry MinecraftForge.EVENT_BUS.register(new ModEventHandler()); MinecraftForge.TERRAIN_GEN_BUS.register(new ModEventHandler()); MinecraftForge.ORE_GEN_BUS.register(new ModEventHandler()); + PacketDispatcher.registerPackets(); Configuration config = new Configuration(event.getSuggestedConfigurationFile()); config.load(); diff --git a/com/hbm/main/ModEventHandler.java b/com/hbm/main/ModEventHandler.java index 3c694ffd3..455eeccb8 100644 --- a/com/hbm/main/ModEventHandler.java +++ b/com/hbm/main/ModEventHandler.java @@ -24,7 +24,7 @@ public class ModEventHandler showMessage = !showMessage; } - @SubscribeEvent + /*@SubscribeEvent public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) { if(e.smelting.getItem().equals(ModItems.ingot_titanium)) { e.player.addStat(MainRegistry.achievementGetTitanium, 1); @@ -52,5 +52,5 @@ public class ModEventHandler if(e.pickedUp.getEntityItem().equals(ModItems.nothing)) { //e.player.addStat(MainRegistry.achievementGetAmblygonite, 1); } - } + }*/ } diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java new file mode 100644 index 000000000..233844da3 --- /dev/null +++ b/com/hbm/packet/PacketDispatcher.java @@ -0,0 +1,28 @@ +package com.hbm.packet; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import cpw.mods.fml.relauncher.Side; + +public class PacketDispatcher { + + //Mark 1 Packet Sending Device + public static final SimpleNetworkWrapper wrapper = NetworkRegistry.INSTANCE.newSimpleChannel(RefStrings.MODID); + + public static final void registerPackets() + { + //Packet sent for every connected electricity pole, for wire rendering + wrapper.registerMessage(TEPylonSenderPacket.Handler.class, TEPylonSenderPacket.class, 0, Side.CLIENT); + //Resets connection list in client-sided pole rendering + wrapper.registerMessage(TEPylonDestructorPacket.Handler.class, TEPylonDestructorPacket.class, 1, Side.CLIENT); + //Flywheel rotation for industrial generator rendering + wrapper.registerMessage(TEIGeneratorPacket.Handler.class, TEIGeneratorPacket.class, 2, Side.CLIENT); + //Machine type for marker rendering + wrapper.registerMessage(TEStructurePacket.Handler.class, TEStructurePacket.class, 3, Side.CLIENT); + //Mingin drill rotation for rendering + wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, 4, Side.CLIENT); + } + +} diff --git a/com/hbm/packet/TEDrillPacket.java b/com/hbm/packet/TEDrillPacket.java new file mode 100644 index 000000000..6506f1ed7 --- /dev/null +++ b/com/hbm/packet/TEDrillPacket.java @@ -0,0 +1,67 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEDrillPacket implements IMessage { + + int x; + int y; + int z; + float spin; + + public TEDrillPacket() + { + + } + + public TEDrillPacket(int x, int y, int z, float spin) + { + this.x = x; + this.y = y; + this.z = z; + this.spin = spin; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + spin = buf.readFloat(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeFloat(spin); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEDrillPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityMachineMiningDrill) { + + TileEntityMachineMiningDrill gen = (TileEntityMachineMiningDrill) te; + gen.rotation = m.spin; + } + return null; + } + } +} diff --git a/com/hbm/packet/TEIGeneratorPacket.java b/com/hbm/packet/TEIGeneratorPacket.java new file mode 100644 index 000000000..86fb32259 --- /dev/null +++ b/com/hbm/packet/TEIGeneratorPacket.java @@ -0,0 +1,66 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEIGeneratorPacket implements IMessage { + + int x; + int y; + int z; + float spin; + + public TEIGeneratorPacket() + { + + } + + public TEIGeneratorPacket(int x, int y, int z, float spin) + { + this.x = x; + this.y = y; + this.z = z; + this.spin = spin; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + spin = buf.readFloat(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeFloat(spin); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEIGeneratorPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityMachineIGenerator) { + + TileEntityMachineIGenerator gen = (TileEntityMachineIGenerator) te; + gen.rotation = m.spin; + } + return null; + } + } +} diff --git a/com/hbm/packet/TEPylonDestructorPacket.java b/com/hbm/packet/TEPylonDestructorPacket.java new file mode 100644 index 000000000..861285890 --- /dev/null +++ b/com/hbm/packet/TEPylonDestructorPacket.java @@ -0,0 +1,61 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEPylonDestructorPacket implements IMessage { + + int x; + int y; + int z; + + public TEPylonDestructorPacket() + { + + } + + public TEPylonDestructorPacket(int x, int y, int z) + { + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEPylonDestructorPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire) te; + pyl.connected.clear(); + } + return null; + } + } +} diff --git a/com/hbm/packet/TEPylonSenderPacket.java b/com/hbm/packet/TEPylonSenderPacket.java new file mode 100644 index 000000000..bde0c624f --- /dev/null +++ b/com/hbm/packet/TEPylonSenderPacket.java @@ -0,0 +1,78 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityPylonRedWire; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEPylonSenderPacket implements IMessage { + + //Pylon connection synchronization packet, Mk.III + //1: try sending list, every entry gets noted in the bit buffer + //2: Up to 3 entries (9 variables in total, not counting origin coordiantes) sync all connections at once + //3: One packet sent for each connection, packets are lighter and work fine for rendering + + int x; + int y; + int z; + int conX; + int conY; + int conZ; + + public TEPylonSenderPacket() + { + + } + + public TEPylonSenderPacket(int x, int y, int z, int conX, int conY, int conZ) + { + this.x = x; + this.y = y; + this.z = z; + this.conX = conX; + this.conY = conY; + this.conZ = conZ; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + conX = buf.readInt(); + conY = buf.readInt(); + conZ = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(conX); + buf.writeInt(conY); + buf.writeInt(conZ); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEPylonSenderPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityPylonRedWire) { + + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire) te; + pyl.addTileEntityBasedOnCoords(m.conX, m.conY, m.conZ); + } + return null; + } + } +} diff --git a/com/hbm/packet/TEStructurePacket.java b/com/hbm/packet/TEStructurePacket.java new file mode 100644 index 000000000..5a2bf48ab --- /dev/null +++ b/com/hbm/packet/TEStructurePacket.java @@ -0,0 +1,67 @@ +package com.hbm.packet; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityPylonRedWire; +import com.hbm.tileentity.TileEntityStructureMarker; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TEStructurePacket implements IMessage { + + int x; + int y; + int z; + int type; + + public TEStructurePacket() + { + + } + + public TEStructurePacket(int x, int y, int z, int type) + { + this.x = x; + this.y = y; + this.z = z; + this.type = type; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + type = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(type); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(TEStructurePacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if (te != null && te instanceof TileEntityStructureMarker) { + + TileEntityStructureMarker marker = (TileEntityStructureMarker) te; + marker.type = m.type; + } + return null; + } + } +} diff --git a/com/hbm/render/entity/RenderBeam4.java b/com/hbm/render/entity/RenderBeam4.java new file mode 100644 index 000000000..09a32c771 --- /dev/null +++ b/com/hbm/render/entity/RenderBeam4.java @@ -0,0 +1,87 @@ +package com.hbm.render.entity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntityRainbow; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelBullet; +import com.hbm.render.model.ModelMiniNuke; + +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderBeam4 extends Render { + + Random rand = new Random(); + + @Override + public void doRender(Entity rocket, double x, double y, double z, float p_76986_8_, float p_76986_9_) { + //float radius = 0.12F; + //float radius = 0.06F; + float radius = 0.45F; + int distance = 2; + Tessellator tessellator = Tessellator.instance; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glTranslatef((float) x, (float) y, (float) z); + + GL11.glRotatef(rocket.rotationYaw, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-rocket.rotationPitch, 1.0F, 0.0F, 0.0F); + + boolean red = true; + boolean green = true; + boolean blue = false; + + for (float o = 0; o <= radius; o += radius / 8) { + float color = 1f - (o * 8.333f); + if (color < 0) + color = 0; + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.draw(); + } + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return new ResourceLocation(RefStrings.MODID + ":textures/models/PlasmaBeam.png"); + } +} diff --git a/com/hbm/render/item/ItemRenderOverkill.java b/com/hbm/render/item/ItemRenderOverkill.java index 340bd9ccd..9998aafa4 100644 --- a/com/hbm/render/item/ItemRenderOverkill.java +++ b/com/hbm/render/item/ItemRenderOverkill.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; import com.hbm.render.model.ModelHP; @@ -75,6 +76,8 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glScalef(0.5F, 0.5F, 0.5F); //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); GL11.glTranslatef(-0.2F, -0.1F, -0.1F); + if(item.getItem() == ModItems.gun_defabricator) + GL11.glTranslatef(0, 0.5F, 0.4F); if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); @@ -109,8 +112,16 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glTranslatef(0.0F, -0.2F, -0.5F); GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); + //GL11.glScalef(0.75F, 0.75F, 0.75F); GL11.glTranslatef(-1.4F, 0.0F, 0.0F); + if(item.getItem() == ModItems.gun_jack) + GL11.glTranslatef(0.3F, 0, 0); + if(item.getItem() == ModItems.gun_spark) + GL11.glTranslatef(0.4F, 0, 0); + if(item.getItem() == ModItems.gun_hp) + GL11.glTranslatef(0.5F, 0.2F, 0); + if(item.getItem() == ModItems.gun_defabricator) + GL11.glTranslatef(0.5F, 0.6F, -0.2F); if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); diff --git a/com/hbm/render/model/ModelDefabricator.java b/com/hbm/render/model/ModelDefabricator.java index 7a4d0b432..9a4986496 100755 --- a/com/hbm/render/model/ModelDefabricator.java +++ b/com/hbm/render/model/ModelDefabricator.java @@ -9,6 +9,8 @@ package com.hbm.render.model; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -213,7 +215,11 @@ public class ModelDefabricator extends ModelBase setRotationAngles(f, f1, f2, f3, f4, f5, entity); for(int i = 0; i < 40; i++) { + if(i == 20) + GL11.glDisable(GL11.GL_CULL_FACE); modeldefabricatorModel[i].render(f5); + if(i == 20) + GL11.glEnable(GL11.GL_CULL_FACE); } } diff --git a/com/hbm/render/model/ModelPylon.java b/com/hbm/render/model/ModelPylon.java new file mode 100755 index 000000000..8ca9dce7a --- /dev/null +++ b/com/hbm/render/model/ModelPylon.java @@ -0,0 +1,73 @@ +//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 +// Copyright (C) 2017 Minecraft-SMP.de +// This file is for Flan's Flying Mod Version 4.0.x+ + +// Model: Pylon +// Model Creator: +// Created on:13.06.2017 - 11:17:46 +// Last changed on: 13.06.2017 - 11:17:46 + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelPylon extends ModelBase +{ + int textureX = 64; + int textureY = 128; + + public ModelRenderer pylonModel[]; + + public ModelPylon() + { + textureWidth = 64; + textureHeight = 128; + pylonModel = new ModelRenderer[4]; + pylonModel[0] = new ModelRenderer(this, 0, 96); // Box 0 + pylonModel[1] = new ModelRenderer(this, 1, 1); // Box 1 + pylonModel[2] = new ModelRenderer(this, 24, 1); // Box 2 + pylonModel[3] = new ModelRenderer(this, 25, 17); // Box 3 + + pylonModel[0].addBox(0F, 0F, 0F, 16, 16, 16, 0F); // Box 0 + pylonModel[0].setRotationPoint(-8F, -6F, -8F); + + pylonModel[1].addBox(0F, 0F, 0F, 4, 73, 4, 0F); // Box 1 + pylonModel[1].setRotationPoint(-2F, -79F, -2F); + + pylonModel[2].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 2 + pylonModel[2].setRotationPoint(-3F, -74F, -3F); + + pylonModel[3].addBox(0F, 0F, 0F, 6, 2, 6, 0F); // Box 3 + pylonModel[3].setRotationPoint(-3F, -78F, -3F); + + + for(int i = 0; i < pylonModel.length; i++) { + pylonModel[i].setTextureSize(textureX, textureY); + pylonModel[i].mirror = true; + } + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + for(int i = 0; i < 4; i++) + { + pylonModel[i].render(f5); + } + } + + public void renderAll(float f5) + { + for(int i = 0; i < 4; i++) + { + pylonModel[i].render(f5); + } + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } +} \ No newline at end of file diff --git a/com/hbm/render/model/ModelSpark.java b/com/hbm/render/model/ModelSpark.java index 8e7bd6443..5e3fcb0a4 100644 --- a/com/hbm/render/model/ModelSpark.java +++ b/com/hbm/render/model/ModelSpark.java @@ -11,6 +11,8 @@ package com.hbm.render.model; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -152,7 +154,9 @@ public class ModelSpark extends ModelBase BarrelMain.render(f5); BarrelSide.render(f5); PlateFront.render(f5); + GL11.glDisable(GL11.GL_CULL_FACE); Sight.render(f5); + GL11.glEnable(GL11.GL_CULL_FACE); Grip.render(f5); Cell1.render(f5); Cell2.render(f5); diff --git a/com/hbm/render/tileentity/RenderIGenerator.java b/com/hbm/render/tileentity/RenderIGenerator.java index 109ac8f02..6cf68f173 100644 --- a/com/hbm/render/tileentity/RenderIGenerator.java +++ b/com/hbm/render/tileentity/RenderIGenerator.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineIGenerator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -61,8 +62,6 @@ public class RenderIGenerator extends TileEntitySpecialRenderer { renderTileEntityAt2(tileEntity, x, y, z, f); } - int i = 0; - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); @@ -85,8 +84,8 @@ public class RenderIGenerator extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, 0.0D); break; } - i++; - GL11.glRotatef(i, 1F, 0F, 0F); + + GL11.glRotatef(((TileEntityMachineIGenerator)tileEntity).rotation, 1F, 0F, 0F); bindTexture(rotTexture); rotModel.renderAll(); diff --git a/com/hbm/render/tileentity/RenderMiningDrill.java b/com/hbm/render/tileentity/RenderMiningDrill.java new file mode 100644 index 000000000..593f073b7 --- /dev/null +++ b/com/hbm/render/tileentity/RenderMiningDrill.java @@ -0,0 +1,96 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderMiningDrill extends TileEntitySpecialRenderer { + + private static final ResourceLocation body = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/drill_main.obj"); + private static final ResourceLocation bolt = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/drill_bolt.obj"); + + private IModelCustom bodyModel; + private ResourceLocation bodyTexture; + private IModelCustom boltModel; + private ResourceLocation boltTexture; + + public RenderMiningDrill() + { + bodyModel = AdvancedModelLoader.loadModel(body); + bodyTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); + boltModel = AdvancedModelLoader.loadModel(bolt); + boltTexture = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png"); + } + + @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); + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(180, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 4: + GL11.glRotatef(270, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 3: + GL11.glRotatef(0, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 5: + GL11.glRotatef(90, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + } + + bindTexture(bodyTexture); + + bodyModel.renderAll(); + + 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); + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(90, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + //GL11.glTranslated(0.5D, 0.0D, 0.0D); break; + } + + GL11.glRotatef(((TileEntityMachineMiningDrill)tileEntity).rotation, 0F, 1F, 0F); + + bindTexture(boltTexture); + boltModel.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/render/tileentity/RenderPylon.java b/com/hbm/render/tileentity/RenderPylon.java new file mode 100644 index 000000000..e72a26b7c --- /dev/null +++ b/com/hbm/render/tileentity/RenderPylon.java @@ -0,0 +1,79 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelPylon; +import com.hbm.render.model.ModelSteelBeam; +import com.hbm.render.model.ModelSteelCorner; +import com.hbm.render.model.ModelSteelRoof; +import com.hbm.render.model.ModelSteelScaffold; +import com.hbm.render.model.ModelSteelWall; +import com.hbm.tileentity.TileEntityPylonRedWire; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityHanging; +import net.minecraft.entity.EntityLiving; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderPylon extends TileEntitySpecialRenderer { + + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelPylon.png"); + + private ModelPylon pylon; + + public RenderPylon() { + this.pylon = new ModelPylon(); + } + + @Override + public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { + TileEntityPylonRedWire pyl = (TileEntityPylonRedWire)tileentity; + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F); + GL11.glRotatef(180, 0F, 0F, 1F); + bindTexture(texture); + this.pylon.renderAll(0.0625F); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + for(TileEntityPylonRedWire wire : pyl.connected) + drawPowerLine(x + 0.5, y + 5.3, z + 0.5, x + (wire.xCoord - pyl.xCoord) + 0.5, y + (wire.yCoord - pyl.yCoord) + 5.3, z + (wire.zCoord - pyl.zCoord) + 0.5); + GL11.glPopMatrix(); + } + + public void drawPowerLine(double x, double y, double z, double a, double b, double c) { + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x, y + 0.05F, z); + tessellator.addVertex(x, y - 0.05F, z); + tessellator.addVertex(a, b + 0.05F, c); + tessellator.addVertex(a, b - 0.05F, c); + tessellator.draw(); + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x + 0.05F, y, z); + tessellator.addVertex(x - 0.05F, y, z); + tessellator.addVertex(a + 0.05F, b, c); + tessellator.addVertex(a - 0.05F, b, c); + tessellator.draw(); + tessellator.startDrawing(5); + tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.addVertex(x, y, z + 0.05F); + tessellator.addVertex(x, y, z - 0.05F); + tessellator.addVertex(a, b, c + 0.05F); + tessellator.addVertex(a, b, c - 0.05F); + tessellator.draw(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_CULL_FACE); + } + +} diff --git a/com/hbm/render/tileentity/RenderStructureMaker.java b/com/hbm/render/tileentity/RenderStructureMaker.java new file mode 100644 index 000000000..3a60c0ffd --- /dev/null +++ b/com/hbm/render/tileentity/RenderStructureMaker.java @@ -0,0 +1,411 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelTapeRecorder; +import com.hbm.tileentity.TileEntityStructureMarker; +import com.hbm.world.FWatz; +import com.hbm.world.FactoryTitanium; +import com.hbm.world.FusionReactor; +import com.hbm.world.NuclearReactor; +import com.hbm.world.Watz; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class RenderStructureMaker extends TileEntitySpecialRenderer { + + float pixel = 1F/16F; + + public RenderStructureMaker() { + } + + @Override + public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180, 0F, 0F, 1F); + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL14.glBlendEquation(GL14.GL_FUNC_ADD); + GL11.glColor4f(0.5f, 0.25f, 1.0f, 1f); + this.renderBlocks((int)x, (int)y, (int)z, ((TileEntityStructureMarker)tileentity).type, tileentity.getWorldObj().getBlockMetadata(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord)); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } + + public void renderBlocks(int x, int y, int z, int type, int meta) { + int offsetX = 0; + int offsetZ = 0; + if(type == 0) { + + if(meta == 6) { + offsetZ = 2; + } + if(meta == 7) { + offsetX = 2; + } + if(meta == 8) { + offsetZ = -2; + } + if(meta == 9) { + offsetX = -2; + } + + GL11.glTranslatef(-1 + offsetX, -2, -1 + offsetZ); + for(int a = 0; a < 3; a++) { + for(int b = 0; b < 3; b++) { + for(int c = 0; c < 3; c++) { + + Block block = Blocks.air; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.factory_titanium_hull; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("F")) + block = ModBlocks.factory_titanium_furnace; + if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.factory_titanium_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 1) { + + if(meta == 6) { + offsetZ = 3; + } + if(meta == 7) { + offsetX = 3; + } + if(meta == 8) { + offsetZ = -3; + } + if(meta == 9) { + offsetX = -3; + } + + GL11.glTranslatef(-2 + offsetX, -3, -2 + offsetZ); + for(int a = 0; a < 5; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 5; c++) { + + Block block = Blocks.air; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.reactor_element; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.reactor_computer; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reactor_control; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.reactor_hatch; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.reactor_conductor; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 2) { + + if(meta == 6) { + offsetZ = 3; + } + if(meta == 7) { + offsetX = 3; + } + if(meta == 8) { + offsetZ = -3; + } + if(meta == 9) { + offsetX = -3; + } + + GL11.glTranslatef(-2 + offsetX, -4, -2 + offsetZ); + for(int a = 0; a < 5; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 5; c++) { + + Block block = Blocks.air; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.reactor_element; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.reactor_computer; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reactor_control; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.reactor_hatch; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.reactor_conductor; + if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B")) + block = ModBlocks.brick_concrete; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 3) { + + if(meta == 6) { + offsetZ = 9; + } + if(meta == 7) { + offsetX = 9; + } + if(meta == 8) { + offsetZ = -9; + } + if(meta == 9) { + offsetX = -9; + } + + GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); + for(int a = 0; a < 17; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 17; c++) { + + Block block = Blocks.air; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fusion_conductor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fusion_heater; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.fusion_hatch; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.fusion_motor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fusion_center; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fusion_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 4) { + + if(meta == 6) { + offsetZ = 9; + } + if(meta == 7) { + offsetX = 9; + } + if(meta == 8) { + offsetZ = -9; + } + if(meta == 9) { + offsetX = -9; + } + + GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ); + for(int a = 0; a < 17; a++) { + for(int b = 0; b < 5; b++) { + for(int c = 0; c < 17; c++) { + + Block block = Blocks.air; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fusion_conductor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fusion_heater; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.fusion_hatch; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.fusion_motor; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fusion_center; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fusion_core; + if(FusionReactor.array[b][a].substring(c, c + 1).equals("T")) + block = ModBlocks.block_tungsten; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 5) { + + if(meta == 6) { + offsetZ = 4; + } + if(meta == 7) { + offsetX = 4; + } + if(meta == 8) { + offsetZ = -4; + } + if(meta == 9) { + offsetX = -4; + } + + GL11.glTranslatef(-3 + offsetX, -12, -3 + offsetZ); + for(int a = 0; a < 7; a++) { + for(int b = 0; b < 13; b++) { + for(int c = 0; c < 7; c++) { + + Block block = Blocks.air; + if(Watz.array[b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.reinforced_brick; + if(Watz.array[b][a].substring(c, c + 1).equals("A")) + block = ModBlocks.watz_hatch; + if(Watz.array[b][a].substring(c, c + 1).equals("R")) + block = ModBlocks.watz_control; + if(Watz.array[b][a].substring(c, c + 1).equals("S")) + block = ModBlocks.watz_end; + if(Watz.array[b][a].substring(c, c + 1).equals("I")) + block = ModBlocks.watz_conductor; + if(Watz.array[b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.watz_core; + if(Watz.array[b][a].substring(c, c + 1).equals("K")) + block = ModBlocks.watz_cooler; + if(Watz.array[b][a].substring(c, c + 1).equals("W")) + block = ModBlocks.watz_element; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + if(type == 6) { + + if(meta == 6) { + offsetZ = 10; + } + if(meta == 7) { + offsetX = 10; + } + if(meta == 8) { + offsetZ = -10; + } + if(meta == 9) { + offsetX = -10; + } + + GL11.glTranslatef(-9 + offsetX, -18, -9 + offsetZ); + for(int a = 0; a < 19; a++) { + for(int b = 0; b < 19; b++) { + for(int c = 0; c < 19; c++) { + + Block block = Blocks.air; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("X")) + block = ModBlocks.fwatz_scaffold; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("H")) + block = ModBlocks.fwatz_hatch; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("S")) + block = ModBlocks.fwatz_cooler; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("T")) + block = ModBlocks.fwatz_tank; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("M")) + block = ModBlocks.fwatz_conductor; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("C")) + block = ModBlocks.fwatz_computer; + if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("#")) + block = ModBlocks.fwatz_core; + if(block != Blocks.air) { + RenderBlocks rb = RenderBlocks.getInstance(); + ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png"); + ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png"); + renderSmolBlockAt(loc1, loc2, a, b, c); + } + } + } + } + } + } + + public void renderSmolBlockAt(ResourceLocation loc1, ResourceLocation loc2, int x, int y, int z) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(180, 0F, 0F, 1F); + Tessellator tesseract = Tessellator.instance; + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc2); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + this.bindTexture(loc1); + tesseract.draw(); + GL11.glPopMatrix(); + + } + +} diff --git a/com/hbm/tileentity/TileEntityLaunchPad.java b/com/hbm/tileentity/TileEntityLaunchPad.java index 1e8ca87a8..ef51c0b42 100644 --- a/com/hbm/tileentity/TileEntityLaunchPad.java +++ b/com/hbm/tileentity/TileEntityLaunchPad.java @@ -186,7 +186,7 @@ public class TileEntityLaunchPad extends TileEntity implements ISidedInventory, @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return j != 0 || i != 1 || itemStack.getItem() == Items.bucket; + return false; } public int getPowerScaled(int i) { diff --git a/com/hbm/tileentity/TileEntityMachineBattery.java b/com/hbm/tileentity/TileEntityMachineBattery.java index a36077b3d..7e6b7e669 100644 --- a/com/hbm/tileentity/TileEntityMachineBattery.java +++ b/com/hbm/tileentity/TileEntityMachineBattery.java @@ -9,6 +9,7 @@ import com.hbm.interfaces.IConductor; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; import com.hbm.lib.Library; import net.minecraft.block.Block; @@ -107,7 +108,19 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent public void closeInventory() {} @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { + public boolean isItemValidForSlot(int i, ItemStack stack) { + switch(i) + { + case 0: + if(stack.getItem() instanceof ItemBattery) + return true; + break; + case 1: + if(stack.getItem() instanceof ItemBattery) + return true; + break; + } + return true; } @@ -186,7 +199,17 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return j != 0 || i != 1 || itemStack.getItem() == Items.bucket; + + if(itemStack.getItem() instanceof ItemBattery) { + if(i == 0 && ItemBattery.getCharge(itemStack) == 0) { + return true; + } + if(i == 1 && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) { + return true; + } + } + + return false; } public int getPowerRemainingScaled(int i) { diff --git a/com/hbm/tileentity/TileEntityMachineCMBFactory.java b/com/hbm/tileentity/TileEntityMachineCMBFactory.java index 6e77e023f..f56028615 100644 --- a/com/hbm/tileentity/TileEntityMachineCMBFactory.java +++ b/com/hbm/tileentity/TileEntityMachineCMBFactory.java @@ -204,8 +204,8 @@ public class TileEntityMachineCMBFactory extends TileEntity implements ISidedInv public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 4) return true; - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) if(itemStack.getItem() == Items.bucket || (itemStack.getItem() == ModItems.tank_waste && itemStack.getItemDamage() <= 0)) diff --git a/com/hbm/tileentity/TileEntityMachineCoal.java b/com/hbm/tileentity/TileEntityMachineCoal.java index 327b493e7..a3c628279 100644 --- a/com/hbm/tileentity/TileEntityMachineCoal.java +++ b/com/hbm/tileentity/TileEntityMachineCoal.java @@ -206,7 +206,7 @@ public class TileEntityMachineCoal extends TileEntity implements ISidedInventory if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) return true; if(i == 2) - if(itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; diff --git a/com/hbm/tileentity/TileEntityMachineCyclotron.java b/com/hbm/tileentity/TileEntityMachineCyclotron.java index 34599b283..bca3ae901 100644 --- a/com/hbm/tileentity/TileEntityMachineCyclotron.java +++ b/com/hbm/tileentity/TileEntityMachineCyclotron.java @@ -311,7 +311,7 @@ public class TileEntityMachineCyclotron extends TileEntity implements ISidedInve worldObj.spawnEntityInWorld(cloud); } if(i == 3) { - EntityBlackHole bl = new EntityBlackHole(worldObj, 0.5F + rand.nextFloat()); + EntityBlackHole bl = new EntityBlackHole(worldObj, 1.5F + rand.nextFloat()); bl.posX = xCoord + 0.5F; bl.posY = yCoord + 3.5F; bl.posZ = zCoord + 0.5F; diff --git a/com/hbm/tileentity/TileEntityMachineDeuterium.java b/com/hbm/tileentity/TileEntityMachineDeuterium.java index b09496976..5c861a7f3 100644 --- a/com/hbm/tileentity/TileEntityMachineDeuterium.java +++ b/com/hbm/tileentity/TileEntityMachineDeuterium.java @@ -207,8 +207,8 @@ public class TileEntityMachineDeuterium extends TileEntity implements ISidedInve public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 4) return true; - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 1) if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) diff --git a/com/hbm/tileentity/TileEntityMachineDiesel.java b/com/hbm/tileentity/TileEntityMachineDiesel.java index fd04803bb..c400677a8 100644 --- a/com/hbm/tileentity/TileEntityMachineDiesel.java +++ b/com/hbm/tileentity/TileEntityMachineDiesel.java @@ -116,7 +116,7 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento @Override public boolean isItemValidForSlot(int i, ItemStack stack) { if (i == 0) - if (stack.getItem() == ModItems.canister_fuel || stack.getItem() == ModItems.canister_NITAN + if (stack.getItem() == ModItems.canister_fuel || stack.getItem() == ModItems.canister_petroil || stack.getItem() == ModItems.canister_NITAN || stack.getItem() == Item.getItemFromBlock(ModBlocks.red_barrel)) return true; if (i == 2) @@ -201,7 +201,7 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento if (itemStack.getItem() == ModItems.canister_empty || itemStack.getItem() == ModItems.tank_steel) return true; if (i == 2) - if (itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; @@ -260,6 +260,22 @@ public class TileEntityMachineDiesel extends TileEntity implements ISidedInvento } } + if (slots[0] != null && slots[0].getItem() == ModItems.canister_petroil && diesel + 450 <= maxDiesel) { + if (slots[1] == null || slots[1] != null && slots[1].getItem() == slots[0].getItem().getContainerItem() + && slots[1].stackSize < slots[1].getMaxStackSize()) { + if (slots[1] == null) + slots[1] = new ItemStack(slots[0].getItem().getContainerItem()); + else + slots[1].stackSize++; + + slots[0].stackSize--; + if (slots[0].stackSize <= 0) + slots[0] = null; + + diesel += 450; + } + } + if (slots[0] != null && slots[0].getItem() == ModItems.canister_NITAN && diesel + 625 <= maxDiesel) { if (slots[1] == null || slots[1] != null && slots[1].getItem() == slots[0].getItem().getContainerItem() && slots[1].stackSize < slots[1].getMaxStackSize()) { diff --git a/com/hbm/tileentity/TileEntityMachineElectricFurnace.java b/com/hbm/tileentity/TileEntityMachineElectricFurnace.java index c912571b7..358d8b1bf 100644 --- a/com/hbm/tileentity/TileEntityMachineElectricFurnace.java +++ b/com/hbm/tileentity/TileEntityMachineElectricFurnace.java @@ -190,7 +190,7 @@ public class TileEntityMachineElectricFurnace extends TileEntity implements ISid @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i == 0) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) return true; diff --git a/com/hbm/tileentity/TileEntityMachineGenerator.java b/com/hbm/tileentity/TileEntityMachineGenerator.java index d04f78da1..e0aec9d60 100644 --- a/com/hbm/tileentity/TileEntityMachineGenerator.java +++ b/com/hbm/tileentity/TileEntityMachineGenerator.java @@ -248,7 +248,7 @@ public class TileEntityMachineGenerator extends TileEntity implements ISidedInve if(itemStack.getItem() == Items.bucket || itemStack.getItem() == ModItems.rod_empty || itemStack.getItem() == ModItems.rod_dual_empty || itemStack.getItem() == ModItems.rod_quad_empty) return true; if(i == 11) - if(itemStack.getItemDamage() == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == ItemBattery.getMaxChargeStatic(itemStack)) return true; return false; diff --git a/com/hbm/tileentity/TileEntityMachineIGenerator.java b/com/hbm/tileentity/TileEntityMachineIGenerator.java index 34b0674ba..f48d61a5e 100644 --- a/com/hbm/tileentity/TileEntityMachineIGenerator.java +++ b/com/hbm/tileentity/TileEntityMachineIGenerator.java @@ -11,6 +11,9 @@ import com.hbm.interfaces.ISource; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBattery; import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEIGeneratorPacket; +import com.hbm.packet.TEPylonSenderPacket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -38,6 +41,7 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv public int fuel; public int burn; public int soundCycle = 0; + public float rotation; public static final int maxPower = 100000; public static final int maxTorque = 2500; public static final int maxHeat = 7500; @@ -221,6 +225,8 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv if(age == 9 || age == 19) ffgeuaInit(); + + rotation += ((float)(this.torque / 100F)); if(burn > 0) { burn--; @@ -299,10 +305,13 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv doWaterTask(); doBatteryTask(); } + + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAll(new TEIGeneratorPacket(xCoord, yCoord, zCoord, rotation)); } public void doFuelTask() { - + if (slots[13] != null && slots[13].getItem() == ModItems.canister_fuel && fuel + 625 <= maxFuel) { if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() && slots[14].stackSize < slots[14].getMaxStackSize()) { @@ -318,6 +327,51 @@ public class TileEntityMachineIGenerator extends TileEntity implements ISidedInv fuel += 625; } } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_smear && fuel + 200 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 200; + } + } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_reoil && fuel + 350 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 350; + } + } + if (slots[13] != null && slots[13].getItem() == ModItems.canister_petroil && fuel + 500 <= maxFuel) { + if (slots[14] == null || slots[14] != null && slots[14].getItem() == slots[13].getItem().getContainerItem() + && slots[14].stackSize < slots[14].getMaxStackSize()) { + if (slots[14] == null) + slots[14] = new ItemStack(slots[13].getItem().getContainerItem()); + else + slots[14].stackSize++; + + slots[13].stackSize--; + if (slots[13].stackSize <= 0) + slots[13] = null; + + fuel += 500; + } + } if (slots[13] != null && slots[13].getItem() == Item.getItemFromBlock(ModBlocks.red_barrel) && fuel + 5000 <= maxFuel) { if (slots[14] == null || slots[14] != null && slots[14].getItem() == ModItems.tank_steel && slots[14].stackSize < slots[14].getMaxStackSize()) { diff --git a/com/hbm/tileentity/TileEntityMachineMiningDrill.java b/com/hbm/tileentity/TileEntityMachineMiningDrill.java new file mode 100644 index 000000000..282e8f9d7 --- /dev/null +++ b/com/hbm/tileentity/TileEntityMachineMiningDrill.java @@ -0,0 +1,866 @@ +package com.hbm.tileentity; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.particle.EntityGasFX; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IGasAcceptor; +import com.hbm.interfaces.IGasSource; +import com.hbm.interfaces.IOilAcceptor; +import com.hbm.interfaces.IOilSource; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; +import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEDrillPacket; +import com.hbm.packet.TEIGeneratorPacket; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.tileentity.TileEntityHopper; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.fluids.BlockFluidBase; +import net.minecraftforge.oredict.OreDictionary; + +public class TileEntityMachineMiningDrill extends TileEntity implements ISidedInventory, IConsumer { + + private ItemStack slots[]; + + public int power; + public int warning; + public static final int maxPower = 100000; + int age = 0; + int timer = 50; + int radius = 100; + int consumption = 100; + int fortune = 0; + boolean flag = true; + public float torque; + public float rotation; + + 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 TileEntityMachineMiningDrill() { + slots = new ItemStack[13]; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if(slots[i] != null) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) + { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.miningDrill"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) + { + return false; + }else{ + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128; + } + } + + //You scrubs aren't needed for anything (right now) + @Override + public void openInventory() {} + @Override + public void closeInventory() {} + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + if(i == 0) + if(itemStack.getItem() instanceof ItemBattery) + 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) + { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + 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.getInteger("powerTime"); + slots = new ItemStack[getSizeInventory()]; + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) + { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("powerTime", power); + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < slots.length; i++) + { + if(slots[i] != null) + { + NBTTagCompound nbt1 = new NBTTagCompound(); + 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); + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return false; + } + + public int getPowerScaled(int i) { + return (power * i) / maxPower; + } + + @Override + public void updateEntity() { + + this.consumption = 100; + this.timer = 50; + this.radius = 1; + this.fortune = 0; + + for(int i = 10; i < 13; i++) { + ItemStack stack = slots[i]; + + if(stack != null) { + if(stack.getItem() == ModItems.upgrade_effect_1) { + this.radius += 1; + this.consumption += 80; + } + if(stack.getItem() == ModItems.upgrade_effect_2) { + this.radius += 2; + this.consumption += 160; + } + if(stack.getItem() == ModItems.upgrade_effect_3) { + this.radius += 3; + this.consumption += 240; + } + if(stack.getItem() == ModItems.upgrade_speed_1) { + this.timer -= 15; + this.consumption += 300; + } + if(stack.getItem() == ModItems.upgrade_speed_2) { + this.timer -= 30; + this.consumption += 600; + } + if(stack.getItem() == ModItems.upgrade_speed_3) { + this.timer -= 45; + this.consumption += 900; + } + if(stack.getItem() == ModItems.upgrade_power_1) { + this.consumption -= 30; + this.timer += 5; + } + if(stack.getItem() == ModItems.upgrade_power_2) { + this.consumption -= 60; + this.timer += 10; + } + if(stack.getItem() == ModItems.upgrade_power_3) { + this.consumption -= 90; + this.timer += 15; + } + if(stack.getItem() == ModItems.upgrade_fortune_1) { + this.fortune += 1; + this.timer += 15; + } + if(stack.getItem() == ModItems.upgrade_fortune_2) { + this.fortune += 2; + this.timer += 30; + } + if(stack.getItem() == ModItems.upgrade_fortune_3) { + this.fortune += 3; + this.timer += 45; + } + } + } + + if(timer < 5) + timer = 5; + if(consumption < 40) + consumption = 40; + if(radius > 4) + radius = 4; + if(fortune > 3) + fortune = 3; + + age++; + if(age >= timer) + age -= timer; + + if(!worldObj.isRemote) { + power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + if(power >= consumption) { + + //operation start + + if(age == timer - 1) { + warning = 0; + + //warning 0, green: drill is operational + //warning 1, red: drill 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 + warning = 2; + break; + } + + Block b = worldObj.getBlock(this.xCoord, i, this.zCoord); + Block b1 = worldObj.getBlock(this.xCoord, i - 1, this.zCoord); + int meta = worldObj.getBlockMetadata(this.xCoord, i, this.zCoord); + int meta1 = worldObj.getBlockMetadata(this.xCoord, i - 1, this.zCoord); + ItemStack stack = new ItemStack(b.getItemDropped(meta, rand, fortune), b.quantityDropped(meta, fortune, rand), b.damageDropped(meta)); + ItemStack stack1 = new ItemStack(b1.getItemDropped(meta1, rand, fortune), b1.quantityDropped(meta1, fortune, rand), b1.damageDropped(meta1)); + + if(i == this.yCoord - 1 && worldObj.getBlock(this.xCoord, i, this.zCoord) != ModBlocks.drill_pipe) { + if(this.isOreo(this.xCoord, i, this.zCoord) && this.hasSpace(stack)) { + //if(stack != null) + //this.addItemToInventory(stack); + worldObj.setBlock(this.xCoord, i, this.zCoord, ModBlocks.drill_pipe); + break; + } else { + //Code 2: Drill jammed + warning = 1; + break; + } + } + + if(b1 == ModBlocks.drill_pipe) { + continue; + } else { + + flag = i != this.yCoord - 1; + + if(this.radius == 1) + if(!this.drill1(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 2) + if(!this.drill2(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 3) + if(!this.drill3(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + if(this.radius == 4) + if(!this.drill4(this.xCoord, i, this.zCoord)) { + if(this.isOreo(this.xCoord, i - 1, this.zCoord) && this.hasSpace(stack1)) { + //if(stack1 != null) + //this.addItemToInventory(stack1); + worldObj.setBlock(this.xCoord, i - 1, this.zCoord, ModBlocks.drill_pipe); + } else { + //Code 2: Drill jammed + warning = 1; + } + } + break; + } + } + } + + //operation end + + power -= consumption; + } else { + warning = 1; + } + + int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + TileEntity te = null; + if(meta == 2) { + te = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 3) { + te = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 4) { + te = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + if(meta == 5) { + te = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); + //worldObj.setBlock(xCoord - 2, yCoord, zCoord, Blocks.dirt); + } + + if(te != null && te instanceof TileEntityChest) { + TileEntityChest chest = (TileEntityChest)te; + + for(int i = 1; i < 10; i++) + if(tryFillContainer(chest, i)) + break; + } + + if(te != null && te instanceof TileEntityHopper) { + TileEntityHopper hopper = (TileEntityHopper)te; + + for(int i = 1; i < 10; i++) + if(tryFillContainer(hopper, i)) + break; + } + + if(warning == 0) { + torque += 0.1; + if(torque > (100/timer)) + torque = (100/timer); + } else { + torque -= 0.1F; + if(torque < -(100/timer)) + torque = -(100/timer); + } + + if(torque < 0) { + torque = 0; + } + rotation += torque; + if(rotation >= 360) + rotation -= 360; + + PacketDispatcher.wrapper.sendToAll(new TEDrillPacket(xCoord, yCoord, zCoord, rotation)); + } + + } + + public boolean tryFillContainer(IInventory inventory, int slot) { + + int size = inventory.getSizeInventory(); + + for(int i = 0; i < size; i++) { + if(inventory.getStackInSlot(i) != null) { + + if(slots[slot] == null) + return false; + + ItemStack sta1 = inventory.getStackInSlot(i).copy(); + ItemStack sta2 = slots[slot].copy(); + if(sta1 != null && sta2 != null) { + sta1.stackSize = 1; + sta2.stackSize = 1; + + if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + ItemStack sta3 = inventory.getStackInSlot(i).copy(); + sta3.stackSize++; + inventory.setInventorySlotContents(i, sta3); + + return true; + } + } + } + } + for(int i = 0; i < size; i++) { + + if(slots[slot] == null) + return false; + + ItemStack sta2 = slots[slot].copy(); + if(inventory.getStackInSlot(i) == null && sta2 != null) { + sta2.stackSize = 1; + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + inventory.setInventorySlotContents(i, sta2); + + return true; + } + } + + return false; + } + + public boolean isOreo(int x, int y, int z) { + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + if(b == Blocks.air || b == Blocks.grass || b == Blocks.dirt || + b == Blocks.stone || b == Blocks.sand || b == Blocks.sandstone || + b == Blocks.clay || b == Blocks.hardened_clay || b == Blocks.stained_hardened_clay || + b == Blocks.gravel || b.isReplaceable(worldObj, x, y, z)) + return true; + + int[] ids = OreDictionary.getOreIDs(new ItemStack(b, 1, meta)); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 3 && s.substring(0, 3).equals("ore")) + return true; + } + + return false; + } + + public boolean isMinableOreo(int x, int y, int z) { + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + if(b == Blocks.grass || b == Blocks.dirt || + b == Blocks.stone || b == Blocks.sand || b == Blocks.sandstone || + b == Blocks.clay || b == Blocks.hardened_clay || b == Blocks.stained_hardened_clay || + b == Blocks.gravel || b.isReplaceable(worldObj, x, y, z)) + return true; + + int[] ids = OreDictionary.getOreIDs(new ItemStack(b, 1, meta)); + + for(int i = 0; i < ids.length; i++) { + + String s = OreDictionary.getOreName(ids[i]); + + if(s.length() > 3 && s.substring(0, 3).equals("ore")) + return true; + } + + return false; + } + + /** + * returns true if there has been a successful mining operation + * returns false if no block could be mined + * */ + public boolean drill1(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + return false; + + return true; + } + + public boolean drill2(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + return false; + + return true; + } + + public boolean drill3(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + + if(!tryDrill(x + 3, y, z)) + if(!tryDrill(x + 3, y, z + 1)) + if(!tryDrill(x + 2, y, z + 2)) + if(!tryDrill(x + 1, y, z + 3)) + if(!tryDrill(x, y, z + 3)) + if(!tryDrill(x - 1, y, z + 3)) + if(!tryDrill(x - 2, y, z + 2)) + if(!tryDrill(x - 3, y, z + 1)) + if(!tryDrill(x - 3, y, z)) + if(!tryDrill(x - 3, y, z - 1)) + if(!tryDrill(x - 2, y, z - 2)) + if(!tryDrill(x - 1, y, z - 3)) + if(!tryDrill(x, y, z - 3)) + if(!tryDrill(x + 1, y, z - 3)) + if(!tryDrill(x + 2, y, z - 2)) + if(!tryDrill(x + 3, y, z - 1)) + return false; + + return true; + } + + public boolean drill4(int x, int y, int z) { + + if(!flag) + return false; + + if(!tryDrill(x + 1, y, z)) + if(!tryDrill(x + 1, y, z + 1)) + if(!tryDrill(x, y, z + 1)) + if(!tryDrill(x - 1, y, z + 1)) + if(!tryDrill(x - 1, y, z)) + if(!tryDrill(x - 1, y, z - 1)) + if(!tryDrill(x, y, z - 1)) + if(!tryDrill(x + 1, y, z - 1)) + + if(!tryDrill(x + 2, y, z)) + if(!tryDrill(x + 2, y, z + 1)) + if(!tryDrill(x + 1, y, z + 2)) + if(!tryDrill(x, y, z + 2)) + if(!tryDrill(x - 1, y, z + 2)) + if(!tryDrill(x - 2, y, z + 1)) + if(!tryDrill(x - 2, y, z)) + if(!tryDrill(x - 2, y, z - 1)) + if(!tryDrill(x - 1, y, z - 2)) + if(!tryDrill(x, y, z - 2)) + if(!tryDrill(x + 1, y, z - 2)) + if(!tryDrill(x + 2, y, z - 1)) + + if(!tryDrill(x + 3, y, z)) + if(!tryDrill(x + 3, y, z + 1)) + if(!tryDrill(x + 2, y, z + 2)) + if(!tryDrill(x + 1, y, z + 3)) + if(!tryDrill(x, y, z + 3)) + if(!tryDrill(x - 1, y, z + 3)) + if(!tryDrill(x - 2, y, z + 2)) + if(!tryDrill(x - 3, y, z + 1)) + if(!tryDrill(x - 3, y, z)) + if(!tryDrill(x - 3, y, z - 1)) + if(!tryDrill(x - 2, y, z - 2)) + if(!tryDrill(x - 1, y, z - 3)) + if(!tryDrill(x, y, z - 3)) + if(!tryDrill(x + 1, y, z - 3)) + if(!tryDrill(x + 2, y, z - 2)) + if(!tryDrill(x + 3, y, z - 1)) + + if(!tryDrill(x + 4, y, z)) + if(!tryDrill(x + 4, y, z + 1)) + if(!tryDrill(x + 4, y, z + 2)) + if(!tryDrill(x + 3, y, z + 2)) + if(!tryDrill(x + 3, y, z + 3)) + if(!tryDrill(x + 2, y, z + 3)) + if(!tryDrill(x + 2, y, z + 4)) + if(!tryDrill(x + 1, y, z + 4)) + if(!tryDrill(x, y, z + 4)) + if(!tryDrill(x - 1, y, z + 4)) + if(!tryDrill(x - 2, y, z + 4)) + if(!tryDrill(x - 2, y, z + 3)) + if(!tryDrill(x - 3, y, z + 3)) + if(!tryDrill(x - 3, y, z + 2)) + if(!tryDrill(x - 4, y, z + 2)) + if(!tryDrill(x - 4, y, z + 1)) + if(!tryDrill(x - 4, y, z)) + if(!tryDrill(x - 4, y, z - 1)) + if(!tryDrill(x - 4, y, z - 2)) + if(!tryDrill(x - 3, y, z - 2)) + if(!tryDrill(x - 3, y, z - 3)) + if(!tryDrill(x - 2, y, z - 3)) + if(!tryDrill(x - 2, y, z - 4)) + if(!tryDrill(x - 1, y, z - 4)) + if(!tryDrill(x, y, z - 4)) + if(!tryDrill(x + 1, y, z - 4)) + if(!tryDrill(x + 2, y, z - 4)) + if(!tryDrill(x + 2, y, z - 3)) + if(!tryDrill(x + 3, y, z - 3)) + if(!tryDrill(x + 3, y, z - 2)) + if(!tryDrill(x + 4, y, z - 2)) + if(!tryDrill(x + 4, y, z - 1)) + return false; + + return true; + } + + /** + * returns true if there has been a successful mining operation + * returns false if no block could be mined, as it is either air or unmineable + * */ + public boolean tryDrill(int x, int y, int z) { + + if(worldObj.getBlock(x, y, z) == Blocks.air || !isMinableOreo(x, y, z)) + return false; + if(worldObj.getBlock(x, y, z).getMaterial().isLiquid()) { + worldObj.func_147480_a(x, y, z, false); + return false; + } + + Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + ItemStack stack = new ItemStack(b.getItemDropped(meta, rand, fortune), b.quantityDropped(meta, fortune, rand), b.damageDropped(meta)); + if(hasSpace(stack)) { + this.addItemToInventory(stack); + worldObj.func_147480_a(x, y, z, false); + return true; + } + + return true; + } + + public boolean hasSpace(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + if(slots[i] == null) + return true; + } + + int size = st.stackSize; + st.stackSize = 1; + + ItemStack[] fakeArray = slots.clone(); + boolean flag = true; + for(int i = 0; i < stack.stackSize; i++) { + if(!canAddItemToArray(st, fakeArray)) + flag = false; + } + + return flag; + } + + public void addItemToInventory(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return; + + int size = st.stackSize; + st.stackSize = 1; + + for(int i = 0; i < size; i++) + canAddItemToArray(st, this.slots); + + } + + public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + + if(array[i] != null) { + ItemStack sta = array[i].copy(); + + if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) { + array[i].stackSize++; + return true; + } + } + } + + for(int i = 1; i < 10; i++) { + if(array[i] == null) { + array[i] = stack.copy(); + return true; + } + } + + return false; + } + + @Override + public void setPower(int i) { + power = i; + + } + + @Override + public int getPower() { + return power; + + } + + @Override + public int getMaxPower() { + return maxPower; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } +} diff --git a/com/hbm/tileentity/TileEntityMachineRefinery.java b/com/hbm/tileentity/TileEntityMachineRefinery.java index 30643db57..f00d4f3b4 100644 --- a/com/hbm/tileentity/TileEntityMachineRefinery.java +++ b/com/hbm/tileentity/TileEntityMachineRefinery.java @@ -215,8 +215,8 @@ public class TileEntityMachineRefinery extends TileEntity implements ISidedInven @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0 && itemStack.getItem() instanceof ItemBattery) - if(itemStack.getItemDamage() == itemStack.getMaxDamage()) + if(i == 0) + if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; if(i == 2) return true; diff --git a/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java b/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java index 2758f1e4f..4a3f277d8 100644 --- a/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java +++ b/com/hbm/tileentity/TileEntityMachineSchrabidiumTransmutator.java @@ -195,8 +195,9 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntity impleme return true; } - if (i == 3 && stack.getItemDamage() == stack.getMaxDamage()) { - return true; + if (i == 3) { + if (stack.getItem() instanceof ItemBattery && ItemBattery.getCharge(stack) == 0) + return true; } return false; diff --git a/com/hbm/tileentity/TileEntityPylonRedWire.java b/com/hbm/tileentity/TileEntityPylonRedWire.java index cdce51946..2799f6645 100644 --- a/com/hbm/tileentity/TileEntityPylonRedWire.java +++ b/com/hbm/tileentity/TileEntityPylonRedWire.java @@ -3,8 +3,12 @@ package com.hbm.tileentity; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.calc.UnionOfTileEntitiesAndBooleans; import com.hbm.interfaces.IConductor; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEPylonDestructorPacket; +import com.hbm.packet.TEPylonSenderPacket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,11 +16,43 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; public class TileEntityPylonRedWire extends TileEntity implements IConductor { public List uoteab = new ArrayList(); public List connected = new ArrayList(); + public boolean scheduleConnectionCheck = false; + public int[][] scheduleBuffer; + + @Override + public void updateEntity() { + + for(int i = connected.size() - 1; i >= 0; i--) { + if(connected.size() >= i + 1 && connected.get(i) == null) + connected.remove(i); + } + + for(int i = connected.size() - 1; i >= 0; i--) { + if(connected.size() >= i + 1 && connected.get(i) != null && + this.worldObj.getBlock(connected.get(i).xCoord, connected.get(i).yCoord, connected.get(i).zCoord) != ModBlocks.red_pylon) + connected.remove(i); + } + + if(scheduleConnectionCheck && this.scheduleBuffer != null) { + scheduleConnectionCheck = false; + this.connected = this.convertArrayToList(this.scheduleBuffer, worldObj); + } + + if(!worldObj.isRemote) {} + if(!connected.isEmpty()) { + PacketDispatcher.wrapper.sendToAll(new TEPylonDestructorPacket(xCoord, yCoord, zCoord)); + for(TileEntityPylonRedWire wire : connected) + PacketDispatcher.wrapper.sendToAll(new TEPylonSenderPacket(xCoord, yCoord, zCoord, + wire.xCoord, wire.yCoord, wire.zCoord)); + } + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -24,41 +60,41 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { int[] conX = nbt.getIntArray("conX"); int[] conY = nbt.getIntArray("conY"); int[] conZ = nbt.getIntArray("conZ"); - if(conX.length == conY.length && conY.length == conZ.length) - { - int[][] con = new int[conX.length][3]; - - for(int i = 0; i < conX.length; i++) { - con[i][0] = conX[i]; - con[i][1] = conY[i]; - con[i][2] = conZ[i]; - } - - this.connected = this.convertArrayToList(con); - } else { - throw new RuntimeException(this.getClass() + " failed to read connected electricity poles from NBT!"); + + int[][] con = new int[conX.length][3]; + + for(int i = 0; i < conX.length; i++) { + con[i][0] = conX[i]; + con[i][1] = conY[i]; + con[i][2] = conZ[i]; } + + scheduleConnectionCheck = true; + scheduleBuffer = con; } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - int[] conX = new int[this.connected.size()]; - int[] conY = new int[this.connected.size()]; - int[] conZ = new int[this.connected.size()]; + + int[][] con = this.convertListToArray(connected); + + int[] conX = new int[con.length]; + int[] conY = new int[con.length]; + int[] conZ = new int[con.length]; - for(int i = 0; i < this.connected.size(); i++) { - conX[i] = this.connected.get(i).xCoord; - conY[i] = this.connected.get(i).yCoord; - conZ[i] = this.connected.get(i).zCoord; + for(int i = 0; i < conX.length; i++) { + conX[i] = con[i][0]; + conY[i] = con[i][1]; + conZ[i] = con[i][2]; } - + nbt.setIntArray("conX", conX); nbt.setIntArray("conY", conY); nbt.setIntArray("conZ", conZ); } - public List convertArrayToList(int[][] array) { + public static List convertArrayToList(int[][] array, World worldObj) { List list = new ArrayList(); @@ -71,7 +107,7 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { return list; } - public int[][] convertListToArray(List list) { + public static int[][] convertListToArray(List list) { int[][] array = new int[list.size()][3]; @@ -85,12 +121,24 @@ public class TileEntityPylonRedWire extends TileEntity implements IConductor { return array; } - /*@Override + public void addTileEntityBasedOnCoords(int x, int y, int z) { + + TileEntity te = worldObj.getTileEntity(x, y, z); + if(te != null && te instanceof TileEntityPylonRedWire) + this.connected.add((TileEntityPylonRedWire)te); + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; - }*/ + } /*Princess cards she sends me with her regards, Oh, bar-room eyes shine vacancy diff --git a/com/hbm/tileentity/TileEntityStructureMarker.java b/com/hbm/tileentity/TileEntityStructureMarker.java new file mode 100644 index 000000000..c824cafe1 --- /dev/null +++ b/com/hbm/tileentity/TileEntityStructureMarker.java @@ -0,0 +1,44 @@ +package com.hbm.tileentity; + +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEIGeneratorPacket; +import com.hbm.packet.TEStructurePacket; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityStructureMarker extends TileEntity { + + //0: Factory + //1: Nuclear Reactor + //2: Reactor with Coat + //3: Fusion Reactor + //4: Fusion Reactor with Coat + //5: Watz Power Plant + //6: Fusionary Watz Plant + public int type = 0; + + public void updateEntity() { + + if(this.type > 6) + type -= 7; + + if(!worldObj.isRemote) + PacketDispatcher.wrapper.sendToAll(new TEStructurePacket(xCoord, yCoord, zCoord, type)); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + type = nbt.getInteger("type"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("type", type); + } + +} diff --git a/com/hbm/world/FWatz.java b/com/hbm/world/FWatz.java index a27eef316..a9145c656 100644 --- a/com/hbm/world/FWatz.java +++ b/com/hbm/world/FWatz.java @@ -12,395 +12,413 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FWatz { - static String[][] fwatz = new String[19][19]; - - static String s0101 = " XXX "; - static String s0102 = " XXX "; - static String s0103 = " "; - static String s0104 = " "; - static String s0105 = " "; - static String s0106 = " "; - static String s0107 = " "; - static String s0108 = " SSSSS "; - static String s0109 = "XX SSSSS XX"; - static String s0110 = "XX SSSSS XX"; - static String s0111 = "XX SSSSS XX"; - static String s0112 = " SSSSS "; - static String s0113 = " "; - static String s0114 = " "; - static String s0115 = " "; - static String s0116 = " "; - static String s0117 = " "; - static String s0118 = " XXX "; - static String s0119 = " XXX "; - - static String s0201 = " XHX "; - static String s0202 = " XXX "; - static String s0203 = " "; - static String s0204 = " "; - static String s0205 = " "; - static String s0206 = " "; - static String s0207 = " "; - static String s0208 = " SSSSS "; - static String s0209 = "XX STTTS XX"; - static String s0210 = "HX STTTS XH"; - static String s0211 = "XX STTTS XX"; - static String s0212 = " SSSSS "; - static String s0213 = " "; - static String s0214 = " "; - static String s0215 = " "; - static String s0216 = " "; - static String s0217 = " "; - static String s0218 = " XXX "; - static String s0219 = " XHX "; - - static String s0301 = " XXX "; - static String s0302 = " XXX "; - static String s0303 = " "; - static String s0304 = " "; - static String s0305 = " "; - static String s0306 = " "; - static String s0307 = " "; - static String s0308 = " SSSSS "; - static String s0309 = "XX STTTS XX"; - static String s0310 = "XX STTTS XX"; - static String s0311 = "XX STTTS XX"; - static String s0312 = " SSSSS "; - static String s0313 = " "; - static String s0314 = " "; - static String s0315 = " "; - static String s0316 = " "; - static String s0317 = " "; - static String s0318 = " XXX "; - static String s0319 = " XXX "; - - static String s0401 = " "; - static String s0402 = " XXX "; - static String s0403 = " XXX "; - static String s0404 = " X "; - static String s0405 = " X "; - static String s0406 = " X "; - static String s0407 = " X "; - static String s0408 = " SSXSS "; - static String s0409 = " XX STTTS XX "; - static String s0410 = " XXXXXXXTTTXXXXXXX "; - static String s0411 = " XX STTTS XX "; - static String s0412 = " SSXSS "; - static String s0413 = " X "; - static String s0414 = " X "; - static String s0415 = " X "; - static String s0416 = " X "; - static String s0417 = " XXX "; - static String s0418 = " XXX "; - static String s0419 = " "; - - static String s0501 = " "; - static String s0502 = " XXX "; - static String s0503 = " XXX "; - static String s0504 = " "; - static String s0505 = " "; - static String s0506 = " "; - static String s0507 = " "; - static String s0508 = " SSSSS "; - static String s0509 = " XX STTTS XX "; - static String s0510 = " XX STTTS XX "; - static String s0511 = " XX STTTS XX "; - static String s0512 = " SSSSS "; - static String s0513 = " "; - static String s0514 = " "; - static String s0515 = " "; - static String s0516 = " "; - static String s0517 = " XXX "; - static String s0518 = " XXX "; - static String s0519 = " "; - - static String s0601 = " "; - static String s0602 = " XXX "; - static String s0603 = " XXX "; - static String s0604 = " "; - static String s0605 = " "; - static String s0606 = " "; - static String s0607 = " "; - static String s0608 = " SSSSS "; - static String s0609 = " XX STTTS XX "; - static String s0610 = " XX STTTS XX "; - static String s0611 = " XX STTTS XX "; - static String s0612 = " SSSSS "; - static String s0613 = " "; - static String s0614 = " "; - static String s0615 = " "; - static String s0616 = " "; - static String s0617 = " XXX "; - static String s0618 = " XXX "; - static String s0619 = " "; - - static String s0701 = " "; - static String s0702 = " "; - static String s0703 = " XXX "; - static String s0704 = " XXX "; - static String s0705 = " "; - static String s0706 = " "; - static String s0707 = " "; - static String s0708 = " MMMMM "; - static String s0709 = " XX MMMMM XX "; - static String s0710 = " XX MMMMM XX "; - static String s0711 = " XX MMMMM XX "; - static String s0712 = " MMMMM "; - static String s0713 = " "; - static String s0714 = " "; - static String s0715 = " "; - static String s0716 = " XXX "; - static String s0717 = " XXX "; - static String s0718 = " "; - static String s0719 = " "; - - static String s0801 = " "; - static String s0802 = " "; - static String s0803 = " XXX "; - static String s0804 = " XXX "; - static String s0805 = " XXX "; - static String s0806 = " MMMMM "; - static String s0807 = " MMMMMMM "; - static String s0808 = " MMMMMMMMM "; - static String s0809 = " XXXMMMMMMMMMXXX "; - static String s0810 = " XXXMMMMMMMMMXXX "; - static String s0811 = " XXXMMMMMMMMMXXX "; - static String s0812 = " MMMMMMMMM "; - static String s0813 = " MMMMMMM "; - static String s0814 = " MMMMM "; - static String s0815 = " XXX "; - static String s0816 = " XXX "; - static String s0817 = " XXX "; - static String s0818 = " "; - static String s0819 = " "; - - static String s0901 = " "; - static String s0902 = " "; - static String s0903 = " XXX "; - static String s0904 = " XXX "; - static String s0905 = " MMMMM "; - static String s0906 = " MMMMMMM "; - static String s0907 = " MMMMMMMMM "; - static String s0908 = " MMMMPPPMMMM "; - static String s0909 = " XXMMMPPPPPMMMXX "; - static String s0910 = " XXMMMPPPPPMMMXX "; - static String s0911 = " XXMMMPPPPPMMMXX "; - static String s0912 = " MMMMPPPMMMM "; - static String s0913 = " MMMMMMMMM "; - static String s0914 = " MMMMMMM "; - static String s0915 = " MMMMM "; - static String s0916 = " XXX "; - static String s0917 = " XXX "; - static String s0918 = " "; - static String s0919 = " "; - - static String s1001 = " "; - static String s1002 = " "; - static String s1003 = " "; - static String s1004 = " XXX "; - static String s1005 = " MMMMMMM "; - static String s1006 = " MMMMMMMMM "; - static String s1007 = " MMMMPPPMMMM "; - static String s1008 = " MMMPPPPPMMM "; - static String s1009 = " XMMPPPPPPPMMX "; - static String s1010 = " XMMPPPPPPPMMX "; - static String s1011 = " XMMPPPPPPPMMX "; - static String s1012 = " MMMPPPPPMMM "; - static String s1013 = " MMMMPPPMMMM "; - static String s1014 = " MMMMMMMMM "; - static String s1015 = " MMMMMMM "; - static String s1016 = " XXX "; - static String s1017 = " "; - static String s1018 = " "; - static String s1019 = " "; - - static String s1101 = " "; - static String s1102 = " "; - static String s1103 = " "; - static String s1104 = " MMMMM "; - static String s1105 = " MMMMMMMMM "; - static String s1106 = " MMMMPPPMMMM "; - static String s1107 = " MMMPPPPPMMM "; - static String s1108 = " MMMPPPPPPPMMM "; - static String s1109 = " MMPPPMMMPPPMM "; - static String s1110 = " MMPPPMMMPPPMM "; - static String s1111 = " MMPPPMMMPPPMM "; - static String s1112 = " MMMPPPPPPPMMM "; - static String s1113 = " MMMPPPPPMMM "; - static String s1114 = " MMMMPPPMMMM "; - static String s1115 = " MMMMMMMMM "; - static String s1116 = " MMMMM "; - static String s1117 = " "; - static String s1118 = " "; - static String s1119 = " "; - - static String s1201 = " "; - static String s1202 = " "; - static String s1203 = " "; - static String s1204 = " MMMMM "; - static String s1205 = " MMMMMMMMM "; - static String s1206 = " MMMPPPPPMMM "; - static String s1207 = " MMPPPPPPPMM "; - static String s1208 = " MMPPPMMMPPPMM "; - static String s1209 = " MMPPMMMMMPPMM "; - static String s1210 = " MMPPMMCMMPPMM "; - static String s1211 = " MMPPMMMMMPPMM "; - static String s1212 = " MMPPPMMMPPPMM "; - static String s1213 = " MMPPPPPPPMM "; - static String s1214 = " MMMPPPPPMMM "; - static String s1215 = " MMMMMMMMM "; - static String s1216 = " MMMMM "; - static String s1217 = " "; - static String s1218 = " "; - static String s1219 = " "; - - static String s1301 = " "; - static String s1302 = " "; - static String s1303 = " "; - static String s1304 = " MMMMM "; - static String s1305 = " MMMMMMMMM "; - static String s1306 = " MMMPPPPPMMM "; - static String s1307 = " MMPPPPPPPMM "; - static String s1308 = " MMPPPMMMPPPMM "; - static String s1309 = " MMPPMMCMMPPMM "; - static String s1310 = " MMPPMC#CMPPMM "; - static String s1311 = " MMPPMMCMMPPMM "; - static String s1312 = " MMPPPMMMPPPMM "; - static String s1313 = " MMPPPPPPPMM "; - static String s1314 = " MMMPPPPPMMM "; - static String s1315 = " MMMMMMMMM "; - static String s1316 = " MMMMM "; - static String s1317 = " "; - static String s1318 = " "; - static String s1319 = " "; - - static String s1401 = " "; - static String s1402 = " "; - static String s1403 = " "; - static String s1404 = " MMMMM "; - static String s1405 = " MMMMMMMMM "; - static String s1406 = " MMMPPPPPMMM "; - static String s1407 = " MMPPPPPPPMM "; - static String s1408 = " MMPPPMMMPPPMM "; - static String s1409 = " MMPPMMMMMPPMM "; - static String s1410 = " MMPPMMCMMPPMM "; - static String s1411 = " MMPPMMMMMPPMM "; - static String s1412 = " MMPPPMMMPPPMM "; - static String s1413 = " MMPPPPPPPMM "; - static String s1414 = " MMMPPPPPMMM "; - static String s1415 = " MMMMMMMMM "; - static String s1416 = " MMMMM "; - static String s1417 = " "; - static String s1418 = " "; - static String s1419 = " "; - - static String s1501 = " "; - static String s1502 = " "; - static String s1503 = " "; - static String s1504 = " MMMMM "; - static String s1505 = " MMMMMMMMM "; - static String s1506 = " MMMMPPPMMMM "; - static String s1507 = " MMMPPPPPMMM "; - static String s1508 = " MMMPPPPPPPMMM "; - static String s1509 = " MMPPPMMMPPPMM "; - static String s1510 = " MMPPPMMMPPPMM "; - static String s1511 = " MMPPPMMMPPPMM "; - static String s1512 = " MMMPPPPPPPMMM "; - static String s1513 = " MMMPPPPPMMM "; - static String s1514 = " MMMMPPPMMMM "; - static String s1515 = " MMMMMMMMM "; - static String s1516 = " MMMMM "; - static String s1517 = " "; - static String s1518 = " "; - static String s1519 = " "; - - static String s1601 = " "; - static String s1602 = " "; - static String s1603 = " "; - static String s1604 = " "; - static String s1605 = " MMMMMMM "; - static String s1606 = " MMMMMMMMM "; - static String s1607 = " MMMMPPPMMMM "; - static String s1608 = " MMMPPPPPMMM "; - static String s1609 = " MMPPPPPPPMM "; - static String s1610 = " MMPPPPPPPMM "; - static String s1611 = " MMPPPPPPPMM "; - static String s1612 = " MMMPPPPPMMM "; - static String s1613 = " MMMMPPPMMMM "; - static String s1614 = " MMMMMMMMM "; - static String s1615 = " MMMMMMM "; - static String s1616 = " "; - static String s1617 = " "; - static String s1618 = " "; - static String s1619 = " "; - - static String s1701 = " "; - static String s1702 = " "; - static String s1703 = " "; - static String s1704 = " "; - static String s1705 = " MMMMM "; - static String s1706 = " MMMMMMM "; - static String s1707 = " MMMMMMMMM "; - static String s1708 = " MMMMPPPMMMM "; - static String s1709 = " MMMPPPPPMMM "; - static String s1710 = " MMMPPPPPMMM "; - static String s1711 = " MMMPPPPPMMM "; - static String s1712 = " MMMMPPPMMMM "; - static String s1713 = " MMMMMMMMM "; - static String s1714 = " MMMMMMM "; - static String s1715 = " MMMMM "; - static String s1716 = " "; - static String s1717 = " "; - static String s1718 = " "; - static String s1719 = " "; - - static String s1801 = " "; - static String s1802 = " "; - static String s1803 = " "; - static String s1804 = " "; - static String s1805 = " "; - static String s1806 = " MMMMM "; - static String s1807 = " MMMMMMM "; - static String s1808 = " MMMMMMMMM "; - static String s1809 = " MMMMMMMMM "; - static String s1810 = " MMMMMMMMM "; - static String s1811 = " MMMMMMMMM "; - static String s1812 = " MMMMMMMMM "; - static String s1813 = " MMMMMMM "; - static String s1814 = " MMMMM "; - static String s1815 = " "; - static String s1816 = " "; - static String s1817 = " "; - static String s1818 = " "; - static String s1819 = " "; - - static String s1901 = " "; - static String s1902 = " "; - static String s1903 = " "; - static String s1904 = " "; - static String s1905 = " "; - static String s1906 = " "; - static String s1907 = " "; - static String s1908 = " MMMMM "; - static String s1909 = " MMMMM "; - static String s1910 = " MMMMM "; - static String s1911 = " MMMMM "; - static String s1912 = " MMMMM "; - static String s1913 = " "; - static String s1914 = " "; - static String s1915 = " "; - static String s1916 = " "; - static String s1917 = " "; - static String s1918 = " "; - static String s1919 = " "; + public static String[][] fwatz = new String[][] { + { + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX SSSSS XX", + "XX SSSSS XX", + "XX SSSSS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX " + }, + { + " XHX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX STTTS XX", + "HX STTTS XH", + "XX STTTS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XHX " + }, + { + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " ", + " SSSSS ", + "XX STTTS XX", + "XX STTTS XX", + "XX STTTS XX", + " SSSSS ", + " ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX " + }, + { + " ", + " XXX ", + " XXX ", + " X ", + " X ", + " X ", + " X ", + " SSXSS ", + " XX STTTS XX ", + " XXXXXXXTTTXXXXXXX ", + " XX STTTS XX ", + " SSXSS ", + " X ", + " X ", + " X ", + " X ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " SSSSS ", + " XX STTTS XX ", + " XX STTTS XX ", + " XX STTTS XX ", + " SSSSS ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " ", + " SSSSS ", + " XX STTTS XX ", + " XX STTTS XX ", + " XX STTTS XX ", + " SSSSS ", + " ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " ", + " ", + " ", + " MMMMM ", + " XX MMMMM XX ", + " XX MMMMM XX ", + " XX MMMMM XX ", + " MMMMM ", + " ", + " ", + " ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " XXX ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " XXXMMMMMMMMMXXX ", + " XXXMMMMMMMMMXXX ", + " XXXMMMMMMMMMXXX ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " XXX ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " XXX ", + " XXX ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " XXMMMPPPPPMMMXX ", + " XXMMMPPPPPMMMXX ", + " XXMMMPPPPPMMMXX ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " XXX ", + " XXX ", + " ", + " " + }, + { + " ", + " ", + " ", + " XXX ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " XMMPPPPPPPMMX ", + " XMMPPPPPPPMMX ", + " XMMPPPPPPPMMX ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " XXX ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPPPMMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMMPPPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMMMMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMMMMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMC#CMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPMMMMMPPMM ", + " MMPPMMCMMPPMM ", + " MMPPMMMMMPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " MMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPPPMMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMPPPMMMPPPMM ", + " MMMPPPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMM ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMPPPPPPPMM ", + " MMPPPPPPPMM ", + " MMPPPPPPPMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMPPPMMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMPPPPPMMM ", + " MMMMPPPMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " MMMMM ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " MMMMM ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + } + }; public void generateHull(World world, Random rand, int x, int y, int z) { x -= 9; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -439,8 +457,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - boolean flag = true; for(int i = 0; i < 19; i++) { @@ -494,8 +510,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -513,8 +527,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - for(int i = 0; i < 19; i++) { for(int j = 0; j < 19; j++) { for(int k = 0; k < 19; k++) { @@ -533,8 +545,6 @@ public class FWatz { y -= 12; z -= 9; - uniteStructure(); - boolean flag = false; for(int i = 0; i < 19; i++) { @@ -550,389 +560,5 @@ public class FWatz { return flag; } - - public static void uniteStructure() { - int x = 0; - fwatz[x][0] = s0101; - fwatz[x][1] = s0102; - fwatz[x][2] = s0103; - fwatz[x][3] = s0104; - fwatz[x][4] = s0105; - fwatz[x][5] = s0106; - fwatz[x][6] = s0107; - fwatz[x][7] = s0108; - fwatz[x][8] = s0109; - fwatz[x][9] = s0110; - fwatz[x][10] = s0111; - fwatz[x][11] = s0112; - fwatz[x][12] = s0113; - fwatz[x][13] = s0114; - fwatz[x][14] = s0115; - fwatz[x][15] = s0116; - fwatz[x][16] = s0117; - fwatz[x][17] = s0118; - fwatz[x][18] = s0119; - x++; - fwatz[x][0] = s0201; - fwatz[x][1] = s0202; - fwatz[x][2] = s0203; - fwatz[x][3] = s0204; - fwatz[x][4] = s0205; - fwatz[x][5] = s0206; - fwatz[x][6] = s0207; - fwatz[x][7] = s0208; - fwatz[x][8] = s0209; - fwatz[x][9] = s0210; - fwatz[x][10] = s0211; - fwatz[x][11] = s0212; - fwatz[x][12] = s0213; - fwatz[x][13] = s0214; - fwatz[x][14] = s0215; - fwatz[x][15] = s0216; - fwatz[x][16] = s0217; - fwatz[x][17] = s0218; - fwatz[x][18] = s0219; - x++; - fwatz[x][0] = s0301; - fwatz[x][1] = s0302; - fwatz[x][2] = s0303; - fwatz[x][3] = s0304; - fwatz[x][4] = s0305; - fwatz[x][5] = s0306; - fwatz[x][6] = s0307; - fwatz[x][7] = s0308; - fwatz[x][8] = s0309; - fwatz[x][9] = s0310; - fwatz[x][10] = s0311; - fwatz[x][11] = s0312; - fwatz[x][12] = s0313; - fwatz[x][13] = s0314; - fwatz[x][14] = s0315; - fwatz[x][15] = s0316; - fwatz[x][16] = s0317; - fwatz[x][17] = s0318; - fwatz[x][18] = s0319; - x++; - fwatz[x][0] = s0401; - fwatz[x][1] = s0402; - fwatz[x][2] = s0403; - fwatz[x][3] = s0404; - fwatz[x][4] = s0405; - fwatz[x][5] = s0406; - fwatz[x][6] = s0407; - fwatz[x][7] = s0408; - fwatz[x][8] = s0409; - fwatz[x][9] = s0410; - fwatz[x][10] = s0411; - fwatz[x][11] = s0412; - fwatz[x][12] = s0413; - fwatz[x][13] = s0414; - fwatz[x][14] = s0415; - fwatz[x][15] = s0416; - fwatz[x][16] = s0417; - fwatz[x][17] = s0418; - fwatz[x][18] = s0419; - x++; - fwatz[x][0] = s0501; - fwatz[x][1] = s0502; - fwatz[x][2] = s0503; - fwatz[x][3] = s0504; - fwatz[x][4] = s0505; - fwatz[x][5] = s0506; - fwatz[x][6] = s0507; - fwatz[x][7] = s0508; - fwatz[x][8] = s0509; - fwatz[x][9] = s0510; - fwatz[x][10] = s0511; - fwatz[x][11] = s0512; - fwatz[x][12] = s0513; - fwatz[x][13] = s0514; - fwatz[x][14] = s0515; - fwatz[x][15] = s0516; - fwatz[x][16] = s0517; - fwatz[x][17] = s0518; - fwatz[x][18] = s0519; - x++; - fwatz[x][0] = s0601; - fwatz[x][1] = s0602; - fwatz[x][2] = s0603; - fwatz[x][3] = s0604; - fwatz[x][4] = s0605; - fwatz[x][5] = s0606; - fwatz[x][6] = s0607; - fwatz[x][7] = s0608; - fwatz[x][8] = s0609; - fwatz[x][9] = s0610; - fwatz[x][10] = s0611; - fwatz[x][11] = s0612; - fwatz[x][12] = s0613; - fwatz[x][13] = s0614; - fwatz[x][14] = s0615; - fwatz[x][15] = s0616; - fwatz[x][16] = s0617; - fwatz[x][17] = s0618; - fwatz[x][18] = s0619; - x++; - fwatz[x][0] = s0701; - fwatz[x][1] = s0702; - fwatz[x][2] = s0703; - fwatz[x][3] = s0704; - fwatz[x][4] = s0705; - fwatz[x][5] = s0706; - fwatz[x][6] = s0707; - fwatz[x][7] = s0708; - fwatz[x][8] = s0709; - fwatz[x][9] = s0710; - fwatz[x][10] = s0711; - fwatz[x][11] = s0712; - fwatz[x][12] = s0713; - fwatz[x][13] = s0714; - fwatz[x][14] = s0715; - fwatz[x][15] = s0716; - fwatz[x][16] = s0717; - fwatz[x][17] = s0718; - fwatz[x][18] = s0719; - x++; - fwatz[x][0] = s0801; - fwatz[x][1] = s0802; - fwatz[x][2] = s0803; - fwatz[x][3] = s0804; - fwatz[x][4] = s0805; - fwatz[x][5] = s0806; - fwatz[x][6] = s0807; - fwatz[x][7] = s0808; - fwatz[x][8] = s0809; - fwatz[x][9] = s0810; - fwatz[x][10] = s0811; - fwatz[x][11] = s0812; - fwatz[x][12] = s0813; - fwatz[x][13] = s0814; - fwatz[x][14] = s0815; - fwatz[x][15] = s0816; - fwatz[x][16] = s0817; - fwatz[x][17] = s0818; - fwatz[x][18] = s0819; - x++; - fwatz[x][0] = s0901; - fwatz[x][1] = s0902; - fwatz[x][2] = s0903; - fwatz[x][3] = s0904; - fwatz[x][4] = s0905; - fwatz[x][5] = s0906; - fwatz[x][6] = s0907; - fwatz[x][7] = s0908; - fwatz[x][8] = s0909; - fwatz[x][9] = s0910; - fwatz[x][10] = s0911; - fwatz[x][11] = s0912; - fwatz[x][12] = s0913; - fwatz[x][13] = s0914; - fwatz[x][14] = s0915; - fwatz[x][15] = s0916; - fwatz[x][16] = s0917; - fwatz[x][17] = s0918; - fwatz[x][18] = s0919; - x++; - fwatz[x][0] = s1001; - fwatz[x][1] = s1002; - fwatz[x][2] = s1003; - fwatz[x][3] = s1004; - fwatz[x][4] = s1005; - fwatz[x][5] = s1006; - fwatz[x][6] = s1007; - fwatz[x][7] = s1008; - fwatz[x][8] = s1009; - fwatz[x][9] = s1010; - fwatz[x][10] = s1011; - fwatz[x][11] = s1012; - fwatz[x][12] = s1013; - fwatz[x][13] = s1014; - fwatz[x][14] = s1015; - fwatz[x][15] = s1016; - fwatz[x][16] = s1017; - fwatz[x][17] = s1018; - fwatz[x][18] = s1019; - x++; - fwatz[x][0] = s1101; - fwatz[x][1] = s1102; - fwatz[x][2] = s1103; - fwatz[x][3] = s1104; - fwatz[x][4] = s1105; - fwatz[x][5] = s1106; - fwatz[x][6] = s1107; - fwatz[x][7] = s1108; - fwatz[x][8] = s1109; - fwatz[x][9] = s1110; - fwatz[x][10] = s1111; - fwatz[x][11] = s1112; - fwatz[x][12] = s1113; - fwatz[x][13] = s1114; - fwatz[x][14] = s1115; - fwatz[x][15] = s1116; - fwatz[x][16] = s1117; - fwatz[x][17] = s1118; - fwatz[x][18] = s1119; - x++; - fwatz[x][0] = s1201; - fwatz[x][1] = s1202; - fwatz[x][2] = s1203; - fwatz[x][3] = s1204; - fwatz[x][4] = s1205; - fwatz[x][5] = s1206; - fwatz[x][6] = s1207; - fwatz[x][7] = s1208; - fwatz[x][8] = s1209; - fwatz[x][9] = s1210; - fwatz[x][10] = s1211; - fwatz[x][11] = s1212; - fwatz[x][12] = s1213; - fwatz[x][13] = s1214; - fwatz[x][14] = s1215; - fwatz[x][15] = s1216; - fwatz[x][16] = s1217; - fwatz[x][17] = s1218; - fwatz[x][18] = s1219; - x++; - fwatz[x][0] = s1301; - fwatz[x][1] = s1302; - fwatz[x][2] = s1303; - fwatz[x][3] = s1304; - fwatz[x][4] = s1305; - fwatz[x][5] = s1306; - fwatz[x][6] = s1307; - fwatz[x][7] = s1308; - fwatz[x][8] = s1309; - fwatz[x][9] = s1310; - fwatz[x][10] = s1311; - fwatz[x][11] = s1312; - fwatz[x][12] = s1313; - fwatz[x][13] = s1314; - fwatz[x][14] = s1315; - fwatz[x][15] = s1316; - fwatz[x][16] = s1317; - fwatz[x][17] = s1318; - fwatz[x][18] = s1319; - x++; - fwatz[x][0] = s1401; - fwatz[x][1] = s1402; - fwatz[x][2] = s1403; - fwatz[x][3] = s1404; - fwatz[x][4] = s1405; - fwatz[x][5] = s1406; - fwatz[x][6] = s1407; - fwatz[x][7] = s1408; - fwatz[x][8] = s1409; - fwatz[x][9] = s1410; - fwatz[x][10] = s1411; - fwatz[x][11] = s1412; - fwatz[x][12] = s1413; - fwatz[x][13] = s1414; - fwatz[x][14] = s1415; - fwatz[x][15] = s1416; - fwatz[x][16] = s1417; - fwatz[x][17] = s1418; - fwatz[x][18] = s1419; - x++; - fwatz[x][0] = s1501; - fwatz[x][1] = s1502; - fwatz[x][2] = s1503; - fwatz[x][3] = s1504; - fwatz[x][4] = s1505; - fwatz[x][5] = s1506; - fwatz[x][6] = s1507; - fwatz[x][7] = s1508; - fwatz[x][8] = s1509; - fwatz[x][9] = s1510; - fwatz[x][10] = s1511; - fwatz[x][11] = s1512; - fwatz[x][12] = s1513; - fwatz[x][13] = s1514; - fwatz[x][14] = s1515; - fwatz[x][15] = s1516; - fwatz[x][16] = s1517; - fwatz[x][17] = s1518; - fwatz[x][18] = s1519; - x++; - fwatz[x][0] = s1601; - fwatz[x][1] = s1602; - fwatz[x][2] = s1603; - fwatz[x][3] = s1604; - fwatz[x][4] = s1605; - fwatz[x][5] = s1606; - fwatz[x][6] = s1607; - fwatz[x][7] = s1608; - fwatz[x][8] = s1609; - fwatz[x][9] = s1610; - fwatz[x][10] = s1611; - fwatz[x][11] = s1612; - fwatz[x][12] = s1613; - fwatz[x][13] = s1614; - fwatz[x][14] = s1615; - fwatz[x][15] = s1616; - fwatz[x][16] = s1617; - fwatz[x][17] = s1618; - fwatz[x][18] = s1619; - x++; - fwatz[x][0] = s1701; - fwatz[x][1] = s1702; - fwatz[x][2] = s1703; - fwatz[x][3] = s1704; - fwatz[x][4] = s1705; - fwatz[x][5] = s1706; - fwatz[x][6] = s1707; - fwatz[x][7] = s1708; - fwatz[x][8] = s1709; - fwatz[x][9] = s1710; - fwatz[x][10] = s1711; - fwatz[x][11] = s1712; - fwatz[x][12] = s1713; - fwatz[x][13] = s1714; - fwatz[x][14] = s1715; - fwatz[x][15] = s1716; - fwatz[x][16] = s1717; - fwatz[x][17] = s1718; - fwatz[x][18] = s1719; - x++; - fwatz[x][0] = s1801; - fwatz[x][1] = s1802; - fwatz[x][2] = s1803; - fwatz[x][3] = s1804; - fwatz[x][4] = s1805; - fwatz[x][5] = s1806; - fwatz[x][6] = s1807; - fwatz[x][7] = s1808; - fwatz[x][8] = s1809; - fwatz[x][9] = s1810; - fwatz[x][10] = s1811; - fwatz[x][11] = s1812; - fwatz[x][12] = s1813; - fwatz[x][13] = s1814; - fwatz[x][14] = s1815; - fwatz[x][15] = s1816; - fwatz[x][16] = s1817; - fwatz[x][17] = s1818; - fwatz[x][18] = s1819; - x++; - fwatz[x][0] = s1901; - fwatz[x][1] = s1902; - fwatz[x][2] = s1903; - fwatz[x][3] = s1904; - fwatz[x][4] = s1905; - fwatz[x][5] = s1906; - fwatz[x][6] = s1907; - fwatz[x][7] = s1908; - fwatz[x][8] = s1909; - fwatz[x][9] = s1910; - fwatz[x][10] = s1911; - fwatz[x][11] = s1912; - fwatz[x][12] = s1913; - fwatz[x][13] = s1914; - fwatz[x][14] = s1915; - fwatz[x][15] = s1916; - fwatz[x][16] = s1917; - fwatz[x][17] = s1918; - fwatz[x][18] = s1919; - - } } \ No newline at end of file diff --git a/com/hbm/world/FactoryTitanium.java b/com/hbm/world/FactoryTitanium.java index d5c15fb8b..f74d7184b 100644 --- a/com/hbm/world/FactoryTitanium.java +++ b/com/hbm/world/FactoryTitanium.java @@ -15,6 +15,24 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FactoryTitanium extends WorldGenerator { + public static String[][] array = new String[][] { + { + "HHH", + "HHH", + "HHH" + }, + { + "HFH", + "FCF", + "HFH" + }, + { + "HHH", + "HHH", + "HHH" + } + }; + Block Block1 = ModBlocks.factory_titanium_hull; Block Block2 = ModBlocks.factory_titanium_conductor; Block Block3 = ModBlocks.factory_titanium_furnace; diff --git a/com/hbm/world/FusionReactor.java b/com/hbm/world/FusionReactor.java index 17f0d78ea..5f0c0a7be 100644 --- a/com/hbm/world/FusionReactor.java +++ b/com/hbm/world/FusionReactor.java @@ -14,6 +14,104 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class FusionReactor extends WorldGenerator { + public static String[][] array = new String[][] { + { + " HHH ", + " HHH ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMMMM ", + " MMM MMM ", + "HH MMM RRR MMM HH", + "HH MMM RCR MMM HH", + "HH MMM RRR MMM HH", + " MMM MMM ", + " MMMMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " HHH ", + " HHH " + }, + { + " HHH ", + " HHH ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMTTTTTTTMM ", + " MMTTMMMMMTTMM ", + " MMTMMMMMMMTMM ", + "HHMMTMM MMTMMHH", + "HHMMTMM C MMTMMHH", + "HHMMTMM MMTMMHH", + " MMTMMMMMMMTMM ", + " MMTTMMMMMTTMM ", + " MMTTTTTTTMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " HHH ", + " HHH " + }, + { + " HAH ", + " HHH ", + " MMMMMMM ", + " MTTTTTTTM ", + " MT TM ", + " MT TTTTT TM ", + " MT TMMMMMT TM ", + "HHMT TM MT TMHH", + "AHMT TM # MT TMHA", + "HHMT TM MT TMHH", + " MT TMMMMMT TM ", + " MT TTTTT TM ", + " MT TM ", + " MTTTTTTTM ", + " MMMMMMM ", + " HHH ", + " HAH " + }, + { + " HHH ", + " HHH ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMTTTTTTTMM ", + " MMTTMMMMMTTMM ", + " MMTMMMMMMMTMM ", + "HHMMTMM MMTMMHH", + "HHMMTMM C MMTMMHH", + "HHMMTMM MMTMMHH", + " MMTMMMMMMMTMM ", + " MMTTMMMMMTTMM ", + " MMTTTTTTTMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " HHH ", + " HHH " + }, + { + " HHH ", + " HHH ", + " ", + " MMMMMMM ", + " MMMMMMMMM ", + " MMMMMMMMMMM ", + " MMM MMM ", + "HH MMM RRR MMM HH", + "HH MMM RCR MMM HH", + "HH MMM RRR MMM HH", + " MMM MMM ", + " MMMMMMMMMMM ", + " MMMMMMMMM ", + " MMMMMMM ", + " ", + " HHH ", + " HHH " + } + }; + Block Block1 = ModBlocks.fusion_heater; Block Block2 = ModBlocks.fusion_conductor; Block Block3 = ModBlocks.fusion_motor; diff --git a/com/hbm/world/NuclearReactor.java b/com/hbm/world/NuclearReactor.java index 115634b96..c8f18962a 100644 --- a/com/hbm/world/NuclearReactor.java +++ b/com/hbm/world/NuclearReactor.java @@ -14,6 +14,44 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class NuclearReactor extends WorldGenerator { + public static String[][] array2 = new String[][] { + { + " ", + " BBB ", + " B B ", + " BBB ", + " " + }, + { + " BBB ", + "BRCRB", + "BCICB", + "BRCRB", + " BBB " + }, + { + " BAB ", + "BRCRB", + "AC#CA", + "BRCRB", + " BAB " + }, + { + " BBB ", + "BRCRB", + "BCICB", + "BRCRB", + " BBB " + }, + { + " ", + " BBB ", + " B B ", + " BBB ", + " " + } + }; + Block Block1 = ModBlocks.brick_concrete; Block Block2 = ModBlocks.reactor_element; Block Block3 = ModBlocks.reactor_control; diff --git a/com/hbm/world/Watz.java b/com/hbm/world/Watz.java index fb7c9b0e7..0a6a36e6a 100644 --- a/com/hbm/world/Watz.java +++ b/com/hbm/world/Watz.java @@ -14,6 +14,126 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class Watz extends WorldGenerator { + public static String[][] array = new String[][] { + { + "SSSSSSS", + "SSSSSSS", + "SSSSSSS", + "SSSISSS", + "SSSSSSS", + "SSSSSSS", + "SSSSSSS" + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CAC ", + " CWRWC ", + "CWRKRWC", + "ARK#KRA", + "CWRKRWC", + " CWRWC ", + " CAC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + " CCC ", + " CWRWC ", + "CWRKRWC", + "CRKIKRC", + "CWRKRWC", + " CWRWC ", + " CCC " + }, + { + "SSSSSSS", + "SSSSSSS", + "SSSSSSS", + "SSSISSS", + "SSSSSSS", + "SSSSSSS", + "SSSSSSS" + } + }; + public boolean generate(World world, Random rand, int x, int y, int z) { int i = rand.nextInt(1);