diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 94572d95e..1199b051e 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -4,6 +4,11 @@ itemGroup.tabBlocks=NTM Blöcke und Maschinen itemGroup.tabNuke=NTM Bomben und Ausrüstung itemGroup.tabMachine=NTM Vorlagen +achievement.sacrifice=Sororizid +achievement.sacrifice.desc=Überlebe den Flammentod. +achievement.impossible=Vollkommen unmöglich +achievement.impossible.desc=Du kannst diese Errungenschaft nicht bekommen. + hbmfluid.none=Nichts hbmfluid.water=Wasser hbmfluid.steam=Dampf @@ -183,6 +188,8 @@ tile.turret_heavy.name=Schweres MG-Geschütz tile.turret_rocket.name=Raketengeschütz tile.turret_flamer.name=Flammenwerfergeschütz tile.turret_tau.name=Tauonengeschütz +tile.turret_spitfire.name=Geschütz für das ich noch keinen Namen habe [WIP] + item.turret_control.name=Geschützsteuerung item.turret_chip.name=Geschütz-KI-Chip @@ -282,6 +289,8 @@ tile.machine_press.name=Dampfpresse container.press=Dampfpresse tile.machine_siren.name=Sirene container.siren=Sirene +tile.machine_radgen.name=Strahlenbetriebener Generator [WIP] +container.radGen=Strahlenbetriebener Generator [WIP] tile.red_pylon.name=Strommasten item.wiring_red_copper.name=Kabeltrommel @@ -347,6 +356,16 @@ tile.machine_rtg_cyan.name=Schrabidium-Zerfallsenergie-Generator (WIP) tile.machine_rtg_blue.name=Konvektionsgenerator tile.machine_rtg_purple.name=Paarvernichtungsgenerator +tile.machine_spp_bottom.name=NPE-Potentialgenerator (Unterteil) +tile.machine_spp_top.name=NPE-Potentialgenerator (Oberteil) + +tile.ams_limiter.name=AMS-Stabilisator [WIP] +container.amsLimiter=AMS-Stabilisator [WIP] +tile.ams_emitter.name=AMS-Emitter [WIP] +container.amsEmitter=AMS-Emitter [WIP] +tile.ams_base.name=AMS-Basis [WIP] +container.amsBase=AMS-Basis [WIP] + item.template_folder.name=Produktionsvorlagen-Zeichenmappe item.fluid_identifier.name=Flüssigkeits-Kennzeichnung item.assembly_template.name=Fertigungsvorlage: @@ -497,6 +516,8 @@ tile.ore_nether_sulfur.name=Nether-Schwefelerz tile.ore_nether_fire.name=Feuererz tile.ore_nether_schrabidium.name=Nether-Schrabidiumerz +tile.ore_tikite.name=Trixit + tile.ore_australium.name=Australisches Erz tile.ore_weidanium.name=Weidit tile.ore_reiium.name=Reiit @@ -857,6 +878,7 @@ item.grenade_plasma.name=Plasmagranate item.grenade_tau.name=Taugranate item.grenade_schrabidium.name=Schrabidiumgranate item.grenade_lemon.name=Zitronengranate +item.grenade_gascan.name=Werfbarer Spritkanister item.grenade_mk2.name=Mk 2 Granate "Botschafter Ananas" item.grenade_aschrab.name=Werfbare Antischrabidiumzelle item.grenade_nuke.name=Mark VI Bohrgranate @@ -937,6 +959,10 @@ item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" item.gun_bf.name=M42_2 Nukleares Katapult "Antimaterienwerfer" item.gun_mp40.name=Maschinenpistole item.gun_uboinik.name=Ubojnik +item.gun_lever_action.name=Mare's Leg (Original) +item.gun_bolt_action.name=Dream-Repetiergewehr (Original) +item.gun_lever_action_dark.name=Mare's Leg (Dunkel) +item.gun_bolt_action_green.name=Dream-Repetiergewehr (Grün) item.gun_xvl1456.name=XVL1456 Tau-Kanone Prototyp item.gun_osipr.name=Standartausrüstung für Sicherheitskräfte item.gun_immolator.name=Der Immolator @@ -968,6 +994,8 @@ item.gun_mirv_ammo.name=Achtfaches MIRV item.gun_bf_ammo.name=Mk.V kompaktes AMAT-Artilleriegeschoss - Typ B.F. item.gun_mp40_ammo.name=SMG-Patrone item.gun_uboinik_ammo.name=12x70 Schrotmunition +item.gun_lever_action_ammo.name=12x74 Schrotmunition +item.gun_bolt_action_ammo.name=12x74 Brenneke item.gun_xvl1456_ammo.name=Kiste mit erschöpftem Uran-235 item.gun_osipr_ammo.name=Dunkler Energiepuls-Plug item.gun_osipr_ammo2.name=Combine Ball @@ -986,6 +1014,7 @@ item.turret_heavy_ammo.name=Schwere MG Munition item.turret_rocket_ammo.name=Raketengeschütz 2x4 Munition item.turret_flamer_ammo.name=Flammenwerfergeschütz-Tanks item.turret_tau_ammo.name=Tauonengeschütz-Uranmunition +item.turret_spitfire_ammo.name=AA-Geschoss item.clip_revolver_iron.name=Box voll Eisenkugeln item.clip_revolver.name=.357 Magnum Patronen @@ -1003,11 +1032,15 @@ item.clip_mirv.name=Kauf-drei-zahl-eins Packung Mini MIRVs item.clip_bf.name=BF-Geschosse im Doppelpack item.clip_mp.name=Magazin des Standardsturmgewehrs des Britannischen Militärs item.clip_mp40.name=9mm SMG-Magazin -item.clip_uboinik.name=Schrotpatronenbox +item.clip_uboinik.name=12x70 Schrotpatronenbox +item.clip_lever_action.name=12x74 Schrotpatronenbox +item.clip_bolt_action.name=12x74 Brenneke-Patronenbox item.clip_emp.name=Magnetsteifen mit Energiezellen item.clip_revolver_nightmare.name=Sack voll Kugeln item.clip_revolver_nightmare2.name=Munitionsgürtel mit Laserschrot +item.ammo_container.name=Munitionsbehälter + tile.block_schrabidium.name=Schrabidiumblock item.plate_gold.name=Goldplatte @@ -1116,6 +1149,7 @@ item.missile_nuclear_cluster.name=Atomare MIRV-Rakete item.missile_endo.name=Endothermische Rakete item.missile_exo.name=Exothermische Rakete item.missile_doomsday.name=Doomsday Rakete +item.missile_taint.name=Verseuchte Rakete item.hazmat_helmet.name=Strahlenschutzhelm item.hazmat_plate.name=Strahlenschutzbrustplatte @@ -1420,6 +1454,7 @@ item.reer_graar.name=The Reer Graar item.letter.name=Eilbrief item.polaroid.name=Das Polaroid +item.glitch.name=Glitch [WIP] item.book_secret.name=3-596-50802-9 item.burnt_bark.name=Verbrannte Rinde @@ -1439,5 +1474,7 @@ tile.crystal_virus.name=Dunkler Kristall tile.crystal_hardened.name=Gehärteter Dunkler Kristall tile.crystal_pulsar.name=Pulsating Crystal +tile.taint.name=Korrupter Schmutz + tile.cheater_virus.name=Geliertes Euphemium tile.cheater_virus_seed.name=Instabiler Euphemiumschrabid-Block \ No newline at end of file diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 2ff61cb19..f0b4f286a 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -4,6 +4,11 @@ itemGroup.tabBlocks=NTM Blocks and Machines itemGroup.tabNuke=NTM Bombs and Gear itemGroup.tabMachine=NTM Templates +achievement.sacrifice=Sororicide +achievement.sacrifice.desc=Face the fire and live. +achievement.impossible=Literally impossible +achievement.impossible.desc=You can't get this achievement. + hbmfluid.none=None hbmfluid.water=Water hbmfluid.steam=Steam @@ -194,6 +199,8 @@ tile.turret_heavy.name=Heavy Machine Gun Turret tile.turret_rocket.name=Rocket Turret tile.turret_flamer.name=Flamethrower Turret tile.turret_tau.name=Tauon Turret +tile.turret_spitfire.name=Turret I have no name for right now [WIP] + item.turret_control.name=Turret Controller item.turret_chip.name=Turret AI-Chip @@ -282,6 +289,8 @@ tile.machine_press.name=Steam Press container.press=Steam Press tile.machine_siren.name=Siren container.siren=Siren +tile.machine_radgen.name=Radiation-Powered Engine [WIP] +container.radGen=Radiation-Powered Engine [WIP] tile.red_pylon.name=Electricity Pole item.wiring_red_copper.name=Cable Drum @@ -347,6 +356,16 @@ tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) tile.machine_rtg_blue.name=Convection Generator tile.machine_rtg_purple.name=Antimatter Annihilation Generator +tile.machine_spp_bottom.name=SPE Potential Generator (Bottom) +tile.machine_spp_top.name=SPE Potential Generator (Top) + +tile.ams_limiter.name=AMS Stabilizer [WIP] +container.amsLimiter=AMS Stabilizer [WIP] +tile.ams_emitter.name=AMS Emitter [WIP] +container.amsEmitter=AMS Emitter [WIP] +tile.ams_base.name=AMS Base [WIP] +container.amsBase=AMS Base [WIP] + item.template_folder.name=Machine Template Folder item.fluid_identifier.name=Fluid Identifier item.assembly_template.name=Assembly Template: @@ -497,6 +516,8 @@ tile.ore_nether_sulfur.name=Nether Sulfur Ore tile.ore_nether_fire.name=Fire Ore tile.ore_nether_schrabidium.name=Nether Schrabidium Ore +tile.ore_tikite.name=Trixite + tile.ore_australium.name=Australian Ore tile.ore_weidanium.name=Weidite tile.ore_reiium.name=Reiite @@ -860,6 +881,7 @@ item.grenade_plasma.name=Plasma Grenade item.grenade_tau.name=Tau Grenade item.grenade_schrabidium.name=Schrabidium Grenade item.grenade_lemon.name=Combustible Lemon +item.grenade_gascan.name=Tossable Gas Can item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" item.grenade_aschrab.name=Tossable Antischrabidium Cell item.grenade_nuke.name=Mark VI Drill Grenade @@ -940,6 +962,10 @@ item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_bf.name=M42_2 Nuclear Catapult "Antimatter Launcher" item.gun_mp40.name=Submachine Gun item.gun_uboinik.name=Uboinik +item.gun_lever_action.name=Mare's Leg (Original) +item.gun_bolt_action.name=Dream Bolt-Action Rifle (Original) +item.gun_lever_action_dark.name=Mare's Leg (Dark) +item.gun_bolt_action_green.name=Dream Bolt-Action Rifle (Green) item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle item.gun_immolator.name=The Immolator @@ -971,6 +997,8 @@ item.gun_mirv_ammo.name=Eightfold MIRV item.gun_bf_ammo.name=Mk.V Compact AMAT-Artillery Shell - Type B.F. item.gun_mp40_ammo.name=Submachine Gun Round item.gun_uboinik_ammo.name=12x70 Buckshot +item.gun_lever_action_ammo.name=12x74 Buckshot +item.gun_bolt_action_ammo.name=12x74 Slug item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box item.gun_osipr_ammo.name=Dark Energy Pulse Plug item.gun_osipr_ammo2.name=Combine Ball @@ -989,6 +1017,7 @@ item.turret_heavy_ammo.name=Heavy MG Turret Ammunition item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition item.turret_flamer_ammo.name=Flamer Turret Fuel Tanks item.turret_tau_ammo.name=Tau Turret Uranium Ammo +item.turret_spitfire_ammo.name=AA-Shell item.clip_revolver_iron.name=Box of Iron Rounds item.clip_revolver.name=Box of .357 Rounds @@ -1006,11 +1035,15 @@ item.clip_mirv.name=Three-In-One Pack of Mini MIRVs item.clip_bf.name=BF-Shell Double Pack item.clip_mp.name=Britannia Military Standard Issue Assult Rifle Magazine item.clip_mp40.name=9mm SMG Magazine -item.clip_uboinik.name=Box of Buckshot Rounds +item.clip_uboinik.name=Box of 12x70 Buckshot Rounds +item.clip_lever_action.name=Box of 12x74 Buckshot Rounds +item.clip_bolt_action.name=Box of 12x74 Slugs item.clip_emp.name=Small Pack of Energy Cells item.clip_revolver_nightmare.name=Bag of Bullets item.clip_revolver_nightmare2.name=Belt with Laser Buckshot +item.ammo_container.name=Ammo Container + tile.block_schrabidium.name=Block of Schrabidium item.plate_gold.name=Gold Plate @@ -1119,6 +1152,7 @@ item.missile_nuclear_cluster.name=Nuclear MIRV Missile item.missile_endo.name=Endothermic Missile item.missile_exo.name=Exothermic Missile item.missile_doomsday.name=Doomsday Missile +item.missile_taint.name=Taint-Tipped Missile item.hazmat_helmet.name=Hazmat Helmet item.hazmat_plate.name=Hazmat Chestplate @@ -1423,6 +1457,7 @@ item.reer_graar.name=The Reer Graar item.letter.name=Express Mail item.polaroid.name=The Polaroid +item.glitch.name=Glitch [WIP] item.book_secret.name=3-596-50802-9 item.burnt_bark.name=Burnt Bark @@ -1442,5 +1477,7 @@ tile.crystal_virus.name=Dark Crystal tile.crystal_hardened.name=Hardened Dark Crystal tile.crystal_pulsar.name=Pulsating Crystal +tile.taint.name=Taint + tile.cheater_virus.name=Gelid Euphemium tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block \ No newline at end of file diff --git a/assets/hbm/models/NukeCloudSmall.obj b/assets/hbm/models/NukeCloudSmall.obj index 97cb29e17..68653848a 100644 --- a/assets/hbm/models/NukeCloudSmall.obj +++ b/assets/hbm/models/NukeCloudSmall.obj @@ -1,1465 +1,1061 @@ -# Blender v2.70 (sub 0) OBJ File: 'NukeCloudSmall.blend' +# Blender v2.76 (sub 0) OBJ File: 'NukeCloudSmall.blend' # www.blender.org o Cylinder -v -0.000000 0.000000 -6.000000 -v -0.000000 1.500000 -3.125000 -v 2.296101 0.000000 -5.543277 +v 0.000000 1.500000 -3.125000 v 1.195886 1.500000 -2.887124 -v 4.242640 0.000000 -4.242640 +v 2.296101 0.000000 -5.543277 v 2.209708 1.500000 -2.209709 -v 5.543277 0.000000 -2.296101 +v 4.242640 0.000000 -4.242640 v 2.887123 1.500000 -1.195886 -v 6.000000 0.000000 0.000000 +v 5.543277 0.000000 -2.296101 v 3.125000 1.500000 0.000000 -v 5.543277 0.000000 2.296101 +v 6.000000 0.000000 0.000000 v 2.887123 1.500000 1.195886 -v 4.242640 0.000000 4.242640 +v 5.543277 -0.000000 2.296101 v 2.209708 1.500000 2.209709 -v 2.296101 0.000000 5.543277 +v 4.242640 -0.000000 4.242640 v 1.195886 1.500000 2.887124 -v 0.000001 0.000000 6.000000 +v 2.296101 -0.000000 5.543277 v 0.000000 1.500000 3.125000 -v -2.296099 0.000000 5.543278 +v 0.000001 -0.000000 6.000000 v -1.195885 1.500000 2.887124 -v -4.242640 0.000000 4.242642 v -2.209708 1.500000 2.209710 -v -5.543277 0.000000 2.296102 +v -4.242640 -0.000000 4.242642 v -2.887124 1.500000 1.195886 -v -6.000000 0.000000 -0.000000 -v -3.125000 1.500000 -0.000000 -v -5.543277 0.000000 -2.296102 +v -5.543277 -0.000000 2.296102 +v -3.125000 1.500000 0.000000 v -2.887124 1.500000 -1.195886 -v -4.242640 0.000000 -4.242642 +v -5.543277 0.000000 -2.296102 v -2.209708 1.500000 -2.209710 -v -2.296098 0.000000 -5.543279 -v -1.195884 1.500000 -2.887124 -v -0.000000 3.000000 -1.500000 -v 0.574025 3.000000 -1.385819 -v 1.060660 3.000000 -1.060660 v 1.385819 3.000000 -0.574025 v 1.500000 3.000000 0.000000 -v 1.385819 3.000000 0.574025 -v 1.060660 3.000000 1.060660 +v -1.195884 1.500000 -2.887124 +v 0.000000 0.000000 -6.000000 +v -4.242640 0.000000 -4.242642 v 0.574025 3.000000 1.385819 -v 0.000000 3.000000 1.500000 -v -0.574025 3.000000 1.385819 -v -1.060660 3.000000 1.060660 -v -1.385819 3.000000 0.574025 -v -1.500000 3.000000 -0.000000 -v -1.385819 3.000000 -0.574025 +v 0.430519 11.000000 1.039366 +v 0.000000 11.000000 1.125000 v -1.060660 3.000000 -1.060660 v -0.574024 3.000000 -1.385820 -v -0.000000 11.000000 -0.750000 -v 0.287013 11.000000 -0.692910 -v 0.530330 11.000000 -0.530330 -v 0.692910 11.000000 -0.287013 -v 0.750000 11.000000 0.000000 -v 0.692910 11.000000 0.287013 -v 0.530330 11.000000 0.530330 -v 0.287013 11.000000 0.692910 -v 0.000000 11.000000 0.750000 -v -0.287012 11.000000 0.692910 -v -0.530330 11.000000 0.530330 -v -0.692910 11.000000 0.287013 -v -0.750000 11.000000 -0.000000 -v -0.692910 11.000000 -0.287013 -v -0.530330 11.000000 -0.530330 -v -0.287012 11.000000 -0.692910 -v -0.000000 13.000000 -1.575000 -v 0.602726 13.000000 -1.455110 -v 1.113693 13.000000 -1.113693 -v 1.455110 13.000000 -0.602726 -v 1.575000 13.000000 0.000000 -v 1.455110 13.000000 0.602727 -v 1.113693 13.000000 1.113693 -v 0.602726 13.000000 1.455110 -v 0.000000 13.000000 1.575000 -v -0.602726 13.000000 1.455111 -v -1.113693 13.000000 1.113693 -v -1.455110 13.000000 0.602727 -v -1.575000 13.000000 -0.000000 -v -1.455110 13.000000 -0.602727 -v -1.113693 13.000000 -1.113694 -v -0.602726 13.000000 -1.455111 -v -0.000000 12.500000 -3.750000 -v 1.435062 12.500000 -3.464548 -v 2.651650 12.500000 -2.651650 -v 3.464548 12.500000 -1.435063 -v 3.750000 12.500000 0.000000 -v 3.464548 12.500000 1.435063 -v 2.651650 12.500000 2.651650 -v 1.435063 12.500000 3.464548 -v 0.000000 12.500000 3.750000 -v -1.435063 12.500000 3.464549 -v -2.651650 12.500000 2.651651 -v -3.464548 12.500000 1.435063 -v -3.750000 12.500000 -0.000000 -v -3.464548 12.500000 -1.435064 -v -2.651650 12.500000 -2.651651 -v -1.435062 12.500000 -3.464549 -v -0.000000 13.500000 -4.875000 -v 1.865581 13.500000 -4.503912 -v 3.447145 13.500000 -3.447145 -v 4.503912 13.500000 -1.865582 -v 4.874999 13.500000 0.000000 -v 4.503912 13.500000 1.865582 -v 3.447145 13.500000 3.447145 -v 1.865582 13.500000 4.503912 -v 0.000000 13.500000 4.875000 -v -1.865581 13.500000 4.503913 -v -3.447145 13.500000 3.447147 -v -4.503913 13.500000 1.865582 -v -4.875001 13.500000 -0.000000 -v -4.503913 13.500000 -1.865583 -v -3.447145 13.500000 -3.447147 -v -1.865580 13.500000 -4.503914 -v -0.000000 14.500000 -3.378375 -v 1.292848 14.500000 -3.121212 -v 2.388872 14.500000 -2.388872 -v 3.121211 14.500000 -1.292848 -v 3.378375 14.500000 0.000000 -v 3.121211 14.500000 1.292848 -v 2.388872 14.500000 2.388872 -v 1.292848 14.500000 3.121212 -v 0.000000 14.500000 3.378375 -v -1.292848 14.500000 3.121212 -v -2.388872 14.500000 2.388872 -v -3.121212 14.500000 1.292849 -v -3.378375 14.500000 -0.000000 -v -3.121212 14.500000 -1.292849 -v -2.388872 14.500000 -2.388872 -v -1.292847 14.500000 -3.121212 -v -0.000000 15.000000 -4.515625 -v 1.728055 15.000000 -4.171894 -v 3.193028 15.000000 -3.193029 -v 4.171893 15.000000 -1.728055 -v 4.515625 15.000000 0.000000 -v 4.171893 15.000000 1.728055 -v 3.193028 15.000000 3.193029 -v 1.728055 15.000000 4.171894 -v 0.000000 15.000000 4.515625 -v -1.728054 15.000000 4.171894 -v -3.193029 15.000000 3.193030 -v -4.171894 15.000000 1.728056 -v -4.515625 15.000000 -0.000000 -v -4.171894 15.000000 -1.728056 -v -3.193029 15.000000 -3.193030 -v -1.728053 15.000000 -4.171895 -v -0.000000 16.750000 -6.562500 -v 2.511360 16.750000 -6.062960 -v 4.640388 16.750000 -4.640388 -v 6.062959 16.750000 -2.511360 -v 6.562500 16.750000 0.000000 -v 6.062959 16.750000 2.511361 -v 4.640388 16.750000 4.640388 -v 2.511360 16.750000 6.062960 -v 0.000001 16.750000 6.562500 -v -2.511359 16.750000 6.062960 -v -4.640388 16.750000 4.640389 -v -6.062960 16.750000 2.511361 -v -6.562500 16.750000 -0.000000 -v -6.062960 16.750000 -2.511361 -v -4.640388 16.750000 -4.640389 -v -2.511358 16.750000 -6.062961 -v -0.000000 18.500000 -3.000000 -v 1.148050 18.500000 -2.771638 -v 2.121320 18.500000 -2.121320 -v 2.771638 18.500000 -1.148050 -v 2.999999 18.500000 0.000000 -v 2.771638 18.500000 1.148051 -v 2.121320 18.500000 2.121320 -v 1.148050 18.500000 2.771638 -v 0.000000 18.500000 3.000000 -v -1.148050 18.500000 2.771639 -v -2.121320 18.500000 2.121321 -v -2.771639 18.500000 1.148051 -v -3.000000 18.500000 -0.000000 -v -2.771639 18.500000 -1.148051 -v -2.121320 18.500000 -2.121321 -v -1.148049 18.500000 -2.771639 -v 0.000000 19.000500 0.000000 -vt 0.943443 0.501001 -vt 0.889890 0.501001 -vt 0.889890 0.610110 -vt 0.665666 0.943443 -vt 0.665666 0.889890 -vt 0.556557 0.889890 -vt 0.943443 0.612112 -vt 0.889890 0.612112 -vt 0.889890 0.721221 -vt 0.776777 0.943443 -vt 0.776777 0.889890 -vt 0.667668 0.889890 -vt 0.943443 0.834334 -vt 0.889890 0.834334 -vt 0.889890 0.943443 -vt 0.165666 0.943443 -vt 0.165666 0.889890 -vt 0.056557 0.889890 -vt 0.943443 0.723223 -vt 0.889890 0.723223 -vt 0.889890 0.832332 -vt 0.776777 0.887888 -vt 0.776777 0.834334 -vt 0.667668 0.834334 -vt 0.887888 0.832332 -vt 0.887888 0.723223 -vt 0.834334 0.723223 -vt 0.665666 0.887888 -vt 0.665666 0.834334 -vt 0.556557 0.834334 -vt 0.887888 0.332332 -vt 0.887888 0.223223 -vt 0.834334 0.223223 -vt 0.334334 0.887888 -vt 0.443443 0.887888 -vt 0.443443 0.834334 -vt 0.887888 0.612112 -vt 0.834334 0.612112 -vt 0.834334 0.721221 -vt 0.445445 0.887888 -vt 0.554555 0.887888 -vt 0.554555 0.834334 -vt 0.834334 0.334334 -vt 0.834334 0.443443 -vt 0.887888 0.443443 -vt 0.221221 0.721221 -vt 0.221221 0.667668 -vt 0.112112 0.667668 -vt 0.498999 0.221221 -vt 0.498999 0.112112 -vt 0.445445 0.112112 -vt 0.110110 0.445445 -vt 0.001001 0.445445 -vt 0.001001 0.498999 -vt 0.445445 0.001001 -vt 0.445445 0.110110 -vt 0.498999 0.110110 -vt 0.443443 0.498999 -vt 0.443443 0.445445 -vt 0.334334 0.445445 -vt 0.498999 0.223223 -vt 0.445445 0.223223 -vt 0.445445 0.332332 -vt 0.332332 0.498999 -vt 0.332332 0.445445 -vt 0.223223 0.445445 -vt 0.445445 0.334334 -vt 0.445445 0.443443 -vt 0.498999 0.443443 -vt 0.221221 0.445445 -vt 0.112112 0.445445 -vt 0.112112 0.498999 -vt 0.445445 0.445445 -vt 0.445445 0.554555 -vt 0.498999 0.554555 -vt 0.443443 0.501001 -vt 0.334334 0.501001 -vt 0.334334 0.554555 -vt 0.501001 0.445445 -vt 0.501001 0.554555 -vt 0.554555 0.554555 -vt 0.332332 0.501001 -vt 0.223223 0.501001 -vt 0.223223 0.554555 -vt 0.501001 0.334334 -vt 0.501001 0.443443 -vt 0.554555 0.443443 -vt 0.221221 0.501001 -vt 0.112112 0.501001 -vt 0.112112 0.554555 -vt 0.554555 0.223223 -vt 0.501001 0.223223 -vt 0.501001 0.332332 -vt 0.110110 0.501001 -vt 0.001001 0.501001 -vt 0.001001 0.554555 -vt 0.554555 0.112112 -vt 0.501001 0.112112 -vt 0.501001 0.221221 -vt 0.610110 0.056557 -vt 0.501001 0.056557 -vt 0.501001 0.110110 -vt 0.556557 0.112112 -vt 0.556557 0.221221 -vt 0.610110 0.221221 -vt 0.610110 0.001001 -vt 0.501001 0.001001 -vt 0.501001 0.054555 -vt 0.556557 0.223223 -vt 0.556557 0.332332 -vt 0.610110 0.332332 -vt 0.221221 0.610110 -vt 0.221221 0.556557 -vt 0.112112 0.556557 -vt 0.556557 0.445445 -vt 0.556557 0.554555 -vt 0.610110 0.554555 -vt 0.332332 0.556557 -vt 0.223223 0.556557 -vt 0.223223 0.610110 -vt 0.556557 0.334334 -vt 0.556557 0.443443 -vt 0.610110 0.443443 -vt 0.443443 0.610110 -vt 0.443443 0.556557 -vt 0.334334 0.556557 -vt 0.445445 0.556557 -vt 0.445445 0.665666 -vt 0.498999 0.665666 -vt 0.110110 0.556557 -vt 0.001001 0.556557 -vt 0.001001 0.610110 -vt 0.554555 0.556557 -vt 0.501001 0.556557 -vt 0.501001 0.665666 -vt 0.665666 0.556557 -vt 0.556557 0.556557 -vt 0.556557 0.610110 -vt 0.612112 0.056557 -vt 0.612112 0.165666 -vt 0.665666 0.165666 -vt 0.665666 0.612112 -vt 0.556557 0.612112 -vt 0.556557 0.665666 -vt 0.612112 0.167668 -vt 0.612112 0.276777 -vt 0.665666 0.276777 -vt 0.332332 0.665666 -vt 0.332332 0.612112 -vt 0.223223 0.612112 -vt 0.665666 0.278779 -vt 0.612112 0.278779 -vt 0.612112 0.387888 -vt 0.443443 0.612112 -vt 0.334334 0.612112 -vt 0.334334 0.665666 -vt 0.665666 0.389890 -vt 0.612112 0.389890 -vt 0.612112 0.498999 -vt 0.221221 0.665666 -vt 0.221221 0.612112 -vt 0.112112 0.612112 -vt 0.110110 0.612112 -vt 0.056557 0.612112 -vt 0.056557 0.721221 -vt 0.721221 0.501001 -vt 0.612112 0.501001 -vt 0.612112 0.554555 -vt 0.054555 0.612112 -vt 0.001001 0.612112 -vt 0.001001 0.721221 -vt 0.721221 0.054555 -vt 0.721221 0.001001 -vt 0.612112 0.001001 -vt 0.667668 0.389890 -vt 0.667668 0.498999 -vt 0.721221 0.498999 -vt 0.887888 0.943443 -vt 0.887888 0.889890 -vt 0.778779 0.889890 -vt 0.721221 0.056557 -vt 0.667668 0.056557 -vt 0.667668 0.165666 -vt 0.332332 0.667668 -vt 0.223223 0.667668 -vt 0.223223 0.721221 -vt 0.721221 0.612112 -vt 0.667668 0.612112 -vt 0.667668 0.721221 -vt 0.443443 0.667668 -vt 0.334334 0.667668 -vt 0.334334 0.721221 -vt 0.667668 0.167668 -vt 0.667668 0.276777 -vt 0.721221 0.276777 -vt 0.332332 0.945445 -vt 0.278779 0.945445 -vt 0.278779 0.998999 -vt 0.554555 0.667668 -vt 0.445445 0.667668 -vt 0.445445 0.721221 -vt 0.612112 0.667668 -vt 0.612112 0.776777 -vt 0.665666 0.776777 -vt 0.776777 0.556557 -vt 0.667668 0.556557 -vt 0.667668 0.610110 -vt 0.556557 0.667668 -vt 0.556557 0.776777 -vt 0.610110 0.776777 -vt 0.554555 0.776777 -vt 0.554555 0.723223 -vt 0.445445 0.723223 -vt 0.723223 0.445445 -vt 0.723223 0.554555 -vt 0.776777 0.554555 -vt 0.443443 0.776777 -vt 0.443443 0.723223 -vt 0.334334 0.723223 -vt 0.723223 0.278779 -vt 0.723223 0.387888 -vt 0.776777 0.387888 -vt 0.332332 0.723223 -vt 0.223223 0.723223 -vt 0.223223 0.776777 -vt 0.723223 0.167668 -vt 0.723223 0.276777 -vt 0.776777 0.276777 -vt 0.221221 0.776777 -vt 0.221221 0.723223 -vt 0.112112 0.723223 -vt 0.723223 0.056557 -vt 0.723223 0.165666 -vt 0.776777 0.165666 -vt 0.110110 0.723223 -vt 0.001001 0.723223 -vt 0.001001 0.776777 -vt 0.723223 0.612112 -vt 0.723223 0.721221 -vt 0.776777 0.721221 -vt 0.776777 0.776777 -vt 0.776777 0.723223 -vt 0.667668 0.723223 -vt 0.498999 0.945445 -vt 0.445445 0.945445 -vt 0.445445 0.998999 -vt 0.612112 0.945445 -vt 0.612112 0.998999 -vt 0.665666 0.998999 -vt 0.667668 0.945445 -vt 0.667668 0.998999 -vt 0.721221 0.998999 -vt 0.223223 0.945445 -vt 0.223223 0.998999 -vt 0.276777 0.998999 -vt 0.112112 0.945445 -vt 0.112112 0.998999 -vt 0.165666 0.998999 -vt 0.167668 0.945445 -vt 0.167668 0.998999 -vt 0.221221 0.998999 -vt 0.998999 0.889890 -vt 0.945445 0.889890 -vt 0.945445 0.943443 -vt 0.945445 0.945445 -vt 0.945445 0.998999 -vt 0.998999 0.998999 -vt 0.834334 0.945445 -vt 0.834334 0.998999 -vt 0.887888 0.998999 -vt 0.889890 0.945445 -vt 0.889890 0.998999 -vt 0.943443 0.998999 -vt 0.945445 0.001001 -vt 0.945445 0.054555 -vt 0.998999 0.054555 -vt 0.998999 0.056557 -vt 0.945445 0.056557 -vt 0.945445 0.110110 -vt 0.723223 0.945445 -vt 0.723223 0.998999 -vt 0.776777 0.998999 -vt 0.778779 0.945445 -vt 0.778779 0.998999 -vt 0.832332 0.998999 -vt 0.501001 0.945445 -vt 0.501001 0.998999 -vt 0.554555 0.998999 -vt 0.610110 0.945445 -vt 0.556557 0.945445 -vt 0.556557 0.998999 -vt 0.998999 0.445445 -vt 0.945445 0.445445 -vt 0.945445 0.498999 -vt 0.945445 0.501001 -vt 0.945445 0.554555 -vt 0.998999 0.554555 -vt 0.945445 0.778779 -vt 0.945445 0.832332 -vt 0.998999 0.832332 -vt 0.945445 0.834334 -vt 0.945445 0.887888 -vt 0.998999 0.887888 -vt 0.945445 0.334334 -vt 0.945445 0.387888 -vt 0.998999 0.387888 -vt 0.945445 0.389890 -vt 0.945445 0.443443 -vt 0.998999 0.443443 -vt 0.945445 0.112112 -vt 0.945445 0.165666 -vt 0.998999 0.165666 -vt 0.945445 0.556557 -vt 0.945445 0.610110 -vt 0.998999 0.610110 -vt 0.945445 0.612112 -vt 0.945445 0.665666 -vt 0.998999 0.665666 -vt 0.945445 0.167668 -vt 0.945445 0.221221 -vt 0.998999 0.221221 -vt 0.945445 0.667668 -vt 0.945445 0.721221 -vt 0.998999 0.721221 -vt 0.998999 0.723223 -vt 0.945445 0.723223 -vt 0.945445 0.776777 -vt 0.945445 0.223223 -vt 0.945445 0.276777 -vt 0.998999 0.276777 -vt 0.945445 0.278779 -vt 0.945445 0.332332 -vt 0.998999 0.332332 -vt 0.443443 0.889890 -vt 0.389890 0.889890 -vt 0.389890 0.943443 -vt 0.445445 0.889890 -vt 0.445445 0.943443 -vt 0.498999 0.943443 -vt 0.332332 0.001001 -vt 0.223223 0.001001 -vt 0.223223 0.110110 -vt 0.278779 0.889890 -vt 0.278779 0.943443 -vt 0.332332 0.943443 -vt 0.334334 0.889890 -vt 0.334334 0.943443 -vt 0.387888 0.943443 -vt 0.001001 0.889890 -vt 0.001001 0.943443 -vt 0.054555 0.943443 -vt 0.167668 0.889890 -vt 0.167668 0.943443 -vt 0.221221 0.943443 -vt 0.223223 0.889890 -vt 0.223223 0.943443 -vt 0.276777 0.943443 -vt 0.554555 0.889890 -vt 0.501001 0.889890 -vt 0.501001 0.943443 -vt 0.889890 0.223223 -vt 0.889890 0.276777 -vt 0.943443 0.276777 -vt 0.943443 0.167668 -vt 0.889890 0.167668 -vt 0.889890 0.221221 -vt 0.943443 0.334334 -vt 0.889890 0.334334 -vt 0.889890 0.387888 -vt 0.943443 0.278779 -vt 0.889890 0.278779 -vt 0.889890 0.332332 -vt 0.889890 0.445445 -vt 0.889890 0.498999 -vt 0.943443 0.498999 -vt 0.889890 0.389890 -vt 0.889890 0.443443 -vt 0.943443 0.443443 -vt 0.889890 0.001001 -vt 0.889890 0.054555 -vt 0.943443 0.054555 -vt 0.943443 0.112112 -vt 0.889890 0.112112 -vt 0.889890 0.165666 -vt 0.889890 0.056557 -vt 0.889890 0.110110 -vt 0.943443 0.110110 -vt 0.001001 0.001001 -vt 0.001001 0.110110 -vt 0.110110 0.110110 -vt 0.443443 0.334334 -vt 0.334334 0.334334 -vt 0.334334 0.443443 -vt 0.110110 0.112112 -vt 0.001001 0.112112 -vt 0.001001 0.221221 -vt 0.112112 0.001001 -vt 0.112112 0.110110 -vt 0.221221 0.110110 -vt 0.221221 0.112112 -vt 0.112112 0.112112 -vt 0.112112 0.221221 -vt 0.223223 0.112112 -vt 0.223223 0.221221 -vt 0.332332 0.221221 -vt 0.112112 0.223223 -vt 0.112112 0.332332 -vt 0.221221 0.332332 -vt 0.001001 0.223223 -vt 0.001001 0.332332 -vt 0.110110 0.332332 -vt 0.223223 0.223223 -vt 0.223223 0.332332 -vt 0.332332 0.332332 -vt 0.223223 0.334334 -vt 0.223223 0.443443 -vt 0.332332 0.443443 -vt 0.112112 0.334334 -vt 0.112112 0.443443 -vt 0.221221 0.443443 -vt 0.110110 0.334334 -vt 0.001001 0.334334 -vt 0.001001 0.443443 -vt 0.334334 0.112112 -vt 0.334334 0.221221 -vt 0.443443 0.221221 -vt 0.334334 0.001001 -vt 0.334334 0.110110 -vt 0.443443 0.110110 -vt 0.334334 0.223223 -vt 0.334334 0.332332 -vt 0.443443 0.332332 -vt 0.887888 0.112112 -vt 0.834334 0.112112 -vt 0.834334 0.221221 -vt 0.887888 0.887888 -vt 0.887888 0.834334 -vt 0.778779 0.834334 -vt 0.832332 0.721221 -vt 0.832332 0.613113 -vt 0.779780 0.721221 -vt 0.832332 0.443443 -vt 0.724224 0.443443 -vt 0.832332 0.390891 -vt 0.832332 0.832332 -vt 0.832332 0.724224 -vt 0.779780 0.832332 -vt 0.332332 0.832332 -vt 0.224224 0.832332 -vt 0.332332 0.779780 -vt 0.721221 0.387888 -vt 0.721221 0.279780 -vt 0.668669 0.387888 -vt 0.223223 0.831331 -vt 0.331331 0.778779 -vt 0.223223 0.778779 -vt 0.832332 0.054555 -vt 0.724224 0.054555 -vt 0.832332 0.002002 -vt 0.720220 0.278779 -vt 0.667668 0.386887 -vt 0.667668 0.278779 -vt 0.723223 0.001001 -vt 0.831331 0.001001 -vt 0.723223 0.053554 -vt 0.443443 0.832332 -vt 0.335335 0.832332 -vt 0.443443 0.779780 -vt 0.831331 0.723223 -vt 0.778779 0.831331 -vt 0.778779 0.723223 -vt 0.723223 0.442442 -vt 0.831331 0.389890 -vt 0.723223 0.389890 -vt 0.779780 0.387888 -vt 0.832332 0.279780 -vt 0.832332 0.387888 -vt 0.831331 0.278779 -vt 0.778779 0.386887 -vt 0.778779 0.278779 -vt 0.334334 0.831331 -vt 0.442442 0.778779 -vt 0.334334 0.778779 -vt 0.831331 0.612112 -vt 0.778779 0.612112 -vt 0.778779 0.720220 -vt 0.887888 0.001001 -vt 0.834334 0.001001 -vt 0.834334 0.110110 -vt 0.332332 0.887888 -vt 0.332332 0.834334 -vt 0.223223 0.834334 -vt 0.054555 0.778779 -vt 0.001001 0.778779 -vt 0.001001 0.887888 -vt 0.221221 0.887888 -vt 0.221221 0.834334 -vt 0.112112 0.834334 -vt 0.887888 0.501001 -vt 0.834334 0.501001 -vt 0.834334 0.610110 -vt 0.887888 0.498999 -vt 0.887888 0.445445 -vt 0.778779 0.445445 -vt 0.110110 0.778779 -vt 0.056557 0.778779 -vt 0.056557 0.887888 -vt 0.221221 0.832332 -vt 0.221221 0.778779 -vt 0.112112 0.778779 -vt 0.832332 0.165666 -vt 0.832332 0.056557 -vt 0.778779 0.056557 -vt 0.667668 0.832332 -vt 0.776777 0.832332 -vt 0.776777 0.778779 -vt 0.832332 0.167668 -vt 0.778779 0.167668 -vt 0.778779 0.276777 -vt 0.665666 0.832332 -vt 0.665666 0.778779 -vt 0.556557 0.778779 -vt 0.832332 0.501001 -vt 0.778779 0.501001 -vt 0.778779 0.610110 -vt 0.445445 0.832332 -vt 0.554555 0.832332 -vt 0.554555 0.778779 -vt 0.943443 0.610110 -vt 0.556557 0.943443 -vt 0.943443 0.721221 -vt 0.667668 0.943443 -vt 0.943443 0.943443 -vt 0.056557 0.943443 -vt 0.943443 0.832332 -vt 0.667668 0.887888 -vt 0.834334 0.832332 -vt 0.556557 0.887888 -vt 0.834334 0.332332 -vt 0.334334 0.834334 -vt 0.887888 0.721221 -vt 0.445445 0.834334 -vt 0.887888 0.334334 -vt 0.112112 0.721221 -vt 0.445445 0.221221 -vt 0.110110 0.498999 -vt 0.498999 0.001001 -vt 0.334334 0.498999 -vt 0.498999 0.332332 -vt 0.223223 0.498999 -vt 0.498999 0.334334 -vt 0.221221 0.498999 -vt 0.498999 0.445445 -vt 0.443443 0.554555 -vt 0.554555 0.445445 -vt 0.332332 0.554555 -vt 0.554555 0.334334 -vt 0.221221 0.554555 -vt 0.554555 0.332332 -vt 0.110110 0.554555 -vt 0.554555 0.221221 -vt 0.610110 0.110110 -vt 0.610110 0.112112 -vt 0.610110 0.054555 -vt 0.610110 0.223223 -vt 0.112112 0.610110 -vt 0.610110 0.445445 -vt 0.332332 0.610110 -vt 0.610110 0.334334 -vt 0.334334 0.610110 -vt 0.498999 0.556557 -vt 0.110110 0.610110 -vt 0.554555 0.665666 -vt 0.665666 0.610110 -vt 0.665666 0.056557 -vt 0.665666 0.665666 -vt 0.665666 0.167668 -vt 0.223223 0.665666 -vt 0.665666 0.387888 -vt 0.443443 0.665666 -vt 0.665666 0.498999 -vt 0.112112 0.665666 -vt 0.110110 0.721221 -vt 0.721221 0.554555 -vt 0.054555 0.721221 -vt 0.612112 0.054555 -vt 0.721221 0.389890 -vt 0.778779 0.943443 -vt 0.721221 0.165666 -vt 0.332332 0.721221 -vt 0.721221 0.721221 -vt 0.443443 0.721221 -vt 0.721221 0.167668 -vt 0.332332 0.998999 -vt 0.554555 0.721221 -vt 0.665666 0.667668 -vt 0.776777 0.610110 -vt 0.610110 0.667668 -vt 0.445445 0.776777 -vt 0.776777 0.445445 -vt 0.334334 0.776777 -vt 0.776777 0.278779 -vt 0.332332 0.776777 -vt 0.776777 0.167668 -vt 0.112112 0.776777 -vt 0.776777 0.056557 -vt 0.110110 0.776777 -vt 0.776777 0.612112 -vt 0.667668 0.776777 -vt 0.498999 0.998999 -vt 0.665666 0.945445 -vt 0.721221 0.945445 -vt 0.276777 0.945445 -vt 0.165666 0.945445 -vt 0.221221 0.945445 -vt 0.998999 0.943443 -vt 0.998999 0.945445 -vt 0.887888 0.945445 -vt 0.943443 0.945445 -vt 0.998999 0.001001 -vt 0.998999 0.110110 -vt 0.776777 0.945445 -vt 0.832332 0.945445 -vt 0.554555 0.945445 -vt 0.610110 0.998999 -vt 0.998999 0.498999 -vt 0.998999 0.501001 -vt 0.998999 0.778779 -vt 0.998999 0.834334 -vt 0.998999 0.334334 -vt 0.998999 0.389890 -vt 0.998999 0.112112 -vt 0.998999 0.556557 -vt 0.998999 0.612112 -vt 0.998999 0.167668 -vt 0.998999 0.667668 -vt 0.998999 0.776777 -vt 0.998999 0.223223 -vt 0.998999 0.278779 -vt 0.443443 0.943443 -vt 0.498999 0.889890 -vt 0.332332 0.110110 -vt 0.332332 0.889890 -vt 0.387888 0.889890 -vt 0.054555 0.889890 -vt 0.221221 0.889890 -vt 0.276777 0.889890 -vt 0.554555 0.943443 -vt 0.943443 0.223223 -vt 0.943443 0.221221 -vt 0.943443 0.387888 -vt 0.943443 0.332332 -vt 0.943443 0.445445 -vt 0.943443 0.389890 -vt 0.943443 0.001001 -vt 0.943443 0.165666 -vt 0.943443 0.056557 -vt 0.110110 0.001001 -vt 0.443443 0.443443 -vt 0.110110 0.221221 -vt 0.221221 0.001001 -vt 0.221221 0.221221 -vt 0.332332 0.112112 -vt 0.221221 0.223223 -vt 0.110110 0.223223 -vt 0.332332 0.223223 -vt 0.332332 0.334334 -vt 0.221221 0.334334 -vt 0.110110 0.443443 -vt 0.443443 0.112112 -vt 0.443443 0.001001 -vt 0.443443 0.223223 -vt 0.887888 0.221221 -vt 0.778779 0.887888 -vt 0.887888 0.110110 -vt 0.223223 0.887888 -vt 0.054555 0.887888 -vt 0.112112 0.887888 -vt 0.887888 0.610110 -vt 0.778779 0.498999 -vt 0.110110 0.887888 -vt 0.112112 0.832332 -vt 0.778779 0.165666 -vt 0.667668 0.778779 -vt 0.832332 0.276777 -vt 0.556557 0.832332 -vt 0.832332 0.610110 -vt 0.445445 0.778779 -vn 0.091623 0.882856 -0.460620 -vn 0.260920 0.882856 -0.390495 -vn 0.390495 0.882856 -0.260920 -vn 0.460620 0.882856 -0.091623 -vn 0.460620 0.882856 0.091623 -vn 0.390495 0.882856 0.260921 -vn 0.260921 0.882856 0.390495 -vn 0.091623 0.882856 0.460620 -vn -0.091623 0.882856 0.460620 -vn -0.260920 0.882856 0.390495 -vn -0.390495 0.882856 0.260920 -vn -0.460620 0.882856 0.091623 -vn -0.460620 0.882856 -0.091623 -vn -0.390495 0.882856 -0.260920 -vn 0.672190 0.728206 -0.133707 -vn -0.091623 0.882856 -0.460620 -vn -0.260920 0.882856 -0.390495 -vn 0.194271 0.091562 0.976665 -vn -0.380765 0.728206 -0.569855 -vn 0.380765 0.728206 0.569855 -vn -0.380765 0.728206 0.569855 -vn 0.380765 0.728206 -0.569855 -vn -0.672190 0.728206 -0.133707 -vn 0.672190 0.728206 0.133707 -vn -0.133707 0.728206 -0.672190 -vn 0.133707 0.728206 -0.672190 -vn 0.133707 0.728206 0.672190 -vn -0.569855 0.728206 0.380765 -vn 0.569855 0.728206 -0.380765 -vn -0.569855 0.728206 -0.380765 -vn 0.569855 0.728206 0.380765 -vn -0.133707 0.728206 0.672190 -vn -0.672190 0.728206 0.133707 -vn -0.180850 -0.375043 0.909195 -vn 0.827977 0.091562 0.553236 -vn 0.976665 0.091562 -0.194271 -vn -0.553236 0.091562 -0.827977 -vn 0.553236 0.091562 -0.827977 -vn -0.976665 0.091562 -0.194271 -vn -0.827977 0.091562 0.553237 -vn -0.194271 0.091562 0.976665 -vn 0.553236 0.091562 0.827977 -vn 0.976665 0.091562 0.194271 -vn -0.194270 0.091562 -0.976665 -vn 0.827977 0.091562 -0.553236 -vn -0.827977 0.091562 -0.553237 -vn 0.194271 0.091562 -0.976665 -vn -0.976665 0.091562 0.194271 -vn -0.553236 0.091562 0.827977 -vn 0.126783 -0.973614 -0.189743 -vn 0.515018 -0.375043 0.770779 -vn 0.909195 -0.375043 0.180851 -vn -0.180850 -0.375043 -0.909195 -vn 0.770778 -0.375043 -0.515018 -vn -0.770779 -0.375043 -0.515018 -vn 0.180850 -0.375043 -0.909195 -vn -0.909195 -0.375043 0.180851 -vn -0.515018 -0.375043 0.770778 -vn 0.180851 -0.375043 0.909195 -vn 0.770779 -0.375043 0.515018 -vn 0.909195 -0.375043 -0.180848 -vn -0.515017 -0.375043 -0.770779 -vn 0.515017 -0.375043 -0.770779 -vn -0.909195 -0.375043 -0.180849 -vn -0.770778 -0.375043 0.515018 -vn -0.558366 -0.740968 0.373088 -vn -0.044520 -0.973614 -0.223819 -vn -0.189745 -0.973614 -0.126782 -vn -0.223819 -0.973613 0.044522 -vn 0.126783 -0.973613 0.189745 -vn -0.126783 -0.973613 0.189745 -vn 0.223819 -0.973613 0.044520 -vn 0.189745 -0.973613 -0.126783 -vn 0.044520 -0.973613 -0.223819 -vn -0.126783 -0.973613 -0.189745 -vn -0.223819 -0.973613 -0.044521 -vn 0.044520 -0.973613 0.223819 -vn -0.189745 -0.973613 0.126783 -vn 0.189745 -0.973614 0.126783 -vn -0.044520 -0.973613 0.223819 -vn 0.223819 -0.973613 -0.044523 -vn 0.109840 0.826442 -0.552203 -vn -0.131011 -0.740967 0.658638 -vn 0.373088 -0.740968 0.558366 -vn 0.658638 -0.740967 0.131011 -vn -0.131011 -0.740968 -0.658637 -vn 0.558366 -0.740967 -0.373089 -vn -0.558366 -0.740968 -0.373088 -vn 0.131011 -0.740967 -0.658638 -vn -0.658637 -0.740968 0.131011 -vn -0.373088 -0.740968 0.558366 -vn 0.131011 -0.740967 0.658638 -vn 0.558366 -0.740968 0.373088 -vn 0.658637 -0.740967 -0.131011 -vn -0.373088 -0.740967 -0.558366 -vn 0.373088 -0.740968 -0.558366 -vn -0.658637 -0.740967 -0.131012 -vn 0.227257 -0.912511 -0.340114 -vn -0.552204 0.826442 0.109840 -vn -0.312798 0.826441 0.468136 -vn 0.109840 0.826442 0.552203 -vn 0.468136 0.826442 0.312798 -vn 0.552203 0.826442 -0.109841 -vn -0.312798 0.826442 -0.468135 -vn 0.312799 0.826442 -0.468136 -vn -0.552203 0.826442 -0.109841 -vn -0.468135 0.826442 0.312798 -vn -0.109840 0.826441 0.552205 -vn 0.312798 0.826442 0.468136 -vn 0.552204 0.826442 0.109841 -vn -0.109840 0.826442 -0.552204 -vn 0.468136 0.826442 -0.312798 -vn -0.468136 0.826442 -0.312798 -vn 0.546358 -0.753804 -0.365065 -vn -0.401192 -0.912511 -0.079801 -vn -0.340114 -0.912511 0.227258 -vn -0.079802 -0.912511 0.401193 -vn 0.227257 -0.912511 0.340114 -vn 0.401192 -0.912511 0.079801 -vn -0.079802 -0.912511 -0.401192 -vn 0.340114 -0.912511 -0.227257 -vn -0.340114 -0.912511 -0.227258 -vn 0.079802 -0.912510 -0.401194 -vn -0.401192 -0.912511 0.079802 -vn -0.227257 -0.912511 0.340114 -vn 0.079802 -0.912511 0.401193 -vn 0.340114 -0.912511 0.227257 -vn 0.401192 -0.912511 -0.079802 -vn -0.227257 -0.912511 -0.340115 -vn -0.546358 -0.753804 -0.365065 -vn 0.128193 -0.753804 -0.644473 -vn -0.644474 -0.753804 0.128193 -vn -0.365065 -0.753804 0.546358 -vn 0.128194 -0.753804 0.644474 -vn 0.546358 -0.753804 0.365065 -vn 0.644474 -0.753804 -0.128193 -vn -0.365065 -0.753804 -0.546358 -vn 0.365065 -0.753804 -0.546358 -vn -0.644474 -0.753804 -0.128194 -vn -0.546358 -0.753804 0.365065 -vn -0.128193 -0.753804 0.644473 -vn 0.365065 -0.753804 0.546358 -vn 0.644473 -0.753804 0.128194 -vn -0.128194 -0.753804 -0.644474 -vn -0.248797 0.894122 0.372351 -vn -0.372351 0.894122 0.248798 -vn 0.093165 0.985839 0.139432 -vn 0.032715 0.985839 0.164471 -vn -0.032715 0.985839 0.164471 -vn -0.093165 0.985840 0.139429 -vn -0.139432 0.985839 0.093165 -vn -0.164471 0.985839 0.032716 -vn -0.164471 0.985839 -0.032716 -vn -0.139432 0.985839 -0.093165 -vn -0.093165 0.985839 -0.139430 -vn 0.164471 0.985839 0.032716 -vn -0.032715 0.985839 -0.164471 -vn 0.032715 0.985839 -0.164470 -vn 0.093165 0.985839 -0.139432 -vn 0.139432 0.985839 -0.093166 -vn 0.164471 0.985839 -0.032716 -vn 0.139432 0.985839 0.093166 -vn -0.087366 0.894122 0.439218 -vn 0.087366 0.894123 0.439217 -vn 0.248797 0.894122 0.372352 -vn 0.372351 0.894123 0.248796 -vn 0.439218 0.894122 0.087367 -vn 0.439218 0.894122 -0.087366 -vn 0.372351 0.894123 -0.248795 -vn 0.248797 0.894122 -0.372351 -vn 0.087366 0.894122 -0.439218 -vn -0.087366 0.894122 -0.439218 -vn -0.248797 0.894122 -0.372351 -vn -0.372351 0.894122 -0.248798 -vn -0.439218 0.894122 -0.087366 -vn -0.439218 0.894122 0.087366 -vn 0.260921 0.882856 -0.390495 -vn 0.390495 0.882856 0.260920 -vn -0.390495 0.882856 0.260921 -vn -0.390495 0.882856 -0.260921 -vn -0.380764 0.728206 -0.569855 -vn -0.133707 0.728205 -0.672190 -vn -0.180850 -0.375044 0.909195 -vn 0.126783 -0.973613 -0.189744 -vn 0.515018 -0.375043 0.770778 -vn 0.909196 -0.375043 0.180849 -vn -0.770778 -0.375043 -0.515018 -vn 0.180851 -0.375043 -0.909195 -vn -0.909195 -0.375043 0.180849 -vn 0.180850 -0.375043 0.909195 -vn 0.770778 -0.375043 0.515018 -vn 0.909195 -0.375043 -0.180851 -vn -0.515018 -0.375043 -0.770778 -vn 0.515018 -0.375043 -0.770778 -vn -0.909195 -0.375043 -0.180851 -vn -0.770777 -0.375043 0.515020 -vn -0.558366 -0.740967 0.373088 -vn -0.044521 -0.973613 -0.223819 -vn -0.189745 -0.973613 -0.126783 -vn -0.223819 -0.973613 0.044520 -vn 0.126783 -0.973613 0.189746 -vn 0.223819 -0.973613 0.044523 -vn 0.189745 -0.973614 -0.126783 -vn 0.044520 -0.973613 -0.223820 -vn -0.126783 -0.973613 -0.189746 -vn -0.223819 -0.973613 -0.044523 -vn 0.044520 -0.973613 0.223820 -vn -0.189745 -0.973614 0.126780 -vn 0.189745 -0.973613 0.126784 -vn -0.044520 -0.973613 0.223820 -vn 0.223819 -0.973613 -0.044521 -vn -0.131011 -0.740968 0.658637 -vn 0.373088 -0.740967 0.558366 -vn 0.658637 -0.740967 0.131011 -vn -0.131011 -0.740967 -0.658638 -vn 0.558366 -0.740968 -0.373088 -vn 0.131011 -0.740966 -0.658638 -vn -0.658637 -0.740968 0.131012 -vn 0.558366 -0.740967 0.373088 -vn 0.658638 -0.740967 -0.131010 -vn 0.373088 -0.740967 -0.558367 -vn -0.658637 -0.740968 -0.131011 -vn -0.552203 0.826442 0.109840 -vn -0.312798 0.826442 0.468136 -vn 0.552203 0.826442 -0.109840 -vn -0.312798 0.826442 -0.468136 -vn 0.312798 0.826442 -0.468136 -vn -0.552203 0.826442 -0.109840 -vn -0.468136 0.826442 0.312798 -vn -0.109840 0.826442 0.552204 -vn 0.552204 0.826442 0.109840 -vn -0.401192 -0.912511 -0.079802 -vn -0.340114 -0.912511 0.227256 -vn -0.079802 -0.912511 0.401192 -vn 0.401192 -0.912511 0.079803 -vn -0.079802 -0.912511 -0.401191 -vn 0.340114 -0.912511 -0.227256 -vn -0.340114 -0.912512 -0.227256 -vn 0.079802 -0.912512 -0.401191 -vn 0.079802 -0.912511 0.401192 -vn -0.227257 -0.912511 -0.340114 -vn 0.128194 -0.753803 -0.644474 -vn -0.644474 -0.753804 0.128194 -vn 0.128194 -0.753804 0.644473 -vn 0.644473 -0.753804 -0.128194 -vn -0.365065 -0.753804 -0.546359 -vn 0.365065 -0.753803 -0.546359 -vn -0.644474 -0.753804 -0.128193 -vn -0.128194 -0.753804 0.644473 -vn 0.644474 -0.753804 0.128193 -vn -0.128194 -0.753804 -0.644473 -vn -0.372351 0.894122 0.248797 -vn 0.087366 0.894122 0.439218 -vn 0.248797 0.894122 0.372351 -vn 0.372351 0.894122 0.248797 -vn 0.439218 0.894122 0.087365 -vn 0.439218 0.894122 -0.087365 -vn 0.372351 0.894122 -0.248797 -vn 0.087366 0.894123 -0.439218 -vn -0.372351 0.894122 -0.248797 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/4/2 6/5/2 5/6/2 -f 6/7/3 8/8/3 7/9/3 -f 8/10/4 10/11/4 9/12/4 -f 10/13/5 12/14/5 11/15/5 -f 12/16/6 14/17/6 13/18/6 -f 14/19/7 16/20/7 15/21/7 -f 16/22/8 18/23/8 17/24/8 -f 17/25/9 18/26/9 20/27/9 -f 20/28/10 22/29/10 21/30/10 -f 21/31/11 22/32/11 24/33/11 -f 23/34/12 24/35/12 26/36/12 -f 26/37/13 28/38/13 27/39/13 -f 27/40/14 28/41/14 30/42/14 -f 8/43/15 36/44/15 37/45/15 -f 32/46/16 2/47/16 1/48/16 -f 29/49/17 30/50/17 32/51/17 -f 40/52/18 56/53/18 57/54/18 -f 30/55/19 47/56/19 48/57/19 -f 16/58/20 14/59/20 39/60/20 -f 22/61/21 20/62/21 42/63/21 -f 6/64/22 4/65/22 34/66/22 -f 26/67/23 45/68/23 46/69/23 -f 10/70/24 37/71/24 38/72/24 -f 32/73/25 48/74/25 33/75/25 -f 2/76/26 33/77/26 34/78/26 -f 16/79/27 40/80/27 41/81/27 -f 22/82/28 43/83/28 44/84/28 -f 6/85/29 35/86/29 36/87/29 -f 28/88/30 46/89/30 47/90/30 -f 14/91/31 12/92/31 38/93/31 -f 18/94/32 41/95/32 42/96/32 -f 26/97/33 24/98/33 44/99/33 -f 57/100/34 73/101/34 74/102/34 -f 38/103/35 54/104/35 55/105/35 -f 36/106/36 52/107/36 53/108/36 -f 47/109/37 63/110/37 64/111/37 -f 35/112/38 34/113/38 50/114/38 -f 45/115/39 61/116/39 62/117/39 -f 43/118/40 59/119/40 60/120/40 -f 41/121/41 57/122/41 58/123/41 -f 40/124/42 39/125/42 55/126/42 -f 37/127/43 53/128/43 54/129/43 -f 48/130/44 64/131/44 49/132/44 -f 36/133/45 35/134/45 51/135/45 -f 46/136/46 62/137/46 63/138/46 -f 33/139/47 49/140/47 50/141/47 -f 44/142/48 60/143/48 61/144/48 -f 42/145/49 58/146/49 59/147/49 -f 75/148/50 74/149/50 90/150/50 -f 56/151/51 55/152/51 71/153/51 -f 53/154/52 69/155/52 70/156/52 -f 49/157/53 64/158/53 80/159/53 -f 52/160/54 51/161/54 67/162/54 -f 63/163/55 62/164/55 78/165/55 -f 49/166/56 65/167/56 66/168/56 -f 61/169/57 60/170/57 76/171/57 -f 59/172/58 58/173/58 74/174/58 -f 56/175/59 72/176/59 73/177/59 -f 55/178/60 54/179/60 70/180/60 -f 53/181/61 52/182/61 68/183/61 -f 63/184/62 79/185/62 80/186/62 -f 51/187/63 50/188/63 66/189/63 -f 61/190/64 77/191/64 78/192/64 -f 59/193/65 75/194/65 76/195/65 -f 92/196/66 91/197/66 107/198/66 -f 72/199/67 88/200/67 89/201/67 -f 70/202/68 86/203/68 87/204/68 -f 68/205/69 84/206/69 85/207/69 -f 79/208/70 95/209/70 96/210/70 -f 67/211/71 66/212/71 82/213/71 -f 77/214/72 93/215/72 94/216/72 -f 76/217/73 75/218/73 91/219/73 -f 73/220/74 89/221/74 90/222/74 -f 71/223/75 87/224/75 88/225/75 -f 69/226/76 85/227/76 86/228/76 -f 65/229/77 80/230/77 96/231/77 -f 67/232/78 83/233/78 84/234/78 -f 78/235/79 94/236/79 95/237/79 -f 65/238/80 81/239/80 82/240/80 -f 77/241/81 76/242/81 92/243/81 -f 98/244/82 97/245/82 113/246/82 -f 89/247/83 105/248/83 106/249/83 -f 87/250/84 103/251/84 104/252/84 -f 85/253/85 101/254/85 102/255/85 -f 96/256/86 112/257/86 97/258/86 -f 83/259/87 99/260/87 100/261/87 -f 95/262/88 94/263/88 110/264/88 -f 81/265/89 97/266/89 98/267/89 -f 92/268/90 108/269/90 109/270/90 -f 90/271/91 106/272/91 107/273/91 -f 88/274/92 104/275/92 105/276/92 -f 87/277/93 86/278/93 102/279/93 -f 84/280/94 100/281/94 101/282/94 -f 95/283/95 111/284/95 112/285/95 -f 82/286/96 98/287/96 99/288/96 -f 94/289/97 93/290/97 109/291/97 -f 115/292/98 114/293/98 130/294/98 -f 108/295/99 124/296/99 125/297/99 -f 106/298/100 122/299/100 123/300/100 -f 104/301/101 120/302/101 121/303/101 -f 102/304/102 118/305/102 119/306/102 -f 100/307/103 116/308/103 117/309/103 -f 111/310/104 127/311/104 128/312/104 -f 98/313/105 114/314/105 115/315/105 -f 109/316/106 125/317/106 126/318/106 -f 107/319/107 123/320/107 124/321/107 -f 105/322/108 121/323/108 122/324/108 -f 104/325/109 103/326/109 119/327/109 -f 101/328/110 117/329/110 118/330/110 -f 112/331/111 128/332/111 113/333/111 -f 100/334/112 99/335/112 115/336/112 -f 110/337/113 126/338/113 127/339/113 -f 132/340/114 131/341/114 147/342/114 -f 125/343/115 141/344/115 142/345/115 -f 123/346/116 139/347/116 140/348/116 -f 121/349/117 137/350/117 138/351/117 -f 119/352/118 135/353/118 136/354/118 -f 117/355/119 133/356/119 134/357/119 -f 113/358/120 128/359/120 144/360/120 -f 115/361/121 131/362/121 132/363/121 -f 127/364/122 126/365/122 142/366/122 -f 114/367/123 113/368/123 129/369/123 -f 125/370/124 124/371/124 140/372/124 -f 122/373/125 138/374/125 139/375/125 -f 120/376/126 136/377/126 137/378/126 -f 118/379/127 134/380/127 135/381/127 -f 117/382/128 116/383/128 132/384/128 -f 127/385/129 143/386/129 144/387/129 -f 142/388/130 158/389/130 159/390/130 -f 130/391/131 129/392/131 145/393/131 -f 141/394/132 140/395/132 156/396/132 -f 138/397/133 154/398/133 155/399/133 -f 137/400/134 136/401/134 152/402/134 -f 134/403/135 150/404/135 151/405/135 -f 132/406/136 148/407/136 149/408/136 -f 143/409/137 159/410/137 160/411/137 -f 130/412/138 146/413/138 147/414/138 -f 141/415/139 157/416/139 158/417/139 -f 139/418/140 155/419/140 156/420/140 -f 138/421/141 137/422/141 153/423/141 -f 135/424/142 151/425/142 152/426/142 -f 133/427/143 149/428/143 150/429/143 -f 144/430/144 160/431/144 145/432/144 -f 170/433/145 171/434/145 155/435/145 -f 171/436/146 172/437/146 156/438/146 -f 167/439/147 177/440/147 168/441/147 -f 168/442/148 177/443/148 169/444/148 -f 169/445/149 177/446/149 170/447/149 -f 170/448/150 177/449/150 171/450/150 -f 171/451/151 177/452/151 172/453/151 -f 172/454/152 177/455/152 173/456/152 -f 173/457/153 177/458/153 174/459/153 -f 174/460/154 177/461/154 175/462/154 -f 175/463/155 177/464/155 176/465/155 -f 165/466/156 177/467/156 166/468/156 -f 176/469/157 177/470/157 161/471/157 -f 161/472/158 177/473/158 162/474/158 -f 162/475/159 177/476/159 163/477/159 -f 163/478/160 177/479/160 164/480/160 -f 164/481/161 177/482/161 165/483/161 -f 167/484/162 166/485/162 177/486/162 -f 169/487/163 170/488/163 154/489/163 -f 168/490/164 169/491/164 153/492/164 -f 167/493/165 168/494/165 152/495/165 -f 166/496/166 167/497/166 151/498/166 -f 165/499/167 166/500/167 150/501/167 -f 164/502/168 165/503/168 149/504/168 -f 163/505/169 164/506/169 148/507/169 -f 162/508/170 163/509/170 147/510/170 -f 145/511/171 161/512/171 162/513/171 -f 160/514/172 176/515/172 161/516/172 -f 175/517/173 176/518/173 160/519/173 -f 174/520/174 175/521/174 159/522/174 -f 173/523/175 174/524/175 158/525/175 -f 156/526/176 172/527/176 173/528/176 -f 1/529/1 2/1/1 3/3/1 -f 3/530/177 4/4/177 5/6/177 -f 5/531/3 6/7/3 7/9/3 -f 7/532/4 8/10/4 9/12/4 -f 9/533/5 10/13/5 11/15/5 -f 11/534/178 12/16/178 13/18/178 -f 13/535/7 14/19/7 15/21/7 -f 15/536/8 16/22/8 17/24/8 -f 19/537/9 17/25/9 20/27/9 -f 19/538/10 20/28/10 21/30/10 -f 23/539/179 21/31/179 24/33/179 -f 25/540/12 23/34/12 26/36/12 -f 25/541/13 26/37/13 27/39/13 -f 29/542/180 27/40/180 30/42/180 -f 10/543/15 8/43/15 37/45/15 -f 31/544/16 32/46/16 1/48/16 -f 31/545/17 29/49/17 32/51/17 -f 41/546/18 40/52/18 57/54/18 -f 32/547/181 30/55/181 48/57/181 -f 40/548/20 16/58/20 39/60/20 -f 43/549/21 22/61/21 42/63/21 -f 35/550/22 6/64/22 34/66/22 -f 28/551/23 26/67/23 46/69/23 -f 12/552/24 10/70/24 38/72/24 -f 2/553/182 32/73/182 33/75/182 -f 4/554/26 2/76/26 34/78/26 -f 18/555/27 16/79/27 41/81/27 -f 24/556/28 22/82/28 44/84/28 -f 8/557/29 6/85/29 36/87/29 -f 30/558/30 28/88/30 47/90/30 -f 39/559/31 14/91/31 38/93/31 -f 20/560/32 18/94/32 42/96/32 -f 45/561/33 26/97/33 44/99/33 -f 58/562/183 57/100/183 74/102/183 -f 39/563/35 38/103/35 55/105/35 -f 37/564/36 36/106/36 53/108/36 -f 48/565/37 47/109/37 64/111/37 -f 51/566/38 35/112/38 50/114/38 -f 46/567/39 45/115/39 62/117/39 -f 44/568/40 43/118/40 60/120/40 -f 42/569/41 41/121/41 58/123/41 -f 56/570/42 40/124/42 55/126/42 -f 38/571/43 37/127/43 54/129/43 -f 33/572/44 48/130/44 49/132/44 -f 52/573/45 36/133/45 51/135/45 -f 47/574/46 46/136/46 63/138/46 -f 34/575/47 33/139/47 50/141/47 -f 45/576/48 44/142/48 61/144/48 -f 43/577/49 42/145/49 59/147/49 -f 91/578/184 75/148/184 90/150/184 -f 72/579/185 56/151/185 71/153/185 -f 54/580/186 53/154/186 70/156/186 -f 65/581/53 49/157/53 80/159/53 -f 68/582/54 52/160/54 67/162/54 -f 79/583/187 63/163/187 78/165/187 -f 50/584/188 49/166/188 66/168/188 -f 77/585/189 61/169/189 76/171/189 -f 75/586/58 59/172/58 74/174/58 -f 57/587/190 56/175/190 73/177/190 -f 71/588/191 55/178/191 70/180/191 -f 69/589/192 53/181/192 68/183/192 -f 64/590/193 63/184/193 80/186/193 -f 67/591/194 51/187/194 66/189/194 -f 62/592/195 61/190/195 78/192/195 -f 60/593/196 59/193/196 76/195/196 -f 108/594/197 92/196/197 107/198/197 -f 73/595/198 72/199/198 89/201/198 -f 71/596/199 70/202/199 87/204/199 -f 69/597/200 68/205/200 85/207/200 -f 80/598/201 79/208/201 96/210/201 -f 83/599/71 67/211/71 82/213/71 -f 78/600/202 77/214/202 94/216/202 -f 92/601/203 76/217/203 91/219/203 -f 74/602/204 73/220/204 90/222/204 -f 72/603/205 71/223/205 88/225/205 -f 70/604/206 69/226/206 86/228/206 -f 81/605/207 65/229/207 96/231/207 -f 68/606/208 67/232/208 84/234/208 -f 79/607/209 78/235/209 95/237/209 -f 66/608/210 65/238/210 82/240/210 -f 93/609/211 77/241/211 92/243/211 -f 114/610/82 98/244/82 113/246/82 -f 90/611/212 89/247/212 106/249/212 -f 88/612/213 87/250/213 104/252/213 -f 86/613/214 85/253/214 102/255/214 -f 81/614/215 96/256/215 97/258/215 -f 84/615/216 83/259/216 100/261/216 -f 111/616/88 95/262/88 110/264/88 -f 82/617/217 81/265/217 98/267/217 -f 93/618/218 92/268/218 109/270/218 -f 91/619/91 90/271/91 107/273/91 -f 89/620/92 88/274/92 105/276/92 -f 103/621/219 87/277/219 102/279/219 -f 85/622/220 84/280/220 101/282/220 -f 96/623/95 95/283/95 112/285/95 -f 83/624/221 82/286/221 99/288/221 -f 110/625/222 94/289/222 109/291/222 -f 131/626/98 115/292/98 130/294/98 -f 109/627/223 108/295/223 125/297/223 -f 107/628/224 106/298/224 123/300/224 -f 105/629/101 104/301/101 121/303/101 -f 103/630/102 102/304/102 119/306/102 -f 101/631/225 100/307/225 117/309/225 -f 112/632/226 111/310/226 128/312/226 -f 99/633/227 98/313/227 115/315/227 -f 110/634/228 109/316/228 126/318/228 -f 108/635/229 107/319/229 124/321/229 -f 106/636/230 105/322/230 122/324/230 -f 120/637/109 104/325/109 119/327/109 -f 102/638/231 101/328/231 118/330/231 -f 97/639/111 112/331/111 113/333/111 -f 116/640/112 100/334/112 115/336/112 -f 111/641/113 110/337/113 127/339/113 -f 148/642/114 132/340/114 147/342/114 -f 126/643/232 125/343/232 142/345/232 -f 124/644/233 123/346/233 140/348/233 -f 122/645/234 121/349/234 138/351/234 -f 120/646/118 119/352/118 136/354/118 -f 118/647/235 117/355/235 134/357/235 -f 129/648/236 113/358/236 144/360/236 -f 116/649/237 115/361/237 132/363/237 -f 143/650/238 127/364/238 142/366/238 -f 130/651/239 114/367/239 129/369/239 -f 141/652/124 125/370/124 140/372/124 -f 123/653/125 122/373/125 139/375/125 -f 121/654/240 120/376/240 137/378/240 -f 119/655/127 118/379/127 135/381/127 -f 133/656/128 117/382/128 132/384/128 -f 128/657/241 127/385/241 144/387/241 -f 143/658/130 142/388/130 159/390/130 -f 146/659/242 130/391/242 145/393/242 -f 157/660/243 141/394/243 156/396/243 -f 139/661/133 138/397/133 155/399/133 -f 153/662/244 137/400/244 152/402/244 -f 135/663/135 134/403/135 151/405/135 -f 133/664/245 132/406/245 149/408/245 -f 144/665/246 143/409/246 160/411/246 -f 131/666/247 130/412/247 147/414/247 -f 142/667/248 141/415/248 158/417/248 -f 140/668/140 139/418/140 156/420/140 -f 154/669/249 138/421/249 153/423/249 -f 136/670/142 135/424/142 152/426/142 -f 134/671/250 133/427/250 150/429/250 -f 129/672/251 144/430/251 145/432/251 -f 154/673/145 170/433/145 155/435/145 -f 155/674/252 171/436/252 156/438/252 -f 153/675/163 169/487/163 154/489/163 -f 152/676/253 168/490/253 153/492/253 -f 151/677/254 167/493/254 152/495/254 -f 150/678/255 166/496/255 151/498/255 -f 149/679/256 165/499/256 150/501/256 -f 148/680/257 164/502/257 149/504/257 -f 147/681/258 163/505/258 148/507/258 -f 146/682/170 162/508/170 147/510/170 -f 146/683/259 145/511/259 162/513/259 -f 145/684/172 160/514/172 161/516/172 -f 159/685/173 175/517/173 160/519/173 -f 158/686/260 174/520/260 159/522/260 -f 157/687/175 173/523/175 158/525/175 -f 157/688/176 156/526/176 173/528/176 +v 1.060660 3.000000 1.060660 +v -0.574025 3.000000 1.385819 +v 0.574025 3.000000 -1.385819 +v -1.500000 3.000000 0.000000 +v -1.385819 3.000000 -0.574025 +v 1.385819 3.000000 0.574025 +v 0.000000 3.000000 -1.500000 +v 0.000000 3.000000 1.500000 +v -1.060660 3.000000 1.060660 +v -1.385819 3.000000 0.574025 +v 1.060660 3.000000 -1.060660 +v 0.000000 13.000000 1.968752 +v -0.753407 13.000000 1.818890 +v 1.039365 11.000000 0.430520 +v 0.795495 11.000000 0.795496 +v 1.039365 11.000000 -0.430519 +v 1.125000 11.000000 0.000000 +v -0.795495 11.000000 -0.795494 +v -0.430518 11.000000 -1.039365 +v 0.430519 11.000000 -1.039365 +v -1.125000 11.000000 0.000000 +v -1.039365 11.000000 -0.430519 +v -0.795495 11.000000 0.795496 +v -1.039365 11.000000 0.430520 +v -0.430518 11.000000 1.039366 +v 0.000000 11.000000 -1.125000 +v 0.795495 11.000000 -0.795494 +v -1.392116 13.000000 1.392118 +v -1.793829 12.500000 4.330688 +v 1.392116 13.000000 1.392118 +v 1.968750 13.000000 0.000002 +v 1.818887 13.000000 0.753410 +v -0.753407 13.000000 -1.818887 +v 1.392116 13.000000 -1.392115 +v -1.818887 13.000000 -0.753407 +v 0.000000 13.000000 -1.968748 +v 0.753407 13.000000 -1.818886 +v -1.818887 13.000000 0.753410 +v 0.753407 13.000000 1.818889 +v 1.818887 13.000000 -0.753406 +v -1.392116 13.000000 -1.392116 +v -1.968750 13.000000 0.000002 +v -4.330685 12.500000 1.793830 +v -3.314562 12.500000 3.314564 +v -3.662591 13.500000 3.662595 +v 1.793829 12.500000 4.330687 +v 0.000000 12.500000 4.687500 +v 4.330685 12.500000 1.793830 +v 3.314562 12.500000 3.314564 +v 4.330685 12.500000 -1.793827 +v 4.687500 12.500000 0.000002 +v -3.314562 12.500000 -3.314563 +v -1.793828 12.500000 -4.330686 +v 1.793828 12.500000 -4.330685 +v -4.687500 12.500000 0.000002 +v -4.330685 12.500000 -1.793828 +v 3.314562 12.500000 -3.314562 +v 0.000000 12.500000 -4.687500 +v 1.982180 13.500000 -4.785407 +v 0.000000 13.500000 -5.179687 +v 0.000000 14.500000 -4.222969 +v 0.000000 13.500000 5.179688 +v -1.982180 13.500000 4.785408 +v 3.662591 13.500000 3.662592 +v 1.982181 13.500000 4.785408 +v 5.179687 13.500000 0.000002 +v 4.785407 13.500000 1.982183 +v -1.982179 13.500000 -4.785408 +v 3.662591 13.500000 -3.662591 +v 4.785407 13.500000 -1.982179 +v -4.785408 13.500000 -1.982180 +v -4.785408 13.500000 1.982183 +v -5.179689 13.500000 0.000002 +v -3.662591 13.500000 -3.662592 +v 2.986090 14.500000 -2.986088 +v 1.616060 14.500000 -3.901513 +v 2.160069 15.000000 -5.214867 +v -3.901515 14.500000 1.616063 +v -4.222969 14.500000 0.000002 +v -1.616060 14.500000 3.901517 +v -2.986090 14.500000 2.986092 +v 1.616060 14.500000 3.901517 +v 0.000000 14.500000 4.222970 +v 3.901514 14.500000 1.616062 +v 2.986090 14.500000 2.986092 +v 3.901514 14.500000 -1.616058 +v 4.222969 14.500000 0.000002 +v -2.986090 14.500000 -2.986088 +v -1.616059 14.500000 -3.901513 +v -3.901515 14.500000 -1.616060 +v 5.214867 15.000000 -2.160067 +v 3.991285 15.000000 -3.991285 +v 5.220437 16.750000 -5.220435 +v -5.644531 15.000000 0.000002 +v -5.214868 15.000000 -2.160068 +v -3.991286 15.000000 3.991289 +v -5.214868 15.000000 2.160072 +v 0.000000 15.000000 5.644533 +v -2.160068 15.000000 5.214869 +v 3.991285 15.000000 3.991288 +v 2.160069 15.000000 5.214869 +v 5.644531 15.000000 0.000002 +v 5.214867 15.000000 2.160070 +v -2.160066 15.000000 -5.214868 +v 0.000000 15.000000 -5.644530 +v -3.991286 15.000000 -3.991286 +v -6.820830 16.750000 -2.825279 +v -5.220437 16.750000 -5.220436 +v 0.000000 16.750000 -7.382811 +v -6.820830 16.750000 2.825283 +v -2.825279 16.750000 6.820832 +v -5.220437 16.750000 5.220439 +v 2.825280 16.750000 6.820832 +v 6.820829 16.750000 2.825283 +v 5.220437 16.750000 5.220439 +v 6.820829 16.750000 -2.825278 +v 7.382812 16.750000 0.000002 +v -2.825278 16.750000 -6.820829 +v 2.825280 16.750000 -6.820828 +v -7.382812 16.750000 0.000002 +v 0.000001 16.750000 7.382814 +v -1.435062 18.500000 3.464551 +v -2.651650 18.500000 2.651653 +v -3.464549 18.500000 1.435066 +v 2.651650 18.500000 2.651652 +v 0.000000 19.000500 0.000002 +v 1.435062 18.500000 3.464549 +v 0.000000 18.500000 3.750002 +v -3.750000 18.500000 0.000002 +v -3.464549 18.500000 -1.435062 +v -2.651650 18.500000 -2.651649 +v -1.435061 18.500000 -3.464547 +v 3.749999 18.500000 0.000002 +v 3.464547 18.500000 1.435066 +v 0.000000 18.500000 -3.749998 +v 1.435062 18.500000 -3.464546 +v 2.651650 18.500000 -2.651648 +v 3.464547 18.500000 -1.435061 +v -2.296099 -0.000000 5.543278 +v -6.000000 0.000000 0.000000 +v -2.296098 0.000000 -5.543279 +vt 0.068894 0.830663 +vt 0.068894 0.856838 +vt 0.000332 0.868878 +vt 0.068894 0.518164 +vt 0.068894 0.544338 +vt 0.000332 0.556379 +vt 0.068893 0.268164 +vt 0.068893 0.294338 +vt 0.000332 0.306378 +vt 0.068894 0.580663 +vt 0.068894 0.606838 +vt 0.000332 0.618878 +vt 0.068895 0.768163 +vt 0.068895 0.794338 +vt 0.000332 0.806378 +vt 0.068893 0.205664 +vt 0.068893 0.231838 +vt 0.000332 0.243878 +vt 0.068893 0.080663 +vt 0.068893 0.106838 +vt 0.000332 0.118878 +vt 0.068894 0.893162 +vt 0.068894 0.919337 +vt 0.000332 0.931377 +vt 0.000332 0.381124 +vt 0.068894 0.393164 +vt 0.068894 0.419339 +vt 0.068893 0.018163 +vt 0.068893 0.044338 +vt 0.000332 0.056378 +vt 0.000332 0.131123 +vt 0.068893 0.143163 +vt 0.068893 0.169338 +vt 0.000332 0.693623 +vt 0.068894 0.705663 +vt 0.068894 0.731838 +vt 0.068894 0.643163 +vt 0.068894 0.669338 +vt 0.000332 0.681378 +vt 0.000332 0.318624 +vt 0.068894 0.330664 +vt 0.068894 0.356838 +vt 0.115877 0.587469 +vt 0.115877 0.600033 +vt 0.068894 0.955663 +vt 0.068894 0.981837 +vt 0.000332 0.993878 +vt 0.000332 0.443623 +vt 0.068894 0.455663 +vt 0.068895 0.481838 +vt 0.115877 0.899968 +vt 0.287793 0.901539 +vt 0.287792 0.910961 +vt 0.115877 0.462469 +vt 0.115877 0.475033 +vt 0.115876 0.087469 +vt 0.115876 0.024969 +vt 0.115877 0.524969 +vt 0.115877 0.649969 +vt 0.115877 0.662532 +vt 0.115878 0.774969 +vt 0.115878 0.787532 +vt 0.115877 0.962468 +vt 0.115877 0.975032 +vt 0.115877 0.837469 +vt 0.115877 0.850033 +vt 0.115877 0.912532 +vt 0.115875 0.149969 +vt 0.115875 0.162532 +vt 0.115875 0.274969 +vt 0.115875 0.287533 +vt 0.115876 0.337469 +vt 0.115876 0.350033 +vt 0.115875 0.212469 +vt 0.115877 0.399970 +vt 0.115877 0.412534 +vt 0.115877 0.712469 +vt 0.287792 0.401540 +vt 0.334254 0.398006 +vt 0.334255 0.414496 +vt 0.287788 0.214039 +vt 0.287788 0.223462 +vt 0.287792 0.589039 +vt 0.287792 0.598462 +vt 0.287793 0.464040 +vt 0.287793 0.473462 +vt 0.115877 0.537533 +vt 0.287792 0.526540 +vt 0.287792 0.651539 +vt 0.287792 0.660962 +vt 0.287788 0.151539 +vt 0.287788 0.160962 +vt 0.287792 0.410963 +vt 0.115876 0.100032 +vt 0.287788 0.089039 +vt 0.287793 0.776539 +vt 0.287793 0.785962 +vt 0.287792 0.964039 +vt 0.287792 0.973461 +vt 0.287788 0.276539 +vt 0.287788 0.339040 +vt 0.287788 0.348462 +vt 0.287792 0.839039 +vt 0.287792 0.848462 +vt 0.287793 0.714039 +vt 0.287793 0.723462 +vt 0.287789 0.026539 +vt 0.287789 0.035962 +vt 0.334252 0.039495 +vt 0.334252 0.023006 +vt 0.392490 0.011620 +vt 0.287788 0.098462 +vt 0.334251 0.085506 +vt 0.334256 0.773005 +vt 0.334256 0.789495 +vt 0.334255 0.960505 +vt 0.287788 0.285962 +vt 0.334251 0.273006 +vt 0.334251 0.335506 +vt 0.334255 0.835506 +vt 0.334255 0.851995 +vt 0.334256 0.710506 +vt 0.334255 0.898005 +vt 0.334255 0.914495 +vt 0.334251 0.210506 +vt 0.334255 0.585506 +vt 0.334256 0.460506 +vt 0.334256 0.476996 +vt 0.287792 0.535962 +vt 0.334255 0.523006 +vt 0.334255 0.648006 +vt 0.334255 0.664495 +vt 0.334251 0.148005 +vt 0.334251 0.164495 +vt 0.392489 0.175881 +vt 0.392490 0.136620 +vt 0.416326 0.134558 +vt 0.392493 0.886619 +vt 0.392493 0.925881 +vt 0.392489 0.199120 +vt 0.392490 0.238381 +vt 0.392493 0.574120 +vt 0.392493 0.613382 +vt 0.392494 0.449120 +vt 0.392494 0.488382 +vt 0.334255 0.539496 +vt 0.392493 0.511620 +vt 0.392493 0.636620 +vt 0.392493 0.675881 +vt 0.392493 0.386621 +vt 0.392493 0.425882 +vt 0.392490 0.074120 +vt 0.392490 0.113381 +vt 0.392494 0.761620 +vt 0.392494 0.800881 +vt 0.334255 0.976995 +vt 0.392493 0.949119 +vt 0.392489 0.261620 +vt 0.392489 0.300882 +vt 0.392490 0.324120 +vt 0.392490 0.363382 +vt 0.392493 0.824120 +vt 0.392493 0.863381 +vt 0.334256 0.726995 +vt 0.392494 0.699120 +vt 0.416330 0.865442 +vt 0.416330 0.822059 +vt 0.445767 0.826065 +vt 0.416329 0.384559 +vt 0.416329 0.427943 +vt 0.416326 0.072058 +vt 0.416326 0.115442 +vt 0.416330 0.759559 +vt 0.416330 0.802942 +vt 0.416329 0.947058 +vt 0.416329 0.990442 +vt 0.416326 0.259559 +vt 0.416326 0.302943 +vt 0.416326 0.322059 +vt 0.416330 0.697059 +vt 0.416330 0.740443 +vt 0.416326 0.009558 +vt 0.416326 0.052942 +vt 0.416330 0.884558 +vt 0.416330 0.927942 +vt 0.416326 0.197059 +vt 0.416330 0.572059 +vt 0.416330 0.615443 +vt 0.416330 0.447059 +vt 0.416330 0.490443 +vt 0.416330 0.509559 +vt 0.416330 0.552943 +vt 0.416330 0.634559 +vt 0.445767 0.548936 +vt 0.445767 0.513566 +vt 0.477562 0.507612 +vt 0.445767 0.701065 +vt 0.445767 0.736436 +vt 0.445763 0.013565 +vt 0.445763 0.048936 +vt 0.445767 0.888565 +vt 0.445767 0.923935 +vt 0.445763 0.201065 +vt 0.445763 0.236436 +vt 0.445767 0.576065 +vt 0.445767 0.611436 +vt 0.445767 0.451066 +vt 0.445767 0.486436 +vt 0.445767 0.638565 +vt 0.445767 0.673936 +vt 0.445763 0.138565 +vt 0.445763 0.173936 +vt 0.445766 0.388566 +vt 0.445766 0.423937 +vt 0.445763 0.076065 +vt 0.445767 0.763565 +vt 0.445767 0.798936 +vt 0.445766 0.951065 +vt 0.445766 0.986435 +vt 0.445763 0.263566 +vt 0.445764 0.326066 +vt 0.445764 0.361436 +vt 0.477559 0.304890 +vt 0.477559 0.257612 +vt 0.530006 0.250332 +vt 0.477563 0.632612 +vt 0.477562 0.679889 +vt 0.477559 0.132612 +vt 0.477559 0.179889 +vt 0.477562 0.382613 +vt 0.477562 0.429890 +vt 0.477559 0.070112 +vt 0.477559 0.117389 +vt 0.477563 0.757612 +vt 0.477563 0.804889 +vt 0.477562 0.945111 +vt 0.477560 0.320112 +vt 0.445767 0.861436 +vt 0.477563 0.820112 +vt 0.477563 0.695112 +vt 0.477559 0.007611 +vt 0.477560 0.054889 +vt 0.477563 0.882612 +vt 0.477563 0.929889 +vt 0.477559 0.195112 +vt 0.477559 0.242389 +vt 0.477562 0.570112 +vt 0.477563 0.445112 +vt 0.477563 0.492390 +vt 0.530006 0.312833 +vt 0.530006 0.374670 +vt 0.477563 0.867389 +vt 0.530009 0.812832 +vt 0.477563 0.742389 +vt 0.530009 0.687832 +vt 0.530006 0.000332 +vt 0.530006 0.062169 +vt 0.530009 0.875332 +vt 0.530006 0.187832 +vt 0.530006 0.249669 +vt 0.530009 0.562833 +vt 0.530009 0.624669 +vt 0.530009 0.437833 +vt 0.530009 0.499669 +vt 0.530009 0.500333 +vt 0.530009 0.562169 +vt 0.530009 0.625332 +vt 0.530009 0.687169 +vt 0.530006 0.125332 +vt 0.530006 0.187169 +vt 0.530008 0.375333 +vt 0.530006 0.062832 +vt 0.530006 0.124669 +vt 0.530009 0.750332 +vt 0.530009 0.812169 +vt 0.530008 0.937832 +vt 0.530008 0.999668 +vt 0.615219 0.015545 +vt 0.615219 0.046955 +vt 0.615219 0.140546 +vt 0.615219 0.171955 +vt 0.615219 0.078046 +vt 0.694899 0.093750 +vt 0.615219 0.109455 +vt 0.615221 0.890546 +vt 0.694901 0.906250 +vt 0.615221 0.921955 +vt 0.615221 0.390546 +vt 0.694901 0.406251 +vt 0.615221 0.421956 +vt 0.694899 0.031250 +vt 0.694899 0.156251 +vt 0.615222 0.703046 +vt 0.694901 0.718751 +vt 0.615222 0.734455 +vt 0.615221 0.640546 +vt 0.694901 0.656251 +vt 0.615221 0.671955 +vt 0.615219 0.328047 +vt 0.694899 0.343751 +vt 0.615219 0.359456 +vt 0.615222 0.453047 +vt 0.694901 0.468751 +vt 0.615222 0.484456 +vt 0.615222 0.765546 +vt 0.694901 0.781250 +vt 0.615222 0.796955 +vt 0.615221 0.953046 +vt 0.694901 0.968750 +vt 0.615221 0.984455 +vt 0.615221 0.828046 +vt 0.694901 0.843750 +vt 0.615221 0.859455 +vt 0.615221 0.515547 +vt 0.694901 0.531251 +vt 0.615221 0.546956 +vt 0.615219 0.265546 +vt 0.694899 0.281251 +vt 0.615219 0.296955 +vt 0.615221 0.578046 +vt 0.694901 0.593751 +vt 0.615221 0.609456 +vt 0.615219 0.234455 +vt 0.615219 0.203046 +vt 0.694899 0.218751 +vt 0.530008 0.437170 +vt 0.530009 0.937169 +vt 0.530006 0.312169 +vt 0.000332 0.818623 +vt 0.000332 0.506123 +vt 0.000332 0.256124 +vt 0.000332 0.568623 +vt 0.000332 0.756123 +vt 0.000332 0.193623 +vt 0.000332 0.068623 +vt 0.000332 0.881122 +vt 0.000332 0.431379 +vt 0.000332 0.006123 +vt 0.000332 0.181378 +vt 0.000332 0.743878 +vt 0.000332 0.631123 +vt 0.000332 0.368878 +vt 0.000332 0.943622 +vt 0.000332 0.493879 +vt 0.115876 0.037532 +vt 0.115875 0.225032 +vt 0.115877 0.725032 +vt 0.392490 0.050881 +vt 0.334251 0.101995 +vt 0.334251 0.289496 +vt 0.334251 0.351996 +vt 0.334251 0.226996 +vt 0.334255 0.601996 +vt 0.416326 0.177942 +vt 0.392493 0.550882 +vt 0.392493 0.988381 +vt 0.392494 0.738381 +vt 0.416326 0.365443 +vt 0.416326 0.240443 +vt 0.416330 0.677943 +vt 0.477562 0.554890 +vt 0.445763 0.111436 +vt 0.445763 0.298936 +vt 0.477562 0.992389 +vt 0.477559 0.367390 +vt 0.477562 0.617390 +vt 0.530009 0.874669 +vt 0.530009 0.749669 +vn 0.091600 0.882900 -0.460600 +vn 0.260900 0.882900 -0.390500 +vn 0.390500 0.882900 -0.260900 +vn 0.460600 0.882900 -0.091600 +vn 0.460600 0.882900 0.091600 +vn 0.390500 0.882900 0.260900 +vn 0.260900 0.882900 0.390500 +vn 0.091600 0.882900 0.460600 +vn -0.091600 0.882900 0.460600 +vn -0.260900 0.882900 0.390500 +vn -0.390500 0.882900 0.260900 +vn -0.460600 0.882900 0.091600 +vn -0.460600 0.882900 -0.091600 +vn -0.390500 0.882900 -0.260900 +vn 0.672200 0.728200 -0.133700 +vn -0.091600 0.882900 -0.460600 +vn -0.260900 0.882900 -0.390500 +vn 0.194900 0.045900 0.979800 +vn -0.380800 0.728200 -0.569900 +vn 0.380800 0.728200 0.569900 +vn -0.380800 0.728200 0.569900 +vn 0.380800 0.728200 -0.569900 +vn -0.672200 0.728200 -0.133700 +vn 0.672200 0.728200 0.133700 +vn -0.133700 0.728200 -0.672200 +vn 0.133700 0.728200 -0.672200 +vn 0.133700 0.728200 0.672200 +vn -0.569900 0.728200 0.380800 +vn 0.569900 0.728200 -0.380800 +vn -0.569900 0.728200 -0.380800 +vn 0.569900 0.728200 0.380800 +vn -0.133700 0.728200 0.672200 +vn -0.672200 0.728200 0.133700 +vn -0.180300 -0.382300 0.906300 +vn 0.830600 0.045900 0.555000 +vn 0.979800 0.045900 -0.194900 +vn -0.555000 0.045900 -0.830600 +vn 0.555000 0.045900 -0.830600 +vn -0.979800 0.045900 -0.194900 +vn -0.830600 0.045900 0.555000 +vn -0.194900 0.045900 0.979800 +vn 0.555000 0.045900 0.830600 +vn 0.979800 0.045900 0.194900 +vn -0.194900 0.045900 -0.979800 +vn 0.830600 0.045900 -0.555000 +vn -0.830600 0.045900 -0.555000 +vn 0.194900 0.045900 -0.979800 +vn -0.979800 0.045900 0.194900 +vn -0.555000 0.045900 0.830600 +vn 0.102400 -0.982900 -0.153200 +vn 0.513400 -0.382300 0.768300 +vn 0.906300 -0.382300 0.180300 +vn -0.180300 -0.382300 -0.906300 +vn 0.768300 -0.382300 -0.513400 +vn -0.768300 -0.382300 -0.513400 +vn 0.180300 -0.382300 -0.906300 +vn -0.906300 -0.382300 0.180300 +vn -0.513400 -0.382300 0.768300 +vn 0.180300 -0.382300 0.906300 +vn 0.768300 -0.382300 0.513400 +vn 0.906300 -0.382300 -0.180300 +vn -0.513400 -0.382300 -0.768300 +vn 0.513400 -0.382300 -0.768300 +vn -0.906300 -0.382300 -0.180300 +vn -0.768300 -0.382300 0.513400 +vn -0.748800 -0.434700 0.500300 +vn -0.036000 -0.982900 -0.180800 +vn -0.153200 -0.982900 -0.102400 +vn -0.180800 -0.982900 0.036000 +vn 0.102400 -0.982900 0.153200 +vn -0.102400 -0.982900 0.153200 +vn 0.180800 -0.982900 0.036000 +vn 0.153200 -0.982900 -0.102400 +vn 0.036000 -0.982900 -0.180800 +vn -0.102400 -0.982900 -0.153200 +vn -0.180800 -0.982900 -0.036000 +vn 0.036000 -0.982900 0.180800 +vn -0.153200 -0.982900 0.102400 +vn 0.153200 -0.982900 0.102400 +vn -0.036000 -0.982900 0.180800 +vn 0.180800 -0.982900 -0.036000 +vn 0.142300 0.684300 -0.715200 +vn -0.175700 -0.434700 0.883300 +vn 0.500300 -0.434700 0.748800 +vn 0.883300 -0.434700 0.175700 +vn -0.175700 -0.434700 -0.883300 +vn 0.748800 -0.434700 -0.500300 +vn -0.748800 -0.434700 -0.500300 +vn 0.175700 -0.434700 -0.883300 +vn -0.883300 -0.434700 0.175700 +vn -0.500300 -0.434700 0.748800 +vn 0.175700 -0.434700 0.883300 +vn 0.748800 -0.434700 0.500300 +vn 0.883300 -0.434700 -0.175700 +vn -0.500300 -0.434700 -0.748800 +vn 0.500300 -0.434700 -0.748800 +vn -0.883300 -0.434700 -0.175700 +vn 0.187500 -0.941300 -0.280700 +vn -0.715200 0.684300 0.142300 +vn -0.405100 0.684300 0.606300 +vn 0.142300 0.684300 0.715200 +vn 0.606300 0.684300 0.405100 +vn 0.715200 0.684300 -0.142300 +vn -0.405100 0.684300 -0.606300 +vn 0.405100 0.684300 -0.606300 +vn -0.715200 0.684300 -0.142300 +vn -0.606300 0.684300 0.405100 +vn -0.142300 0.684300 0.715200 +vn 0.405100 0.684300 0.606300 +vn 0.715200 0.684300 0.142300 +vn -0.142300 0.684300 -0.715200 +vn 0.606300 0.684300 -0.405100 +vn -0.606300 0.684300 -0.405100 +vn 0.595600 -0.697800 -0.397900 +vn -0.331100 -0.941300 -0.065900 +vn -0.280700 -0.941300 0.187500 +vn -0.065900 -0.941300 0.331100 +vn 0.187500 -0.941300 0.280700 +vn 0.331100 -0.941300 0.065900 +vn -0.065900 -0.941300 -0.331100 +vn 0.280700 -0.941300 -0.187500 +vn -0.280700 -0.941300 -0.187500 +vn 0.065900 -0.941300 -0.331100 +vn -0.331100 -0.941300 0.065900 +vn -0.187500 -0.941300 0.280700 +vn 0.065900 -0.941300 0.331100 +vn 0.280700 -0.941300 0.187500 +vn 0.331100 -0.941300 -0.065900 +vn -0.187500 -0.941300 -0.280700 +vn -0.595600 -0.697800 -0.397900 +vn 0.139700 -0.697800 -0.702500 +vn -0.702500 -0.697800 0.139700 +vn -0.397900 -0.697800 0.595600 +vn 0.139700 -0.697800 0.702500 +vn 0.595600 -0.697800 0.397900 +vn 0.702500 -0.697800 -0.139700 +vn -0.397900 -0.697800 -0.595600 +vn 0.397900 -0.697800 -0.595600 +vn -0.702500 -0.697800 -0.139700 +vn -0.595600 -0.697800 0.397900 +vn -0.139700 -0.697800 0.702500 +vn 0.397900 -0.697800 0.595600 +vn 0.702500 -0.697800 0.139700 +vn -0.139700 -0.697800 -0.702500 +vn -0.244900 0.897600 0.366600 +vn -0.366600 0.897600 0.244900 +vn 0.074900 0.990900 0.112100 +vn 0.026300 0.990900 0.132200 +vn -0.026300 0.990900 0.132200 +vn -0.074900 0.990900 0.112100 +vn -0.112100 0.990900 0.074900 +vn -0.132200 0.990900 0.026300 +vn -0.132200 0.990900 -0.026300 +vn -0.112100 0.990900 -0.074900 +vn -0.074900 0.990900 -0.112100 +vn 0.132200 0.990900 0.026300 +vn -0.026300 0.990900 -0.132200 +vn 0.026300 0.990900 -0.132200 +vn 0.074900 0.990900 -0.112100 +vn 0.112100 0.990900 -0.074900 +vn 0.132200 0.990900 -0.026300 +vn 0.112100 0.990900 0.074900 +vn -0.086000 0.897600 0.432400 +vn 0.086000 0.897600 0.432400 +vn 0.244900 0.897600 0.366600 +vn 0.366600 0.897600 0.244900 +vn 0.432400 0.897600 0.086000 +vn 0.432400 0.897600 -0.086000 +vn 0.366600 0.897600 -0.244900 +vn 0.244900 0.897600 -0.366600 +vn 0.086000 0.897600 -0.432400 +vn -0.086000 0.897600 -0.432400 +vn -0.244900 0.897600 -0.366600 +vn -0.366600 0.897600 -0.244900 +vn -0.432400 0.897600 -0.086000 +vn -0.432400 0.897600 0.086000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 2/4/2 4/5/2 5/6/2 +f 4/7/3 6/8/3 7/9/3 +f 6/10/4 8/11/4 9/12/4 +f 8/13/5 10/14/5 11/15/5 +f 10/16/6 12/17/6 13/18/6 +f 12/19/7 14/20/7 15/21/7 +f 14/22/8 16/23/8 17/24/8 +f 17/25/9 16/26/9 18/27/9 +f 18/28/10 19/29/10 20/30/10 +f 20/31/11 19/32/11 21/33/11 +f 22/34/12 21/35/12 23/36/12 +f 23/37/13 24/38/13 25/39/13 +f 25/40/14 24/41/14 26/42/14 +f 6/10/15 27/43/15 28/44/15 +f 29/45/16 1/46/16 30/47/16 +f 31/48/17 26/49/17 29/50/17 +f 32/51/18 33/52/18 34/53/18 +f 26/49/19 35/54/19 36/55/19 +f 14/20/20 12/19/20 37/56/20 +f 19/29/21 18/28/21 38/57/21 +f 4/5/22 2/4/22 39/58/22 +f 23/37/23 40/59/23 41/60/23 +f 8/13/24 28/61/24 42/62/24 +f 29/45/25 36/63/25 43/64/25 +f 1/1/26 43/65/26 39/66/26 +f 14/22/27 32/51/27 44/67/27 +f 19/32/28 45/68/28 46/69/28 +f 4/7/29 47/70/29 27/71/29 +f 24/41/30 41/72/30 35/73/30 +f 12/17/31 10/16/31 42/74/31 +f 16/26/32 44/75/32 38/76/32 +f 23/36/33 21/35/33 46/77/33 +f 34/78/34 48/79/34 49/80/34 +f 42/74/35 50/81/35 51/82/35 +f 27/43/36 52/83/36 53/84/36 +f 35/54/37 54/85/37 55/86/37 +f 47/87/38 39/58/38 56/88/38 +f 40/59/39 57/89/39 58/90/39 +f 45/68/40 59/91/40 60/92/40 +f 44/75/41 34/78/41 61/93/41 +f 32/94/42 37/56/42 51/95/42 +f 28/61/43 53/96/43 50/97/43 +f 36/63/44 55/98/44 62/99/44 +f 27/71/45 47/70/45 63/100/45 +f 41/72/46 58/101/46 54/102/46 +f 43/65/47 62/103/47 56/104/47 +f 46/77/48 60/105/48 57/106/48 +f 38/57/49 61/107/49 59/108/49 +f 64/109/50 49/110/50 65/111/50 +f 33/112/51 51/95/51 66/113/51 +f 53/96/52 67/114/52 68/115/52 +f 62/99/53 55/98/53 69/116/53 +f 52/117/54 63/100/54 70/118/54 +f 54/102/55 58/101/55 71/119/55 +f 62/103/56 72/120/56 73/121/56 +f 57/106/57 60/105/57 74/122/57 +f 59/108/58 61/107/58 49/110/58 +f 33/52/59 75/123/59 48/124/59 +f 51/82/60 50/81/60 68/125/60 +f 53/84/61 52/83/61 76/126/61 +f 54/85/62 77/127/62 69/128/62 +f 63/129/63 56/88/63 73/130/63 +f 57/89/64 78/131/64 71/132/64 +f 59/91/65 64/133/65 74/134/65 +f 79/135/66 80/136/66 81/137/66 +f 75/123/67 82/138/67 83/139/67 +f 68/125/68 84/140/68 85/141/68 +f 76/126/69 86/142/69 87/143/69 +f 77/127/70 88/144/70 89/145/70 +f 70/146/71 73/130/71 90/147/71 +f 78/131/72 91/148/72 92/149/72 +f 74/134/73 64/133/73 80/136/73 +f 48/79/74 83/150/74 65/151/74 +f 66/113/75 85/152/75 82/153/75 +f 67/114/76 87/154/76 84/155/76 +f 72/156/77 69/116/77 89/157/77 +f 70/118/78 93/158/78 86/159/78 +f 71/119/79 92/160/79 88/161/79 +f 72/120/80 94/162/80 90/163/80 +f 78/164/81 74/122/81 79/165/81 +f 95/166/82 96/167/82 97/168/82 +f 83/150/83 98/169/83 99/170/83 +f 85/152/84 100/171/84 101/172/84 +f 87/154/85 102/173/85 103/174/85 +f 89/157/86 104/175/86 96/176/86 +f 93/158/87 105/177/87 106/178/87 +f 88/161/88 92/160/88 107/179/88 +f 94/162/89 96/167/89 95/166/89 +f 79/165/90 108/180/90 109/181/90 +f 65/111/91 99/182/91 81/183/91 +f 82/138/92 101/184/92 98/185/92 +f 85/141/93 84/140/93 103/186/93 +f 86/142/94 106/187/94 102/188/94 +f 88/144/95 110/189/95 104/190/95 +f 90/147/96 95/191/96 105/192/96 +f 92/149/97 91/148/97 109/193/97 +f 111/194/98 112/195/98 113/196/98 +f 108/180/99 114/197/99 115/198/99 +f 99/182/100 116/199/100 117/200/100 +f 101/184/101 118/201/101 119/202/101 +f 103/186/102 120/203/102 121/204/102 +f 106/187/103 122/205/103 123/206/103 +f 110/189/104 124/207/104 125/208/104 +f 95/191/105 112/195/105 111/194/105 +f 109/193/106 115/209/106 126/210/106 +f 81/137/107 117/211/107 114/212/107 +f 98/169/108 119/213/108 116/214/108 +f 101/172/109 100/171/109 121/215/109 +f 102/173/110 123/216/110 120/217/110 +f 104/175/111 125/218/111 97/219/111 +f 106/178/112 105/177/112 111/220/112 +f 107/179/113 126/221/113 124/222/113 +f 127/223/114 128/224/114 129/225/114 +f 115/209/115 130/226/115 131/227/115 +f 117/211/116 132/228/116 133/229/116 +f 119/213/117 134/230/117 135/231/117 +f 121/215/118 136/232/118 137/233/118 +f 123/216/119 138/234/119 139/235/119 +f 97/219/120 125/218/120 140/236/120 +f 111/220/121 128/224/121 127/223/121 +f 124/222/122 126/221/122 131/237/122 +f 112/238/123 97/168/123 141/239/123 +f 115/198/124 114/197/124 133/240/124 +f 116/199/125 135/241/125 132/242/125 +f 118/201/126 137/243/126 134/244/126 +f 120/203/127 139/245/127 136/246/127 +f 123/206/128 122/205/128 127/247/128 +f 124/207/129 142/248/129 140/249/129 +f 131/237/130 143/250/130 144/251/130 +f 113/252/131 141/239/131 145/253/131 +f 130/254/132 133/240/132 146/255/132 +f 135/241/133 147/256/133 148/257/133 +f 134/244/134 137/243/134 149/258/134 +f 139/245/135 150/259/135 151/260/135 +f 127/247/136 152/261/136 153/262/136 +f 142/248/137 144/263/137 154/264/137 +f 113/196/138 155/265/138 129/266/138 +f 130/226/139 156/267/139 143/268/139 +f 132/228/140 148/269/140 146/270/140 +f 135/231/141 134/230/141 157/271/141 +f 136/232/142 151/272/142 149/273/142 +f 138/234/143 153/274/143 150/275/143 +f 140/236/144 154/276/144 145/277/144 +f 158/278/145 159/279/145 148/257/145 +f 159/280/146 160/281/146 146/270/146 +f 161/282/147 162/283/147 163/284/147 +f 163/285/148 162/286/148 164/287/148 +f 164/288/149 162/289/149 158/290/149 +f 158/278/150 162/291/150 159/279/150 +f 159/280/151 162/292/151 160/281/151 +f 160/293/152 162/294/152 165/295/152 +f 165/296/153 162/297/153 166/298/153 +f 166/299/154 162/300/154 167/301/154 +f 167/302/155 162/303/155 168/304/155 +f 169/305/156 162/306/156 170/307/156 +f 168/308/157 162/309/157 171/310/157 +f 171/311/158 162/312/158 172/313/158 +f 172/314/159 162/315/159 173/316/159 +f 173/317/160 162/318/160 174/319/160 +f 174/320/161 162/321/161 169/322/161 +f 161/323/162 170/324/162 162/325/162 +f 164/288/163 158/290/163 147/326/163 +f 163/285/164 164/287/164 157/327/164 +f 161/282/165 163/284/165 149/273/165 +f 170/324/166 161/323/166 151/260/166 +f 169/305/167 170/307/167 150/275/167 +f 174/320/168 169/322/168 153/262/168 +f 173/317/169 174/319/169 152/328/169 +f 172/314/170 173/316/170 129/266/170 +f 145/253/171 171/311/171 172/313/171 +f 154/276/172 168/308/172 171/310/172 +f 167/302/173 168/304/173 154/264/173 +f 166/299/174 167/301/174 144/251/174 +f 165/296/175 166/298/175 143/268/175 +f 146/255/176 160/293/176 165/295/176 +f 30/329/1 1/1/1 3/3/1 +f 3/330/2 2/4/2 5/6/2 +f 5/331/3 4/7/3 7/9/3 +f 7/332/4 6/10/4 9/12/4 +f 9/333/5 8/13/5 11/15/5 +f 11/334/6 10/16/6 13/18/6 +f 13/335/7 12/19/7 15/21/7 +f 15/336/8 14/22/8 17/24/8 +f 175/337/9 17/25/9 18/27/9 +f 175/338/10 18/28/10 20/30/10 +f 22/339/11 20/31/11 21/33/11 +f 176/340/12 22/34/12 23/36/12 +f 176/341/13 23/37/13 25/39/13 +f 31/342/14 25/40/14 26/42/14 +f 8/11/15 6/10/15 28/44/15 +f 177/343/16 29/45/16 30/47/16 +f 177/344/17 31/48/17 29/50/17 +f 44/67/18 32/51/18 34/53/18 +f 29/50/19 26/49/19 36/55/19 +f 32/94/20 14/20/20 37/56/20 +f 45/345/21 19/29/21 38/57/21 +f 47/87/22 4/5/22 39/58/22 +f 24/38/23 23/37/23 41/60/23 +f 10/14/24 8/13/24 42/62/24 +f 1/46/25 29/45/25 43/64/25 +f 2/2/26 1/1/26 39/66/26 +f 16/23/27 14/22/27 44/67/27 +f 21/33/28 19/32/28 46/69/28 +f 6/8/29 4/7/29 27/71/29 +f 26/42/30 24/41/30 35/73/30 +f 37/346/31 12/17/31 42/74/31 +f 18/27/32 16/26/32 38/76/32 +f 40/347/33 23/36/33 46/77/33 +f 61/93/34 34/78/34 49/80/34 +f 37/346/35 42/74/35 51/82/35 +f 28/44/36 27/43/36 53/84/36 +f 36/55/37 35/54/37 55/86/37 +f 63/129/38 47/87/38 56/88/38 +f 41/60/39 40/59/39 58/90/39 +f 46/69/40 45/68/40 60/92/40 +f 38/76/41 44/75/41 61/93/41 +f 33/112/42 32/94/42 51/95/42 +f 42/62/43 28/61/43 50/97/43 +f 43/64/44 36/63/44 62/99/44 +f 52/117/45 27/71/45 63/100/45 +f 35/73/46 41/72/46 54/102/46 +f 39/66/47 43/65/47 56/104/47 +f 40/347/48 46/77/48 57/106/48 +f 45/345/49 38/57/49 59/108/49 +f 80/348/50 64/109/50 65/111/50 +f 75/349/51 33/112/51 66/113/51 +f 50/97/52 53/96/52 68/115/52 +f 72/156/53 62/99/53 69/116/53 +f 76/350/54 52/117/54 70/118/54 +f 77/351/55 54/102/55 71/119/55 +f 56/104/56 62/103/56 73/121/56 +f 78/164/57 57/106/57 74/122/57 +f 64/109/58 59/108/58 49/110/58 +f 34/53/59 33/52/59 48/124/59 +f 66/352/60 51/82/60 68/125/60 +f 67/353/61 53/84/61 76/126/61 +f 55/86/62 54/85/62 69/128/62 +f 70/146/63 63/129/63 73/130/63 +f 58/90/64 57/89/64 71/132/64 +f 60/92/65 59/91/65 74/134/65 +f 108/354/66 79/135/66 81/137/66 +f 48/124/67 75/123/67 83/139/67 +f 66/352/68 68/125/68 85/141/68 +f 67/353/69 76/126/69 87/143/69 +f 69/128/70 77/127/70 89/145/70 +f 93/355/71 70/146/71 90/147/71 +f 71/132/72 78/131/72 92/149/72 +f 79/135/73 74/134/73 80/136/73 +f 49/80/74 48/79/74 65/151/74 +f 75/349/75 66/113/75 82/153/75 +f 68/115/76 67/114/76 84/155/76 +f 94/356/77 72/156/77 89/157/77 +f 76/350/78 70/118/78 86/159/78 +f 77/351/79 71/119/79 88/161/79 +f 73/121/80 72/120/80 90/163/80 +f 91/357/81 78/164/81 79/165/81 +f 112/238/82 95/166/82 97/168/82 +f 65/151/83 83/150/83 99/170/83 +f 82/153/84 85/152/84 101/172/84 +f 84/155/85 87/154/85 103/174/85 +f 94/356/86 89/157/86 96/176/86 +f 86/159/87 93/158/87 106/178/87 +f 110/358/88 88/161/88 107/179/88 +f 90/163/89 94/162/89 95/166/89 +f 91/357/90 79/165/90 109/181/90 +f 80/348/91 65/111/91 81/183/91 +f 83/139/92 82/138/92 98/185/92 +f 100/359/93 85/141/93 103/186/93 +f 87/143/94 86/142/94 102/188/94 +f 89/145/95 88/144/95 104/190/95 +f 93/355/96 90/147/96 105/192/96 +f 107/360/97 92/149/97 109/193/97 +f 128/361/98 111/194/98 113/196/98 +f 109/181/99 108/180/99 115/198/99 +f 81/183/100 99/182/100 117/200/100 +f 98/185/101 101/184/101 119/202/101 +f 100/359/102 103/186/102 121/204/102 +f 102/188/103 106/187/103 123/206/103 +f 104/190/104 110/189/104 125/208/104 +f 105/192/105 95/191/105 111/194/105 +f 107/360/106 109/193/106 126/210/106 +f 108/354/107 81/137/107 114/212/107 +f 99/170/108 98/169/108 116/214/108 +f 118/362/109 101/172/109 121/215/109 +f 103/174/110 102/173/110 120/217/110 +f 96/176/111 104/175/111 97/219/111 +f 122/363/112 106/178/112 111/220/112 +f 110/358/113 107/179/113 124/222/113 +f 152/328/114 127/223/114 129/225/114 +f 126/210/115 115/209/115 131/227/115 +f 114/212/116 117/211/116 133/229/116 +f 116/214/117 119/213/117 135/231/117 +f 118/362/118 121/215/118 137/233/118 +f 120/217/119 123/216/119 139/235/119 +f 141/364/120 97/219/120 140/236/120 +f 122/363/121 111/220/121 127/223/121 +f 142/365/122 124/222/122 131/237/122 +f 113/252/123 112/238/123 141/239/123 +f 130/254/124 115/198/124 133/240/124 +f 117/200/125 116/199/125 132/242/125 +f 119/202/126 118/201/126 134/244/126 +f 121/204/127 120/203/127 136/246/127 +f 138/366/128 123/206/128 127/247/128 +f 125/208/129 124/207/129 140/249/129 +f 142/365/130 131/237/130 144/251/130 +f 155/367/131 113/252/131 145/253/131 +f 156/368/132 130/254/132 146/255/132 +f 132/242/133 135/241/133 148/257/133 +f 157/327/134 134/244/134 149/258/134 +f 136/246/135 139/245/135 151/260/135 +f 138/366/136 127/247/136 153/262/136 +f 140/249/137 142/248/137 154/264/137 +f 128/361/138 113/196/138 129/266/138 +f 131/227/139 130/226/139 143/268/139 +f 133/229/140 132/228/140 146/270/140 +f 147/326/141 135/231/141 157/271/141 +f 137/233/142 136/232/142 149/273/142 +f 139/235/143 138/234/143 150/275/143 +f 141/364/144 140/236/144 145/277/144 +f 147/256/145 158/278/145 148/257/145 +f 148/269/146 159/280/146 146/270/146 +f 157/271/163 164/288/163 147/326/163 +f 149/258/164 163/285/164 157/327/164 +f 151/272/165 161/282/165 149/273/165 +f 150/259/166 170/324/166 151/260/166 +f 153/274/167 169/305/167 150/275/167 +f 152/261/168 174/320/168 153/262/168 +f 129/225/169 173/317/169 152/328/169 +f 155/265/170 172/314/170 129/266/170 +f 155/367/171 145/253/171 172/313/171 +f 145/277/172 154/276/172 171/310/172 +f 144/263/173 167/302/173 154/264/173 +f 143/250/174 166/299/174 144/251/174 +f 156/267/175 165/296/175 143/268/175 +f 156/368/176 146/255/176 165/295/176 diff --git a/assets/hbm/models/rad_gen_body.obj b/assets/hbm/models/rad_gen_body.obj new file mode 100644 index 000000000..85efacbe5 --- /dev/null +++ b/assets/hbm/models/rad_gen_body.obj @@ -0,0 +1,697 @@ +# Blender v2.76 (sub 0) OBJ File: 'rad_gen_body.blend' +# www.blender.org +o Cube +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 1.500000 +v -1.500000 0.000000 -2.500000 +v 1.500000 3.000000 -2.500000 +v 1.499999 3.000000 1.500000 +v -1.500000 3.000000 1.500000 +v -1.500000 3.000000 -2.500000 +v 1.500000 0.000000 -2.500000 +v -1.500000 0.000000 -2.500000 +v 1.500000 1.500000 -2.500000 +v -1.500000 1.500000 -2.500000 +v 1.500000 0.000000 -4.500000 +v -1.500000 0.000000 -4.500000 +v 1.500000 1.500000 -4.500000 +v -1.500000 1.500000 -4.500000 +v -1.500000 2.500000 -2.500000 +v -1.500000 2.500000 -4.500000 +v -1.000000 3.000000 -2.500000 +v -1.000000 3.000000 -4.500000 +v 0.000000 2.500000 -2.500000 +v 0.000000 2.500000 -4.500000 +v -0.500000 3.000000 -2.500000 +v -0.500000 3.000000 -4.500000 +v 0.000000 1.500000 -2.500000 +v 0.000000 1.500000 -4.500000 +v 0.156250 0.343750 -4.500000 +v -0.156250 0.343750 -4.500000 +v 0.156250 0.656250 -4.500000 +v -0.156250 0.656250 -4.500000 +v -0.375000 0.875000 -4.500000 +v 0.375000 0.875000 -4.500000 +v -0.375000 0.125000 -4.500000 +v 0.375000 0.125000 -4.500000 +v -0.375000 0.875000 -4.375000 +v 0.375000 0.875000 -4.375000 +v -0.375000 0.125000 -4.375000 +v 0.375000 0.125000 -4.375000 +v 0.156250 0.343750 -4.375000 +v -0.156250 0.343750 -4.375000 +v 0.156250 0.656250 -4.375000 +v -0.156250 0.656250 -4.375000 +v 0.750000 2.661612 -3.088388 +v 0.750000 2.750000 -3.125000 +v 1.000000 1.500000 -3.125000 +v 1.000000 2.500000 -3.125000 +v 1.088388 1.500000 -3.088388 +v 1.088388 2.500000 -3.088388 +v 1.125000 1.500000 -3.000000 +v 1.125000 2.500000 -3.000000 +v 1.088388 1.500000 -2.911612 +v 1.088388 2.500000 -2.911612 +v 1.000000 1.500000 -2.875000 +v 1.000000 2.500000 -2.875000 +v 0.911612 1.500000 -2.911612 +v 0.911612 2.500000 -2.911612 +v 0.875000 1.500000 -3.000000 +v 0.875000 2.500000 -3.000000 +v 0.911612 1.500000 -3.088388 +v 0.911612 2.500000 -3.088388 +v 0.750000 2.625000 -3.000000 +v 0.750000 2.661612 -2.911612 +v 0.750000 2.750000 -2.875000 +v 0.750000 2.838388 -2.911612 +v 0.750000 2.875000 -3.000000 +v 0.750000 2.838388 -3.088388 +v -0.400000 2.750000 -3.125000 +v -0.400000 2.838388 -3.088388 +v -0.400000 2.875000 -3.000000 +v -0.400000 2.838388 -2.911612 +v -0.400000 2.750000 -2.875000 +v -0.400000 2.661612 -2.911612 +v -0.400000 2.625000 -3.000000 +v -0.400000 2.661612 -3.088388 +v 0.750000 2.661612 -3.588388 +v 0.750000 2.750000 -3.625000 +v 1.000000 1.500000 -3.625000 +v 1.000000 2.500000 -3.625000 +v 1.088388 1.500000 -3.588388 +v 1.088388 2.500000 -3.588388 +v 1.125000 1.500000 -3.500000 +v 1.125000 2.500000 -3.500000 +v 1.088388 1.500000 -3.411612 +v 1.088388 2.500000 -3.411612 +v 1.000000 1.500000 -3.375000 +v 1.000000 2.500000 -3.375000 +v 0.911612 1.500000 -3.411612 +v 0.911612 2.500000 -3.411612 +v 0.875000 1.500000 -3.500000 +v 0.875000 2.500000 -3.500000 +v 0.911612 1.500000 -3.588388 +v 0.911612 2.500000 -3.588388 +v 0.750000 2.625000 -3.500000 +v 0.750000 2.661612 -3.411612 +v 0.750000 2.750000 -3.375000 +v 0.750000 2.838388 -3.411612 +v 0.750000 2.875000 -3.500000 +v 0.750000 2.838388 -3.588388 +v -0.400000 2.750000 -3.625000 +v -0.400000 2.838388 -3.588388 +v -0.400000 2.875000 -3.500000 +v -0.400000 2.838388 -3.411612 +v -0.400000 2.750000 -3.375000 +v -0.400000 2.661612 -3.411612 +v -0.400000 2.625000 -3.500000 +v -0.400000 2.661612 -3.588388 +v 0.750000 2.661612 -4.088388 +v 0.750000 2.750000 -4.125000 +v 1.000000 1.500000 -4.125000 +v 1.000000 2.500000 -4.125000 +v 1.088388 1.500000 -4.088388 +v 1.088388 2.500000 -4.088388 +v 1.125000 1.500000 -4.000000 +v 1.125000 2.500000 -4.000000 +v 1.088388 1.500000 -3.911612 +v 1.088388 2.500000 -3.911612 +v 1.000000 1.500000 -3.875000 +v 1.000000 2.500000 -3.875000 +v 0.911612 1.500000 -3.911612 +v 0.911612 2.500000 -3.911612 +v 0.875000 1.500000 -4.000000 +v 0.875000 2.500000 -4.000000 +v 0.911612 1.500000 -4.088388 +v 0.911612 2.500000 -4.088388 +v 0.750000 2.625000 -4.000000 +v 0.750000 2.661612 -3.911612 +v 0.750000 2.750000 -3.875000 +v 0.750000 2.838388 -3.911612 +v 0.750000 2.875000 -4.000000 +v 0.750000 2.838388 -4.088388 +v -0.400000 2.750000 -4.125000 +v -0.400000 2.838388 -4.088388 +v -0.400000 2.875000 -4.000000 +v -0.400000 2.838388 -3.911612 +v -0.400000 2.750000 -3.875000 +v -0.400000 2.661612 -3.911612 +v -0.400000 2.625000 -4.000000 +v -0.400000 2.661612 -4.088388 +v 1.500000 2.500000 -0.250000 +v 1.500000 0.500000 -0.250000 +v 1.500000 2.500000 -0.750000 +v 1.500000 0.500000 -0.750000 +v 1.500000 2.500000 0.750000 +v 1.500000 0.500000 0.750000 +v 1.500000 2.500000 0.250000 +v 1.500000 0.500000 0.250000 +v 1.500000 2.500000 -1.250000 +v 1.500000 0.500000 -1.250000 +v 1.500000 2.500000 -1.750000 +v 1.500000 0.500000 -1.750000 +v -1.500000 0.500000 -0.250000 +v -1.500000 2.500000 -0.250000 +v -1.500000 0.500000 -0.750000 +v -1.500000 2.500000 -0.750000 +v -1.500000 0.500000 0.750000 +v -1.500000 2.500000 0.750000 +v -1.500000 0.500000 0.250000 +v -1.500000 2.500000 0.250000 +v -1.500000 0.500000 -1.250000 +v -1.500000 2.500000 -1.250000 +v -1.500000 0.500000 -1.750000 +v -1.500000 2.500000 -1.750000 +v -1.250000 0.500000 -0.250000 +v -1.250000 2.500000 -0.250000 +v -1.250000 2.500000 -0.750000 +v -1.250000 0.500000 -0.750000 +v 1.250000 2.500000 -0.250000 +v 1.250000 0.500000 -0.250000 +v 1.250000 0.500000 -0.750000 +v 1.250000 2.500000 -0.750000 +v 1.250000 2.500000 0.750000 +v 1.250000 0.500000 0.750000 +v 1.250000 0.500000 0.250000 +v 1.250000 2.500000 0.250000 +v 1.250000 2.500000 -1.250000 +v 1.250000 0.500000 -1.250000 +v 1.250000 0.500000 -1.750000 +v 1.250000 2.500000 -1.750000 +v -1.250000 0.500000 0.750000 +v -1.250000 2.500000 0.750000 +v -1.250000 2.500000 0.250000 +v -1.250000 0.500000 0.250000 +v -1.250000 0.500000 -1.250000 +v -1.250000 2.500000 -1.250000 +v -1.250000 2.500000 -1.750000 +v -1.250000 0.500000 -1.750000 +v 0.000000 2.500000 1.500000 +v -0.382683 2.423880 1.500000 +v -0.707107 2.207107 1.500000 +v -0.923880 1.882683 1.500000 +v -1.000000 1.500000 1.500000 +v -0.923880 1.117316 1.500000 +v -0.707107 0.792893 1.500000 +v -0.382683 0.576120 1.500000 +v -0.000000 0.500000 1.500000 +v 0.382683 0.576120 1.500000 +v 0.707107 0.792893 1.500000 +v 0.923880 1.117316 1.500000 +v 1.000000 1.500000 1.500000 +v 0.923879 1.882684 1.500000 +v 0.707107 2.207107 1.500000 +v 0.382683 2.423880 1.500000 +v -0.382683 2.423880 1.000000 +v 0.000000 2.500000 1.000000 +v -0.707107 2.207107 1.000000 +v -0.923880 1.882683 1.000000 +v -1.000000 1.500000 1.000000 +v -0.923880 1.117316 1.000000 +v -0.707107 0.792893 1.000000 +v -0.382683 0.576120 1.000000 +v -0.000000 0.500000 1.000000 +v 0.382683 0.576120 1.000000 +v 0.707107 0.792893 1.000000 +v 0.923880 1.117316 1.000000 +v 1.000000 1.500000 1.000000 +v 0.923879 1.882684 1.000000 +v 0.707107 2.207107 1.000000 +v 0.382683 2.423880 1.000000 +v 0.000000 1.650000 1.000000 +v -0.106066 1.606066 1.000000 +v -0.150000 1.500000 1.000000 +v -0.106066 1.393934 1.000000 +v 0.000000 1.350000 1.000000 +v 0.106066 1.393934 1.000000 +v 0.150000 1.500000 1.000000 +v 0.106066 1.606066 1.000000 +v -0.106066 1.606066 1.500000 +v 0.000000 1.650000 1.500000 +v -0.150000 1.500000 1.500000 +v -0.106066 1.393934 1.500000 +v 0.000000 1.350000 1.500000 +v 0.106066 1.393934 1.500000 +v 0.150000 1.500000 1.500000 +v 0.106066 1.606066 1.500000 +vn 0.000000 1.000000 0.000000 +vn 0.195100 -0.980800 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.707100 0.707100 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.382700 0.000000 -0.923900 +vn 0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn -0.382700 0.000000 0.923900 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn -0.678600 -0.678600 -0.281100 +vn -0.357400 -0.357400 -0.862900 +vn 0.357400 0.357400 -0.862900 +vn 0.678600 0.678600 -0.281100 +vn -0.678600 -0.678600 0.281100 +vn -0.357400 -0.357400 0.862900 +vn 0.357400 0.357400 0.862900 +vn 0.678600 0.678600 0.281100 +vn 0.000000 -0.382700 0.923900 +vn 0.000000 0.923900 -0.382700 +vn 0.000000 0.382700 0.923900 +vn 0.000000 0.923900 0.382700 +vn 0.000000 -0.382700 -0.923900 +vn 0.000000 -0.923900 -0.382700 +vn 0.000000 0.382700 -0.923900 +vn 0.000000 -0.923900 0.382700 +vn 0.000000 0.000000 1.000000 +vn -0.195100 -0.980800 0.000000 +vn -0.195100 0.980800 0.000000 +vn 0.555600 -0.831500 0.000000 +vn -0.555600 0.831500 0.000000 +vn 0.831500 -0.555600 0.000000 +vn -0.831500 0.555600 0.000000 +vn 0.980800 -0.195100 0.000000 +vn -0.980800 0.195100 0.000000 +vn 0.980800 0.195100 0.000000 +vn -0.980800 -0.195100 0.000000 +vn 0.831500 0.555600 0.000000 +vn -0.831500 -0.555600 0.000000 +vn 0.555600 0.831500 0.000000 +vn -0.555600 -0.831500 0.000000 +vn 0.195100 0.980800 0.000000 +vn -0.382700 0.923900 0.000000 +vn 0.382700 0.923900 0.000000 +vn 0.923900 -0.382700 0.000000 +vn -0.382700 -0.923900 0.000000 +vn -0.923900 0.382700 0.000000 +vn 0.923900 0.382700 0.000000 +vn 0.382700 -0.923900 0.000000 +vn -0.923900 -0.382700 0.000000 +s off +f 22//1 6//1 5//1 +f 187//2 202//2 203//2 +f 24//3 25//3 21//3 +f 11//4 15//4 13//4 +f 16//5 7//5 18//5 +f 8//3 12//3 14//3 +f 16//6 18//6 19//6 +f 15//4 11//4 16//4 +f 18//1 22//1 23//1 +f 23//7 22//7 20//7 +f 12//8 8//8 9//8 +f 24//1 10//1 14//1 +f 144//3 145//3 139//3 +f 2//8 9//8 8//8 +f 21//5 25//5 17//5 +f 22//5 4//5 20//5 +f 20//5 4//5 10//5 +f 27//5 29//5 28//5 +f 35//8 34//8 30//8 +f 34//3 36//3 32//3 +f 36//1 37//1 33//1 +f 37//4 35//4 31//4 +f 28//3 40//3 38//3 +f 26//8 38//8 39//8 +f 27//4 39//4 41//4 +f 29//1 41//1 40//1 +f 40//5 41//5 34//5 +f 41//5 39//5 36//5 +f 39//5 38//5 37//5 +f 38//5 40//5 35//5 +f 30//5 15//5 25//5 +f 13//5 32//5 33//5 +f 12//5 33//5 31//5 +f 30//5 32//5 13//5 +f 45//9 47//9 46//9 +f 47//10 49//10 48//10 +f 49//11 51//11 50//11 +f 51//12 53//12 52//12 +f 53//13 55//13 54//13 +f 55//14 57//14 56//14 +f 59//15 45//15 44//15 +f 57//16 59//16 58//16 +f 42//17 59//17 57//17 +f 42//18 43//18 45//18 +f 43//19 65//19 47//19 +f 64//20 49//20 47//20 +f 61//21 60//21 57//21 +f 61//22 55//22 53//22 +f 62//23 53//23 51//23 +f 63//24 51//24 49//24 +f 62//25 70//25 71//25 +f 77//9 79//9 78//9 +f 65//26 67//26 68//26 +f 63//27 69//27 70//27 +f 64//28 68//28 69//28 +f 42//29 73//29 66//29 +f 60//30 72//30 73//30 +f 43//31 66//31 67//31 +f 61//32 71//32 72//32 +f 79//10 81//10 80//10 +f 81//11 83//11 82//11 +f 83//12 85//12 84//12 +f 85//13 87//13 86//13 +f 87//14 89//14 88//14 +f 91//15 77//15 76//15 +f 89//16 91//16 90//16 +f 74//17 91//17 89//17 +f 74//18 75//18 77//18 +f 75//19 97//19 79//19 +f 96//20 81//20 79//20 +f 93//21 92//21 89//21 +f 93//22 87//22 85//22 +f 94//23 85//23 83//23 +f 95//24 83//24 81//24 +f 94//25 102//25 103//25 +f 97//26 99//26 100//26 +f 95//27 101//27 102//27 +f 96//28 100//28 101//28 +f 74//29 105//29 98//29 +f 92//30 104//30 105//30 +f 75//31 98//31 99//31 +f 93//32 103//32 104//32 +f 109//9 111//9 110//9 +f 111//10 113//10 112//10 +f 113//11 115//11 114//11 +f 115//12 117//12 116//12 +f 117//13 119//13 118//13 +f 119//14 121//14 120//14 +f 123//15 109//15 108//15 +f 121//16 123//16 122//16 +f 106//17 123//17 121//17 +f 106//18 107//18 109//18 +f 107//19 129//19 111//19 +f 128//20 113//20 111//20 +f 125//21 124//21 121//21 +f 125//22 119//22 117//22 +f 126//23 117//23 115//23 +f 127//24 115//24 113//24 +f 126//25 134//25 135//25 +f 129//26 131//26 132//26 +f 127//27 133//27 134//27 +f 128//28 132//28 133//28 +f 106//29 137//29 130//29 +f 124//30 136//30 137//30 +f 107//31 130//31 131//31 +f 125//32 135//32 136//32 +f 147//3 146//3 140//3 +f 10//3 148//3 149//3 +f 140//3 146//3 4//3 +f 139//3 145//3 1//3 +f 143//3 142//3 5//3 +f 159//4 158//4 152//4 +f 156//4 157//4 151//4 +f 155//4 154//4 2//4 +f 151//4 157//4 6//4 +f 161//4 16//4 11//4 +f 152//4 158//4 3//4 +f 163//4 164//4 165//4 +f 163//5 162//5 150//5 +f 164//8 163//8 151//8 +f 165//33 164//33 153//33 +f 162//1 165//1 152//1 +f 167//3 168//3 169//3 +f 167//5 166//5 138//5 +f 168//1 167//1 139//1 +f 169//33 168//33 141//33 +f 166//8 169//8 140//8 +f 171//3 172//3 173//3 +f 171//5 170//5 142//5 +f 172//1 171//1 143//1 +f 173//33 172//33 145//33 +f 170//8 173//8 144//8 +f 175//3 176//3 177//3 +f 175//5 174//5 146//5 +f 176//1 175//1 147//1 +f 177//33 176//33 149//33 +f 174//8 177//8 148//8 +f 179//4 180//4 181//4 +f 179//5 178//5 154//5 +f 180//8 179//8 155//8 +f 181//33 180//33 157//33 +f 178//1 181//1 156//1 +f 183//4 184//4 185//4 +f 183//5 182//5 158//5 +f 184//8 183//8 159//8 +f 185//33 184//33 161//33 +f 182//1 185//1 160//1 +f 6//33 186//33 5//33 +f 5//33 198//33 1//33 +f 1//33 194//33 2//33 +f 2//33 190//33 6//33 +f 212//33 214//33 203//33 +f 186//34 203//34 217//34 +f 195//35 211//35 210//35 +f 187//36 188//36 204//36 +f 196//37 212//37 211//37 +f 189//38 205//38 204//38 +f 197//39 213//39 212//39 +f 190//40 206//40 205//40 +f 198//41 214//41 213//41 +f 191//42 207//42 206//42 +f 199//43 215//43 214//43 +f 192//44 208//44 207//44 +f 200//45 216//45 215//45 +f 193//46 209//46 208//46 +f 201//47 217//47 216//47 +f 194//48 210//48 209//48 +f 230//33 232//33 227//33 +f 219//49 226//49 227//49 +f 218//50 227//50 233//50 +f 224//51 232//51 231//51 +f 222//52 230//52 229//52 +f 220//53 228//53 226//53 +f 225//54 233//54 232//54 +f 223//55 231//55 230//55 +f 221//56 229//56 228//56 +f 5//1 4//1 22//1 +f 22//1 18//1 6//1 +f 7//1 6//1 18//1 +f 186//2 187//2 203//2 +f 20//3 24//3 21//3 +f 9//4 11//4 13//4 +f 10//3 8//3 14//3 +f 17//6 16//6 19//6 +f 17//4 15//4 16//4 +f 19//1 18//1 23//1 +f 21//7 23//7 20//7 +f 13//8 12//8 9//8 +f 25//1 24//1 14//1 +f 138//3 144//3 139//3 +f 8//8 1//8 2//8 +f 2//33 3//33 9//33 +f 17//5 19//5 23//5 +f 23//5 21//5 17//5 +f 25//5 15//5 17//5 +f 24//5 20//5 10//5 +f 26//5 27//5 28//5 +f 31//8 35//8 30//8 +f 30//3 34//3 32//3 +f 32//1 36//1 33//1 +f 33//4 37//4 31//4 +f 26//3 28//3 38//3 +f 27//8 26//8 39//8 +f 29//4 27//4 41//4 +f 28//1 29//1 40//1 +f 35//5 40//5 34//5 +f 34//5 41//5 36//5 +f 36//5 39//5 37//5 +f 37//5 38//5 35//5 +f 25//5 14//5 31//5 +f 31//5 30//5 25//5 +f 12//5 13//5 33//5 +f 14//5 12//5 31//5 +f 15//5 30//5 13//5 +f 44//9 45//9 46//9 +f 46//10 47//10 48//10 +f 48//11 49//11 50//11 +f 50//12 51//12 52//12 +f 52//13 53//13 54//13 +f 54//14 55//14 56//14 +f 58//15 59//15 44//15 +f 56//16 57//16 58//16 +f 60//17 42//17 57//17 +f 59//18 42//18 45//18 +f 45//19 43//19 47//19 +f 65//20 64//20 47//20 +f 55//21 61//21 57//21 +f 62//22 61//22 53//22 +f 63//23 62//23 51//23 +f 64//24 63//24 49//24 +f 61//25 62//25 71//25 +f 76//9 77//9 78//9 +f 64//26 65//26 68//26 +f 62//27 63//27 70//27 +f 63//28 64//28 69//28 +f 43//29 42//29 66//29 +f 42//30 60//30 73//30 +f 65//31 43//31 67//31 +f 60//32 61//32 72//32 +f 78//10 79//10 80//10 +f 80//11 81//11 82//11 +f 82//12 83//12 84//12 +f 84//13 85//13 86//13 +f 86//14 87//14 88//14 +f 90//15 91//15 76//15 +f 88//16 89//16 90//16 +f 92//17 74//17 89//17 +f 91//18 74//18 77//18 +f 77//19 75//19 79//19 +f 97//20 96//20 79//20 +f 87//21 93//21 89//21 +f 94//22 93//22 85//22 +f 95//23 94//23 83//23 +f 96//24 95//24 81//24 +f 93//25 94//25 103//25 +f 96//26 97//26 100//26 +f 94//27 95//27 102//27 +f 95//28 96//28 101//28 +f 75//29 74//29 98//29 +f 74//30 92//30 105//30 +f 97//31 75//31 99//31 +f 92//32 93//32 104//32 +f 108//9 109//9 110//9 +f 110//10 111//10 112//10 +f 112//11 113//11 114//11 +f 114//12 115//12 116//12 +f 116//13 117//13 118//13 +f 118//14 119//14 120//14 +f 122//15 123//15 108//15 +f 120//16 121//16 122//16 +f 124//17 106//17 121//17 +f 123//18 106//18 109//18 +f 109//19 107//19 111//19 +f 129//20 128//20 111//20 +f 119//21 125//21 121//21 +f 126//22 125//22 117//22 +f 127//23 126//23 115//23 +f 128//24 127//24 113//24 +f 125//25 126//25 135//25 +f 128//26 129//26 132//26 +f 126//27 127//27 134//27 +f 127//28 128//28 133//28 +f 107//29 106//29 130//29 +f 106//30 124//30 137//30 +f 129//31 107//31 131//31 +f 124//32 125//32 136//32 +f 141//3 147//3 140//3 +f 149//3 8//3 10//3 +f 10//3 4//3 148//3 +f 4//3 5//3 140//3 +f 144//3 138//3 5//3 +f 5//3 142//3 144//3 +f 146//3 148//3 4//3 +f 138//3 140//3 5//3 +f 1//3 8//3 141//3 +f 149//3 147//3 8//3 +f 141//3 139//3 1//3 +f 145//3 143//3 1//3 +f 8//3 147//3 141//3 +f 1//3 143//3 5//3 +f 153//4 159//4 152//4 +f 150//4 156//4 151//4 +f 6//4 155//4 2//4 +f 6//4 7//4 153//4 +f 161//4 159//4 7//4 +f 153//4 151//4 6//4 +f 157//4 155//4 6//4 +f 7//4 159//4 153//4 +f 11//4 9//4 160//4 +f 160//4 161//4 11//4 +f 7//4 16//4 161//4 +f 3//4 2//4 150//4 +f 154//4 156//4 2//4 +f 150//4 152//4 3//4 +f 160//33 9//33 3//33 +f 156//4 150//4 2//4 +f 158//4 160//4 3//4 +f 162//4 163//4 165//4 +f 151//5 163//5 150//5 +f 153//8 164//8 151//8 +f 152//33 165//33 153//33 +f 150//1 162//1 152//1 +f 166//3 167//3 169//3 +f 139//5 167//5 138//5 +f 141//1 168//1 139//1 +f 140//33 169//33 141//33 +f 138//8 166//8 140//8 +f 170//3 171//3 173//3 +f 143//5 171//5 142//5 +f 145//1 172//1 143//1 +f 144//33 173//33 145//33 +f 142//8 170//8 144//8 +f 174//3 175//3 177//3 +f 147//5 175//5 146//5 +f 149//1 176//1 147//1 +f 148//33 177//33 149//33 +f 146//8 174//8 148//8 +f 178//4 179//4 181//4 +f 155//5 179//5 154//5 +f 157//8 180//8 155//8 +f 156//33 181//33 157//33 +f 154//1 178//1 156//1 +f 182//4 183//4 185//4 +f 159//5 183//5 158//5 +f 161//8 184//8 159//8 +f 160//33 185//33 161//33 +f 158//1 182//1 160//1 +f 201//33 200//33 5//33 +f 6//33 188//33 187//33 +f 201//33 5//33 186//33 +f 6//33 187//33 186//33 +f 197//33 196//33 1//33 +f 5//33 200//33 199//33 +f 197//33 1//33 198//33 +f 5//33 199//33 198//33 +f 193//33 192//33 2//33 +f 1//33 196//33 195//33 +f 193//33 2//33 194//33 +f 1//33 195//33 194//33 +f 189//33 188//33 6//33 +f 2//33 192//33 191//33 +f 189//33 6//33 190//33 +f 2//33 191//33 190//33 +f 203//33 202//33 204//33 +f 204//33 205//33 203//33 +f 206//33 207//33 210//33 +f 208//33 209//33 210//33 +f 210//33 211//33 212//33 +f 212//33 213//33 214//33 +f 214//33 215//33 216//33 +f 216//33 217//33 214//33 +f 203//33 205//33 206//33 +f 207//33 208//33 210//33 +f 210//33 212//33 203//33 +f 214//33 217//33 203//33 +f 203//33 206//33 210//33 +f 201//34 186//34 217//34 +f 194//35 195//35 210//35 +f 202//36 187//36 204//36 +f 195//37 196//37 211//37 +f 188//38 189//38 204//38 +f 196//39 197//39 212//39 +f 189//40 190//40 205//40 +f 197//41 198//41 213//41 +f 190//42 191//42 206//42 +f 198//43 199//43 214//43 +f 191//44 192//44 207//44 +f 199//45 200//45 215//45 +f 192//46 193//46 208//46 +f 200//47 201//47 216//47 +f 193//48 194//48 209//48 +f 227//33 226//33 228//33 +f 228//33 229//33 230//33 +f 230//33 231//33 232//33 +f 232//33 233//33 227//33 +f 227//33 228//33 230//33 +f 218//49 219//49 227//49 +f 225//50 218//50 233//50 +f 223//51 224//51 231//51 +f 221//52 222//52 229//52 +f 219//53 220//53 226//53 +f 224//54 225//54 232//54 +f 222//55 223//55 230//55 +f 220//56 221//56 228//56 diff --git a/assets/hbm/models/rad_gen_rotor.obj b/assets/hbm/models/rad_gen_rotor.obj new file mode 100644 index 000000000..d98d8c1ea --- /dev/null +++ b/assets/hbm/models/rad_gen_rotor.obj @@ -0,0 +1,172 @@ +# Blender v2.76 (sub 0) OBJ File: 'rad_gen_rotor.blend' +# www.blender.org +o Plane.021 +v -0.046985 -0.081380 1.434202 +v 0.046985 0.081380 1.365798 +v -0.913010 0.418620 1.434202 +v -0.819041 0.581380 1.365798 +v -0.066446 -0.066446 1.434202 +v 0.066446 0.066446 1.365798 +v -0.773553 0.640660 1.434202 +v -0.640661 0.773553 1.365798 +v -0.090767 -0.024321 1.434202 +v 0.090767 0.024321 1.365798 +v -0.349586 0.941605 1.434202 +v -0.168052 0.990247 1.365798 +v -0.081380 -0.046985 1.434202 +v 0.081380 0.046985 1.365798 +v -0.581380 0.819041 1.434202 +v -0.418620 0.913010 1.365798 +v -0.000000 -0.093969 1.434202 +v 0.000000 0.093969 1.365798 +v -1.000000 -0.093969 1.434202 +v -1.000000 0.093970 1.365798 +v -0.024321 -0.090767 1.434202 +v 0.024321 0.090767 1.365798 +v -0.990247 0.168052 1.434202 +v -0.941605 0.349586 1.365798 +v 0.024321 -0.090767 1.434202 +v -0.024321 0.090767 1.365798 +v -0.941605 -0.349587 1.434202 +v -0.990247 -0.168052 1.365798 +v 0.046985 -0.081380 1.434202 +v -0.046985 0.081380 1.365798 +v -0.819041 -0.581380 1.434202 +v -0.913010 -0.418620 1.365798 +v 0.046985 0.081380 1.434202 +v -0.046985 -0.081380 1.365798 +v 0.913010 -0.418620 1.434202 +v 0.819041 -0.581380 1.365798 +v 0.066446 0.066446 1.434202 +v -0.066446 -0.066446 1.365798 +v 0.773553 -0.640660 1.434202 +v 0.640661 -0.773553 1.365798 +v 0.090767 0.024321 1.434202 +v -0.090767 -0.024321 1.365798 +v 0.349586 -0.941605 1.434202 +v 0.168052 -0.990247 1.365798 +v 0.081380 0.046985 1.434202 +v -0.081380 -0.046985 1.365798 +v 0.581380 -0.819041 1.434202 +v 0.418620 -0.913010 1.365798 +v 0.081380 -0.046985 1.434202 +v -0.081380 0.046985 1.365798 +v -0.418620 -0.913010 1.434202 +v -0.581380 -0.819041 1.365798 +v 0.066446 -0.066446 1.434202 +v -0.066446 0.066446 1.365798 +v -0.640661 -0.773553 1.434202 +v -0.773553 -0.640660 1.365798 +v 0.090767 -0.024321 1.434202 +v -0.090767 0.024321 1.365798 +v -0.168052 -0.990247 1.434202 +v -0.349586 -0.941605 1.365798 +v 0.093969 0.000000 1.434202 +v -0.093969 -0.000000 1.365798 +v 0.093969 -1.000000 1.434202 +v -0.093969 -1.000000 1.365798 +v -0.046985 0.081380 1.434202 +v 0.046985 -0.081380 1.365798 +v 0.819041 0.581380 1.434202 +v 0.913010 0.418620 1.365798 +v -0.024321 0.090767 1.434202 +v 0.024321 -0.090767 1.365798 +v 0.941605 0.349586 1.434202 +v 0.990247 0.168052 1.365798 +v 0.024321 0.090767 1.434202 +v -0.024321 -0.090767 1.365798 +v 0.990247 -0.168052 1.434202 +v 0.941605 -0.349587 1.365798 +v -0.000000 0.093969 1.434202 +v -0.000000 -0.093969 1.365798 +v 1.000000 0.093969 1.434202 +v 1.000000 -0.093969 1.365798 +v -0.081380 0.046985 1.434202 +v 0.081380 -0.046985 1.365798 +v 0.418620 0.913010 1.434202 +v 0.581380 0.819041 1.365798 +v -0.066446 0.066446 1.434202 +v 0.066446 -0.066446 1.365798 +v 0.640661 0.773553 1.434202 +v 0.773553 0.640660 1.365798 +v -0.090767 0.024321 1.434202 +v 0.090767 -0.024321 1.365798 +v 0.168052 0.990247 1.434202 +v 0.349586 0.941605 1.365798 +v -0.093969 -0.000000 1.434202 +v 0.093969 -0.000000 1.365798 +v -0.093969 1.000000 1.434202 +v 0.093969 1.000000 1.365798 +vn 0.171000 0.296200 0.939700 +vn 0.241800 0.241800 0.939700 +vn 0.330400 0.088500 0.939700 +vn 0.296200 0.171000 0.939700 +vn 0.000000 0.342000 0.939700 +vn 0.088500 0.330400 0.939700 +vn -0.088500 0.330400 0.939700 +vn -0.171000 0.296200 0.939700 +vn -0.171000 -0.296200 0.939700 +vn -0.241800 -0.241800 0.939700 +vn -0.330400 -0.088500 0.939700 +vn -0.296200 -0.171000 0.939700 +vn -0.296200 0.171000 0.939700 +vn -0.241800 0.241800 0.939700 +vn -0.330400 0.088500 0.939700 +vn -0.342000 -0.000000 0.939700 +vn 0.171000 -0.296200 0.939700 +vn 0.088500 -0.330400 0.939700 +vn -0.088500 -0.330400 0.939700 +vn 0.000000 -0.342000 0.939700 +vn 0.296200 -0.171000 0.939700 +vn 0.241800 -0.241800 0.939700 +vn 0.330400 -0.088500 0.939700 +vn 0.342000 0.000000 0.939700 +s off +f 2//1 4//1 3//1 +f 6//2 8//2 7//2 +f 10//3 12//3 11//3 +f 13//4 14//4 16//4 +f 17//5 18//5 20//5 +f 21//6 22//6 24//6 +f 25//7 26//7 28//7 +f 30//8 32//8 31//8 +f 34//9 36//9 35//9 +f 38//10 40//10 39//10 +f 42//11 44//11 43//11 +f 46//12 48//12 47//12 +f 50//13 52//13 51//13 +f 54//14 56//14 55//14 +f 58//15 60//15 59//15 +f 62//16 64//16 63//16 +f 66//17 68//17 67//17 +f 70//18 72//18 71//18 +f 74//19 76//19 75//19 +f 78//20 80//20 79//20 +f 82//21 84//21 83//21 +f 86//22 88//22 87//22 +f 90//23 92//23 91//23 +f 94//24 96//24 95//24 +f 1//1 2//1 3//1 +f 5//2 6//2 7//2 +f 9//3 10//3 11//3 +f 15//4 13//4 16//4 +f 19//5 17//5 20//5 +f 23//6 21//6 24//6 +f 27//7 25//7 28//7 +f 29//8 30//8 31//8 +f 33//9 34//9 35//9 +f 37//10 38//10 39//10 +f 41//11 42//11 43//11 +f 45//12 46//12 47//12 +f 49//13 50//13 51//13 +f 53//14 54//14 55//14 +f 57//15 58//15 59//15 +f 61//16 62//16 63//16 +f 65//17 66//17 67//17 +f 69//18 70//18 71//18 +f 73//19 74//19 75//19 +f 77//20 78//20 79//20 +f 81//21 82//21 83//21 +f 85//22 86//22 87//22 +f 89//23 90//23 91//23 +f 93//24 94//24 95//24 diff --git a/assets/hbm/models/turret_spitfire_base.obj b/assets/hbm/models/turret_spitfire_base.obj new file mode 100644 index 000000000..b73bbb176 --- /dev/null +++ b/assets/hbm/models/turret_spitfire_base.obj @@ -0,0 +1,58 @@ +# Blender v2.76 (sub 0) OBJ File: 'turret_spitfire_base.blend' +# www.blender.org +o Cylinder +v 0.000000 0.000000 -1.000000 +v 0.000000 0.125000 -1.000000 +v 0.707107 0.000000 -0.707107 +v 0.707107 0.125000 -0.707107 +v 1.000000 0.000000 0.000000 +v 1.000000 0.125000 0.000000 +v 0.707107 0.000000 0.707107 +v 0.707107 0.125000 0.707107 +v -0.000000 0.000000 1.000000 +v -0.000000 0.125000 1.000000 +v -0.707107 0.000000 0.707107 +v -0.707107 0.125000 0.707107 +v -1.000000 0.000000 -0.000000 +v -1.000000 0.125000 -0.000000 +v -0.707107 0.000000 -0.707107 +v -0.707107 0.125000 -0.707107 +vn 0.382700 0.000000 -0.923900 +vn 0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn -0.382700 0.000000 0.923900 +vn -0.923900 0.000000 0.382700 +vn 0.000000 1.000000 -0.000000 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn 0.000000 -1.000000 0.000000 +s off +f 2//1 4//1 3//1 +f 4//2 6//2 5//2 +f 6//3 8//3 7//3 +f 8//4 10//4 9//4 +f 10//5 12//5 11//5 +f 12//6 14//6 13//6 +f 14//7 8//7 6//7 +f 16//8 2//8 1//8 +f 14//9 16//9 15//9 +f 7//10 11//10 15//10 +f 1//1 2//1 3//1 +f 3//2 4//2 5//2 +f 5//3 6//3 7//3 +f 7//4 8//4 9//4 +f 9//5 10//5 11//5 +f 11//6 12//6 13//6 +f 6//7 4//7 2//7 +f 2//7 16//7 6//7 +f 14//7 12//7 10//7 +f 10//7 8//7 14//7 +f 6//7 16//7 14//7 +f 15//8 16//8 1//8 +f 13//9 14//9 15//9 +f 15//10 1//10 3//10 +f 3//10 5//10 15//10 +f 7//10 9//10 11//10 +f 11//10 13//10 15//10 +f 15//10 5//10 7//10 diff --git a/assets/hbm/models/turret_spitfire_gun.obj b/assets/hbm/models/turret_spitfire_gun.obj new file mode 100644 index 000000000..ec166c9d9 --- /dev/null +++ b/assets/hbm/models/turret_spitfire_gun.obj @@ -0,0 +1,672 @@ +# Blender v2.76 (sub 0) OBJ File: 'turret_spitfire_gun.blend' +# www.blender.org +o Cube.001_Cube.002 +v -0.250000 -0.250000 0.500000 +v -0.250000 0.250000 0.500000 +v -0.250000 -0.250000 -0.500000 +v -0.250000 0.250000 -0.500000 +v 0.250000 -0.250000 0.500000 +v 0.250000 0.250000 0.500000 +v 0.250000 -0.250000 -0.500000 +v 0.250000 0.250000 -0.500000 +v -0.125000 -0.250000 0.375000 +v -0.125000 -0.250000 -0.375000 +v -0.750000 -0.000000 -0.150000 +v 0.750000 0.000000 -0.150000 +v -0.750000 -0.075000 -0.129904 +v 0.750000 -0.075000 -0.129904 +v -0.750000 -0.129904 -0.075000 +v 0.750000 -0.129904 -0.075000 +v -0.750000 -0.150000 0.000000 +v 0.750000 -0.150000 0.000000 +v -0.750000 -0.129904 0.075000 +v 0.750000 -0.129904 0.075000 +v -0.750000 -0.075000 0.129904 +v 0.750000 -0.075000 0.129904 +v -0.750000 -0.000000 0.150000 +v 0.750000 0.000000 0.150000 +v -0.750000 0.075000 0.129904 +v 0.750000 0.075000 0.129904 +v -0.750000 0.129904 0.075000 +v 0.750000 0.129904 0.075000 +v -0.750000 0.150000 0.000000 +v 0.750000 0.150000 0.000000 +v -0.750000 0.129904 -0.075000 +v 0.750000 0.129904 -0.075000 +v -0.750000 0.075000 -0.129904 +v 0.750000 0.075000 -0.129904 +v 0.125000 -0.250000 -0.375000 +v 0.125000 -0.250000 0.375000 +v -0.125000 -0.400000 0.375000 +v 0.125000 -0.400000 0.375000 +v 0.125000 -0.400000 -0.375000 +v -0.125000 -0.400000 -0.375000 +v 0.000000 0.150000 0.500000 +v 0.000000 0.150000 2.000000 +v 0.106066 0.106066 0.500000 +v 0.106066 0.106066 2.000000 +v 0.150000 -0.000000 0.500000 +v 0.150000 0.000000 2.000000 +v 0.106066 -0.106066 0.500000 +v 0.106066 -0.106066 2.000000 +v -0.000000 -0.150000 0.500000 +v -0.000000 -0.150000 2.000000 +v -0.106066 -0.106066 0.500000 +v -0.106066 -0.106066 2.000000 +v -0.150000 -0.000000 0.500000 +v -0.150000 0.000000 2.000000 +v -0.106066 0.106066 0.500000 +v -0.106066 0.106066 2.000000 +v 0.079550 0.079550 2.100000 +v -0.000000 0.112500 2.100000 +v 0.112500 0.000000 2.100000 +v 0.079550 -0.079550 2.100000 +v -0.000000 -0.112500 2.100000 +v -0.079550 -0.079549 2.100000 +v -0.112500 0.000000 2.100000 +v -0.079550 0.079550 2.100000 +v 0.079550 0.079549 3.350000 +v -0.000000 0.112500 3.350000 +v 0.112500 -0.000000 3.350000 +v 0.079550 -0.079550 3.350000 +v -0.000000 -0.112500 3.350000 +v -0.079550 -0.079550 3.350000 +v -0.112500 -0.000000 3.350000 +v -0.079550 0.079549 3.350000 +v 0.059662 0.059662 3.350000 +v -0.000000 0.084375 3.350000 +v 0.084375 -0.000000 3.350000 +v 0.059662 -0.059662 3.350000 +v -0.000000 -0.084375 3.350000 +v -0.059662 -0.059662 3.350000 +v -0.084375 -0.000000 3.350000 +v -0.059662 0.059662 3.350000 +v 0.059662 0.059662 1.350000 +v -0.000000 0.084375 1.350000 +v 0.084375 -0.000000 1.350000 +v 0.059662 -0.059662 1.350000 +v -0.000000 -0.084375 1.350000 +v -0.059662 -0.059662 1.350000 +v -0.084375 -0.000000 1.350000 +v -0.059662 0.059662 1.350000 +v -0.187500 0.187500 -0.600000 +v -0.187500 -0.187500 -0.600000 +v 0.187500 0.187500 -0.600000 +v 0.187500 -0.187500 -0.600000 +v -0.159375 0.000625 -0.600000 +v -0.159375 -0.130625 -0.600000 +v 0.159375 0.000625 -0.600000 +v 0.159375 -0.130625 -0.600000 +v -0.000000 0.150000 -1.100000 +v -0.000000 0.150000 -0.600000 +v 0.079550 0.106066 -1.100000 +v 0.079550 0.106066 -0.600000 +v 0.112500 -0.000000 -1.100000 +v 0.112500 0.000000 -0.600000 +v -0.112500 -0.000000 -1.100000 +v -0.112500 0.000000 -0.600000 +v -0.079550 0.106066 -1.100000 +v -0.079550 0.106066 -0.600000 +v -0.159375 0.000625 -1.200000 +v -0.159375 -0.130625 -1.200000 +v 0.159375 0.000625 -1.200000 +v 0.159375 -0.130625 -1.200000 +v -0.325000 -0.100000 -1.200000 +v -0.325000 -0.050000 -1.200000 +v -0.325000 -0.100000 -1.600000 +v -0.325000 -0.050000 -1.600000 +v -0.075000 -0.100000 -1.200000 +v -0.075000 -0.050000 -1.200000 +v -0.075000 -0.100000 -1.600000 +v -0.075000 -0.050000 -1.600000 +v -0.075000 -0.100000 -1.400000 +v -0.075000 -0.050000 -1.400000 +v 0.075000 -0.100000 -1.200000 +v 0.075000 -0.050000 -1.200000 +v -0.300000 0.187500 0.450000 +v -0.300000 0.187500 -0.450000 +v -0.300000 -0.187500 -0.450000 +v -0.300000 -0.187500 0.450000 +v 0.300000 0.187500 -0.450000 +v 0.300000 0.187500 0.450000 +v 0.300000 -0.187500 0.450000 +v 0.300000 -0.187500 -0.450000 +v -0.375000 -0.250000 3.183013 +v 0.375000 -0.250000 3.183013 +v -0.375000 -0.129410 3.232963 +v 0.375000 -0.129410 3.232963 +v -0.375000 -0.000000 3.250000 +v 0.375000 -0.000000 3.250000 +v -0.375000 0.129409 3.232963 +v 0.375000 0.129409 3.232963 +v -0.375000 0.250000 3.183013 +v 0.375000 0.250000 3.183013 +v 0.072467 -0.072941 3.240397 +v -0.000855 -0.102059 3.236564 +v -0.072664 -0.069579 3.240839 +v -0.073672 0.070604 3.240705 +v -0.001470 0.101724 3.236608 +v 0.067748 0.072911 3.240401 +v -0.102959 -0.000000 3.250000 +v 0.103956 -0.000000 3.250000 +v 0.100000 -0.337500 0.600000 +v 0.144194 -0.355806 0.600000 +v 0.100000 -0.275000 -0.500000 +v 0.100000 -0.275000 0.500000 +v 0.188388 -0.311612 -0.500000 +v 0.188388 -0.311612 0.500000 +v 0.225000 -0.400000 -0.500000 +v 0.225000 -0.400000 0.500000 +v 0.188388 -0.488388 -0.500000 +v 0.188388 -0.488388 0.500000 +v 0.100000 -0.525000 -0.500000 +v 0.100000 -0.525000 0.500000 +v 0.011612 -0.488388 -0.500000 +v 0.011612 -0.488388 0.500000 +v -0.025000 -0.400000 -0.500000 +v -0.025000 -0.400000 0.500000 +v 0.011612 -0.311612 -0.500000 +v 0.011612 -0.311612 0.500000 +v 0.055806 -0.355806 0.600000 +v 0.037500 -0.400000 0.600000 +v 0.055806 -0.444194 0.600000 +v 0.100000 -0.462500 0.600000 +v 0.144194 -0.444194 0.600000 +v 0.162500 -0.400000 0.600000 +v 0.100000 -0.337500 -0.600000 +v 0.144194 -0.355806 -0.600000 +v 0.162500 -0.400000 -0.600000 +v 0.144194 -0.444194 -0.600000 +v 0.100000 -0.462500 -0.600000 +v 0.055806 -0.444194 -0.600000 +v 0.037500 -0.400000 -0.600000 +v 0.055806 -0.355806 -0.600000 +v 0.066291 0.566291 1.000000 +v -0.000000 0.593750 1.000000 +v 0.000000 0.625000 -0.500000 +v 0.000000 0.625000 1.000000 +v 0.088388 0.588388 -0.500000 +v 0.088388 0.588388 1.000000 +v 0.125000 0.500000 -0.500000 +v 0.125000 0.500000 1.000000 +v 0.088388 0.411612 -0.500000 +v 0.088388 0.411612 1.000000 +v -0.000000 0.375000 -0.500000 +v -0.000000 0.375000 1.000000 +v -0.088388 0.411612 -0.500000 +v -0.088388 0.411612 1.000000 +v -0.125000 0.500000 -0.500000 +v -0.125000 0.500000 1.000000 +v -0.088388 0.588388 -0.500000 +v -0.088388 0.588388 1.000000 +v 0.093750 0.500000 1.000000 +v 0.066291 0.433709 1.000000 +v -0.000000 0.406250 1.000000 +v -0.066291 0.433709 1.000000 +v -0.093750 0.500000 1.000000 +v -0.066291 0.566291 1.000000 +v -0.000000 0.593750 0.750000 +v -0.066291 0.566291 0.750000 +v -0.093750 0.500000 0.750000 +v -0.066291 0.433709 0.750000 +v -0.000000 0.406250 0.750000 +v 0.066291 0.433709 0.750000 +v 0.093750 0.500000 0.750000 +v 0.066291 0.566291 0.750000 +v -0.175000 0.250000 -0.125000 +v -0.125000 0.500000 -0.125000 +v -0.175000 0.250000 -0.375000 +v -0.125000 0.500000 -0.375000 +v -0.075000 0.250000 -0.125000 +v -0.025000 0.500000 -0.125000 +v -0.075000 0.250000 -0.375000 +v -0.025000 0.500000 -0.375000 +v -0.175000 0.250000 0.375000 +v -0.125000 0.500000 0.375000 +v -0.175000 0.250000 0.125000 +v -0.125000 0.500000 0.125000 +v -0.075000 0.250000 0.375000 +v -0.025000 0.500000 0.375000 +v -0.075000 0.250000 0.125000 +v -0.025000 0.500000 0.125000 +vn 0.848000 0.000000 -0.530000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -0.258800 -0.965900 +vn 0.000000 -0.707100 -0.707100 +vn 0.000000 -0.965900 -0.258800 +vn 0.000000 -0.965900 0.258800 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.707100 0.707100 +vn 0.000000 -0.258800 0.965900 +vn -1.000000 0.000000 0.000000 +vn -0.000000 0.258800 0.965900 +vn 0.000000 0.707100 0.707100 +vn -0.000000 0.965900 0.258800 +vn -0.000000 0.965900 -0.258800 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.258800 -0.965900 +vn -0.000000 0.707100 -0.707100 +vn 0.382700 0.923900 -0.000000 +vn 0.923900 0.382700 -0.000000 +vn 0.923900 -0.382700 0.000000 +vn 0.382700 -0.923900 0.000000 +vn -0.382700 -0.923900 0.000000 +vn -0.923900 -0.382700 0.000000 +vn 0.361600 -0.873000 0.327400 +vn -0.382700 0.923900 -0.000000 +vn -0.923900 0.382700 -0.000000 +vn -0.873000 0.361600 0.327400 +vn 0.873000 0.361600 0.327400 +vn -0.361600 -0.873000 0.327400 +vn -0.361600 0.873000 0.327400 +vn 0.361600 0.873000 0.327400 +vn 0.873000 -0.361600 0.327400 +vn -0.873000 -0.361600 0.327400 +vn 0.000000 -0.848000 -0.530000 +vn 0.000000 0.848000 -0.530000 +vn -0.848000 0.000000 -0.530000 +vn 0.483500 0.875400 -0.000000 +vn 0.955000 0.296700 -0.000000 +vn -0.483500 0.875400 -0.000000 +vn -0.955000 0.296700 -0.000000 +vn 0.800000 0.000000 -0.600000 +vn -0.780900 0.624700 0.000000 +vn -0.707100 0.000000 -0.707100 +vn -0.780900 -0.624700 0.000000 +vn -0.707100 0.000000 0.707100 +vn 0.780900 0.624700 0.000000 +vn 0.707100 0.000000 0.707100 +vn 0.780900 -0.624700 0.000000 +vn 0.707100 0.000000 -0.707100 +vn 0.000000 -0.382700 0.923900 +vn 0.000000 -0.130500 0.991400 +vn -0.000000 0.130500 0.991400 +vn 0.000000 0.382700 0.923900 +vn 0.800100 -0.331400 -0.500000 +vn -0.331400 -0.800100 0.500000 +vn 0.331400 -0.800100 -0.500000 +vn -0.800100 -0.331400 0.500000 +vn 0.331400 0.800100 -0.500000 +vn -0.800100 0.331400 0.500000 +vn -0.331400 0.800100 0.500000 +vn 0.800100 0.331400 0.500000 +vn 0.331400 0.800100 0.500000 +vn 0.800100 -0.331400 0.500000 +vn 0.800100 0.331400 -0.500000 +vn 0.331400 -0.800100 0.500000 +vn -0.331400 -0.800100 -0.500000 +vn -0.800100 -0.331400 -0.500000 +vn -0.800100 0.331400 -0.500000 +vn -0.331400 0.800100 -0.500000 +vn -0.980600 0.196100 0.000000 +vn 0.980600 -0.196100 0.000000 +s off +f 7//1 92//1 91//1 +f 2//2 1//2 5//2 +f 5//3 36//3 35//3 +f 8//4 4//4 2//4 +f 12//5 14//5 13//5 +f 14//6 16//6 15//6 +f 16//7 18//7 17//7 +f 18//8 20//8 19//8 +f 36//9 38//9 39//9 +f 20//10 22//10 21//10 +f 9//2 37//2 38//2 +f 22//11 24//11 23//11 +f 10//12 40//12 37//12 +f 24//13 26//13 25//13 +f 40//3 39//3 38//3 +f 26//14 28//14 27//14 +f 1//3 9//3 36//3 +f 28//15 30//15 29//15 +f 7//3 35//3 10//3 +f 30//16 32//16 31//16 +f 35//17 39//17 40//17 +f 34//18 12//18 11//18 +f 32//19 34//19 33//19 +f 3//3 10//3 9//3 +f 42//20 44//20 43//20 +f 44//21 46//21 45//21 +f 46//22 48//22 47//22 +f 48//23 50//23 49//23 +f 49//24 50//24 52//24 +f 51//25 52//25 54//25 +f 50//26 48//26 60//26 +f 56//27 42//27 41//27 +f 53//28 54//28 56//28 +f 58//20 66//20 65//20 +f 54//29 63//29 64//29 +f 46//30 44//30 57//30 +f 50//31 61//31 62//31 +f 56//32 64//32 58//32 +f 42//33 58//33 57//33 +f 48//34 46//34 59//34 +f 52//35 62//35 63//35 +f 71//2 79//2 80//2 +f 64//27 72//27 66//27 +f 62//25 70//25 71//25 +f 60//23 68//23 69//23 +f 57//21 65//21 67//21 +f 63//28 71//28 72//28 +f 61//24 69//24 70//24 +f 59//22 67//22 68//22 +f 86//21 87//21 79//21 +f 69//2 77//2 78//2 +f 67//2 75//2 76//2 +f 66//2 74//2 73//2 +f 72//2 80//2 74//2 +f 70//2 78//2 79//2 +f 69//2 68//2 76//2 +f 67//2 65//2 73//2 +f 86//2 85//2 83//2 +f 87//22 88//22 80//22 +f 85//20 86//20 78//20 +f 84//27 85//27 77//27 +f 83//28 84//28 76//28 +f 82//24 81//24 73//24 +f 88//23 82//23 74//23 +f 81//25 83//25 75//25 +f 92//17 96//17 95//17 +f 3//36 90//36 92//36 +f 8//37 91//37 89//37 +f 4//38 89//38 90//38 +f 94//3 108//3 110//3 +f 90//17 89//17 93//17 +f 90//17 94//17 96//17 +f 91//17 95//17 93//17 +f 98//39 100//39 99//39 +f 99//40 100//40 102//40 +f 106//41 98//41 97//41 +f 104//42 106//42 105//42 +f 109//17 110//17 108//17 +f 95//4 109//4 107//4 +f 96//9 110//9 109//9 +f 93//12 107//12 108//12 +f 101//17 103//17 105//17 +f 114//12 113//12 111//12 +f 118//17 117//17 113//17 +f 120//43 122//43 121//43 +f 112//2 111//2 115//2 +f 118//9 120//9 119//9 +f 121//2 122//2 116//2 +f 121//3 115//3 119//3 +f 119//3 115//3 111//3 +f 122//4 120//4 116//4 +f 120//4 118//4 114//4 +f 124//12 125//12 126//12 +f 124//44 123//44 2//44 +f 125//45 124//45 4//45 +f 126//46 125//46 3//46 +f 123//47 126//47 1//47 +f 128//9 129//9 130//9 +f 128//48 127//48 8//48 +f 129//49 128//49 6//49 +f 130//50 129//50 5//50 +f 127//51 130//51 7//51 +f 132//52 134//52 133//52 +f 133//53 134//53 142//53 +f 145//54 138//54 137//54 +f 138//55 140//55 139//55 +f 176//56 175//56 155//56 +f 170//57 169//57 162//57 +f 152//20 154//20 153//20 +f 159//58 177//58 176//58 +f 169//59 168//59 164//59 +f 154//21 156//21 155//21 +f 153//60 174//60 173//60 +f 164//61 168//61 167//61 +f 156//22 158//22 157//22 +f 176//17 178//17 174//17 +f 167//62 149//62 152//62 +f 158//23 160//23 159//23 +f 150//63 172//63 156//63 +f 152//64 149//64 150//64 +f 160//24 162//24 161//24 +f 172//65 171//65 158//65 +f 168//2 170//2 149//2 +f 162//25 164//25 163//25 +f 201//20 209//20 208//20 +f 166//27 152//27 151//27 +f 164//28 166//28 165//28 +f 175//66 174//66 153//66 +f 171//67 170//67 160//67 +f 192//2 201//2 202//2 +f 178//68 177//68 159//68 +f 179//69 178//69 161//69 +f 180//70 179//70 163//70 +f 173//71 180//71 165//71 +f 184//20 186//20 185//20 +f 188//2 186//2 181//2 +f 181//25 212//25 211//25 +f 186//21 188//21 187//21 +f 190//2 200//2 201//2 +f 202//21 208//21 207//21 +f 187//22 188//22 190//22 +f 196//2 203//2 204//2 +f 204//22 203//22 207//22 +f 190//23 192//23 191//23 +f 188//2 199//2 200//2 +f 207//2 209//2 211//2 +f 192//24 194//24 193//24 +f 199//28 211//28 210//28 +f 194//2 202//2 203//2 +f 194//25 196//25 195//25 +f 198//27 184//27 183//27 +f 189//17 195//17 197//17 +f 196//28 198//28 197//28 +f 198//2 204//2 182//2 +f 182//24 205//24 212//24 +f 186//2 184//2 182//2 +f 204//23 206//23 205//23 +f 200//27 210//27 209//27 +f 216//72 215//72 213//72 +f 216//17 220//17 219//17 +f 218//73 217//73 219//73 +f 214//2 213//2 217//2 +f 224//72 223//72 221//72 +f 220//4 216//4 214//4 +f 224//17 228//17 227//17 +f 226//73 225//73 227//73 +f 222//2 221//2 225//2 +f 228//4 224//4 222//4 +f 8//1 7//1 91//1 +f 6//2 2//2 5//2 +f 7//3 5//3 35//3 +f 6//4 8//4 2//4 +f 11//5 12//5 13//5 +f 13//6 14//6 15//6 +f 15//7 16//7 17//7 +f 17//8 18//8 19//8 +f 35//9 36//9 39//9 +f 19//10 20//10 21//10 +f 36//2 9//2 38//2 +f 21//11 22//11 23//11 +f 9//12 10//12 37//12 +f 23//13 24//13 25//13 +f 37//3 40//3 38//3 +f 25//14 26//14 27//14 +f 5//3 1//3 36//3 +f 27//15 28//15 29//15 +f 3//3 7//3 10//3 +f 29//16 30//16 31//16 +f 10//17 35//17 40//17 +f 33//18 34//18 11//18 +f 31//19 32//19 33//19 +f 1//3 3//3 9//3 +f 41//20 42//20 43//20 +f 43//21 44//21 45//21 +f 45//22 46//22 47//22 +f 47//23 48//23 49//23 +f 51//24 49//24 52//24 +f 53//25 51//25 54//25 +f 61//26 50//26 60//26 +f 55//27 56//27 41//27 +f 55//28 53//28 56//28 +f 57//20 58//20 65//20 +f 56//29 54//29 64//29 +f 59//30 46//30 57//30 +f 52//31 50//31 62//31 +f 42//32 56//32 58//32 +f 44//33 42//33 57//33 +f 60//34 48//34 59//34 +f 54//35 52//35 63//35 +f 72//2 71//2 80//2 +f 58//27 64//27 66//27 +f 63//25 62//25 71//25 +f 61//23 60//23 69//23 +f 59//21 57//21 67//21 +f 64//28 63//28 72//28 +f 62//24 61//24 70//24 +f 60//22 59//22 68//22 +f 78//21 86//21 79//21 +f 70//2 69//2 78//2 +f 68//2 67//2 76//2 +f 65//2 66//2 73//2 +f 66//2 72//2 74//2 +f 71//2 70//2 79//2 +f 77//2 69//2 76//2 +f 75//2 67//2 73//2 +f 83//2 81//2 82//2 +f 82//2 88//2 83//2 +f 87//2 86//2 83//2 +f 85//2 84//2 83//2 +f 83//2 88//2 87//2 +f 79//22 87//22 80//22 +f 77//20 85//20 78//20 +f 76//27 84//27 77//27 +f 75//28 83//28 76//28 +f 74//24 82//24 73//24 +f 80//23 88//23 74//23 +f 73//25 81//25 75//25 +f 91//17 92//17 95//17 +f 7//36 3//36 92//36 +f 4//37 8//37 89//37 +f 3//38 4//38 90//38 +f 96//3 94//3 110//3 +f 94//17 90//17 93//17 +f 92//17 90//17 96//17 +f 89//17 91//17 93//17 +f 97//39 98//39 99//39 +f 101//40 99//40 102//40 +f 105//41 106//41 97//41 +f 103//42 104//42 105//42 +f 107//17 109//17 108//17 +f 93//4 95//4 107//4 +f 95//9 96//9 109//9 +f 94//12 93//12 108//12 +f 105//17 97//17 99//17 +f 99//17 101//17 105//17 +f 112//12 114//12 111//12 +f 114//17 118//17 113//17 +f 119//43 120//43 121//43 +f 116//2 112//2 115//2 +f 117//9 118//9 119//9 +f 115//2 121//2 116//2 +f 111//3 113//3 119//3 +f 117//3 119//3 113//3 +f 114//4 112//4 120//4 +f 116//4 120//4 112//4 +f 123//12 124//12 126//12 +f 4//44 124//44 2//44 +f 3//45 125//45 4//45 +f 1//46 126//46 3//46 +f 2//47 123//47 1//47 +f 127//9 128//9 130//9 +f 6//48 128//48 8//48 +f 5//49 129//49 6//49 +f 7//50 130//50 5//50 +f 8//51 127//51 7//51 +f 131//52 132//52 133//52 +f 134//53 136//53 148//53 +f 147//53 135//53 133//53 +f 134//53 148//53 141//53 +f 143//53 147//53 133//53 +f 134//53 141//53 142//53 +f 142//53 143//53 133//53 +f 137//54 135//54 147//54 +f 146//54 148//54 138//54 +f 137//54 147//54 144//54 +f 145//54 146//54 138//54 +f 137//54 144//54 145//54 +f 148//54 136//54 138//54 +f 137//55 138//55 139//55 +f 157//56 176//56 155//56 +f 160//57 170//57 162//57 +f 151//20 152//20 153//20 +f 157//58 159//58 176//58 +f 162//59 169//59 164//59 +f 153//21 154//21 155//21 +f 151//60 153//60 173//60 +f 166//61 164//61 167//61 +f 155//22 156//22 157//22 +f 180//17 173//17 174//17 +f 174//17 175//17 176//17 +f 176//17 177//17 178//17 +f 178//17 179//17 180//17 +f 180//17 174//17 178//17 +f 166//62 167//62 152//62 +f 157//23 158//23 159//23 +f 154//63 150//63 156//63 +f 154//64 152//64 150//64 +f 159//24 160//24 161//24 +f 156//65 172//65 158//65 +f 172//2 150//2 149//2 +f 149//2 167//2 168//2 +f 168//2 169//2 170//2 +f 170//2 171//2 172//2 +f 172//2 149//2 170//2 +f 161//25 162//25 163//25 +f 202//20 201//20 208//20 +f 165//27 166//27 151//27 +f 163//28 164//28 165//28 +f 155//66 175//66 153//66 +f 158//67 171//67 160//67 +f 194//2 192//2 202//2 +f 161//68 178//68 159//68 +f 163//69 179//69 161//69 +f 165//70 180//70 163//70 +f 151//71 173//71 165//71 +f 183//20 184//20 185//20 +f 199//2 188//2 181//2 +f 199//25 181//25 211//25 +f 185//21 186//21 187//21 +f 192//2 190//2 201//2 +f 203//21 202//21 207//21 +f 189//22 187//22 190//22 +f 198//2 196//2 204//2 +f 206//22 204//22 207//22 +f 189//23 190//23 191//23 +f 190//2 188//2 200//2 +f 211//2 212//2 207//2 +f 205//2 206//2 207//2 +f 207//2 208//2 209//2 +f 209//2 210//2 211//2 +f 212//2 205//2 207//2 +f 191//24 192//24 193//24 +f 200//28 199//28 210//28 +f 196//2 194//2 203//2 +f 193//25 194//25 195//25 +f 197//27 198//27 183//27 +f 197//17 183//17 185//17 +f 185//17 187//17 197//17 +f 189//17 191//17 193//17 +f 193//17 195//17 189//17 +f 197//17 187//17 189//17 +f 195//28 196//28 197//28 +f 184//2 198//2 182//2 +f 181//24 182//24 212//24 +f 181//2 186//2 182//2 +f 182//23 204//23 205//23 +f 201//27 200//27 209//27 +f 214//72 216//72 213//72 +f 215//17 216//17 219//17 +f 220//73 218//73 219//73 +f 218//2 214//2 217//2 +f 222//72 224//72 221//72 +f 218//4 220//4 214//4 +f 223//17 224//17 227//17 +f 228//73 226//73 227//73 +f 226//2 222//2 225//2 +f 226//4 228//4 222//4 diff --git a/assets/hbm/models/turret_spitfire_rotor.obj b/assets/hbm/models/turret_spitfire_rotor.obj new file mode 100644 index 000000000..8e5c91233 --- /dev/null +++ b/assets/hbm/models/turret_spitfire_rotor.obj @@ -0,0 +1,282 @@ +# Blender v2.76 (sub 0) OBJ File: 'turret_spitfire_rotor.blend' +# www.blender.org +o Cube_Cube.001 +v -0.750000 0.125000 1.000000 +v -0.750000 0.250000 1.000000 +v -0.750000 0.125000 0.000000 +v -0.750000 0.250000 0.000000 +v 0.750000 0.125000 1.000000 +v 0.500000 0.250000 1.000000 +v 0.750000 0.125000 0.000000 +v 0.750000 0.250000 0.000000 +v -0.500000 0.125000 0.000000 +v -0.500000 0.250000 0.000000 +v -0.500000 0.125000 -1.000000 +v -0.500000 0.250000 -1.000000 +v 0.500000 0.125000 0.000000 +v 0.500000 0.250000 0.000000 +v 0.500000 0.125000 -1.000000 +v 0.500000 0.250000 -1.000000 +v 0.500000 1.750000 0.250000 +v 0.500000 1.250000 -0.250000 +v 0.500000 1.750000 -0.250000 +v 0.750000 1.750000 0.250000 +v 0.750000 1.250000 -0.250000 +v 0.750000 1.750000 -0.250000 +v 0.500000 0.750000 0.750000 +v 0.500000 1.250000 0.750000 +v 0.500000 0.750000 0.250000 +v 0.750000 0.750000 0.750000 +v 0.750000 1.250000 0.750000 +v 0.750000 0.750000 0.250000 +v 0.500000 0.250000 0.250000 +v 0.750000 0.250000 1.000000 +v 0.750000 0.250000 0.250000 +v -0.750000 0.250000 1.000000 +v -0.750000 1.750000 0.250000 +v -0.750000 1.250000 -0.250000 +v -0.750000 1.750000 -0.250000 +v -0.500000 1.750000 0.250000 +v -0.500000 1.250000 -0.250000 +v -0.500000 1.750000 -0.250000 +v -0.750000 0.750000 0.750000 +v -0.750000 1.250000 0.750000 +v -0.750000 0.750000 0.250000 +v -0.500000 0.750000 0.750000 +v -0.500000 1.250000 0.750000 +v -0.500000 0.750000 0.250000 +v -0.750000 0.250000 0.250000 +v -0.500000 0.250000 1.000000 +v -0.500000 0.250000 0.250000 +v -0.150000 1.500000 -1.500000 +v -0.150000 1.888229 -1.448889 +v -0.150000 2.250000 -1.299038 +v -0.150000 2.560660 -1.060660 +v -0.250000 1.111770 -1.448888 +v -0.250000 0.749999 -1.299038 +v -0.250000 0.439339 -1.060659 +v -0.250000 0.200961 -0.749999 +v -0.250000 2.560660 -1.060660 +v -0.250000 2.250000 -1.299038 +v -0.250000 1.888229 -1.448889 +v -0.250000 1.500000 -1.500000 +v -0.150000 0.200961 -0.749999 +v -0.150000 0.439339 -1.060659 +v -0.150000 0.749999 -1.299038 +v -0.150000 1.111770 -1.448888 +v -0.150000 1.500000 -1.300000 +v -0.150000 1.836465 -1.255704 +v -0.150000 2.150000 -1.125833 +v -0.150000 2.419239 -0.919239 +v -0.150000 0.244296 -0.336464 +v -0.150000 0.374166 -0.649999 +v -0.150000 0.580761 -0.919238 +v -0.150000 0.849999 -1.125833 +v -0.150000 1.163534 -1.255703 +v -0.250000 1.500000 -1.300000 +v -0.250000 1.836465 -1.255704 +v -0.250000 2.150000 -1.125833 +v -0.250000 2.419239 -0.919239 +v -0.250000 0.244296 -0.336464 +v -0.250000 0.374166 -0.649999 +v -0.250000 0.580761 -0.919238 +v -0.250000 0.849999 -1.125833 +v -0.250000 1.163534 -1.255703 +v 0.500000 0.250000 0.812500 +v 0.500000 0.250000 0.437500 +v -0.500000 0.250000 0.812500 +v -0.500000 0.250000 0.437500 +v 0.500000 0.650000 0.625000 +v -0.750000 0.650000 0.625000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.707100 0.707100 +vn 0.000000 -0.707100 -0.707100 +vn 0.000000 0.242500 0.970100 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.608800 -0.793400 +vn 0.000000 0.382700 -0.923900 +vn 0.000000 0.130500 -0.991400 +vn 0.000000 -0.130500 -0.991400 +vn 0.000000 -0.382700 -0.923900 +vn 0.000000 -0.608800 -0.793400 +vn 0.000000 -0.793400 -0.608800 +vn 0.000000 0.923900 0.382700 +vn 0.000000 0.793400 0.608800 +vn 0.000000 0.608800 0.793400 +vn 0.000000 0.382700 0.923900 +vn 0.000000 0.130500 0.991400 +vn 0.000000 -0.130500 0.991400 +vn 0.000000 -0.382700 0.923900 +vn 0.000000 -0.608800 0.793400 +vn 0.000000 0.424400 -0.905500 +vn 0.000000 0.424400 0.905500 +vn -0.442300 0.884700 0.147400 +s off +f 45//1 3//1 1//1 +f 23//1 6//1 24//1 +f 85//2 83//2 29//2 +f 25//3 28//3 31//3 +f 13//4 5//4 1//4 +f 10//3 9//3 3//3 +f 12//1 11//1 9//1 +f 16//3 15//3 11//3 +f 14//5 13//5 15//5 +f 14//3 8//3 7//3 +f 11//4 15//4 13//4 +f 16//2 12//2 10//2 +f 20//6 17//6 24//6 +f 22//3 21//3 18//3 +f 18//1 25//1 24//1 +f 21//5 27//5 28//5 +f 25//7 18//7 21//7 +f 22//2 19//2 17//2 +f 26//5 27//5 30//5 +f 31//5 28//5 26//5 +f 24//8 6//8 30//8 +f 31//5 30//5 5//5 +f 39//1 32//1 40//1 +f 39//1 41//1 45//1 +f 41//3 44//3 47//3 +f 36//6 33//6 40//6 +f 38//3 37//3 34//3 +f 34//1 41//1 40//1 +f 37//5 43//5 44//5 +f 41//7 34//7 37//7 +f 38//2 35//2 33//2 +f 42//5 43//5 46//5 +f 46//2 6//2 82//2 +f 40//8 32//8 46//8 +f 5//9 6//9 46//9 +f 10//2 4//2 47//2 +f 57//10 56//10 51//10 +f 58//11 57//11 50//11 +f 59//12 58//12 49//12 +f 59//13 48//13 63//13 +f 53//14 52//14 63//14 +f 54//15 53//15 62//15 +f 54//16 61//16 60//16 +f 69//17 78//17 77//17 +f 70//18 79//18 78//18 +f 71//19 80//19 79//19 +f 72//20 81//20 80//20 +f 64//21 73//21 81//21 +f 65//22 74//22 73//22 +f 66//23 75//23 74//23 +f 67//24 76//24 75//24 +f 76//6 67//6 51//6 +f 57//1 75//1 76//1 +f 74//1 75//1 57//1 +f 73//1 74//1 58//1 +f 52//1 81//1 73//1 +f 53//1 80//1 81//1 +f 79//1 80//1 53//1 +f 78//1 79//1 54//1 +f 78//1 55//1 77//1 +f 50//5 51//5 67//5 +f 50//5 66//5 65//5 +f 49//5 65//5 64//5 +f 63//5 48//5 64//5 +f 62//5 63//5 72//5 +f 62//5 71//5 70//5 +f 61//5 70//5 69//5 +f 69//5 68//5 60//5 +f 85//25 87//25 86//25 +f 85//5 44//5 42//5 +f 83//1 82//1 23//1 +f 84//26 82//26 86//26 +f 1//1 2//1 45//1 +f 45//9 32//9 4//9 +f 4//1 3//1 45//1 +f 47//2 85//2 29//2 +f 29//3 25//3 31//3 +f 1//4 3//4 9//4 +f 9//4 13//4 1//4 +f 7//4 5//4 13//4 +f 4//3 10//3 3//3 +f 10//1 12//1 9//1 +f 12//3 16//3 11//3 +f 16//5 14//5 15//5 +f 13//3 14//3 7//3 +f 9//4 11//4 13//4 +f 14//2 16//2 10//2 +f 27//6 20//6 24//6 +f 19//3 22//3 18//3 +f 24//1 17//1 18//1 +f 19//1 18//1 17//1 +f 25//1 23//1 24//1 +f 26//5 28//5 27//5 +f 21//5 22//5 20//5 +f 20//5 27//5 21//5 +f 28//7 25//7 21//7 +f 20//2 22//2 17//2 +f 30//5 31//5 26//5 +f 27//8 24//8 30//8 +f 5//5 7//5 31//5 +f 8//5 31//5 7//5 +f 32//1 39//1 45//1 +f 45//3 41//3 47//3 +f 43//6 36//6 40//6 +f 35//3 38//3 34//3 +f 40//1 33//1 34//1 +f 35//1 34//1 33//1 +f 41//1 39//1 40//1 +f 42//5 44//5 43//5 +f 37//5 38//5 36//5 +f 36//5 43//5 37//5 +f 44//7 41//7 37//7 +f 36//2 38//2 33//2 +f 84//2 46//2 82//2 +f 43//8 40//8 46//8 +f 1//9 5//9 46//9 +f 45//5 2//5 1//5 +f 46//4 32//4 45//4 +f 30//9 6//9 5//9 +f 46//27 45//27 1//27 +f 29//2 31//2 8//2 +f 8//2 14//2 29//2 +f 4//9 32//9 45//9 +f 14//2 10//2 47//2 +f 47//2 29//2 14//2 +f 4//2 45//2 47//2 +f 50//10 57//10 51//10 +f 49//11 58//11 50//11 +f 48//12 59//12 49//12 +f 52//13 59//13 63//13 +f 62//14 53//14 63//14 +f 61//15 54//15 62//15 +f 55//16 54//16 60//16 +f 68//17 69//17 77//17 +f 69//18 70//18 78//18 +f 70//19 71//19 79//19 +f 71//20 72//20 80//20 +f 72//21 64//21 81//21 +f 64//22 65//22 73//22 +f 65//23 66//23 74//23 +f 66//24 67//24 75//24 +f 56//6 76//6 51//6 +f 56//1 57//1 76//1 +f 58//1 74//1 57//1 +f 59//1 73//1 58//1 +f 59//1 52//1 73//1 +f 52//1 53//1 81//1 +f 54//1 79//1 53//1 +f 55//1 78//1 54//1 +f 66//5 50//5 67//5 +f 49//5 50//5 65//5 +f 48//5 49//5 64//5 +f 72//5 63//5 64//5 +f 71//5 62//5 72//5 +f 61//5 62//5 70//5 +f 60//5 61//5 69//5 +f 83//25 85//25 86//25 +f 42//5 46//5 84//5 +f 84//5 85//5 42//5 +f 47//5 44//5 85//5 +f 23//1 25//1 83//1 +f 29//1 83//1 25//1 +f 82//1 6//1 23//1 +f 87//26 84//26 86//26 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 5637732b1..2f82fb37b 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -52,6 +52,7 @@ "weapon.defabShoot": {"category": "player", "sounds": [{"name": "weapon/defabShoot", "stream": false}]}, "weapon.sparkShoot": {"category": "player", "sounds": ["weapon/sparkShoot1", "weapon/sparkShoot2", "weapon/sparkShoot3"]}, "weapon.bang": {"category": "player", "sounds": [{"name": "weapon/bang", "stream": false}]}, + "weapon.leverActionReload": {"category": "player", "sounds": [{"name": "weapon/leverActionReload", "stream": false}]}, "weapon.reloadTurret": {"category": "player", "sounds": [{"name": "weapon/reloadTurret", "stream": false}]}, "weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/leverActionReload.ogg b/assets/hbm/sounds/weapon/leverActionReload.ogg new file mode 100644 index 000000000..8e36020b2 Binary files /dev/null and b/assets/hbm/sounds/weapon/leverActionReload.ogg differ diff --git a/assets/hbm/textures/ABC123.png b/assets/hbm/textures/ABC123.png index 955c8821c..31cb73672 100644 Binary files a/assets/hbm/textures/ABC123.png and b/assets/hbm/textures/ABC123.png differ diff --git a/assets/hbm/textures/blocks/ore_tikite_alt.png b/assets/hbm/textures/blocks/ore_tikite_alt.png new file mode 100644 index 000000000..43ba60757 Binary files /dev/null and b/assets/hbm/textures/blocks/ore_tikite_alt.png differ diff --git a/assets/hbm/textures/gui/gui_designator.png b/assets/hbm/textures/gui/gui_designator.png new file mode 100644 index 000000000..3861ec587 Binary files /dev/null and b/assets/hbm/textures/gui/gui_designator.png differ diff --git a/assets/hbm/textures/gui/gui_radgen.png b/assets/hbm/textures/gui/gui_radgen.png index 2bf92b976..8d6a5bd44 100644 Binary files a/assets/hbm/textures/gui/gui_radgen.png and b/assets/hbm/textures/gui/gui_radgen.png differ diff --git a/assets/hbm/textures/gui/metal_dark.png b/assets/hbm/textures/gui/metal_dark.png deleted file mode 100644 index 923464f20..000000000 Binary files a/assets/hbm/textures/gui/metal_dark.png and /dev/null differ diff --git a/assets/hbm/textures/gui/metal_light.png b/assets/hbm/textures/gui/metal_light.png deleted file mode 100644 index bd37d828b..000000000 Binary files a/assets/hbm/textures/gui/metal_light.png and /dev/null differ diff --git a/assets/hbm/textures/items/ammo_container.png b/assets/hbm/textures/items/ammo_container.png new file mode 100644 index 000000000..f7230cf34 Binary files /dev/null and b/assets/hbm/textures/items/ammo_container.png differ diff --git a/assets/hbm/textures/items/circuit_targeting.png b/assets/hbm/textures/items/circuit_targeting.png new file mode 100644 index 000000000..041363c15 Binary files /dev/null and b/assets/hbm/textures/items/circuit_targeting.png differ diff --git a/assets/hbm/textures/items/clip_bolt_action.png b/assets/hbm/textures/items/clip_bolt_action.png new file mode 100644 index 000000000..2dd33c488 Binary files /dev/null and b/assets/hbm/textures/items/clip_bolt_action.png differ diff --git a/assets/hbm/textures/items/clip_lever_action.png b/assets/hbm/textures/items/clip_lever_action.png new file mode 100644 index 000000000..0a5d93d8e Binary files /dev/null and b/assets/hbm/textures/items/clip_lever_action.png differ diff --git a/assets/hbm/textures/items/designator_manual.png b/assets/hbm/textures/items/designator_manual.png new file mode 100644 index 000000000..4adba3999 Binary files /dev/null and b/assets/hbm/textures/items/designator_manual.png differ diff --git a/assets/hbm/textures/items/gun_bolt_action.png b/assets/hbm/textures/items/gun_bolt_action.png new file mode 100644 index 000000000..a5e4409af Binary files /dev/null and b/assets/hbm/textures/items/gun_bolt_action.png differ diff --git a/assets/hbm/textures/items/gun_bolt_action_ammo.png b/assets/hbm/textures/items/gun_bolt_action_ammo.png new file mode 100644 index 000000000..28a7dd962 Binary files /dev/null and b/assets/hbm/textures/items/gun_bolt_action_ammo.png differ diff --git a/assets/hbm/textures/items/gun_bolt_action_green.png b/assets/hbm/textures/items/gun_bolt_action_green.png new file mode 100644 index 000000000..652e0dc9a Binary files /dev/null and b/assets/hbm/textures/items/gun_bolt_action_green.png differ diff --git a/assets/hbm/textures/items/gun_dampfmaschine.png b/assets/hbm/textures/items/gun_dampfmaschine.png new file mode 100644 index 000000000..4df7f338d Binary files /dev/null and b/assets/hbm/textures/items/gun_dampfmaschine.png differ diff --git a/assets/hbm/textures/items/gun_lever_action.png b/assets/hbm/textures/items/gun_lever_action.png new file mode 100644 index 000000000..21ea9298a Binary files /dev/null and b/assets/hbm/textures/items/gun_lever_action.png differ diff --git a/assets/hbm/textures/items/gun_lever_action_ammo.png b/assets/hbm/textures/items/gun_lever_action_ammo.png new file mode 100644 index 000000000..56afc548b Binary files /dev/null and b/assets/hbm/textures/items/gun_lever_action_ammo.png differ diff --git a/assets/hbm/textures/items/gun_lever_action_dark.png b/assets/hbm/textures/items/gun_lever_action_dark.png new file mode 100644 index 000000000..d07aca793 Binary files /dev/null and b/assets/hbm/textures/items/gun_lever_action_dark.png differ diff --git a/assets/hbm/textures/items/missile_burst.png b/assets/hbm/textures/items/missile_burst.png index 60a73e1af..97d978360 100644 Binary files a/assets/hbm/textures/items/missile_burst.png and b/assets/hbm/textures/items/missile_burst.png differ diff --git a/assets/hbm/textures/items/missile_buster_strong.png b/assets/hbm/textures/items/missile_buster_strong.png index 3adb9bbba..2367ab1ce 100644 Binary files a/assets/hbm/textures/items/missile_buster_strong.png and b/assets/hbm/textures/items/missile_buster_strong.png differ diff --git a/assets/hbm/textures/items/missile_cluster_strong.png b/assets/hbm/textures/items/missile_cluster_strong.png index bf418e965..c03b21d84 100644 Binary files a/assets/hbm/textures/items/missile_cluster_strong.png and b/assets/hbm/textures/items/missile_cluster_strong.png differ diff --git a/assets/hbm/textures/items/missile_drill.png b/assets/hbm/textures/items/missile_drill.png index 03e3cc15d..3e9c2ef8f 100644 Binary files a/assets/hbm/textures/items/missile_drill.png and b/assets/hbm/textures/items/missile_drill.png differ diff --git a/assets/hbm/textures/items/missile_endo.png b/assets/hbm/textures/items/missile_endo.png index 5121a6301..2dd78588d 100644 Binary files a/assets/hbm/textures/items/missile_endo.png and b/assets/hbm/textures/items/missile_endo.png differ diff --git a/assets/hbm/textures/items/missile_exo.png b/assets/hbm/textures/items/missile_exo.png index 53de4d509..688249b0f 100644 Binary files a/assets/hbm/textures/items/missile_exo.png and b/assets/hbm/textures/items/missile_exo.png differ diff --git a/assets/hbm/textures/items/missile_incendiary_strong.png b/assets/hbm/textures/items/missile_incendiary_strong.png index 912cc9716..11a6bf3c8 100644 Binary files a/assets/hbm/textures/items/missile_incendiary_strong.png and b/assets/hbm/textures/items/missile_incendiary_strong.png differ diff --git a/assets/hbm/textures/items/missile_inferno.png b/assets/hbm/textures/items/missile_inferno.png index 94eeae344..db094540c 100644 Binary files a/assets/hbm/textures/items/missile_inferno.png and b/assets/hbm/textures/items/missile_inferno.png differ diff --git a/assets/hbm/textures/items/missile_nuclear.png b/assets/hbm/textures/items/missile_nuclear.png index 39d6d0e60..a0ba32a3c 100644 Binary files a/assets/hbm/textures/items/missile_nuclear.png and b/assets/hbm/textures/items/missile_nuclear.png differ diff --git a/assets/hbm/textures/items/missile_nuclear_cluster.png b/assets/hbm/textures/items/missile_nuclear_cluster.png index a990d02ca..192f1c593 100644 Binary files a/assets/hbm/textures/items/missile_nuclear_cluster.png and b/assets/hbm/textures/items/missile_nuclear_cluster.png differ diff --git a/assets/hbm/textures/items/missile_rain.png b/assets/hbm/textures/items/missile_rain.png index 16e454ebe..5ca376e11 100644 Binary files a/assets/hbm/textures/items/missile_rain.png and b/assets/hbm/textures/items/missile_rain.png differ diff --git a/assets/hbm/textures/items/missile_strong.png b/assets/hbm/textures/items/missile_strong.png index 00f8c41ac..cc972b1a6 100644 Binary files a/assets/hbm/textures/items/missile_strong.png and b/assets/hbm/textures/items/missile_strong.png differ diff --git a/assets/hbm/textures/items/missile_taint.png b/assets/hbm/textures/items/missile_taint.png new file mode 100644 index 000000000..b074fb567 Binary files /dev/null and b/assets/hbm/textures/items/missile_taint.png differ diff --git a/assets/hbm/textures/items/turret_spitfire_ammo.png b/assets/hbm/textures/items/turret_spitfire_ammo.png new file mode 100644 index 000000000..76f824d57 Binary files /dev/null and b/assets/hbm/textures/items/turret_spitfire_ammo.png differ diff --git a/assets/hbm/textures/models/ModelBoltAction.png b/assets/hbm/textures/models/ModelBoltAction.png new file mode 100644 index 000000000..410512914 Binary files /dev/null and b/assets/hbm/textures/models/ModelBoltAction.png differ diff --git a/assets/hbm/textures/models/ModelBoltActionDark.png b/assets/hbm/textures/models/ModelBoltActionDark.png new file mode 100644 index 000000000..14bc6b674 Binary files /dev/null and b/assets/hbm/textures/models/ModelBoltActionDark.png differ diff --git a/assets/hbm/textures/models/ModelBoltActionDarkGreen.png b/assets/hbm/textures/models/ModelBoltActionDarkGreen.png new file mode 100644 index 000000000..cb40afaff Binary files /dev/null and b/assets/hbm/textures/models/ModelBoltActionDarkGreen.png differ diff --git a/assets/hbm/textures/models/ModelBoltActionGreen.png b/assets/hbm/textures/models/ModelBoltActionGreen.png new file mode 100644 index 000000000..1c5c31255 Binary files /dev/null and b/assets/hbm/textures/models/ModelBoltActionGreen.png differ diff --git a/assets/hbm/textures/models/ModelEuthanasia.png b/assets/hbm/textures/models/ModelEuthanasia.png index 7a9aca49b..9c3a2960d 100644 Binary files a/assets/hbm/textures/models/ModelEuthanasia.png and b/assets/hbm/textures/models/ModelEuthanasia.png differ diff --git a/assets/hbm/textures/models/ModelLeverAction.png b/assets/hbm/textures/models/ModelLeverAction.png new file mode 100644 index 000000000..8068043e3 Binary files /dev/null and b/assets/hbm/textures/models/ModelLeverAction.png differ diff --git a/assets/hbm/textures/models/ModelLeverActionDark.png b/assets/hbm/textures/models/ModelLeverActionDark.png new file mode 100644 index 000000000..b8d66c59d Binary files /dev/null and b/assets/hbm/textures/models/ModelLeverActionDark.png differ diff --git a/assets/hbm/textures/models/NukeCloudFire.png b/assets/hbm/textures/models/NukeCloudFire.png index 419ef0964..141c0bd61 100644 Binary files a/assets/hbm/textures/models/NukeCloudFire.png and b/assets/hbm/textures/models/NukeCloudFire.png differ diff --git a/assets/hbm/textures/models/NukeCloudFire1.png b/assets/hbm/textures/models/NukeCloudFire1.png new file mode 100644 index 000000000..419ef0964 Binary files /dev/null and b/assets/hbm/textures/models/NukeCloudFire1.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 5410e5be2..dbb511549 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -393,6 +393,9 @@ public class ModBlocks { public static Block machine_siren; public static final int guiID_siren = 57; + public static Block machine_radgen; + public static final int guiID_radgen = 58; + public static Block machine_spp_bottom; public static Block machine_spp_top; @@ -401,6 +404,7 @@ public class ModBlocks { public static Block turret_rocket; public static Block turret_flamer; public static Block turret_tau; + public static Block turret_spitfire; public static Block book_guide; @@ -460,6 +464,8 @@ public class ModBlocks { public static Block dummy_port_ams_emitter; public static Block dummy_block_ams_base; public static Block dummy_port_ams_base; + public static Block dummy_block_radgen; + public static Block dummy_port_radgen; private static void initializeBlock() { @@ -509,7 +515,7 @@ public class ModBlocks { ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); - ore_tikite = new BlockGeneric(Material.rock).setBlockName("ore_tikite").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tikite"); + ore_tikite = new BlockGeneric(Material.rock).setBlockName("ore_tikite").setCreativeTab(MainRegistry.tabBlock).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tikite_alt"); block_uranium = new BlockGeneric(Material.iron).setBlockName("block_uranium").setCreativeTab(MainRegistry.tabBlock).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium"); block_titanium = new BlockGeneric(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.tabBlock).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium"); @@ -631,6 +637,7 @@ public class ModBlocks { machine_generator = new MachineGenerator(Material.iron).setBlockName("machine_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); machine_industrial_generator = new MachineIGenerator(Material.iron).setBlockName("machine_industrial_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":industrial_generator"); machine_cyclotron = new MachineCyclotron(Material.iron).setBlockName("machine_cyclotron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":cyclotron"); + machine_radgen = new MachineRadGen(Material.iron).setBlockName("machine_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":radgen"); machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -728,6 +735,7 @@ public class ModBlocks { turret_rocket = new TurretRocket(Material.iron).setBlockName("turret_rocket").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":turret_rocket"); turret_flamer = new TurretFlamer(Material.iron).setBlockName("turret_flamer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":turret_flamer"); turret_tau = new TurretTau(Material.iron).setBlockName("turret_tau").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":turret_tau"); + turret_spitfire = new TurretSpitfire(Material.iron).setBlockName("turret_spitfire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":turret_spitfire"); book_guide = new Guide(Material.iron).setBlockName("book_guide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke); @@ -759,8 +767,8 @@ public class ModBlocks { machine_siren = new MachineSiren(Material.iron).setBlockName("machine_siren").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":machine_siren"); - machine_spp_bottom = new SPPBottom(Material.iron).setBlockName("machine_spp_bottom").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke); - machine_spp_top = new SPPTop(Material.iron).setBlockName("machine_spp_top").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke); + machine_spp_bottom = new SPPBottom(Material.iron).setBlockName("machine_spp_bottom").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); + machine_spp_top = new SPPTop(Material.iron).setBlockName("machine_spp_top").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock); cheater_virus = new CheaterVirus(Material.iron).setBlockName("cheater_virus").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus"); cheater_virus_seed = new CheaterVirusSeed(Material.iron).setBlockName("cheater_virus_seed").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus_seed"); @@ -815,6 +823,8 @@ public class ModBlocks { dummy_port_ams_emitter = new DummyBlockAMSEmitter(Material.iron).setBlockName("dummy_port_ams_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_ams_base = new DummyBlockAMSBase(Material.iron).setBlockName("dummy_block_ams_base").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_port_ams_base = new DummyBlockAMSBase(Material.iron).setBlockName("dummy_port_ams_base").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_block_radgen = new DummyBlockRadGen(Material.iron).setBlockName("dummy_block_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_radgen = new DummyBlockRadGen(Material.iron).setBlockName("dummy_port_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); } private static void registerBlock() { @@ -969,6 +979,7 @@ public class ModBlocks { GameRegistry.registerBlock(turret_rocket, turret_rocket.getUnlocalizedName()); GameRegistry.registerBlock(turret_flamer, turret_flamer.getUnlocalizedName()); GameRegistry.registerBlock(turret_tau, turret_tau.getUnlocalizedName()); + GameRegistry.registerBlock(turret_spitfire, turret_spitfire.getUnlocalizedName()); //Block Bombs GameRegistry.registerBlock(flame_war, flame_war.getUnlocalizedName()); @@ -1013,6 +1024,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_diesel, machine_diesel.getUnlocalizedName()); GameRegistry.registerBlock(machine_generator, machine_generator.getUnlocalizedName()); GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); @@ -1162,6 +1174,8 @@ public class ModBlocks { GameRegistry.registerBlock(dummy_port_ams_emitter, dummy_port_ams_emitter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_base, dummy_block_ams_base.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_ams_base, dummy_port_ams_base.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_block_radgen, dummy_block_radgen.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_radgen, dummy_port_radgen.getUnlocalizedName()); //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); diff --git a/com/hbm/blocks/bomb/BlockCrashedBomb.java b/com/hbm/blocks/bomb/BlockCrashedBomb.java index 1be2c1e2e..5503b7aa5 100644 --- a/com/hbm/blocks/bomb/BlockCrashedBomb.java +++ b/com/hbm/blocks/bomb/BlockCrashedBomb.java @@ -81,10 +81,11 @@ public class BlockCrashedBomb extends BlockContainer implements IBomb { entity0.posX = x; entity0.posY = y; entity0.posZ = z; - entity0.destructionRange = MainRegistry.fatmanRadius; + entity0.destructionRange = (int)(MainRegistry.fatmanRadius * 1.25); entity0.speed = 25; entity0.coefficient = 10.0F; - + + world.setBlockToAir(x, y, z); world.spawnEntityInWorld(entity0); ExplosionParticleB.spawnMush(world, x, y - 3, z); } diff --git a/com/hbm/blocks/bomb/LaunchPad.java b/com/hbm/blocks/bomb/LaunchPad.java index 7c05d51b8..00e8ba697 100644 --- a/com/hbm/blocks/bomb/LaunchPad.java +++ b/com/hbm/blocks/bomb/LaunchPad.java @@ -3,6 +3,7 @@ package com.hbm.blocks.bomb; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.logic.EntityMissileTest; import com.hbm.entity.missile.EntityMissileAntiBallistic; import com.hbm.entity.missile.EntityMissileBunkerBuster; import com.hbm.entity.missile.EntityMissileBurst; @@ -34,6 +35,7 @@ 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.item.EntityEnderCrystal; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -139,7 +141,7 @@ public class LaunchPad extends BlockContainer implements IBomb { @Override public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_) { - if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z) && !p_149695_1_.isRemote) { this.explode(p_149695_1_, x, y, z); } @@ -207,7 +209,7 @@ public class LaunchPad extends BlockContainer implements IBomb { public void explode(World p_149695_1_, int x, int y, int z) { TileEntityLaunchPad entity = (TileEntityLaunchPad) p_149695_1_.getTileEntity(x, y, z); - //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + // { if(entity.slots[1] != null && (entity.slots[1].getItem() == ModItems.designator || entity.slots[1].getItem() == ModItems.designator_range) && entity.slots[1].stackTagCompound != null) { @@ -223,7 +225,8 @@ public class LaunchPad extends BlockContainer implements IBomb { { //EntityMissileGeneric missile = new EntityMissileGeneric(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); EntityMissileGeneric missile = new EntityMissileGeneric(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -232,7 +235,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) { EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -241,7 +245,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary && entity.power >= 75000) { EntityMissileIncendiary missile = new EntityMissileIncendiary(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -250,7 +255,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster && entity.power >= 75000) { EntityMissileCluster missile = new EntityMissileCluster(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -259,7 +265,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster && entity.power >= 75000) { EntityMissileBunkerBuster missile = new EntityMissileBunkerBuster(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -268,7 +275,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_strong && entity.power >= 75000) { EntityMissileStrong missile = new EntityMissileStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -277,7 +285,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary_strong && entity.power >= 75000) { EntityMissileIncendiaryStrong missile = new EntityMissileIncendiaryStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -286,7 +295,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster_strong && entity.power >= 75000) { EntityMissileClusterStrong missile = new EntityMissileClusterStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -295,7 +305,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster_strong && entity.power >= 75000) { EntityMissileBusterStrong missile = new EntityMissileBusterStrong(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -304,7 +315,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_burst && entity.power >= 75000) { EntityMissileBurst missile = new EntityMissileBurst(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -313,7 +325,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_inferno && entity.power >= 75000) { EntityMissileInferno missile = new EntityMissileInferno(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -322,7 +335,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_rain && entity.power >= 75000) { EntityMissileRain missile = new EntityMissileRain(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -331,7 +345,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_drill && entity.power >= 75000) { EntityMissileDrill missile = new EntityMissileDrill(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -340,7 +355,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear && entity.power >= 75000) { EntityMissileNuclear missile = new EntityMissileNuclear(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -349,7 +365,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_endo && entity.power >= 75000) { EntityMissileEndo missile = new EntityMissileEndo(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -358,7 +375,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_exo && entity.power >= 75000) { EntityMissileExo missile = new EntityMissileExo(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -367,7 +385,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear_cluster && entity.power >= 75000) { EntityMissileMirv missile = new EntityMissileMirv(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -376,7 +395,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) { EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -385,7 +405,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_doomsday && entity.power >= 75000) { EntityMissileDoomsday missile = new EntityMissileDoomsday(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; @@ -394,7 +415,8 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_taint && entity.power >= 75000) { EntityMissileTaint missile = new EntityMissileTaint(p_149695_1_, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); - p_149695_1_.spawnEntityInWorld(missile); + if (!p_149695_1_.isRemote) + p_149695_1_.spawnEntityInWorld(missile); entity.power -= 75000; entity.slots[0] = null; diff --git a/com/hbm/blocks/bomb/TurretSpitfire.java b/com/hbm/blocks/bomb/TurretSpitfire.java new file mode 100644 index 000000000..bc9f52cba --- /dev/null +++ b/com/hbm/blocks/bomb/TurretSpitfire.java @@ -0,0 +1,79 @@ +package com.hbm.blocks.bomb; + +import com.hbm.entity.particle.EntityDSmokeFX; +import com.hbm.entity.particle.EntityGasFlameFX; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.tileentity.bomb.TileEntityTurretSpitfire; +import com.hbm.tileentity.bomb.TileEntityTurretTau; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TurretSpitfire extends TurretBase { + + public TurretSpitfire(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityTurretSpitfire(); + } + + @Override + public boolean executeHoldAction(World world, int i, double yaw, double pitch, int x, int y, int z) { + + boolean flag = false; + + if(pitch < -60) + pitch = -60; + if(pitch > 30) + pitch = 30; + + if(i != 0 && i % 10 == 0) { + Vec3 vector = Vec3.createVectorHelper( + -Math.sin(yaw / 180.0F * (float) Math.PI) * Math.cos(pitch / 180.0F * (float) Math.PI), + -Math.sin(pitch / 180.0F * (float) Math.PI), + Math.cos(yaw / 180.0F * (float) Math.PI) * Math.cos(pitch / 180.0F * (float) Math.PI)); + + vector.normalize(); + + if(!world.isRemote) { + EntityBullet bullet = new EntityBullet(world); + bullet.posX = x + vector.xCoord * 2.75 + 0.5; + bullet.posY = y + vector.yCoord * 2.75 + 1.5; + bullet.posZ = z + vector.zCoord * 2.75 + 0.5; + + bullet.motionX = vector.xCoord * 3; + bullet.motionY = vector.yCoord * 3; + bullet.motionZ = vector.zCoord * 3; + + bullet.setDamage(65 + rand.nextInt(55)); + + world.spawnEntityInWorld(bullet); + + EntityGasFlameFX smoke = new EntityGasFlameFX(world); + smoke.posX = x + vector.xCoord * 4 + 0.5; + smoke.posY = y + vector.yCoord * 4 + 1; + smoke.posZ = z + vector.zCoord * 4 + 0.5; + + smoke.motionX = vector.xCoord * 0.25; + smoke.motionY = vector.yCoord * 0.25; + smoke.motionZ = vector.zCoord * 0.25; + + world.spawnEntityInWorld(smoke); + } + + world.playSoundEffect(x, y, z, "hbm:entity.oldExplosion", 1.0F, 0.5F); + + flag = true; + } + + return flag; + } + + @Override + public void executeReleaseAction(World world, int i, double yaw, double pitch, int x, int y, int z) { } +} diff --git a/com/hbm/blocks/generic/BlockCrate.java b/com/hbm/blocks/generic/BlockCrate.java index 8acc5aec3..ee3264be8 100644 --- a/com/hbm/blocks/generic/BlockCrate.java +++ b/com/hbm/blocks/generic/BlockCrate.java @@ -66,6 +66,8 @@ public class BlockCrate extends BlockFalling { list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_bf, 0); list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_mp40, 7); list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_uboinik, 7); + list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_lever_action, 5); + list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_bolt_action, 5); list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_osipr, 7); list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_immolator, 4); list1 = BlockCrate.addToListWithWeight(list1, ModItems.clip_cryolator, 4); @@ -76,6 +78,7 @@ public class BlockCrate extends BlockFalling { list1 = BlockCrate.addToListWithWeight(list1, ModItems.grenade_strong, 6); list1 = BlockCrate.addToListWithWeight(list1, ModItems.grenade_mk2, 4); list1 = BlockCrate.addToListWithWeight(list1, ModItems.grenade_flare, 4); + list1 = BlockCrate.addToListWithWeight(list1, ModItems.ammo_container, 2); List list = new ArrayList(); diff --git a/com/hbm/blocks/machine/DummyBlockRadGen.java b/com/hbm/blocks/machine/DummyBlockRadGen.java new file mode 100644 index 000000000..e1cf23085 --- /dev/null +++ b/com/hbm/blocks/machine/DummyBlockRadGen.java @@ -0,0 +1,106 @@ +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.machine.TileEntityAMSBase; +import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; + +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.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class DummyBlockRadGen extends BlockContainer implements IDummy { + + public static boolean safeBreak = false; + + public DummyBlockRadGen(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityDummy(); + } + + @Override + 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_radgen); + } + + @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; + + TileEntityMachineRadGen entity = (TileEntityMachineRadGen) world.getTileEntity(a, b, c); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_radgen, world, a, b, c); + } + } + return true; + } else { + return false; + } + } +} diff --git a/com/hbm/blocks/machine/MachineIGenerator.java b/com/hbm/blocks/machine/MachineIGenerator.java index ea35f3a1b..18bcfab8b 100644 --- a/com/hbm/blocks/machine/MachineIGenerator.java +++ b/com/hbm/blocks/machine/MachineIGenerator.java @@ -5,13 +5,16 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandler; import com.hbm.interfaces.IMultiblock; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityMachineIGenerator; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; 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.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -171,4 +174,22 @@ public class MachineIGenerator extends BlockContainer implements IMultiblock { world.func_147480_a(x, y, z, true); } } + + @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()) + { + TileEntityMachineIGenerator entity = (TileEntityMachineIGenerator) world.getTileEntity(x, y, z); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_industrial_generator, world, x, y, z); + } + return true; + } else { + return false; + } + } } diff --git a/com/hbm/blocks/machine/MachineRadGen.java b/com/hbm/blocks/machine/MachineRadGen.java new file mode 100644 index 000000000..46114afca --- /dev/null +++ b/com/hbm/blocks/machine/MachineRadGen.java @@ -0,0 +1,163 @@ +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.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.machine.TileEntityMachineIGenerator; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +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.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class MachineRadGen extends BlockContainer implements IMultiblock { + + public MachineRadGen(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineRadGen(); + + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(ModBlocks.machine_radgen); + } + + @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.radGenDimensionEast)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.radGenDimensionEast, ModBlocks.dummy_block_radgen); + + // + DummyBlockRadGen.safeBreak = true; + world.setBlock(x, y, z + 4, ModBlocks.dummy_port_radgen); + TileEntity te = world.getTileEntity(x, y, z + 4); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockRadGen.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.radGenDimensionSouth)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.radGenDimensionSouth, ModBlocks.dummy_block_radgen); + + // + DummyBlockRadGen.safeBreak = true; + world.setBlock(x - 4, y, z, ModBlocks.dummy_port_radgen); + TileEntity te = world.getTileEntity(x - 4, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockRadGen.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.radGenDimensionWest)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.radGenDimensionWest, ModBlocks.dummy_block_radgen); + + // + DummyBlockRadGen.safeBreak = true; + world.setBlock(x, y, z - 4, ModBlocks.dummy_port_radgen); + TileEntity te = world.getTileEntity(x, y, z - 4); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockRadGen.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.radGenDimensionNorth)) { + MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.radGenDimensionNorth, ModBlocks.dummy_block_radgen); + + // + DummyBlockRadGen.safeBreak = true; + world.setBlock(x + 4, y, z, ModBlocks.dummy_port_radgen); + TileEntity te = world.getTileEntity(x + 4, y, z); + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = x; + dummy.targetY = y; + dummy.targetZ = z; + } + DummyBlockRadGen.safeBreak = false; + // + + } else + world.func_147480_a(x, y, z, true); + } + } + + @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()) + { + TileEntityMachineRadGen entity = (TileEntityMachineRadGen) world.getTileEntity(x, y, z); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_radgen, world, x, y, z); + } + return true; + } else { + return false; + } + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeGascan.java b/com/hbm/entity/grenade/EntityGrenadeGascan.java index 4ccb3ba6c..6ae8165a9 100644 --- a/com/hbm/entity/grenade/EntityGrenadeGascan.java +++ b/com/hbm/entity/grenade/EntityGrenadeGascan.java @@ -25,7 +25,7 @@ public class EntityGrenadeGascan extends EntityGrenadeBase if (!this.worldObj.isRemote) { this.setDead(); - this.worldObj.newExplosion((Entity)null, (float)this.posX, (float)this.posY, (float)this.posZ, 10.0F, true, false); + this.worldObj.newExplosion((Entity)null, (float)this.posX, (float)this.posY, (float)this.posZ, 5.0F, true, false); } } } diff --git a/com/hbm/entity/logic/EntityMissileTest.java b/com/hbm/entity/logic/EntityMissileTest.java new file mode 100644 index 000000000..5e6768030 --- /dev/null +++ b/com/hbm/entity/logic/EntityMissileTest.java @@ -0,0 +1,124 @@ +package com.hbm.entity.logic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldProviderEnd; + +public class EntityMissileTest extends Entity +{ + /** Used to create the rotation animation when rendering the crystal. */ + public int innerRotation; + public int health; + private static final String __OBFID = "CL_00001658"; + + public EntityMissileTest(World p_i1698_1_) + { + super(p_i1698_1_); + this.preventEntitySpawning = true; + this.setSize(2.0F, 2.0F); + this.yOffset = this.height / 2.0F; + this.health = 5; + this.innerRotation = this.rand.nextInt(100000); + } + + @SideOnly(Side.CLIENT) + public EntityMissileTest(World p_i1699_1_, double p_i1699_2_, double p_i1699_4_, double p_i1699_6_) + { + this(p_i1699_1_); + this.setPosition(p_i1699_2_, p_i1699_4_, p_i1699_6_); + } + + /** + * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to + * prevent them from trampling crops + */ + protected boolean canTriggerWalking() + { + return false; + } + + protected void entityInit() + { + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); + } + + /** + * Called to update the entity's position/logic. + */ + public void onUpdate() + { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + ++this.innerRotation; + this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); + int i = MathHelper.floor_double(this.posX); + int j = MathHelper.floor_double(this.posY); + int k = MathHelper.floor_double(this.posZ); + + if (this.worldObj.provider instanceof WorldProviderEnd && this.worldObj.getBlock(i, j, k) != Blocks.fire) + { + this.worldObj.setBlock(i, j, k, Blocks.fire); + } + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + */ + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) {} + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + */ + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) {} + + @SideOnly(Side.CLIENT) + public float getShadowSize() + { + return 0.0F; + } + + /** + * Returns true if other Entities should be prevented from moving through this Entity. + */ + public boolean canBeCollidedWith() + { + return true; + } + + /** + * Called when the entity is attacked. + */ + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) + { + if (this.isEntityInvulnerable()) + { + return false; + } + else + { + if (!this.isDead && !this.worldObj.isRemote) + { + this.health = 0; + + if (this.health <= 0) + { + this.setDead(); + + if (!this.worldObj.isRemote) + { + this.worldObj.createExplosion((Entity)null, this.posX, this.posY, this.posZ, 6.0F, true); + } + } + } + + return true; + } + } +} diff --git a/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/com/hbm/entity/missile/EntityMissileBaseAdvanced.java index 99d8fd8e8..50c4946c7 100644 --- a/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ b/com/hbm/entity/missile/EntityMissileBaseAdvanced.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.entity.logic.IChunkLoader; import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.explosion.ExplosionLarge; import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; @@ -12,6 +13,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; @@ -28,11 +30,12 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk int startZ; int targetX; int targetZ; + int velocity; double decelY; double accelXZ; boolean isCluster = false; - float health = 10; private Ticket loaderTicket; + public int health = 10; public EntityMissileBaseAdvanced(World p_i1582_1_) { super(p_i1582_1_); @@ -43,51 +46,66 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk targetZ = (int) posZ; } - public boolean attackEntityFrom(DamageSource p_70097_1_, float f) + public boolean canBeCollidedWith() { - if (!this.worldObj.isRemote && !this.isDead) + return true; + } + + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) + { + if (this.isEntityInvulnerable()) { - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - this.setBeenAttacked(); - health -= f; - - if(health <= 0) { - } - - return true; - } + return false; } else { + if (!this.isDead && !this.worldObj.isRemote) + { + health -= p_70097_2_; + + if (this.health <= 0) + { + this.killMissile(); + } + } + return true; } } + + private void killMissile() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); + this.setDead(); + } public EntityMissileBaseAdvanced(World world, float x, float y, float z, int a, int b) { super(world); this.ignoreFrustumCheck = true; - this.posX = x; + /*this.posX = x; this.posY = y; - this.posZ = z; + this.posZ = z;*/ + this.setLocationAndAngles(x, y, z, 0, 0); startX = (int) x; startZ = (int) z; targetX = a; targetZ = b; - this.motionY = 1.5; + this.motionY = 2; Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); accelXZ = decelY = 1/vector.lengthVector(); - decelY *= 1.5; + decelY *= 2; + + velocity = 1; + + this.setSize(1.5F, 1.5F); } @Override protected void entityInit() { init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); } @Override @@ -104,6 +122,7 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk targetZ = nbt.getInteger("tZ"); startX = nbt.getInteger("sX"); startZ = nbt.getInteger("sZ"); + velocity = nbt.getInteger("veloc"); } @Override @@ -120,6 +139,7 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk nbt.setInteger("tZ", targetZ); nbt.setInteger("sX", startX); nbt.setInteger("sZ", startZ); + nbt.setInteger("veloc", velocity); } protected void rotation() { @@ -150,48 +170,67 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk @Override public void onUpdate() { - super.onUpdate(); - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; + //super.onUpdate(); + + if(velocity < 1) + velocity = 1; + if(this.ticksExisted > 40) + velocity = 3; + else if(this.ticksExisted > 20) + velocity = 2; + + this.dataWatcher.updateObject(8, Integer.valueOf(this.health)); - this.rotation(); - - this.motionY -= decelY; - - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - vector = vector.normalize(); - vector.xCoord *= accelXZ; - vector.zCoord *= accelXZ; - - if(motionY > 0) { - motionX += vector.xCoord; - motionZ += vector.zCoord; - } - - if(motionY < 0) { - motionX -= vector.xCoord; - motionZ -= vector.zCoord; - } - - if(!this.worldObj.isRemote) - this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + for(int i = 0; i < velocity; i++) { + //this.posX += this.motionX; + //this.posY += this.motionY; + //this.posZ += this.motionZ; + this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); + + this.rotation(); + + this.motionY -= decelY; + + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + vector = vector.normalize(); + vector.xCoord *= accelXZ; + vector.zCoord *= accelXZ; + + if(motionY > 0) { + motionX += vector.xCoord; + motionZ += vector.zCoord; + } + + if(motionY < 0) { + motionX -= vector.xCoord; + motionZ -= vector.zCoord; + } + + if(!this.worldObj.isRemote) + this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); + + if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && + this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && + this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - if(!this.worldObj.isRemote) - { - onImpact(); - } - this.setDead(); - } + if(!this.worldObj.isRemote) + { + onImpact(); + } + this.setDead(); + return; + } - if(motionY < -1 && this.isCluster && !worldObj.isRemote) { - cluster(); - this.setDead(); - } + if(motionY < -1 && this.isCluster && !worldObj.isRemote) { + cluster(); + this.setDead(); + return; + } + } } @Override @@ -202,6 +241,10 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk } public abstract void onImpact(); + + public abstract List getDebris(); + + public abstract ItemStack getDebrisRareDrop(); public void cluster() { } diff --git a/com/hbm/entity/missile/EntityMissileBunkerBuster.java b/com/hbm/entity/missile/EntityMissileBunkerBuster.java index ff14d5042..fa94b9363 100644 --- a/com/hbm/entity/missile/EntityMissileBunkerBuster.java +++ b/com/hbm/entity/missile/EntityMissileBunkerBuster.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileBunkerBuster extends EntityMissileBaseAdvanced { @@ -28,4 +33,20 @@ public class EntityMissileBunkerBuster extends EntityMissileBaseAdvanced { ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 5); } + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_buster_large); + } + } diff --git a/com/hbm/entity/missile/EntityMissileBurst.java b/com/hbm/entity/missile/EntityMissileBurst.java index 4aab894c1..6ed8909f3 100644 --- a/com/hbm/entity/missile/EntityMissileBurst.java +++ b/com/hbm/entity/missile/EntityMissileBurst.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileBurst extends EntityMissileBaseAdvanced { @@ -22,4 +27,20 @@ public class EntityMissileBurst extends EntityMissileBaseAdvanced { this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 50.0F, true); ExplosionLarge.explode(worldObj, posX, posY, posZ, 50.0F, true, true, true); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_generic_large); + } } diff --git a/com/hbm/entity/missile/EntityMissileBusterStrong.java b/com/hbm/entity/missile/EntityMissileBusterStrong.java index 6c54478d0..d9c257324 100644 --- a/com/hbm/entity/missile/EntityMissileBusterStrong.java +++ b/com/hbm/entity/missile/EntityMissileBusterStrong.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileBusterStrong extends EntityMissileBaseAdvanced { @@ -26,4 +31,20 @@ public class EntityMissileBusterStrong extends EntityMissileBaseAdvanced { ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 8); ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 8); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_buster_medium); + } } diff --git a/com/hbm/entity/missile/EntityMissileCluster.java b/com/hbm/entity/missile/EntityMissileCluster.java index 55aa48aa3..5addbaf95 100644 --- a/com/hbm/entity/missile/EntityMissileCluster.java +++ b/com/hbm/entity/missile/EntityMissileCluster.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileCluster extends EntityMissileBaseAdvanced { @@ -27,4 +32,19 @@ public class EntityMissileCluster extends EntityMissileBaseAdvanced { public void cluster() { this.onImpact(); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.thruster_small, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_cluster_small); + } } diff --git a/com/hbm/entity/missile/EntityMissileClusterStrong.java b/com/hbm/entity/missile/EntityMissileClusterStrong.java index df039f1cd..b5b20bf11 100644 --- a/com/hbm/entity/missile/EntityMissileClusterStrong.java +++ b/com/hbm/entity/missile/EntityMissileClusterStrong.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileClusterStrong extends EntityMissileBaseAdvanced { @@ -27,4 +32,20 @@ public class EntityMissileClusterStrong extends EntityMissileBaseAdvanced { public void cluster() { this.onImpact(); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_cluster_medium); + } } diff --git a/com/hbm/entity/missile/EntityMissileDoomsday.java b/com/hbm/entity/missile/EntityMissileDoomsday.java index a82b44f50..d1ca3946d 100644 --- a/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileDoomsday extends EntityMissileBaseAdvanced { @@ -93,4 +98,14 @@ public class EntityMissileDoomsday extends EntityMissileBaseAdvanced { } } + @Override + public List getDebris() { + return null; + } + + @Override + public ItemStack getDebrisRareDrop() { + return null; + } + } diff --git a/com/hbm/entity/missile/EntityMissileDrill.java b/com/hbm/entity/missile/EntityMissileDrill.java index b3312da10..71f07b63d 100644 --- a/com/hbm/entity/missile/EntityMissileDrill.java +++ b/com/hbm/entity/missile/EntityMissileDrill.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileDrill extends EntityMissileBaseAdvanced { @@ -26,4 +31,20 @@ public class EntityMissileDrill extends EntityMissileBaseAdvanced { ExplosionLarge.spawnShrapnels(worldObj, this.posX, this.posY, this.posZ, 12); ExplosionLarge.spawnRubble(worldObj, this.posX, this.posY, this.posZ, 12); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_buster_large); + } } diff --git a/com/hbm/entity/missile/EntityMissileEndo.java b/com/hbm/entity/missile/EntityMissileEndo.java index 172bfccc8..ab734f170 100644 --- a/com/hbm/entity/missile/EntityMissileEndo.java +++ b/com/hbm/entity/missile/EntityMissileEndo.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionThermo; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileEndo extends EntityMissileBaseAdvanced { @@ -22,4 +27,21 @@ public class EntityMissileEndo extends EntityMissileBaseAdvanced { ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); ExplosionThermo.freezer(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_thermo_exo); + } } diff --git a/com/hbm/entity/missile/EntityMissileExo.java b/com/hbm/entity/missile/EntityMissileExo.java index d4943c05c..fbbb58a76 100644 --- a/com/hbm/entity/missile/EntityMissileExo.java +++ b/com/hbm/entity/missile/EntityMissileExo.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionThermo; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileExo extends EntityMissileBaseAdvanced { @@ -22,4 +27,21 @@ public class EntityMissileExo extends EntityMissileBaseAdvanced { ExplosionThermo.scorch(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 30); ExplosionThermo.setEntitiesOnFire(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 40); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.plate_steel, 14)); + list.add(new ItemStack(ModItems.plate_aluminium, 8)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_thermo_exo); + } } diff --git a/com/hbm/entity/missile/EntityMissileGeneric.java b/com/hbm/entity/missile/EntityMissileGeneric.java index 51072b481..c3c6e1330 100644 --- a/com/hbm/entity/missile/EntityMissileGeneric.java +++ b/com/hbm/entity/missile/EntityMissileGeneric.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileGeneric extends EntityMissileBaseAdvanced { @@ -21,6 +26,21 @@ public class EntityMissileGeneric extends EntityMissileBaseAdvanced { ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); } + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.thruster_small, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_generic_small); + } + /*public EntityMissileGeneric(World p_i1582_1_) { super(p_i1582_1_); } diff --git a/com/hbm/entity/missile/EntityMissileIncendiary.java b/com/hbm/entity/missile/EntityMissileIncendiary.java index 52599eebb..9d16d13d9 100644 --- a/com/hbm/entity/missile/EntityMissileIncendiary.java +++ b/com/hbm/entity/missile/EntityMissileIncendiary.java @@ -1,11 +1,16 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileIncendiary extends EntityMissileBaseAdvanced { @@ -23,4 +28,19 @@ public class EntityMissileIncendiary extends EntityMissileBaseAdvanced { ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 10.0F, true, true, true); } + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 4)); + list.add(new ItemStack(ModItems.thruster_small, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_incendiary_small); + } + } diff --git a/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java b/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java index 93bb28501..5790f5271 100644 --- a/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java +++ b/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java @@ -1,10 +1,15 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileIncendiaryStrong extends EntityMissileBaseAdvanced { @@ -22,4 +27,20 @@ public class EntityMissileIncendiaryStrong extends EntityMissileBaseAdvanced { ExplosionLarge.explodeFire(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 25.0F, true, true, true); ExplosionChaos.flameDeath(this.worldObj, (int)((float)this.posX + 0.5F), (int)((float)this.posY + 0.5F), (int)((float)this.posZ + 0.5F), 25); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_incendiary_medium); + } } diff --git a/com/hbm/entity/missile/EntityMissileInferno.java b/com/hbm/entity/missile/EntityMissileInferno.java index aa08a0abc..8a41ea52c 100644 --- a/com/hbm/entity/missile/EntityMissileInferno.java +++ b/com/hbm/entity/missile/EntityMissileInferno.java @@ -1,10 +1,15 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileInferno extends EntityMissileBaseAdvanced { @@ -23,4 +28,20 @@ public class EntityMissileInferno extends EntityMissileBaseAdvanced { ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 25); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_incendiary_large); + } } diff --git a/com/hbm/entity/missile/EntityMissileMirv.java b/com/hbm/entity/missile/EntityMissileMirv.java index 328110bf8..cbee0c190 100644 --- a/com/hbm/entity/missile/EntityMissileMirv.java +++ b/com/hbm/entity/missile/EntityMissileMirv.java @@ -1,13 +1,18 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileMirv extends EntityMissileBaseAdvanced { @@ -45,4 +50,22 @@ public class EntityMissileMirv extends EntityMissileBaseAdvanced { this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 15.0F, true); ExplosionChaos.mirv(this.worldObj,this.posX, this.posY, this.posZ); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.warhead_mirvlet, 8)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_generic_large); + } } diff --git a/com/hbm/entity/missile/EntityMissileNuclear.java b/com/hbm/entity/missile/EntityMissileNuclear.java index f6552e4f7..deafb6e8e 100644 --- a/com/hbm/entity/missile/EntityMissileNuclear.java +++ b/com/hbm/entity/missile/EntityMissileNuclear.java @@ -1,12 +1,17 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileNuclear extends EntityMissileBaseAdvanced { @@ -38,4 +43,21 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced { this.worldObj.spawnEntityInWorld(entity2); } + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_nuclear); + } + } diff --git a/com/hbm/entity/missile/EntityMissileRain.java b/com/hbm/entity/missile/EntityMissileRain.java index a93793b8f..169fb4d0a 100644 --- a/com/hbm/entity/missile/EntityMissileRain.java +++ b/com/hbm/entity/missile/EntityMissileRain.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileRain extends EntityMissileBaseAdvanced { @@ -27,4 +32,20 @@ public class EntityMissileRain extends EntityMissileBaseAdvanced { public void cluster() { this.onImpact(); } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 16)); + list.add(new ItemStack(ModItems.plate_titanium, 10)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_cluster_large); + } } diff --git a/com/hbm/entity/missile/EntityMissileStrong.java b/com/hbm/entity/missile/EntityMissileStrong.java index da3378749..1065c708a 100644 --- a/com/hbm/entity/missile/EntityMissileStrong.java +++ b/com/hbm/entity/missile/EntityMissileStrong.java @@ -1,9 +1,14 @@ package com.hbm.entity.missile; +import java.util.ArrayList; +import java.util.List; + import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileStrong extends EntityMissileBaseAdvanced { @@ -21,4 +26,20 @@ public class EntityMissileStrong extends EntityMissileBaseAdvanced { ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); } + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_generic_medium); + } + } diff --git a/com/hbm/entity/missile/EntityMissileTaint.java b/com/hbm/entity/missile/EntityMissileTaint.java index a807bf2a9..ce13af531 100644 --- a/com/hbm/entity/missile/EntityMissileTaint.java +++ b/com/hbm/entity/missile/EntityMissileTaint.java @@ -1,9 +1,12 @@ package com.hbm.entity.missile; +import java.util.List; + import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockTaint; import com.hbm.explosion.ExplosionThermo; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityMissileTaint extends EntityMissileBaseAdvanced { @@ -28,4 +31,14 @@ public class EntityMissileTaint extends EntityMissileBaseAdvanced { worldObj.setBlock(a, b, c, ModBlocks.taint); } } + + @Override + public List getDebris() { + return null; + } + + @Override + public ItemStack getDebrisRareDrop() { + return null; + } } diff --git a/com/hbm/entity/projectile/EntityBullet.java b/com/hbm/entity/projectile/EntityBullet.java index f634599e6..735ff1b53 100644 --- a/com/hbm/entity/projectile/EntityBullet.java +++ b/com/hbm/entity/projectile/EntityBullet.java @@ -373,6 +373,7 @@ public class EntityBullet extends Entity implements IProjectile { if (this.inGround && !this.getIsCritical()) { this.setDead(); + } else { ++this.ticksInAir; Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); @@ -589,6 +590,8 @@ public class EntityBullet extends Entity implements IProjectile { this.ticksInAir = 0;*/ //this.setDead(); } + } else { + this.setDead(); } } else if (!this.getIsCritical()) { this.field_145791_d = movingobjectposition.blockX; diff --git a/com/hbm/entity/projectile/EntityPlasmaBeam.java b/com/hbm/entity/projectile/EntityPlasmaBeam.java index 20976f4af..f6a6dba5b 100644 --- a/com/hbm/entity/projectile/EntityPlasmaBeam.java +++ b/com/hbm/entity/projectile/EntityPlasmaBeam.java @@ -5,7 +5,9 @@ import java.util.List; import com.hbm.entity.grenade.EntityGrenadeZOMG; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionThermo; +import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -20,6 +22,8 @@ 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.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; @@ -303,11 +307,14 @@ public class EntityPlasmaBeam extends Entity implements IProjectile 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; } + + if(this.ticksExisted > 5 && surviveImmolation(entityplayer)) + movingobjectposition = null; } float f2; @@ -540,4 +547,14 @@ public class EntityPlasmaBeam extends Entity implements IProjectile byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } + + private boolean surviveImmolation(EntityPlayer player) { + if(player.inventory.hasItem(ModItems.gun_revolver_pip) && player.inventory.hasItem(ModItems.bottle_sparkle) && player.inventory.hasItem(ModItems.geiger_counter)) { + player.triggerAchievement(MainRegistry.achSacrifice); + player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 3 * 20, 6)); + return true; + } else { + return false; + } + } } diff --git a/com/hbm/explosion/ExplosionLarge.java b/com/hbm/explosion/ExplosionLarge.java index c95761a26..24af0fff9 100644 --- a/com/hbm/explosion/ExplosionLarge.java +++ b/com/hbm/explosion/ExplosionLarge.java @@ -1,5 +1,6 @@ package com.hbm.explosion; +import java.util.List; import java.util.Random; import com.hbm.entity.particle.EntityDSmokeFX; @@ -9,6 +10,8 @@ import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityShrapnel; import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -107,6 +110,53 @@ public class ExplosionLarge { } } + public static void spawnShrapnelShower(World world, double x, double y, double z, double motionX, double motionY, double motionZ, int count, double deviation) { + + for(int i = 0; i < count; i++) { + EntityShrapnel shrapnel = new EntityShrapnel(world); + shrapnel.posX = x; + shrapnel.posY = y; + shrapnel.posZ = z; + shrapnel.motionX = motionX + rand.nextGaussian() * deviation; + shrapnel.motionY = motionY + rand.nextGaussian() * deviation; + shrapnel.motionZ = motionZ + rand.nextGaussian() * deviation; + shrapnel.setTrail(rand.nextInt(3) == 0); + world.spawnEntityInWorld(shrapnel); + } + } + + public static void spawnMissileDebris(World world, double x, double y, double z, double motionX, double motionY, double motionZ, double deviation, List debris, ItemStack rareDrop) { + + if(debris != null) { + for(int i = 0; i < debris.size(); i++) { + if(debris.get(i) != null) { + int k = rand.nextInt(debris.get(i).stackSize + 1); + System.out.println(k); + for(int j = 0; j < k; j++) { + EntityItem item = new EntityItem(world, x, y, z, new ItemStack(debris.get(i).getItem())); + item.motionX = (motionX + rand.nextGaussian() * deviation) * 0.85; + item.motionY = (motionY + rand.nextGaussian() * deviation) * 0.85; + item.motionZ = (motionZ + rand.nextGaussian() * deviation) * 0.85; + item.posX = item.posX + item.motionX * 2; + item.posY = item.posY + item.motionY * 2; + item.posZ = item.posZ + item.motionZ * 2; + + world.spawnEntityInWorld(item); + } + } + } + } + + if(rareDrop != null && rand.nextInt(10) == 0) { + EntityItem item = new EntityItem(world, x, y, z, rareDrop.copy()); + item.motionX = motionX + rand.nextGaussian() * deviation * 0.1; + item.motionY = motionY + rand.nextGaussian() * deviation * 0.1; + item.motionZ = motionZ + rand.nextGaussian() * deviation * 0.1; + + world.spawnEntityInWorld(item); + } + } + public static void spawnOilSpills(World world, double x, double y, double z, int count) { for(int i = 0; i < count; i++) { diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index fc993c6b2..b6649763c 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -49,6 +49,7 @@ import com.hbm.tileentity.machine.TileEntityMachinePress; import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import com.hbm.tileentity.machine.TileEntityMachinePumpjack; import com.hbm.tileentity.machine.TileEntityMachineRTG; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; import com.hbm.tileentity.machine.TileEntityMachineReactor; import com.hbm.tileentity.machine.TileEntityMachineRefinery; import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; @@ -578,6 +579,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_radgen: + { + if(entity instanceof TileEntityMachineRadGen) + { + return new ContainerMachineRadGen(player.inventory, (TileEntityMachineRadGen) entity); + } + return null; + } } return null; } @@ -1092,6 +1102,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_radgen: + { + if(entity instanceof TileEntityMachineRadGen) + { + return new GUIMachineRadGen(player.inventory, (TileEntityMachineRadGen) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/handler/MultiblockHandler.java b/com/hbm/handler/MultiblockHandler.java index b075818c5..d30828668 100644 --- a/com/hbm/handler/MultiblockHandler.java +++ b/com/hbm/handler/MultiblockHandler.java @@ -73,6 +73,10 @@ public class MultiblockHandler { public static final int[] AMSLimiterDimensionWest = new int[] { 2, 2, 5, 0, 0, 0 }; public static final int[] AMSEmitterDimension = new int[] { 2, 2, 5, 0, 2, 2, }; public static final int[] AMSBaseDimension = new int[] { 1, 1, 1, 0, 1, 1, }; + public static final int[] radGenDimensionNorth = new int[] { 4, 1, 2, 0, 1, 1 }; + public static final int[] radGenDimensionEast = new int[] { 1, 1, 2, 0, 4, 1 }; + public static final int[] radGenDimensionSouth = new int[] { 1, 4, 2, 0, 1, 1 }; + public static final int[] radGenDimensionWest = new int[] { 1, 1, 2, 0, 1, 4 }; //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 d31f03876..029fc4ec0 100644 --- a/com/hbm/inventory/MachineRecipes.java +++ b/com/hbm/inventory/MachineRecipes.java @@ -529,17 +529,17 @@ public class MachineRecipes { return new ItemStack(ModItems.fluorite, 1); if(item.getItem() == ModItems.powder_coal) return new ItemStack(ModItems.fluorite, 1); - if(item.getItem() == ModItems.powder_iron) + if(mODE(item, "dustIron")) return new ItemStack(ModItems.powder_cobalt, 1); - if(item.getItem() == ModItems.powder_gold) + if(mODE(item, "dustGold")) return new ItemStack(ModItems.powder_lead, 1); - if(item.getItem() == ModItems.powder_quartz) + if(mODE(item, "dustNetherQuartz")) return new ItemStack(ModItems.sulfur, 1); - if(item.getItem() == ModItems.powder_uranium) + if(mODE(item, "dustUranium")) return new ItemStack(ModItems.powder_plutonium, 1); - if(item.getItem() == ModItems.powder_aluminium) + if(mODE(item, "dustAluminum")) return new ItemStack(ModItems.powder_quartz, 1); - if(item.getItem() == ModItems.powder_beryllium) + if(mODE(item, "dustBeryllium")) return new ItemStack(ModItems.powder_coal, 1); if(item.getItem() == ModItems.powder_schrabidium) return new ItemStack(ModItems.powder_reiium, 1); @@ -553,7 +553,7 @@ public class MachineRecipes { return new ItemStack(ModItems.powder_lanthanium, 1); if(item.getItem() == ModItems.powder_reiium) return new ItemStack(ModItems.powder_weidanium, 1); - if(item.getItem() == ModItems.powder_cobalt) + if(mODE(item, "dustCobalt")) return new ItemStack(ModItems.powder_copper, 1); if(item.getItem() == ModItems.powder_cerium) return new ItemStack(ModItems.powder_neodymium, 1); @@ -565,27 +565,27 @@ public class MachineRecipes { //BERYLLIUM if (part.getItem() == ModItems.part_beryllium) { - if(item.getItem() == ModItems.sulfur) + if(mODE(item, "dustSulfur")) return new ItemStack(ModItems.powder_titanium, 1); if(item.getItem() == ModItems.fluorite) return new ItemStack(ModItems.powder_aluminium, 1); - if(item.getItem() == ModItems.powder_iron) + if(mODE(item, "dustIron")) return new ItemStack(ModItems.powder_copper, 1); - if(item.getItem() == ModItems.powder_quartz) + if(mODE(item, "dustNetherQuartz")) return new ItemStack(ModItems.powder_titanium, 1); - if(item.getItem() == ModItems.powder_titanium) + if(mODE(item, "dustTitanium")) return new ItemStack(ModItems.powder_iron, 1); - if(item.getItem() == ModItems.powder_copper) + if(mODE(item, "dustCopper")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_tungsten) + if(mODE(item, "dustTungsten")) return new ItemStack(ModItems.powder_gold, 1); - if(item.getItem() == ModItems.powder_aluminium) + if(mODE(item, "dustAluminum")) return new ItemStack(ModItems.sulfur, 1); - if(item.getItem() == ModItems.powder_lead) + if(mODE(item, "dustLead")) return new ItemStack(ModItems.powder_astatine, 1); - if(item.getItem() == ModItems.powder_beryllium) + if(mODE(item, "dustBeryllium")) return new ItemStack(ModItems.niter, 1); - if(item.getItem() == ModItems.powder_lithium) + if(mODE(item, "dustLithium")) return new ItemStack(ModItems.niter, 1); if(item.getItem() == ModItems.powder_iodine) return new ItemStack(ModItems.powder_cerium, 1); @@ -609,37 +609,37 @@ public class MachineRecipes { //CARBON if (part.getItem() == ModItems.part_carbon) { - if(item.getItem() == ModItems.sulfur) + if(mODE(item, "dustSulfur")) return new ItemStack(ModItems.powder_iron, 1); if(item.getItem() == ModItems.niter) return new ItemStack(ModItems.powder_aluminium, 1); if(item.getItem() == ModItems.fluorite) return new ItemStack(ModItems.sulfur, 1); - if(item.getItem() == ModItems.powder_coal) + if(mODE(item, "dustCoal")) return new ItemStack(ModItems.powder_aluminium, 1); - if(item.getItem() == ModItems.powder_iron) + if(mODE(item, "dustIron")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_gold) + if(mODE(item, "dustGold")) return new ItemStack(ModItems.powder_astatine, 1); - if(item.getItem() == ModItems.powder_quartz) + if(mODE(item, "dustNetherQuartz")) return new ItemStack(ModItems.powder_iron, 1); if(item.getItem() == ModItems.powder_plutonium) return new ItemStack(ModItems.powder_tennessine, 1); if(item.getItem() == ModItems.powder_neptunium) return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_titanium) + if(mODE(item, "dustTitanium")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_copper) + if(mODE(item, "dustCopper")) return new ItemStack(ModItems.powder_strontium, 1); - if(item.getItem() == ModItems.powder_tungsten) + if(mODE(item, "dustTungsten")) return new ItemStack(ModItems.powder_lead, 1); - if(item.getItem() == ModItems.powder_aluminium) + if(mODE(item, "dustAluminum")) return new ItemStack(ModItems.powder_titanium, 1); - if(item.getItem() == ModItems.powder_lead) + if(mODE(item, "dustLead")) return new ItemStack(ModItems.powder_thorium, 1); - if(item.getItem() == ModItems.powder_beryllium) + if(mODE(item, "dustBeryllium")) return new ItemStack(ModItems.fluorite, 1); - if(item.getItem() == ModItems.powder_lithium) + if(mODE(item, "dustLithium")) return new ItemStack(ModItems.fluorite, 1); if(item.getItem() == ModItems.powder_iodine) return new ItemStack(ModItems.powder_tungsten, 1); @@ -649,7 +649,7 @@ public class MachineRecipes { return new ItemStack(ModItems.powder_verticium, 1); if(item.getItem() == ModItems.powder_strontium) return new ItemStack(ModItems.powder_iodine, 1); - if(item.getItem() == ModItems.powder_cobalt) + if(mODE(item, "dustCobalt")) return new ItemStack(ModItems.powder_strontium, 1); if(item.getItem() == ModItems.powder_bromine) return new ItemStack(ModItems.powder_niobium, 1); @@ -663,35 +663,35 @@ public class MachineRecipes { //COPPER if (part.getItem() == ModItems.part_copper) { - if(item.getItem() == ModItems.sulfur) + if(mODE(item, "dustSulfur")) return new ItemStack(ModItems.powder_bromine, 1); if(item.getItem() == ModItems.niter) return new ItemStack(ModItems.powder_cobalt, 1); if(item.getItem() == ModItems.fluorite) return new ItemStack(ModItems.powder_iron, 1); - if(item.getItem() == ModItems.powder_coal) + if(mODE(item, "dustCoal")) return new ItemStack(ModItems.powder_iron, 1); - if(item.getItem() == ModItems.powder_iron) + if(mODE(item, "dustIron")) return new ItemStack(ModItems.powder_niobium, 1); - if(item.getItem() == ModItems.powder_gold) + if(mODE(item, "dustGold")) return new ItemStack(ModItems.powder_lanthanium, 1); - if(item.getItem() == ModItems.powder_quartz) + if(mODE(item, "dustNetherQuartz")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_uranium) + if(mODE(item, "dustUranium")) return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_titanium) + if(mODE(item, "dustTitanium")) return new ItemStack(ModItems.powder_strontium, 1); - if(item.getItem() == ModItems.powder_copper) + if(mODE(item, "dustCopper")) return new ItemStack(ModItems.powder_niobium, 1); - if(item.getItem() == ModItems.powder_tungsten) + if(mODE(item, "dustTungsten")) return new ItemStack(ModItems.powder_actinium, 1); - if(item.getItem() == ModItems.powder_aluminium) + if(mODE(item, "dustAluminum")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_lead) + if(mODE(item, "dustLead")) return new ItemStack(ModItems.powder_tennessine, 1); - if(item.getItem() == ModItems.powder_beryllium) + if(mODE(item, "dustBeryllium")) return new ItemStack(ModItems.powder_bromine, 1); - if(item.getItem() == ModItems.powder_lithium) + if(mODE(item, "dustLithium")) return new ItemStack(ModItems.powder_bromine, 1); if(item.getItem() == ModItems.powder_iodine) return new ItemStack(ModItems.powder_astatine, 1); @@ -705,7 +705,7 @@ public class MachineRecipes { return new ItemStack(ModItems.powder_tungsten, 1); if(item.getItem() == ModItems.powder_verticium) return new ItemStack(ModItems.powder_unobtainium, 1); - if(item.getItem() == ModItems.powder_cobalt) + if(mODE(item, "dustCobalt")) return new ItemStack(ModItems.powder_iodine, 1); if(item.getItem() == ModItems.powder_bromine) return new ItemStack(ModItems.powder_caesium, 1); @@ -723,7 +723,7 @@ public class MachineRecipes { //PLUTONIUM if (part.getItem() == ModItems.part_plutonium) { - if(item.getItem() == ModItems.powder_uranium) + if(mODE(item, "dustUranium")) return new ItemStack(ModItems.powder_schrabidium, 1); if(item.getItem() == ModItems.powder_plutonium) return new ItemStack(ModItems.powder_schrabidium, 1); @@ -1683,6 +1683,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.magnet_dee, 3)); list.add(new ItemStack(ModItems.plate_steel, 12)); list.add(new ItemStack(ModItems.wire_advanced_alloy, 8)); + list.add(new ItemStack(ModItems.plate_polymer, 24)); break; case REACTOR_CORE: list.add(new ItemStack(ModItems.ingot_lead, 4)); @@ -1700,6 +1701,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.coil_copper_torus, 3)); list.add(new ItemStack(ModItems.ingot_steel, 3)); list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.plate_polymer, 12)); break; case GRAVITY_UNIT: list.add(new ItemStack(ModItems.coil_copper, 4)); @@ -1904,7 +1906,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.circuit_copper, 1)); list.add(new ItemStack(ModItems.wire_red_copper, 6)); list.add(new ItemStack(ModItems.powder_gold, 4)); - list.add(new ItemStack(ModItems.ingot_polymer, 1)); + list.add(new ItemStack(ModItems.plate_polymer, 1)); break; case RTG_PELLET: list.add(new ItemStack(ModItems.nugget_pu238, 5)); @@ -2300,6 +2302,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.coil_tungsten, 10)); list.add(new ItemStack(ModItems.wire_red_copper, 8)); list.add(new ItemStack(ModItems.circuit_red_copper, 4)); + list.add(new ItemStack(ModItems.plate_polymer, 8)); break; case CHEMPLANT: list.add(new ItemStack(ModItems.ingot_steel, 8)); @@ -2311,6 +2314,7 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.wire_tungsten, 3)); list.add(new ItemStack(ModItems.circuit_copper, 4)); list.add(new ItemStack(ModItems.circuit_red_copper, 2)); + list.add(new ItemStack(ModItems.plate_polymer, 8)); break; case TANK: list.add(new ItemStack(ModItems.ingot_steel, 2)); @@ -2335,7 +2339,8 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.turbine_tungsten, 1)); list.add(new ItemStack(ModItems.turbine_titanium, 7)); list.add(new ItemStack(ModItems.bolt_compound, 8)); - list.add(new ItemStack(ModItems.ingot_red_copper, 24)); + list.add(new ItemStack(ModItems.ingot_red_copper, 12)); + list.add(new ItemStack(ModItems.wire_red_copper, 24)); break; case TELEPORTER: list.add(new ItemStack(ModItems.ingot_titanium, 6)); @@ -3766,13 +3771,13 @@ public class MachineRecipes { list.add(new ItemStack(ModItems.circuit_red_copper, 1)); list.add(new ItemStack(ModItems.wire_gold, 6)); list.add(new ItemStack(ModItems.powder_lapis, 4)); - list.add(new ItemStack(ModItems.ingot_desh, 1)); + list.add(new ItemStack(ModItems.ingot_polymer, 1)); break; case CIRCUIT_5: list.add(new ItemStack(ModItems.circuit_gold, 1)); list.add(new ItemStack(ModItems.wire_schrabidium, 6)); list.add(new ItemStack(ModItems.powder_diamond, 4)); - list.add(new ItemStack(ModItems.powder_power, 1)); + list.add(new ItemStack(ModItems.ingot_desh, 1)); break; case POLYMER: list.add(new ItemStack(Items.coal, 2)); diff --git a/com/hbm/inventory/container/ContainerMachineRadGen.java b/com/hbm/inventory/container/ContainerMachineRadGen.java new file mode 100644 index 000000000..27db36fbf --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineRadGen.java @@ -0,0 +1,134 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.TileEntityMachineRadGen; +import com.hbm.tileentity.machine.TileEntityMachineSiren; + +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 ContainerMachineRadGen extends Container { + + private TileEntityMachineRadGen diFurnace; + private int fuel; + private int strength; + private int mode; + + public ContainerMachineRadGen(InventoryPlayer invPlayer, TileEntityMachineRadGen tedf) { + fuel = 0; + strength = 0; + mode = 0; + + diFurnace = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 17, 17)); + this.addSlotToContainer(new Slot(tedf, 1, 17, 53)); + this.addSlotToContainer(new Slot(tedf, 2, 125, 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 void addCraftingToCrafters(ICrafting crafting) { + super.addCraftingToCrafters(crafting); + } + + @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 <= 0) { + if (!this.mergeItemStack(var5, 1, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 1, false)) + { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return diFurnace.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.fuel != this.diFurnace.fuel) + { + par1.sendProgressBarUpdate(this, 0, this.diFurnace.fuel); + } + + if(this.strength != this.diFurnace.strength) + { + par1.sendProgressBarUpdate(this, 1, this.diFurnace.strength); + } + + if(this.mode != this.diFurnace.mode) + { + par1.sendProgressBarUpdate(this, 2, this.diFurnace.mode); + } + } + + this.fuel = this.diFurnace.fuel; + this.strength = this.diFurnace.strength; + this.mode = this.diFurnace.mode; + } + + @Override + public void updateProgressBar(int i, int j) { + if(i == 0) + { + diFurnace.fuel = j; + } + if(i == 1) + { + diFurnace.strength = j; + } + if(i == 2) + { + diFurnace.mode = j; + } + } +} diff --git a/com/hbm/inventory/container/ContainerMachineSiren.java b/com/hbm/inventory/container/ContainerMachineSiren.java index 022795523..b2e18e625 100644 --- a/com/hbm/inventory/container/ContainerMachineSiren.java +++ b/com/hbm/inventory/container/ContainerMachineSiren.java @@ -14,10 +14,8 @@ import net.minecraft.item.ItemStack; public class ContainerMachineSiren extends Container { private TileEntityMachineSiren diFurnace; - private int afterburner; public ContainerMachineSiren(InventoryPlayer invPlayer, TileEntityMachineSiren tedf) { - afterburner = 0; diFurnace = tedf; diff --git a/com/hbm/inventory/gui/GUIMachineRadGen.java b/com/hbm/inventory/gui/GUIMachineRadGen.java new file mode 100644 index 000000000..6dee951d2 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineRadGen.java @@ -0,0 +1,77 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineRadGen; +import com.hbm.inventory.container.ContainerMachineSiren; +import com.hbm.items.tool.ItemCassette.TrackType; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; +import com.hbm.tileentity.machine.TileEntityMachineSiren; + +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 GUIMachineRadGen extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_radgen.png"); + private TileEntityMachineRadGen radgen; + + public GUIMachineRadGen(InventoryPlayer invPlayer, TileEntityMachineRadGen tedf) { + super(new ContainerMachineRadGen(invPlayer, tedf)); + radgen = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 69 - 52, 16, 52, new String[] { "Fuel: " + radgen.getFuelScaled(100) + "%" }); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 143, guiTop + 69 - 52, 16, 52, radgen.power, radgen.maxPower); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.radgen.hasCustomInventoryName() ? this.radgen.getInventoryName() : I18n.format(this.radgen.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); + + int i = (int)radgen.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 143, guiTop + 69 - i, 16, 218 - i, 16, i); + + int j = radgen.getFuelScaled(52); + drawTexturedModalRect(guiLeft + 35, guiTop + 69 - j, 0, 218 - j, 16, j); + + int k = radgen.mode; + if(k == 1) + drawTexturedModalRect(guiLeft + 106, guiTop + 16, 32, 166, 18, 18); + if(k == 2) + drawTexturedModalRect(guiLeft + 106, guiTop + 16, 32, 184, 18, 18); + + int l = radgen.getStrengthScaled(12); + int sx = 140; + int sy = 166; + if(l > 0 && l < 7) { + sx = 176; + sy = (l - 1) * 36; + } + if(l > 6) { + sx = 212; + sy = (l - 7) * 36; + } + drawTexturedModalRect(guiLeft + 70, guiTop + 25, sx, sy, 36, 36); + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index c893d7021..813e0f11d 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -660,6 +660,12 @@ public class ModItems { public static Item gun_mp40_ammo; public static Item gun_uboinik; public static Item gun_uboinik_ammo; + public static Item gun_lever_action; + public static Item gun_lever_action_dark; + public static Item gun_lever_action_ammo; + public static Item gun_bolt_action; + public static Item gun_bolt_action_green; + public static Item gun_bolt_action_ammo; public static Item gun_xvl1456; public static Item gun_xvl1456_ammo; public static Item gun_osipr; @@ -1002,6 +1008,8 @@ public class ModItems { public static Item clip_bf; public static Item clip_mp40; public static Item clip_uboinik; + public static Item clip_lever_action; + public static Item clip_bolt_action; public static Item clip_osipr; public static Item clip_immolator; public static Item clip_cryolator; @@ -1009,6 +1017,8 @@ public class ModItems { public static Item clip_xvl1456; public static Item clip_emp; + public static Item ammo_container; + public static Item igniter; public static Item detonator; public static Item crate_caller; @@ -1023,6 +1033,7 @@ public class ModItems { public static Item turret_rocket_ammo; public static Item turret_flamer_ammo; public static Item turret_tau_ammo; + public static Item turret_spitfire_ammo; public static Item bucket_mud; public static Item bucket_acid; @@ -1719,6 +1730,12 @@ public class ModItems { gun_mp40 = new GunSMG().setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_mp40"); gun_uboinik_ammo = new Item().setUnlocalizedName("gun_uboinik_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_uboinik_ammo"); gun_uboinik = new GunShotgun().setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_lever_action_ammo = new Item().setUnlocalizedName("gun_lever_action_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_lever_action_ammo"); + gun_lever_action = new GunLeverAction().setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_lever_action"); + gun_lever_action_dark = new GunLeverAction().setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); + gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); + gun_bolt_action = new GunBoltAction().setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_bolt_action_green = new GunBoltAction().setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); gun_xvl1456 = new GunXVL1456().setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_xvl1456"); gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); @@ -1918,6 +1935,8 @@ public class ModItems { clip_bf = new ItemClip().setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); clip_mp40 = new ItemClip().setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_mp40"); clip_uboinik = new ItemClip().setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_uboinik"); + clip_lever_action = new ItemClip().setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_lever_action"); + clip_bolt_action = new ItemClip().setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_bolt_action"); clip_osipr = new ItemClip().setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_osipr"); clip_immolator = new ItemClip().setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_immolator"); clip_cryolator = new ItemClip().setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_cryolator"); @@ -1925,8 +1944,10 @@ public class ModItems { clip_xvl1456 = new ItemClip().setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_xvl1456"); clip_emp = new ItemClip().setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":clip_emp"); - ingot_euphemium = new ItemAntiCheat().setUnlocalizedName("ingot_euphemium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_euphemium"); - nugget_euphemium = new ItemAntiCheat().setUnlocalizedName("nugget_euphemium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_euphemium"); + ammo_container = new ItemClip().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":ammo_container"); + + ingot_euphemium = new ItemCustomLore().setUnlocalizedName("ingot_euphemium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_euphemium"); + nugget_euphemium = new ItemCustomLore().setUnlocalizedName("nugget_euphemium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":nugget_euphemium"); rod_quad_euphemium = new ItemCustomLore().setUnlocalizedName("rod_quad_euphemium").setCreativeTab(MainRegistry.tabParts).setMaxStackSize(1).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_euphemium"); watch = new ItemCustomLore().setUnlocalizedName("watch").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":watch"); apple_euphemium = new ItemAppleEuphemium(20, 100, false).setUnlocalizedName("apple_euphemium").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":apple_euphemium"); @@ -1949,6 +1970,7 @@ public class ModItems { turret_rocket_ammo = new ItemTurretAmmo(ModBlocks.turret_rocket, 8).setUnlocalizedName("turret_rocket_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_rocket_ammo"); turret_flamer_ammo = new ItemTurretAmmo(ModBlocks.turret_flamer, 200).setUnlocalizedName("turret_flamer_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_flamer_ammo"); turret_tau_ammo = new ItemTurretAmmo(ModBlocks.turret_tau, 100).setUnlocalizedName("turret_tau_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_tau_ammo"); + turret_spitfire_ammo = new ItemTurretAmmo(ModBlocks.turret_spitfire, 2).setUnlocalizedName("turret_spitfire_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":turret_spitfire_ammo"); template_folder = new ItemTemplateFolder().setUnlocalizedName("template_folder").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":template_folder"); assembly_template = new ItemAssemblyTemplate().setUnlocalizedName("assembly_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":assembly_template"); @@ -1963,10 +1985,10 @@ public class ModItems { fluid_barrel_infinite = new Item().setUnlocalizedName("fluid_barrel_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":fluid_barrel_infinite"); siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.tabMachine).setTextureName(RefStrings.MODID + ":cassette"); - euphemium_helmet = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 0).setUnlocalizedName("astatine_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); - euphemium_plate = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 1).setUnlocalizedName("astatine_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_plate"); - euphemium_legs = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 2).setUnlocalizedName("astatine_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_legs"); - euphemium_boots = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 3).setUnlocalizedName("astatine_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_boots"); + euphemium_helmet = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 0).setUnlocalizedName("euphemium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); + euphemium_plate = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 1).setUnlocalizedName("euphemium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_plate"); + euphemium_legs = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 2).setUnlocalizedName("euphemium_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_legs"); + euphemium_boots = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 3).setUnlocalizedName("euphemium_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_boots"); 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"); @@ -2852,6 +2874,8 @@ public class ModItems { GameRegistry.registerItem(rod_schrabidium_fuel_depleted, rod_schrabidium_fuel_depleted.getUnlocalizedName()); GameRegistry.registerItem(rod_dual_schrabidium_fuel_depleted, rod_dual_schrabidium_fuel_depleted.getUnlocalizedName()); GameRegistry.registerItem(rod_quad_schrabidium_fuel_depleted, rod_quad_schrabidium_fuel_depleted.getUnlocalizedName()); + + GameRegistry.registerItem(rod_quad_euphemium, rod_quad_euphemium.getUnlocalizedName()); GameRegistry.registerItem(rod_waste, rod_waste.getUnlocalizedName()); GameRegistry.registerItem(rod_dual_waste, rod_dual_waste.getUnlocalizedName()); @@ -2911,6 +2935,10 @@ public class ModItems { GameRegistry.registerItem(gun_bf, gun_bf.getUnlocalizedName()); GameRegistry.registerItem(gun_mp40, gun_mp40.getUnlocalizedName()); GameRegistry.registerItem(gun_uboinik, gun_uboinik.getUnlocalizedName()); + GameRegistry.registerItem(gun_lever_action, gun_lever_action.getUnlocalizedName()); + GameRegistry.registerItem(gun_lever_action_dark, gun_lever_action_dark.getUnlocalizedName()); + GameRegistry.registerItem(gun_bolt_action, gun_bolt_action.getUnlocalizedName()); + GameRegistry.registerItem(gun_bolt_action_green, gun_bolt_action_green.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); GameRegistry.registerItem(gun_immolator, gun_immolator.getUnlocalizedName()); @@ -2946,6 +2974,8 @@ public class ModItems { GameRegistry.registerItem(gun_bf_ammo, gun_bf_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_mp40_ammo, gun_mp40_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_uboinik_ammo, gun_uboinik_ammo.getUnlocalizedName()); + GameRegistry.registerItem(gun_lever_action_ammo, gun_lever_action_ammo.getUnlocalizedName()); + GameRegistry.registerItem(gun_bolt_action_ammo, gun_bolt_action_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr_ammo, gun_osipr_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr_ammo2, gun_osipr_ammo2.getUnlocalizedName()); @@ -2965,6 +2995,7 @@ public class ModItems { GameRegistry.registerItem(turret_rocket_ammo, turret_rocket_ammo.getUnlocalizedName()); GameRegistry.registerItem(turret_flamer_ammo, turret_flamer_ammo.getUnlocalizedName()); GameRegistry.registerItem(turret_tau_ammo, turret_tau_ammo.getUnlocalizedName()); + GameRegistry.registerItem(turret_spitfire_ammo, turret_spitfire_ammo.getUnlocalizedName()); //-C-l-i-p-s- Magazines GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); @@ -2981,6 +3012,8 @@ public class ModItems { GameRegistry.registerItem(clip_bf, clip_bf.getUnlocalizedName()); GameRegistry.registerItem(clip_mp40, clip_mp40.getUnlocalizedName()); GameRegistry.registerItem(clip_uboinik, clip_uboinik.getUnlocalizedName()); + GameRegistry.registerItem(clip_lever_action, clip_lever_action.getUnlocalizedName()); + GameRegistry.registerItem(clip_bolt_action, clip_bolt_action.getUnlocalizedName()); GameRegistry.registerItem(clip_xvl1456, clip_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(clip_osipr, clip_osipr.getUnlocalizedName()); GameRegistry.registerItem(clip_immolator, clip_immolator.getUnlocalizedName()); @@ -2988,6 +3021,8 @@ public class ModItems { GameRegistry.registerItem(clip_mp, clip_mp.getUnlocalizedName()); GameRegistry.registerItem(clip_emp, clip_emp.getUnlocalizedName()); + GameRegistry.registerItem(ammo_container, ammo_container.getUnlocalizedName()); + //Grenades GameRegistry.registerItem(grenade_generic, grenade_generic.getUnlocalizedName()); GameRegistry.registerItem(grenade_strong, grenade_strong.getUnlocalizedName()); @@ -3222,7 +3257,6 @@ public class ModItems { GameRegistry.registerItem(schrabidium_plate, schrabidium_plate.getUnlocalizedName()); GameRegistry.registerItem(schrabidium_legs, schrabidium_legs.getUnlocalizedName()); GameRegistry.registerItem(schrabidium_boots, schrabidium_boots.getUnlocalizedName()); - GameRegistry.registerItem(rod_quad_euphemium, rod_quad_euphemium.getUnlocalizedName()); GameRegistry.registerItem(euphemium_helmet, euphemium_helmet.getUnlocalizedName()); GameRegistry.registerItem(euphemium_plate, euphemium_plate.getUnlocalizedName()); GameRegistry.registerItem(euphemium_legs, euphemium_legs.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemStarterKit.java b/com/hbm/items/special/ItemStarterKit.java index 5ed6b066f..e4671fb78 100644 --- a/com/hbm/items/special/ItemStarterKit.java +++ b/com/hbm/items/special/ItemStarterKit.java @@ -247,6 +247,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_tau, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_schrabidium, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_lemon, 16)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_gascan, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_mk2, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_aschrab, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.grenade_nuke, 16)); @@ -311,6 +312,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_endo, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_exo, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_doomsday, 1)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_taint, 1)); } if(this == ModItems.t45_kit) @@ -319,11 +321,13 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_plate, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_legs, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_boots, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); + player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core)); } if(this == ModItems.stealth_boy) diff --git a/com/hbm/items/tool/ItemDesingatorRange.java b/com/hbm/items/tool/ItemDesingatorRange.java index d5dba5e1f..0dd41c773 100644 --- a/com/hbm/items/tool/ItemDesingatorRange.java +++ b/com/hbm/items/tool/ItemDesingatorRange.java @@ -43,15 +43,12 @@ public class ItemDesingatorRange extends Item { if(!(world.getBlock(x, y, z) instanceof LaunchPad)) { - if(stack.stackTagCompound != null) - { - stack.stackTagCompound.setInteger("xCoord", x); - stack.stackTagCompound.setInteger("zCoord", z); - } else { + if(stack.stackTagCompound == null) stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setInteger("xCoord", x); - stack.stackTagCompound.setInteger("zCoord", y); - } + + stack.stackTagCompound.setInteger("xCoord", x); + stack.stackTagCompound.setInteger("zCoord", z); + if(world.isRemote) { player.addChatMessage(new ChatComponentText("Position set to X:" + x + ", Z:" + z)); diff --git a/com/hbm/items/weapon/GunBoltAction.java b/com/hbm/items/weapon/GunBoltAction.java new file mode 100644 index 000000000..96a7fe445 --- /dev/null +++ b/com/hbm/items/weapon/GunBoltAction.java @@ -0,0 +1,263 @@ +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.Entity; +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.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +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 GunBoltAction extends Item { + + Random rand = new Random(); + + public int dmgMin = 16; + public int dmgMax = 28; + + public GunBoltAction() { + + this.maxStackSize = 1; + + if(this == ModItems.gun_bolt_action) + this.setMaxDamage(750); + if(this == ModItems.gun_bolt_action_green) + this.setMaxDamage(500); + } + + /** + * 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_bolt_action_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; + } + EntityBullet entityarrow1; + entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + + p_77615_1_.damageItem(1, p_77615_3_); + + p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShoot", 5.0F, 0.75F); + + if (flag) { } else { + p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_lever_action_ammo); + } + + if (!p_77615_2_.isRemote) { + p_77615_2_.spawnEntityInWorld(entityarrow1); + } + + setAnim(p_77615_1_, 1); + } + } + + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + int j = getAnim(stack); + + if(j > 0) { + if(j < 30) + setAnim(stack, j + 1); + else + setAnim(stack, 0); + + if(j == 15) + world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); + } + + } + + @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_lever_action_ammo)) { + if(this.getAnim(p_77659_1_) == 0) + 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) { + + if(this == ModItems.gun_bolt_action) { + list.add("-Star in a movie"); + list.add("-Have a laugh with a horse"); + list.add("-Ride a tipping train"); + list.add("-Lose friend to native americans"); + } + if(this == ModItems.gun_bolt_action_green) { + list.add("Floppy disks and pink, flashy orbs."); + } + list.add(""); + list.add("Ammo: 12x74 Slug"); + list.add("Damage: 16 - 28"); + } + + @Override + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); + return multimap; + } + + private static int getAnim(ItemStack stack) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("animation"); + + } + + private static void setAnim(ItemStack stack, int i) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("animation", i); + + } + + public static float getRotationFromAnim(ItemStack stack) { + float rad = 0.0174533F; + rad *= 7.5F; + int i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i < 10) + return rad * i; + else + return (rad * 10) - (rad * (i - 10)); + } + + public static float getLevRotationFromAnim(ItemStack stack) { + float rad = 0.0174533F; + rad *= 10F; + int i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i < 6) + return rad * i; + if(i > 14) + return rad * (5 - (i - 15)); + return rad * 5; + } + + public static float getOffsetFromAnim(ItemStack stack) { + float i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i < 10) + return i / 10; + else + return 2 - (i / 10); + } + + public static float getTransFromAnim(ItemStack stack) { + float i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i > 4 && i < 10) + return (i - 5) * 0.1F; + + if(i > 9 && i < 15) + return (10 * 0.1F) - ((i - 5) * 0.1F); + + return 0; + } + + @Override + public EnumRarity getRarity(ItemStack p_77613_1_) { + + return EnumRarity.uncommon; + } +} diff --git a/com/hbm/items/weapon/GunDampfmaschine.java b/com/hbm/items/weapon/GunDampfmaschine.java index 6bb0f7cc7..d57e41c6c 100644 --- a/com/hbm/items/weapon/GunDampfmaschine.java +++ b/com/hbm/items/weapon/GunDampfmaschine.java @@ -98,9 +98,9 @@ public class GunDampfmaschine extends Item { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Sometimes, to do the right thing,"); - list.add("you need to be the villain of"); - list.add("the pl-I mean me too, thanks."); + list.add("Sometimes, to do what’s right,"); + list.add("you have to become the villain of"); + list.add("the pi-I mean me too, thanks."); list.add(""); list.add("oh sorry how did this get here i'm not good with computer can somebody tell me how i can get out of here oh fiddlesticks this is not good oh no please can anybody hear me i am afraid please for the love of god somebody get me out of here"); list.add(""); diff --git a/com/hbm/items/weapon/GunLeverAction.java b/com/hbm/items/weapon/GunLeverAction.java new file mode 100644 index 000000000..283291554 --- /dev/null +++ b/com/hbm/items/weapon/GunLeverAction.java @@ -0,0 +1,294 @@ +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.Entity; +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.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +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 GunLeverAction extends Item { + + Random rand = new Random(); + + public int dmgMin = 8; + public int dmgMax = 16; + + public GunLeverAction() { + + this.maxStackSize = 1; + + if(this == ModItems.gun_lever_action) + this.setMaxDamage(500); + if(this == ModItems.gun_lever_action_dark) + this.setMaxDamage(750); + } + + /** + * 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_lever_action_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; + } + EntityBullet entityarrow1; + EntityBullet entityarrow2; + EntityBullet entityarrow3; + EntityBullet entityarrow4; + EntityBullet entityarrow5; + EntityBullet entityarrow6; + EntityBullet entityarrow7; + EntityBullet entityarrow8; + EntityBullet entityarrow9; + EntityBullet entityarrow10; + + if (!p_77615_3_.isSneaking()) { + entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow2 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow2.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow3 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow3.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow4 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow4.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow5 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow5.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow6 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow6.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow7 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow7.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow8 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow8.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow9 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow9.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow10 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); + entityarrow10.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + } else { + entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow2 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow2.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow3 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow3.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow4 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow4.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow5 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow5.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow6 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow6.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow7 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow7.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow8 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow8.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow9 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow9.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + entityarrow10 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); + entityarrow10.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); + } + + p_77615_1_.damageItem(1, p_77615_3_); + + p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); + + if (flag) { } else { + p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_lever_action_ammo); + } + + if (!p_77615_2_.isRemote) { + p_77615_2_.spawnEntityInWorld(entityarrow1); + p_77615_2_.spawnEntityInWorld(entityarrow2); + p_77615_2_.spawnEntityInWorld(entityarrow3); + p_77615_2_.spawnEntityInWorld(entityarrow4); + + if (!p_77615_3_.isSneaking()) { + + p_77615_2_.spawnEntityInWorld(entityarrow5); + p_77615_2_.spawnEntityInWorld(entityarrow6); + + int i = rand.nextInt(5); + + if(i >= 1) + p_77615_2_.spawnEntityInWorld(entityarrow7); + if(i >= 2) + p_77615_2_.spawnEntityInWorld(entityarrow8); + if(i >= 3) + p_77615_2_.spawnEntityInWorld(entityarrow9); + if(i >= 4) + p_77615_2_.spawnEntityInWorld(entityarrow10); + } + } + + setAnim(p_77615_1_, 1); + } + } + + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + int j = getAnim(stack); + + if(j > 0) { + if(j < 30) + setAnim(stack, j + 1); + else + setAnim(stack, 0); + + if(j == 15) + world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); + } + + } + + @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_lever_action_ammo)) { + if(this.getAnim(p_77659_1_) == 0) + 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) { + + if(this == ModItems.gun_lever_action) + list.add("Universal head-to-spaghetti-sauce converter."); + if(this == ModItems.gun_lever_action_dark) + list.add("Blow your legs off!"); + list.add(""); + list.add("Ammo: 12x74 Buckshot"); + list.add("Damage: 8 - 16"); + list.add("Projectiles: 6 - 10"); + } + + @Override + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); + return multimap; + } + + private static int getAnim(ItemStack stack) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("animation"); + + } + + private static void setAnim(ItemStack stack, int i) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("animation", i); + + } + + public static float getRotationFromAnim(ItemStack stack) { + float rad = 0.0174533F; + rad *= 7.5F; + int i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i < 10) + return rad * i; + else + return (rad * 10) - (rad * (i - 10)); + } + + public static float getOffsetFromAnim(ItemStack stack) { + float i = getAnim(stack); + + if(i < 10) + return 0; + i -= 10; + + if(i < 10) + return i / 10; + else + return 2 - (i / 10); + } + +} diff --git a/com/hbm/items/weapon/GunRevolver.java b/com/hbm/items/weapon/GunRevolver.java index 0efe71ed4..e8e016016 100644 --- a/com/hbm/items/weapon/GunRevolver.java +++ b/com/hbm/items/weapon/GunRevolver.java @@ -213,6 +213,8 @@ public class GunRevolver extends Item { } if (this == ModItems.gun_revolver_gold) { list.add("GoldenEye would be proud!"); + list.add("(GoldenEye isn't a person but"); + list.add("rather a satellite, taht's teh joek."); list.add(""); list.add("Ammo: Golden Bullets"); list.add("Damage: 20 - 30"); diff --git a/com/hbm/items/weapon/GunShotgun.java b/com/hbm/items/weapon/GunShotgun.java index c127c3561..400347dcc 100644 --- a/com/hbm/items/weapon/GunShotgun.java +++ b/com/hbm/items/weapon/GunShotgun.java @@ -30,7 +30,7 @@ public class GunShotgun extends Item { this.maxStackSize = 1; - if (this == ModItems.gun_revolver) { + if (this == ModItems.gun_uboinik) { this.setMaxDamage(500); } } @@ -174,7 +174,7 @@ public class GunShotgun extends Item { //list.add("POW! Haha!"); list.add("Abracadabra Tomanakara!"); list.add(""); - list.add("Ammo: Shotgun Shells"); + list.add("Ammo: 12x70 Buckshot"); list.add("Damage: 3 - 7"); list.add("Projectiles: 6 - 12"); } diff --git a/com/hbm/items/weapon/ItemClip.java b/com/hbm/items/weapon/ItemClip.java index 97a458cb4..7e6374599 100644 --- a/com/hbm/items/weapon/ItemClip.java +++ b/com/hbm/items/weapon/ItemClip.java @@ -128,6 +128,22 @@ public class ItemClip extends Item { } } + if(this == ModItems.clip_lever_action) + { + if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action_ammo, 24))) + { + //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_lever_action_ammo, 24), false); + } + } + + if(this == ModItems.clip_bolt_action) + { + if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_bolt_action_ammo, 24))) + { + //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_bolt_action_ammo, 24), false); + } + } + if(this == ModItems.clip_mirv) { if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mirv_ammo, 3))) @@ -184,6 +200,76 @@ public class ItemClip extends Item { } } + if(this == ModItems.ammo_container) + { + if(player.inventory.hasItem(ModItems.gun_revolver_iron)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_iron_ammo, 24)); + if(player.inventory.hasItem(ModItems.gun_revolver)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_revolver_gold)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_gold_ammo, 4)); + if(player.inventory.hasItem(ModItems.gun_revolver_lead)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_lead_ammo, 6)); + if(player.inventory.hasItem(ModItems.gun_revolver_schrabidium)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_schrabidium_ammo, 2)); + if(player.inventory.hasItem(ModItems.gun_revolver_cursed)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_cursed_ammo, 8)); + if(player.inventory.hasItem(ModItems.gun_revolver_nightmare)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_nightmare_ammo, 6)); + if(player.inventory.hasItem(ModItems.gun_revolver_nightmare2)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 3)); + if(player.inventory.hasItem(ModItems.gun_revolver_pip)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_pip_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_rpg)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_rpg_ammo, 3)); + if(player.inventory.hasItem(ModItems.gun_fatman)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_fatman_ammo, 2)); + if(player.inventory.hasItem(ModItems.gun_mirv)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mirv_ammo, 1)); + if(player.inventory.hasItem(ModItems.gun_bf)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_bf_ammo, 1)); + if(player.inventory.hasItem(ModItems.gun_mp40)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mp40_ammo, 32)); + if(player.inventory.hasItem(ModItems.gun_uboinik)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_uboinik_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_lever_action)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_lever_action_dark)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_bolt_action)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_bolt_action_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_bolt_action_green)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_bolt_action_ammo, 12)); + if(player.inventory.hasItem(ModItems.gun_xvl1456)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_xvl1456_ammo, 40)); + if(player.inventory.hasItem(ModItems.gun_osipr)) { + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_osipr_ammo, 30)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_osipr_ammo2, 1)); + } + if(player.inventory.hasItem(ModItems.gun_immolator)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_immolator_ammo, 40)); + if(player.inventory.hasItem(ModItems.gun_cryolator)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_cryolator_ammo, 40)); + if(player.inventory.hasItem(ModItems.gun_mp)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_mp_ammo, 34)); + if(player.inventory.hasItem(ModItems.gun_zomg)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.nugget_euphemium, 1)); + if(player.inventory.hasItem(ModItems.gun_emp)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_emp_ammo, 8)); + if(player.inventory.hasItem(ModItems.gun_revolver_inverted)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_ammo, 1)); + if(player.inventory.hasItem(ModItems.gun_jack)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_jack_ammo, 3)); + if(player.inventory.hasItem(ModItems.gun_spark)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_spark_ammo, 2)); + if(player.inventory.hasItem(ModItems.gun_hp)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_hp_ammo, 6)); + if(player.inventory.hasItem(ModItems.gun_euthanasia)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_euthanasia_ammo, 8)); + if(player.inventory.hasItem(ModItems.gun_defabricator)) + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_defabricator_ammo, 6)); + } + return stack; } diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index cf176c7e2..82c31f775 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -293,7 +293,8 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_turbofan || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_limiter || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_emitter || - world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_base) + world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_base || + world.getBlock(x, y, z) == ModBlocks.dummy_port_radgen) { return true; } @@ -829,44 +830,44 @@ public class Library { ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 15; i++) + for(int i = 0; i < 50; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_schrabidium && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 15; i++) + for(int i = 0; i < 50; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_schrabidium_cell && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 15; i++) + for(int i = 0; i < 50; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_schrabidium_cell_2 && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 15; i++) + for(int i = 0; i < 50; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_schrabidium_cell_4 && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 200; i++) + for(int i = 0; i < 20000; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_spark && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 200; i++) + for(int i = 0; i < 20000; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_spark_cell_6 && ItemBattery.getCharge(slots[index]) > 0) { power += 100; ((ItemBattery)slots[index].getItem()).dischargeBattery(slots[index], 1); } else break; - for(int i = 0; i < 200; i++) + for(int i = 0; i < 20000; i++) if(power + 100 <= maxPower && slots[index] != null && slots[index].getItem() == ModItems.battery_spark_cell_25 && ItemBattery.getCharge(slots[index]) > 0) { power += 100; diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 420921a30..9c63f42c3 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.27 BETA (Selenium-Luna-X02)"; + public static final String VERSION = "1.0.27 BETA (6_24-VT-X04)"; //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 188458abf..86179e85b 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -72,9 +72,11 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretLight.class, new RenderLightTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFlamer.class, new RenderFlamerTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretTau.class, new RenderTauTurret()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSpitfire.class, new RenderSpitfireTurret()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpjack.class, new RenderPumpjack()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbofan.class, new RenderTurbofan()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); @@ -169,6 +171,10 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_twigun, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_dampfmaschine, new ItemRenderBullshit()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action, new ItemRenderGunAnim()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderGunAnim()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderGunAnim()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 0ed15e3b8..e4d814694 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -58,6 +58,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.bolt_compound, 1), new Object[] { "PDP", "PTP", "PDP", 'D', ModItems.bolt_dura_steel, 'T', ModItems.bolt_tungsten, 'P', "plateTitanium" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.pellet_coal, 1), new Object[] { "PFP", "FOF", "PFP", 'P', "dustCoal", 'F', Items.flint, 'O', ModBlocks.gravel_obsidian })); GameRegistry.addRecipe(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ModItems.ingot_polymer}); + GameRegistry.addRecipe(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "SWS", 'S', Items.string, 'W', Blocks.wool }); + GameRegistry.addRecipe(new ItemStack(ModItems.plate_polymer, 4), new Object[] { "BB", 'B', Items.brick }); //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" })); @@ -492,7 +494,7 @@ public class CraftingManager { //GameRegistry.addRecipe(new ItemStack(ModItems.missile_endo, 1), new Object[] { "W", "T", "M", 'W', ModItems.warhead_thermo_endo, 'T', ModItems.fuel_tank_large, 'M', ModItems.thruster_large }); //GameRegistry.addRecipe(new ItemStack(ModItems.missile_exo, 1), new Object[] { "W", "T", "M", 'W', ModItems.warhead_thermo_exo, 'T', ModItems.fuel_tank_large, 'M', ModItems.thruster_large }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "AHA", "TCT", "TPT", 'T', "plateTitanium", 'A', "plateAluminum", 'S', "plateSteel", 'C', "ingotCopper", 'P', Item.getItemFromBlock(Blocks.piston), 'H', Item.getItemFromBlock(Blocks.hopper) })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "AHA", "TCT", "TPT", 'T', "plateIron", 'A', "plateAluminum", 'S', "plateSteel", 'C', "ingotCopper", 'P', Item.getItemFromBlock(Blocks.piston), 'H', Item.getItemFromBlock(Blocks.hopper) })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_centrifuge), 1), new Object[] { " T ", "RDR", "RSR", 'S', "plateSteel", 'T', ModItems.centrifuge_tower, 'W', ModItems.coil_tungsten, 'R', ModItems.coil_copper, 'D', Item.getItemFromBlock(ModBlocks.machine_difurnace_off) })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), 1), new Object[] { "WTW", "WTW", "SRS", 'S', "plateTitanium", 'W', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'W', ModItems.coil_tungsten,'R', "ingotRedstoneAlloy" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_puf6_tank), 1), new Object[] { "WTW", "WTW", "SRS", 'S', "plateSteel", 'W', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'W', ModItems.coil_tungsten,'R', "ingotRedstoneAlloy" })); @@ -502,8 +504,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 1), new Object[] { "BBB", "WFW", "RRR", 'B', ModItems.ingot_beryllium, 'R', ModItems.coil_tungsten, 'W', ModItems.wire_red_copper, 'F', Item.getItemFromBlock(Blocks.furnace) }); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_generator), 1), new Object[] { "SLS", "LCL", "SLS", 'C', ModItems.circuit_red_copper, 'L', ModItems.rod_quad_lead, 'S', "ingotSteel" })); //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', "ingotPolymer", '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', ModItems.plate_polymer, 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 16), new Object[] { "WRW", "RIR", "WRW", 'W', ModItems.plate_polymer, 'I', "ingotRedstoneAlloy", 'R', ModItems.wire_red_copper })); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, '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', ModItems.plate_polymer, '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" })); @@ -636,24 +638,24 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " SW", 'S', "plateSteel", 'W', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_rpg_ammo, 8), new Object[] { "SI ", "ITI", " I ", 'S', "plateSteel", 'T', Item.getItemFromBlock(Blocks.tnt), 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSS", " RW", 'S', "plateSteel", 'W', Item.getItemFromBlock(Blocks.planks), 'R', ModItems.wire_aluminium })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_ammo, 16), new Object[] { "L", "S", 'L', "plateLead", 'S', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_ammo, 16), new Object[] { "L", "S", "G", 'L', "plateLead", 'S', "plateSteel", 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_iron, 1), new Object[] { "SSS", " RW", 'S', "plateIron", 'W', Item.getItemFromBlock(Blocks.planks), 'R', ModItems.wire_aluminium })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_iron_ammo, 16), new Object[] { "L", "S", 'L', "plateIron", 'S', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_iron_ammo, 16), new Object[] { "L", "S", "G", 'L', "plateIron", 'S', "plateCopper", 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSS", " RW", 'S', "plateGold", 'W', "ingotGold", 'R', ModItems.wire_gold })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_gold_ammo, 16), new Object[] { "L", "S", 'L', ModItems.plate_gold, 'S', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_gold_ammo, 16), new Object[] { "L", "L", "S", 'L', ModItems.plate_gold, 'S', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead, 1), new Object[] { "SSS", " RW", 'S', "plateLead", 'W', "ingotTungsten", 'R', ModItems.wire_tungsten })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", 'L', "paneGlass", 'S', ModItems.ingot_u235 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", 'L', "paneGlass", 'S', ModItems.ingot_pu239 })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", 'L', "paneGlass", 'S', ModItems.nuclear_waste })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", 'L', "paneGlass", 'S', ModItems.trinitite })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", "G", 'L', "paneGlass", 'S', ModItems.ingot_u235, 'G', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", "G", 'L', "paneGlass", 'S', ModItems.ingot_pu239, 'G', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", "G", 'L', "paneGlass", 'S', ModItems.nuclear_waste, 'G', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_lead_ammo, 16), new Object[] { "L", "S", "G", 'L', "paneGlass", 'S', ModItems.trinitite, 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_schrabidium, 1), new Object[] { "SSS", " RW", 'S', ModBlocks.block_schrabidium, 'W', "ingotTungsten", 'R', ModItems.wire_schrabidium })); GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_schrabidium_ammo, 16), new Object[] { "L", "N", "S", 'L', ModItems.plate_schrabidium, 'S', Items.gunpowder, 'N', Items.nether_star }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', "plateSteel", 'I', "ingotSteel", 'R', ModItems.wire_red_copper, 'T', "plateTitanium", 'M', ModItems.motor })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_cursed_ammo, 32), new Object[] { "L", "L", 'L', "plateSteel", 'S', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SSE", " RW", 'S', "plateSteel", 'W', Item.getItemFromBlock(Blocks.planks), 'R', ModItems.wire_aluminium, 'E', ModItems.powder_power })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_nightmare_ammo, 16), new Object[] { "L", "S", 'L', "plateDenseLead", 'S', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_nightmare_ammo, 16), new Object[] { "L", "S", "G", 'L', "plateDenseLead", 'S', "plateSteel", 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSS", "RRW", 'S', "plateDenseLead", 'W', "ingotTungsten", 'R', ModItems.wire_gold })); - GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 6), new Object[] { "L", "S", 'L', ModItems.powder_power, 'S', Items.gunpowder }); + GameRegistry.addRecipe(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 6), new Object[] { "L", "S", "G", 'L', ModItems.powder_power, 'S', ModItems.plate_polymer, 'G', Items.gunpowder }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "III", "WPH", 'S', "plateSteel", 'I', "ingotSteel", 'W', ModItems.wire_aluminium, 'H', ModItems.hull_small_steel, 'P', Item.getItemFromBlock(Blocks.piston) })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_fatman_ammo, 2), new Object[] { " S ", "SPS", "ITI", 'S', "plateSteel", 'P', ModItems.ingot_pu239, 'T', Item.getItemFromBlock(Blocks.tnt), 'I', "plateIron" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', "plateSteel", 'L', "plateLead", 'W', ModItems.wire_gold, 'F', ModItems.gun_fatman })); @@ -661,9 +663,9 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bf, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ModItems.plate_paa, 'L', "plateDenseLead", 'W', ModItems.wire_advanced_alloy, 'F', ModItems.gun_mirv })); GameRegistry.addRecipe(new ItemStack(ModItems.gun_bf_ammo, 1), new Object[] { "AEA", "SHS", "AEA", 'H', ModItems.hull_small_steel, 'A', ModItems.cell_antimatter, 'S', ModItems.cell_anti_schrabidium, 'E', ModItems.powder_power }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "III", " SW", " S ", 'S', "plateSteel", 'I', "ingotSteel", 'W', "plankWood" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_mp40_ammo, 16), new Object[] { "P", "G", 'P', "plateCopper", 'G', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_mp40_ammo, 16), new Object[] { "L", "P", "G", 'P', "plateCopper", 'L', "plateLead", 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "II ", "SPW", 'P', "plateSteel", 'I', "ingotSteel", 'W', "plankWood", 'S', Items.stick })); - GameRegistry.addRecipe(new ItemStack(ModItems.gun_uboinik_ammo, 6), new Object[] { "P", "G", 'P', ModItems.pellet_buckshot, 'G', Items.gunpowder }); + GameRegistry.addRecipe(new ItemStack(ModItems.gun_uboinik_ammo, 6), new Object[] { "P", "S", "G", 'P', ModItems.pellet_buckshot, 'S', ModItems.plate_polymer, 'G', Items.gunpowder }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', "plateSteel", 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.circuit_copper })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_xvl1456_ammo, 64), new Object[] { "SSS", "SRS", "SSS", 'S', "plateSteel", 'R', ModItems.rod_quad_uranium_fuel_depleted })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_xvl1456_ammo, 32), new Object[] { " S ", "SRS", " S ", 'S', "plateSteel", 'R', ModItems.rod_dual_uranium_fuel_depleted })); @@ -688,7 +690,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_emp, 1), new Object[] { "CPG", "CMF", "CPI", 'C', ModItems.coil_copper, 'P', "plateLead", 'G', ModItems.circuit_gold, 'M', ModItems.magnetron, 'I', "ingotTungsten", 'F', ModItems.fuse })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_emp_ammo, 8), new Object[] { "IGI", "IPI", "IPI", 'G', "plateGold", 'I', "plateIron", 'P', ModItems.powder_power })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_jack, 1), new Object[] { "WW ", "TSD", " TT", 'W', "ingotWeidanium", 'T', ModItems.toothpicks, 'S', ModItems.gun_uboinik, 'D', ModItems.ducttape })); - GameRegistry.addShapedRecipe(new ItemStack(ModItems.gun_jack_ammo, 3), new Object[] { "PP", "GG", 'G', Items.gunpowder, 'P', ModItems.pellet_buckshot }); + GameRegistry.addShapedRecipe(new ItemStack(ModItems.gun_jack_ammo, 3), new Object[] { "PP", "II", "GG", 'G', Items.gunpowder, 'P', ModItems.pellet_buckshot, 'I', ModItems.plate_polymer }); 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 }); @@ -698,6 +700,12 @@ public class CraftingManager { 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.gun_lever_action, 1), new Object[] { "PPI", "SWD", 'P', "plateIron", 'I', "ingotIron", 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_aluminium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_lever_action_dark, 1), new Object[] { "PPI", "SWD", 'P', "plateSteel", 'I', "ingotSteel", 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_aluminium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_lever_action_ammo, 6), new Object[] { "P", "S", "G", 'P', ModItems.pellet_buckshot, 'S', "plateCopper", 'G', Items.gunpowder })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action, 1), new Object[] { "PPI", "SWD", 'P', "plateSteel", 'I', "ingotSteel", 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_copper })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action_green, 1), new Object[] { "PPI", "SWD", 'P', "plateIron", 'I', "ingotIron", 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_copper })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action_ammo, 2), new Object[] { "P", "S", "G", 'P', "nuggetLead", 'S', ModItems.plate_polymer, 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.turret_light_ammo, 1), new Object[] { " L ", "IGI", "ICI", 'L', "plateLead", 'I', "plateIron", 'C', "plateCopper", 'G', Items.gunpowder })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.turret_heavy_ammo, 1), new Object[] { "LGC", "LGC", "LGC", 'L', "plateLead", 'C', "plateCopper", 'G', Items.gunpowder })); @@ -1026,7 +1034,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { "dustSteel", ModItems.powder_cobalt })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { "dustIron", "dustCoal", "dustTungsten", "dustTungsten" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { "dustIron", "dustCoal", ModItems.powder_cobalt, ModItems.powder_cobalt })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_polymer, 2), new Object[] { "dustCoal", "dustSalpeter" })); + //GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.powder_polymer, 2), new Object[] { "dustCoal", "dustSalpeter" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.saw, 1), new Object[] { "IIL", "PP ", 'P', "plateSteel", 'I', "ingotSteel", 'L', Items.leather })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.bat, 1), new Object[] { "P", "P", "S", 'S', "plateSteel", 'P', "plankWood" })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 05dae911f..9d9bf84bb 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -12,6 +12,7 @@ import net.minecraft.potion.Potion; import net.minecraft.stats.Achievement; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.AchievementPage; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.LoadingCallback; import net.minecraftforge.common.ForgeChunkManager.Ticket; @@ -69,6 +70,7 @@ import com.hbm.entity.grenade.EntityGrenadeStrong; import com.hbm.entity.grenade.EntityGrenadeTau; import com.hbm.entity.grenade.EntityGrenadeZOMG; import com.hbm.entity.item.EntityMinecartTest; +import com.hbm.entity.logic.EntityMissileTest; import com.hbm.entity.logic.EntityNukeExplosion; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; import com.hbm.entity.logic.EntityNukeExplosionMK3; @@ -162,6 +164,7 @@ import com.hbm.tileentity.bomb.TileEntityTurretFlamer; import com.hbm.tileentity.bomb.TileEntityTurretHeavy; import com.hbm.tileentity.bomb.TileEntityTurretLight; import com.hbm.tileentity.bomb.TileEntityTurretRocket; +import com.hbm.tileentity.bomb.TileEntityTurretSpitfire; import com.hbm.tileentity.bomb.TileEntityTurretTau; import com.hbm.tileentity.conductor.TileEntityCable; import com.hbm.tileentity.conductor.TileEntityFluidDuct; @@ -217,6 +220,7 @@ import com.hbm.tileentity.machine.TileEntityMachinePress; import com.hbm.tileentity.machine.TileEntityMachinePuF6Tank; import com.hbm.tileentity.machine.TileEntityMachinePumpjack; import com.hbm.tileentity.machine.TileEntityMachineRTG; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; import com.hbm.tileentity.machine.TileEntityMachineReactor; import com.hbm.tileentity.machine.TileEntityMachineRefinery; import com.hbm.tileentity.machine.TileEntityMachineSPP; @@ -344,6 +348,8 @@ public class MainRegistry public static Achievement achRadiation; public static Achievement achSchrabidium; public static Achievement achEuphemium; + public static Achievement achSacrifice; + public static Achievement achImpossible; public static boolean enableDebugMode = true; public static boolean enableMycelium = false; @@ -392,8 +398,8 @@ public class MainRegistry public static int factoryStructure = 1000; public static int dudStructure = 500; public static int spaceshipStructure = 1000; - public static int meteorStrikeChance = 50000; - public static int meteorShowerChance = 500; + public static int meteorStrikeChance = 20 * 60 * 90; + public static int meteorShowerChance = 20 * 60 * 3; public static int meteorShowerDuration = 6000; public static int limitExplosionLifespan = 0; @@ -547,6 +553,8 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityMachineSiren.class, "tileentity_siren"); GameRegistry.registerTileEntity(TileEntityTaint.class, "tileentity_taint"); GameRegistry.registerTileEntity(TileEntityMachineSPP.class, "tileentity_spp"); + GameRegistry.registerTileEntity(TileEntityTurretSpitfire.class, "tileentity_turret_spitfire"); + GameRegistry.registerTileEntity(TileEntityMachineRadGen.class, "tileentity_radgen"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -669,6 +677,13 @@ public class MainRegistry achievementCraftBreedingReactor, achievementCraftCentrifuge }));*/ + achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", 0, 0, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); + achImpossible = new Achievement("achievement.impossible", "impossible", 1, 0, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); + + AchievementPage.registerAchievementPage(new AchievementPage("NTM Achievements", new Achievement[]{ + achSacrifice, + achImpossible + })); OreDictionary.registerOre("ingotUranium", ModItems.ingot_uranium); OreDictionary.registerOre("ingotUranium235", ModItems.ingot_u235); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 758b28c58..c890497b2 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -13,12 +13,16 @@ public class ResourceManager { //Turrets public static final IModelCustom turret_heavy_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_heavy_base.obj")); public static final IModelCustom turret_heavy_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_heavy_rotor.obj")); + + public static final IModelCustom turret_spitfire_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_spitfire_base.obj")); + public static final IModelCustom turret_spitfire_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_spitfire_rotor.obj")); public static final IModelCustom turret_heavy_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_heavy_gun.obj")); public static final IModelCustom turret_rocket_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_rocket_gun.obj")); public static final IModelCustom turret_light_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_light_gun.obj")); public static final IModelCustom turret_flamer_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_flamer_gun.obj")); public static final IModelCustom turret_tau_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_tau_gun.obj")); + public static final IModelCustom turret_spitfire_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_spitfire_gun.obj")); //Pumpjack public static final IModelCustom pumpjack_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/pumpjack_base.obj")); @@ -44,6 +48,10 @@ public class ResourceManager { public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); + //Radgen + public static final IModelCustom radgen_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rad_gen_body.obj")); + public static final IModelCustom radgen_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rad_gen_rotor.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); diff --git a/com/hbm/render/item/ItemRenderGunAnim.java b/com/hbm/render/item/ItemRenderGunAnim.java new file mode 100644 index 000000000..d52407e44 --- /dev/null +++ b/com/hbm/render/item/ItemRenderGunAnim.java @@ -0,0 +1,125 @@ +package com.hbm.render.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.GunBoltAction; +import com.hbm.items.weapon.GunLeverAction; +import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelBoltAction; +import com.hbm.render.model.ModelDash; +import com.hbm.render.model.ModelDefabricator; +import com.hbm.render.model.ModelEuthanasia; +import com.hbm.render.model.ModelHP; +import com.hbm.render.model.ModelJack; +import com.hbm.render.model.ModelLeverAction; +import com.hbm.render.model.ModelPip; +import com.hbm.render.model.ModelSpark; +import com.hbm.render.model.ModelTwiGun; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; + +public class ItemRenderGunAnim implements IItemRenderer { + + protected ModelLeverAction leveraction; + protected ModelBoltAction boltaction; + + public ItemRenderGunAnim() { + leveraction = new ModelLeverAction(); + boltaction = new ModelBoltAction(); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + switch(type) { + case EQUIPPED_FIRST_PERSON: + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + + if(item.getItem() == ModItems.gun_lever_action) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverAction.png")); + if(item.getItem() == ModItems.gun_bolt_action) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionDark.png")); + if(item.getItem() == ModItems.gun_lever_action_dark) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverActionDark.png")); + if(item.getItem() == ModItems.gun_bolt_action_green) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionGreen.png")); + + GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-0.5F, 0.0F, -0.2F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glTranslatef(-0.2F, -0.1F, -0.1F); + + if((item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) && GunLeverAction.getRotationFromAnim(item) > 0) { + GL11.glRotatef(GunLeverAction.getRotationFromAnim(item) * 25, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(GunLeverAction.getOffsetFromAnim(item) * -1.5F, 0.0F, 0.0F); + } + + if((item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green) && GunBoltAction.getRotationFromAnim(item) > 0) { + GL11.glRotatef(GunBoltAction.getRotationFromAnim(item) * 10, 2.5F, 0.0F, 1.5F); + GL11.glTranslatef(GunBoltAction.getOffsetFromAnim(item) * -1.75F, 0.0F, 0.0F); + } + + if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) + leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverAction.getRotationFromAnim(item)); + if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green) + boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + + GL11.glPopMatrix(); + break; + case EQUIPPED: + case ENTITY: + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); + if(item.getItem() == ModItems.gun_lever_action) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverAction.png")); + if(item.getItem() == ModItems.gun_bolt_action) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionDark.png")); + if(item.getItem() == ModItems.gun_lever_action_dark) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverActionDark.png")); + if(item.getItem() == ModItems.gun_bolt_action_green) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionGreen.png")); + + GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, -0.2F, -0.5F); + GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glTranslatef(-0.3F, -0.4F, 0.15F); + + if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) + leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverAction.getRotationFromAnim(item)); + if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green) + boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + GL11.glPopMatrix(); + default: break; + } + } +} diff --git a/com/hbm/render/model/ModelBoltAction.java b/com/hbm/render/model/ModelBoltAction.java new file mode 100644 index 000000000..fb37276f8 --- /dev/null +++ b/com/hbm/render/model/ModelBoltAction.java @@ -0,0 +1,233 @@ +// Date: 14.01.2018 22:26:04 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +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.client.renderer.Tessellator; +import net.minecraft.entity.Entity; + +public class ModelBoltAction extends ModelBase { + // fields + ModelRenderer Barrel1; + ModelRenderer Barrel2; + ModelRenderer Grip; + ModelRenderer BodyFront; + ModelRenderer BodyMain; + ModelRenderer LeverFront; + ModelRenderer LeverBottom; + ModelRenderer LeverMid; + ModelRenderer Trigger; + ModelRenderer GripFront; + ModelRenderer GropFrontBottom; + ModelRenderer GripBottom; + ModelRenderer Bolt; + ModelRenderer ChamberFront; + ModelRenderer ChamberBack; + ModelRenderer BodyBack; + ModelRenderer LeverTip; + ModelRenderer Lever; + ModelRenderer HandleFront; + ModelRenderer Pointer; + ModelRenderer HandleBottom; + ModelRenderer HandleGrip; + + public ModelBoltAction() { + textureWidth = 128; + textureHeight = 64; + + Barrel1 = new ModelRenderer(this, 0, 0); + Barrel1.addBox(0F, 0F, 0F, 60, 3, 2); + Barrel1.setRotationPoint(-60F, 1.5F, -1F); + Barrel1.setTextureSize(64, 32); + Barrel1.mirror = true; + setRotation(Barrel1, 0F, 0F, 0F); + Barrel2 = new ModelRenderer(this, 0, 5); + Barrel2.addBox(0F, 0F, 0F, 60, 2, 3); + Barrel2.setRotationPoint(-60F, 2F, -1.5F); + Barrel2.setTextureSize(64, 32); + Barrel2.mirror = true; + setRotation(Barrel2, 0F, 0F, 0F); + Grip = new ModelRenderer(this, 0, 10); + Grip.addBox(0F, 0F, 0F, 28, 5, 4); + Grip.setRotationPoint(-28F, 3F, -2F); + Grip.setTextureSize(64, 32); + Grip.mirror = true; + setRotation(Grip, 0F, 0F, 0F); + BodyFront = new ModelRenderer(this, 0, 19); + BodyFront.addBox(0F, 0F, 0F, 3, 7, 4); + BodyFront.setRotationPoint(0F, 2.5F, -2F); + BodyFront.setTextureSize(64, 32); + BodyFront.mirror = true; + setRotation(BodyFront, 0F, 0F, 0F); + BodyMain = new ModelRenderer(this, 14, 19); + BodyMain.addBox(0F, 0F, 0F, 8, 7, 4); + BodyMain.setRotationPoint(3F, 2.5F, -2F); + BodyMain.setTextureSize(64, 32); + BodyMain.mirror = true; + setRotation(BodyMain, 0F, 0F, 0F); + LeverFront = new ModelRenderer(this, 62, 30); + LeverFront.addBox(-1F, 0F, 0F, 2, 4, 2); + LeverFront.setRotationPoint(7F, 9F, -1F); + LeverFront.setTextureSize(64, 32); + LeverFront.mirror = true; + setRotation(LeverFront, 0F, 0F, 0F); + LeverBottom = new ModelRenderer(this, 70, 30); + LeverBottom.addBox(0F, 4F, 0F, 6, 1, 2); + LeverBottom.setRotationPoint(7F, 9F, -1F); + LeverBottom.setTextureSize(64, 32); + LeverBottom.mirror = true; + setRotation(LeverBottom, 0F, 0F, 0F); + LeverMid = new ModelRenderer(this, 62, 36); + LeverMid.addBox(6F, 0F, 0F, 1, 5, 2); + LeverMid.setRotationPoint(7F, 9F, -1F); + LeverMid.setTextureSize(64, 32); + LeverMid.mirror = true; + setRotation(LeverMid, 0F, 0F, 0F); + Trigger = new ModelRenderer(this, 88, 30); + Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); + Trigger.setRotationPoint(12.5F, 9F, -2.5F); + Trigger.setTextureSize(64, 32); + Trigger.mirror = true; + setRotation(Trigger, 0F, 0F, 0.3490659F); + GripFront = new ModelRenderer(this, 0, 30); + GripFront.addBox(0F, 0F, 0F, 18, 3, 4); + GripFront.setRotationPoint(-46F, 3F, -2F); + GripFront.setTextureSize(128, 64); + GripFront.mirror = true; + setRotation(GripFront, 0F, 0F, 0F); + GropFrontBottom = new ModelRenderer(this, 0, 37); + GropFrontBottom.addBox(0F, 0F, 0F, 18, 1, 2); + GropFrontBottom.setRotationPoint(-46F, 6F, -1F); + GropFrontBottom.setTextureSize(128, 64); + GropFrontBottom.mirror = true; + setRotation(GropFrontBottom, 0F, 0F, 0F); + GripBottom = new ModelRenderer(this, 0, 40); + GripBottom.addBox(0F, 0F, 0F, 28, 1, 2); + GripBottom.setRotationPoint(-28F, 8F, -1F); + GripBottom.setTextureSize(128, 64); + GripBottom.mirror = true; + setRotation(GripBottom, 0F, 0F, 0F); + Bolt = new ModelRenderer(this, 0, 43); + Bolt.addBox(0F, 0F, 0F, 10, 2, 2); + Bolt.setRotationPoint(3F, 2F, -1F); + Bolt.setTextureSize(128, 64); + Bolt.mirror = true; + setRotation(Bolt, 0F, 0F, 0F); + ChamberFront = new ModelRenderer(this, 0, 47); + ChamberFront.addBox(0F, 0F, 0F, 3, 1, 3); + ChamberFront.setRotationPoint(0F, 1.5F, -1.5F); + ChamberFront.setTextureSize(128, 64); + ChamberFront.mirror = true; + setRotation(ChamberFront, 0F, 0F, 0F); + ChamberBack = new ModelRenderer(this, 12, 47); + ChamberBack.addBox(0F, 0F, 0F, 3, 1, 3); + ChamberBack.setRotationPoint(8F, 1.5F, -1.5F); + ChamberBack.setTextureSize(128, 64); + ChamberBack.mirror = true; + setRotation(ChamberBack, 0F, 0F, 0F); + BodyBack = new ModelRenderer(this, 0, 51); + BodyBack.addBox(0F, 0F, 0F, 4, 6, 4); + BodyBack.setRotationPoint(11F, 3.5F, -2F); + BodyBack.setTextureSize(128, 64); + BodyBack.mirror = true; + setRotation(BodyBack, 0F, 0F, 0F); + LeverTip = new ModelRenderer(this, 24, 43); + LeverTip.addBox(0F, -1F, 3F, 2, 2, 2); + LeverTip.setRotationPoint(11F, 3F, 0F); + LeverTip.setTextureSize(128, 64); + LeverTip.mirror = true; + setRotation(LeverTip, -0.4363323F, 0F, 0F); + Lever = new ModelRenderer(this, 32, 43); + Lever.addBox(0F, -0.5F, 0F, 1, 1, 4); + Lever.setRotationPoint(11.5F, 3F, 0F); + Lever.setTextureSize(128, 64); + Lever.mirror = true; + setRotation(Lever, -0.4363323F, 0F, 0F); + HandleFront = new ModelRenderer(this, 16, 51); + HandleFront.addBox(0F, 0F, 0F, 9, 5, 4); + HandleFront.setRotationPoint(15F, 4.5F, -2F); + HandleFront.setTextureSize(128, 64); + HandleFront.mirror = true; + setRotation(HandleFront, 0F, 0F, 0.4363323F); + Pointer = new ModelRenderer(this, 42, 43); + Pointer.addBox(0F, 0F, 0F, 3, 1, 1); + Pointer.setRotationPoint(-49F, 5.5F, -0.5F); + Pointer.setTextureSize(128, 64); + Pointer.mirror = true; + setRotation(Pointer, 0F, 0F, 0F); + HandleBottom = new ModelRenderer(this, 64, 10); + HandleBottom.addBox(0F, -8F, 0F, 23, 8, 4); + HandleBottom.setRotationPoint(19F, 16F, -2F); + HandleBottom.setTextureSize(128, 64); + HandleBottom.mirror = true; + setRotation(HandleBottom, 0F, 0F, 0F); + HandleGrip = new ModelRenderer(this, 38, 19); + HandleGrip.addBox(0F, 0F, 0F, 2, 5, 4); + HandleGrip.setRotationPoint(17F, 9.5F, -2F); + HandleGrip.setTextureSize(128, 64); + HandleGrip.mirror = true; + setRotation(HandleGrip, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Barrel1.render(f5); + Barrel2.render(f5); + Grip.render(f5); + BodyFront.render(f5); + BodyMain.render(f5); + LeverFront.render(f5); + LeverBottom.render(f5); + LeverMid.render(f5); + Trigger.render(f5); + GripFront.render(f5); + GropFrontBottom.render(f5); + GripBottom.render(f5); + Bolt.render(f5); + ChamberFront.render(f5); + ChamberBack.render(f5); + BodyBack.render(f5); + LeverTip.render(f5); + Lever.render(f5); + HandleFront.render(f5); + Pointer.render(f5); + HandleBottom.render(f5); + HandleGrip.render(f5); + } + + public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot, float tran) { + + LeverTip.rotateAngleX += rot; + Lever.rotateAngleX += rot; + Bolt.offsetX += tran; + LeverTip.offsetX += tran; + Lever.offsetX += tran; + + render(entity, f, f1, f2, f3, f4, f5); + + setRotation(LeverTip, -0.4363323F, 0F, 0F); + setRotation(Lever, -0.4363323F, 0F, 0F); + Bolt.offsetX -= tran; + LeverTip.offsetX -= tran; + Lever.offsetX -= tran; + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + 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); + } + +} diff --git a/com/hbm/render/model/ModelLeverAction.java b/com/hbm/render/model/ModelLeverAction.java new file mode 100644 index 000000000..c45cc2986 --- /dev/null +++ b/com/hbm/render/model/ModelLeverAction.java @@ -0,0 +1,233 @@ +// Date: 13.01.2018 16:04:59 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelLeverAction extends ModelBase { + // fields + ModelRenderer Barrel1; + ModelRenderer Barrel2; + ModelRenderer Barrel3; + ModelRenderer Barrel4; + ModelRenderer Grip; + ModelRenderer Front1; + ModelRenderer Front2; + ModelRenderer BodyFront; + ModelRenderer BodyTop; + ModelRenderer BodyMain; + ModelRenderer BodyPlate; + ModelRenderer HandleMain; + ModelRenderer HandleBottom; + ModelRenderer HandleBack; + ModelRenderer LeverFront; + ModelRenderer LeverBottom; + ModelRenderer LeverMid; + ModelRenderer LeverFrontPlate; + ModelRenderer LeverBackBottom; + ModelRenderer Trigger; + ModelRenderer LeverBackTop; + ModelRenderer LeverBack; + + public ModelLeverAction() { + textureWidth = 128; + textureHeight = 64; + + Barrel1 = new ModelRenderer(this, 0, 0); + Barrel1.addBox(0F, 0F, 0F, 60, 3, 2); + Barrel1.setRotationPoint(-60F, 1.5F, -1F); + Barrel1.setTextureSize(64, 32); + Barrel1.mirror = true; + setRotation(Barrel1, 0F, 0F, 0F); + Barrel2 = new ModelRenderer(this, 0, 5); + Barrel2.addBox(0F, 0F, 0F, 60, 2, 3); + Barrel2.setRotationPoint(-60F, 2F, -1.5F); + Barrel2.setTextureSize(64, 32); + Barrel2.mirror = true; + setRotation(Barrel2, 0F, 0F, 0F); + Barrel3 = new ModelRenderer(this, 0, 10); + Barrel3.addBox(0F, 0F, 0F, 10, 2, 3); + Barrel3.setRotationPoint(-46F, 6F, -1.5F); + Barrel3.setTextureSize(64, 32); + Barrel3.mirror = true; + setRotation(Barrel3, 0F, 0F, 0F); + Barrel4 = new ModelRenderer(this, 26, 10); + Barrel4.addBox(0F, 0F, 0F, 10, 3, 2); + Barrel4.setRotationPoint(-46F, 5.5F, -1F); + Barrel4.setTextureSize(64, 32); + Barrel4.mirror = true; + setRotation(Barrel4, 0F, 0F, 0F); + Grip = new ModelRenderer(this, 0, 15); + Grip.addBox(0F, 0F, 0F, 36, 6, 4); + Grip.setRotationPoint(-36F, 3F, -2F); + Grip.setTextureSize(64, 32); + Grip.mirror = true; + setRotation(Grip, 0F, 0F, 0F); + Front1 = new ModelRenderer(this, 50, 10); + Front1.addBox(0F, 0F, 0F, 3, 2, 1); + Front1.setRotationPoint(-50F, 4.5F, -0.5F); + Front1.setTextureSize(64, 32); + Front1.mirror = true; + setRotation(Front1, 0F, 0F, 0F); + Front2 = new ModelRenderer(this, 58, 10); + Front2.addBox(0F, 0F, 0F, 3, 1, 2); + Front2.setRotationPoint(-50F, 6.5F, -1F); + Front2.setTextureSize(64, 32); + Front2.mirror = true; + setRotation(Front2, 0F, 0F, 0F); + BodyFront = new ModelRenderer(this, 0, 25); + BodyFront.addBox(0F, 0F, 0F, 3, 8, 4); + BodyFront.setRotationPoint(0F, 1.5F, -2F); + BodyFront.setTextureSize(64, 32); + BodyFront.mirror = true; + setRotation(BodyFront, 0F, 0F, 0F); + BodyTop = new ModelRenderer(this, 14, 25); + BodyTop.addBox(0F, 0F, 0F, 3, 1, 3); + BodyTop.setRotationPoint(0F, 1F, -1.5F); + BodyTop.setTextureSize(64, 32); + BodyTop.mirror = true; + setRotation(BodyTop, 0F, 0F, 0F); + BodyMain = new ModelRenderer(this, 0, 37); + BodyMain.addBox(0F, 0F, 0F, 12, 7, 4); + BodyMain.setRotationPoint(3F, 2.5F, -2F); + BodyMain.setTextureSize(64, 32); + BodyMain.mirror = true; + setRotation(BodyMain, 0F, 0F, 0F); + BodyPlate = new ModelRenderer(this, 26, 25); + BodyPlate.addBox(0F, 0F, 0F, 10, 2, 3); + BodyPlate.setRotationPoint(3F, 1F, -1.5F); + BodyPlate.setTextureSize(64, 32); + BodyPlate.mirror = true; + setRotation(BodyPlate, 0F, 0F, 0.1570796F); + HandleMain = new ModelRenderer(this, 0, 48); + HandleMain.addBox(0F, 0F, 0F, 18, 5, 4); + HandleMain.setRotationPoint(15F, 4F, -2F); + HandleMain.setTextureSize(128, 64); + HandleMain.mirror = true; + setRotation(HandleMain, 0F, 0F, 0.4363323F); + HandleBottom = new ModelRenderer(this, 0, 57); + HandleBottom.addBox(4F, 4.5F, 0F, 13, 1, 4); + HandleBottom.setRotationPoint(15F, 4F, -2F); + HandleBottom.setTextureSize(128, 64); + HandleBottom.mirror = true; + setRotation(HandleBottom, 0F, 0F, 0.4363323F); + HandleBack = new ModelRenderer(this, 34, 57); + HandleBack.addBox(17.5F, 0.5F, 0F, 1, 4, 3); + HandleBack.setRotationPoint(15F, 4F, -1.5F); + HandleBack.setTextureSize(128, 64); + HandleBack.mirror = true; + setRotation(HandleBack, 0F, 0F, 0.4363323F); + LeverFront = new ModelRenderer(this, 62, 30); + LeverFront.addBox(-1F, 0F, 0F, 2, 4, 2); + LeverFront.setRotationPoint(7F, 9F, -1F); + LeverFront.setTextureSize(128, 64); + LeverFront.mirror = true; + setRotation(LeverFront, 0F, 0F, 0F); + LeverBottom = new ModelRenderer(this, 70, 30); + LeverBottom.addBox(0F, 4F, 0F, 6, 1, 2); + LeverBottom.setRotationPoint(7F, 9F, -1F); + LeverBottom.setTextureSize(128, 64); + LeverBottom.mirror = true; + setRotation(LeverBottom, 0F, 0F, 0F); + LeverMid = new ModelRenderer(this, 62, 36); + LeverMid.addBox(6F, 0F, 0F, 1, 5, 2); + LeverMid.setRotationPoint(7F, 9F, -1F); + LeverMid.setTextureSize(128, 64); + LeverMid.mirror = true; + setRotation(LeverMid, 0F, 0F, 0F); + LeverFrontPlate = new ModelRenderer(this, 68, 39); + LeverFrontPlate.addBox(7F, -1.5F, 0F, 9, 1, 2); + LeverFrontPlate.setRotationPoint(7F, 9F, -1F); + LeverFrontPlate.setTextureSize(128, 64); + LeverFrontPlate.mirror = true; + setRotation(LeverFrontPlate, 0F, 0F, 0.7853982F); + LeverBackBottom = new ModelRenderer(this, 70, 33); + LeverBackBottom.addBox(12F, 10F, 0F, 6, 1, 2); + LeverBackBottom.setRotationPoint(7F, 9F, -1F); + LeverBackBottom.setTextureSize(128, 64); + LeverBackBottom.mirror = true; + setRotation(LeverBackBottom, 0F, 0F, 0F); + Trigger = new ModelRenderer(this, 88, 30); + Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); + Trigger.setRotationPoint(12.5F, 9F, -0.5F); + Trigger.setTextureSize(128, 64); + Trigger.mirror = true; + setRotation(Trigger, 0F, 0F, 0.3490659F); + LeverBackTop = new ModelRenderer(this, 68, 36); + LeverBackTop.addBox(8F, -2F, 0F, 11, 1, 2); + LeverBackTop.setRotationPoint(7F, 9F, -1F); + LeverBackTop.setTextureSize(128, 64); + LeverBackTop.mirror = true; + setRotation(LeverBackTop, 0F, 0F, 0.4363323F); + LeverBack = new ModelRenderer(this, 62, 43); + LeverBack.addBox(17F, 6F, 0F, 1, 4, 2); + LeverBack.setRotationPoint(7F, 9F, -1F); + LeverBack.setTextureSize(128, 64); + LeverBack.mirror = true; + setRotation(LeverBack, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Barrel1.render(f5); + Barrel2.render(f5); + Barrel3.render(f5); + Barrel4.render(f5); + Grip.render(f5); + Front1.render(f5); + Front2.render(f5); + BodyFront.render(f5); + BodyTop.render(f5); + BodyMain.render(f5); + BodyPlate.render(f5); + HandleMain.render(f5); + HandleBottom.render(f5); + HandleBack.render(f5); + LeverFront.render(f5); + LeverBottom.render(f5); + LeverMid.render(f5); + LeverFrontPlate.render(f5); + LeverBackBottom.render(f5); + Trigger.render(f5); + LeverBackTop.render(f5); + LeverBack.render(f5); + } + + public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float anim) { + LeverFront.rotateAngleZ += anim; + LeverBottom.rotateAngleZ += anim; + LeverMid.rotateAngleZ += anim; + LeverFrontPlate.rotateAngleZ += anim; + LeverBackBottom.rotateAngleZ += anim; + LeverBackTop.rotateAngleZ += anim; + LeverBack.rotateAngleZ += anim; + + render(entity, f, f1, f2, f3, f4, f5); + + setRotation(LeverFront, 0F, 0F, 0F); + setRotation(LeverBottom, 0F, 0F, 0F); + setRotation(LeverMid, 0F, 0F, 0F); + setRotation(LeverFrontPlate, 0F, 0F, 0.7853982F); + setRotation(LeverBackBottom, 0F, 0F, 0F); + setRotation(LeverBackTop, 0F, 0F, 0.4363323F); + setRotation(LeverBack, 0F, 0F, 0F); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + 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); + } + +} diff --git a/com/hbm/render/tileentity/RenderRadGen.java b/com/hbm/render/tileentity/RenderRadGen.java new file mode 100644 index 000000000..d40ff64e7 --- /dev/null +++ b/com/hbm/render/tileentity/RenderRadGen.java @@ -0,0 +1,75 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.TileEntityMachineIGenerator; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; + +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 RenderRadGen extends TileEntitySpecialRenderer { + + public RenderRadGen() { } + + @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(90, 0F, 1F, 0F); break; + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + bindTexture(ResourceManager.universal); + + ResourceManager.radgen_body.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 + 1.5D, 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; + case 4: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glRotatef(((TileEntityMachineRadGen)tileEntity).rotation, 1F, 0F, 0F); + + bindTexture(ResourceManager.universal); + ResourceManager.radgen_rotor.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/render/tileentity/RenderSpitfireTurret.java b/com/hbm/render/tileentity/RenderSpitfireTurret.java new file mode 100644 index 000000000..249a0bfa9 --- /dev/null +++ b/com/hbm/render/tileentity/RenderSpitfireTurret.java @@ -0,0 +1,74 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.bomb.TileEntityTurretBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderSpitfireTurret extends TileEntitySpecialRenderer { + + public RenderSpitfireTurret() { } + + @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); + + double yaw = 0; + double pitch = 0; + + if(tileEntity instanceof TileEntityTurretBase) { + yaw = ((TileEntityTurretBase)tileEntity).rotationYaw; + pitch = ((TileEntityTurretBase)tileEntity).rotationPitch; + } + + this.bindTexture(ResourceManager.universal); + ResourceManager.turret_spitfire_base.renderAll(); + + GL11.glPopMatrix(); + + renderTileEntityAt2(tileEntity, x, y, z, f, yaw, pitch); + } + + public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f, double yaw, double pitch) + { + 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); + + GL11.glRotated(yaw + 180, 0F, -1F, 0F); + + this.bindTexture(ResourceManager.universal); + ResourceManager.turret_spitfire_rotor.renderAll(); + + GL11.glPopMatrix(); + + renderTileEntityAt3(tileEntity, x, y, z, f, yaw, pitch); + } + + public void renderTileEntityAt3(TileEntity tileEntity, double x, double y, double z, float f, double yaw, double pitch) + { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + + GL11.glRotated(yaw + 180, 0F, -1F, 0F); + GL11.glRotated(pitch, 1F, 0F, 0F); + + this.bindTexture(ResourceManager.universal); + ResourceManager.turret_spitfire_gun.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java b/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java index b4044537f..2a917cee6 100644 --- a/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java +++ b/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.bomb; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -9,5 +11,12 @@ public class TileEntityCrashedBomb extends TileEntity { public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } } diff --git a/com/hbm/tileentity/bomb/TileEntityTurretBase.java b/com/hbm/tileentity/bomb/TileEntityTurretBase.java index dbbbad7a2..3586d2218 100644 --- a/com/hbm/tileentity/bomb/TileEntityTurretBase.java +++ b/com/hbm/tileentity/bomb/TileEntityTurretBase.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.bomb; import com.hbm.blocks.bomb.TurretBase; +import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.lib.Library; import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; @@ -37,6 +38,8 @@ public abstract class TileEntityTurretBase extends TileEntity { double radius = 1000; if(this instanceof TileEntityTurretFlamer) radius /= 2; + if(this instanceof TileEntityTurretSpitfire) + radius *= 3; Entity target = null; for (int i = 0; i < iter.length; i++) { @@ -79,7 +82,7 @@ public abstract class TileEntityTurretBase extends TileEntity { } private boolean isInSight(Entity e) { - if(!(e instanceof EntityLivingBase)) + if(!(e instanceof EntityLivingBase) && !(e instanceof EntityMissileBaseAdvanced)) return false; if(e instanceof EntityPlayer && ((EntityPlayer)e).getUniqueID().toString().equals(uuid)) diff --git a/com/hbm/tileentity/bomb/TileEntityTurretSpitfire.java b/com/hbm/tileentity/bomb/TileEntityTurretSpitfire.java new file mode 100644 index 000000000..ebf223f8d --- /dev/null +++ b/com/hbm/tileentity/bomb/TileEntityTurretSpitfire.java @@ -0,0 +1,7 @@ +package com.hbm.tileentity.bomb; + +import net.minecraft.tileentity.TileEntity; + +public class TileEntityTurretSpitfire extends TileEntityTurretBase { + +} diff --git a/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/com/hbm/tileentity/machine/TileEntityMachineRadGen.java new file mode 100644 index 000000000..59b4720d6 --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -0,0 +1,362 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.ISource; +import com.hbm.items.ModItems; +import com.hbm.lib.Library; +import com.hbm.packet.AuxElectricityPacket; +import com.hbm.packet.LoopedSoundPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEIGeneratorPacket; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +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; + +public class TileEntityMachineRadGen extends TileEntity implements ISidedInventory, ISource { + + private ItemStack slots[]; + + public long power; + public int fuel; + public int strength; + public int mode; + public int soundCycle = 0; + public float rotation; + public static final long maxPower = 100000; + public static final int maxFuel = 10000; + public static final int maxStrength = 1000; + public int age = 0; + public List list = new ArrayList(); + + private static final int[] slots_top = new int[] { 0 }; + private static final int[] slots_bottom = new int[] { 0, 0 }; + private static final int[] slots_side = new int[] { 0 }; + + private String customName; + + public TileEntityMachineRadGen() { + slots = new ItemStack[3]; + } + + @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.radGen"; + } + + @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) <= 64; + } + } + + // You scrubs aren't needed for anything (right now) + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + 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.getLong("power"); + this.fuel = nbt.getInteger("fuel"); + this.strength = nbt.getInteger("strength"); + 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.setLong("power", power); + nbt.setInteger("fuel", fuel); + nbt.setInteger("strength", strength); + 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; + } + + @Override + public void updateEntity() { + + if (!worldObj.isRemote) { + + age++; + if(age >= 20) + { + age = 0; + } + + if(age == 9 || age == 19) + ffgeuaInit(); + } + + if(!worldObj.isRemote) { + + int r = getRads(slots[0]); + if(r > 0) { + if(slots[0].getItem().hasContainerItem()) { + if(slots[1] == null) { + if(fuel + r <= maxFuel) { + + slots[1] = new ItemStack(slots[0].getItem().getContainerItem()); + + slots[0].stackSize--; + if(slots[0].stackSize <= 0) + slots[0] = null; + fuel += r; + } + } else if(slots[0].getItem().getContainerItem() == slots[1].getItem() && slots[1].stackSize < slots[1].getMaxStackSize()) { + if(fuel + r <= maxFuel) { + + slots[1].stackSize++; + + slots[0].stackSize--; + if(slots[0].stackSize <= 0) + slots[0] = null; + fuel += r; + } + } + } else { + if(fuel + r <= maxFuel) { + slots[0].stackSize--; + if(slots[0].stackSize <= 0) + slots[0] = null; + fuel += r; + } + } + } + + if(fuel > 0) { + fuel--; + if(strength < maxStrength) + strength += Math.ceil(fuel / 1000); + } else { + if(strength > 0) + strength -= (strength * 0.1); + } + + if(strength > maxStrength) + strength = maxStrength; + + if(strength < 0) + strength = 0; + + power += strength; + + if(power > maxPower) + power = maxPower; + + mode = 0; + if(strength > 0) + mode = 1; + if(strength > 800) + mode = 2; + + //PacketDispatcher.wrapper.sendToAll(new TEIGeneratorPacket(xCoord, yCoord, zCoord, rotation, torque)); + PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); + } + } + + private int getRads(ItemStack stack) { + if(stack == null) + return 0; + + Item item = stack.getItem(); + + if(item == ModItems.nuclear_waste) return 100; + if(item == ModItems.trinitite) return 80; + if(item == ModItems.rod_waste) return 600; + if(item == ModItems.rod_dual_waste) return 1200; + if(item == ModItems.rod_quad_waste) return 4800; + + return 0; + } + + public int getFuelScaled(int i) { + return (fuel * i) / maxFuel; + } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } + + public int getStrengthScaled(int i) { + return (strength * i) / maxStrength; + } + + @Override + public void ffgeua(int x, int y, int z, boolean newTact) { + + Library.ffgeua(x, y, z, newTact, this, worldObj); + } + + @Override + public void ffgeuaInit() { + int i = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + ffgeua(this.xCoord + 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord - 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord + 1, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord - 1, getTact()); + } + + @Override + public boolean getTact() { + if (age >= 0 && age < 10) { + return true; + } + + return false; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + + @Override + public long getSPower() { + return power; + } + + @Override + public void setSPower(long i) { + this.power = i; + } + + @Override + public List getList() { + return list; + } + + @Override + public void clearList() { + this.list.clear(); + } +}