diff --git a/README.md b/README.md index 85bc0819a..2c0194598 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,19 @@ -# Hbm-s-Nuclear-Tech-GIT +# HBM's Nuclear Tech Mod for Minecraft 1.7.10 -https://minecraft.curseforge.com/projects/hbms-nuclear-tech-mod?gameCategorySlug=mc-mods&projectID=235439 +[NTM on Modrinth](https://modrinth.com/mod/ntm) -For a 1.12 fork, check this link: https://github.com/Drillgon200/Hbm-s-Nuclear-Tech-GIT/releases +[NTM on CurseForge](https://minecraft.curseforge.com/projects/hbms-nuclear-tech-mod?gameCategorySlug=mc-mods&projectID=235439) + +**This is for 1.7.10!** For 1.12, check out these projects: + +* NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases +* NTM Alcater Edition: https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases + +For 1.18, try Martin's remake: https://github.com/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases + +## Downloading pre-compiled versions from GitHub + +Simply navigate to "Releases" on the right side of the page, download links for the compiled JAR as well as the corresponding source code are under the "Assets" category below the changelog. Make sure to review all changelogs when updating! ## Building from source @@ -81,4 +92,4 @@ If you want to make some changes to the mod, follow this guide: 10. Code! # License -This software is licensed under the GNU Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license. You win this round, Stallman. The full license can be found in the `LICENSE` file. +This software is licensed under the GNU Lesser General Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license (with an exception for linking to this software, as stated by the "Lesser" part of the LGPL, where this may not be required). You win this round, Stallman. The full license can be found in the `LICENSE` and `LICENSE.LESSER` files. diff --git a/build.gradle b/build.gradle index 6a5a8c6b0..bd386126f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,17 +5,19 @@ buildscript { mavenCentral() } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + classpath ('com.anatawa12.forge:ForgeGradle:1.2-1.0.+') {changing = true} } } apply plugin: 'forge' - -def jsonFile = file('./src/main/resources/mcmod.info') -def parsedJson = new groovy.json.JsonSlurper().parseText(jsonFile.text) -version = parsedJson.version +def version_name = version = mod_version +if(!mod_build_number.isEmpty()) { + version_name = mod_version + "_X" + mod_build_number + version = "[${version_name}]" +} group = "com.hbm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "HBM-NTM" +compileJava.options.encoding = 'UTF-8' sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' @@ -62,17 +64,17 @@ repositories { } dependencies { - compile 'codechicken:CodeChickenCore:1.7.10-1.0.4.29:dev' + implementation 'codechicken:CodeChickenCore:1.7.10-1.0.4.29:dev' compileOnly 'codechicken:CodeChickenCore:1.7.10-1.0.4.29:src' - compile 'codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev' + implementation 'codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev' compileOnly 'codechicken:CodeChickenLib:1.7.10-1.1.3.140:src' - compile 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:dev' + implementation 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:dev' compileOnly 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:src' //compileOnly 'inventory-tweaks:InventoryTweaks:1.62+beta.84:api' - compile "li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api" + implementation "li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api" } processResources { @@ -85,7 +87,13 @@ processResources { include 'mcmod.info' // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version + filesMatching('mcmod.info') { + // replace version, mcversion and credits + expand([ + version: version_name, + credits: project.credits + ]) + } } // copy everything else, thats not the mcmod.info diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 000000000..c6636c3a0 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,13 @@ +mod_version=1.0.27 +# Empty build number makes a release type +mod_build_number=4501 + +credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ + \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ + \ UFFR (fork with all sorts of features), Pu-238 (Tom impact effects), Bismarck (chinese localization),\ + \ Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines, weapons), Vær (fibrosis, gas centrifuges,\ + \ ZIRNOX, CP-1 parts, starter guide), Adam29 (liquid petroleum, ethanol, electric furnace),\ + \ Pashtet (russian localization), MartinTheDragon (calculator, chunk-based fallout), haru315 (spiral point algorithm),\ + \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Aionoso (GUI textures), impbk2002 (project settings),\ + \ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (improved satellite loot system), Silly541 (config for safe ME drives),\ + \ Voxelstice (OpenComputers integration), Pvndols (thorium fuel recipe) \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 22172ad59..a4e35a1e1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip diff --git a/src/main/java/api/hbm/energy/IBatteryItem.java b/src/main/java/api/hbm/energy/IBatteryItem.java index fb90e3d86..827f88a8e 100644 --- a/src/main/java/api/hbm/energy/IBatteryItem.java +++ b/src/main/java/api/hbm/energy/IBatteryItem.java @@ -1,6 +1,8 @@ package api.hbm.energy; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; public interface IBatteryItem { @@ -11,4 +13,31 @@ public interface IBatteryItem { public long getMaxCharge(); public long getChargeRate(); public long getDischargeRate(); + + /** Returns a string for the NBT tag name of the long storing power */ + public default String getChargeTagName() { + return "charge"; + } + + /** Returns a string for the NBT tag name of the long storing power */ + public static String getChargeTagName(ItemStack stack) { + return ((IBatteryItem) stack.getItem()).getChargeTagName(); + } + + /** Returns an empty battery stack from the passed ItemStack, the original won't be modified */ + public static ItemStack emptyBattery(ItemStack stack) { + if(stack != null && stack.getItem() instanceof IBatteryItem) { + String keyName = getChargeTagName(stack); + ItemStack stackOut = stack.copy(); + stackOut.stackTagCompound = new NBTTagCompound(); + stackOut.stackTagCompound.setLong(keyName, 0); + return stackOut.copy(); + } + return null; + } + + /** Returns an empty battery stack from the passed Item */ + public static ItemStack emptyBattery(Item item) { + return item instanceof IBatteryItem ? emptyBattery(new ItemStack(item)) : null; + } } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index e58536a8d..f9025201b 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -125,10 +125,10 @@ public class PowerNet implements IPowerNet { @Override public long transferPower(long power) { - if(lastCleanup + 45 < System.currentTimeMillis()) { + /*if(lastCleanup + 45 < System.currentTimeMillis()) { cleanup(this.subscribers); lastCleanup = System.currentTimeMillis(); - } + }*/ return fairTransfer(this.subscribers, power); } @@ -145,6 +145,8 @@ public class PowerNet implements IPowerNet { if(subscribers.isEmpty()) return power; + cleanup(subscribers); + ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW}; for(ConnectionPriority p : priorities) { diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 051c16ea5..c2530d793 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -79,6 +79,7 @@ public class ModBlocks { public static Block ore_alexandrite; public static Block ore_random; + public static Block ore_bedrock; public static Block ore_bedrock_coltan; @@ -244,6 +245,7 @@ public class ModBlocks { public static Block block_red_phosphorus; public static Block block_fallout; public static Block block_foam; + public static Block block_coke; public static Block block_graphite; public static Block block_graphite_drilled; public static Block block_graphite_fuel; @@ -1028,6 +1030,7 @@ public class ModBlocks { public static Block machine_chemplant; public static final int guiID_machine_chemplant = 49; public static Block machine_chemfac; + public static Block machine_mixer; public static Block machine_fluidtank; public static Block machine_bat9000; @@ -1137,6 +1140,7 @@ public class ModBlocks { public static final int guiID_brandon = 122; public static Block turret_arty; public static Block turret_himars; + public static Block turret_sentry; public static Block rbmk_rod; public static Block rbmk_rod_mod; @@ -1395,6 +1399,7 @@ public class ModBlocks { ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); + ore_bedrock = new BlockBedrockOreTE().setBlockName("ore_bedrock").setCreativeTab(null); depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); @@ -1432,7 +1437,7 @@ public class ModBlocks { ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan"); - ore_bedrock_coltan = new BlockBedrockOre().setBlockName("ore_bedrock_coltan").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_coltan"); + ore_bedrock_coltan = new BlockBedrockOre().setBlockName("ore_bedrock_coltan").setCreativeTab(null).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_coltan"); ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); @@ -1516,6 +1521,7 @@ public class ModBlocks { block_red_phosphorus = new BlockHazardFalling().makeBeaconable().setStepSound(Block.soundTypeSand).setBlockName("block_red_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_phosphorus"); block_fallout = new BlockHazardFalling().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash"); block_foam = new BlockGeneric(Material.craftedSnow).setBlockName("block_foam").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSnow).setHardness(0.5F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":foam"); + block_coke = new BlockCoke().setBlockName("block_coke").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); block_graphite = new BlockGraphite(Material.iron, 30, 5).setBlockName("block_graphite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); block_graphite_drilled = new BlockGraphiteDrilled().setBlockName("block_graphite_drilled"); block_graphite_fuel = new BlockGraphiteFuel().setBlockName("block_graphite_fuel"); @@ -2147,18 +2153,19 @@ public class ModBlocks { sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); soyuz_capsule = new SoyuzCapsule(Material.iron).setBlockName("soyuz_capsule").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_capsule"); - turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_jeremy = new TurretJeremy(Material.iron).setBlockName("turret_jeremy").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_richard = new TurretRichard(Material.iron).setBlockName("turret_richard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_howard_damaged = new TurretHowardDamaged(Material.iron).setBlockName("turret_howard_damaged").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); - turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_brandon = new TurretBrandon(Material.iron).setBlockName("turret_brandon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_arty = new TurretArty(Material.iron).setBlockName("turret_arty").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_himars = new TurretHIMARS(Material.iron).setBlockName("turret_himars").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_sentry = new TurretSentry().setBlockName("turret_sentry").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); rbmk_rod = new RBMKRod(false).setBlockName("rbmk_rod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element"); rbmk_rod_mod = new RBMKRod(true).setBlockName("rbmk_rod_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_mod"); @@ -2229,8 +2236,9 @@ public class ModBlocks { barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_chemplant"); + machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_orbus = new MachineOrbus(Material.iron).setBlockName("machine_orbus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2527,6 +2535,9 @@ public class ModBlocks { //It's a meme you dip GameRegistry.registerBlock(ore_random, ItemRandomOreBlock.class, ore_random.getUnlocalizedName()); + //Bedrock ore + register(ore_bedrock); + //Crystals GameRegistry.registerBlock(crystal_power, crystal_power.getUnlocalizedName()); GameRegistry.registerBlock(crystal_energy, crystal_energy.getUnlocalizedName()); @@ -2603,6 +2614,7 @@ public class ModBlocks { GameRegistry.registerBlock(block_fallout, block_fallout.getUnlocalizedName()); GameRegistry.registerBlock(block_foam, block_foam.getUnlocalizedName()); GameRegistry.registerBlock(block_graphite, block_graphite.getUnlocalizedName()); + register(block_coke); GameRegistry.registerBlock(block_graphite_drilled, block_graphite_drilled.getUnlocalizedName()); GameRegistry.registerBlock(block_graphite_fuel, block_graphite_fuel.getUnlocalizedName()); GameRegistry.registerBlock(block_graphite_rod, block_graphite_rod.getUnlocalizedName()); @@ -2928,6 +2940,7 @@ public class ModBlocks { GameRegistry.registerBlock(turret_brandon, turret_brandon.getUnlocalizedName()); GameRegistry.registerBlock(turret_arty, turret_arty.getUnlocalizedName()); GameRegistry.registerBlock(turret_himars, turret_himars.getUnlocalizedName()); + GameRegistry.registerBlock(turret_sentry, turret_sentry.getUnlocalizedName()); //Wall-mounted Explosives GameRegistry.registerBlock(charge_dynamite, ItemBlockBase.class, charge_dynamite.getUnlocalizedName()); @@ -3227,6 +3240,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName()); GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName()); + register(machine_mixer); register(machine_fluidtank); register(machine_bat9000); register(machine_orbus); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java index e3f53b449..2766da2ce 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java @@ -118,10 +118,10 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB if(this.shouldGrow()) { worldObj.setBlock(xCoord, yCoord + 1, zCoord, this.getBlockType(), this.getBlockMetadata(), 3); - worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.volcanic_lava_block); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.volcanic_lava_block); return; } else if(this.isExtinguishing()) { - worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.volcanic_lava_block); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.volcanic_lava_block); return; } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java index dcac06294..f7612ee69 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.util.ArrayList; import java.util.Random; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -17,19 +18,16 @@ import net.minecraft.world.World; public class BlockAmmoCrate extends Block { - @SideOnly(Side.CLIENT) - private IIcon iconTop; - @SideOnly(Side.CLIENT) - private IIcon iconBottom; + @SideOnly(Side.CLIENT) private IIcon iconTop; + @SideOnly(Side.CLIENT) private IIcon iconBottom; - public BlockAmmoCrate(Material p_i45394_1_) { - super(p_i45394_1_); + public BlockAmmoCrate(Material mat) { + super(mat); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":crate_ammo_top"); this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":crate_ammo_bottom"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_ammo_side"); @@ -42,35 +40,37 @@ public class BlockAmmoCrate extends Block { } Random rand = new Random(); - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - - ArrayList ret = new ArrayList(); - - ret.add(new ItemStack(ModItems.cap_nuka, 12 + rand.nextInt(21))); - ret.add(new ItemStack(ModItems.syringe_metal_stimpak, 1 + rand.nextInt(3))); - - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_22lr, 16 + rand.nextInt(17))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_9mm, 6 + rand.nextInt(13))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_12gauge, 6 + rand.nextInt(4))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_20gauge, 3 + rand.nextInt(4))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.gun_revolver_ammo, 10 + rand.nextInt(11))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.gun_revolver_iron_ammo, 12 + rand.nextInt(15))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_50bmg, 2 + rand.nextInt(7))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_rocket, 1)); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_grenade, 1 + rand.nextInt(2))); - - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_12gauge_incendiary, 3)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge_incendiary, 3)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge_caustic, 3)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge_flechette, 3)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_9mm_ap, 7)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket_incendiary, 1)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket_sleek, 1)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade_he, 1)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade_incendiary, 1)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade_sleek, 1)); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.syringe_metal_super, 2)); - - return ret; - } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + + ArrayList ret = new ArrayList(); + + ret.add(new ItemStack(ModItems.cap_nuka, 12 + rand.nextInt(21))); + ret.add(new ItemStack(ModItems.syringe_metal_stimpak, 1 + rand.nextInt(3))); + + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_22lr, 16 + rand.nextInt(17))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_9mm, 6 + rand.nextInt(13))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_12gauge, 6 + rand.nextInt(4))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_20gauge, 3 + rand.nextInt(4))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 10 + rand.nextInt(11))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 12 + rand.nextInt(15), Ammo357Magnum.IRON.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_50bmg, 2 + rand.nextInt(7))); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_rocket, 1)); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_grenade, 1 + rand.nextInt(2))); + + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_12gauge, 3, Ammo12Gauge.INCENDIARY.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.INCENDIARY.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.CAUSTIC.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.FLECHETTE.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_9mm, 7, Ammo9mm.AP.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.INCENDIARY.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.SLEEK.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.HE.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.INCENDIARY.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.SLEEK.ordinal())); + if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.syringe_metal_super, 2)); + + return ret; + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java new file mode 100644 index 000000000..25e430822 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBedrockOreTE.java @@ -0,0 +1,223 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockBedrockOreTE extends BlockContainer implements ILookOverlay, IBlockMultiPass { + + public BlockBedrockOreTE() { + super(Material.rock); + this.setBlockTextureName("bedrock"); + this.setBlockUnbreakable(); + this.setResistance(1_000_000); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityBedrockOre(); + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + return null; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { + super.onBlockPlacedBy(world, x, y, z, entity, stack); + world.markBlockForUpdate(x, y, z); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + @Override + public int getPasses() { + return 2; + } + + private IIcon[] overlays = new IIcon[10]; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + this.blockIcon = reg.registerIcon("bedrock"); + for(int i = 0; i < overlays.length; i++) { + overlays[i] = reg.registerIcon(RefStrings.MODID + ":ore_random_" + (i + 1)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) + return Blocks.bedrock.getIcon(0, 0); + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityBedrockOre) { + TileEntityBedrockOre ore = (TileEntityBedrockOre) te; + int index = ore.shape % overlays.length; + return overlays[index]; + } + + return Blocks.bedrock.getIcon(0, 0); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(RenderBlockMultipass.currentPass == 0) + return Blocks.bedrock.getIcon(0, 0); + + int index = meta % overlays.length; + return overlays[index]; + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + + if(RenderBlockMultipass.currentPass == 0) + return 0xffffff; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityBedrockOre) { + TileEntityBedrockOre ore = (TileEntityBedrockOre) te; + return ore.color; + } + + return super.colorMultiplier(world, x, y, z); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityBedrockOre)) + return; + + TileEntityBedrockOre ore = (TileEntityBedrockOre) te; + + List text = new ArrayList(); + + if(ore.resource != null) { + text.add(ore.resource.getDisplayName()); + } + + text.add("Tier: " + ore.tier); + + if(ore.acidRequirement != null) { + text.add("Requires: " + ore.acidRequirement.fill + "mB " + I18nUtil.resolveKey(ore.acidRequirement.type.getUnlocalizedName())); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + public static class TileEntityBedrockOre extends TileEntity { + + public ItemStack resource; + public FluidStack acidRequirement; + public int tier; + public int color; + public int shape; + + public TileEntityBedrockOre setStyle(int color, int shape) { + this.color = color; + this.shape = shape; + return this; + } + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.resource = new ItemStack(Item.getItemById(nbt.getInteger("0id")), nbt.getByte("size"), nbt.getShort("meta")); + + if(this.resource.getItem() == null) this.resource = new ItemStack(ModItems.powder_iron); + + FluidType type = Fluids.fromID(nbt.getInteger("fluid")); + + if(type != Fluids.NONE) { + this.acidRequirement = new FluidStack(type, nbt.getInteger("amount")); + } + + this.tier = nbt.getInteger("tier"); + this.color = nbt.getInteger("color"); + this.shape = nbt.getInteger("shape"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(this.resource != null) { + nbt.setInteger("0id", Item.getIdFromItem(this.resource.getItem())); + nbt.setByte("size", (byte) this.resource.stackSize); + nbt.setShort("meta", (short) this.resource.getItemDamage()); + } + + if(this.acidRequirement != null) { + nbt.setInteger("fluid", this.acidRequirement.type.getID()); + nbt.setInteger("amount", this.acidRequirement.fill); + } + + nbt.setInteger("tier", this.tier); + nbt.setInteger("color", this.color); + nbt.setInteger("shape", this.shape); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockCoke.java b/src/main/java/com/hbm/blocks/generic/BlockCoke.java new file mode 100644 index 000000000..012f1dfea --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockCoke.java @@ -0,0 +1,25 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.items.ItemEnums; + +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockCoke extends BlockEnumMulti { + + public BlockCoke() { + super(Material.iron, ItemEnums.EnumCokeType.class, true, true); + } + + @Override + public int getFlammability(IBlockAccess world, int x, int y, int z, ForgeDirection face) { + return 5; + } + + @Override + public int getFireSpreadSpeed(IBlockAccess world, int x, int y, int z, ForgeDirection face) { + return 10; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index de7dfd046..db6dd613f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; import com.hbm.items.ModItems; import net.minecraft.block.BlockFalling; @@ -18,219 +19,219 @@ import net.minecraft.world.World; public class BlockCrate extends BlockFalling { - List crateList; - List weaponList; - List leadList; - List metalList; - List redList; + List crateList; + List weaponList; + List leadList; + List metalList; + List redList; public BlockCrate(Material p_i45394_1_) { super(p_i45394_1_); } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return null; - } + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return null; + } - @Override + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { - if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) - { - dropItems(world, x, y, z); - world.setBlockToAir(x, y, z); - world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); - return true; - } else { - if(world.isRemote) - { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + dropItems(world, x, y, z); + world.setBlockToAir(x, y, z); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + return true; + } else { + if(world.isRemote) { player.addChatMessage(new ChatComponentText("I'll need a crate opening device to get the loot, smashing the whole thing won't work...")); } - } - - return true; - } - - public void setDrops() { + } - crateList = new ArrayList(); - weaponList = new ArrayList(); - leadList = new ArrayList(); - metalList = new ArrayList(); - redList = new ArrayList(); + return true; + } - //Supply Crate - BlockCrate.addToListWithWeight(crateList, ModItems.syringe_metal_stimpak, 10); - BlockCrate.addToListWithWeight(crateList, ModItems.syringe_antidote, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_iron, 9); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_gold, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_lead, 6); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_cursed, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_rpg, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_fatman, 1); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_mp40, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uzi, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uboinik, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_lever_action, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_bolt_action, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.grenade_generic, 8); - BlockCrate.addToListWithWeight(crateList, ModItems.grenade_strong, 6); - BlockCrate.addToListWithWeight(crateList, ModItems.grenade_mk2, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.grenade_flare, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.ammo_container, 2); - - //Weapon Crate - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_iron, 10); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver, 9); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_gold, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_lead, 8); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_cursed, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_calamity, 3); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_rpg, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_karl, 4); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_panzerschreck, 6); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_hk69, 8); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_stinger, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_mp40, 9); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi, 6); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi_silencer, 5); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uboinik, 8); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_lever_action, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_bolt_action, 7); - - //Lead Crate - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_uranium, 10); - //BlockCrate.addToListWithWeight(leadList, ModItems.ingot_u235, 5); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_u238, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_plutonium, 7); - //BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu238, 5); - //BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu239, 4); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu240, 6); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_neptunium, 7); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_uranium_fuel, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_plutonium_fuel, 7); - BlockCrate.addToListWithWeight(leadList, ModItems.ingot_mox_fuel, 6); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_uranium, 10); - //BlockCrate.addToListWithWeight(leadList, ModItems.nugget_u235, 5); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_u238, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_plutonium, 7); - //BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu238, 5); - //BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu239, 4); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu240, 6); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_neptunium, 7); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_uranium_fuel, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_plutonium_fuel, 7); - BlockCrate.addToListWithWeight(leadList, ModItems.nugget_mox_fuel, 6); - BlockCrate.addToListWithWeight(leadList, ModItems.cell_deuterium, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.cell_tritium, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.cell_uf6, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.cell_puf6, 8); - BlockCrate.addToListWithWeight(leadList, ModItems.pellet_rtg, 6); - BlockCrate.addToListWithWeight(leadList, ModItems.pellet_rtg_weak, 7); - BlockCrate.addToListWithWeight(leadList, ModItems.tritium_deuterium_cake, 5); - BlockCrate.addToListWithWeight(leadList, ModItems.powder_yellowcake, 10); - - //Metal Crate - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_press), 10); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_coal_off), 10); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_selenium), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.red_pylon), 9); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_battery), 8); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_lithium_battery), 5); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 8); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_assembler), 10); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_fluidtank), 7); - BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_drill), 4); - BlockCrate.addToListWithWeight(metalList, ModItems.centrifuge_element, 6); - BlockCrate.addToListWithWeight(metalList, ModItems.motor, 8); - BlockCrate.addToListWithWeight(metalList, ModItems.coil_tungsten, 7); - BlockCrate.addToListWithWeight(metalList, ModItems.photo_panel, 3); - BlockCrate.addToListWithWeight(metalList, ModItems.coil_copper, 10); - BlockCrate.addToListWithWeight(metalList, ModItems.tank_steel, 9); - BlockCrate.addToListWithWeight(metalList, ModItems.blade_titanium, 3); - BlockCrate.addToListWithWeight(metalList, ModItems.bolt_compound, 2); - BlockCrate.addToListWithWeight(metalList, ModItems.piston_selenium, 6); - - //Red Crate - BlockCrate.addToListWithWeight(redList, ModItems.mysteryshovel, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_pip, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_blackjack, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_silver, 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44_pip, 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44_bj, 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44_silver, 1); - BlockCrate.addToListWithWeight(redList, ModItems.battery_spark, 1); - BlockCrate.addToListWithWeight(redList, ModItems.bottle_sparkle, 1); - BlockCrate.addToListWithWeight(redList, ModItems.bottle_rad, 1); - BlockCrate.addToListWithWeight(redList, ModItems.ring_starmetal, 1); - BlockCrate.addToListWithWeight(redList, ModItems.flame_pony, 1); - BlockCrate.addToListWithWeight(redList, Item.getItemFromBlock(ModBlocks.ntm_dirt), 1); - BlockCrate.addToListWithWeight(redList, Item.getItemFromBlock(ModBlocks.broadcaster_pc), 1); - } - - public void dropItems(World world, int x, int y, int z) { - Random rand = new Random(); - - setDrops(); + public void setDrops() { - List list = new ArrayList(); - - int i = rand.nextInt(3) + 3; - - if(this == ModBlocks.crate_weapon) { - i = 1 + rand.nextInt(2); - - if(rand.nextInt(100) == 34) - i = 25; - } - - for(int j = 0; j < i; j++) { + crateList = new ArrayList(); + weaponList = new ArrayList(); + leadList = new ArrayList(); + metalList = new ArrayList(); + redList = new ArrayList(); - if(this == ModBlocks.crate) - list.add(crateList.get(rand.nextInt(crateList.size()))); - if(this == ModBlocks.crate_weapon) - list.add(weaponList.get(rand.nextInt(weaponList.size()))); - if(this == ModBlocks.crate_lead) - list.add(leadList.get(rand.nextInt(leadList.size()))); - if(this == ModBlocks.crate_metal) - list.add(metalList.get(rand.nextInt(metalList.size()))); - if(this == ModBlocks.crate_red) - list.add(redList.get(rand.nextInt(redList.size()))); - } - - if(this == ModBlocks.crate_red) { - list.clear(); - - for(int k = 0; k < redList.size(); k++) { - list.add(redList.get(k)); - } - } - - for(Item stack : list) { - float f = rand.nextFloat() * 0.8F + 0.1F; - float f1 = rand.nextFloat() * 0.8F + 0.1F; - float f2 = rand.nextFloat() * 0.8F + 0.1F; - - EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(stack)); + // Supply Crate + BlockCrate.addToListWithWeight(crateList, ModItems.syringe_metal_stimpak, 10); + BlockCrate.addToListWithWeight(crateList, ModItems.syringe_antidote, 5); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_iron, 9); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver, 7); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_gold, 4); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_lead, 6); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_cursed, 5); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_rpg, 5); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_fatman, 1); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_mp40, 7); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_uzi, 7); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_uboinik, 7); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_lever_action, 5); + BlockCrate.addToListWithWeight(crateList, ModItems.clip_bolt_action, 5); + BlockCrate.addToListWithWeight(crateList, ModItems.grenade_generic, 8); + BlockCrate.addToListWithWeight(crateList, ModItems.grenade_strong, 6); + BlockCrate.addToListWithWeight(crateList, ModItems.grenade_mk2, 4); + BlockCrate.addToListWithWeight(crateList, ModItems.grenade_flare, 4); + BlockCrate.addToListWithWeight(crateList, ModItems.ammo_container, 2); - float f3 = 0.05F; - entityitem.motionX = (float)rand.nextGaussian() * f3; - entityitem.motionY = (float)rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)rand.nextGaussian() * f3; - if(!world.isRemote) - world.spawnEntityInWorld(entityitem); - } - } - - public static void addToListWithWeight(List list, Item item, int weight) { - for(int i = 0; i < weight; i++) - list.add(item); - } + // Weapon Crate + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_iron, 10); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver, 9); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_gold, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_lead, 8); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_cursed, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_calamity, 3); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_rpg, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_karl, 4); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_panzerschreck, 6); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_hk69, 8); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_stinger, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_mp40, 9); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi, 6); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi_silencer, 5); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uboinik, 8); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_lever_action, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_bolt_action, 7); + + // Lead Crate + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_uranium, 10); + // BlockCrate.addToListWithWeight(leadList, ModItems.ingot_u235, 5); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_u238, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_plutonium, 7); + // BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu238, 5); + // BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu239, 4); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_pu240, 6); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_neptunium, 7); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_uranium_fuel, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_plutonium_fuel, 7); + BlockCrate.addToListWithWeight(leadList, ModItems.ingot_mox_fuel, 6); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_uranium, 10); + // BlockCrate.addToListWithWeight(leadList, ModItems.nugget_u235, 5); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_u238, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_plutonium, 7); + // BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu238, 5); + // BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu239, 4); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_pu240, 6); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_neptunium, 7); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_uranium_fuel, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_plutonium_fuel, 7); + BlockCrate.addToListWithWeight(leadList, ModItems.nugget_mox_fuel, 6); + BlockCrate.addToListWithWeight(leadList, ModItems.cell_deuterium, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.cell_tritium, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.cell_uf6, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.cell_puf6, 8); + BlockCrate.addToListWithWeight(leadList, ModItems.pellet_rtg, 6); + BlockCrate.addToListWithWeight(leadList, ModItems.pellet_rtg_weak, 7); + BlockCrate.addToListWithWeight(leadList, ModItems.tritium_deuterium_cake, 5); + BlockCrate.addToListWithWeight(leadList, ModItems.powder_yellowcake, 10); + + // Metal Crate + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_press), 10); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 9); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), 6); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 7); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_coal_off), 10); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_diesel), 8); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_selenium), 7); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_rtg_grey), 4); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.red_pylon), 9); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_battery), 8); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_lithium_battery), 5); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 8); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_assembler), 10); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_fluidtank), 7); + BlockCrate.addToListWithWeight(metalList, Item.getItemFromBlock(ModBlocks.machine_drill), 4); + BlockCrate.addToListWithWeight(metalList, ModItems.centrifuge_element, 6); + BlockCrate.addToListWithWeight(metalList, ModItems.motor, 8); + BlockCrate.addToListWithWeight(metalList, ModItems.coil_tungsten, 7); + BlockCrate.addToListWithWeight(metalList, ModItems.photo_panel, 3); + BlockCrate.addToListWithWeight(metalList, ModItems.coil_copper, 10); + BlockCrate.addToListWithWeight(metalList, ModItems.tank_steel, 9); + BlockCrate.addToListWithWeight(metalList, ModItems.blade_titanium, 3); + BlockCrate.addToListWithWeight(metalList, ModItems.bolt_compound, 2); + BlockCrate.addToListWithWeight(metalList, ModItems.piston_selenium, 6); + + // Red Crate + BlockCrate.addToListWithWeight(redList, ModItems.mysteryshovel, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_pip, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_blackjack, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_silver, 1); + BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PIP), 1); + BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.BJ), 1); + BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.SILVER), 1); + BlockCrate.addToListWithWeight(redList, ModItems.battery_spark, 1); + BlockCrate.addToListWithWeight(redList, ModItems.bottle_sparkle, 1); + BlockCrate.addToListWithWeight(redList, ModItems.bottle_rad, 1); + BlockCrate.addToListWithWeight(redList, ModItems.ring_starmetal, 1); + BlockCrate.addToListWithWeight(redList, ModItems.flame_pony, 1); + BlockCrate.addToListWithWeight(redList, Item.getItemFromBlock(ModBlocks.ntm_dirt), 1); + BlockCrate.addToListWithWeight(redList, Item.getItemFromBlock(ModBlocks.broadcaster_pc), 1); + } + + public void dropItems(World world, int x, int y, int z) { + Random rand = new Random(); + + setDrops(); + + List list = new ArrayList(); + + int i = rand.nextInt(3) + 3; + + if(this == ModBlocks.crate_weapon) { + i = 1 + rand.nextInt(2); + + if(rand.nextInt(100) == 34) + i = 25; + } + + for(int j = 0; j < i; j++) { + + if(this == ModBlocks.crate) + list.add(crateList.get(rand.nextInt(crateList.size()))); + if(this == ModBlocks.crate_weapon) + list.add(weaponList.get(rand.nextInt(weaponList.size()))); + if(this == ModBlocks.crate_lead) + list.add(leadList.get(rand.nextInt(leadList.size()))); + if(this == ModBlocks.crate_metal) + list.add(metalList.get(rand.nextInt(metalList.size()))); + if(this == ModBlocks.crate_red) + list.add(redList.get(rand.nextInt(redList.size()))); + } + + if(this == ModBlocks.crate_red) { + list.clear(); + + for(int k = 0; k < redList.size(); k++) { + list.add(redList.get(k)); + } + } + + for(ItemStack stack : list) { + float f = rand.nextFloat() * 0.8F + 0.1F; + float f1 = rand.nextFloat() * 0.8F + 0.1F; + float f2 = rand.nextFloat() * 0.8F + 0.1F; + + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, stack.copy()); + + float f3 = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * f3; + entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * f3; + if(!world.isRemote) + world.spawnEntityInWorld(entityitem); + } + } + + public static void addToListWithWeight(List list, Item item, int weight) { + for(int i = 0; i < weight; i++) list.add(new ItemStack(item)); + } + + public static void addToListWithWeight(List list, ItemStack item, int weight) { + for(int i = 0; i < weight; i++) list.add(item); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockFlammable.java b/src/main/java/com/hbm/blocks/generic/BlockFlammable.java index 28198efc4..9a43b0bf1 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockFlammable.java +++ b/src/main/java/com/hbm/blocks/generic/BlockFlammable.java @@ -2,7 +2,6 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockBase; -import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/com/hbm/blocks/generic/BlockLayering.java b/src/main/java/com/hbm/blocks/generic/BlockLayering.java index e648823ee..7b45bbe3a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLayering.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLayering.java @@ -13,7 +13,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index c96ee03d5..d862c4ea5 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -140,10 +140,8 @@ public class BlockOre extends Block { return ModItems.rtg_unit; case 30: return ModItems.gun_spark_ammo; - case 31: - return ModItems.ammo_nuke_low; - case 32: - return ModItems.ammo_mirv; + case 31: case 32: + return ModItems.ammo_nuke; case 33: return ModItems.gun_defabricator_ammo; case 34: diff --git a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java index 84246b1fa..0d27866a6 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineExcavator; import net.minecraft.block.material.Material; @@ -18,8 +19,9 @@ public class MachineExcavator extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineExcavator(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); return null; } @@ -62,5 +64,11 @@ public class MachineExcavator extends BlockDummyable { MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {-1, 3, 3, -2, 3, -2}, this, dir); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {-1, 3, 3, -2, -2, 3}, this, dir); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {-1, 3, -2, 3, 3, 3}, this, dir); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + this.makeExtra(world, x + dir.offsetX * 3 + rot.offsetX, y + 1, z + dir.offsetZ * 3 + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 3 - rot.offsetX, y + 1, z + dir.offsetZ * 3 - rot.offsetZ); + this.makeExtra(world, x + rot.offsetX * 3, y + 1, z + rot.offsetZ * 3); + this.makeExtra(world, x - rot.offsetX * 3, y + 1, z - rot.offsetZ * 3); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 8ea6b80b2..60d086a66 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -18,6 +18,8 @@ import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -40,9 +42,9 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) - return new TileEntityMachineFluidTank(); - return new TileEntityProxyCombo().fluid(); + if(meta >= 12) return new TileEntityMachineFluidTank(); + if(meta >= 6) return new TileEntityProxyCombo().fluid(); + return null; } @Override @@ -80,13 +82,11 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP @Override protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); - this.makeExtra(world, x - rot.offsetX, y, z - rot.offsetZ); - this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); - this.makeExtra(world, x - dir.offsetX - rot.offsetX, y, z - dir.offsetZ - rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ - 1); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ - 1); } @Override @@ -145,10 +145,11 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { if(tool != ToolType.TORCH) return false; - return IRepairable.tryRepairMultiblock(world, x, y, z, this, Minecraft.getMinecraft().thePlayer); + return IRepairable.tryRepairMultiblock(world, x, y, z, this, player); } @Override + @SideOnly(Side.CLIENT) public void printHook(Pre event, World world, int x, int y, int z) { List materials = IRepairable.getRepairMaterials(world, x, y, z, this, Minecraft.getMinecraft().thePlayer); diff --git a/src/main/java/com/hbm/blocks/machine/MachineMixer.java b/src/main/java/com/hbm/blocks/machine/MachineMixer.java new file mode 100644 index 000000000..9d8e24d79 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineMixer.java @@ -0,0 +1,40 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineMixer; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineMixer extends BlockDummyable { + + public MachineMixer(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityMachineMixer(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/ReactorZirnox.java b/src/main/java/com/hbm/blocks/machine/ReactorZirnox.java index 39c65cc59..275e0a36c 100644 --- a/src/main/java/com/hbm/blocks/machine/ReactorZirnox.java +++ b/src/main/java/com/hbm/blocks/machine/ReactorZirnox.java @@ -63,6 +63,7 @@ public class ReactorZirnox extends BlockDummyable { return 2; } + @Override protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java index 77e771209..45ceb6d10 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java @@ -10,9 +10,7 @@ import api.hbm.block.IToolable; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/com/hbm/blocks/turret/TurretSentry.java b/src/main/java/com/hbm/blocks/turret/TurretSentry.java new file mode 100644 index 000000000..ecf9fe180 --- /dev/null +++ b/src/main/java/com/hbm/blocks/turret/TurretSentry.java @@ -0,0 +1,102 @@ +package com.hbm.blocks.turret; + +import java.util.Random; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.turret.TileEntityTurretSentry; + +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.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class TurretSentry extends BlockContainer { + + public TurretSentry() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityTurretSentry(); + } + + @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()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return true; + } + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + Random rand = new Random(); + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int meta) { + + TileEntityTurretSentry sentry = (TileEntityTurretSentry) world.getTileEntity(x, y, z); + + if(sentry != null) { + for(int i = 0; i < sentry.getSizeInventory(); ++i) { + ItemStack itemstack = sentry.getStackInSlot(i); + + if(itemstack != null) { + float oX = this.rand.nextFloat() * 0.8F + 0.1F; + float oY = this.rand.nextFloat() * 0.8F + 0.1F; + float oZ = this.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int toDrop = this.rand.nextInt(21) + 10; + + if(toDrop > itemstack.stackSize) { + toDrop = itemstack.stackSize; + } + + itemstack.stackSize -= toDrop; + EntityItem entityitem = new EntityItem(world, x + oX, y + oY, z + oZ, new ItemStack(itemstack.getItem(), toDrop, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float jump = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * jump; + entityitem.motionY = (float) this.rand.nextGaussian() * jump + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * jump; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, b); + } + + super.breakBlock(world, x, y, z, b, meta); + } +} diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 0801c078e..eba732a84 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -309,10 +309,10 @@ public class FalloutConfigJSON { if(obj.has("primarySubstitution")) entry.prim(readMetaArray(obj.get("primarySubstitution"))); if(obj.has("secondarySubstitutions")) entry.sec(readMetaArray(obj.get("secondarySubstitutions"))); - if(obj.has("chance")) entry.c(obj.get("chance").getAsInt()); + if(obj.has("chance")) entry.c(obj.get("chance").getAsDouble()); if(obj.has("minimumDistancePercent")) entry.min(obj.get("minimumDistancePercent").getAsDouble()); - if(obj.has("maximumDistancePercent")) entry.min(obj.get("maximumDistancePercent").getAsDouble()); + if(obj.has("maximumDistancePercent")) entry.max(obj.get("maximumDistancePercent").getAsDouble()); return entry; } diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 91ba31a22..8e705bd15 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -33,13 +33,21 @@ public class WorldConfig { public static int bedrockOilSpawn = 200; public static int meteoriteSpawn = 500; + public static int bedrockIronSpawn = 200; + public static int bedrockCopperSpawn = 200; + public static int bedrockBoraxSpawn = 300; + public static int bedrockAsbestosSpawn = 300; + public static int bedrockNiobiumSpawn = 300; + public static int bedrockTitaniumSpawn = 400; + public static int bedrockTungstenSpawn = 300; + public static int bedrockGoldSpawn = 500; + public static int ironClusterSpawn = 4; public static int titaniumClusterSpawn = 2; public static int aluminiumClusterSpawn = 3; public static int copperClusterSpawn = 4; public static int alexandriteSpawn = 100; - public static int hematiteSpawn = 2; public static int malachiteSpawn = 1; public static int netherUraniumuSpawn = 8; @@ -124,12 +132,20 @@ public class WorldConfig { bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200); + bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronSpawn", "Spawns a bedrock iron deposit every nTH chunk", 200); + bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperSpawn", "Spawns a bedrock copper deposit every nTH chunk", 200); + bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxSpawn", "Spawns a bedrock borax deposit every nTH chunk", 300); + bedrockAsbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B03_bedrockAsbestosSpawn", "Spawns a bedrock asbestos deposit every nTH chunk", 300); + bedrockNiobiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B04_bedrockNiobiumSpawn", "Spawns a bedrock niobium deposit every nTH chunk", 300); + bedrockTitaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B05_bedrockTitaniumSpawn", "Spawns a bedrock titanium deposit every nTH chunk", 500); + bedrockTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B06_bedrockTungstenSpawn", "Spawns a bedrock tungsten deposit every nTH chunk", 300); + bedrockGoldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B07_bedrockGoldSpawn", "Spawns a bedrock gold deposit every nTH chunk", 500); + ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4); titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2); aluminiumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C02_aluminiumClusterSpawn", "Amount of aluminium cluster veins per chunk", 3); copperClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C03_copperClusterSpawn", "Amount of copper cluster veins per chunk", 4); - hematiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L00_hematiteSpawn", "Amount of hematite block veins per chunk", 2); malachiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L01_malachiteSpawn", "Amount of malachite block veins per chunk", 1); netherUraniumuSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N00_uraniumSpawnrate", "Amount of nether uranium per chunk", 8); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 7a982340e..466a04d52 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -3,6 +3,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ItemEnums; import com.hbm.items.ModItems; import com.hbm.main.CraftingManager; @@ -28,7 +29,7 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 1), new Object[] { "TTT", "TRT", "TTT", 'T', ModItems.grenade_gascan, 'R', ModItems.detonator_laser }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 2), new Object[] { "TTT", "TRT", "TTT", 'T', ModItems.pellet_gas, 'R', ModItems.detonator_laser }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 3), new Object[] { "TRT", 'T', ModItems.grenade_cloud, 'R', ModItems.detonator_laser }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 4), new Object[] { "TR", 'T', ModItems.ammo_nuke_high, 'R', ModItems.detonator_laser }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 4), new Object[] { "TR", 'T', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 'R', ModItems.detonator_laser }); //Food CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_waffle, 1), new Object[] { "WEW", "MPM", "WEW", 'W', Items.wheat, 'E', Items.egg, 'M', Items.milk_bucket, 'P', ModItems.man_core }); @@ -58,6 +59,7 @@ public class ConsumableRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.coffee_radium), new Object[] { ModItems.coffee, RA226.nugget() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ingot_smore), new Object[] { Items.wheat, new ItemStack(ModItems.marshmallow, 1, 1), new ItemStack(Items.dye, 1, 3) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.marshmallow), new Object[] { Items.stick, Items.sugar, Items.wheat_seeds }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.quesadilla, 3), new Object[] { ModItems.cheese, ModItems.cheese, Items.bread }); //Peas CraftingManager.addRecipeAuto(new ItemStack(ModItems.peas), new Object[] { " S ", "SNS", " S ", 'S', Items.wheat_seeds, 'N', GOLD.nugget() }); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 84af77106..6e5023235 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -1,6 +1,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; +import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; import com.hbm.items.special.ItemWasteLong; @@ -49,6 +50,10 @@ public class MineralRecipes { add1To9Pair(ModBlocks.block_polymer, ModItems.ingot_polymer); add1To9Pair(ModBlocks.block_bakelite, ModItems.ingot_bakelite); add1To9Pair(ModBlocks.block_rubber, ModItems.ingot_rubber); + + for(int i = 0; i < EnumCokeType.values().length; i++) { + add1To9PairSameMeta(Item.getItemFromBlock(ModBlocks.block_coke), ModItems.coke, i); + } addMineralSet(ModItems.nugget_bismuth, ModItems.ingot_bismuth, ModBlocks.block_bismuth); addMineralSet(ModItems.nugget_tantalium, ModItems.ingot_tantalium, ModBlocks.block_tantalium); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 29f42b87e..a34154d95 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -5,6 +5,8 @@ import com.hbm.inventory.OreDictManager; import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; + +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92Cell; import com.hbm.main.CraftingManager; @@ -24,7 +26,7 @@ public class WeaponRecipes { //Missiles CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_taint, 1), new Object[] { ModItems.missile_assembly, ModItems.bucket_mud, ModItems.powder_spark_mix, ModItems.powder_magic }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_micro, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.ammo_nuke_high }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_micro, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_bhole, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.grenade_black_hole }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_schrabidium, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.grenade_aschrab }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_schrabidium, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.cell_sas3, ModItems.circuit_targeting_tier4 }); @@ -63,6 +65,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); + //Turrets + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', ModItems.circuit_red_copper, 'D', ModItems.crt_display }); + //Guns CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', IRON.plate(), 'M', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "SSS", " MW", 'S', ModItems.hull_small_steel, 'W', CU.plate(), 'M', ModItems.mechanism_launcher_1 }); @@ -171,8 +176,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 32), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 32), new Object[] { " I", "GC", " P", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_556_k, 32), new Object[] { "G", "C", "P", 'G', Items.gunpowder, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_556_k, 32), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); + CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", "P", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 32), new Object[] { " I", "GC", " P", 'I', IRON.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 32), new Object[] { " I", "GC", " P", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9, 'P', ModItems.primer_9 }); @@ -180,33 +186,28 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 24), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_44, 'P', ModItems.primer_44 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_explosive, 4), new Object[] { " I ", "GCL", " P ", 'I', Blocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_explosive, 4), new Object[] { " I ", "GCL", " P ", 'I', Blocks.tnt, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_explosive, 6), new Object[] { " I ", "GCL", " P ", 'I', ANY_HIGHEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_explosive, 6), new Object[] { " I ", "GCL", " P ", 'I', ANY_HIGHEXPLOSIVE.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_semtex, 4), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge_semtex, 4), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_4gauge_titan, 1), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_slug, 12), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_explosive, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_explosive, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_20gauge_flechette, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 6), new Object[] { "I", "C", "P", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.tnt, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", "P", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 12), new Object[] { " I ", "GCG", " P ", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 12), new Object[] { " I", "GC", " P", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', ModItems.wire_aluminium, 'P', STEEL.plate(), 'S', ModItems.hull_small_steel, 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_dart, 16), new Object[] { "IPI", "ICI", "IPI", 'I', ModItems.plate_polymer, 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.ordinal()) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_dart_nerf, 16), new Object[] { "I", "I", 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ModItems.plate_polymer, 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); + CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44, 'P', ModItems.primer_44); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 32), " I", "GC", " P", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_9); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 4), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); //Folly shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); @@ -218,60 +219,58 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); //Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { " T ", "GCG", " P ", 'T', Blocks.tnt, 'G', ModItems.rocket_fuel, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { " T ", "GCG", " P ", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 3), new Object[] { " T ", "GCG", " P ", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.casing_50, 'P', ModItems.primer_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_he, 1), new Object[] { "G", "R", 'G', ANY_HIGHEXPLOSIVE.ingot(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_incendiary, 1), new Object[] { "G", "R", 'G', P_RED.dust(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_phosphorus, 1), new Object[] { "G", "R", 'G', P_WHITE.ingot(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_emp, 1), new Object[] { "G", "R", 'G', DIAMOND.dust(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_shrapnel, 1), new Object[] { "G", "R", 'G', ModItems.pellet_buckshot, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_glare, 1), new Object[] { "GGG", "GRG", "GGG", 'G', REDSTONE.dust(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_toxic, 1), new Object[] { "G", "R", 'G', ModItems.pellet_gas, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_canister, 1), new Object[] { "G", "R", 'G', ModItems.pellet_canister, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_nuclear, 1), new Object[] { " P ", "NRN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL_CRACK.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket_rpc, 2), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.BIOFUEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { " T ", "GCG", " P ", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 });// I got tired of changing *all* of them, the stock one is always the first one anyway + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { " T ", "GCG", " P ", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE), new Object[] { "G", "R", 'G', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), new Object[] { "G", "R", 'G', P_RED.dust(), 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS), new Object[] { "G", "R", 'G', P_WHITE.ingot(), 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.EMP), new Object[] { "G", "R", 'G', "dustDiamond", 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SHRAPNEL), new Object[] { "G", "R", 'G', ModItems.pellet_buckshot, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE), new Object[] { "GGG", "GRG", "GGG", 'G', REDSTONE.dust(), 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CHLORINE), new Object[] { "G", "R", 'G', ModItems.pellet_gas, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CANISTER), new Object[] { "G", "R", 'G', ModItems.pellet_canister, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR), new Object[] { " P ", "NRN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.DIESEL_CRACK.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.PETROIL_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.GASOLINE_LEADED.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', Fluids.BIOFUEL.getDict(1000), 'H', ModItems.hull_small_steel, 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); //Stinger Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket_he, 1), new Object[] { "S", "R", 'S', ANY_HIGHEXPLOSIVE.ingot(), 'R', ModItems.ammo_stinger_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket_incendiary, 1), new Object[] { "S", "R", 'S', P_RED.dust(), 'R', ModItems.ammo_stinger_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket_nuclear, 1), new Object[] { "RPR", "PSP", "RPR", 'R', ModItems.neutron_reflector, 'P', PU239.nugget(), 'S', ModItems.ammo_stinger_rocket }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket_bones, 1), new Object[] { " C ", "SKR", " P ", 'C', ModItems.fallout, 'S', SR90.dust(), 'K', ModItems.ammo_stinger_rocket, 'R', RA226.dust(), 'P', PU.dust() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 2), "CE ", "FSF", " P ", 'C', ModItems.circuit_aluminium, 'E', ANY_PLASTICEXPLOSIVE.ingot(), 'F', ModItems.rocket_fuel, 'S', ModItems.hull_small_aluminium, 'P', ModItems.primer_50); + CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE), new Object[] { "S", "R", 'S', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_stinger_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.INCENDIARY), new Object[] { "S", "R", 'S', P_RED.dust(), 'R', ModItems.ammo_stinger_rocket }); + CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.NUCLEAR), new Object[] { "RPR", "PSP", "RPR", 'R', ModItems.neutron_reflector, 'P', PU239.nugget(), 'S', ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE) }); + CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.BONES), new Object[] { " C ", "SKR", " P ", 'C', ModItems.fallout, 'S', SR90.dust(), 'K', ModItems.ammo_stinger_rocket, 'R', RA226.dust(), 'P', PU.dust() }); //40mm grenades - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', Items.gunpowder, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', Items.gunpowder, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_tracer, 2), new Object[] { " T ", "GCI", " P ", 'T', LAPIS.dust(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_tracer, 2), new Object[] { " T ", "GCI", " P ", 'T', LAPIS.dust(), 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_he, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_incendiary, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_RED.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_phosphorus, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_WHITE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_toxic, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ModItems.powder_poison }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_concussion, 2), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', Items.glowstone_dust }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_nuclear, 2), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade, 'I', ModItems.neutron_reflector, 'P', PU239.nugget() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_finned, 1), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade_kampf, 2), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", " P ", 'T', ANY_HIGHEXPLOSIVE.dust(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.TRACER), new Object[] { " T ", "GCI", " P ", 'T', LAPIS.dust(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'I', IRON.plate() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.HE), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ANY_PLASTICEXPLOSIVE.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.INCENDIARY), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_RED.dust() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.PHOSPHORUS), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_WHITE.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.CHLORINE), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ModItems.powder_poison }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.CONCUSSION), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', Items.glowstone_dust }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.NUCLEAR), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE), 'I', ModItems.neutron_reflector, 'P', PU239.nugget() }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade }); + CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade }); //240mm Shells - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', Blocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', Blocks.tnt, 'G', ModItems.ballistite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 6), new Object[] { " T ", "GHG", "CCC", 'T', Blocks.tnt, 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_explosive, 4), new Object[] { " T ", "GHG", "CCC", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_explosive, 4), new Object[] { " T ", "GHG", "CCC", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ModItems.ballistite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_explosive, 6), new Object[] { " T ", "GHG", "CCC", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_t, 4), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', Items.gunpowder, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_t, 4), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', ModItems.ballistite, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_t, 6), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_du, 4), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', Items.gunpowder, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_du, 4), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', ModItems.ballistite, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_apfsds_du, 6), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', ModItems.cordite, 'C', CU.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell_w9, 1), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', ModItems.ammo_shell_explosive }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', ModItems.ballistite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 6), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.EXPLOSIVE), new Object[] { " T ", "GHG", "CCC", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.EXPLOSIVE), new Object[] { " T ", "GHG", "CCC", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.ballistite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(6, Ammo240Shell.EXPLOSIVE), new Object[] { " T ", "GHG", "CCC", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'H', ModItems.hull_small_steel, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.APFSDS_T), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', Items.gunpowder, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.APFSDS_T), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', ModItems.ballistite, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(6, Ammo240Shell.APFSDS_T), new Object[] { " I ", "GIG", "CCC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.APFSDS_DU), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', Items.gunpowder, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(4, Ammo240Shell.APFSDS_DU), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', ModItems.ballistite, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(6, Ammo240Shell.APFSDS_DU), new Object[] { " I ", "GIG", "CCC", 'I', U238.ingot(), 'G', ModItems.cordite, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE) }); //Artillery Shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 0), new Object[] { "CIC", "CSC", "CCC", 'C', ModItems.cordite, 'I', IRON.block(), 'S', ModItems.hull_small_steel }); @@ -290,38 +289,37 @@ public class WeaponRecipes { //Mini Nuke CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1), new Object[] { "P", "S", "P", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke_low, 1), new Object[] { "P", "S", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke_high, 1), new Object[] { "PPP", "PSP", "PPP", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke_tots, 1), new Object[] { "PPP", "PIP", "PPP", 'P', ModItems.pellet_cluster, 'I', PU239.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke_safe, 1), new Object[] { "G", "N", 'G', Items.glowstone_dust, 'N', ModItems.ammo_nuke_low }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke_pumpkin, 1), new Object[] { " T ", "TST", " T ", 'T', Blocks.tnt, 'S', ModItems.assembly_nuke }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke_barrel, 1), new Object[] { ModItems.nuclear_waste_pearl, ModItems.tank_steel }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), new Object[] { "P", "S", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), new Object[] { "PPP", "PSP", "PPP", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.TOTS), new Object[] { "PPP", "PIP", "PPP", 'P', ModItems.pellet_cluster, 'I', PU239.ingot() }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE), new Object[] { "G", "N", 'G', Items.glowstone_dust, 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW) }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN), new Object[] { " T ", "TST", " T ", 'T', ModBlocks.tnt, 'S', ModItems.assembly_nuke }); //MIRV recycling - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke, 6), new Object[] { ModItems.ammo_mirv }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke_low, 6), new Object[] { ModItems.ammo_mirv_low }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke_high, 6), new Object[] { ModItems.ammo_mirv_high }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke_safe, 6), new Object[] { ModItems.ammo_mirv_safe }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke, 6), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV) }); + CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.LOW), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW) }); + CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.HIGH), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH) }); + CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.SAFE), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE) }); //MIRV - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_mirv, 1), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke, 'C', ModItems.plate_aluminium, 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_mirv_low, 1), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke_low, 'C', ModItems.plate_aluminium, 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_mirv_high, 1), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke_high, 'C', ModItems.plate_aluminium, 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_mirv_safe, 1), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke_safe, 'C', ModItems.plate_aluminium, 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); - //since the milk part of the recipe isn't realy present in the MIRV's effect, it might as well be replaced with something more sensible, i.e. duct tape - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_mirv_special, 1), new Object[] { "CBC", "MCM", "CBC", 'C', ModItems.canned_jizz, 'B', ModItems.gun_bf_ammo, 'M', ModItems.ammo_mirv }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke, 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', ModItems.hull_small_steel }); + //since the milk part of the recipe isn't really present in the MIRV's effect, it might as well be replaced with something more sensible, i.e. duct tape + CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SPECIAL), new Object[] { "CBC", "MCM", "CBC", 'C', ModItems.canned_jizz, 'B', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE), 'M', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV) }); //Flamer fuel - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fuel, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fuel_napalm, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.canister_napalm }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fuel_phosphorus, 1), new Object[] { "CPC", "CDC", "CPC", 'C', COAL.dust(), 'P', P_WHITE.ingot(), 'D', ModItems.ammo_fuel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fuel_gas, 1), new Object[] { "PDP", "BDB", "PDP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.pellet_gas }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fuel_vaporizer, 1), new Object[] { "PSP", "SNS", "PSP", 'P', P_WHITE.ingot(), 'S', ModItems.crystal_sulfur, 'N', ModItems.ammo_fuel_napalm }); - + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', Fluids.DIESEL.getDict(1000) }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.canister_napalm }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.PHOSPHORUS), new Object[] { "CPC", "CDC", "CPC", 'C', COAL.dust(), 'P', P_WHITE.ingot(), 'D', ModItems.ammo_fuel }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE), new Object[] { "PDP", "BDB", "PDP", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', ModItems.pellet_gas }); + CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.VAPORIZER), new Object[] { "PSP", "SNS", "PSP", 'P', P_WHITE.ingot(), 'S', ModItems.crystal_sulfur, 'N', ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM) }); + //Fire Extingusisher Tanks - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.WATER.ordinal()) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext_foam, 1), new Object[] { " N ", "NFN", " N ", 'N', KNO.dust(), 'F', ModItems.ammo_fireext }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext_sand, 1), new Object[] { "NNN", "NFN", "NNN", 'N', ModBlocks.sand_boron, 'F', ModItems.ammo_fireext }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten, 'D', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.WATER.getID()) }); + CraftingManager.addRecipeAuto(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.FOAM), new Object[] { " N ", "NFN", " N ", 'N', KNO.dust(), 'F', ModItems.ammo_fireext }); + CraftingManager.addRecipeAuto(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND), new Object[] { "NNN", "NFN", "NNN", 'N', ModBlocks.sand_boron, 'F', ModItems.ammo_fireext }); //Grenades CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_generic, 4), new Object[] { "RS ", "ITI", " I ", 'I', IRON.plate(), 'R', ModItems.wire_red_copper, 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt) }); diff --git a/src/main/java/com/hbm/creativetabs/NukeTab.java b/src/main/java/com/hbm/creativetabs/NukeTab.java index dc7af22cb..ee0f5d7cf 100644 --- a/src/main/java/com/hbm/creativetabs/NukeTab.java +++ b/src/main/java/com/hbm/creativetabs/NukeTab.java @@ -15,11 +15,7 @@ public class NukeTab extends CreativeTabs { @Override public Item getTabIconItem() { - if(ModBlocks.float_bomb != null) - { - return Item.getItemFromBlock(ModBlocks.float_bomb); - } - + if(ModBlocks.nuke_man != null) return Item.getItemFromBlock(ModBlocks.nuke_man); return Items.iron_pickaxe; } diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index de26d22ce..079e2ab2c 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -171,7 +171,7 @@ public class EntityFalloutRain extends Entity { } float hardness = b.getBlockHardness(worldObj, x, y, z); - if(dist < 65 && hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0) { + if(dist < 65 && hardness <= Blocks.stonebrick.getExplosionResistance(null) && hardness >= 0/* && !b.hasTileEntity(worldObj.getBlockMetadata(x, y, z))*/) { Block bl = worldObj.getBlock(x, y - 1, z); if(bl == Blocks.air) { diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index ebbc07322..93335b142 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -264,10 +264,10 @@ public class EntityNukeExplosionMK3 extends Entity { } public static class ATEntry { - int dim; - int x; - int y; - int z; + public int dim; + public int x; + public int y; + public int z; public ATEntry(int dim, int x, int y, int z) { this.dim = dim; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java index ebf8a4c13..cc0418aa5 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; import net.minecraft.item.ItemStack; @@ -42,7 +43,7 @@ public class EntityMissileMicro extends EntityMissileBaseAdvanced { @Override public ItemStack getDebrisRareDrop() { - return new ItemStack(ModItems.ammo_nuke_high, 1); + return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java index b8ab2d9c4..558b2ef21 100644 --- a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java +++ b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java @@ -7,6 +7,7 @@ import com.hbm.entity.mob.ai.EntityAIMaskmanLasergun; import com.hbm.entity.mob.ai.EntityAIMaskmanMinigun; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.ArmorUtil; import api.hbm.entity.IRadiationImmune; import net.minecraft.entity.SharedMonsterAttributes; @@ -21,6 +22,7 @@ import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.world.World; @@ -118,8 +120,12 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia protected void dropFewItems(boolean bool, int i) { if(!worldObj.isRemote) { + + ItemStack mask = new ItemStack(ModItems.gas_mask_m65); + ArmorUtil.installGasMaskFilter(mask, new ItemStack(ModItems.gas_mask_filter_combo)); + + this.entityDropItem(mask, 0F); this.dropItem(ModItems.coin_maskman, 1); - this.dropItem(ModItems.gas_mask_m65, 1); this.dropItem(ModItems.v1, 1); this.dropItem(Items.skull, 1); } diff --git a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java index f03f2948a..89c569ab2 100644 --- a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java +++ b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java @@ -7,6 +7,7 @@ import com.hbm.entity.mob.ai.EntityAINuclearCreeperSwell; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; @@ -241,7 +242,7 @@ public class EntityNuclearCreeper extends EntityMob { this.dropItem(ModItems.fusion_core, 1); } if(i == 10) - this.dropItem(ModItems.ammo_nuke_high, 1); + this.entityDropItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 1); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java index f34ce7184..81e67cac1 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java @@ -14,6 +14,8 @@ import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.items.weapon.ItemGunBase; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -32,6 +34,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; @@ -80,14 +83,29 @@ public class EntityBulletBase extends Entity implements IProjectile { this.config = BulletConfigSyncingUtil.pullConfig(config); this.dataWatcher.updateObject(18, config); shooter = entity; + + ItemStack gun = entity.getHeldItem(); + boolean offsetShot = true; + + if(gun != null && gun.getItem() instanceof ItemGunBase) { + GunConfiguration cfg = ((ItemGunBase) gun.getItem()).mainConfig; + + if(cfg != null && cfg.hasSights && entity.isSneaking()) { + offsetShot = false; + } + } this.setLocationAndAngles(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, entity.rotationYaw, entity.rotationPitch); - double sideOffset = 0.16D; - - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; - this.posY -= 0.1D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + if(offsetShot) { + double sideOffset = 0.16D; + + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + this.posY -= 0.1D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + } else { + this.posY -= 0.1D; + } this.setPosition(this.posX, this.posY, this.posZ); this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); @@ -97,7 +115,7 @@ public class EntityBulletBase extends Entity implements IProjectile { this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread * (offsetShot ? 1F : 0.25F)); this.dataWatcher.updateObject(16, (byte)this.config.style); this.dataWatcher.updateObject(17, (byte)this.config.trail); @@ -233,6 +251,10 @@ public class EntityBulletBase extends Entity implements IProjectile { } if(config.maxAge == 0) { + + if(this.config.bUpdate != null) + this.config.bUpdate.behaveUpdate(this); + this.setDead(); return; } @@ -292,10 +314,10 @@ public class EntityBulletBase extends Entity implements IProjectile { boolean didBounce = false; - if (movement != null) { - - //handle entity collision - if(movement.entityHit != null) { + if(movement != null) { + + //handle entity collision + if(movement.entityHit != null) { DamageSource damagesource = this.config.getDamage(this, shooter); @@ -325,7 +347,7 @@ public class EntityBulletBase extends Entity implements IProjectile { } } - if(!victim.attackEntityFrom(damagesource, damage)) { + if(victim != null && !victim.attackEntityFrom(damagesource, damage)) { try { Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); @@ -337,12 +359,12 @@ public class EntityBulletBase extends Entity implements IProjectile { } } catch (Exception x) { } - } - - if(!worldObj.isRemote && headshot) { - if(victim instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) victim; - double head = living.height - living.getEyeHeight(); + } + + if(!worldObj.isRemote && headshot) { + if(victim instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) victim; + double head = living.height - living.getEyeHeight(); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaburst"); data.setInteger("count", 15); diff --git a/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java new file mode 100644 index 000000000..1c0b0f27c --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java @@ -0,0 +1,18 @@ +package com.hbm.entity.projectile; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityCombineBallNT extends EntityBulletBase { + + public EntityCombineBallNT(World world, int config, EntityLivingBase shooter) { + super(world, config, shooter); + overrideDamage = 1000; + } + + @Override + public void setDead() { + super.setDead(); + worldObj.createExplosion(shooter, posX, posY, posZ, 2, false); + } +} diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java index 9bcc01c3b..9dbb1bf00 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java @@ -97,18 +97,22 @@ public class ExplosionNukeRayBatched { float y0 = (float) (posY + (vec.yCoord * i)); float z0 = (float) (posZ + (vec.zCoord * i)); + int iX = (int) Math.floor(x0); + int iY = (int) Math.floor(y0); + int iZ = (int) Math.floor(z0); + double fac = 100 - ((double) i) / ((double) length) * 100; fac *= 0.07D; - if(!world.getBlock((int)x0, (int)y0, (int)z0).getMaterial().isLiquid()) - res -= Math.pow(world.getBlock((int)x0, (int)y0, (int)z0).getExplosionResistance(null), 7.5D - fac); - else - res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); + if(!world.getBlock(iX, iY, iZ).getMaterial().isLiquid()) + res -= Math.pow(world.getBlock(iX, iY, iZ).getExplosionResistance(null), 7.5D - fac); + //else + // res -= Math.pow(Blocks.air.getExplosionResistance(null), 7.5D - fac); // air is 0, might want to raise that is necessary - if(res > 0 && world.getBlock((int)x0, (int)y0, (int)z0) != Blocks.air) { + if(res > 0 && world.getBlock(iX, iY, iZ) != Blocks.air) { lastPos = new FloatTriplet(x0, y0, z0); //all-air chunks don't need to be buffered at all - ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(((int) x0) >> 4, ((int) z0) >> 4); + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(iX >> 4, iZ >> 4); chunkCoords.add(chunkPos); } @@ -185,9 +189,9 @@ public class ExplosionNukeRayBatched { boolean inChunk = false; for(int i = enter; i < vec.lengthVector(); i++) { - int x0 = (int)(posX + pX * i); - int y0 = (int)(posY + pY * i); - int z0 = (int)(posZ + pZ * i); + int x0 = (int) Math.floor(posX + pX * i); + int y0 = (int) Math.floor(posY + pY * i); + int z0 = (int) Math.floor(posZ + pZ * i); if(x0 >> 4 != chunkX || z0 >> 4 != chunkZ) { if(inChunk) { diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java new file mode 100644 index 000000000..64c4de445 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -0,0 +1,125 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashMap; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; +import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; +import com.hbm.explosion.vanillant.interfaces.IEntityRangeMutator; + +import net.minecraft.enchantment.EnchantmentProtection; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; + +/** The amount of good decisions in NTM is few and far between, but the VNT explosion surely is one of them. */ +public class EntityProcessorCross implements IEntityProcessor { + + protected double nodeDist = 2D; + protected IEntityRangeMutator range; + protected ICustomDamageHandler damage; + + public EntityProcessorCross(double nodeDist) { + this.nodeDist = nodeDist; + } + + @Override + public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashMap affectedPlayers = new HashMap(); + + size *= 2.0F; + + if(range != null) { + size = range.mutateRange(explosion, size); + } + + double minX = x - (double) size - 1.0D; + double maxX = x + (double) size + 1.0D; + double minY = y - (double) size - 1.0D; + double maxY = y + (double) size + 1.0D; + double minZ = z - (double) size - 1.0D; + double maxZ = z + (double) size + 1.0D; + + List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); + + ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size); + + Vec3[] nodes = new Vec3[7]; + + for(int i = 0; i < 7; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + nodes[i] = Vec3.createVectorHelper(x + dir.offsetX * nodeDist, y + dir.offsetY * nodeDist, z + dir.offsetZ * nodeDist); + } + + for(int index = 0; index < list.size(); ++index) { + + Entity entity = (Entity) list.get(index); + double distanceScaled = entity.getDistance(x, y, z) / size; + + if(distanceScaled <= 1.0D) { + + double deltaX = entity.posX - x; + double deltaY = entity.posY + entity.getEyeHeight() - y; + double deltaZ = entity.posZ - z; + double distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + if(distance != 0.0D) { + + deltaX /= distance; + deltaY /= distance; + deltaZ /= distance; + + double density = 0; + + for(Vec3 vec : nodes) { + double d = world.getBlockDensity(vec, entity.boundingBox); + if(d > density) { + density = d; + } + } + + double knockback = (1.0D - distanceScaled) * density; + + entity.attackEntityFrom(DamageSource.setExplosionSource(explosion.compat), (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D))); + double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); + + entity.motionX += deltaX * enchKnockback; + entity.motionY += deltaY * enchKnockback; + entity.motionZ += deltaZ * enchKnockback; + + if(entity instanceof EntityPlayer) { + affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); + } + + if(damage != null) { + damage.handleAttack(explosion, entity, distanceScaled); + } + } + } + } + + return affectedPlayers; + } + + public EntityProcessorCross withRangeMod(float mod) { + range = new IEntityRangeMutator() { + @Override + public float mutateRange(ExplosionVNT explosion, float range) { + return range * mod; + } + }; + return this; + } + + public EntityProcessorCross withDamageMod(ICustomDamageHandler damage) { + this.damage = damage; + return this; + } +} diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 5861bd967..82190a842 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -7,6 +7,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIScreenBobmazon.Offer; import com.hbm.inventory.gui.GUIScreenBobmazon.Requirement; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.items.special.ItemKitCustom; @@ -122,25 +123,24 @@ public class BobmazonOfferFactory { weapons.add(new Offer(new ItemStack(ModItems.gun_uzi), Requirement.OIL, 80 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.gun_lever_action), Requirement.ASSEMBLY, 60 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.gun_bolt_action), Requirement.ASSEMBLY, 35 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_revolver_ammo, 6), Requirement.OIL, 12 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_357_desh, 6), Requirement.OIL, 36 * inflation)); + weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.LEAD), Requirement.OIL, 12 * inflation)); + weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.DESH), Requirement.OIL, 36 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_44, 6), Requirement.OIL, 12 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_44_ap, 6), Requirement.OIL, 18 * inflation)); + weapons.add(new Offer(ModItems.ammo_44.stackFromEnum(6, Ammo44Magnum.AP), Requirement.OIL, 18 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_5mm, 50), Requirement.OIL, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_5mm_du, 50), Requirement.OIL, 75 * inflation)); + weapons.add(new Offer(ModItems.ammo_5mm.stackFromEnum(50, Ammo5mm.DU), Requirement.OIL, 75 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_rocket), Requirement.OIL, 5 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_rocket_incendiary), Requirement.OIL, 8 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_rocket_sleek), Requirement.OIL, 12 * inflation)); + weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), Requirement.OIL, 8 * inflation)); + weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SLEEK), Requirement.OIL, 12 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_grenade), Requirement.OIL, 4 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_grenade_incendiary), Requirement.OIL, 6 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_grenade_sleek), Requirement.OIL, 10 * inflation)); + weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.INCENDIARY), Requirement.OIL, 6 * inflation)); + weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.SLEEK), Requirement.OIL, 10 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_22lr, 32), Requirement.OIL, 24 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_22lr_ap, 32), Requirement.OIL, 32 * inflation)); + weapons.add(new Offer(ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), Requirement.OIL, 32 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.ammo_20gauge, 6), Requirement.OIL, 18 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_20gauge_slug, 6), Requirement.OIL, 20 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_20gauge_flechette, 6), Requirement.OIL, 22 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.grenade_if_generic, 3), Requirement.CHEMICS, 15 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.grenade_if_he, 3), Requirement.CHEMICS, 25 * inflation)); + weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.SLUG), Requirement.OIL, 20 * inflation)); + weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.FLECHETTE), Requirement.OIL, 22 * inflation)); + weapons.add(new Offer(new ItemStack(ModItems.gun_hp_ammo, 1), Requirement.ASSEMBLY, 1000 * inflation)); tools.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 20 * inflation)); tools.add(new Offer(new ItemStack(ModBlocks.machine_keyforge), Requirement.STEEL, 10 * inflation)); @@ -244,23 +244,23 @@ public class BobmazonOfferFactory { special.add(new Offer(ItemKitCustom.create("Maid's Cleaning Utensils", "For the hard to reach spots", 0x00ff00, 0x008000, new ItemStack(ModItems.gun_calamity), - new ItemStack(ModItems.ammo_50bmg_chlorophyte, 64), - new ItemStack(ModItems.ammo_50bmg_chlorophyte, 64), - new ItemStack(ModItems.ammo_50bmg_chlorophyte, 64), - new ItemStack(ModItems.ammo_50bmg_star, 64), - new ItemStack(ModItems.ammo_50bmg_star, 64), + ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), + ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), + ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), + ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR), + ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR), new ItemStack(ModItems.gun_supershotgun), - new ItemStack(ModItems.ammo_12gauge_du, 64), - new ItemStack(ModItems.ammo_12gauge_du, 64), - new ItemStack(ModItems.ammo_12gauge_shrapnel, 64), - new ItemStack(ModItems.ammo_12gauge_shrapnel, 64), - new ItemStack(ModItems.ammo_12gauge_marauder, 4), + ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU), + ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU), + ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL), + ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL), + ModItems.ammo_12gauge.stackFromEnum(4, Ammo12Gauge.MARAUDER), new ItemStack(ModItems.gun_sauer), new ItemStack(ModItems.ammo_4gauge, 64), - new ItemStack(ModItems.ammo_4gauge_claw, 64), - new ItemStack(ModItems.ammo_4gauge_kampf, 64), - new ItemStack(ModItems.ammo_4gauge_flechette, 64), - new ItemStack(ModItems.ammo_4gauge_void, 64) + ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.CLAW), + ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.KAMPF), + ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.FLECHETTE), + ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.VOID) ), Requirement.HIDDEN, 64)); special.add(new Offer(ItemKitNBT.create( @@ -276,13 +276,13 @@ public class BobmazonOfferFactory { new ItemStack(ModItems.rpa_legs), new ItemStack(ModItems.rpa_boots), new ItemStack(ModItems.gun_lacunae), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64), - new ItemStack(ModItems.ammo_5mm_star, 64) + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), + ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR) ).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32)); special.add(new Offer(new ItemStack(ModItems.gun_detonator, 1), Requirement.HIDDEN, 32)); diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 75d8d5188..89860b309 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map.Entry; import com.hbm.handler.guncfg.*; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; public class BulletConfigSyncingUtil { @@ -73,6 +74,7 @@ public class BulletConfigSyncingUtil { public static int G12_DU = i++; public static int G12_AM = i++; public static int G12_SLEEK = i++; + public static int G12_PERCUSSION = i++; public static int LR22_NORMAL = i++; public static int LR22_AP = i++; @@ -94,6 +96,10 @@ public class BulletConfigSyncingUtil { public static int P9_DU = i++; public static int P9_ROCKET = i++; + public static int ACP_45 = i++; + public static int ACP_45_AP = i++; + public static int ACP_45_DU = i++; + public static int BMG50_NORMAL = i++; public static int BMG50_INCENDIARY = i++; public static int BMG50_EXPLOSIVE = i++; @@ -105,6 +111,10 @@ public class BulletConfigSyncingUtil { public static int BMG50_FLECHETTE_NORMAL = i++; public static int BMG50_FLECHETTE_AM = i++; public static int BMG50_FLECHETTE_PO = i++; + + public static int ROUND_LUNA_SNIPER_SABOT = i++; + public static int ROUND_LUNA_SNIPER_INCENDIARY = i++; + public static int ROUND_LUNA_SNIPER_EXPLOSIVE = i++; public static int R5_NORMAL = i++; public static int R5_EXPLOSIVE = i++; @@ -165,6 +175,8 @@ public class BulletConfigSyncingUtil { public static int R556_FLECHETTE_DU = i++; public static int R556_FLECHETTE_SLEEK = i++; public static int R556_K = i++; + + public static int W308 = i++; public static int B75_NORMAL = i++; public static int B75_INCENDIARY = i++; @@ -229,6 +241,10 @@ public class BulletConfigSyncingUtil { public static int NUKE_MIRV_SPECIAL = i++; public static int NUKE_AMAT = i++; + + public static int TWR_RAY = i++; + public static int HLR_NORMAL = i++; + public static int HLR_ALT = i++; public static int ZOMG_BOLT = i++; public static int DET_BOLT = i++; @@ -271,18 +287,18 @@ public class BulletConfigSyncingUtil { configSet.put(TEST_CONFIG, BulletConfigFactory.getTestConfig()); configSet.put(IRON_REVOLVER, Gun357MagnumFactory.getRevIronConfig()); - configSet.put(STEEL_REVOLVER, Gun357MagnumFactory.getRevSteelConfig()); - configSet.put(LEAD_REVOLVER, Gun357MagnumFactory.getRevLeadConfig()); + configSet.put(STEEL_REVOLVER, Gun357MagnumFactory.getRevLeadConfig()); + configSet.put(LEAD_REVOLVER, Gun357MagnumFactory.getRevNuclearConfig()); configSet.put(GOLD_REVOLVER, Gun357MagnumFactory.getRevGoldConfig()); configSet.put(CURSED_REVOLVER, Gun357MagnumFactory.getRevCursedConfig()); configSet.put(SCHRABIDIUM_REVOLVER, Gun357MagnumFactory.getRevSchrabidiumConfig()); - configSet.put(NIGHT_REVOLVER, Gun357MagnumFactory.getRevNightmareConfig()); + configSet.put(NIGHT_REVOLVER, Gun357MagnumFactory.getRevNightmare1Config()); configSet.put(NIGHT2_REVOLVER, Gun357MagnumFactory.getRevNightmare2Config()); - configSet.put(SATURNITE_REVOLVER, Gun357MagnumFactory.getRevSteelConfig().setToFire(3)); + configSet.put(SATURNITE_REVOLVER, Gun357MagnumFactory.getRevLeadConfig().setToFire(3)); configSet.put(DESH_REVOLVER, Gun357MagnumFactory.getRevDeshConfig()); configSet.put(IRON_HS, Gun357MagnumFactory.getRevIronConfig().setHeadshot(3F)); - configSet.put(STEEL_HS, Gun357MagnumFactory.getRevSteelConfig().setHeadshot(3F)); + configSet.put(STEEL_HS, Gun357MagnumFactory.getRevCursedConfig().setHeadshot(3F)); configSet.put(GOLD_HS, Gun357MagnumFactory.getRevGoldConfig().setHeadshot(3F)); configSet.put(DESH_HS, Gun357MagnumFactory.getRevDeshConfig().setHeadshot(3F)); @@ -335,6 +351,7 @@ public class BulletConfigSyncingUtil { configSet.put(G12_DU, Gun12GaugeFactory.get12GaugeDUConfig()); configSet.put(G12_AM, Gun12GaugeFactory.get12GaugeAMConfig()); configSet.put(G12_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig()); + configSet.put(G12_PERCUSSION, Gun12GaugeFactory.get12GaugePercussionConfig()); configSet.put(LR22_NORMAL, Gun22LRFactory.get22LRConfig()); configSet.put(LR22_AP, Gun22LRFactory.get22LRAPConfig()); @@ -356,6 +373,10 @@ public class BulletConfigSyncingUtil { configSet.put(P9_DU, Gun9mmFactory.get9mmDUConfig()); configSet.put(P9_ROCKET, Gun9mmFactory.get9mmRocketConfig()); + configSet.put(ACP_45, Gun45ACPFactory.get45AutoConfig()); + configSet.put(ACP_45_AP, Gun45ACPFactory.get45AutoAPConfig()); + configSet.put(ACP_45_DU, Gun45ACPFactory.get45AutoDUConfig()); + configSet.put(BMG50_NORMAL, Gun50BMGFactory.get50BMGConfig()); configSet.put(BMG50_INCENDIARY, Gun50BMGFactory.get50BMGFireConfig()); configSet.put(BMG50_PHOSPHORUS, Gun50BMGFactory.get50BMGPhosphorusConfig()); @@ -368,6 +389,10 @@ public class BulletConfigSyncingUtil { configSet.put(BMG50_FLECHETTE_AM, Gun50BMGFactory.get50BMGFlechetteAMConfig()); configSet.put(BMG50_FLECHETTE_PO, Gun50BMGFactory.get50BMGFlechettePOConfig()); + configSet.put(ROUND_LUNA_SNIPER_SABOT, Gun50BMGFactory.getLunaticSabotRound()); + configSet.put(ROUND_LUNA_SNIPER_INCENDIARY, Gun50BMGFactory.getLunaticIncendiaryRound()); + configSet.put(ROUND_LUNA_SNIPER_EXPLOSIVE, Gun50BMGFactory.getLunaticExplosiveRound()); + configSet.put(R5_NORMAL, Gun5mmFactory.get5mmConfig()); configSet.put(R5_EXPLOSIVE, Gun5mmFactory.get5mmExplosiveConfig()); configSet.put(R5_DU, Gun5mmFactory.get5mmDUConfig()); @@ -428,6 +453,8 @@ public class BulletConfigSyncingUtil { configSet.put(R556_FLECHETTE_SLEEK, Gun556mmFactory.get556FlechetteSleekConfig()); configSet.put(R556_K, Gun556mmFactory.get556KConfig()); + configSet.put(W308, Gun762mmFactory.get762NATOConfig()); + configSet.put(B75_NORMAL, Gun75BoltFactory.get75BoltConfig()); configSet.put(B75_INCENDIARY, Gun75BoltFactory.get75BoltIncConfig()); configSet.put(B75_HE, Gun75BoltFactory.get75BoltHEConfig()); @@ -485,6 +512,10 @@ public class BulletConfigSyncingUtil { configSet.put(NUKE_MIRV_SPECIAL, GunFatmanFactory.getMirvSpecialConfig()); configSet.put(NUKE_AMAT, GunFatmanFactory.getBalefireConfig()); + + //configSet.put(TWR_RAY, GunEnergyFactory.getSingConfig()); + //configSet.put(HLR_NORMAL, GunEnergyFactory.getHLRPrecisionConfig()); + //configSet.put(HLR_ALT, GunEnergyFactory.getHLRScatterConfig()); configSet.put(ZOMG_BOLT, GunEnergyFactory.getZOMGBoltConfig()); configSet.put(DET_BOLT, GunDetonatorFactory.getLaserConfig()); @@ -500,16 +531,16 @@ public class BulletConfigSyncingUtil { configSet.put(GLASS_EMGAMMA, GunPoweredFactory.getEMGammaConfig()); - configSet.put(CHL_LR22, Gun22LRFactory.get22LRConfig().setToHoming(ModItems.ammo_22lr_chlorophyte)); - configSet.put(CHL_LR22_FIRE, Gun22LRFactory.get22LRConfig().setToFire(3).setToHoming(ModItems.ammo_22lr_chlorophyte)); - configSet.put(CHL_M44, Gun44MagnumFactory.getNoPipConfig().setToHoming(ModItems.ammo_44_chlorophyte)); - configSet.put(CHL_P9, Gun9mmFactory.get9mmConfig().setToHoming(ModItems.ammo_9mm_chlorophyte)); - configSet.put(CHL_BMG50, Gun50BMGFactory.get50BMGConfig().setToHoming(ModItems.ammo_50bmg_chlorophyte)); - configSet.put(CHL_R5, Gun5mmFactory.get5mmConfig().setToHoming(ModItems.ammo_5mm_chlorophyte)); - configSet.put(CHL_R5_BOLT, Gun5mmFactory.get5mmConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE).setToHoming(ModItems.ammo_5mm_chlorophyte)); - configSet.put(CHL_AE50, Gun50AEFactory.get50AEConfig().setToHoming(ModItems.ammo_50ae_chlorophyte)); - configSet.put(CHL_R556, Gun556mmFactory.get556Config().setToHoming(ModItems.ammo_556_chlorophyte)); - configSet.put(CHL_R556_FLECHETTE, Gun556mmFactory.get556FlechetteConfig().setToHoming(ModItems.ammo_556_flechette_chlorophyte)); + configSet.put(CHL_LR22, Gun22LRFactory.get22LRConfig().setToHoming(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.CHLOROPHYTE))); + configSet.put(CHL_LR22_FIRE, Gun22LRFactory.get22LRConfig().setToFire(3).setToHoming(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.CHLOROPHYTE))); + configSet.put(CHL_M44, Gun44MagnumFactory.getNoPipConfig().setToHoming(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.CHLOROPHYTE))); + configSet.put(CHL_P9, Gun9mmFactory.get9mmConfig().setToHoming(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.CHLOROPHYTE))); + configSet.put(CHL_BMG50, Gun50BMGFactory.get50BMGConfig().setToHoming(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.CHLOROPHYTE))); + configSet.put(CHL_R5, Gun5mmFactory.get5mmConfig().setToHoming(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.CHLOROPHYTE))); + configSet.put(CHL_R5_BOLT, Gun5mmFactory.get5mmConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE).setToHoming(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.CHLOROPHYTE))); + configSet.put(CHL_AE50, Gun50AEFactory.get50AEConfig().setToHoming(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.CHLOROPHYTE))); + configSet.put(CHL_R556, Gun556mmFactory.get556Config().setToHoming(ModItems.ammo_556.stackFromEnum(Ammo556mm.CHLOROPHYTE))); + configSet.put(CHL_R556_FLECHETTE, Gun556mmFactory.get556FlechetteConfig().setToHoming(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_CHLOROPHYTE))); configSet.put(MASKMAN_BULLET, GunNPCFactory.getMaskmanBullet()); configSet.put(MASKMAN_ORB, GunNPCFactory.getMaskmanOrb()); diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index d8ba85af4..71c208daa 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -10,19 +10,22 @@ import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletRicochetBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.interfaces.Untested; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.particle.SpentCasing; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.util.EnumChatFormatting; -public class BulletConfiguration { +public class BulletConfiguration implements Cloneable { //what item this specific configuration consumes - public Item ammo; + public ComparableStack ammo; //how many ammo units one item restores public int ammoCount = 1; //how fast the bullet is (in sanics per second, or sps) @@ -98,6 +101,7 @@ public class BulletConfiguration { public int plink; //vanilla particle FX public String vPFX = ""; + public SpentCasing spentCasing; //energy projectiles //power consumed per shot @@ -173,9 +177,7 @@ public class BulletConfiguration { return this; } - public BulletConfiguration setToHoming(Item ammo) { - - this.ammo = ammo; + public BulletConfiguration getChlorophyte() { this.bUpdate = BulletConfigFactory.getHomingBehavior(200, 45); this.dmgMin *= 1.5F; this.dmgMax *= 1.5F; @@ -183,9 +185,27 @@ public class BulletConfiguration { this.doesRicochet = false; this.doesPenetrate = false; this.vPFX = "greendust"; + + if(this.spentCasing != null) { + int[] colors = this.spentCasing.getColors(); + this.spentCasing = this.spentCasing.clone(); + + if(colors != null && colors.length > 0) { + int[] colorClone = new int[colors.length]; + for(int i = 0; i < colors.length; i++) colorClone[i] = colors[i]; + colorClone[colorClone.length - 1] = 0x659750; // <- standard chlorophyte coloring in last place + this.spentCasing.setColor(colorClone).register(this.spentCasing.getName() + "Cl"); + } + } + return this; } + public BulletConfiguration setToHoming(ItemStack ammo) { + this.ammo = new ComparableStack(ammo); + return getChlorophyte(); + } + public BulletConfiguration accuracyMod(float mod) { this.spread *= mod; @@ -214,4 +234,14 @@ public class BulletConfiguration { return dmg; } + + @Override + public BulletConfiguration clone() { + try { + return (BulletConfiguration) super.clone(); + } catch(CloneNotSupportedException e) { + MainRegistry.logger.catching(e); + return new BulletConfiguration(); + } + } } diff --git a/src/main/java/com/hbm/handler/CasingEjector.java b/src/main/java/com/hbm/handler/CasingEjector.java new file mode 100644 index 000000000..72ec13a3a --- /dev/null +++ b/src/main/java/com/hbm/handler/CasingEjector.java @@ -0,0 +1,163 @@ +package com.hbm.handler; + +import java.util.HashMap; +import java.util.Random; + +import org.lwjgl.util.vector.Matrix4f; +import org.lwjgl.util.vector.Vector3f; +import org.lwjgl.util.vector.Vector4f; + +import com.hbm.particle.ParticleSpentCasing; +import com.hbm.particle.SpentCasing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** + * Config for the guns themselves on where to spawn casings and at what angle + * @author uffr, hbm + */ +public class CasingEjector implements Cloneable { + + public static HashMap mappings = new HashMap(); + public static final Random rand = new Random(); + + private int id; + private static int nextId = 0; + private Vec3 posOffset = Vec3.createVectorHelper(0, 0, 0); + private Vec3 initialMotion = Vec3.createVectorHelper(0, 0, 0); + private int casingAmount = 1; + private boolean afterReload = false; + private int delay = 0; + private float randomYaw = 0F; + private float randomPitch = 0F; + + public CasingEjector() { + this.id = nextId; + nextId++; + + mappings.put(id, this); + } + + public CasingEjector setOffset(double x, double y, double z) { + return setOffset(Vec3.createVectorHelper(x, y, z)); + } + + public CasingEjector setOffset(Vec3 vec) { + this.posOffset = vec; + return this; + } + + public CasingEjector setMotion(double x, double y, double z) { + return setMotion(Vec3.createVectorHelper(x, y, z)); + } + + public CasingEjector setMotion(Vec3 vec) { + this.initialMotion = vec; + return this; + } + + public CasingEjector setAmount(int am) { + this.casingAmount = am; + return this; + } + + public CasingEjector setAfterReload() { + this.afterReload = true; + return this; + } + + public CasingEjector setDelay(int delay) { + this.delay = delay; + return this; + } + + public CasingEjector setAngleRange(float yaw, float pitch) { + this.randomYaw = yaw; + this.randomPitch = pitch; + return this; + } + + public int getId() { return this.id; } + public Vec3 getOffset() { return this.posOffset; } + public Vec3 getMotion() { return this.initialMotion; } + public int getAmount() { return this.casingAmount; } + public boolean getAfterReload() { return this.afterReload; } + public int getDelay() { return this.delay; } + public float getYawFactor() { return this.randomYaw; } + public float getPitchFactor() { return this.randomPitch; } + + @SideOnly(Side.CLIENT) + public void spawnCasing(TextureManager textureManager, SpentCasing config, World world, double x, double y, double z, float pitch, float yaw, boolean crouched) { + Vec3 rotatedMotionVec = rotateVector(getMotion(), pitch + (float) rand.nextGaussian() * getPitchFactor(), yaw + (float) rand.nextGaussian() * getPitchFactor(), getPitchFactor(), getPitchFactor()); + ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (getPitchFactor() * rand.nextGaussian()), (float) (getYawFactor() * rand.nextGaussian()), config); + + offsetCasing(casing, getOffset(), pitch, yaw, crouched); + + casing.rotationPitch = (float) Math.toDegrees(pitch); + casing.rotationYaw = (float) Math.toDegrees(yaw); + + Minecraft.getMinecraft().effectRenderer.addEffect(casing); + } + + // Rotate a position + @SideOnly(Side.CLIENT) + private static void offsetCasing(ParticleSpentCasing casing, Vec3 offset, float pitch, float yaw, boolean crouched) { + // x-axis offset, 0 if crouched to center + final float oX = (float) (crouched ? 0 : offset.xCoord); + // Create rotation matrices for pitch and yaw + final Matrix4f pitchMatrix = new Matrix4f(), yawMatrix = new Matrix4f(); + + pitchMatrix.rotate(pitch, new Vector3f(1, 0, 0)); // modify axis of rotation + yawMatrix.rotate(-yaw, new Vector3f(0, 1, 0)); + + // Multiply matrices to get combined rotation matrix + final Matrix4f rotMatrix = Matrix4f.mul(yawMatrix, pitchMatrix, null); + // Create vector representing the offset and apply rotation + final Vector4f offsetVector = new Vector4f(oX, (float) offset.yCoord, (float) offset.zCoord, 1); // set fourth coordinate to 1 + Matrix4f.transform(rotMatrix, offsetVector, offsetVector); + final Vector3f result = new Vector3f(); // create result vector + result.set(offsetVector.x, offsetVector.y, offsetVector.z); // set result vector using transformed coordinates + // Apply rotation + casing.setPosition(casing.posX + result.x, casing.posY + result.y, casing.posZ + result.z); + } + + private static Vec3 rotateVector(Vec3 vector, float pitch, float yaw, float pitchFactor, float yawFactor) { + // Apply randomness to vector + vector.xCoord += rand.nextGaussian() * yawFactor; + vector.yCoord += rand.nextGaussian() * pitchFactor; + vector.zCoord += rand.nextGaussian() * yawFactor; + + final Matrix4f pitchMatrix = new Matrix4f(), yawMatrix = new Matrix4f(); + + pitchMatrix.setIdentity(); + pitchMatrix.rotate(-pitch, new Vector3f(1, 0, 0)); + + yawMatrix.setIdentity(); + yawMatrix.rotate(-yaw, new Vector3f(0, 1, 0)); + + final Vector4f vector4f = new Vector4f((float) vector.xCoord, (float) vector.yCoord, (float) vector.zCoord, 1); + + Matrix4f.transform(pitchMatrix, vector4f, vector4f); + Matrix4f.transform(yawMatrix, vector4f, vector4f); + + return Vec3.createVectorHelper(vector4f.x, vector4f.y, vector4f.z); + } + + public static CasingEjector fromId(int id) { + return mappings.get(id); + } + + @Override + public CasingEjector clone() { + try { + return (CasingEjector) super.clone(); + } catch(CloneNotSupportedException e) { + return new CasingEjector(); + } + } +} diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index d435ee678..af8f911e7 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -35,7 +35,8 @@ public class FuelHandler implements IFuelHandler { if(fuel.getItem() == ModItems.powder_fire) return 6400; if(fuel.getItem() == ModItems.lignite) return 1200; if(fuel.getItem() == ModItems.powder_lignite) return 1200; - if(fuel.getItem() == ModItems.coke) return 3200; + if(fuel.getItem() == ModItems.coke) return single * 16; + if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160; if(fuel.getItem() == ModItems.book_guide) return single; if(fuel.getItem() == ModItems.coal_infernal) return 4800; if(fuel.getItem() == ModItems.crystal_coal) return 6400; diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 1390bb5fb..499af94d0 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -4,11 +4,14 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; -public class GunConfiguration { +import net.minecraft.util.ResourceLocation; + +public class GunConfiguration implements Cloneable { /** * alt function restrictions: @@ -31,8 +34,14 @@ public class GunConfiguration { //animations! public HashMap animations = new HashMap(); - //whether ot not to disable crosshais when sneaking + //whether or not to disable crosshair when sneaking public boolean hasSights; + //texture overlay when sneaking + public ResourceLocation scopeTexture; + //whether the FOV multiplier should be absolute or multiplicative to other modifiers, multiplicative mode is experimental! + public boolean absoluteFOV = true; + //the target FOV/multiplied FOV modifier when sneaking + public float zoomFOV = 0.0F; //how long the reload animation will play //MUST BE GREATER THAN ZERO ! ! ! @@ -46,6 +55,7 @@ public class GunConfiguration { public float firingPitch = 1.0F; //whether the reload sound should be played at the beginning or at the end of the reload public boolean reloadSoundEnd = true; + public String equipSound = ""; //how much ammo the clip can hold, 0 if drawn from inventory public int ammoCap; @@ -58,14 +68,14 @@ public class GunConfiguration { //for electrically powered weapons: //the Maximum capacity of the gun - public int maxCharge; + public long maxCharge; //the rate at which the gun is charged - public int chargeRate; + public long chargeRate; //how much energy is discharged per shot - public int dischargePerShot; + public long dischargePerShot; public String name = ""; - public String manufacturer = ""; + public EnumGunManufacturer manufacturer = EnumGunManufacturer.NONE; public List comment = new ArrayList(); //bullet configs for main and alt fire @@ -73,6 +83,9 @@ public class GunConfiguration { //crosshair public Crosshair crosshair; + + //casing eject behavior + public CasingEjector ejector = null; public static final int MODE_NORMAL = 0; public static final int MODE_RELEASE = 1; diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 7e4e2c4d6..1d48da6e8 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -1,10 +1,21 @@ package com.hbm.handler; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.HashMap; +import java.util.Map.Entry; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.items.ModItems; import com.hbm.items.armor.ItemModCladding; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.util.Compat; @@ -15,7 +26,7 @@ import net.minecraft.item.ItemStack; public class HazmatRegistry { - public static void registerHazmats() { + public static void initDefault() { //assuming coefficient of 10 //real coefficient turned out to be 5 @@ -249,4 +260,80 @@ public class HazmatRegistry { } + public static final Gson gson = new Gson(); + public static void registerHazmats() { + File folder = MainRegistry.configHbmDir; + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmRadResist.json"); + File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmRadResist.json"); + + initDefault(); + + if(!config.exists()) { + writeDefault(template); + } else { + HashMap conf = readConfig(config); + + if(conf != null) { + entries.clear(); + entries.putAll(conf); + } + } + } + + private static void writeDefault(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); //pretty formatting + writer.beginObject(); //initial '{' + writer.name("comment").value("Template file, remove the underscore ('_') from the name to enable the config."); + writer.name("entries").beginArray(); //all recipes are stored in an array called "entries" + + for(Entry entry : entries.entrySet()) { + writer.beginObject(); //begin object for a single recipe + writer.name("item").value(Item.itemRegistry.getNameForObject(entry.getKey())); + writer.name("resistance").value(entry.getValue()); + writer.endObject(); //end recipe object + } + + writer.endArray(); //end recipe array + writer.endObject(); //final '}' + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static HashMap readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + JsonArray array = json.get("entries").getAsJsonArray(); + HashMap conf = new HashMap(); + + for(JsonElement element : array) { + JsonObject object = (JsonObject) element; + + try { + String name = object.get("item").getAsString(); + Item item = (Item) Item.itemRegistry.getObject(name); + double resistance = object.get("resistance").getAsDouble(); + if(item != null) { + conf.put(item, resistance); + } else { + MainRegistry.logger.error("Tried loading unknown item " + name + " for hazmat entry."); + } + } catch(Exception ex) { + MainRegistry.logger.error("Encountered " + ex + " trying to read hazmat entry " + element.toString()); + } + } + return conf; + + } catch(Exception ex) { + ex.printStackTrace(); + } + + return null; + } } diff --git a/src/main/java/com/hbm/handler/ToolAbility.java b/src/main/java/com/hbm/handler/ToolAbility.java index 60bdb43d5..6710a7af3 100644 --- a/src/main/java/com/hbm/handler/ToolAbility.java +++ b/src/main/java/com/hbm/handler/ToolAbility.java @@ -11,6 +11,7 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.inventory.recipes.CentrifugeRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; @@ -439,11 +440,11 @@ public abstract class ToolAbility { block = Blocks.redstone_ore; ItemStack stack = new ItemStack(block, 1, meta); - ItemStack result = CrystallizerRecipes.getOutput(stack); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack); if(result != null) { world.setBlockToAir(x, y, z); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.copy())); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.output.copy())); player.getHeldItem().damageItem(1, player); } diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index f533fc528..60a8ae6b7 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -2,6 +2,7 @@ package com.hbm.handler; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; import com.hbm.packet.AuxParticlePacketNT; @@ -206,38 +207,27 @@ public abstract class WeaponAbility { if(living.getHealth() <= 0.0F) { WeightedRandomObject[] ammo = new WeightedRandomObject[] { - new WeightedRandomObject(ModItems.ammo_12gauge, 10), - new WeightedRandomObject(ModItems.ammo_12gauge_shrapnel, 5), - new WeightedRandomObject(ModItems.ammo_12gauge_du, 3), - new WeightedRandomObject(ModItems.ammo_20gauge, 10), - new WeightedRandomObject(ModItems.ammo_20gauge_flechette, 5), - new WeightedRandomObject(ModItems.ammo_20gauge_slug, 5), - new WeightedRandomObject(ModItems.ammo_9mm, 10), - new WeightedRandomObject(ModItems.ammo_9mm_ap, 5), - new WeightedRandomObject(ModItems.ammo_5mm, 10), - new WeightedRandomObject(ModItems.ammo_5mm_du, 3), - new WeightedRandomObject(ModItems.ammo_556, 10), - new WeightedRandomObject(ModItems.ammo_556_phosphorus, 5), - new WeightedRandomObject(ModItems.ammo_556_flechette, 10), - new WeightedRandomObject(ModItems.ammo_556_flechette_phosphorus, 5), - new WeightedRandomObject(ModItems.ammo_50bmg, 10), - new WeightedRandomObject(ModItems.ammo_50bmg_incendiary, 5), - new WeightedRandomObject(ModItems.ammo_50bmg_ap, 5), - new WeightedRandomObject(ModItems.ammo_grenade, 5), - new WeightedRandomObject(ModItems.ammo_grenade_concussion, 3), - new WeightedRandomObject(ModItems.ammo_grenade_phosphorus, 3), - new WeightedRandomObject(ModItems.ammo_rocket, 5), - new WeightedRandomObject(ModItems.ammo_rocket_glare, 5), - new WeightedRandomObject(ModItems.ammo_rocket_phosphorus, 5), - new WeightedRandomObject(ModItems.ammo_rocket_rpc, 1), - new WeightedRandomObject(ModItems.syringe_metal_stimpak, 25), + new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.STOCK), 10), + new WeightedRandomObject(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SHRAPNEL), 5), + new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.STOCK), 10), + new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.FLECHETTE), 5), + new WeightedRandomObject(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLUG), 5), + new WeightedRandomObject(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.STOCK), 10), + new WeightedRandomObject(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STOCK), 10), + new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.STOCK), 10), + new WeightedRandomObject(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE), 10), + new WeightedRandomObject(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STOCK), 3), + new WeightedRandomObject(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.STOCK), 3), + new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.STOCK), 1), + new WeightedRandomObject(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE), 1), + new WeightedRandomObject(new ItemStack(ModItems.syringe_metal_stimpak), 20), }; int count = Math.min((int)Math.ceil(living.getMaxHealth() / divider), 250); //safeguard to prevent funnies from bosses with obscene health for(int i = 0; i < count; i++) { - living.dropItem(((WeightedRandomObject)WeightedRandom.getRandomItem(living.getRNG(), ammo)).asItem(), 1); + living.entityDropItem(((WeightedRandomObject)WeightedRandom.getRandomItem(living.getRNG(), ammo)).asStack(), 1); world.spawnEntityInWorld(new EntityXPOrb(world, living.posX, living.posY, living.posZ, 1)); } diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 4bd0647ce..b60e9b385 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -10,6 +10,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxParticlePacketNT; @@ -37,8 +39,8 @@ public class BulletConfigFactory { public static BulletConfiguration getTestConfig() { BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = ModItems.gun_revolver_ammo; + + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); bullet.velocity = 5.0F; bullet.spread = 0.05F; bullet.wear = 10; @@ -62,6 +64,8 @@ public class BulletConfigFactory { } + public static final float defaultSpread = 0.005F; + /// STANDARD CONFIGS /// //do not include damage or ammo public static BulletConfiguration standardBulletConfig() { @@ -69,7 +73,7 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 5.0F; - bullet.spread = 0.005F; + bullet.spread = defaultSpread; bullet.wear = 10; bullet.bulletsMin = 1; bullet.bulletsMax = 1; @@ -101,9 +105,9 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 5.0F; - bullet.spread = 0.05F; + bullet.spread = defaultSpread * 10F; bullet.wear = 10; - bullet.bulletsMin = 5; + bullet.bulletsMin = 6; bullet.bulletsMax = 8; bullet.gravity = 0D; bullet.maxAge = 100; @@ -181,7 +185,7 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 2.0F; - bullet.spread = 0.005F; + bullet.spread = defaultSpread; bullet.wear = 10; bullet.bulletsMin = 1; bullet.bulletsMax = 1; @@ -207,7 +211,7 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 2.0F; - bullet.spread = 0.005F; + bullet.spread = defaultSpread; bullet.wear = 10; bullet.bulletsMin = 1; bullet.bulletsMax = 1; @@ -233,7 +237,7 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 3.0F; - bullet.spread = 0.005F; + bullet.spread = defaultSpread; bullet.wear = 10; bullet.bulletsMin = 1; bullet.bulletsMax = 1; @@ -258,7 +262,7 @@ public class BulletConfigFactory { BulletConfiguration bullet = new BulletConfiguration(); bullet.velocity = 3.0F; - bullet.spread = 0.005F; + bullet.spread = defaultSpread; bullet.wear = 10; bullet.bulletsMin = 1; bullet.bulletsMax = 1; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 1ab0b2d26..12746e4be 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -1,13 +1,22 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; +import java.util.List; import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHurtBehavior; +import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.Ammo12Gauge; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; @@ -15,12 +24,31 @@ import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; public class Gun12GaugeFactory { + private static final CasingEjector EJECTOR_SPAS, EJECTOR_SPAS_ALT, EJECTOR_BENELLI, EJECTOR_UBOINIK, EJECTOR_SSG; + private static final SpentCasing CASING12GAUGE; + + static { + EJECTOR_SPAS = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12); + EJECTOR_SPAS_ALT = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12).setAmount(2); + EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.3, 1, 0).setAngleRange(0.01F, 0.03F); + EJECTOR_UBOINIK = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.3, 0.5).setAngleRange(0.01F, 0.03F); + EJECTOR_SSG = new CasingEjector().setMotion(0.2, 0, -0.2).setOffset(0.8, 0, 0).setAngleRange(0.05F, 0.02F).setDelay(20).setAmount(2); + + CASING12GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setupSmoke(0.5F, 0.5D, 60, 20); + } + public static GunConfiguration getSpas12Config() { GunConfiguration config = new GunConfiguration(); @@ -39,18 +67,12 @@ public class Gun12GaugeFactory { config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; config.firingSound = "hbm:weapon.shotgunPump"; - config.name = "Franchi SPAS-12"; - config.manufacturer = "Black Mesa Armory"; + config.name = "spas12"; + config.manufacturer = EnumGunManufacturer.BLACK_MESA; config.comment.add("\"Here, I have a more suitable gun for you. You'll need it - Catch!\""); config.comment.add("Alt-fire with Mouse 2 (Right-click) to fire 2 shells at once"); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G12_NORMAL); - config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G12_DU); - config.config.add(BulletConfigSyncingUtil.G12_AM); - config.config.add(BulletConfigSyncingUtil.G12_SLEEK); + config.config = HbmCollection.twelveGauge; config.animations.put(AnimType.CYCLE, new BusAnimation() .addBus("SPAS_RECOIL_TRANSLATE", new BusAnimationSequence() @@ -68,10 +90,12 @@ public class Gun12GaugeFactory { ) ); + config.ejector = EJECTOR_SPAS; + return config; } -public static GunConfiguration getSpas12AltConfig() { + public static GunConfiguration getSpas12AltConfig() { GunConfiguration config = new GunConfiguration(); @@ -85,14 +109,9 @@ public static GunConfiguration getSpas12AltConfig() { config.firingSound = "hbm:weapon.shotgunPump"; config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.config = HbmCollection.twelveGauge; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G12_NORMAL); - config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G12_DU); - config.config.add(BulletConfigSyncingUtil.G12_AM); - config.config.add(BulletConfigSyncingUtil.G12_SLEEK); + config.ejector = EJECTOR_SPAS_ALT; return config; } @@ -115,16 +134,12 @@ public static GunConfiguration getSpas12AltConfig() { config.reloadSound = GunConfiguration.RSOUND_REVOLVER; config.firingSound = "hbm:weapon.shotgunShoot"; - config.name = "Uboinik Revolving Shotgun"; - config.manufacturer = "Metro Gunsmiths"; + config.name = "uboinik"; + config.manufacturer = EnumGunManufacturer.METRO; + + config.config = HbmCollection.twelveGauge; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G12_NORMAL); - config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G12_DU); - config.config.add(BulletConfigSyncingUtil.G12_AM); - config.config.add(BulletConfigSyncingUtil.G12_SLEEK); + config.ejector = EJECTOR_UBOINIK; return config; } @@ -171,17 +186,13 @@ public static GunConfiguration getSpas12AltConfig() { ) ); - config.name = "Double-Barreled Combat Shotgun"; - config.manufacturer = "Union Aerospace Corporation"; + config.name = "supershotty"; + config.manufacturer = EnumGunManufacturer.UAC; config.comment.add("God-damned ARCH-VILES!"); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G12_NORMAL); - config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G12_DU); - config.config.add(BulletConfigSyncingUtil.G12_AM); - config.config.add(BulletConfigSyncingUtil.G12_SLEEK); + config.config = HbmCollection.twelveGauge; + + config.ejector = EJECTOR_SSG; return config; } @@ -190,31 +201,35 @@ public static GunConfiguration getSpas12AltConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_12gauge; + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.STOCK)); bullet.dmgMin = 5; bullet.dmgMax = 7; + bullet.spentCasing = CASING12GAUGE.clone().register("12GaStock").setColor(0x2847FF, SpentCasing.COLOR_CASE_12GA); + return bullet; } public static BulletConfiguration get12GaugeFireConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = ModItems.ammo_12gauge_incendiary; + BulletConfiguration bullet = get12GaugeConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.INCENDIARY)); bullet.wear = 15; bullet.dmgMin = 5; bullet.dmgMax = 7; bullet.incendiary = 5; + bullet.spentCasing = CASING12GAUGE.clone().register("12GaInc").setColor(0xFF6329, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); + return bullet; } public static BulletConfiguration get12GaugeShrapnelConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = ModItems.ammo_12gauge_shrapnel; + BulletConfiguration bullet = get12GaugeConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SHRAPNEL)); bullet.wear = 15; bullet.dmgMin = 10; bullet.dmgMax = 17; @@ -222,6 +237,8 @@ public static GunConfiguration getSpas12AltConfig() { bullet.HBRC = 80; bullet.LBRC = 95; + bullet.spentCasing = CASING12GAUGE.clone().register("12GaShrap").setColor(0xF0E800, SpentCasing.COLOR_CASE_12GA); + return bullet; } @@ -229,13 +246,15 @@ public static GunConfiguration getSpas12AltConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_12gauge_du; + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.DU)); bullet.wear = 20; bullet.dmgMin = 18; bullet.dmgMax = 22; bullet.doesPenetrate = true; bullet.leadChance = 50; + bullet.spentCasing = CASING12GAUGE.clone().register("12GaDU").setColor(0x62A362, SpentCasing.COLOR_CASE_12GA); + return bullet; } @@ -243,7 +262,7 @@ public static GunConfiguration getSpas12AltConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_12gauge_marauder; + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.MARAUDER)); bullet.wear = 20; bullet.dmgMin = 100; bullet.dmgMax = 500; @@ -260,6 +279,8 @@ public static GunConfiguration getSpas12AltConfig() { }; + bullet.spentCasing = CASING12GAUGE.clone().register("12GaAM").setColor(0x416645, SpentCasing.COLOR_CASE_12GA); + return bullet; } @@ -267,7 +288,61 @@ public static GunConfiguration getSpas12AltConfig() { BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - bullet.ammo = ModItems.ammo_12gauge_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SLEEK)); + + bullet.spentCasing = CASING12GAUGE.clone().register("12GaIF").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_12GA); + + return bullet; + } + + public static BulletConfiguration get12GaugePercussionConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.PERCUSSION)); + bullet.velocity = 2F; + bullet.spread = 0F; + bullet.wear = 10; + bullet.dmgMin = 30F; + bullet.dmgMax = 30F; + bullet.maxAge = 0; + + bullet.spentCasing = CASING12GAUGE.clone().register("12GaPerc").setColor(0x9E1616, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + Vec3 vec = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ); + double radius = 4; + double x = bullet.posX + vec.xCoord; + double y = bullet.posY + vec.yCoord; + double z = bullet.posZ + vec.zCoord; + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); + List list = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet.shooter, aabb); + + for(Entity e : list) { + DamageSource source = bullet.shooter instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bullet.shooter) : DamageSource.magic; + e.attackEntityFrom(source, 30F); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) -bullet.rotationPitch + 90); + data.setFloat("yaw", (float) bullet.rotationYaw); + data.setFloat("scale", 2F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bullet.dimension, x, y, z, 100)); + + bullet.setDead(); + } + } + }; return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java index 08d3d7ba9..86cbf9aff 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java @@ -2,10 +2,16 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo20Gauge; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; import com.hbm.render.anim.BusAnimationSequence; @@ -14,9 +20,18 @@ import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; public class Gun20GaugeFactory { + private static final CasingEjector EJECTOR_SHOTGUN; + private static final SpentCasing CASING20GAUGE; + + static { + EJECTOR_SHOTGUN = new CasingEjector().setMotion(Vec3.createVectorHelper(-0.4, 0.95, 0)).setOffset(Vec3.createVectorHelper(-0.55, 0, 0.5)).setAngleRange(0.01F, 0.05F); + CASING20GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(1.25F).setBounceMotion(0.01F, 0.05F).setupSmoke(0.25F, 0.5D, 60, 20); + } + public static GunConfiguration getShotgunConfig() { GunConfiguration config = new GunConfiguration(); @@ -48,17 +63,9 @@ public class Gun20GaugeFactory { ) ); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL); - config.config.add(BulletConfigSyncingUtil.G20_SLUG); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK); - config.config.add(BulletConfigSyncingUtil.G20_WITHER); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.config = HbmCollection.twentyGauge; + + config.ejector = EJECTOR_SHOTGUN; return config; } @@ -72,20 +79,10 @@ public class Gun20GaugeFactory { config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; - config.name = "Winchester Model 1887"; - config.manufacturer = "Winchester Repeating Arms Company"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL); - config.config.add(BulletConfigSyncingUtil.G20_SLUG); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK); - config.config.add(BulletConfigSyncingUtil.G20_WITHER); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.name = "win1887"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.config = HbmCollection.twentyGauge; return config; } @@ -99,20 +96,10 @@ public class Gun20GaugeFactory { config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; - config.name = "Winchester Model 1887 Inox"; - config.manufacturer = "Winchester Repeating Arms Company"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL); - config.config.add(BulletConfigSyncingUtil.G20_SLUG); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK); - config.config.add(BulletConfigSyncingUtil.G20_WITHER); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.name = "win1887Inox"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.config = HbmCollection.twentyGauge; return config; } @@ -145,20 +132,10 @@ public class Gun20GaugeFactory { ) ); - config.name = "Remington Model 700"; - config.manufacturer = "Remington Arms Company"; + config.name = "win20Inox"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_SLUG); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK); - config.config.add(BulletConfigSyncingUtil.G20_WITHER); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.config = HbmCollection.twentyGauge; return config; } @@ -191,20 +168,10 @@ public class Gun20GaugeFactory { ) ); - config.name = "Winchester Model 20 Polymer"; - config.manufacturer = "Winchester Repeating Arms Company"; + config.name = "win20Poly"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_SLUG); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK); - config.config.add(BulletConfigSyncingUtil.G20_WITHER); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.config = HbmCollection.twentyGauge; return config; } @@ -237,20 +204,10 @@ public class Gun20GaugeFactory { ) ); - config.name = "Winchester Model 20 D-25A"; - config.manufacturer = "Winchester Repeating Arms Company / Big MT"; + config.name = "win20Satur"; + config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G20_SLUG_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_NORMAL_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SHOCK_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_WITHER_FIRE); - config.config.add(BulletConfigSyncingUtil.G20_SLEEK); + config.config = HbmCollection.twentyGauge; return config; } @@ -259,10 +216,12 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.STOCK)); bullet.dmgMin = 3; bullet.dmgMax = 5; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaStock").setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -270,12 +229,14 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_20gauge_slug; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLUG)); bullet.dmgMin = 18; bullet.dmgMax = 22; bullet.wear = 7; bullet.style = BulletConfiguration.STYLE_NORMAL; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaSlug").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -283,7 +244,7 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_flechette; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.FLECHETTE)); bullet.dmgMin = 8; bullet.dmgMax = 15; bullet.wear = 15; @@ -291,6 +252,8 @@ public class Gun20GaugeFactory { bullet.HBRC = 2; bullet.LBRC = 95; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaFlech").setColor(0x2847FF, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -298,12 +261,14 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.INCENDIARY)); bullet.dmgMin = 3; bullet.dmgMax = 6; bullet.wear = 15; bullet.incendiary = 5; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaInc").setColor(0xFF6329, SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 40); + return bullet; } @@ -311,7 +276,7 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_shrapnel; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SHRAPNEL)); bullet.wear = 15; bullet.dmgMin = 7; bullet.dmgMax = 12; @@ -319,6 +284,8 @@ public class Gun20GaugeFactory { bullet.HBRC = 80; bullet.LBRC = 95; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaShrap").setColor(0xF0E800, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -326,12 +293,14 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_explosive; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.EXPLOSIVE)); bullet.dmgMin = 7; bullet.dmgMax = 12; bullet.wear = 25; bullet.explosive = 0.5F; + bullet.spentCasing = CASING20GAUGE.clone().register("20GaExp").setColor(0xF0E800, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -339,7 +308,7 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_caustic; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.CAUSTIC)); bullet.dmgMin = 3; bullet.dmgMax = 7; bullet.wear = 25; @@ -351,6 +320,8 @@ public class Gun20GaugeFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.poison.id, 10 * 20, 1)); + bullet.spentCasing = CASING20GAUGE.clone().register("20GaCaus").setColor(0x64E800, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -358,7 +329,7 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_shock; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SHOCK)); bullet.dmgMin = 4; bullet.dmgMax = 8; bullet.wear = 25; @@ -371,6 +342,8 @@ public class Gun20GaugeFactory { bullet.effects.add(new PotionEffect(Potion.moveSlowdown.id, 10 * 20, 1)); bullet.effects.add(new PotionEffect(Potion.weakness.id, 10 * 20, 4)); + bullet.spentCasing = CASING20GAUGE.clone().register("20GaShock").setColor(0x00EFEF, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -378,13 +351,15 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_20gauge_wither; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.WITHER)); bullet.dmgMin = 4; bullet.dmgMax = 8; bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.wither.id, 10 * 20, 2)); + bullet.spentCasing = CASING20GAUGE.clone().register("20GaWith").setColor(0x391717, SpentCasing.COLOR_CASE_BRASS); + return bullet; } @@ -392,7 +367,9 @@ public class Gun20GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - bullet.ammo = ModItems.ammo_20gauge_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLEEK)); + + bullet.spentCasing = CASING20GAUGE.clone().register("20GaIF").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_BRASS); return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java index aa669affa..9784b8527 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java @@ -1,15 +1,27 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo22LR; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class Gun22LRFactory { + private static final CasingEjector EJECTOR_22LR; + private static final SpentCasing CASING22LR; + + static { + EJECTOR_22LR = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.2, 0.35).setAngleRange(0.01F, 0.03F); + CASING22LR = new SpentCasing(CasingType.STRAIGHT).setScale(0.8F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS); + } + public static GunConfiguration getUziConfig() { GunConfiguration config = new GunConfiguration(); @@ -29,14 +41,13 @@ public class Gun22LRFactory { config.firingSound = "hbm:weapon.uziShoot"; config.reloadSoundEnd = false; - config.name = "IMI Uzi"; - config.manufacturer = "Israel Military Industries"; + config.name = "uzi"; + config.manufacturer = EnumGunManufacturer.IMI; config.comment.add("Mom, where are my mittens?"); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.LR22_NORMAL); - config.config.add(BulletConfigSyncingUtil.LR22_AP); - config.config.add(BulletConfigSyncingUtil.CHL_LR22); + config.config = HbmCollection.twentyTwoLR; + + config.ejector = EJECTOR_22LR; return config; } @@ -47,13 +58,10 @@ public class Gun22LRFactory { config.durability = 4500; - config.name = "IMI Uzi D-25A"; - config.manufacturer = "IMI / Big MT"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.LR22_NORMAL_FIRE); - config.config.add(BulletConfigSyncingUtil.LR22_AP_FIRE); - config.config.add(BulletConfigSyncingUtil.CHL_LR22_FIRE); + config.name = "uziSatur"; + config.manufacturer = EnumGunManufacturer.IMI_BIGMT; + + config.config = HbmCollection.twentyTwoLRFire; return config; } @@ -63,11 +71,13 @@ public class Gun22LRFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_22lr; + bullet.ammo = new ComparableStack(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 6; bullet.dmgMax = 8; + bullet.spentCasing = CASING22LR.clone().register("22LRStock"); + return bullet; } @@ -75,13 +85,15 @@ public class Gun22LRFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_22lr_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.AP)); bullet.spread *= inaccuracy; bullet.dmgMin = 12; bullet.dmgMax = 16; bullet.leadChance = 10; bullet.wear = 15; + bullet.spentCasing = CASING22LR.clone().register("22LRAP"); + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java index 7aed32486..1a16da32a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java @@ -4,16 +4,33 @@ import java.util.ArrayList; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.lib.ModDamageSource; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; public class Gun357MagnumFactory { + private static final CasingEjector EJECTOR_REVOLVER; + private static final SpentCasing CASING357; + private static final SpentCasing CASINGNM; + + static { + EJECTOR_REVOLVER = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.03)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); + CASING357 = new SpentCasing(CasingType.STRAIGHT).setBounceMotion(0.01F, 0.05F); + CASINGNM = new SpentCasing(CasingType.SHOTGUN).setScale(1.25F).setBounceMotion(0.01F, 0.05F).setColor(0xC7AB1C, 0x6D63A6).register("357N2"); + } + public static GunConfiguration getBaseConfig() { GunConfiguration config = new GunConfiguration(); @@ -32,6 +49,8 @@ public class Gun357MagnumFactory { config.firingSound = "hbm:weapon.revolverShoot"; config.reloadSoundEnd = false; + config.ejector = EJECTOR_REVOLVER; + return config; } @@ -41,8 +60,8 @@ public class Gun357MagnumFactory { config.durability = 2000; - config.name = "FFI Viper"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiV"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); @@ -57,8 +76,8 @@ public class Gun357MagnumFactory { config.durability = 3500; - config.name = "FFI Viper Inox"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiVInox"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); @@ -73,8 +92,8 @@ public class Gun357MagnumFactory { config.durability = 3500; - config.name = "FFI Viper D-25A"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffivSatur"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SATURNITE_REVOLVER); @@ -89,8 +108,8 @@ public class Gun357MagnumFactory { config.durability = 2000; - config.name = "FFI Viper Lead"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiVLead"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.LEAD_REVOLVER); @@ -105,8 +124,8 @@ public class Gun357MagnumFactory { config.durability = 2500; - config.name = "FFI Viper Bling"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffivBling"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.GOLD_REVOLVER); @@ -124,8 +143,8 @@ public class Gun357MagnumFactory { config.durability = 5000; config.firingSound = "hbm:weapon.heavyShoot"; - config.name = "Britannia Standard Issue Motorized Handgun"; - config.manufacturer = "BAE Systems plc"; + config.name = "revolverCursed"; + config.manufacturer = EnumGunManufacturer.BAE; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.CURSED_REVOLVER); @@ -141,8 +160,8 @@ public class Gun357MagnumFactory { config.durability = 7500; config.firingSound = "hbm:weapon.schrabidiumShoot"; - config.name = "FFI Viper Ultra"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiVUltra"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SCHRABIDIUM_REVOLVER); @@ -158,8 +177,8 @@ public class Gun357MagnumFactory { config.durability = 4000; config.firingSound = "hbm:weapon.schrabidiumShoot"; - config.name = "FFI Viper N1"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiVN1"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NIGHT_REVOLVER); @@ -176,8 +195,8 @@ public class Gun357MagnumFactory { config.firingSound = "hbm:weapon.schrabidiumShoot"; config.crosshair = Crosshair.NONE; - config.name = "FFI Viper N2"; - config.manufacturer = "FlimFlam Industries"; + config.name = "ffiVN2"; + config.manufacturer = EnumGunManufacturer.FLIMFLAM; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NIGHT2_REVOLVER); @@ -185,27 +204,6 @@ public class Gun357MagnumFactory { return config; } - public static GunConfiguration getRevolverBioConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 100000; - config.firingSound = "hbm:weapon.deagleShoot"; - config.reloadDuration = 53; - config.crosshair = Crosshair.CIRCLE; - - config.name = "RI No. 2 Mark 1"; - config.manufacturer = "Ryan Industries"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.IRON_HS); - config.config.add(BulletConfigSyncingUtil.STEEL_HS); - config.config.add(BulletConfigSyncingUtil.GOLD_HS); - config.config.add(BulletConfigSyncingUtil.DESH_HS); - - return config; - } - //// // // // // ////// ////// ////// // // // // // // // // // //// // // // // //// // ////// @@ -216,20 +214,11 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_iron_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.IRON)); bullet.dmgMin = 8; bullet.dmgMax = 10; - return bullet; - } - - public static BulletConfiguration getRevSteelConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = ModItems.gun_revolver_ammo; - bullet.dmgMin = 18; - bullet.dmgMax = 22; + bullet.spentCasing = CASING357.clone().register("357Iron").setColor(0xA8A8A8); return bullet; } @@ -238,13 +227,28 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_lead_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); + bullet.dmgMin = 18; + bullet.dmgMax = 22; + + bullet.spentCasing = CASING357.clone().register("357Lead").setColor(0x646470); + + return bullet; + } + + public static BulletConfiguration getRevNuclearConfig() { + + BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NUCLEAR)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(HbmPotion.radiation.id, 10 * 20, 4)); + bullet.spentCasing = CASING357.clone().register("357Nuc").setColor(0xFEFEFE); + return bullet; } @@ -252,10 +256,12 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_gold_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.GOLD)); bullet.dmgMin = 25; bullet.dmgMax = 28; + bullet.spentCasing = CASING357.clone().register("357Gold").setColor(0xF9FF3E); + return bullet; } @@ -263,10 +269,12 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_357_desh; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.DESH)); bullet.dmgMin = 30; bullet.dmgMax = 33; + bullet.spentCasing = CASING357.clone().register("357Desh").setColor(0xF22929); + return bullet; } @@ -274,11 +282,13 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_schrabidium_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.SCHRABIDIUM)); bullet.dmgMin = 10000; bullet.dmgMax = 100000; bullet.instakill = true; + bullet.spentCasing = CASING357.clone().register("357Schrab").setColor(0x32FFFF); + return bullet; } @@ -286,21 +296,25 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_cursed_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.STEEL)); bullet.dmgMin = 18; bullet.dmgMax = 25; + bullet.spentCasing = CASING357.clone().register("357Cursed").setColor(0x565656); + return bullet; } - public static BulletConfiguration getRevNightmareConfig() { + public static BulletConfiguration getRevNightmare1Config() { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.gun_revolver_nightmare_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE1)); bullet.dmgMin = 1; bullet.dmgMax = 100; + bullet.spentCasing = CASING357.clone().register("357N1").setColor(0x3A3A3A); + return bullet; } @@ -308,7 +322,7 @@ public class Gun357MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.gun_revolver_nightmare2_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE2)); bullet.spread *= 10; bullet.bulletsMin = 4; bullet.bulletsMax = 6; @@ -321,6 +335,8 @@ public class Gun357MagnumFactory { bullet.damageType = ModDamageSource.s_laser; + bullet.spentCasing = CASINGNM; + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index af0fc44cd..7520b5c0a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -9,12 +9,20 @@ import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityDuchessGambit; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHitBehavior; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.RefStrings; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -22,9 +30,19 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class Gun44MagnumFactory { + private static final CasingEjector EJECTOR_PIP; + private static final SpentCasing CASING44; + + static { + EJECTOR_PIP = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.05)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); + CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_44); + } + public static GunConfiguration getBaseConfig() { GunConfiguration config = new GunConfiguration(); @@ -43,6 +61,10 @@ public class Gun44MagnumFactory { config.firingSound = "hbm:weapon.revolverShootAlt"; config.reloadSoundEnd = false; + config.config.addAll(HbmCollection.fourtyFourMagBasic); + + config.ejector = EJECTOR_PIP; + return config; } @@ -52,41 +74,33 @@ public class Gun44MagnumFactory { config.durability = 2500; - config.name = "IF-18 Horseshoe"; - config.manufacturer = "Ironshod Firearms"; + config.name = "ifHorseshoe"; + config.manufacturer = EnumGunManufacturer.IF; config.comment.add("Fallout New Vegas wasn't THAT good."); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.M44_NORMAL); - config.config.add(BulletConfigSyncingUtil.M44_AP); - config.config.add(BulletConfigSyncingUtil.M44_DU); - config.config.add(BulletConfigSyncingUtil.M44_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.M44_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_M44); - config.config.add(BulletConfigSyncingUtil.M44_ROCKET); - return config; } + public static final ResourceLocation scope_lilmac = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_44.png"); + public static GunConfiguration getMacintoshConfig() { GunConfiguration config = getBaseConfig(); config.durability = 4000; - config.name = "IF-18 Horseshoe Scoped"; - config.manufacturer = "Ironshod Firearms"; + config.name = "ifScope"; + config.manufacturer = EnumGunManufacturer.IF; config.comment.add("Poppin' mentats like tic tacs"); + config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.25F; + config.scopeTexture = scope_lilmac; + config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.M44_PIP); - config.config.add(BulletConfigSyncingUtil.M44_NORMAL); - config.config.add(BulletConfigSyncingUtil.M44_AP); - config.config.add(BulletConfigSyncingUtil.M44_DU); - config.config.add(BulletConfigSyncingUtil.M44_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.M44_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_M44); - config.config.add(BulletConfigSyncingUtil.M44_ROCKET); + config.config.addAll(HbmCollection.fourtyFourMagBasic); return config; } @@ -98,19 +112,15 @@ public class Gun44MagnumFactory { config.durability = 4000; config.ammoCap = 5; - config.name = "IF-18 Horseshoe Vanity"; - config.manufacturer = "Ironshod Firearms"; + config.name = "ifVanity"; + config.manufacturer = EnumGunManufacturer.IF; config.comment.add("Alcoholism is cool!"); config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.M44_BJ); - config.config.add(BulletConfigSyncingUtil.M44_NORMAL); - config.config.add(BulletConfigSyncingUtil.M44_AP); - config.config.add(BulletConfigSyncingUtil.M44_DU); - config.config.add(BulletConfigSyncingUtil.M44_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.M44_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_M44); - config.config.add(BulletConfigSyncingUtil.M44_ROCKET); + config.config.addAll(HbmCollection.fourtyFourMagBasic); + + config.ejector = EJECTOR_PIP.clone().setAmount(5); return config; } @@ -122,20 +132,14 @@ public class Gun44MagnumFactory { config.durability = 4000; config.ammoCap = 6; - config.name = "IF-18 Horseshoe Silver Storm"; - config.manufacturer = "Ironshod Firearms"; + config.name = "ifStorm"; + config.manufacturer = EnumGunManufacturer.IF; config.comment.add("Our friendship is based on abusive behaviour"); config.comment.add("and mutual hate. It's not that complicated."); config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.M44_SILVER); - config.config.add(BulletConfigSyncingUtil.M44_NORMAL); - config.config.add(BulletConfigSyncingUtil.M44_AP); - config.config.add(BulletConfigSyncingUtil.M44_DU); - config.config.add(BulletConfigSyncingUtil.M44_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.M44_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_M44); - config.config.add(BulletConfigSyncingUtil.M44_ROCKET); + config.config.addAll(HbmCollection.fourtyFourMagBasic); return config; } @@ -147,22 +151,15 @@ public class Gun44MagnumFactory { config.durability = 4000; config.ammoCap = 64; - config.name = "IF-18 Horseshoe Bottomless Pit"; - config.manufacturer = "Ironshod Firearms R&D"; + config.name = "ifPit"; + config.manufacturer = EnumGunManufacturer.IF; config.comment.add("Explore the other side"); config.comment.add("...from afar!"); config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.M44_NORMAL); - config.config.add(BulletConfigSyncingUtil.M44_AP); - config.config.add(BulletConfigSyncingUtil.M44_DU); - config.config.add(BulletConfigSyncingUtil.M44_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.M44_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_M44); - config.config.add(BulletConfigSyncingUtil.M44_PIP); - config.config.add(BulletConfigSyncingUtil.M44_BJ); - config.config.add(BulletConfigSyncingUtil.M44_SILVER); - config.config.add(BulletConfigSyncingUtil.M44_ROCKET); + config.config.addAll(HbmCollection.fourtyFourMagAll); + + config.ejector = EJECTOR_PIP.clone().setAmount(64); return config; } @@ -171,10 +168,12 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.STOCK)); bullet.dmgMin = 18; bullet.dmgMax = 26; + bullet.spentCasing = CASING44.clone().register("44NoPip"); + return bullet; } @@ -182,12 +181,14 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.AP)); bullet.dmgMin = 25; bullet.dmgMax = 32; bullet.wear = 15; bullet.leadChance = 10; + bullet.spentCasing = CASING44.clone().register("44AP"); + return bullet; } @@ -195,12 +196,14 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_du; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.DU)); bullet.dmgMin = 28; bullet.dmgMax = 40; bullet.wear = 25; bullet.leadChance = 50; + bullet.spentCasing = CASING44.clone().register("44DU"); + return bullet; } @@ -208,7 +211,7 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PHOSPHORUS)); bullet.dmgMin = 18; bullet.dmgMax = 26; bullet.wear = 15; @@ -235,6 +238,8 @@ public class Gun44MagnumFactory { } }; + bullet.spentCasing = CASING44.clone().register("44Phos"); + return bullet; } @@ -242,12 +247,14 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_star; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.STAR)); bullet.dmgMin = 42; bullet.dmgMax = 50; bullet.wear = 25; bullet.leadChance = 100; + bullet.spentCasing = CASING44.clone().register("44Star"); + return bullet; } @@ -255,7 +262,7 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_pip; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PIP)); bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.wear = 25; @@ -285,6 +292,8 @@ public class Gun44MagnumFactory { } }; + bullet.spentCasing = CASING44.clone().register("44Pip").setColor(0x532C64); + return bullet; } @@ -292,7 +301,7 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_bj; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.BJ)); bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.wear = 25; @@ -323,6 +332,8 @@ public class Gun44MagnumFactory { }; + bullet.spentCasing = CASING44.clone().register("44BJ").setColor(0x632B2C); + return bullet; } @@ -330,7 +341,7 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_44_silver; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.SILVER)); bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.wear = 25; @@ -361,6 +372,8 @@ public class Gun44MagnumFactory { }; + bullet.spentCasing = CASING44.clone().register("44Silver").setColor(0x2B5963); + return bullet; } @@ -368,11 +381,13 @@ public class Gun44MagnumFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_44_rocket; + bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.ROCKET)); bullet.velocity = 5; bullet.explosive = 15F; bullet.trail = 1; + bullet.spentCasing = CASING44.clone().register("44Rocket"); + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java new file mode 100644 index 000000000..70891310b --- /dev/null +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -0,0 +1,207 @@ +package com.hbm.handler.guncfg; + +import java.util.ArrayList; + +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; +import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo45ACP; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; + +import net.minecraft.util.Vec3; + +public class Gun45ACPFactory { + + private static final CasingEjector EJECTOR_REVOLVER; + private static final SpentCasing CASING45; + + static { + EJECTOR_REVOLVER = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.03)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); + CASING45 = new SpentCasing(CasingType.STRAIGHT).setBounceMotion(0.01F, 0.05F).setScale(1.25F, 1.25F, 1F).setColor(SpentCasing.COLOR_CASE_BRASS).register("45ACP"); + } + + public static GunConfiguration getBaseConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 10; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 10; + config.firingDuration = 0; + config.ammoCap = 6; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CLASSIC; + config.reloadSound = GunConfiguration.RSOUND_REVOLVER; + config.firingSound = "hbm:weapon.revolverShoot"; + config.reloadSoundEnd = false; + + config.ejector = EJECTOR_REVOLVER; + + return config; + } + + public static GunConfiguration getThompsonConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 2; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 30; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_SPLIT; + config.durability = 5000; + config.reloadSound = GunConfiguration.RSOUND_MAG; + config.firingSound = "hbm:weapon.rifleShoot"; + config.reloadSoundEnd = false; + + config.name = "tommy"; + config.manufacturer = EnumGunManufacturer.AUTO_ORDINANCE; + + config.config = new ArrayList(); + config.config.addAll(HbmCollection.fourtyFiveACP); + + return config; + } + + public static GunConfiguration getRevolverBioConfig() { + + GunConfiguration config = getBaseConfig(); + + config.durability = 100000; + config.firingSound = "hbm:weapon.deagleShoot"; + config.reloadDuration = 53; + config.crosshair = Crosshair.CIRCLE; + + config.name = "bio"; + config.manufacturer = EnumGunManufacturer.RYAN; + + config.config = HbmCollection.fourtyFiveACP; + + return config; + } + + public static GunConfiguration getUACPistolConfig() { + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 4; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 10; + config.firingDuration = 8; + config.ammoCap = 16; + config.durability = 10000; + config.reloadType = 1; + config.allowsInfinity = true; + config.hasSights = true; + config.crosshair = Crosshair.CROSS; + config.reloadSound = "hbm:weapon.pistolReloadPB3"; + config.firingSound = "hbm:weapon.pistolFirePB3"; + config.reloadSoundEnd = true; + + config.name = "uacPistol"; + config.manufacturer = EnumGunManufacturer.UAC; + + config.config.addAll(HbmCollection.fourtyFiveACP); + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("SLIDE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 10))// Wait for hammer + .addKeyframe(new BusAnimationKeyframe(0, 0, -3.5, 40))// Slide back + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 40)))// Return + .addBus("HAMMER", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(15, 0, 0, 10)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 40)))); + + return config; + } + + public static GunConfiguration getUACSMGConfig() { + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 1; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.reloadDuration = 10; + config.firingDuration = 4; + config.ammoCap = 40; + config.durability = 40000; + config.reloadType = 1; + config.allowsInfinity = true; + config.hasSights = true; + config.crosshair = Crosshair.CROSS; + config.reloadSound = "hbm:weapon.SMGMagInPB3"; + config.firingSound = "hbm:weapon.SMGFirePB3"; + config.firingPitch = 1.15F; + config.reloadSoundEnd = true; + + config.name = "uacSMG"; + config.manufacturer = EnumGunManufacturer.UAC; + + config.config.addAll(HbmCollection.fourtyFiveACP); + + return config; + } + + static float inaccuracy = 5; + public static BulletConfiguration get45AutoConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.STOCK)); + bullet.spread *= inaccuracy; + bullet.dmgMax = 12; + bullet.dmgMin = 16; + + bullet.spentCasing = CASING45; + + return bullet; + } + + public static BulletConfiguration get45AutoAPConfig() { + BulletConfiguration bullet = get45AutoConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.AP)); + bullet.dmgMax = 18; + bullet.dmgMin = 26; + bullet.wear = 15; + bullet.leadChance = 10; + + bullet.spentCasing = CASING45; + + return bullet; + } + + public static BulletConfiguration get45AutoDUConfig() { + BulletConfiguration bullet = get45AutoConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.DU)); + bullet.dmgMax = 30; + bullet.dmgMin = 44; + bullet.wear = 25; + bullet.leadChance = 50; + + bullet.spentCasing = CASING45; + + return bullet; + } +} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 00ffda538..941f33097 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -1,6 +1,5 @@ package com.hbm.handler.guncfg; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @@ -11,14 +10,21 @@ import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; @@ -27,17 +33,25 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; import net.minecraftforge.common.IExtendedEntityProperties; public class Gun4GaugeFactory { + private static final CasingEjector EJECTOR_SHOTGUN; + private static final SpentCasing CASING4GAUGE; + + static { + EJECTOR_SHOTGUN = new CasingEjector().setMotion(Vec3.createVectorHelper(-0.4, 0.4, 0)).setOffset(Vec3.createVectorHelper(-0.5, 0, 0.5)).setAngleRange(0.01F, 0.03F); + CASING4GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(2.5F).setBounceMotion(0.01F, 0.03F); + } + private static GunConfiguration getShotgunConfig() { GunConfiguration config = new GunConfiguration(); @@ -52,9 +66,13 @@ public class Gun4GaugeFactory { config.reloadType = GunConfiguration.RELOAD_SINGLE; config.allowsInfinity = true; config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.5F; config.crosshair = Crosshair.L_CIRCLE; config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.ejector = EJECTOR_SHOTGUN; + return config; } @@ -67,24 +85,10 @@ public class Gun4GaugeFactory { config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.65F; - config.name = "KS-23"; - config.manufacturer = "Tulsky Oruzheiny Zavod"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G4_NORMAL); - config.config.add(BulletConfigSyncingUtil.G4_SLUG); - config.config.add(BulletConfigSyncingUtil.G4_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G4_FLECHETTE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.G4_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G4_SEMTEX); - config.config.add(BulletConfigSyncingUtil.G4_BALEFIRE); - config.config.add(BulletConfigSyncingUtil.G4_KAMPF); - config.config.add(BulletConfigSyncingUtil.G4_CANISTER); - config.config.add(BulletConfigSyncingUtil.G4_CLAW); - config.config.add(BulletConfigSyncingUtil.G4_VAMPIRE); - config.config.add(BulletConfigSyncingUtil.G4_VOID); - config.config.add(BulletConfigSyncingUtil.G4_TITAN); - config.config.add(BulletConfigSyncingUtil.G4_SLEEK); + config.name = "ks23"; + config.manufacturer = EnumGunManufacturer.TULSKY; + + config.config = HbmCollection.fourGauge; return config; } @@ -102,8 +106,10 @@ public class Gun4GaugeFactory { config.firingSound = "hbm:weapon.sauergun"; config.firingPitch = 1.0F; - config.name = "Sauer Shotgun"; - config.manufacturer = "Cube 2: Sauerbraten"; + config.ejector = EJECTOR_SHOTGUN.clone().setDelay(12); + + config.name = "sauer"; + config.manufacturer = EnumGunManufacturer.CUBE; config.animations.put(AnimType.CYCLE, new BusAnimation() .addBus("SAUER_RECOIL", new BusAnimationSequence() @@ -129,21 +135,7 @@ public class Gun4GaugeFactory { ) ); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.G4_NORMAL); - config.config.add(BulletConfigSyncingUtil.G4_SLUG); - config.config.add(BulletConfigSyncingUtil.G4_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.G4_FLECHETTE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.G4_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.G4_SEMTEX); - config.config.add(BulletConfigSyncingUtil.G4_BALEFIRE); - config.config.add(BulletConfigSyncingUtil.G4_KAMPF); - config.config.add(BulletConfigSyncingUtil.G4_CANISTER); - config.config.add(BulletConfigSyncingUtil.G4_CLAW); - config.config.add(BulletConfigSyncingUtil.G4_VAMPIRE); - config.config.add(BulletConfigSyncingUtil.G4_VOID); - config.config.add(BulletConfigSyncingUtil.G4_TITAN); - config.config.add(BulletConfigSyncingUtil.G4_SLEEK); + config.config = HbmCollection.fourGauge; return config; } @@ -152,12 +144,14 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK)); bullet.dmgMin = 5; bullet.dmgMax = 8; bullet.bulletsMin *= 2; bullet.bulletsMax *= 2; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaStock").setColor(0xFFD800, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -165,12 +159,14 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_4gauge_slug; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.SLUG)); bullet.dmgMin = 25; bullet.dmgMax = 32; bullet.wear = 7; bullet.style = BulletConfiguration.STYLE_NORMAL; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaSlug").setColor(0xE01A1A, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -178,7 +174,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge_flechette; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.FLECHETTE)); bullet.dmgMin = 8; bullet.dmgMax = 15; bullet.bulletsMin *= 2; @@ -188,6 +184,8 @@ public class Gun4GaugeFactory { bullet.HBRC = 2; bullet.LBRC = 95; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaFlech").setColor(0x1537FF, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -195,7 +193,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge_flechette; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.FLECHETTE_PHOSPHORUS)); bullet.dmgMin = 8; bullet.dmgMax = 15; bullet.bulletsMin *= 2; @@ -204,8 +202,6 @@ public class Gun4GaugeFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.HBRC = 2; bullet.LBRC = 95; - - bullet.ammo = ModItems.ammo_4gauge_flechette_phosphorus; bullet.incendiary = 5; PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); @@ -228,6 +224,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaPhos").setColor(0xF6871A, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -235,7 +233,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_4gauge_explosive; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.EXPLOSIVE)); bullet.velocity *= 2; bullet.gravity *= 2; bullet.dmgMin = 20; @@ -243,6 +241,8 @@ public class Gun4GaugeFactory { bullet.wear = 25; bullet.trail = 1; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaExp").setColor(0x3F8243, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -250,7 +250,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_4gauge_semtex; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.MINING)); bullet.velocity *= 2; bullet.gravity *= 2; bullet.dmgMin = 10; @@ -277,6 +277,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaSem").setColor(0x5C5C5C, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -284,7 +286,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_4gauge_balefire; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.BALEFIRE)); bullet.velocity *= 2; bullet.gravity *= 2; bullet.dmgMin = 50; @@ -310,6 +312,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaBale").setColor(0x7BFF44, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -317,7 +321,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_4gauge_kampf; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.KAMPF)); bullet.spread = 0.0F; bullet.gravity = 0.0D; bullet.wear = 15; @@ -326,6 +330,8 @@ public class Gun4GaugeFactory { bullet.trail = 4; bullet.vPFX = "smoke"; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaKampf").setColor(0xE7BA48, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -333,7 +339,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_4gauge_canister; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.CANISTER)); bullet.spread = 0.0F; bullet.gravity = 0.0D; bullet.wear = 15; @@ -364,6 +370,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaCan").setColor(0xCACACA, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -371,16 +379,18 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - bullet.ammo = ModItems.ammo_4gauge_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.SLEEK)); + + bullet.spentCasing = CASING4GAUGE.clone().register("4GaIF").setColor(0x1D1D1D, SpentCasing.COLOR_CASE_4GA); return bullet; } public static BulletConfiguration get4GaugeClawConfig() { - BulletConfiguration bullet = get4GaugeConfig(); + BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge_claw; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.CLAW)); bullet.dmgMin = 6; bullet.dmgMax = 9; bullet.bulletsMin *= 2; @@ -410,14 +420,16 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaClaw").setColor(0x5E38CC, SpentCasing.COLOR_CASE_4GA); + return bullet; } public static BulletConfiguration get4GaugeVampireConfig() { - BulletConfiguration bullet = get4GaugeConfig(); + BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge_vampire; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE)); bullet.dmgMin = 6; bullet.dmgMax = 9; bullet.bulletsMin *= 2; @@ -448,14 +460,16 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaVamp").setColor(0x278400, SpentCasing.COLOR_CASE_4GA); + return bullet; } public static BulletConfiguration get4GaugeVoidConfig() { - BulletConfiguration bullet = get4GaugeConfig(); + BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - bullet.ammo = ModItems.ammo_4gauge_void; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID)); bullet.dmgMin = 6; bullet.dmgMax = 9; bullet.bulletsMin *= 2; @@ -479,6 +493,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaVoid").setColor(0x3F3F3F, SpentCasing.COLOR_CASE_4GA); + return bullet; } @@ -486,7 +502,7 @@ public class Gun4GaugeFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_4gauge_titan; + bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK)); bullet.velocity *= 2D; bullet.spread = 0.0F; bullet.gravity = 0.0D; @@ -514,13 +530,6 @@ public class Gun4GaugeFactory { bullet.worldObj.removeEntity(creature); bullet.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); - //creature.isDead = true; - - /*try { - Method m = Class.forName("net.minecraft.entity.deity.EntityDeity").getDeclaredMethod("setTitanHealth", double.class); - m.setAccessible(true); - m.invoke(creature, 0.0D); - } catch (Exception ex) { }*/ } } @@ -529,6 +538,8 @@ public class Gun4GaugeFactory { } }; + bullet.spentCasing = CASING4GAUGE.clone().register("4GaDucc").setColor(0x1E1E1E, SpentCasing.COLOR_CASE_4GA); + return bullet; } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java index 1fe1ce16c..b9c19b9e0 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java @@ -1,15 +1,27 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo50AE; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class Gun50AEFactory { + private static final CasingEjector EJECTOR_PISTOL; + private static final SpentCasing CASING50AE; + + static { + EJECTOR_PISTOL = new CasingEjector().setMotion(-0.3, 0.7, 0).setOffset(-0.5, 0, 0.5).setAngleRange(0.01F, 0.03F); + CASING50AE = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.25F, 0.5D, 60, 20); + } + public static GunConfiguration getBaseConfig() { GunConfiguration config = new GunConfiguration(); @@ -37,30 +49,32 @@ public class Gun50AEFactory { config.durability = 2500; - config.name = "IMI Desert Eagle"; - config.manufacturer = "Magnum Research / Israel Military Industries"; + config.name = "deagle"; + config.manufacturer = EnumGunManufacturer.MAGNUM_R_IMI; + + config.absoluteFOV = true; + config.zoomFOV = 0.5F; config.hasSights = true; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.AE50_NORMAL); - config.config.add(BulletConfigSyncingUtil.AE50_AP); - config.config.add(BulletConfigSyncingUtil.AE50_DU); - config.config.add(BulletConfigSyncingUtil.AE50_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_AE50); + config.config = HbmCollection.fiftyAE; + + config.ejector = EJECTOR_PISTOL; return config; } - static float inaccuracy = 0.0005F; + private static float inaccuracy = 0.0005F; public static BulletConfiguration get50AEConfig() { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_50ae; + bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 28; bullet.dmgMax = 32; + bullet.spentCasing = CASING50AE.clone().register("50AEStock"); + return bullet; } @@ -68,13 +82,15 @@ public class Gun50AEFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_50ae_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.AP)); bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.leadChance = 10; bullet.wear = 15; + bullet.spentCasing = CASING50AE.clone().register("50AEAP"); + return bullet; } @@ -82,13 +98,15 @@ public class Gun50AEFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_50ae_du; + bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.DU)); bullet.spread *= inaccuracy; bullet.dmgMin = 38; bullet.dmgMax = 46; bullet.leadChance = 50; bullet.wear = 25; + bullet.spentCasing = CASING50AE.clone().register("50AEDU"); + return bullet; } @@ -96,13 +114,15 @@ public class Gun50AEFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_50ae_star; + bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.STAR)); bullet.spread *= inaccuracy; bullet.dmgMin = 52; bullet.dmgMax = 60; bullet.leadChance = 100; bullet.wear = 25; + bullet.spentCasing = CASING50AE.clone().register("50AEStar"); + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index cde95e131..930b38c01 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -5,12 +5,20 @@ import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHitBehavior; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo50BMG; +import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; @@ -29,6 +37,18 @@ import net.minecraft.potion.PotionEffect; public class Gun50BMGFactory { + private static final CasingEjector EJECTOR_BMG; + private static final CasingEjector EJECTOR_SNIPER; + private static final SpentCasing CASING50BMG; + private static final SpentCasing CASINGLUNA; + + static { + EJECTOR_BMG = new CasingEjector().setMotion(-0.35, 0.9, 0).setOffset(-0.45, -0.2, 0.35).setAngleRange(0.01F, 0.05F); + EJECTOR_SNIPER = new CasingEjector().setMotion(-2, 0.15, 0).setOffset(-0.45, -0.2, 0.35).setAngleRange(0.02F, 0.05F); + CASING50BMG = new SpentCasing(CasingType.BOTTLENECK).setScale(3F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.125F, 0.5D, 60, 20); + CASINGLUNA = new SpentCasing(CasingType.BOTTLENECK).setScale(4F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.125F, 0.5D, 60, 30); + } + public static GunConfiguration getCalamityConfig() { GunConfiguration config = new GunConfiguration(); @@ -62,19 +82,12 @@ public class Gun50BMGFactory { ) ); - config.name = "Universal-Maschinengewehr Modell 42 - .50 Mod"; - config.manufacturer = "Wilhelm-Gustloff-Werke"; + config.name = "mg42"; + config.manufacturer = EnumGunManufacturer.WGW; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.BMG50_NORMAL); - config.config.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.BMG50_AP); - config.config.add(BulletConfigSyncingUtil.BMG50_DU); - config.config.add(BulletConfigSyncingUtil.BMG50_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_BMG50); - config.config.add(BulletConfigSyncingUtil.BMG50_SLEEK); + config.config = HbmCollection.fiftyBMG; + + config.ejector = EJECTOR_BMG; return config; } @@ -97,22 +110,64 @@ public class Gun50BMGFactory { config.reloadSound = GunConfiguration.RSOUND_MAG; config.firingSound = "hbm:weapon.calShoot"; - config.name = "Double Maxim gun"; - config.manufacturer = "???"; + config.name = "maximDouble"; + config.manufacturer = EnumGunManufacturer.UNKNOWN; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.BMG50_NORMAL); - config.config.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.BMG50_AP); - config.config.add(BulletConfigSyncingUtil.BMG50_DU); - config.config.add(BulletConfigSyncingUtil.BMG50_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_BMG50); - config.config.add(BulletConfigSyncingUtil.BMG50_SLEEK); + config.config = HbmCollection.fiftyBMG; + + config.ejector = EJECTOR_BMG; return config; } + + public static BulletConfiguration getLunaticSabotRound() { + BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.SABOT)); + bullet.spread = 0.0F; + bullet.dmgMax = 500F; + bullet.dmgMin = 450F; + bullet.headshotMult = 2.5f; + bullet.wear = 2000; + bullet.velocity = 100; + bullet.doesPenetrate = true; + bullet.leadChance = 20; + bullet.incendiary = 10; + + bullet.blockDamage = true; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + + bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); + + return bullet; + } + + public static BulletConfiguration getLunaticIncendiaryRound() { + BulletConfiguration bullet = getLunaticSabotRound().clone(); + + bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.INCENDIARY)); + + bullet.ammo.meta = 1; + bullet.incendiary = 50; + + bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); + + return bullet; + } + + public static BulletConfiguration getLunaticExplosiveRound() { + BulletConfiguration bullet = getLunaticSabotRound().clone(); + + bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.EXPLOSIVE)); + + bullet.ammo.meta = 2; + bullet.explosive = 25; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); + + bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); + + return bullet; + } public static GunConfiguration getAR15Config() { @@ -132,8 +187,8 @@ public class Gun50BMGFactory { config.reloadSound = GunConfiguration.RSOUND_MAG; config.firingSound = "hbm:turret.howard_fire"; - config.name = "AR-15 .50 BMG Mod"; - config.manufacturer = "Armalite"; + config.name = "ar15_50"; + config.manufacturer = EnumGunManufacturer.ARMALITE; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.BMG50_FLECHETTE_AM); @@ -149,6 +204,8 @@ public class Gun50BMGFactory { config.config.add(BulletConfigSyncingUtil.CHL_BMG50); config.config.add(BulletConfigSyncingUtil.BMG50_SLEEK); + config.ejector = EJECTOR_BMG; + return config; } @@ -157,11 +214,13 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 36; + bullet.spentCasing = CASING50BMG.clone().register("50BMGStock"); + return bullet; } @@ -169,13 +228,15 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.INCENDIARY)); bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.wear = 15; bullet.incendiary = 5; + bullet.spentCasing = CASING50BMG.clone().register("50BMGInc"); + return bullet; } @@ -183,7 +244,7 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.PHOSPHORUS)); bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 36; @@ -211,6 +272,8 @@ public class Gun50BMGFactory { } }; + bullet.spentCasing = CASING50BMG.clone().register("50BMGPhos"); + return bullet; } @@ -218,13 +281,15 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_explosive; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.EXPLOSIVE)); bullet.spread *= inaccuracy; bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.wear = 25; bullet.explosive = 1; + bullet.spentCasing = CASING50BMG.clone().register("50BMGExp"); + return bullet; } @@ -232,13 +297,15 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.AP)); bullet.spread *= inaccuracy; bullet.dmgMin = 62; bullet.dmgMax = 68; bullet.wear = 15; bullet.leadChance = 10; + bullet.spentCasing = CASING50BMG.clone().register("50BMGAP"); + return bullet; } @@ -246,13 +313,15 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_du; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.DU)); bullet.spread *= inaccuracy; bullet.dmgMin = 80; bullet.dmgMax = 86; bullet.wear = 25; bullet.leadChance = 50; + bullet.spentCasing = CASING50BMG.clone().register("50BMGDU"); + return bullet; } @@ -260,13 +329,15 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_star; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STAR)); bullet.spread *= inaccuracy; bullet.dmgMin = 98; bullet.dmgMax = 102; bullet.wear = 25; bullet.leadChance = 100; + bullet.spentCasing = CASING50BMG.clone().register("50BMGStar"); + return bullet; } @@ -274,7 +345,7 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.SLEEK)); bullet.spread *= inaccuracy; bullet.dmgMin = 50; bullet.dmgMax = 70; @@ -317,6 +388,8 @@ public class Gun50BMGFactory { } }; + bullet.spentCasing = CASING50BMG.clone().register("50BMGIF"); + return bullet; } @@ -324,20 +397,22 @@ public class Gun50BMGFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_50bmg_flechette; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE)); bullet.spread *= inaccuracy; bullet.dmgMin = 50; bullet.dmgMax = 54; bullet.style = bullet.STYLE_FLECHETTE; + bullet.spentCasing = CASING50BMG.clone().register("50BMGFlech"); + return bullet; } public static BulletConfiguration get50BMGFlechetteAMConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = ModItems.ammo_50bmg_flechette_am; + + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE_AM)); bullet.spread *= inaccuracy; bullet.dmgMin = 60; bullet.dmgMax = 64; @@ -357,14 +432,16 @@ public class Gun50BMGFactory { } }; + bullet.spentCasing = CASING50BMG.clone().register("50BMGAM"); + return bullet; } public static BulletConfiguration get50BMGFlechettePOConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = ModItems.ammo_50bmg_flechette_po; + + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE_PO)); bullet.spread *= inaccuracy; bullet.dmgMin = 60; bullet.dmgMax = 64; @@ -384,6 +461,8 @@ public class Gun50BMGFactory { } }; + bullet.spentCasing = CASING50BMG.clone().register("50BMGPO"); + return bullet; } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index 49198fa4c..dfb332281 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -5,12 +5,19 @@ import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHitBehavior; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; @@ -25,6 +32,16 @@ import net.minecraft.potion.PotionEffect; public class Gun556mmFactory { + private static final CasingEjector EJECTOR_RIFLE; + private static final CasingEjector EJECTOR_GRENADE; + private static final SpentCasing CASING556; + + static { + EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); + EJECTOR_GRENADE = new CasingEjector().setAngleRange(0.02F, 0.03F).setDelay(30); + CASING556 = new SpentCasing(CasingType.BOTTLENECK).setScale(1.25F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS); + } + public static GunConfiguration getEuphieConfig() { GunConfiguration config = new GunConfiguration(); @@ -45,22 +62,15 @@ public class Gun556mmFactory { config.firingSound = "hbm:weapon.hksShoot"; config.reloadSoundEnd = false; - config.name = "Britannian Standard Issue Assault Rifle"; - config.manufacturer = "BAE Systems plc"; + config.name = "baeAR"; + config.manufacturer = EnumGunManufacturer.BAE; config.comment.add("Why is this gun so sticky?"); - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R556_NORMAL); - config.config.add(BulletConfigSyncingUtil.R556_GOLD); - config.config.add(BulletConfigSyncingUtil.R556_TRACER); - config.config.add(BulletConfigSyncingUtil.R556_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.R556_AP); - config.config.add(BulletConfigSyncingUtil.R556_DU); - config.config.add(BulletConfigSyncingUtil.R556_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_R556); - config.config.add(BulletConfigSyncingUtil.R556_SLEEK); - config.config.add(BulletConfigSyncingUtil.R556_K); + //config.config = new ArrayList(); + //config.config.add(BulletConfigSyncingUtil.R556_GOLD); + + config.config = HbmCollection.NATO; return config; } @@ -92,21 +102,16 @@ public class Gun556mmFactory { ) ); - config.name = "H&R SPIW"; - config.manufacturer = "Harrington & Richardson"; + config.name = "spiw"; + config.manufacturer = EnumGunManufacturer.H_AND_R; config.comment.add("Launch some flechettes in the breeze"); config.comment.add("Find his arms nailed to the trees"); config.comment.add("Napalm sticks to kids"); + + config.config = HbmCollection.NATOFlechette; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_DU); - config.config.add(BulletConfigSyncingUtil.CHL_R556_FLECHETTE); - config.config.add(BulletConfigSyncingUtil.R556_FLECHETTE_SLEEK); - config.config.add(BulletConfigSyncingUtil.R556_K); + config.ejector = EJECTOR_RIFLE; return config; } @@ -130,32 +135,25 @@ public class Gun556mmFactory { config.reloadSound = GunConfiguration.RSOUND_GRENADE; config.reloadSoundEnd = false; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_HE); - config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL); - config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION); - config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED); - config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK); - config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER); - config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); + config.config = HbmCollection.grenade; + + config.ejector = EJECTOR_GRENADE; return config; } - static float inaccuracy = 2.5F; + private static float inaccuracy = 2.5F; public static BulletConfiguration get556Config() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_556; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 16; bullet.dmgMax = 20; + bullet.spentCasing = CASING556.clone().register("556Stock"); + return bullet; } @@ -163,11 +161,13 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_566_gold; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.GOLD)); bullet.dmgMin = 250; bullet.dmgMax = 320; bullet.spread = 0.0F; + bullet.spentCasing = null; + return bullet; } @@ -175,7 +175,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.PHOSPHORUS)); bullet.wear = 15; bullet.incendiary = 5; bullet.doesPenetrate = false; @@ -200,6 +200,8 @@ public class Gun556mmFactory { } }; + bullet.spentCasing = CASING556.clone().register("556Phos"); + return bullet; } @@ -207,12 +209,14 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.AP)); bullet.dmgMin = 20; bullet.dmgMax = 26; bullet.wear = 15; bullet.leadChance = 10; + bullet.spentCasing = CASING556.clone().register("556AP"); + return bullet; } @@ -220,12 +224,14 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_du; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.DU)); bullet.dmgMin = 24; bullet.dmgMax = 32; bullet.wear = 25; bullet.leadChance = 50; + bullet.spentCasing = CASING556.clone().register("556DU"); + return bullet; } @@ -233,12 +239,14 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_star; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.STAR)); bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.wear = 25; bullet.leadChance = 100; + bullet.spentCasing = CASING556.clone().register("556Star"); + return bullet; } @@ -246,7 +254,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.SLEEK)); bullet.dmgMin = 45; bullet.dmgMax = 50; bullet.wear = 10; @@ -288,6 +296,8 @@ public class Gun556mmFactory { } }; + bullet.spentCasing = CASING556.clone().register("556IF"); + return bullet; } @@ -295,9 +305,11 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_tracer; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.TRACER)); bullet.vPFX = "reddust"; + bullet.spentCasing = CASING556.clone().register("556Trac"); + return bullet; } @@ -305,7 +317,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = ModItems.ammo_556_flechette; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE)); bullet.dmgMin = 26; bullet.dmgMax = 32; bullet.HBRC = 2; @@ -314,6 +326,8 @@ public class Gun556mmFactory { bullet.style = BulletConfiguration.STYLE_FLECHETTE; bullet.doesPenetrate = false; + bullet.spentCasing = CASING556.clone().register("556Flec"); + return bullet; } @@ -321,9 +335,11 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = ModItems.ammo_556_flechette_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_INCENDIARY)); bullet.incendiary = 5; + bullet.spentCasing = CASING556.clone().register("556FlecInc"); + return bullet; } @@ -331,7 +347,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = ModItems.ammo_556_flechette_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_PHOSPHORUS)); bullet.incendiary = 5; PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); @@ -354,6 +370,8 @@ public class Gun556mmFactory { } }; + bullet.spentCasing = CASING556.clone().register("556FlecPhos"); + return bullet; } @@ -361,13 +379,15 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = ModItems.ammo_556_flechette_du; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_DU)); bullet.dmgMin = 46; bullet.dmgMax = 52; bullet.wear = 25; bullet.leadChance = 50; bullet.doesPenetrate = true; + bullet.spentCasing = CASING556.clone().register("556FlecDU"); + return bullet; } @@ -375,7 +395,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = ModItems.ammo_556_flechette_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_SLEEK)); bullet.dmgMin = 45; bullet.dmgMax = 50; bullet.wear = 10; @@ -417,6 +437,8 @@ public class Gun556mmFactory { } }; + bullet.spentCasing = CASING556.clone().register("556FlecIF"); + return bullet; } @@ -424,7 +446,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_556_k; + bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.K)); bullet.dmgMin = 0; bullet.dmgMax = 0; bullet.maxAge = 0; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java index fb5890a7e..5e159190b 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java @@ -1,15 +1,27 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.Ammo5mm; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class Gun5mmFactory { + private static final CasingEjector EJECTOR_MINIGUN; + private static final SpentCasing CASING5MM; + + static { + EJECTOR_MINIGUN = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.2, 0.35).setAngleRange(0.01F, 0.03F).setAmount(5); + CASING5MM = new SpentCasing(CasingType.STRAIGHT).setScale(1.25F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).setMaxAge(100); + } + public static GunConfiguration getMinigunConfig() { GunConfiguration config = new GunConfiguration(); @@ -27,12 +39,9 @@ public class Gun5mmFactory { config.durability = 10000; config.firingSound = "hbm:weapon.lacunaeShoot"; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R5_NORMAL); - config.config.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.R5_DU); - config.config.add(BulletConfigSyncingUtil.R5_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_R5); + config.config = HbmCollection.fiveMM; + + config.ejector = EJECTOR_MINIGUN; return config; } @@ -41,8 +50,8 @@ public class Gun5mmFactory { GunConfiguration config = getMinigunConfig(); - config.name = "CZ53 Personal Minigun"; - config.manufacturer = "Rockwell International Corporation"; + config.name = "cz53"; + config.manufacturer = EnumGunManufacturer.ROCKWELL; return config; } @@ -52,8 +61,8 @@ public class Gun5mmFactory { GunConfiguration config = getMinigunConfig(); config.durability = 15000; - config.name = "CZ57 Avenger Minigun"; - config.manufacturer = "Rockwell International Corporation"; + config.name = "cz57"; + config.manufacturer = EnumGunManufacturer.ROCKWELL; return config; } @@ -63,29 +72,26 @@ public class Gun5mmFactory { GunConfiguration config = getMinigunConfig(); config.durability = 25000; - config.name = "Auntie Lacunae"; - config.manufacturer = "Rockwell International Corporation?"; + config.name = "lacunae"; + config.manufacturer = EnumGunManufacturer.ROCKWELL_U; - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R5_NORMAL_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_EXPLOSIVE_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_DU_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_STAR_BOLT); - config.config.add(BulletConfigSyncingUtil.CHL_R5_BOLT); + config.config = HbmCollection.fiveMMBolt; return config; } - static float inaccuracy = 10; + private static float inaccuracy = 10; public static BulletConfiguration get5mmConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_5mm; + bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 12; bullet.dmgMax = 14; + bullet.spentCasing = CASING5MM.clone().register("5mmStock"); + return bullet; } @@ -93,13 +99,15 @@ public class Gun5mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_5mm_explosive; + bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.EXPLOSIVE)); bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 32; bullet.explosive = 1F; bullet.wear = 25; + bullet.spentCasing = CASING5MM.clone().register("5mmExp"); + return bullet; } @@ -107,13 +115,15 @@ public class Gun5mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_5mm_du; + bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.DU)); bullet.spread *= inaccuracy; bullet.dmgMin = 36; bullet.dmgMax = 40; bullet.wear = 25; bullet.leadChance = 50; + bullet.spentCasing = CASING5MM.clone().register("5mmDU"); + return bullet; } @@ -121,13 +131,15 @@ public class Gun5mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_5mm_star; + bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STAR)); bullet.spread *= inaccuracy; bullet.dmgMin = 46; bullet.dmgMax = 50; bullet.wear = 25; bullet.leadChance = 100; + bullet.spentCasing = CASING5MM.clone().register("5mmStar"); + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java index 6a2ceb71b..95d478fa0 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java @@ -3,12 +3,15 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.Ammo75Bolt; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -72,23 +75,20 @@ public class Gun75BoltFactory { ) ); - config.name = "Manticora Pattern Boltgun"; - config.manufacturer = "Cerix Magnus"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.B75_NORMAL); - config.config.add(BulletConfigSyncingUtil.B75_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.B75_HE); + config.name = "bolter"; + config.manufacturer = EnumGunManufacturer.CERIX; + + config.config = HbmCollection.seventyFive; return config; } - static float inaccuracy = 0.5F; + private static float inaccuracy = 0.5F; public static BulletConfiguration get75BoltConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_75bolt; + bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.STOCK)); bullet.ammoCount = 30; bullet.spread *= inaccuracy; bullet.dmgMin = 74; @@ -126,7 +126,7 @@ public class Gun75BoltFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_75bolt_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.INCENDIARY)); bullet.ammoCount = 30; bullet.spread *= inaccuracy; bullet.dmgMin = 72; @@ -164,7 +164,7 @@ public class Gun75BoltFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_75bolt_he; + bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.HE)); bullet.ammoCount = 30; bullet.spread *= inaccuracy; bullet.dmgMin = 94; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java new file mode 100644 index 000000000..13f5f1d63 --- /dev/null +++ b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java @@ -0,0 +1,192 @@ +package com.hbm.handler.guncfg; + +import java.util.ArrayList; + +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; +import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo762NATO; +import com.hbm.lib.HbmCollection; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.potion.HbmPotion; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; + +import net.minecraft.potion.PotionEffect; + +public class Gun762mmFactory { + + private static final CasingEjector EJECTOR_RIFLE; + private static final SpentCasing CASING762NATO; + + static { + EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); + CASING762NATO = new SpentCasing(CasingType.BOTTLENECK).setScale(1.7F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS); + } + + public static GunConfiguration getUACDMRConfig() { + final GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 4; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.reloadDuration = 30; + config.firingDuration = 8; + config.ammoCap = 30; + config.durability = 30000; + config.reloadType = 1; + config.allowsInfinity = true; + config.hasSights = true; + config.crosshair = Crosshair.CROSS; + config.reloadSound = "hbm:weapon.DMRMagInPB3"; + config.firingSound = "hbm:weapon.DMRShootPB3Alt"; + config.reloadSoundEnd = true; + + config.name = "uacDMR"; + config.manufacturer = EnumGunManufacturer.UAC; + + config.config.addAll(HbmCollection.threeZeroEight); + + config.ejector = EJECTOR_RIFLE; + + return config; + } + + public static GunConfiguration getUACCarbineConfig() { + final GunConfiguration config = getUACDMRConfig(); + + config.rateOfFire = 2; + config.reloadDuration = 20; + config.ammoCap = 40; + config.durability = 40000; + config.crosshair = Crosshair.SPLIT; + config.reloadSound = "hbm:weapon.carbineMagInPB3"; + config.firingSound = "hbm:weapon.carbineShootPB3"; + + config.name = "uacCarbine"; + + return config; + } + + public static GunConfiguration getUACLMGConfig() { + final GunConfiguration config = getUACCarbineConfig(); + + config.ammoCap = 60; + config.durability = 50000; + config.crosshair = Crosshair.BOX; + config.reloadSound = "hbm:weapon.LMGMagInPB3"; + config.firingSound = "hbm:weapon.LMGShootPB3Alt"; + + config.name = "uacLMG"; + + return config; + } + + public static GunConfiguration getM60Config() { + final GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 2; + config.durability = 10000; + config.roundsPerCycle = 1; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.reloadType = GunConfiguration.RELOAD_NONE; + config.ammoCap = 0; + config.allowsInfinity = true; + config.hasSights = true; + config.crosshair = Crosshair.L_BOX; + config.firingSound = "hbm:weapon.LMGShootPB3"; + + config.name = "m60"; + config.manufacturer = EnumGunManufacturer.SACO; + config.comment.add("\"Get some!\""); + config.comment.add(" ~ Stuart Brown (aka Ahoy)"); + config.config.addAll(HbmCollection.threeZeroEight); + + config.ejector = EJECTOR_RIFLE; + + return config; + } + + public static BulletConfiguration get762NATOConfig() { + final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK)); + bullet.dmgMax *= 2; + bullet.dmgMin *= 2; + bullet.velocity *= 2.5; + bullet.maxAge *= 2; + bullet.spread /= 2; + + bullet.spentCasing = CASING762NATO.clone().register("762NATOStock"); + + return bullet; + } + + public static BulletConfiguration get762APConfig() { + final BulletConfiguration bullet = get762NATOConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP)); + bullet.dmgMax *= 1.5; + bullet.dmgMin *= 1.5; + + bullet.spentCasing = CASING762NATO.clone().register("762NATOAP"); + + return bullet; + } + + public static BulletConfiguration get762DUConfig() { + final BulletConfiguration bullet = get762NATOConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU)); + bullet.dmgMax *= 2; + bullet.dmgMin *= 2; + + bullet.spentCasing = CASING762NATO.clone().register("762NATODU"); + + return bullet; + } + + public static BulletConfiguration get762TracerConfig() { + final BulletConfiguration bullet = get762NATOConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.TRACER)); + bullet.vPFX = "reddust"; + + bullet.spentCasing = CASING762NATO.clone().register("762NATOTrac"); + + return bullet; + } + + public static BulletConfiguration get762WPConfig() { + final BulletConfiguration bullet = get762NATOConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.PHOSPHORUS)); + bullet.setToFire(20 * 5); + bullet.vPFX = "reddust"; + final PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); + eff.getCurativeItems().clear(); + bullet.effects = new ArrayList(); + bullet.effects.add(new PotionEffect(eff)); + + bullet.spentCasing = CASING762NATO.clone().register("762NATOPhos"); + + return bullet; + } + + public static BulletConfiguration get762BlankConfig() { + final BulletConfiguration bullet = get762NATOConfig(); + + bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.BLANK)); + bullet.dmgMax = 0; + bullet.dmgMin = 0; + bullet.maxAge = 0; + + bullet.spentCasing = CASING762NATO.clone().register("762NATOK"); + + return bullet; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java index 5b3e4370d..827950fd8 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java @@ -4,12 +4,26 @@ import java.util.ArrayList; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo9mm; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class Gun9mmFactory { + private static final CasingEjector EJECTOR_SMG; + private static final SpentCasing CASING9MM; + + static { + EJECTOR_SMG = new CasingEjector().setMotion(-0.3, 0.6, 0).setOffset(-0.35, -0.2, 0.55).setAngleRange(0.01F, 0.03F); + CASING9MM = new SpentCasing(CasingType.STRAIGHT).setScale(1F, 1F, 0.6F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS); + } + public static GunConfiguration getMP40Config() { GunConfiguration config = new GunConfiguration(); @@ -29,8 +43,8 @@ public class Gun9mmFactory { config.firingSound = "hbm:weapon.rifleShoot"; config.reloadSoundEnd = false; - config.name = "Maschinenpistole 40"; - config.manufacturer = "Erfurter Maschinenfabrik Geipel"; + config.name = "mp40"; + config.manufacturer = EnumGunManufacturer.NAZI; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.P9_NORMAL); @@ -39,10 +53,13 @@ public class Gun9mmFactory { config.config.add(BulletConfigSyncingUtil.CHL_P9); config.config.add(BulletConfigSyncingUtil.P9_ROCKET); + config.ejector = EJECTOR_SMG; + return config; } - public static GunConfiguration getThompsonConfig() { + //rechambered to .45 + /*public static GunConfiguration getThompsonConfig() { GunConfiguration config = new GunConfiguration(); @@ -61,8 +78,8 @@ public class Gun9mmFactory { config.firingSound = "hbm:weapon.rifleShoot"; config.reloadSoundEnd = false; - config.name = "M1A1 Submachine Gun 9mm Mod"; - config.manufacturer = "Auto-Ordnance Corporation"; + config.name = "tommy9"; + config.manufacturer = EnumGunManufacturer.AUTO_ORDINANCE; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.P9_NORMAL); @@ -72,18 +89,20 @@ public class Gun9mmFactory { config.config.add(BulletConfigSyncingUtil.P9_ROCKET); return config; - } + }*/ static float inaccuracy = 5; public static BulletConfiguration get9mmConfig() { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_9mm; + bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.STOCK)); bullet.spread *= inaccuracy; bullet.dmgMin = 10; bullet.dmgMax = 14; + bullet.spentCasing = CASING9MM.clone().register("9MMStock"); + return bullet; } @@ -91,13 +110,15 @@ public class Gun9mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_9mm_ap; + bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.AP)); bullet.spread *= inaccuracy; bullet.dmgMin = 18; bullet.dmgMax = 20; bullet.leadChance = 10; bullet.wear = 15; + bullet.spentCasing = CASING9MM.clone().register("9MMAP"); + return bullet; } @@ -105,13 +126,15 @@ public class Gun9mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - bullet.ammo = ModItems.ammo_9mm_du; + bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.DU)); bullet.spread *= inaccuracy; bullet.dmgMin = 22; bullet.dmgMax = 26; bullet.leadChance = 50; bullet.wear = 25; + bullet.spentCasing = CASING9MM.clone().register("9MMDU"); + return bullet; } @@ -119,11 +142,13 @@ public class Gun9mmFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_9mm_rocket; + bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.ROCKET)); bullet.velocity = 5; bullet.explosive = 7.5F; bullet.trail = 5; + bullet.spentCasing = CASING9MM.clone().register("9MMRocket"); + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 743d9a22e..50c0fdff2 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -3,20 +3,32 @@ package com.hbm.handler.guncfg; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; import com.hbm.items.ModItems; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; public class GunCannonFactory { + + protected static SpentCasing CASINNG240MM; + + static { + CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + } public static BulletConfiguration getShellConfig() { BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); - bullet.ammo = ModItems.ammo_shell; + bullet.ammo = new ComparableStack(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)); bullet.dmgMin = 25; bullet.dmgMax = 35; bullet.explosive = 4F; bullet.blockDamage = false; + bullet.spentCasing = CASINNG240MM.register("240MM"); //same instance everywhere, only register once + return bullet; } @@ -24,12 +36,14 @@ public class GunCannonFactory { BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); - bullet.ammo = ModItems.ammo_shell_explosive; + bullet.ammo = new ComparableStack(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)); bullet.dmgMin = 35; bullet.dmgMax = 45; bullet.explosive = 4F; bullet.blockDamage = true; + bullet.spentCasing = CASINNG240MM; + return bullet; } @@ -37,12 +51,14 @@ public class GunCannonFactory { BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); - bullet.ammo = ModItems.ammo_shell_apfsds_t; + bullet.ammo = new ComparableStack(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)); bullet.dmgMin = 50; bullet.dmgMax = 55; bullet.doesPenetrate = true; bullet.style = BulletConfiguration.STYLE_APDS; + bullet.spentCasing = CASINNG240MM; + return bullet; } @@ -50,12 +66,14 @@ public class GunCannonFactory { BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); - bullet.ammo = ModItems.ammo_shell_apfsds_du; + bullet.ammo = new ComparableStack(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)); bullet.dmgMin = 70; bullet.dmgMax = 80; bullet.doesPenetrate = true; bullet.style = BulletConfiguration.STYLE_APDS; + bullet.spentCasing = CASINNG240MM; + return bullet; } @@ -63,7 +81,7 @@ public class GunCannonFactory { BulletConfiguration bullet = BulletConfigFactory.standardShellConfig(); - bullet.ammo = ModItems.ammo_shell_w9; + bullet.ammo = new ComparableStack(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)); bullet.dmgMin = 100; bullet.dmgMax = 150; @@ -75,6 +93,8 @@ public class GunCannonFactory { } }; + bullet.spentCasing = CASINNG240MM; + return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java index 86321e2e0..86bc1bb2f 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java @@ -1,14 +1,24 @@ package com.hbm.handler.guncfg; import com.hbm.handler.BulletConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; public class GunDGKFactory { + + public static final SpentCasing CASINGDGK; + + static { + CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds + } public static BulletConfiguration getDGKConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_dgk; + bullet.ammo = new ComparableStack(ModItems.ammo_dgk); + bullet.spentCasing = CASINGDGK.register("DGK"); return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java index b4f4b9cd8..70c743232 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java @@ -8,8 +8,11 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletHurtBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoDart; import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemGunDart; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.MainRegistry; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -42,8 +45,8 @@ public class GunDartFactory { config.reloadSoundEnd = false; config.showAmmo = true; - config.name = "Needle Gun"; - config.manufacturer = "-"; + config.name = "dart"; + config.manufacturer = EnumGunManufacturer.NONE; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NEEDLE_GPS); @@ -73,8 +76,8 @@ public class GunDartFactory { config.reloadSoundEnd = false; config.showAmmo = true; - config.name = "NERF blaster of unknown design"; - config.manufacturer = "Hasbro"; + config.name = "nerf"; + config.manufacturer = EnumGunManufacturer.HASBRO; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.DART_NORMAL); @@ -87,7 +90,7 @@ public class GunDartFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_dart; + bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.GPS)); bullet.velocity = 5.0F; bullet.spread = 0; bullet.dmgMin = 1; @@ -133,7 +136,7 @@ public class GunDartFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_dart_nuclear; + bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.NUCLEAR)); bullet.velocity = 5.0F; bullet.spread = 0; bullet.dmgMin = 1; @@ -170,7 +173,7 @@ public class GunDartFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.ammo_dart_nerf; + bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.NERF)); bullet.velocity = 1.0F; bullet.gravity = 0.04D; bullet.dmgMin = 0; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index 2d373c7ad..dad35a32a 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -10,6 +10,8 @@ import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.main.MainRegistry; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PlayerInformPacket; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -44,8 +46,8 @@ public class GunDetonatorFactory { config.reloadSoundEnd = false; config.showAmmo = true; - config.name = "Hopeville Laser Detonator"; - config.manufacturer = "WestTek"; + config.name = "laserDet"; + config.manufacturer = EnumGunManufacturer.WESTTEK; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.DET_BOLT); @@ -79,7 +81,7 @@ public class GunDetonatorFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = Items.redstone; + bullet.ammo = new ComparableStack(Items.redstone); bullet.spread = 0.0F; bullet.maxAge = 100; bullet.dmgMin = 0; diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 5b52257b3..27bc4ad4e 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -11,7 +11,11 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoFireExt; +import com.hbm.items.ItemAmmoEnums.AmmoFlamethrower; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; @@ -42,7 +46,7 @@ public class GunEnergyFactory { config.crosshair = Crosshair.CIRCLE; config.name = "Chemical Thrower"; - config.manufacturer = "Langford Research Laboratories"; + config.manufacturer = EnumGunManufacturer.LANGFORD; config.config = new ArrayList(); @@ -67,7 +71,7 @@ public class GunEnergyFactory { config.firingSound = "hbm:weapon.teslaShoot"; config.name = "EMP Orb Projector"; - config.manufacturer = "MWT Prototype Labs"; + config.manufacturer = EnumGunManufacturer.MWT; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SPECIAL_EMP); @@ -95,7 +99,7 @@ public class GunEnergyFactory { config.reloadSound = "hbm:weapon.flamerReload"; config.name = "Heavy Duty Flamer"; - config.manufacturer = "MWT Prototype Labs"; + config.manufacturer = EnumGunManufacturer.MWT; config.comment.add("Dragon-slaying: Advanced techniques, part 1:"); config.comment.add("Try not to get eaten by the dragon."); @@ -132,7 +136,7 @@ public class GunEnergyFactory { config.reloadSound = "hbm:weapon.b92Reload"; config.name = "EMC101 Prismatic Negative Energy Cannon"; - config.manufacturer = "MWT Prototype Labs"; + config.manufacturer = EnumGunManufacturer.MWT; config.comment.add("Taste the rainbow!"); @@ -162,7 +166,7 @@ public class GunEnergyFactory { config.reloadSound = "hbm:weapon.flamerReload"; config.name = "PROTEX Fire Exinguisher 6kg"; - config.manufacturer = "Gloria GmbH"; + config.manufacturer = EnumGunManufacturer.GLORIA; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.FEXT_NORMAL); @@ -184,7 +188,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.gun_emp_ammo; + bullet.ammo = new ComparableStack(ModItems.gun_emp_ammo); bullet.velocity = 1F; bullet.spread = 0.0F; @@ -217,7 +221,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.ammo_fuel; + bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL)); bullet.ammoCount = 100; bullet.velocity = 0.75F; @@ -265,7 +269,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFlameConfig(); - bullet.ammo = ModItems.ammo_fuel_napalm; + bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM)); bullet.wear = 2; bullet.dmgMin = 4; bullet.dmgMax = 6; @@ -278,7 +282,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFlameConfig(); - bullet.ammo = ModItems.ammo_fuel_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.PHOSPHORUS)); bullet.wear = 2; bullet.spread = 0.0F; bullet.bulletsMin = 1; @@ -297,7 +301,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFlameConfig(); - bullet.ammo = ModItems.ammo_fuel_vaporizer; + bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.VAPORIZER)); bullet.wear = 4; bullet.spread = 0.25F; bullet.bulletsMin = 8; @@ -322,7 +326,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFlameConfig(); - bullet.ammo = ModItems.ammo_fuel_gas; + bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE)); bullet.wear = 1; bullet.spread = 0.05F; bullet.gravity = 0D; @@ -344,7 +348,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.ammo_fireext; + bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.WATER)); bullet.ammoCount = 300; bullet.velocity = 0.75F; @@ -432,7 +436,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFextConfig(); - bullet.ammo = ModItems.ammo_fireext_foam; + bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.FOAM)); bullet.spread = 0.05F; bullet.bImpact = new IBulletImpactBehavior() { @@ -513,7 +517,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = getFextConfig(); - bullet.ammo = ModItems.ammo_fireext_sand; + bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND)); bullet.spread = 0.1F; bullet.bImpact = new IBulletImpactBehavior() { @@ -578,7 +582,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.nugget_euphemium; + bullet.ammo = new ComparableStack(ModItems.nugget_euphemium); bullet.ammoCount = 1000; bullet.wear = 1; bullet.velocity = 1F; @@ -621,7 +625,7 @@ public class GunEnergyFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.nothing; + bullet.ammo = new ComparableStack(ModItems.nothing); bullet.dmgMin = 100; bullet.dmgMax = 150; bullet.velocity = 1F; diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java index cbd5ad9bd..b11625a66 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java @@ -13,7 +13,10 @@ import com.hbm.handler.GunConfiguration; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -43,8 +46,8 @@ public class GunFatmanFactory { config.reloadSound = GunConfiguration.RSOUND_FATMAN; config.reloadSoundEnd = false; - config.name = "M-42 Tactical Nuclear Catapult"; - config.manufacturer = "Fort Strong"; + config.name = "m42"; + config.manufacturer = EnumGunManufacturer.F_STRONG; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL); @@ -63,8 +66,8 @@ public class GunFatmanFactory { GunConfiguration config = getFatmanConfig(); - config.name = "M-42 Experimental MIRV"; - config.manufacturer = "Fort Strong"; + config.name = "m42MIRV"; + config.manufacturer = EnumGunManufacturer.F_STRONG; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL); @@ -81,8 +84,8 @@ public class GunFatmanFactory { GunConfiguration config = getFatmanConfig(); - config.name = "Balefire Egg Launcher"; - config.manufacturer = "Fort Strong"; + config.name = "bel"; + config.manufacturer = EnumGunManufacturer.F_STRONG; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NUKE_AMAT); @@ -108,8 +111,8 @@ public class GunFatmanFactory { config.reloadSound = GunConfiguration.RSOUND_FATMAN; config.reloadSoundEnd = false; - config.name = "M-42 Tactical Nuclear Catapult"; - config.manufacturer = "Fort Strong"; + config.name = "m42"; + config.manufacturer = EnumGunManufacturer.F_STRONG; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_NORMAL); @@ -127,7 +130,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK)); bullet.bImpact = new IBulletImpactBehavior() { @@ -143,7 +146,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeLowConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_low; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW)); bullet.bImpact = new IBulletImpactBehavior() { @@ -159,7 +162,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeHighConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_high; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH)); bullet.bImpact = new IBulletImpactBehavior() { @@ -175,7 +178,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeTotsConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_tots; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.TOTS)); bullet.bulletsMin = 8; bullet.bulletsMax = 8; bullet.spread = 0.1F; @@ -195,7 +198,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeSafeConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_safe; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE)); bullet.bImpact = new IBulletImpactBehavior() { @@ -211,7 +214,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukePumpkinConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_pumpkin; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN)); bullet.explosive = 10F; bullet.bImpact = new IBulletImpactBehavior() { @@ -242,7 +245,7 @@ public class GunFatmanFactory { public static BulletConfiguration getNukeBarrelConfig() { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.ammo_nuke_barrel; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BARREL)); bullet.explosive = 3F; bullet.style = bullet.STYLE_BARREL; @@ -300,7 +303,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = getNukeConfig(); - bullet.ammo = ModItems.ammo_mirv; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV)); bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; @@ -337,7 +340,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = getNukeLowConfig(); - bullet.ammo = ModItems.ammo_mirv_low; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW)); bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; @@ -374,7 +377,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = getNukeHighConfig(); - bullet.ammo = ModItems.ammo_mirv_high; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH)); bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; @@ -411,7 +414,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = getNukeSafeConfig(); - bullet.ammo = ModItems.ammo_mirv_safe; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE)); bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; @@ -448,7 +451,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = getNukeConfig(); - bullet.ammo = ModItems.ammo_mirv_special; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SPECIAL)); bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; @@ -496,7 +499,7 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = ModItems.gun_bf_ammo; + bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE)); bullet.style = BulletConfiguration.STYLE_BF; bullet.bImpact = new IBulletImpactBehavior() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java index ce49391a9..159171a0f 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java @@ -5,7 +5,9 @@ import java.util.ArrayList; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class GunGaussFactory { @@ -27,8 +29,8 @@ public class GunGaussFactory { config.durability = 6000; config.firingSound = "hbm:weapon.tauShoot"; - config.name = "XVL1456 Tau Cannon"; - config.manufacturer = "Black Mesa Research Facility"; + config.name = "tau"; + config.manufacturer = EnumGunManufacturer.BLACK_MESA; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); @@ -60,7 +62,7 @@ public class GunGaussFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.gun_xvl1456_ammo; + bullet.ammo = new ComparableStack(ModItems.gun_xvl1456_ammo); bullet.dmgMin = 6; bullet.dmgMax = 9; bullet.trail = 1; diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 0044ab409..f8393e634 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -5,13 +5,27 @@ import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoGrenade; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class GunGrenadeFactory { + private static final CasingEjector EJECTOR_LAUNCHER; + private static final SpentCasing CASING40MM; + + static { + EJECTOR_LAUNCHER = new CasingEjector().setAngleRange(0.02F, 0.03F).setAfterReload(); + CASING40MM = new SpentCasing(CasingType.STRAIGHT).setScale(4F, 4F, 3F).setBounceMotion(0.02F, 0.03F).setColor(0x777777).setupSmoke(1F, 0.5D, 60, 40); + } + public static GunConfiguration getHK69Config() { GunConfiguration config = new GunConfiguration(); @@ -31,8 +45,8 @@ public class GunGrenadeFactory { config.reloadSound = GunConfiguration.RSOUND_GRENADE; config.reloadSoundEnd = false; - config.name = "Granatpistole HK69"; - config.manufacturer = "Heckler & Koch"; + config.name = "gPistol"; + config.manufacturer = EnumGunManufacturer.H_AND_K; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL); @@ -48,6 +62,8 @@ public class GunGrenadeFactory { config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF); config.durability = 300; + config.ejector = EJECTOR_LAUNCHER; + return config; } @@ -55,13 +71,15 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.STOCK)); bullet.velocity = 2.0F; bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.wear = 10; bullet.trail = 0; + bullet.spentCasing = CASING40MM.clone().register("40MMStock"); + return bullet; } @@ -69,7 +87,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_he; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE)); bullet.velocity = 2.0F; bullet.dmgMin = 20; bullet.dmgMax = 15; @@ -77,6 +95,8 @@ public class GunGrenadeFactory { bullet.explosive = 5.0F; bullet.trail = 1; + bullet.spentCasing = CASING40MM.clone().register("40MMHE"); + return bullet; } @@ -84,7 +104,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.INCENDIARY)); bullet.velocity = 2.0F; bullet.dmgMin = 15; bullet.dmgMax = 15; @@ -92,6 +112,8 @@ public class GunGrenadeFactory { bullet.trail = 0; bullet.incendiary = 2; + bullet.spentCasing = CASING40MM.clone().register("40MMInc"); + return bullet; } @@ -99,7 +121,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.PHOSPHORUS)); bullet.velocity = 2.0F; bullet.dmgMin = 15; bullet.dmgMax = 15; @@ -109,6 +131,8 @@ public class GunGrenadeFactory { bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); + bullet.spentCasing = CASING40MM.clone().register("40MMPhos"); + return bullet; } @@ -116,7 +140,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_toxic; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.CHLORINE)); bullet.velocity = 2.0F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -125,6 +149,8 @@ public class GunGrenadeFactory { bullet.explosive = 0; bullet.chlorine = 50; + bullet.spentCasing = CASING40MM.clone().register("40MMTox"); + return bullet; } @@ -132,7 +158,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.SLEEK)); bullet.velocity = 2.0F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -141,6 +167,8 @@ public class GunGrenadeFactory { bullet.explosive = 7.5F; bullet.jolt = 6.5D; + bullet.spentCasing = CASING40MM.clone().register("40MMIF"); + return bullet; } @@ -148,7 +176,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_concussion; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.CONCUSSION)); bullet.velocity = 2.0F; bullet.dmgMin = 15; bullet.dmgMax = 20; @@ -156,6 +184,8 @@ public class GunGrenadeFactory { bullet.explosive = 10.0F; bullet.trail = 3; + bullet.spentCasing = CASING40MM.clone().register("40MMCon"); + return bullet; } @@ -163,11 +193,13 @@ public class GunGrenadeFactory { BulletConfiguration bullet = getGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_finned; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED)); bullet.gravity = 0.02; bullet.explosive = 1.5F; bullet.trail = 5; + bullet.spentCasing = CASING40MM.clone().register("40MMFin"); + return bullet; } @@ -175,7 +207,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = getGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_nuclear; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.NUCLEAR)); bullet.velocity = 4; bullet.explosive = 0.0F; @@ -187,6 +219,8 @@ public class GunGrenadeFactory { } }; + bullet.spentCasing = CASING40MM.clone().register("40MMNuke"); + return bullet; } @@ -194,13 +228,15 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.ammo_grenade_tracer; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.TRACER)); bullet.velocity = 2.0F; bullet.wear = 10; bullet.explosive = 0F; bullet.trail = 5; bullet.vPFX = "bluedust"; + bullet.spentCasing = CASING40MM.clone().register("40MMTrac").setColor(0xEEEEEE); + return bullet; } @@ -208,7 +244,7 @@ public class GunGrenadeFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_grenade_kampf; + bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF)); bullet.spread = 0.0F; bullet.gravity = 0.0D; bullet.wear = 15; @@ -217,6 +253,8 @@ public class GunGrenadeFactory { bullet.trail = 4; bullet.vPFX = "smoke"; + //bullet.spentCasing = CASING40MM.clone().register("40MMKampf").setColor(0xEBC35E); //does not eject, whole cartridge leaves the gun + return bullet; } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index d9c8407e3..b0935be11 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -9,6 +9,7 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -29,7 +30,7 @@ public class GunNPCFactory { BulletConfiguration bullet = new BulletConfiguration(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.velocity = 0.25F; bullet.spread = 0.000F; bullet.wear = 10; @@ -84,7 +85,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.spread = 0.0F; bullet.dmgMin = 15; bullet.dmgMax = 20; @@ -102,7 +103,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.spread = 0.0F; bullet.dmgMin = 5; bullet.dmgMax = 10; @@ -118,7 +119,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.spread = 0.0F; bullet.dmgMin = 15; bullet.dmgMax = 20; @@ -151,7 +152,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.gravity = 0.1D; bullet.velocity = 1.0F; bullet.dmgMin = 15; @@ -167,7 +168,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - bullet.ammo = ModItems.coin_maskman; + bullet.ammo = new ComparableStack(ModItems.coin_maskman); bullet.gravity = 0.1D; bullet.velocity = 1.0F; bullet.dmgMin = 20; @@ -205,7 +206,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.coin_worm; + bullet.ammo = new ComparableStack(ModItems.coin_worm); bullet.spread = 0.0F; bullet.maxAge = 60; bullet.dmgMin = 15; @@ -222,7 +223,7 @@ public class GunNPCFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.coin_worm; + bullet.ammo = new ComparableStack(ModItems.coin_worm); bullet.spread = 0.0F; bullet.maxAge = 100; bullet.dmgMin = 35; diff --git a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java index 4d2a0a50e..db093f702 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java @@ -2,12 +2,21 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; +import com.hbm.blocks.generic.RedBarrel; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.lib.ModDamageSource; +import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.PotionEffect; + public class GunOSIPRFactory { public static GunConfiguration getOSIPRConfig() { @@ -24,13 +33,13 @@ public class GunOSIPRFactory { config.reloadType = GunConfiguration.RELOAD_FULL; config.allowsInfinity = true; config.crosshair = Crosshair.L_ARROWS; - config.durability = 10000; + config.durability = 50_000; config.reloadSound = "hbm:weapon.osiprReload"; config.firingSound = "hbm:weapon.osiprShoot"; config.reloadSoundEnd = false; - config.name = "Overwatch Standard Issue Pulse Rifle"; - config.manufacturer = "The Universal Union"; + config.name = "osipr"; + config.manufacturer = EnumGunManufacturer.COMBINE; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SPECIAL_OSIPR); @@ -59,24 +68,71 @@ public class GunOSIPRFactory { return config; } - static float inaccuracy = 5; + static float inaccuracy = 1.25F; public static BulletConfiguration getPulseConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.gun_osipr_ammo; + bullet.ammo = new ComparableStack(ModItems.gun_osipr_ammo); + bullet.ammoCount = 30; + bullet.doesRicochet = false; bullet.spread *= inaccuracy; - bullet.dmgMin = 3; - bullet.dmgMax = 5; + bullet.dmgMin = 15; + bullet.dmgMax = 21; bullet.trail = 2; return bullet; } + public static BulletConfiguration getPulseChargedConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = ModItems.gun_osipr_ammo2; + bullet.ammo = new ComparableStack(ModItems.gun_osipr_ammo2); + bullet.ricochetAngle = 360; + bullet.LBRC = 100; + bullet.HBRC = 100; + bullet.bounceMod = 1; + bullet.style = BulletConfiguration.STYLE_ORB; + bullet.damageType = ModDamageSource.s_combineball; + bullet.liveAfterImpact = true; + bullet.spread = 0; + bullet.gravity = 0; + bullet.maxAge = 150; + bullet.velocity = 2; + + bullet.bHurt = (ball, entity) -> { + if(entity instanceof EntityLivingBase) { + EntityLivingBase entityLiving = (EntityLivingBase) entity; + entity.addVelocity(ball.motionX / 2, ball.motionY / 2, ball.motionZ / 2); + + if(entity == ball.shooter) + return; + + if(entityLiving.getHealth() <= 1000) { + entityLiving.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 1, 0)); + entityLiving.setLastAttacker(ball.shooter); + } else if(entityLiving.getHealth() > 1000) { + ball.setDead(); + return; + } + + } + }; + + bullet.bRicochet = (ball, x, y, z) -> { + Block block = ball.worldObj.getBlock(x, y, z); + if(block instanceof RedBarrel) + ((RedBarrel) block).explode(ball.worldObj, x, y, z); + + }; + + bullet.bImpact = (ball, x, y, z) -> { + final Block block = ball.worldObj.getBlock(x, y, z); + if(block instanceof RedBarrel) + ((RedBarrel) block).explode(ball.worldObj, x, y, z); + + }; return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java b/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java index 52514d76b..c80cb8f1d 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.util.EnumChatFormatting; @@ -27,7 +28,7 @@ public class GunPoweredFactory { config.chargeRate = 2500; config.name = "LIY2001 Anti-Material Electromagnetic Rifle Prototype"; - config.manufacturer = "OxfordEM technologies"; + config.manufacturer = EnumGunManufacturer.OXFORD; config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.GLASS_EMRADIO); @@ -41,35 +42,6 @@ public class GunPoweredFactory { return config; } - /*public static BulletConfiguration getGlassBoltConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 30; - bullet.dmgMax = 40; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.plink = BulletConfiguration.PLINK_ENERGY; - bullet.trail = BulletConfiguration.BOLT_LASER; - bullet.dischargePerShot = 1000; - bullet.firingRate = 5; - bullet.modeName = "testMode"; - bullet.chatColour = EnumChatFormatting.RED; - - return bullet; - }*/ - public static BulletConfiguration getEMRadioConfig() { BulletConfiguration bullet = new BulletConfiguration(); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index c18b8a9d7..42df5aa30 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -10,7 +10,10 @@ import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletRicochetBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoRocket; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationKeyframe; import com.hbm.render.anim.BusAnimationSequence; @@ -40,8 +43,8 @@ public class GunRocketFactory { config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; config.reloadSoundEnd = false; - config.name = "Carl Gustav Recoilless Rifle M1"; - config.manufacturer = "Saab Bofors Dynamics"; + config.name = "gustav"; + config.manufacturer = EnumGunManufacturer.SAAB; config.comment.add("Fun fact of the day: Recoilless"); config.comment.add("rifles don't actually fire rockets."); @@ -103,8 +106,8 @@ public class GunRocketFactory { ) ); - config.name = "OpenQuadro Guided Man-Portable Missile Launcher"; - config.manufacturer = "Open Mann Co."; + config.name = "quadro"; + config.manufacturer = EnumGunManufacturer.MANN; config.comment.add("For the next three hundred years, people who needed to get to the second"); config.comment.add("floor used the only method available to them, which was rocket jumping."); config.comment.add("This persisted until 1857, when the young bearded inventor named"); @@ -134,8 +137,8 @@ public class GunRocketFactory { config.reloadDuration = 20; - config.name = "M1 Karl-Gerät"; - config.manufacturer = "???"; + config.name = "karl"; + config.manufacturer = EnumGunManufacturer.UNKNOWN; config.comment.clear(); config.config = new ArrayList(); @@ -159,8 +162,8 @@ public class GunRocketFactory { config.reloadDuration = 25; config.hasSights = true; - config.name = "Raketenpanzerbüchse 54"; - config.manufacturer = "Enzinger Union"; + config.name = "panz"; + config.manufacturer = EnumGunManufacturer.ENZINGER; config.comment.clear(); config.comment.add("Panzer-Shrek"); @@ -173,7 +176,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.STOCK)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 4F; @@ -186,7 +189,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_he; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.wear = 15; @@ -200,7 +203,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.wear = 15; @@ -215,7 +218,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_emp; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.EMP)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 2.5F; @@ -229,7 +232,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_sleek; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SLEEK)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 10F; @@ -244,7 +247,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_shrapnel; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SHRAPNEL)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 4F; @@ -258,7 +261,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_glare; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE)); bullet.velocity = 5.0F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -274,7 +277,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_nuclear; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)); bullet.velocity = 1.5F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -298,7 +301,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_toxic; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CHLORINE)); bullet.velocity = 1.5F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -314,7 +317,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_rpc; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.RPC)); bullet.velocity = 3.0F; bullet.dmgMin = 20; bullet.dmgMax = 25; @@ -328,7 +331,8 @@ public class GunRocketFactory { bullet.doesPenetrate = true; bullet.bRicochet = new IBulletRicochetBehavior() { - + + @Override public void behaveBlockRicochet(EntityBulletBase bullet, int bX, int bY, int bZ) { World worldObj = bullet.worldObj; if(!worldObj.isRemote && @@ -347,7 +351,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_phosphorus; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.wear = 15; @@ -364,7 +368,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_canister; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CANISTER)); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 2F; @@ -399,7 +403,7 @@ public class GunRocketFactory { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_rocket_digamma; + bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.DIGAMMA)); bullet.velocity = 0.5F; bullet.dmgMin = 10; bullet.dmgMax = 15; @@ -422,22 +426,6 @@ public class GunRocketFactory { spear.posY = bullet.posY + 100; bullet.worldObj.spawnEntityInWorld(spear); - - /*for(int i = 0; i < 250; i++) { - - double ix = bullet.posX + bullet.worldObj.rand.nextGaussian() * 15; - double iy = bullet.posY + bullet.worldObj.rand.nextGaussian() * 2; - double iz = bullet.posZ + bullet.worldObj.rand.nextGaussian() * 15; - - ExAttrib at = Vec3.createVectorHelper(ix - bullet.posX, 0, iz - bullet.posZ).lengthVector() < 20 ? ExAttrib.DIGAMMA_CIRCUIT : ExAttrib.DIGAMMA; - - new ExplosionNT(bullet.worldObj, bullet, ix, iy, iz, 7.5F) - .addAttrib(ExAttrib.NOHURT) - .addAttrib(ExAttrib.NOPARTICLE) - .addAttrib(ExAttrib.NODROP) - .addAttrib(ExAttrib.NOSOUND) - .addAttrib(at).explode(); - }*/ } }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java index 4a4b1f43a..9ace3b45f 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java @@ -3,13 +3,15 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.entity.projectile.EntityRocket; import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoStinger; import com.hbm.items.ModItems; +import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.entity.player.EntityPlayer; @@ -34,8 +36,8 @@ public class GunRocketHomingFactory { config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; config.reloadSoundEnd = false; - config.name = "FIM-92 Stinger man-portable air-defense system"; - config.manufacturer = "Raytheon Missile Systems"; + config.name = "stinger"; + config.manufacturer = EnumGunManufacturer.RAYTHEON; config.comment.add("Woosh, beep-beep-beep!"); config.config = new ArrayList(); @@ -66,8 +68,8 @@ GunConfiguration config = new GunConfiguration(); config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; config.reloadSoundEnd = false; - config.name = "The One Sky Stinger"; - config.manufacturer = "Equestria Missile Systems"; + config.name = "stingerOneSky"; + config.manufacturer = EnumGunManufacturer.EQUESTRIA; config.comment.add("Oh, I get it, because of the...nyeees!"); config.comment.add("It all makes sense now!"); config.comment.add(""); @@ -90,7 +92,7 @@ GunConfiguration config = new GunConfiguration(); public static BulletConfiguration getRocketStingerConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_stinger_rocket; + bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.STOCK)); bullet.dmgMin = 20; bullet.dmgMax = 25; bullet.explosive = 4F; @@ -126,7 +128,7 @@ GunConfiguration config = new GunConfiguration(); public static BulletConfiguration getRocketStingerHEConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_stinger_rocket_he; + bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE)); bullet.dmgMin = 30; bullet.dmgMax = 35; bullet.explosive = 8F; @@ -163,7 +165,7 @@ GunConfiguration config = new GunConfiguration(); public static BulletConfiguration getRocketStingerIncendiaryConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_stinger_rocket_incendiary; + bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.INCENDIARY)); bullet.dmgMin = 15; bullet.dmgMax = 20; bullet.explosive = 4F; @@ -200,7 +202,7 @@ GunConfiguration config = new GunConfiguration(); public static BulletConfiguration getRocketStingerNuclearConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_stinger_rocket_nuclear; + bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.NUCLEAR)); bullet.dmgMin = 50; bullet.dmgMax = 55; bullet.explosive = 15F; @@ -214,18 +216,21 @@ GunConfiguration config = new GunConfiguration(); if(!bullet.worldObj.isRemote) { - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + + if(player.getDistanceToEntity(bullet) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); bullet.setDead(); } @@ -237,7 +242,7 @@ GunConfiguration config = new GunConfiguration(); public static BulletConfiguration getRocketStingerBonesConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = ModItems.ammo_stinger_rocket_bones; + bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.BONES)); bullet.dmgMin = 20; bullet.dmgMax = 25; bullet.explosive = 8F; @@ -250,18 +255,21 @@ GunConfiguration config = new GunConfiguration(); if(!bullet.worldObj.isRemote) { - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + + if(player.getDistanceToEntity(bullet) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); bullet.setDead(); } diff --git a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java index be7f19592..b96155dea 100644 --- a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java +++ b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java @@ -2,7 +2,10 @@ package com.hbm.handler.imc; import java.util.HashMap; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; import net.minecraft.item.ItemStack; @@ -10,7 +13,7 @@ import net.minecraft.nbt.NBTTagCompound; public class IMCCrystallizer extends IMCHandler { - public static HashMap buffer = new HashMap(); + public static HashMap buffer = new HashMap(); @Override public void process(IMCMessage message) { @@ -28,13 +31,24 @@ public class IMCCrystallizer extends IMCHandler { NBTTagCompound input = data.getCompoundTag("input"); ItemStack in = ItemStack.loadItemStackFromNBT(input); + int time = data.getInteger("duration"); + FluidStack acid = new FluidStack(Fluids.fromID(data.getInteger("acid")), data.getInteger("amount")); + + if(time <= 0) + time = 600; + + if(acid.type == Fluids.NONE) + acid = new FluidStack(Fluids.ACID, 500); + + CrystallizerRecipe recipe = new CrystallizerRecipe(out, time, acid); + if(in != null) { - buffer.put(new RecipesCommon.ComparableStack(in), out); + buffer.put(new RecipesCommon.ComparableStack(in), recipe); } else { String dict = data.getString("oredict"); if(!dict.isEmpty()) { - buffer.put(dict, out); + buffer.put(dict, recipe); } else { this.printError(message, "Input stack could not be read!"); } diff --git a/src/main/java/com/hbm/handler/imc/package-info.java b/src/main/java/com/hbm/handler/imc/package-info.java index 996427811..c12f23192 100644 --- a/src/main/java/com/hbm/handler/imc/package-info.java +++ b/src/main/java/com/hbm/handler/imc/package-info.java @@ -20,9 +20,14 @@ package com.hbm.handler.imc; - Set another tag compound like the output called "output". This will make the input a fixed item. - Set a string called "oredict". This will make the input an ore dict entry and allow processing of genericized items. + [OPTIONAL] + The input has a few parameters that can be added: + - Setting an integer "acid" will change the acid requirement to the fluid with that ID, in this case "amount" also has to be set to determine the fluid amount in mB. The default uses 500mB of hydrogen peroxide. + - Setting an integer "duration" will change the base process time of this recipe in ticks, the default is 600 (30s). + EXAMPLES: - Recipe with fixed item, acidizing an alloy chestplate into 8 ingots: + Recipe with fixed item, acidizing an alloy chestplate into 8 ingots, taking 500 ticks and using 50mB of steam: NBTTagCompound msg0 = new NBTTagCompound(); NBTTagCompound ing0 = new NBTTagCompound(); new ItemStack(ModItems.alloy_plate).writeToNBT(ing0); @@ -30,9 +35,12 @@ package com.hbm.handler.imc; NBTTagCompound out0 = new NBTTagCompound(); new ItemStack(ModItems.ingot_advanced_alloy, 8).writeToNBT(out0); msg0.setTag("output", out0); + msg0.setInteger("acid", 2); + msg0.setInteger("amount", 50); + msg0.setInteger("duration", 500); FMLInterModComms.sendMessage("hbm", "crystallizer", msg0); - Recipe with an ore dict item, acidizing all "plateSteel" into a steel ingot: + Recipe with an ore dict item, acidizing all "plateSteel" into a steel ingot, with all optional values omitted: NBTTagCompound msg1 = new NBTTagCompound(); msg1.setString("oredict", "plateSteel"); NBTTagCompound out1 = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index 7785087e0..a3789f8cd 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -1,191 +1,27 @@ package com.hbm.handler.nei; import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import com.hbm.inventory.fluid.Fluids; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; +public class CrystallizerRecipeHandler extends NEIUniversalHandler { -public class CrystallizerRecipeHandler extends TemplateRecipeHandler { - - public static ArrayList batteries; - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - PositionedStack input; - PositionedStack acid; - PositionedStack result; - - public RecipeSet(Object input, ItemStack result) { - this.input = new PositionedStack(input, 75, 24); - this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired), 39, 24); - this.result = new PositionedStack(result, 135, 24); - } - - @Override - public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(input, acid)); - } - - @Override - public PositionedStack getOtherStack() { - return batteries.get((cycleticks / 48) % batteries.size()).stack; - } - - @Override - public PositionedStack getResult() { - return result; - } - } - - public static class Fuel { - public Fuel(ItemStack ingred) { - - this.stack = new PositionedStack(ingred, 3, 42, false); - } - - public PositionedStack stack; - } - - @Override - public String getRecipeName() { - return "Ore Acidizer"; + public CrystallizerRecipeHandler() { + super("Acidizer", ModBlocks.machine_crystallizer, CrystallizerRecipes.getRecipes()); } @Override - public String getGuiTexture() { - return GUICrystallizer.texture.toString(); + public String getKey() { + return "ntmCrystallizer"; } - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - - if ((outputId.equals("hbm_crystallizer")) && getClass() == CrystallizerRecipeHandler.class) { - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(recipe.getKey() instanceof ItemStack && ((ItemStack)recipe.getKey()).getItem() == ModItems.scrap_plastic) - continue; - - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - } - - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)recipe.getValue(), result)) { - - if(recipe.getKey() instanceof ItemStack && ((ItemStack)recipe.getKey()).getItem() == ModItems.scrap_plastic) - continue; - - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - } - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - - if ((inputId.equals("hbm_crystallizer")) && getClass() == CrystallizerRecipeHandler.class) { - - loadCraftingRecipes("hbm_crystallizer", new Object[0]); - - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - - if(ingredient.getItem() == ModItems.scrap_plastic) - return; - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, ItemFluidIcon.addQuantity( - new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired))) { - - if(recipe.getKey() instanceof ItemStack) { - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - - } else if (recipe.getKey() instanceof ArrayList) { - for(Object o : (ArrayList)recipe.getKey()) { - ItemStack stack = (ItemStack)o; - this.arecipes.add(new RecipeSet(stack, (ItemStack) recipe.getValue())); - } - } - - } else if(recipe.getKey() instanceof ItemStack) { - - if (NEIServerUtils.areStacksSameTypeCrafting(ingredient, (ItemStack)recipe.getKey())) - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - - } else if (recipe.getKey() instanceof ArrayList) { - - for(Object o : (ArrayList)recipe.getKey()) { - ItemStack stack = (ItemStack)o; - - if (NEIServerUtils.areStacksSameTypeCrafting(ingredient, stack)) - this.arecipes.add(new RecipeSet(stack, (ItemStack) recipe.getValue())); - } - } - } - } - - @Override - public Class getGuiClass() { - return GUICrystallizer.class; - } - @Override public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(104 - 5, 34 - 11, 24, 18), "hbm_crystallizer")); + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(80 - 5, 47 - 11, 27, 12), "ntmCrystallizer")); + guiGui.add(GUICrystallizer.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } - - @Override - public void drawExtras(int recipe) { - - drawProgressBar(99, 23, 192, 0, 22, 16, 600, 0); - drawProgressBar(3, 6, 176, 0, 16, 34, 60, 7); - } - - @Override - public TemplateRecipeHandler newInstance() { - - if(batteries == null) - batteries = new ArrayList(); - - for(ItemStack i : MachineRecipes.instance().getBatteries()) { - batteries.add(new Fuel(i)); - } - return super.newInstance(); - } - } diff --git a/src/main/java/com/hbm/handler/nei/MixerHandler.java b/src/main/java/com/hbm/handler/nei/MixerHandler.java new file mode 100644 index 000000000..320cde187 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/MixerHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMixer; +import com.hbm.inventory.recipes.MixerRecipes; + +public class MixerHandler extends NEIUniversalHandler { + + public MixerHandler() { + super("Mixer", ModBlocks.machine_mixer, MixerRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmMixer"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(57, 25, 52, 44), "ntmMixer")); + guiGui.add(GUIMixer.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/hazard/HazardSystem.java b/src/main/java/com/hbm/hazard/HazardSystem.java index 35efa397c..3df3590a7 100644 --- a/src/main/java/com/hbm/hazard/HazardSystem.java +++ b/src/main/java/com/hbm/hazard/HazardSystem.java @@ -225,9 +225,13 @@ public class HazardSystem { public static void updateDroppedItem(EntityItem entity) { - List hazards = getHazardsFromStack(entity.getEntityItem()); + ItemStack stack = entity.getEntityItem(); + + if(entity.isDead || stack == null || stack.getItem() == null || stack.stackSize <= 0) return; + + List hazards = getHazardsFromStack(stack); for(HazardEntry entry : hazards) { - entry.type.updateEntity(entity, HazardModifier.evalAllModifiers(entity.getEntityItem(), null, entry.baseLevel, entry.mods)); + entry.type.updateEntity(entity, HazardModifier.evalAllModifiers(stack, null, entry.baseLevel, entry.mods)); } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index d80e66143..df00c0ced 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -19,9 +19,11 @@ import com.hbm.hazard.HazardEntry; import com.hbm.hazard.HazardRegistry; import com.hbm.hazard.HazardSystem; import com.hbm.inventory.material.MaterialShapes; +import com.hbm.items.ModItems; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -359,9 +361,9 @@ public class OreDictManager { KNO .dust(niter) .block(block_niter) .ore(ore_niter); F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite); LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite); - COALCOKE .gem(fromOne(coke, EnumCokeType.COAL)); - PETCOKE .gem(fromOne(coke, EnumCokeType.PETROLEUM)); - LIGCOKE .gem(fromOne(coke, EnumCokeType.LIGNITE)); + COALCOKE .gem(fromOne(coke, EnumCokeType.COAL)) .block(fromOne(block_coke, EnumCokeType.COAL)); + PETCOKE .gem(fromOne(coke, EnumCokeType.PETROLEUM)) .block(fromOne(block_coke, EnumCokeType.PETROLEUM)); + LIGCOKE .gem(fromOne(coke, EnumCokeType.LIGNITE)) .block(fromOne(block_coke, EnumCokeType.LIGNITE)); CINNABAR .crystal(cinnebar) .gem(cinnebar) .ore(ore_cinnebar, ore_depth_cinnebar); BORAX .dust(powder_borax) .ore(ore_depth_borax); VOLCANIC .gem(gem_volcanic) .ore(basalt_gem); @@ -426,7 +428,7 @@ public class OreDictManager { ANY_HIGHEXPLOSIVE .ingot(ball_tnt); ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth); for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); } - ANY_COKE .gem(fromAll(coke, EnumCokeType.class)); + ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth); OreDictionary.registerOre(KEY_OIL_TAR, fromOne(oil_tar, EnumTarType.CRUDE)); @@ -447,6 +449,10 @@ public class OreDictManager { OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_bismuth); OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); + + for(EnumBedrockOre ore : EnumBedrockOre.values()) { + OreDictionary.registerOre("ore" + ore.oreName, new ItemStack(ModItems.ore_enriched, 1, ore.ordinal())); + } OreDictionary.registerOre("itemRubber", ingot_rubber); @@ -624,6 +630,15 @@ public class OreDictManager { } return stacks; } + public static Object[] fromAll(Block block, Class en) { + Enum[] vals = en.getEnumConstants(); + Object[] stacks = new Object[vals.length]; + + for(int i = 0; i < vals.length; i++) { + stacks[i] = new ItemStack(block, 1, vals[i].ordinal()); + } + return stacks; + } public DictFrame any(Object... thing) { return makeObject(ANY, thing); diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java index 35ca3c64b..61196d62a 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java @@ -2,8 +2,10 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotMachineOutput; import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; +import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -17,22 +19,29 @@ public class ContainerCrystallizer extends Container { public ContainerCrystallizer(InventoryPlayer invPlayer, TileEntityMachineCrystallizer tedf) { diFurnace = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 1, 8, 53)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 140, 35)); - this.addSlotToContainer(new Slot(tedf, 3, 26, 17)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 4, 26, 53)); - this.addSlotToContainer(new SlotUpgrade(tedf, 5, 98, 17)); - this.addSlotToContainer(new SlotUpgrade(tedf, 6, 116, 17)); + //Input + this.addSlotToContainer(new Slot(tedf, 0, 62, 45)); + //Battery + this.addSlotToContainer(new Slot(tedf, 1, 152, 72)); + //Output + this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 113, 45)); + //Fluid slots + this.addSlotToContainer(new Slot(tedf, 3, 17, 18)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 4, 17, 54)); + //Upgrades + this.addSlotToContainer(new SlotUpgrade(tedf, 5, 80, 18)); + this.addSlotToContainer(new SlotUpgrade(tedf, 6, 98, 18)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 7, 35, 72)); 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)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); } } @@ -51,11 +60,20 @@ public class ContainerCrystallizer extends Container { return null; } } else { - - if(!this.mergeItemStack(var5, 0, 2, false)) - if(!this.mergeItemStack(var5, 3, 4, false)) - if(!this.mergeItemStack(var5, 5, 7, false)) - return null; + + if(var3.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 7, 8, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } } if(var5.stackSize == 0) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java index 83c78e224..47b365f8e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineExcavator.java @@ -18,15 +18,16 @@ public class ContainerMachineExcavator extends Container { public ContainerMachineExcavator(InventoryPlayer invPlayer, TileEntityMachineExcavator tile) { this.excavator = tile; - //Battery + //Battery: 0 this.addSlotToContainer(new Slot(tile, 0, 220, 72)); - //Fluid ID + //Fluid ID: 1 this.addSlotToContainer(new Slot(tile, 1, 202, 72)); - //Upgrades + //Upgrades: 2-4 for(int i = 0; i < 3; i++) { this.addSlotToContainer(new Slot(tile, 2 + i, 136 + i * 18, 75)); } + //Buffer: 5-13 for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { this.addSlotToContainer(new SlotMachineOutput(tile, 5 + j + i * 3, 136 + j * 18, 5 + i * 18)); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMixer.java b/src/main/java/com/hbm/inventory/container/ContainerMixer.java new file mode 100644 index 000000000..dcbcdd17b --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMixer.java @@ -0,0 +1,90 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.TileEntityMachineMixer; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMixer extends Container { + + private TileEntityMachineMixer mixer; + + public ContainerMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { + this.mixer = mixer; + + //Battery + this.addSlotToContainer(new Slot(mixer, 0, 23, 77)); + //Item Input + this.addSlotToContainer(new Slot(mixer, 1, 43, 77)); + //Fluid ID + this.addSlotToContainer(new Slot(mixer, 2, 117, 77)); + //Upgrades + this.addSlotToContainer(new Slot(mixer, 3, 137, 24)); + this.addSlotToContainer(new Slot(mixer, 4, 137, 42)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 180)); + } + } + + @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 <= 4) { + if(!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 2, 3, false)) { + return null; + } + } else if(var3.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(var5, 3, 4, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return mixer.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java b/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java index e9b03cea8..5794c5382 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java @@ -14,7 +14,7 @@ import net.minecraft.util.ResourceLocation; public class GUICrystallizer extends GuiInfoContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_crystallizer.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_crystallizer_alt.png"); private TileEntityMachineCrystallizer acidomatic; public GUICrystallizer(InventoryPlayer invPlayer, TileEntityMachineCrystallizer acidomatic) { @@ -22,22 +22,22 @@ public class GUICrystallizer extends GuiInfoContainer { this.acidomatic = acidomatic; this.xSize = 176; - this.ySize = 168; + this.ySize = 204; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 51 - 34, 16, 34, acidomatic.power, acidomatic.maxPower); - acidomatic.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 17, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, acidomatic.power, acidomatic.maxPower); + acidomatic.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52); String[] upgradeText = new String[4]; upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness"); upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 87, guiTop + 21, 8, 8, guiLeft + 200, guiTop + 45, upgradeText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 117, guiTop + 22, 8, 8, guiLeft + 200, guiTop + 45, upgradeText); } @Override @@ -54,14 +54,14 @@ public class GUICrystallizer extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int)acidomatic.getPowerScaled(34); - drawTexturedModalRect(guiLeft + 8, guiTop + 51 - i, 176, 34 - i, 16, i); + int i = (int)acidomatic.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - i, 176, 64 - i, 16, i); - int j = acidomatic.getProgressScaled(23); - drawTexturedModalRect(guiLeft + 104, guiTop + 34, 192, 0, j, 16); + int j = acidomatic.getProgressScaled(28); + drawTexturedModalRect(guiLeft + 80, guiTop + 47, 176, 0, j, 12); - this.drawInfoPanel(guiLeft + 87, guiTop + 21, 8, 8, 8); + this.drawInfoPanel(guiLeft + 117, guiTop + 22, 8, 8, 8); - acidomatic.tank.renderTank(guiLeft + 44, guiTop + 69, this.zLevel, 16, 52); + acidomatic.tank.renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java index 971f18f43..0197e0409 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java @@ -69,9 +69,20 @@ public class GUIMachineExcavator extends GuiInfoContainer { drawTexturedModalRect(guiLeft, guiTop, 0, 0, 242, 96); drawTexturedModalRect(guiLeft + 33, guiTop + 104, 33, 104, 176, 100); + int i = (int) (drill.getPower() * 52 / drill.getMaxPower()); + drawTexturedModalRect(guiLeft + 220, guiTop + 70 - i, 229, 156 - i, 16, i); + + if(drill.getPower() > drill.getPowerConsumption()) { + drawTexturedModalRect(guiLeft + 224, guiTop + 4, 239, 156, 9, 12); + } + + if(drill.getInstalledDrill() == null && System.currentTimeMillis() % 1000 < 500) { + drawTexturedModalRect(guiLeft + 171, guiTop + 74, 209, 154, 18, 18); + } + if(drill.enableDrill) { drawTexturedModalRect(guiLeft + 6, guiTop + 42, 209, 114, 20, 40); - if(drill.getInstalledDrill() != null) drawTexturedModalRect(guiLeft + 11, guiTop + 5, 209, 104, 10, 10); + if(drill.getInstalledDrill() != null && drill.getPower() >= drill.getPowerConsumption()) drawTexturedModalRect(guiLeft + 11, guiTop + 5, 209, 104, 10, 10); else if(System.currentTimeMillis() % 1000 < 500) drawTexturedModalRect(guiLeft + 11, guiTop + 5, 219, 104, 10, 10); } @@ -97,5 +108,7 @@ public class GUIMachineExcavator extends GuiInfoContainer { if(drill.canSilkTouch()) drawTexturedModalRect(guiLeft + 107, guiTop + 5, 209, 104, 10, 10); else if(System.currentTimeMillis() % 1000 < 500) drawTexturedModalRect(guiLeft + 107, guiTop + 5, 219, 104, 10, 10); } + + drill.tank.renderTank(guiLeft + 202, guiTop + 70, this.zLevel, 16, 52); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java new file mode 100644 index 000000000..ae109391e --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -0,0 +1,64 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMixer; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineMixer; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMixer extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_mixer.png"); + private TileEntityMachineMixer mixer; + + public GUIMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { + super(new ContainerMixer(player, mixer)); + this.mixer = mixer; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower()); + + mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52); + mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52); + mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.mixer.hasCustomInventoryName() ? this.mixer.getInventoryName() : I18n.format(this.mixer.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 interp, int x, int y) { + 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) (mixer.getPower() * 53 / mixer.getMaxPower()); + drawTexturedModalRect(guiLeft + 23, guiTop + 75 - i, 176, 52 - i, 16, i); + + if(mixer.processTime > 0 && mixer.progress > 0) { + int j = mixer.progress * 53 / mixer.processTime; + drawTexturedModalRect(guiLeft + 62, guiTop + 36, 192, 0, j, 44); + } + + mixer.tanks[0].renderTank(guiLeft + 43, guiTop + 75, this.zLevel, 7, 52); + mixer.tanks[1].renderTank(guiLeft + 52, guiTop + 75, this.zLevel, 7, 52); + mixer.tanks[2].renderTank(guiLeft + 117, guiTop + 75, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java b/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java new file mode 100644 index 000000000..f2188952e --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java @@ -0,0 +1,20 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUITurretSentry extends GUITurretBase { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_sentry.png"); + + public GUITurretSentry(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); + } + + protected ResourceLocation getTexture() { + return texture; + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index e6110c28f..d3e40bc3b 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -26,8 +26,10 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemAssemblyTemplate; +import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.main.MainRegistry; @@ -196,8 +198,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); makeRecipe(new ComparableStack(ModItems.fuel_tank_small, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 6, Fluids.ETHANOL.getID()), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2), },100); - makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); - makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 36, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); + makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 8, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); + makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); makeRecipe(new ComparableStack(ModItems.thruster_small, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new OreDictStack(W.ingot(), 4), new ComparableStack(ModItems.wire_aluminium, 4), },100); makeRecipe(new ComparableStack(ModItems.thruster_medium, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(W.ingot(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.wire_copper, 16), },150); makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new OreDictStack(DURA.ingot(), 16), new OreDictStack(W.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.circuit_red_copper, 1), },200); @@ -498,6 +500,45 @@ public class AssemblerRecipes { new OreDictStack(NB.ingot(), 16), new ComparableStack(ModItems.bolt_compound, 16) }, 200); + + makeRecipe(new ComparableStack(ModBlocks.machine_excavator, 1), new AStack[] { + new ComparableStack(Blocks.stonebrick, 8), + new OreDictStack(STEEL.ingot(), 16), + new OreDictStack(IRON.ingot(), 16), + new ComparableStack(ModBlocks.steel_scaffold, 16), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.tank_steel, 1), + new ComparableStack(ModItems.circuit_red_copper, 1) + }, 300); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new AStack[] { + new OreDictStack(STEEL.ingot(), 12), + new OreDictStack(W.ingot(), 4) + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), + new OreDictStack(DIAMOND.dust(), 16) + }, 100); + + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new AStack[] { + new OreDictStack(DURA.ingot(), 12), + new OreDictStack(ANY_PLASTIC.ingot(), 12), + new OreDictStack(TI.ingot(), 8) + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), + new OreDictStack(DIAMOND.dust(), 24) + }, 100); + + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new AStack[] { + new OreDictStack(DESH.ingot(), 16), + new OreDictStack(RUBBER.ingot(), 12), + new OreDictStack(NB.ingot(), 4) + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), + new OreDictStack(DIAMOND.dust(), 32) + }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { new OreDictStack(STEEL.plate(), 12), new OreDictStack(RUBBER.ingot(), 4), @@ -572,7 +613,7 @@ public class AssemblerRecipes { new OreDictStack(ASBESTOS.ingot(), 8) }, 200); - makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2), new AStack[] { + makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), new ComparableStack(ModItems.primer_50, 5), @@ -582,7 +623,7 @@ public class AssemblerRecipes { new OreDictStack(U238.ingot(), 1) }, 60); - makeRecipe(new ComparableStack(ModItems.ammo_75bolt_incendiary, 2), new AStack[] { + makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), new ComparableStack(ModItems.primer_50, 5), @@ -592,7 +633,7 @@ public class AssemblerRecipes { new OreDictStack(P_WHITE.ingot(), 3) }, 60); - makeRecipe(new ComparableStack(ModItems.ammo_75bolt_he, 2), new AStack[] { + makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] { new OreDictStack(STEEL.plate(), 2), new OreDictStack(CU.plate(), 1), new ComparableStack(ModItems.primer_50, 5), diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 643c8c58d..67a0a2113 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -18,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import net.minecraft.init.Blocks; @@ -298,6 +299,28 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(Items.dye, 1, 15), //temp new ItemStack(ModItems.dust) }); + for(EnumBedrockOre ore : EnumBedrockOre.values()) { + int i = ore.ordinal(); + + recipes.put(new ComparableStack(ModItems.ore_bedrock, 1, i), new ItemStack[] { + new ItemStack(ModItems.ore_centrifuged, 1, i), + new ItemStack(ModItems.ore_centrifuged, 1, i), + new ItemStack(ModItems.ore_centrifuged, 1, i), + new ItemStack(ModItems.ore_centrifuged, 1, i) }); + + recipes.put(new ComparableStack(ModItems.ore_cleaned, 1, i), new ItemStack[] { + new ItemStack(ModItems.ore_separated, 1, i), + new ItemStack(ModItems.ore_separated, 1, i), + new ItemStack(ModItems.ore_separated, 1, i), + new ItemStack(ModItems.ore_separated, 1, i) }); + + recipes.put(new ComparableStack(ModItems.ore_purified, 1, i), new ItemStack[] { + new ItemStack(ModItems.ore_enriched, 1, i), + new ItemStack(ModItems.ore_enriched, 1, i), + new ItemStack(ModItems.ore_enriched, 1, i), + new ItemStack(ModItems.ore_enriched, 1, i) }); + } + List quartz = OreDictionary.getOres("crystalCertusQuartz"); if(quartz != null && !quartz.isEmpty()) { @@ -425,6 +448,6 @@ public class CentrifugeRecipes extends SerializableRecipe { @Override public String getComment() { - return "Outputs have to be an array of four item stacks. The centrifuge can't handle recipes with a smaller output as of now."; + return "Outputs have to be an array of up to four item stacks. Fewer aren't used by default recipes, but should work anyway."; } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index ae462ead1..af984ce03 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -2,19 +2,25 @@ package com.hbm.inventory.recipes; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.handler.imc.IMCCrystallizer; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -23,66 +29,76 @@ import net.minecraftforge.oredict.OreDictionary; public class CrystallizerRecipes { //'Object' is either a ComparableStack or the key for the ore dict - private static HashMap recipes = new HashMap(); + private static HashMap recipes = new HashMap(); public static void register() { - recipes.put(COAL.ore(), new ItemStack(ModItems.crystal_coal)); - recipes.put(IRON.ore(), new ItemStack(ModItems.crystal_iron)); - recipes.put(GOLD.ore(), new ItemStack(ModItems.crystal_gold)); - recipes.put(REDSTONE.ore(), new ItemStack(ModItems.crystal_redstone)); - recipes.put(LAPIS.ore(), new ItemStack(ModItems.crystal_lapis)); - recipes.put(DIAMOND.ore(), new ItemStack(ModItems.crystal_diamond)); - recipes.put(U.ore(), new ItemStack(ModItems.crystal_uranium)); - recipes.put(TH232.ore(), new ItemStack(ModItems.crystal_thorium)); - recipes.put(PU.ore(), new ItemStack(ModItems.crystal_plutonium)); - recipes.put(TI.ore(), new ItemStack(ModItems.crystal_titanium)); - recipes.put(S.ore(), new ItemStack(ModItems.crystal_sulfur)); - recipes.put(KNO.ore(), new ItemStack(ModItems.crystal_niter)); - recipes.put(CU.ore(), new ItemStack(ModItems.crystal_copper)); - recipes.put(W.ore(), new ItemStack(ModItems.crystal_tungsten)); - recipes.put(AL.ore(), new ItemStack(ModItems.crystal_aluminium)); - recipes.put(F.ore(), new ItemStack(ModItems.crystal_fluorite)); - recipes.put(BE.ore(), new ItemStack(ModItems.crystal_beryllium)); - recipes.put(PB.ore(), new ItemStack(ModItems.crystal_lead)); - recipes.put(SA326.ore(), new ItemStack(ModItems.crystal_schrabidium)); - recipes.put(LI.ore(), new ItemStack(ModItems.crystal_lithium)); - recipes.put(STAR.ore(), new ItemStack(ModItems.crystal_starmetal)); - recipes.put(CO.ore(), new ItemStack(ModItems.crystal_cobalt)); - - recipes.put("oreRareEarth", new ItemStack(ModItems.crystal_rare)); - recipes.put("oreCinnabar", new ItemStack(ModItems.crystal_cinnebar)); - - recipes.put(new ComparableStack(ModBlocks.ore_nether_fire), new ItemStack(ModItems.crystal_phosphorus)); - recipes.put(new ComparableStack(ModBlocks.ore_tikite), new ItemStack(ModItems.crystal_trixite)); - recipes.put(new ComparableStack(ModBlocks.gravel_diamond), new ItemStack(ModItems.crystal_diamond)); - recipes.put(SRN.ingot(), new ItemStack(ModItems.crystal_schraranium)); - - recipes.put("sand", new ItemStack(ModItems.ingot_fiberglass)); - recipes.put(REDSTONE.block(), new ItemStack(ModItems.ingot_mercury)); - recipes.put(CINNABAR.crystal(), new ItemStack(ModItems.ingot_mercury, 3)); - recipes.put(BORAX.dust(), new ItemStack(ModItems.powder_boron_tiny, 3)); - recipes.put(COAL.block(), new ItemStack(ModBlocks.block_graphite)); + int baseTime = 600; + int utilityTime = 100; + FluidStack sulfur = new FluidStack(Fluids.SULFURIC_ACID, 500); - recipes.put(new ComparableStack(Blocks.cobblestone), new ItemStack(ModBlocks.reinforced_stone)); - recipes.put(new ComparableStack(ModBlocks.gravel_obsidian), new ItemStack(ModBlocks.brick_obsidian)); - recipes.put(new ComparableStack(Items.rotten_flesh), new ItemStack(Items.leather)); - recipes.put(new ComparableStack(ModItems.coal_infernal), new ItemStack(ModItems.solid_fuel)); - recipes.put(new ComparableStack(ModBlocks.stone_gneiss), new ItemStack(ModItems.powder_lithium)); + registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime)); + registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime)); + registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime)); + registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime)); + registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); + registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); + registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime, sulfur)); + registerRecipe(TH232.ore(), new CrystallizerRecipe(ModItems.crystal_thorium, baseTime, sulfur)); + registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime, sulfur)); + registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime, sulfur)); + registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); + registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime)); + registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime)); + registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime, sulfur)); + registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime)); + registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime)); + registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime)); + registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime)); + registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime, sulfur)); + registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime, sulfur)); + registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime, sulfur)); + registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime, sulfur)); - recipes.put(DIAMOND.dust(), new ItemStack(Items.diamond)); - recipes.put(EMERALD.dust(), new ItemStack(Items.emerald)); - recipes.put(LAPIS.dust(), new ItemStack(Items.dye, 1, 4)); - recipes.put(new ComparableStack(ModItems.powder_semtex_mix), new ItemStack(ModItems.ingot_semtex)); - recipes.put(new ComparableStack(ModItems.powder_desh_ready), new ItemStack(ModItems.ingot_desh)); - recipes.put(new ComparableStack(ModItems.powder_meteorite), new ItemStack(ModItems.fragment_meteorite, 1)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime, sulfur)); + registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); - recipes.put(new ComparableStack(ModItems.meteorite_sword_treated), new ItemStack(ModItems.meteorite_sword_etched, 1)); + registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime)); + registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime, sulfur)); + registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); + registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); - recipes.put(new ComparableStack(ModItems.powder_impure_osmiridium), new ItemStack(ModItems.crystal_osmiridium)); + registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); + registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); + registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime, sulfur)); + registerRecipe(COAL.block(), new CrystallizerRecipe(ModBlocks.block_graphite, baseTime)); + + registerRecipe(new ComparableStack(Blocks.cobblestone), new CrystallizerRecipe(ModBlocks.reinforced_stone, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.gravel_obsidian), new CrystallizerRecipe(ModBlocks.brick_obsidian, utilityTime)); + registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); + registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + + registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); + registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); + registerRecipe(LAPIS.dust(), new CrystallizerRecipe(new ItemStack(Items.dye, 1, 4), utilityTime)); + registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); + + registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime, new FluidStack(Fluids.SCHRABIDIC, 1_000))); for(int i = 0; i < ScrapType.values().length; i++) { - recipes.put(new ComparableStack(ModItems.scrap_plastic, 1, i), new ItemStack(ModItems.circuit_star_piece, 1, i)); + registerRecipe(new ComparableStack(ModItems.scrap_plastic, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.circuit_star_piece, 1, i), baseTime)); + } + + for(EnumBedrockOre ore : EnumBedrockOre.values()) { + int i = ore.ordinal(); + + registerRecipe(new ComparableStack(ModItems.ore_centrifuged, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_cleaned, 1, i), baseTime, sulfur)); + registerRecipe(new ComparableStack(ModItems.ore_separated, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_purified, 1, i), baseTime)); } List quartz = OreDictionary.getOres("crystalCertusQuartz"); @@ -90,7 +106,7 @@ public class CrystallizerRecipes { if(quartz != null && !quartz.isEmpty()) { ItemStack qItem = quartz.get(0).copy(); qItem.stackSize = 12; - recipes.put("oreCertusQuartz", qItem); + registerRecipe("oreCertusQuartz", new CrystallizerRecipe(qItem, baseTime)); } if(!IMCCrystallizer.buffer.isEmpty()) { @@ -100,7 +116,7 @@ public class CrystallizerRecipes { } } - public static ItemStack getOutput(ItemStack stack) { + public static CrystallizerRecipe getOutput(ItemStack stack) { if(stack == null || stack.getItem() == null) return null; @@ -108,34 +124,60 @@ public class CrystallizerRecipes { ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage()); if(recipes.containsKey(comp)) - return recipes.get(comp).copy(); + return recipes.get(comp); String[] dictKeys = comp.getDictKeys(); for(String key : dictKeys) { if(recipes.containsKey(key)) - return recipes.get(key).copy(); + return recipes.get(key); } return null; } - public static Map getRecipes() { + public static HashMap getRecipes() { - Map recipes = new HashMap(); + HashMap recipes = new HashMap(); - for(Entry entry : CrystallizerRecipes.recipes.entrySet()) { + for(Entry entry : CrystallizerRecipes.recipes.entrySet()) { + + CrystallizerRecipe recipe = entry.getValue(); if(entry.getKey() instanceof String) { - List ingredients = OreDictionary.getOres((String)entry.getKey()); - recipes.put(ingredients, entry.getValue()); + OreDictStack stack = new OreDictStack((String) entry.getKey()); + recipes.put(new Object[] {ItemFluidIcon.make(recipe.acid), stack}, recipe.output); } else { - recipes.put(((ComparableStack)entry.getKey()).toStack(), entry.getValue()); + ComparableStack stack = (ComparableStack) entry.getKey(); + if(stack.item == ModItems.scrap_plastic) continue; + recipes.put(new Object[] {ItemFluidIcon.make(recipe.acid), stack}, recipe.output); } } return recipes; } - + + // NYI + public static void registerRecipe(Object input, CrystallizerRecipe recipe) { + recipes.put(input, recipe); + } + + public static class CrystallizerRecipe { + public FluidStack acid; + public int duration; + public ItemStack output; + + public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(Item output, int duration) { this(new ItemStack(output), duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(ItemStack output, int duration) { this(output, duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(Block output, int duration, FluidStack acid) { this(new ItemStack(output), duration, acid); } + public CrystallizerRecipe(Item output, int duration, FluidStack acid) { this(new ItemStack(output), duration, acid); } + + public CrystallizerRecipe(ItemStack output, int duration, FluidStack acid) { + this.output = output; + this.duration = duration; + this.acid = acid; + } + } } diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index ada0f7399..39fc4c54b 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -8,6 +8,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; import net.minecraft.init.Items; @@ -44,17 +45,17 @@ public class MagicRecipes { recipes.add(new MagicRecipe(new ItemStack(ModItems.mysteryshovel), new ComparableStack(Items.iron_shovel), new ComparableStack(Items.bone), new ComparableStack(ModItems.ingot_starmetal), new ComparableStack(ModItems.ducttape))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_electronium), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.ingot_dineutronium), new ComparableStack(ModItems.ingot_dineutronium))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44_pip), + recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.PIP.ordinal()), new ComparableStack(ModItems.ammo_44), new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.powder_magic))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44_bj), + recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.BJ.ordinal()), new ComparableStack(ModItems.ammo_44), new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.powder_desh))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44_silver), + recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.SILVER.ordinal()), new ComparableStack(ModItems.ammo_44), new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.powder_magic), @@ -90,7 +91,7 @@ public class MagicRecipes { new ComparableStack(ModItems.ingot_polymer), new OreDictStack("plateGold"))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart_nuclear, 4), + recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), new ComparableStack(ModItems.plate_polymer), new ComparableStack(ModItems.nugget_pu239), new ComparableStack(ModItems.circuit_aluminium))); diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java new file mode 100644 index 000000000..f2dab2691 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.OreDictManager.KNO; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; + +public class MixerRecipes { + + public static HashMap recipes = new HashMap(); + + public static void register() { + recipes.put(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust()))); + recipes.put(Fluids.CRYOGEL, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.COOLANT, 1_800)).setSolid(new ComparableStack(ModItems.powder_ice))); + recipes.put(Fluids.NITAN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 600)).setStack2(new FluidStack(Fluids.MERCURY, 200)).setSolid(new ComparableStack(ModItems.powder_nitan_mix))); + recipes.put(Fluids.FRACKSOL, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.WATER, 1_000)).setStack2(new FluidStack(Fluids.PETROLEUM, 100)).setSolid(new OreDictStack(OreDictManager.S.dust()))); + recipes.put(Fluids.ENDERJUICE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.XPJUICE, 500)).setSolid(new OreDictStack(OreDictManager.DIAMOND.dust()))); + + recipes.put(Fluids.LUBRICANT, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500))); + recipes.put(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); + + recipes.put(Fluids.PETROIL_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 800)).setSolid(new ComparableStack(ModItems.antiknock))); + recipes.put(Fluids.GASOLINE_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 800)).setSolid(new ComparableStack(ModItems.antiknock))); + recipes.put(Fluids.COALGAS_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 800)).setSolid(new ComparableStack(ModItems.antiknock))); + } + + public static MixerRecipe getOutput(FluidType type) { + return recipes.get(type); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry entry : MixerRecipes.recipes.entrySet()) { + + FluidType type = entry.getKey(); + MixerRecipe recipe = entry.getValue(); + FluidStack output = new FluidStack(type, recipe.output); + + List objects = new ArrayList(); + if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1)); + if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2)); + if(recipe.solidInput != null) objects.add(recipe.solidInput); + + recipes.put(objects.toArray(), ItemFluidIcon.make(output)); + } + + return recipes; + } + + public static class MixerRecipe { + public FluidStack input1; + public FluidStack input2; + public AStack solidInput; + public int processTime; + public int output; + + protected MixerRecipe(int output, int processTime) { + this.output = output; + this.processTime = processTime; + } + + protected MixerRecipe setStack1(FluidStack stack) { input1 = stack; return this; } + protected MixerRecipe setStack2(FluidStack stack) { input2 = stack; return this; } + protected MixerRecipe setSolid(AStack stack) { solidInput = stack; return this; } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 2dcf5d555..b0dcb263b 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -8,6 +8,9 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ItemEnums.EnumBriquetteType; +import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; +import com.hbm.items.ItemAmmoEnums.Ammo556mm; +import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; @@ -76,30 +79,33 @@ public class PressRecipes { makeRecipe(StampType.WIRE, new OreDictStack(ALLOY.ingot()), new ItemStack(ModItems.wire_advanced_alloy, 8)); makeRecipe(StampType.WIRE, new OreDictStack(MAGTUNG.ingot()), new ItemStack(ModItems.wire_magnetized_tungsten, 8)); - makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_raw), ModItems.circuit_aluminium); - makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_bismuth_raw), ModItems.circuit_bismuth); - makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_arsenic_raw), ModItems.circuit_arsenic); + makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_raw), ModItems.circuit_aluminium); + makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_bismuth_raw), ModItems.circuit_bismuth); + makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_arsenic_raw), ModItems.circuit_arsenic); makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_tantalium_raw), ModItems.circuit_tantalium); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.gun_revolver_iron_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.gun_revolver_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.gun_revolver_lead_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.gun_revolver_gold_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.gun_revolver_schrabidium_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.gun_revolver_nightmare_ammo); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357_desh); - makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.gun_revolver_cursed_ammo); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.IRON)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NUCLEAR)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.GOLD)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.SCHRABIDIUM)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE1)); + makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(Ammo357Magnum.DESH)); + makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.STEEL)); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), ModItems.ammo_44); + makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), ModItems.ammo_44); + makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), ModItems.ammo_45); makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), ModItems.ammo_9mm); makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), ModItems.ammo_22lr); - makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_566_gold); + makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.GOLD)); makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), ModItems.ammo_5mm); makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), ModItems.ammo_556); makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), ModItems.ammo_50bmg); makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), ModItems.ammo_50ae); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.SABOT)); + makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), ModItems.ammo_762); } public static void makeRecipe(StampType type, AStack in, Item out) { diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 18169762c..04f8243dd 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -15,6 +15,7 @@ import com.hbm.interfaces.Untested; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import com.hbm.util.Compat; @@ -213,6 +214,15 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); } + for(EnumBedrockOre ore : EnumBedrockOre.values()) { + int i = ore.ordinal(); + ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_bedrock, 1, i), new ItemStack(ModItems.ore_enriched, 1, i)); + ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_centrifuged, 1, i), new ItemStack(ModItems.ore_enriched, 1, i)); + ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_cleaned, 1, i), new ItemStack(ModItems.ore_enriched, 1, i)); + ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_separated, 1, i), new ItemStack(ModItems.ore_enriched, 1, i)); + ShredderRecipes.setRecipe(new ItemStack(ModItems.ore_purified, 1, i), new ItemStack(ModItems.ore_enriched, 1, i)); + } + for(int i = 0; i < 5; i++) ShredderRecipes.setRecipe(new ItemStack(Items.skull, 1, i), new ItemStack(ModItems.biomass, 4)); /* Crystal processing */ diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 250f9c662..703ed1977 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -11,6 +11,7 @@ import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.AssemblerRecipes; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; @@ -493,86 +494,95 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate()), new ComparableStack(Items.redstone)}, new AnvilOutput(new ItemStack(ModItems.primer_buckshot))).setTier(1)); Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge, P_RED.dust(), ModItems.ammo_12gauge_incendiary, 20, 2}, - {ModItems.ammo_12gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge_shrapnel, 20, 2}, - {ModItems.ammo_12gauge, U238.ingot(), ModItems.ammo_12gauge_du, 20, 3}, - {ModItems.ammo_12gauge, ModItems.coin_maskman, ModItems.ammo_12gauge_sleek, 100, 4}, - - {ModItems.ammo_20gauge, P_RED.dust(), ModItems.ammo_20gauge_incendiary, 20, 2}, - {ModItems.ammo_20gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge_shrapnel, 20, 2}, - {ModItems.ammo_20gauge, ModItems.powder_poison, ModItems.ammo_20gauge_caustic, 20, 2}, - {ModItems.ammo_20gauge, DIAMOND.dust(), ModItems.ammo_20gauge_shock, 20, 2}, - {ModItems.ammo_20gauge, Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge_wither, 10, 3}, - {ModItems.ammo_20gauge, ModItems.coin_maskman, ModItems.ammo_20gauge_sleek, 100, 4}, + {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.INCENDIARY), 2}, + {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.SHRAPNEL), 2}, + {ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(20, Ammo12Gauge.DU), 3}, + {ModItems.ammo_12gauge.stackFromEnum(100, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(100, Ammo12Gauge.SLEEK), 4}, - {ModItems.ammo_4gauge_flechette, P_WHITE.ingot(), ModItems.ammo_4gauge_flechette_phosphorus, 20, 2}, - {ModItems.ammo_4gauge_explosive, ModItems.egg_balefire_shard, ModItems.ammo_4gauge_balefire, 10, 4}, - {ModItems.ammo_4gauge_explosive, ModItems.ammo_rocket, ModItems.ammo_4gauge_kampf, 4, 2}, - {ModItems.ammo_4gauge_kampf, ModItems.pellet_canister, ModItems.ammo_4gauge_canister, 10, 3}, - {ModItems.ammo_4gauge, ModItems.pellet_claws, ModItems.ammo_4gauge_claw, 4, 5}, - {ModItems.ammo_4gauge, ModItems.toothpicks, ModItems.ammo_4gauge_vampire, 4, 5}, - {ModItems.ammo_4gauge, ModItems.pellet_charged, ModItems.ammo_4gauge_void, 1, 5}, - {ModItems.ammo_4gauge, ModItems.coin_maskman, ModItems.ammo_4gauge_sleek, 100, 4}, + {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.INCENDIARY), 2}, + {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.SHRAPNEL), 2}, + {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.CAUSTIC), 2}, + {ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.SHOCK), 2}, + {ModItems.ammo_20gauge.stackFromEnum(10, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(10, Ammo20Gauge.WITHER), 3}, + {ModItems.ammo_20gauge.stackFromEnum(100, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(100, Ammo20Gauge.SLEEK), 4}, - {ModItems.ammo_44, DURA.ingot(), ModItems.ammo_44_ap, 20, 2}, - {ModItems.ammo_44, U238.ingot(), ModItems.ammo_44_du, 20, 2}, - {ModItems.ammo_44, P_WHITE.ingot(), ModItems.ammo_44_phosphorus, 20, 2}, - {ModItems.ammo_44_du, STAR.ingot(), ModItems.ammo_44_star, 10, 3}, - {ModItems.ammo_44, ModItems.pellet_chlorophyte, ModItems.ammo_44_chlorophyte, 10, 3}, + {ModItems.ammo_4gauge.stackFromEnum(20, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(20, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, + {ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.BALEFIRE), 4}, + {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, + {ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(10, Ammo4Gauge.CANISTER), 3}, + {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, + {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, + {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, + {ModItems.ammo_4gauge.stackFromEnum(100, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(100, Ammo4Gauge.SLEEK), 4}, - {ModItems.ammo_5mm, ANY_HIGHEXPLOSIVE.ingot(), ModItems.ammo_5mm_explosive, 20, 2}, - {ModItems.ammo_5mm, U238.ingot(), ModItems.ammo_5mm_du, 20, 2}, - {ModItems.ammo_5mm, STAR.ingot(), ModItems.ammo_5mm_star, 10, 3}, - {ModItems.ammo_5mm, ModItems.pellet_chlorophyte, ModItems.ammo_5mm_chlorophyte, 10, 3}, + {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.AP), 2}, + {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.DU), 2}, + {ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(20, Ammo44Magnum.PHOSPHORUS), 2}, + {ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.STAR), 3}, + {ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(10, Ammo44Magnum.CHLOROPHYTE), 3}, - {ModItems.ammo_9mm, DURA.ingot(), ModItems.ammo_9mm_ap, 20, 2}, - {ModItems.ammo_9mm, U238.ingot(), ModItems.ammo_9mm_du, 20, 2}, - {ModItems.ammo_9mm, ModItems.pellet_chlorophyte, ModItems.ammo_9mm_chlorophyte, 10, 3}, - - {ModItems.ammo_22lr, DURA.ingot(), ModItems.ammo_22lr_ap, 20, 2}, - {ModItems.ammo_22lr, ModItems.pellet_chlorophyte, ModItems.ammo_22lr_chlorophyte, 10, 3}, + {ModItems.ammo_45.stackFromEnum(20, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(20, Ammo45ACP.AP), 3}, + {ModItems.ammo_45.stackFromEnum(10, Ammo45ACP.DU), U238.ingot(), ModItems.ammo_45.stackFromEnum(10, Ammo45ACP.DU), 3}, - {ModItems.ammo_50bmg, P_RED.dust(), ModItems.ammo_50bmg_incendiary, 20, 2}, - {ModItems.ammo_50bmg, P_WHITE.ingot(), ModItems.ammo_50bmg_phosphorus, 20, 2}, - {ModItems.ammo_50bmg, ANY_HIGHEXPLOSIVE.ingot(), ModItems.ammo_50bmg_explosive, 20, 2}, - {ModItems.ammo_50bmg, DURA.ingot(), ModItems.ammo_50bmg_ap, 20, 2}, - {ModItems.ammo_50bmg, U238.ingot(), ModItems.ammo_50bmg_du, 20, 2}, - {ModItems.ammo_50bmg_du, STAR.ingot(), ModItems.ammo_50bmg_star, 10, 3}, - {ModItems.ammo_50bmg, ModItems.pellet_chlorophyte, ModItems.ammo_50bmg_chlorophyte, 10, 3}, - {ModItems.ammo_50bmg, ModItems.coin_maskman, ModItems.ammo_50bmg_sleek, 100, 4}, - {ModItems.ammo_50bmg, ModItems.pellet_flechette, ModItems.ammo_50bmg_flechette, 20, 2}, - {ModItems.ammo_50bmg_flechette, ModItems.nugget_am_mix, ModItems.ammo_50bmg_flechette_am, 10, 3}, - {ModItems.ammo_50bmg_flechette, ModItems.powder_polonium, ModItems.ammo_50bmg_flechette_po, 20, 3}, + {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.EXPLOSIVE), 2}, + {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.DU), 2}, + {ModItems.ammo_5mm.stackFromEnum(25, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(25, Ammo5mm.STAR), 3}, + {ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(100, Ammo5mm.CHLOROPHYTE), 3}, - {ModItems.ammo_50ae, DURA.ingot(), ModItems.ammo_50ae_ap, 20, 2}, - {ModItems.ammo_50ae, U238.ingot(), ModItems.ammo_50ae_du, 20, 2}, - {ModItems.ammo_50ae_du, STAR.ingot(), ModItems.ammo_50ae_star, 10, 3}, - {ModItems.ammo_50ae, ModItems.pellet_chlorophyte, ModItems.ammo_50ae_chlorophyte, 10, 3}, + {ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.AP), 2}, + {ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(20, Ammo9mm.DU), 2}, + {ModItems.ammo_9mm.stackFromEnum(10, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(10, Ammo9mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556, P_WHITE.ingot(), ModItems.ammo_556_phosphorus, 20, 2}, - {ModItems.ammo_556, DURA.ingot(), ModItems.ammo_556_ap, 20, 2}, - {ModItems.ammo_556, U238.ingot(), ModItems.ammo_556_du, 20, 2}, - {ModItems.ammo_556_du, STAR.ingot(), ModItems.ammo_556_star, 10, 3}, - {ModItems.ammo_556, ModItems.pellet_chlorophyte, ModItems.ammo_556_chlorophyte, 10, 3}, - {ModItems.ammo_556, ModItems.coin_maskman, ModItems.ammo_556_sleek, 100, 4}, - {ModItems.ammo_556, Items.redstone, ModItems.ammo_556_tracer, 20, 2}, - {ModItems.ammo_556, ModItems.pellet_flechette, ModItems.ammo_556_flechette, 20, 2}, - {ModItems.ammo_556_flechette, P_RED.dust(), ModItems.ammo_556_flechette_incendiary, 20, 2}, - {ModItems.ammo_556_flechette, P_WHITE.ingot(), ModItems.ammo_556_flechette_phosphorus, 20, 2}, - {ModItems.ammo_556_flechette, U238.ingot(), ModItems.ammo_556_flechette_du, 20, 2}, - {ModItems.ammo_556_flechette, ModItems.coin_maskman, ModItems.ammo_556_flechette_sleek, 100, 4}, - {ModItems.ammo_556_flechette, ModItems.pellet_chlorophyte, ModItems.ammo_556_flechette_chlorophyte, 10, 3}, + {ModItems.ammo_22lr.stackFromEnum(20, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(20, Ammo22LR.AP), 2}, + {ModItems.ammo_22lr.stackFromEnum(10, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(10, Ammo22LR.CHLOROPHYTE), 3}, + + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.INCENDIARY), 2}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.PHOSPHORUS), 2}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.EXPLOSIVE), 2}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.AP), 2}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.DU), 2}, + {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.STAR), 3}, + {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.CHLOROPHYTE), 3}, + {ModItems.ammo_50bmg.stackFromEnum(100, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(100, Ammo50BMG.SLEEK), 4}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE), 2}, + {ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(10, Ammo50BMG.FLECHETTE_AM), 3}, + {ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(20, Ammo50BMG.FLECHETTE_PO), 3}, + + {ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.AP), 2}, + {ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(20, Ammo50AE.DU), 2}, + {ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.STAR), 3}, + {ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(10, Ammo50AE.CHLOROPHYTE), 3}, + + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.PHOSPHORUS), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.AP), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.DU), 2}, + {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(10, Ammo556mm.STAR), 3}, + {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(10, Ammo556mm.CHLOROPHYTE), 3}, + {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(100, Ammo556mm.SLEEK), 4}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(20, Ammo556mm.TRACER), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_INCENDIARY), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, + {ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(20, Ammo556mm.FLECHETTE_DU), 2}, + {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE_SLEEK), 4}, + {ModItems.ammo_556.stackFromEnum(10, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(10, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, + + {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.TRACER), 2}, + {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.AP), 2}, + {ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.PHOSPHORUS), 2}, + {ModItems.ammo_762.stackFromEnum(10, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(20, Ammo762NATO.DU), 2} }; for(Object[] objs : recs) { + ComparableStack ammoIn = new ComparableStack((ItemStack) objs[0]); + ItemStack out = (ItemStack) objs[2]; + if(objs[1] instanceof Item) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { new ComparableStack((Item)objs[0], (int)objs[3]), new ComparableStack((Item)objs[1], 1) }, - new AnvilOutput(new ItemStack((Item)objs[2], (int)objs[3]))).setTier((int)objs[4])); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new ComparableStack((Item)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); } else if(objs[1] instanceof String) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { new ComparableStack((Item)objs[0], (int)objs[3]), new OreDictStack((String)objs[1], 1) }, - new AnvilOutput(new ItemStack((Item)objs[2], (int)objs[3]))).setTier((int)objs[4])); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new OreDictStack((String)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); } } } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 4ef548a37..dd3de7222 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -60,6 +60,9 @@ public abstract class SerializableRecipe { } } + File info = new File(recDir.getAbsolutePath() + File.separatorChar + "REMOVE UNDERSCORE TO ENABLE RECIPE LOADING - RECIPES WILL RESET TO DEFAULT OTHERWISE"); + try { info.createNewFile(); } catch(IOException e) { } + MainRegistry.logger.info("Starting recipe init!"); for(SerializableRecipe recipe : recipeHandlers) { diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java new file mode 100644 index 000000000..d42eb4015 --- /dev/null +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -0,0 +1,759 @@ +package com.hbm.items; + +import java.util.Set; + +import com.google.common.collect.ImmutableSet; +import com.hbm.items.weapon.ItemAmmo.AmmoItemTrait; +import com.hbm.lib.HbmCollection; + +public class ItemAmmoEnums { + + public enum AmmoLunaticSniper implements IAmmoItemEnum { + SABOT("ammo_luna"), + INCENDIARY("ammo_luna_incendiary"), + EXPLOSIVE("ammo_luna_explosive"); + + private final Set traits; + private final String unloc; + + private AmmoLunaticSniper(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoFireExt implements IAmmoItemEnum { + WATER("ammo_fireext"), + FOAM("ammo_fireext_foam"), + SAND("ammo_fireext_sand"); + + private final Set traits; + private final String unloc; + + private AmmoFireExt(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoFlamethrower implements IAmmoItemEnum { + DIESEL("ammo_fuel"), + NAPALM("ammo_fuel_napalm", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), + PHOSPHORUS("ammo_fuel_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_SING_PROJECTILE, AmmoItemTrait.CON_HEAVY_WEAR), + VAPORIZER("ammo_fuel_vaporizer", AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.PRO_FLAMES, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_ERASER, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RANGE2, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_LING_FIRE), + CHLORINE("ammo_fuel_gas", AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.PRO_POISON_GAS, AmmoItemTrait.CON_NO_DAMAGE, AmmoItemTrait.CON_NO_FIRE); + + private final Set traits; + private final String unloc; + + private AmmoFlamethrower(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoMisc implements IAmmoItemEnum { + //LUNA_SNIPER("ammo_lunar", Gun50BMGFactory.getLunaticSabotRound(), AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.NEU_HEAVY_METAL), + DGK("ammo_dkg"); + + private final Set traits; + private final String unloc; + + private AmmoMisc(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoStinger implements IAmmoItemEnum { + STOCK("ammo_stinger_rocket"), + HE("ammo_stinger_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), + INCENDIARY("ammo_stinger_rocket_incendiary", HbmCollection.IncendiaryType), + NUCLEAR("ammo_stinger_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR), + BONES("ammo_stinger_rocket_bones"); + + private final Set traits; + private final String unloc; + + private AmmoStinger(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private AmmoStinger(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoRocket implements IAmmoItemEnum { + STOCK("ammo_rocket"), + HE("ammo_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), + INCENDIARY("ammo_rocket_incendiary", HbmCollection.IncendiaryType), + EMP("ammo_rocket_emp", AmmoItemTrait.PRO_EMP, AmmoItemTrait.CON_RADIUS), + SLEEK("ammo_rocket_sleek", AmmoItemTrait.PRO_RADIUS_HIGH, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_SPEED), + SHRAPNEL("ammo_rocket_shrapnel", AmmoItemTrait.PRO_SHRAPNEL), + GLARE("ammo_rocket_glare", AmmoItemTrait.PRO_SPEED, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), + NUCLEAR("ammo_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR, AmmoItemTrait.CON_SPEED), + CHLORINE("ammo_rocket_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.CON_SPEED), + RPC("ammo_rocket_rpc", AmmoItemTrait.PRO_CHAINSAW, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.NEU_UHH ), + PHOSPHORUS("ammo_rocket_phosphorus", HbmCollection.PhosphorusTypeSpecial), + CANISTER("ammo_rocket_canister"), + DIGAMMA("ammo_rocket_digamma"); + + private final Set traits; + private final String unloc; + + private AmmoRocket(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private AmmoRocket(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoGrenade implements IAmmoItemEnum { + STOCK("ammo_grenade"), + HE("ammo_grenade_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), + INCENDIARY("ammo_grenade_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), + PHOSPHORUS("ammo_grenade_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR), + CHLORINE("ammo_grenade_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1), + SLEEK("ammo_grenade_sleek", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.NEU_JOLT), + CONCUSSION("ammo_grenade_concussion", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), + FINNED("ammo_grenade_finned", AmmoItemTrait.PRO_GRAVITY, AmmoItemTrait.CON_RADIUS), + NUCLEAR("ammo_grenade_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), + TRACER("ammo_grenade_tracer", AmmoItemTrait.NEU_BLANK), + KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR); + + private final Set traits; + private final String unloc; + + private AmmoGrenade(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoFatman implements IAmmoItemEnum { + STOCK("ammo_nuke"), + LOW("ammo_nuke_low", AmmoItemTrait.CON_RADIUS), + HIGH("ammo_nuke_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), + TOTS("ammo_nuke_tots", AmmoItemTrait.PRO_BOMB_COUNT, AmmoItemTrait.NEU_FUN, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_MIRV), + SAFE("ammo_nuke_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), + PUMPKIN("ammo_nuke_pumpkin", AmmoItemTrait.CON_NN), + MIRV("ammo_mirv"), + MIRV_LOW("ammo_mirv_low", AmmoItemTrait.CON_RADIUS), + MIRV_HIGH("ammo_mirv_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), + MIRV_SAFE("ammo_mirv_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), + MIRV_SPECIAL("ammo_mirv_special"), + BALEFIRE("gun_bf_ammo"), + BARREL("ammo_nuke_barrel"); + + private final Set traits; + private final String unloc; + + private AmmoFatman(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum AmmoDart implements IAmmoItemEnum { + GPS("ammo_dart"), + NUCLEAR("ammo_dart_nuclear"), + NERF("ammo_dart_nerf"); + + private final Set traits; + private final String unloc; + + private AmmoDart(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo240Shell implements IAmmoItemEnum { + STOCK("ammo_shell"), + EXPLOSIVE("ammo_shell_explosive"), + APFSDS_T("ammo_shell_apfsds_t"), + APFSDS_DU("ammo_shell_apfsds_du"), + W9("ammo_shell_w9"); + + private final Set traits; + private final String unloc; + + private Ammo240Shell(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo9mm implements IAmmoItemEnum { + STOCK("ammo_9mm"), + AP("ammo_9mm_ap", HbmCollection.APType), + DU("ammo_9mm_du", HbmCollection.DUType), + CHLOROPHYTE("ammo_9mm_chlorophyte", HbmCollection.ChlorophyteType), + ROCKET("ammo_9mm_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); + + private final Set traits; + private final String unloc; + + private Ammo9mm(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo9mm(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo762NATO implements IAmmoItemEnum { + STOCK("ammo_762"), + AP("ammo_762_ap", HbmCollection.APType), + DU("ammo_762_du", HbmCollection.DUType), + TRACER("ammo_762_tracer", AmmoItemTrait.NEU_TRACER), + PHOSPHORUS("ammo_762_phosphorus", HbmCollection.PhosphorusType), + BLANK("ammo_762_k", AmmoItemTrait.NEU_BLANK); + + private final Set traits; + private final String unloc; + + private Ammo762NATO(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo762NATO(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo75Bolt implements IAmmoItemEnum { + STOCK("ammo_75bolt"), + INCENDIARY("ammo_75bolt_incendiary"), + HE("ammo_75bolt_he"); + + private final Set traits; + private final String unloc; + + private Ammo75Bolt(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo5mm implements IAmmoItemEnum { + STOCK("ammo_5mm"), + EXPLOSIVE("ammo_5mm_explosive", HbmCollection.ExplosiveType), + DU("ammo_5mm_du", HbmCollection.DUType), + STAR("ammo_5mm_star", HbmCollection.StarmetalType), + CHLOROPHYTE("ammo_5mm_chlorophyte", HbmCollection.ChlorophyteType); + + private final Set traits; + private final String unloc; + + private Ammo5mm(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo5mm(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo556mm implements IAmmoItemEnum { + STOCK("ammo_556"), + GOLD("gun_pm_ammo"), + PHOSPHORUS("ammo_556_phosphorus", HbmCollection.PhosphorusType), + AP("ammo_556_ap", HbmCollection.APType), + DU("ammo_556_du", HbmCollection.DUType), + STAR("ammo_556_star", HbmCollection.StarmetalType), + CHLOROPHYTE("ammo_556_chlorophyte", HbmCollection.ChlorophyteType), + SLEEK("ammo_556_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), + TRACER("ammo_556_tracer", AmmoItemTrait.NEU_TRACER), + FLECHETTE("ammo_556_flechette", HbmCollection.FlechetteType), + FLECHETTE_INCENDIARY("ammo_556_flechette_incendiary", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), + FLECHETTE_PHOSPHORUS("ammo_556_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), + FLECHETTE_DU("ammo_556_flechette_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_HEAVY_WEAR), + FLECHETTE_CHLOROPHYTE("ammo_556_flechette_chlorophyte", HbmCollection.ChlorophyteType), + FLECHETTE_SLEEK("ammo_556_flechette_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), + K("ammo_556_k", AmmoItemTrait.NEU_BLANK); + + private final Set traits; + private final String unloc; + + private Ammo556mm(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo556mm(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo50BMG implements IAmmoItemEnum { + STOCK("ammo_50bmg"), + INCENDIARY("ammo_50bmg_incendiary", HbmCollection.IncendiaryType), + PHOSPHORUS("ammo_50bmg_phosphorus", HbmCollection.PhosphorusType), + EXPLOSIVE("ammo_50bmg_explosive", HbmCollection.ExplosiveType), + AP("ammo_50bmg_ap", HbmCollection.APType), + DU("ammo_50bmg_du", HbmCollection.DUType), + STAR("ammo_50bmg_star", HbmCollection.StarmetalType), + CHLOROPHYTE("ammo_50bmg_chlorophyte", HbmCollection.ChlorophyteType), + SLEEK("ammo_50bmg_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), + FLECHETTE("ammo_50bmg_flechette", AmmoItemTrait.PRO_DAMAGE), + FLECHETTE_AM("ammo_50bmg_flechette_am", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH), + FLECHETTE_PO("ammo_50bmg_flechette_po", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH); + + private final Set traits; + private final String unloc; + + private Ammo50BMG(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo50BMG(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo50AE implements IAmmoItemEnum { + STOCK("ammo_50ae"), + AP("ammo_50ae_ap", HbmCollection.APType), + DU("ammo_50ae_du", HbmCollection.DUType), + STAR("ammo_50ae_star", HbmCollection.StarmetalType), + CHLOROPHYTE("ammo_50ae_chlorophyte", HbmCollection.ChlorophyteType); + + private final Set traits; + private final String unloc; + + private Ammo50AE(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo50AE(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo4Gauge implements IAmmoItemEnum { + STOCK("ammo_4gauge"), + SLUG("ammo_4gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + FLECHETTE("ammo_4gauge_flechette", HbmCollection.FlechetteType), + FLECHETTE_PHOSPHORUS("ammo_4gauge_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR), + EXPLOSIVE("ammo_4gauge_explosive", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_40MM, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + MINING("ammo_4gauge_semtex", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_MINING, AmmoItemTrait.CON_NO_EXPLODE3, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + BALEFIRE("ammo_4gauge_balefire", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_BALEFIRE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + KAMPF("ammo_4gauge_kampf", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + CANISTER("ammo_4gauge_canister"), + SLEEK("ammo_4gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), + CLAW("ammo_4gauge_claw"), + VAMPIRE("ammo_4gauge_vampire"), + VOID("ammo_4gauge_void"), + QUACK("ammo_4gauge_titan", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON); + + private final Set traits; + private final String unloc; + + private Ammo4Gauge(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo4Gauge(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo45ACP implements IAmmoItemEnum { + STOCK("ammo_45"), + AP("ammo_45_ap", HbmCollection.APType), + DU("ammo_45_du", HbmCollection.DUType); + + private final Set traits; + private final String unloc; + + private Ammo45ACP(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo45ACP(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo44Magnum implements IAmmoItemEnum { + STOCK("ammo_44"), + AP("ammo_44_ap", HbmCollection.APType), + DU("ammo_44_du", HbmCollection.DUType), + PHOSPHORUS("ammo_44_phosphorus", HbmCollection.PhosphorusType), + STAR("ammo_44_star", HbmCollection.StarmetalType), + CHLOROPHYTE("ammo_44_chlorophyte", HbmCollection.ChlorophyteType), + PIP("ammo_44_pip", AmmoItemTrait.NEU_BOXCAR, AmmoItemTrait.CON_DAMAGE), + BJ("ammo_44_bj", AmmoItemTrait.NEU_BOAT, AmmoItemTrait.CON_DAMAGE), + SILVER("ammo_44_silver", AmmoItemTrait.NEU_BUILDING, AmmoItemTrait.CON_DAMAGE), + ROCKET("ammo_44_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); + + private final Set traits; + private final String unloc; + + private Ammo44Magnum(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo44Magnum(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo357Magnum implements IAmmoItemEnum { + IRON("gun_revolver_iron_ammo"), + LEAD("gun_revolver_ammo"), + NUCLEAR("gun_revolver_lead_ammo"), + GOLD("gun_revolver_gold_ammo"), + DESH("ammo_357_desh", AmmoItemTrait.PRO_FIT_357, AmmoItemTrait.PRO_DAMAGE_SLIGHT), + SCHRABIDIUM("gun_revolver_schrabidium_ammo"), + STEEL("gun_revolver_cursed_ammo"), + NIGHTMARE1("gun_revolver_nightmare_ammo"), + NIGHTMARE2("gun_revolver_nightmare2_ammo"); + + private final Set traits; + private final String unloc; + + private Ammo357Magnum(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo22LR implements IAmmoItemEnum { + STOCK("ammo_22lr"), + AP("ammo_22lr_ap", HbmCollection.APType), + CHLOROPHYTE("ammo_22lr_chlorophyte", HbmCollection.ChlorophyteType); + + private final Set traits; + private final String unloc; + + private Ammo22LR(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo22LR(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo20Gauge implements IAmmoItemEnum { + STOCK("ammo_20gauge"), + SLUG("ammo_20gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), + FLECHETTE("ammo_20gauge_flechette", HbmCollection.FlechetteType), + INCENDIARY("ammo_20gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), + SHRAPNEL("ammo_20gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), + EXPLOSIVE("ammo_20gauge_explosive", HbmCollection.ExplosiveType), + CAUSTIC("ammo_20gauge_caustic", AmmoItemTrait.PRO_TOXIC, AmmoItemTrait.PRO_CAUSTIC, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), + SHOCK("ammo_20gauge_shock", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_STUNNING, AmmoItemTrait.PRO_EMP, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), + WITHER("ammo_20gauge_wither", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WITHERING), + SLEEK("ammo_20gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE); + + private final Set traits; + private final String unloc; + + private Ammo20Gauge(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + private Ammo20Gauge(String unloc, Set traits) { + this.traits = traits; + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public enum Ammo12Gauge implements IAmmoItemEnum { + STOCK("ammo_12gauge"), + INCENDIARY("ammo_12gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), + SHRAPNEL("ammo_12gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), + DU("ammo_12gauge_du", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR), + MARAUDER("ammo_12gauge_marauder", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON), + SLEEK("ammo_12gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), + PERCUSSION("ammo_12gauge_percussion", AmmoItemTrait.PRO_PERCUSSION, AmmoItemTrait.CON_NO_PROJECTILE); + + private final Set traits; + private final String unloc; + + private Ammo12Gauge(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override + public Set getTraits() { + return traits; + } + + @Override + public String getInternalName() { + return unloc; + } + } + + public interface IAmmoItemEnum { + public Set getTraits(); + public String getInternalName(); + } + + static Set safeAssign(AmmoItemTrait[] traits) { + return traits == null ? ImmutableSet.of() : ImmutableSet.copyOf(traits); + } +} diff --git a/src/main/java/com/hbm/items/ItemCustomLore.java b/src/main/java/com/hbm/items/ItemCustomLore.java index 883be3ee6..8ca98815c 100644 --- a/src/main/java/com/hbm/items/ItemCustomLore.java +++ b/src/main/java/com/hbm/items/ItemCustomLore.java @@ -3,9 +3,8 @@ package com.hbm.items; import java.util.List; import java.util.Random; -import com.hbm.config.GeneralConfig; +import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.util.ArmorUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -74,30 +73,32 @@ public class ItemCustomLore extends Item { static int setSize = 0; - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - return this.rarity != null ? rarity : super.getRarity(p_77613_1_); - } + @Override + public EnumRarity getRarity(ItemStack stack) { + return this.rarity != null ? rarity : super.getRarity(stack); + } - @Override + @Override @SideOnly(Side.CLIENT) - public boolean hasEffect(ItemStack p_77636_1_) - { - if(this == ModItems.rune_isa || - this == ModItems.rune_dagaz || - this == ModItems.rune_hagalaz || - this == ModItems.rune_jera || - this == ModItems.rune_thurisaz || - this == ModItems.egg_balefire_shard || - this == ModItems.egg_balefire) { - return true; - } - - return false; - } - - public ItemCustomLore setRarity(EnumRarity rarity) { - this.rarity = rarity; + public boolean hasEffect(ItemStack p_77636_1_) { + if(this == ModItems.rune_isa || this == ModItems.rune_dagaz || + this == ModItems.rune_hagalaz || this == ModItems.rune_jera || + this == ModItems.rune_thurisaz || this == ModItems.egg_balefire_shard || + this == ModItems.egg_balefire) { + return true; + } + + return false; + } + + public ItemCustomLore setRarity(EnumRarity rarity) { + this.rarity = rarity; return this; - } + } + + @Override + public Item setUnlocalizedName(String uloc) { + setTextureName(RefStrings.MODID + ':' + uloc); + return super.setUnlocalizedName(uloc); + } } diff --git a/src/main/java/com/hbm/items/ItemEnumMulti.java b/src/main/java/com/hbm/items/ItemEnumMulti.java index 762634440..269fae35d 100644 --- a/src/main/java/com/hbm/items/ItemEnumMulti.java +++ b/src/main/java/com/hbm/items/ItemEnumMulti.java @@ -71,9 +71,7 @@ public class ItemEnumMulti extends Item { } } - /* - * Returns null when the wrong enum is passed. Only really used for recipes anyway so it's good. - */ + /** Returns null when the wrong enum is passed. Only really used for recipes anyway so it's good. */ public ItemStack stackFromEnum(int count, Enum num) { if(num.getClass() != this.theEnum) diff --git a/src/main/java/com/hbm/items/ItemRemap.java b/src/main/java/com/hbm/items/ItemRemap.java new file mode 100644 index 000000000..e763e8f43 --- /dev/null +++ b/src/main/java/com/hbm/items/ItemRemap.java @@ -0,0 +1,41 @@ +package com.hbm.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class ItemRemap extends Item { + + Item remapItem; + int remapMeta; + + public ItemRemap(Item item, int meta) { + this.remapItem = item; + this.remapMeta = meta; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return this.remapItem.getIconFromDamage(this.remapMeta); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) { + + if(!(entity instanceof EntityPlayer)) return; + + EntityPlayer player = (EntityPlayer) entity; + player.inventory.setInventorySlotContents(slot, new ItemStack(this.remapItem, stack.stackSize, this.remapMeta)); + } + + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + return 0xFF8080; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c9aa6542b..5972d2b88 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -9,6 +9,7 @@ import com.hbm.handler.WeaponAbility; import com.hbm.handler.guncfg.*; import com.hbm.interfaces.ICustomWarhead.SaltedFuel.HalfLifeType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ItemEnums.*; import com.hbm.items.armor.*; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; @@ -186,6 +187,13 @@ public class ModItems { public static Item ingot_mercury; //It's to prevent any ambiguity, as it was treated as a full ingot in the past anyway public static Item bottle_mercury; + public static Item ore_bedrock; + public static Item ore_centrifuged; + public static Item ore_cleaned; + public static Item ore_separated; + public static Item ore_purified; + public static Item ore_enriched; + public static Item billet_uranium; public static Item billet_u233; public static Item billet_u235; @@ -595,11 +603,14 @@ public class ModItems { public static Item assembly_nopip; public static Item assembly_smg; public static Item assembly_556; + public static Item assembly_762; + public static Item assembly_45; public static Item assembly_uzi; public static Item assembly_actionexpress; public static Item assembly_calamity; public static Item assembly_lacunae; public static Item assembly_nuke; + public static Item assembly_luna; public static Item folly_shell; public static Item folly_bullet; @@ -857,6 +868,7 @@ public class ModItems { public static Item particle_lutece; public static Item pellet_antimatter; + public static Item singularity_micro; public static Item singularity; public static Item singularity_counter_resonant; public static Item singularity_super_heated; @@ -1454,8 +1466,35 @@ public class ModItems { public static Item sat_interface; public static Item sat_coord; public static Item sat_designator; + + public static ItemEnumMulti ammo_misc; + public static ItemEnumMulti ammo_12gauge; + public static ItemEnumMulti ammo_20gauge; + public static ItemEnumMulti ammo_4gauge; + public static ItemEnumMulti ammo_357; + public static ItemEnumMulti ammo_44; + public static ItemEnumMulti ammo_5mm; + public static ItemEnumMulti ammo_9mm; + public static ItemEnumMulti ammo_45; + public static ItemEnumMulti ammo_556; + public static ItemEnumMulti ammo_762; + public static ItemEnumMulti ammo_22lr; + public static ItemEnumMulti ammo_50ae; + public static ItemEnumMulti ammo_50bmg; + public static ItemEnumMulti ammo_75bolt; + public static ItemEnumMulti ammo_rocket; + public static ItemEnumMulti ammo_grenade; + public static ItemEnumMulti ammo_shell; + public static ItemEnumMulti ammo_nuke; + public static ItemEnumMulti ammo_fuel; + public static ItemEnumMulti ammo_fireext; + public static ItemEnumMulti ammo_dart; + public static ItemEnumMulti ammo_stinger_rocket; + public static ItemEnumMulti ammo_luna_sniper; - public static Item ammo_12gauge; + public static Item ammo_cell; + + /*public static Item ammo_12gauge; public static Item ammo_12gauge_incendiary; public static Item ammo_12gauge_shrapnel; public static Item ammo_12gauge_du; @@ -1544,11 +1583,11 @@ public class ModItems { public static Item ammo_50bmg_sleek; public static Item ammo_75bolt; public static Item ammo_75bolt_incendiary; - public static Item ammo_75bolt_he; + public static Item ammo_75bolt_he;*/ public static Item ammo_folly; public static Item ammo_folly_nuclear; public static Item ammo_folly_du; - public static Item ammo_rocket; + /*public static Item ammo_rocket; public static Item ammo_rocket_he; public static Item ammo_rocket_incendiary; public static Item ammo_rocket_phosphorus; @@ -1576,11 +1615,11 @@ public class ModItems { public static Item ammo_shell_explosive; public static Item ammo_shell_apfsds_t; public static Item ammo_shell_apfsds_du; - public static Item ammo_shell_w9; + public static Item ammo_shell_w9;*/ public static Item ammo_dgk; public static Item ammo_arty; public static Item ammo_himars; - public static Item ammo_nuke; + /*public static Item ammo_nuke; public static Item ammo_nuke_low; public static Item ammo_nuke_high; public static Item ammo_nuke_tots; @@ -1608,7 +1647,7 @@ public class ModItems { public static Item ammo_stinger_rocket_he; public static Item ammo_stinger_rocket_incendiary; public static Item ammo_stinger_rocket_nuclear; - public static Item ammo_stinger_rocket_bones; + public static Item ammo_stinger_rocket_bones;*/ public static Item gun_rpg; //public static Item gun_rpg_ammo; @@ -1621,21 +1660,21 @@ public class ModItems { //public static Item gun_stinger_ammo; public static Item gun_revolver; public static Item gun_revolver_saturnite; - public static Item gun_revolver_ammo; + //public static Item gun_revolver_ammo; public static Item gun_revolver_iron; - public static Item gun_revolver_iron_ammo; + //public static Item gun_revolver_iron_ammo; public static Item gun_revolver_gold; - public static Item gun_revolver_gold_ammo; + //public static Item gun_revolver_gold_ammo; public static Item gun_revolver_lead; - public static Item gun_revolver_lead_ammo; + //public static Item gun_revolver_lead_ammo; public static Item gun_revolver_schrabidium; - public static Item gun_revolver_schrabidium_ammo; + //public static Item gun_revolver_schrabidium_ammo; public static Item gun_revolver_cursed; - public static Item gun_revolver_cursed_ammo; + //public static Item gun_revolver_cursed_ammo; public static Item gun_revolver_nightmare; - public static Item gun_revolver_nightmare_ammo; + //public static Item gun_revolver_nightmare_ammo; public static Item gun_revolver_nightmare2; - public static Item gun_revolver_nightmare2_ammo; + //public static Item gun_revolver_nightmare2_ammo; public static Item gun_revolver_pip; //public static Item gun_revolver_pip_ammo; public static Item gun_revolver_nopip; @@ -1703,7 +1742,6 @@ public class ModItems { public static Item gun_mp; public static Item gun_bolter; public static Item gun_bolter_digamma; - public static Item gun_brimstone; public static Item gun_zomg; public static Item gun_super_shotgun; public static Item gun_moist_nugget; @@ -1731,6 +1769,11 @@ public class ModItems { public static Item gun_detonator; public static Item gun_glass_cannon; + // We'll figure this part out later + //public static Item gun_llr, gun_mlr, gun_hlr, gun_twr, gun_lunatic, gun_lunatic_shotty, gun_lunatic_marksman; + //public static Item gun_uac_pistol, gun_uac_dmr, gun_uac_carbine, gun_uac_lmg; + //public static Item gun_m2, gun_benelli, gun_benelli_mod, gun_g36, spear_bishamonten, pagoda; + public static Item crucible; public static Item stick_dynamite; @@ -1811,6 +1854,7 @@ public class ModItems { public static Item peas; public static Item marshmallow; public static Item cheese; + public static Item quesadilla; public static Item med_ipecac; public static Item med_ptsd; @@ -2789,6 +2833,13 @@ public class ModItems { ingot_mercury = new ItemCustomLore().setUnlocalizedName("nugget_mercury").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_mercury"); bottle_mercury = new ItemCustomLore().setUnlocalizedName("bottle_mercury").setContainerItem(Items.glass_bottle).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bottle_mercury"); + ore_bedrock = new ItemBedrockOre().setUnlocalizedName("ore_bedrock").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_bedrock"); + ore_centrifuged = new ItemBedrockOre().setUnlocalizedName("ore_centrifuged").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_centrifuged"); + ore_cleaned = new ItemBedrockOre().setUnlocalizedName("ore_cleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_cleaned"); + ore_separated = new ItemBedrockOre().setUnlocalizedName("ore_separated").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_separated"); + ore_purified = new ItemBedrockOre().setUnlocalizedName("ore_purified").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_purified"); + ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched"); + ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -3206,11 +3257,14 @@ public class ModItems { assembly_nopip = new Item().setUnlocalizedName("assembly_nopip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nopip"); assembly_smg = new Item().setUnlocalizedName("assembly_smg").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_smg"); assembly_556 = new Item().setUnlocalizedName("assembly_556").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_556"); + assembly_762 = new Item().setUnlocalizedName("assembly_762").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_762"); + assembly_45 = new Item().setUnlocalizedName("assembly_45").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_45"); assembly_uzi = new Item().setUnlocalizedName("assembly_uzi").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_uzi"); assembly_actionexpress = new Item().setUnlocalizedName("assembly_actionexpress").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_actionexpress"); assembly_calamity = new Item().setUnlocalizedName("assembly_calamity").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_calamity"); assembly_lacunae = new Item().setUnlocalizedName("assembly_lacunae").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lacunae"); assembly_nuke = new Item().setUnlocalizedName("assembly_nuke").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nuke"); + assembly_luna = new Item().setUnlocalizedName("assembly_luna").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_luna"); folly_shell = new Item().setUnlocalizedName("folly_shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_shell"); folly_bullet = new Item().setUnlocalizedName("folly_bullet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet"); folly_bullet_nuclear = new Item().setUnlocalizedName("folly_bullet_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_nuclear"); @@ -3294,6 +3348,7 @@ public class ModItems { particle_sparkticle = new Item().setUnlocalizedName("particle_sparkticle").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_sparkticle"); particle_digamma = new ItemDigamma(60).setUnlocalizedName("particle_digamma").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_digamma"); particle_lutece = new Item().setUnlocalizedName("particle_lutece").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_lutece"); + singularity_micro = new ItemDrop().setUnlocalizedName("singularity_micro").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_micro"); singularity = new ItemDrop().setUnlocalizedName("singularity").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity"); singularity_counter_resonant = new ItemDrop().setUnlocalizedName("singularity_counter_resonant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.nuclear_waste).setTextureName(RefStrings.MODID + ":singularity_alt"); @@ -3415,7 +3470,7 @@ public class ModItems { iv_xp_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { if(user.experienceTotal >= 100) { ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_xp)); - EnchantmentUtil.setExperience(user, user.experienceTotal - 100); + EnchantmentUtil.setExperience(user, EnchantmentUtil.getTotalExperience(user) - 100); } }).setUnlocalizedName("iv_xp_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_xp_empty"); @@ -4207,7 +4262,34 @@ public class ModItems { missile_skin_soviet_stank = new ItemCustomLore().setUnlocalizedName("missile_skin_soviet_stank").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_skin_soviet_stank"); missile_skin_metal = new ItemCustomLore().setUnlocalizedName("missile_skin_metal").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_skin_metal"); - ammo_12gauge = new ItemAmmo().setUnlocalizedName("ammo_12gauge"); + ammo_12gauge = new ItemAmmo(Ammo12Gauge.class).setUnlocalizedName("ammo_12gauge"); + ammo_20gauge = new ItemAmmo(Ammo20Gauge.class).setUnlocalizedName("ammo_20gauge"); + ammo_4gauge = new ItemAmmo(Ammo4Gauge.class).setUnlocalizedName("ammo_4gauge"); + ammo_5mm = new ItemAmmo(Ammo5mm.class).setUnlocalizedName("ammo_5mm"); + ammo_9mm = new ItemAmmo(Ammo9mm.class).setUnlocalizedName("ammo_9mm"); + ammo_45 = new ItemAmmo(Ammo45ACP.class).setUnlocalizedName("ammo_45"); + ammo_556 = new ItemAmmo(Ammo556mm.class).setUnlocalizedName("ammo_556"); + ammo_762 = new ItemAmmo(Ammo762NATO.class).setUnlocalizedName("ammo_762"); + ammo_50ae = new ItemAmmo(Ammo50AE.class).setUnlocalizedName("ammo_50ae"); + ammo_50bmg = new ItemAmmo(Ammo50BMG.class).setUnlocalizedName("ammo_50bmg"); + ammo_75bolt = new ItemAmmo(Ammo75Bolt.class).setUnlocalizedName("ammo_75bolt"); + ammo_357 = new ItemAmmo(Ammo357Magnum.class).setUnlocalizedName("ammo_357"); + ammo_44 = new ItemAmmo(Ammo44Magnum.class).setUnlocalizedName("ammo_44"); + ammo_22lr = new ItemAmmo(Ammo22LR.class).setUnlocalizedName("ammo_22lr"); + ammo_rocket = new ItemAmmo(AmmoRocket.class).setUnlocalizedName("ammo_rocket"); + ammo_grenade = new ItemAmmo(AmmoGrenade.class).setUnlocalizedName("ammo_grenade"); + ammo_shell = new ItemAmmo(Ammo240Shell.class).setUnlocalizedName("ammo_shell"); + ammo_dgk = new ItemCustomLore().setUnlocalizedName("ammo_dgk").setCreativeTab(MainRegistry.weaponTab); + ammo_nuke = new ItemAmmo(AmmoFatman.class).setUnlocalizedName("ammo_nuke"); + ammo_fuel = new ItemAmmo(AmmoFlamethrower.class).setUnlocalizedName("ammo_fuel"); + ammo_fireext = new ItemAmmo(AmmoFireExt.class).setUnlocalizedName("ammo_fireext"); + ammo_cell = new ItemCustomLore().setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_cell").setMaxStackSize(16); + ammo_dart = (ItemEnumMulti) new ItemAmmo(AmmoDart.class).setUnlocalizedName("ammo_dart").setMaxStackSize(16); + ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); + ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); + ammo_misc = new ItemAmmo(AmmoMisc.class).setUnlocalizedName("ammo_misc"); + + /*ammo_12gauge = new ItemAmmo().setUnlocalizedName("ammo_12gauge"); ammo_12gauge_incendiary = new ItemAmmo().setUnlocalizedName("ammo_12gauge_incendiary"); ammo_12gauge_shrapnel = new ItemAmmo().setUnlocalizedName("ammo_12gauge_shrapnel"); ammo_12gauge_du = new ItemAmmo().setUnlocalizedName("ammo_12gauge_du"); @@ -4327,11 +4409,14 @@ public class ModItems { ammo_shell_explosive = new ItemAmmo().setUnlocalizedName("ammo_shell_explosive"); ammo_shell_apfsds_t = new ItemAmmo().setUnlocalizedName("ammo_shell_apfsds_t"); ammo_shell_apfsds_du = new ItemAmmo().setUnlocalizedName("ammo_shell_apfsds_du"); - ammo_shell_w9 = new ItemAmmo().setUnlocalizedName("ammo_shell_w9"); - ammo_dgk = new ItemAmmo().setUnlocalizedName("ammo_dgk"); + ammo_shell_w9 = new ItemAmmo().setUnlocalizedName("ammo_shell_w9");*/ + ammo_folly = new ItemCustomLore().setUnlocalizedName("ammo_folly"); + ammo_folly_nuclear = new ItemCustomLore().setUnlocalizedName("ammo_folly_nuclear"); + ammo_folly_du = new ItemCustomLore().setUnlocalizedName("ammo_folly_du"); + //ammo_dgk = new ItemCustomLore().setUnlocalizedName("ammo_dgk"); ammo_arty = new ItemAmmoArty().setUnlocalizedName("ammo_arty"); ammo_himars = new ItemAmmoHIMARS().setUnlocalizedName("ammo_himars"); - ammo_nuke = new ItemAmmo().setUnlocalizedName("ammo_nuke"); + /*ammo_nuke = new ItemAmmo().setUnlocalizedName("ammo_nuke"); ammo_nuke_low = new ItemAmmo().setUnlocalizedName("ammo_nuke_low"); ammo_nuke_high = new ItemAmmo().setUnlocalizedName("ammo_nuke_high"); ammo_nuke_tots = new ItemAmmo().setUnlocalizedName("ammo_nuke_tots"); @@ -4359,7 +4444,7 @@ public class ModItems { ammo_stinger_rocket_he = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_he"); ammo_stinger_rocket_incendiary = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_incendiary"); ammo_stinger_rocket_nuclear = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_nuclear"); - ammo_stinger_rocket_bones = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_bones"); + ammo_stinger_rocket_bones = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_bones");*/ gun_rpg = new ItemGunBase(GunRocketFactory.getGustavConfig()).setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); @@ -4370,22 +4455,22 @@ public class ModItems { gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); //gun_stinger_ammo = new Item().setUnlocalizedName("gun_stinger_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_stinger_ammo"); - gun_revolver_ammo = new Item().setUnlocalizedName("gun_revolver_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_ammo"); + //gun_revolver_ammo = new Item().setUnlocalizedName("gun_revolver_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_ammo"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); - gun_revolver_iron_ammo = new Item().setUnlocalizedName("gun_revolver_iron_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_iron_ammo"); + //gun_revolver_iron_ammo = new Item().setUnlocalizedName("gun_revolver_iron_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_iron_ammo"); gun_revolver_iron = new ItemGunBase(Gun357MagnumFactory.getRevolverIronConfig()).setUnlocalizedName("gun_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_iron"); - gun_revolver_gold_ammo = new Item().setUnlocalizedName("gun_revolver_gold_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold_ammo"); + //gun_revolver_gold_ammo = new Item().setUnlocalizedName("gun_revolver_gold_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold_ammo"); gun_revolver_gold = new ItemGunBase(Gun357MagnumFactory.getRevolverGoldConfig()).setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); - gun_revolver_lead_ammo = new Item().setUnlocalizedName("gun_revolver_lead_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_lead_ammo"); + //gun_revolver_lead_ammo = new Item().setUnlocalizedName("gun_revolver_lead_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_lead_ammo"); gun_revolver_lead = new ItemGunBase(Gun357MagnumFactory.getRevolverLeadConfig()).setUnlocalizedName("gun_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_lead"); - gun_revolver_schrabidium_ammo = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("gun_revolver_schrabidium_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium_ammo"); + //gun_revolver_schrabidium_ammo = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("gun_revolver_schrabidium_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium_ammo"); gun_revolver_schrabidium = new ItemGunBase(Gun357MagnumFactory.getRevolverSchrabidiumConfig()).setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); - gun_revolver_cursed_ammo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_revolver_cursed_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed_ammo"); + //gun_revolver_cursed_ammo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_revolver_cursed_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed_ammo"); gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); - gun_revolver_nightmare_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare_ammo"); + //gun_revolver_nightmare_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare_ammo"); gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); - gun_revolver_nightmare2_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare2_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2_ammo"); + //gun_revolver_nightmare2_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare2_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2_ammo"); gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); //gun_revolver_pip_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_pip_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_revolver_pip_ammo"); gun_revolver_pip = new ItemGunBase(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); @@ -4395,7 +4480,7 @@ public class ModItems { gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); - gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); + gun_bio_revolver = new ItemGunBio(Gun45ACPFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); //gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); @@ -4416,7 +4501,7 @@ public class ModItems { gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); //gun_mp40_ammo = new Item().setUnlocalizedName("gun_mp40_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_mp40_ammo"); gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); - gun_thompson = new ItemGunBase(Gun9mmFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); + gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); //gun_uzi_ammo = new Item().setUnlocalizedName("gun_uzi_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uzi_ammo"); gun_uzi = new ItemGunBase(Gun22LRFactory.getUziConfig()).setUnlocalizedName("gun_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi"); gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); @@ -4451,11 +4536,10 @@ public class ModItems { gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); - ammo_566_gold = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_mp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); + //ammo_566_gold = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_mp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); gun_bolter = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter"); gun_bolter_digamma = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); - gun_brimstone = new GunBrimstone().setUnlocalizedName("gun_brimstone").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_brimstone"); gun_zomg = new ItemGunBase(GunEnergyFactory.getZOMGConfig()).setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); gun_revolver_inverted = new GunSuicide().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); gun_emp_ammo = new Item().setUnlocalizedName("gun_emp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp_ammo"); @@ -4568,6 +4652,7 @@ public class ModItems { peas = new ItemPeas().setUnlocalizedName("peas").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":peas"); marshmallow = new ItemMarshmallow().setUnlocalizedName("marshmallow").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":marshmallow"); cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); + quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango"); defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser"); @@ -4775,39 +4860,39 @@ public class ModItems { loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15"); loot_misc = new ItemLootCrate().setUnlocalizedName("loot_misc").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_misc"); - clip_revolver_iron = new ItemClip().setUnlocalizedName("clip_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_iron"); - clip_revolver = new ItemClip().setUnlocalizedName("clip_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver"); - clip_revolver_gold = new ItemClip().setUnlocalizedName("clip_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_gold"); - clip_revolver_lead = new ItemClip().setUnlocalizedName("clip_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_lead"); - clip_revolver_schrabidium = new ItemClip().setUnlocalizedName("clip_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_schrabidium"); - clip_revolver_cursed = new ItemClip().setUnlocalizedName("clip_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_cursed"); - clip_revolver_nightmare = new ItemClip().setUnlocalizedName("clip_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare"); - clip_revolver_nightmare2 = new ItemClip().setUnlocalizedName("clip_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare2"); - clip_revolver_pip = new ItemClip().setUnlocalizedName("clip_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_pip"); - clip_revolver_nopip = new ItemClip().setUnlocalizedName("clip_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nopip"); - clip_rpg = new ItemClip().setUnlocalizedName("clip_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_rpg_alt"); - clip_stinger = new ItemClip().setUnlocalizedName("clip_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_stinger"); - clip_fatman = new ItemClip().setUnlocalizedName("clip_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_fatman"); - clip_mirv = new ItemClip().setUnlocalizedName("clip_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mirv"); - clip_bf = new ItemClip().setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); - clip_mp40 = new ItemClip().setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp40"); - clip_uzi = new ItemClip().setUnlocalizedName("clip_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uzi"); - clip_uboinik = new ItemClip().setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uboinik"); - clip_lever_action = new ItemClip().setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_lever_action"); - clip_bolt_action = new ItemClip().setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_bolt_action"); - clip_osipr = new ItemClip().setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_osipr"); - clip_immolator = new ItemClip().setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_immolator"); - clip_cryolator = new ItemClip().setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_cryolator"); - clip_mp = new ItemClip().setUnlocalizedName("clip_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp"); - clip_xvl1456 = new ItemClip().setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_xvl1456"); - clip_emp = new ItemClip().setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_emp"); - clip_jack = new ItemClip().setUnlocalizedName("clip_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_jack"); - clip_spark = new ItemClip().setUnlocalizedName("clip_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_spark"); - clip_hp = new ItemClip().setUnlocalizedName("clip_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_hp"); - clip_euthanasia = new ItemClip().setUnlocalizedName("clip_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_euthanasia"); - clip_defabricator = new ItemClip().setUnlocalizedName("clip_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_defabricator"); + clip_revolver_iron = new ItemClip(ammo_357.stackFromEnum(20, Ammo357Magnum.IRON)).setUnlocalizedName("clip_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_iron"); + clip_revolver = new ItemClip(ammo_357.stackFromEnum(12, Ammo357Magnum.LEAD)).setUnlocalizedName("clip_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver"); + clip_revolver_gold = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.GOLD)).setUnlocalizedName("clip_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_gold"); + clip_revolver_lead = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NUCLEAR)).setUnlocalizedName("clip_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_lead"); + clip_revolver_schrabidium = new ItemClip(ammo_357.stackFromEnum(2, Ammo357Magnum.SCHRABIDIUM)).setUnlocalizedName("clip_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_schrabidium"); + clip_revolver_cursed = new ItemClip(ammo_357.stackFromEnum(17, Ammo357Magnum.STEEL)).setUnlocalizedName("clip_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_cursed"); + clip_revolver_nightmare = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE1)).setUnlocalizedName("clip_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare"); + clip_revolver_nightmare2 = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2)).setUnlocalizedName("clip_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare2"); + clip_revolver_pip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.PIP)).setUnlocalizedName("clip_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_pip"); + clip_revolver_nopip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.STOCK)).setUnlocalizedName("clip_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nopip"); + clip_rpg = new ItemClip(ammo_rocket.stackFromEnum(4, AmmoRocket.STOCK)).setUnlocalizedName("clip_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_rpg_alt"); + clip_stinger = new ItemClip(ammo_stinger_rocket.stackFromEnum(4, AmmoStinger.STOCK)).setUnlocalizedName("clip_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_stinger"); + clip_fatman = new ItemClip(ammo_nuke.stackFromEnum(6, AmmoFatman.STOCK)).setUnlocalizedName("clip_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_fatman"); + clip_mirv = new ItemClip(ammo_nuke.stackFromEnum(3, AmmoFatman.MIRV)).setUnlocalizedName("clip_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mirv"); + clip_bf = new ItemClip(ammo_nuke.stackFromEnum(2, AmmoFatman.BALEFIRE)).setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); + clip_mp40 = new ItemClip(ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK)).setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp40"); + clip_uzi = new ItemClip(ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK)).setUnlocalizedName("clip_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uzi"); + clip_uboinik = new ItemClip(ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK)).setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uboinik"); + clip_lever_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK)).setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_lever_action"); + clip_bolt_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG)).setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_bolt_action"); + clip_osipr = new ItemClip(new ItemStack(gun_osipr_ammo, 3)).setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_osipr"); + clip_immolator = new ItemClip(new ItemStack(gun_immolator_ammo, 60)).setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_immolator"); + clip_cryolator = new ItemClip(new ItemStack(gun_cryolator_ammo, 60)).setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_cryolator"); + clip_mp = new ItemClip(ammo_556.stackFromEnum(2, Ammo556mm.GOLD)).setUnlocalizedName("clip_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp"); + clip_xvl1456 = new ItemClip(new ItemStack(gun_xvl1456_ammo, 50)).setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_xvl1456"); + clip_emp = new ItemClip(new ItemStack(gun_emp_ammo, 12)).setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_emp"); + clip_jack = new ItemClip(new ItemStack(gun_jack_ammo, 12)).setUnlocalizedName("clip_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_jack"); + clip_spark = new ItemClip(new ItemStack(gun_spark_ammo, 12)).setUnlocalizedName("clip_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_spark"); + clip_hp = new ItemClip(new ItemStack(gun_hp_ammo, 24)).setUnlocalizedName("clip_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_hp"); + clip_euthanasia = new ItemClip(new ItemStack(gun_euthanasia_ammo, 32)).setUnlocalizedName("clip_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_euthanasia"); + clip_defabricator = new ItemClip(new ItemStack(gun_defabricator_ammo, 50)).setUnlocalizedName("clip_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_defabricator"); - ammo_container = new ItemClip().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_container"); + ammo_container = new ItemAmmoContainer().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_container"); ingot_euphemium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_euphemium"); nugget_euphemium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_euphemium"); @@ -6045,6 +6130,14 @@ public class ModItems { GameRegistry.registerItem(ball_tnt, ball_tnt.getUnlocalizedName()); GameRegistry.registerItem(ball_fireclay, ball_fireclay.getUnlocalizedName()); + //Ores + GameRegistry.registerItem(ore_bedrock, ore_bedrock.getUnlocalizedName()); + GameRegistry.registerItem(ore_centrifuged, ore_centrifuged.getUnlocalizedName()); + GameRegistry.registerItem(ore_cleaned, ore_cleaned.getUnlocalizedName()); + GameRegistry.registerItem(ore_separated, ore_separated.getUnlocalizedName()); + GameRegistry.registerItem(ore_purified, ore_purified.getUnlocalizedName()); + GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName()); + //Crystals GameRegistry.registerItem(crystal_coal, crystal_coal.getUnlocalizedName()); GameRegistry.registerItem(crystal_iron, crystal_iron.getUnlocalizedName()); @@ -6392,11 +6485,14 @@ public class ModItems { GameRegistry.registerItem(assembly_nopip, assembly_nopip.getUnlocalizedName()); GameRegistry.registerItem(assembly_smg, assembly_smg.getUnlocalizedName()); GameRegistry.registerItem(assembly_556, assembly_556.getUnlocalizedName()); + GameRegistry.registerItem(assembly_762, assembly_762.getUnlocalizedName()); + GameRegistry.registerItem(assembly_45, assembly_45.getUnlocalizedName()); GameRegistry.registerItem(assembly_uzi, assembly_uzi.getUnlocalizedName()); GameRegistry.registerItem(assembly_lacunae, assembly_lacunae.getUnlocalizedName()); GameRegistry.registerItem(assembly_actionexpress, assembly_actionexpress.getUnlocalizedName()); GameRegistry.registerItem(assembly_calamity, assembly_calamity.getUnlocalizedName()); GameRegistry.registerItem(assembly_nuke, assembly_nuke.getUnlocalizedName()); + GameRegistry.registerItem(assembly_luna, assembly_luna.getUnlocalizedName()); //Folly Parts GameRegistry.registerItem(folly_shell, folly_shell.getUnlocalizedName()); @@ -6490,7 +6586,8 @@ public class ModItems { GameRegistry.registerItem(particle_digamma, particle_digamma.getUnlocalizedName()); GameRegistry.registerItem(particle_lutece, particle_lutece.getUnlocalizedName()); - //OMG how the hell is that even possible!? + //Singularities, black holes and other cosmic horrors + GameRegistry.registerItem(singularity_micro, singularity_micro.getUnlocalizedName()); GameRegistry.registerItem(singularity, singularity.getUnlocalizedName()); GameRegistry.registerItem(singularity_counter_resonant, singularity_counter_resonant.getUnlocalizedName()); GameRegistry.registerItem(singularity_super_heated, singularity_super_heated.getUnlocalizedName()); @@ -7234,7 +7331,6 @@ public class ModItems { GameRegistry.registerItem(gun_mp, gun_mp.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter_digamma, gun_bolter_digamma.getUnlocalizedName()); - GameRegistry.registerItem(gun_brimstone, gun_brimstone.getUnlocalizedName()); GameRegistry.registerItem(gun_zomg, gun_zomg.getUnlocalizedName()); GameRegistry.registerItem(gun_emp, gun_emp.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_inverted, gun_revolver_inverted.getUnlocalizedName()); @@ -7256,7 +7352,7 @@ public class ModItems { GameRegistry.registerItem(gun_glass_cannon, gun_glass_cannon.getUnlocalizedName()); //Ammo - GameRegistry.registerItem(gun_revolver_iron_ammo, gun_revolver_iron_ammo.getUnlocalizedName()); + /*GameRegistry.registerItem(gun_revolver_iron_ammo, gun_revolver_iron_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_ammo, gun_revolver_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_gold_ammo, gun_revolver_gold_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_lead_ammo, gun_revolver_lead_ammo.getUnlocalizedName()); @@ -7264,7 +7360,7 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_cursed_ammo, gun_revolver_cursed_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_nightmare_ammo, gun_revolver_nightmare_ammo.getUnlocalizedName()); GameRegistry.registerItem(ammo_357_desh, ammo_357_desh.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_nightmare2_ammo, gun_revolver_nightmare2_ammo.getUnlocalizedName()); + GameRegistry.registerItem(gun_revolver_nightmare2_ammo, gun_revolver_nightmare2_ammo.getUnlocalizedName());*/ //GameRegistry.registerItem(gun_revolver_pip_ammo, gun_revolver_pip_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_revolver_nopip_ammo, gun_revolver_nopip_ammo.getUnlocalizedName()); //GameRegistry.registerItem(gun_calamity_ammo, gun_calamity_ammo.getUnlocalizedName()); @@ -7293,6 +7389,31 @@ public class ModItems { GameRegistry.registerItem(gun_euthanasia_ammo, gun_euthanasia_ammo.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge, ammo_12gauge.getUnlocalizedName()); + GameRegistry.registerItem(ammo_20gauge, ammo_20gauge.getUnlocalizedName()); + GameRegistry.registerItem(ammo_4gauge, ammo_4gauge.getUnlocalizedName()); + GameRegistry.registerItem(ammo_357, ammo_357.getUnlocalizedName()); + GameRegistry.registerItem(ammo_44, ammo_44.getUnlocalizedName()); + GameRegistry.registerItem(ammo_45, ammo_45.getUnlocalizedName()); + GameRegistry.registerItem(ammo_5mm, ammo_5mm.getUnlocalizedName()); + GameRegistry.registerItem(ammo_9mm, ammo_9mm.getUnlocalizedName()); + GameRegistry.registerItem(ammo_556, ammo_556.getUnlocalizedName()); + GameRegistry.registerItem(ammo_762, ammo_762.getUnlocalizedName()); + GameRegistry.registerItem(ammo_22lr, ammo_22lr.getUnlocalizedName()); + GameRegistry.registerItem(ammo_50ae, ammo_50ae.getUnlocalizedName()); + GameRegistry.registerItem(ammo_50bmg, ammo_50bmg.getUnlocalizedName()); + GameRegistry.registerItem(ammo_75bolt, ammo_75bolt.getUnlocalizedName()); + GameRegistry.registerItem(ammo_nuke, ammo_nuke.getUnlocalizedName()); + GameRegistry.registerItem(ammo_fuel, ammo_fuel.getUnlocalizedName()); + GameRegistry.registerItem(ammo_fireext, ammo_fireext.getUnlocalizedName()); + GameRegistry.registerItem(ammo_cell, ammo_cell.getUnlocalizedName()); + GameRegistry.registerItem(ammo_dart, ammo_dart.getUnlocalizedName()); + GameRegistry.registerItem(ammo_rocket, ammo_rocket.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket, ammo_stinger_rocket.getUnlocalizedName()); + GameRegistry.registerItem(ammo_luna_sniper, ammo_luna_sniper.getUnlocalizedName()); + GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell, ammo_shell.getUnlocalizedName()); + + /*GameRegistry.registerItem(ammo_12gauge, ammo_12gauge.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge_incendiary, ammo_12gauge_incendiary.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge_shrapnel, ammo_12gauge_shrapnel.getUnlocalizedName()); GameRegistry.registerItem(ammo_12gauge_du, ammo_12gauge_du.getUnlocalizedName()); @@ -7426,11 +7547,11 @@ public class ModItems { GameRegistry.registerItem(ammo_shell_explosive, ammo_shell_explosive.getUnlocalizedName()); GameRegistry.registerItem(ammo_shell_apfsds_t, ammo_shell_apfsds_t.getUnlocalizedName()); GameRegistry.registerItem(ammo_shell_apfsds_du, ammo_shell_apfsds_du.getUnlocalizedName()); - GameRegistry.registerItem(ammo_shell_w9, ammo_shell_w9.getUnlocalizedName()); + GameRegistry.registerItem(ammo_shell_w9, ammo_shell_w9.getUnlocalizedName());*/ GameRegistry.registerItem(ammo_dgk, ammo_dgk.getUnlocalizedName()); GameRegistry.registerItem(ammo_arty, ammo_arty.getUnlocalizedName()); GameRegistry.registerItem(ammo_himars, ammo_himars.getUnlocalizedName()); - GameRegistry.registerItem(ammo_nuke, ammo_nuke.getUnlocalizedName()); + /*GameRegistry.registerItem(ammo_nuke, ammo_nuke.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke_low, ammo_nuke_low.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke_high, ammo_nuke_high.getUnlocalizedName()); GameRegistry.registerItem(ammo_nuke_tots, ammo_nuke_tots.getUnlocalizedName()); @@ -7441,7 +7562,7 @@ public class ModItems { GameRegistry.registerItem(ammo_mirv_low, ammo_mirv_low.getUnlocalizedName()); GameRegistry.registerItem(ammo_mirv_high, ammo_mirv_high.getUnlocalizedName()); GameRegistry.registerItem(ammo_mirv_safe, ammo_mirv_safe.getUnlocalizedName()); - GameRegistry.registerItem(ammo_mirv_special, ammo_mirv_special.getUnlocalizedName()); + GameRegistry.registerItem(ammo_mirv_special, ammo_mirv_special.getUnlocalizedName());*/ GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); @@ -7713,6 +7834,7 @@ public class ModItems { GameRegistry.registerItem(peas, peas.getUnlocalizedName()); GameRegistry.registerItem(marshmallow, marshmallow.getUnlocalizedName()); GameRegistry.registerItem(cheese, cheese.getUnlocalizedName()); + GameRegistry.registerItem(quesadilla, quesadilla.getUnlocalizedName()); GameRegistry.registerItem(med_ipecac, med_ipecac.getUnlocalizedName()); GameRegistry.registerItem(med_ptsd, med_ptsd.getUnlocalizedName()); GameRegistry.registerItem(canteen_13, canteen_13.getUnlocalizedName()); @@ -8277,5 +8399,151 @@ public class ModItems { GameRegistry.registerItem(digamma_up_on_top, digamma_up_on_top.getUnlocalizedName()); GameRegistry.registerItem(mysteryshovel, mysteryshovel.getUnlocalizedName()); GameRegistry.registerItem(memory, memory.getUnlocalizedName()); + + addRemap("ammo_nuke_tots", 5594, ammo_nuke, AmmoFatman.TOTS); + addRemap("ammo_12gauge_incendiary", 5455, ammo_12gauge, Ammo12Gauge.INCENDIARY); + addRemap("ammo_12gauge_shrapnel", 5456, ammo_12gauge, Ammo12Gauge.SHRAPNEL); + addRemap("ammo_stinger_rocket_bones", 5572, ammo_stinger_rocket, AmmoStinger.BONES); + addRemap("ammo_556_flechette_phosphorus", 5515, ammo_556, Ammo556mm.FLECHETTE_PHOSPHORUS); + addRemap("ammo_50ae_chlorophyte", 5527, ammo_50ae, Ammo50AE.CHLOROPHYTE); + addRemap("gun_revolver_nightmare2_ammo", 5440, ammo_357, Ammo357Magnum.NIGHTMARE2); + addRemap("gun_revolver_iron_ammo", 5432, ammo_357, Ammo357Magnum.IRON); + addRemap("ammo_50bmg_star", 5534, ammo_50bmg, Ammo50BMG.STAR); + addRemap("ammo_556_star", 5509, ammo_556, Ammo556mm.STAR); + addRemap("ammo_556_flechette", 5513, ammo_556, Ammo556mm.FLECHETTE); + addRemap("ammo_12gauge_du", 5457, ammo_12gauge, Ammo12Gauge.DU); + addRemap("ammo_shell_apfsds_t", 5586, ammo_shell, Ammo240Shell.APFSDS_T); + addRemap("ammo_4gauge_void", 5481, ammo_4gauge, Ammo4Gauge.VOID); + addRemap("ammo_shell_apfsds_du", 5587, ammo_shell, Ammo240Shell.APFSDS_DU); + addRemap("ammo_fireext_foam", 5549, ammo_fireext, AmmoFireExt.FOAM); + addRemap("ammo_556_flechette_chlorophyte", 5517, ammo_556, Ammo556mm.FLECHETTE_CHLOROPHYTE); + addRemap("ammo_fuel_vaporizer", 5546, ammo_fuel, AmmoFlamethrower.VAPORIZER); + addRemap("ammo_4gauge_titan", 5482, ammo_4gauge, Ammo4Gauge.QUACK); + addRemap("ammo_556_phosphorus", 5506, ammo_556, Ammo556mm.PHOSPHORUS); + addRemap("ammo_4gauge_flechette_phosphorus", 5473, ammo_4gauge, Ammo4Gauge.FLECHETTE_PHOSPHORUS); + addRemap("ammo_shell_w9", 5588, ammo_shell, Ammo240Shell.W9); + addRemap("gun_revolver_gold_ammo", 5434, ammo_357, Ammo357Magnum.GOLD); + addRemap("ammo_556_flechette_du", 5516, ammo_556, Ammo556mm.FLECHETTE_DU); + addRemap("ammo_20gauge_incendiary", 5463, ammo_20gauge, Ammo20Gauge.INCENDIARY); + addRemap("ammo_shell_explosive", 5585, ammo_shell, Ammo240Shell.EXPLOSIVE); + addRemap("ammo_20gauge_explosive", 5465, ammo_20gauge, Ammo20Gauge.EXPLOSIVE); + addRemap("ammo_556_k", 5519, ammo_556, Ammo556mm.K); + addRemap("ammo_44_phosphorus", 5487, ammo_44, Ammo44Magnum.PHOSPHORUS); + addRemap("gun_revolver_cursed_ammo", 5437, ammo_357, Ammo357Magnum.STEEL); + addRemap("ammo_556_flechette_incendiary", 5514, ammo_556, Ammo556mm.FLECHETTE_INCENDIARY); + addRemap("ammo_75bolt_he", 5542, ammo_75bolt, Ammo75Bolt.HE); + addRemap("ammo_20gauge_flechette", 5462, ammo_20gauge, Ammo20Gauge.FLECHETTE); + addRemap("ammo_rocket_shrapnel", 5559, ammo_rocket, AmmoRocket.SHRAPNEL); + addRemap("ammo_556_chlorophyte", 5510, ammo_556, Ammo556mm.CHLOROPHYTE); + addRemap("ammo_12gauge_marauder", 5459, ammo_12gauge, Ammo12Gauge.MARAUDER); + addRemap("ammo_50bmg_chlorophyte", 5535, ammo_50bmg, Ammo50BMG.CHLOROPHYTE); + addRemap("ammo_rocket_emp", 5560, ammo_rocket, AmmoRocket.EMP); + addRemap("ammo_4gauge_vampire", 5480, ammo_4gauge, Ammo4Gauge.VAMPIRE); + addRemap("ammo_5mm_du", 5496, ammo_5mm, Ammo5mm.DU); + addRemap("ammo_9mm_rocket", 5503, ammo_9mm, Ammo9mm.ROCKET); + addRemap("gun_revolver_ammo", 5433, ammo_357, Ammo357Magnum.LEAD); + addRemap("ammo_grenade_sleek", 5580, ammo_grenade, AmmoGrenade.SLEEK); + addRemap("ammo_4gauge_slug", 5471, ammo_4gauge, Ammo4Gauge.SLUG); + addRemap("ammo_4gauge_kampf", 5477, ammo_4gauge, Ammo4Gauge.KAMPF); + addRemap("ammo_20gauge_shrapnel", 5464, ammo_20gauge, Ammo20Gauge.SHRAPNEL); + addRemap("ammo_5mm_explosive", 5495, ammo_5mm, Ammo5mm.EXPLOSIVE); + addRemap("gun_revolver_nightmare_ammo", 5438, ammo_357, Ammo357Magnum.NIGHTMARE1); + addRemap("ammo_stinger_rocket_he", 5569, ammo_stinger_rocket, AmmoStinger.HE); + addRemap("ammo_20gauge_caustic", 5466, ammo_20gauge, Ammo20Gauge.CAUSTIC); + addRemap("ammo_4gauge_semtex", 5475, ammo_4gauge, Ammo4Gauge.MINING); + addRemap("ammo_grenade_kampf", 5583, ammo_grenade, AmmoGrenade.KAMPF); + addRemap("ammo_556_flechette_sleek", 5518, ammo_556, Ammo556mm.FLECHETTE_SLEEK); + addRemap("ammo_mirv_special", 5602, ammo_nuke, AmmoFatman.MIRV_SPECIAL); + addRemap("ammo_50bmg_flechette", 5536, ammo_50bmg, Ammo50BMG.FLECHETTE); + addRemap("ammo_556_sleek", 5511, ammo_556, Ammo556mm.SLEEK); + addRemap("ammo_9mm_chlorophyte", 5502, ammo_9mm, Ammo9mm.CHLOROPHYTE); + addRemap("ammo_nuke_barrel", 5597, ammo_nuke, AmmoFatman.BARREL); + addRemap("ammo_nuke_low", 5592, ammo_nuke, AmmoFatman.LOW); + addRemap("ammo_fireext_sand", 5550, ammo_fireext, AmmoFireExt.SAND); + addRemap("ammo_44_silver", 5492, ammo_44, Ammo44Magnum.SILVER); + addRemap("ammo_grenade_concussion", 5578, ammo_grenade, AmmoGrenade.CONCUSSION); + addRemap("ammo_20gauge_shock", 5467, ammo_20gauge, Ammo20Gauge.SHOCK); + addRemap("ammo_4gauge_flechette", 5472, ammo_4gauge, Ammo4Gauge.FLECHETTE); + addRemap("ammo_rocket_toxic", 5562, ammo_rocket, AmmoRocket.CHLORINE); + addRemap("ammo_50bmg_explosive", 5531, ammo_50bmg, Ammo50BMG.EXPLOSIVE); + addRemap("ammo_grenade_finned", 5579, ammo_grenade, AmmoGrenade.FINNED); + addRemap("ammo_dart_nuclear", 5553, ammo_dart, AmmoDart.NUCLEAR); + addRemap("ammo_grenade_phosphorus", 5576, ammo_grenade, AmmoGrenade.PHOSPHORUS); + addRemap("ammo_5mm_star", 5497, ammo_5mm, Ammo5mm.STAR); + addRemap("ammo_4gauge_sleek", 5483, ammo_4gauge, Ammo4Gauge.SLEEK); + addRemap("ammo_mirv_high", 5600, ammo_nuke, AmmoFatman.MIRV_HIGH); + addRemap("ammo_5mm_chlorophyte", 5498, ammo_5mm, Ammo5mm.CHLOROPHYTE); + addRemap("ammo_50bmg_flechette_po", 5538, ammo_50bmg, Ammo50BMG.FLECHETTE_PO); + addRemap("ammo_50ae_star", 5526, ammo_50ae, Ammo50AE.STAR); + addRemap("ammo_50bmg_flechette_am", 5537, ammo_50bmg, Ammo50BMG.FLECHETTE_AM); + addRemap("ammo_9mm_ap", 5500, ammo_9mm, Ammo9mm.AP); + addRemap("ammo_mirv", 5598, ammo_nuke, AmmoFatman.MIRV); + addRemap("ammo_4gauge_claw", 5479, ammo_4gauge, Ammo4Gauge.CLAW); + addRemap("ammo_rocket_glare", 5561, ammo_rocket, AmmoRocket.GLARE); + addRemap("ammo_stinger_rocket_incendiary", 5570, ammo_stinger_rocket, AmmoStinger.INCENDIARY); + addRemap("ammo_rocket_incendiary", 5557, ammo_rocket, AmmoRocket.INCENDIARY); + addRemap("ammo_50ae_ap", 5524, ammo_50ae, Ammo50AE.AP); + addRemap("ammo_mirv_safe", 5601, ammo_nuke, AmmoFatman.MIRV_SAFE); + addRemap("ammo_4gauge_canister", 5478, ammo_4gauge, Ammo4Gauge.CANISTER); + addRemap("ammo_50ae_du", 5525, ammo_50ae, Ammo50AE.DU); + addRemap("ammo_44_ap", 5485, ammo_44, Ammo44Magnum.AP); + addRemap("ammo_44_bj", 5491, ammo_44, Ammo44Magnum.BJ); + addRemap("ammo_rocket_sleek", 5564, ammo_rocket, AmmoRocket.SLEEK); + addRemap("ammo_nuke_high", 5593, ammo_nuke, AmmoFatman.HIGH); + addRemap("ammo_grenade_incendiary", 5575, ammo_grenade, AmmoGrenade.INCENDIARY); + addRemap("ammo_44_du", 5486, ammo_44, Ammo44Magnum.DU); + addRemap("ammo_50bmg_ap", 5532, ammo_50bmg, Ammo50BMG.AP); + addRemap("ammo_50bmg_du", 5533, ammo_50bmg, Ammo50BMG.DU); + addRemap("ammo_9mm_du", 5501, ammo_9mm, Ammo9mm.DU); + addRemap("ammo_20gauge_slug", 5461, ammo_20gauge, Ammo20Gauge.SLUG); + addRemap("ammo_grenade_tracer", 5582, ammo_grenade, AmmoGrenade.TRACER); + addRemap("ammo_fuel_phosphorus", 5545, ammo_fuel, AmmoFlamethrower.PHOSPHORUS); + addRemap("ammo_44_pip", 5490, ammo_44, Ammo44Magnum.PIP); + addRemap("ammo_grenade_toxic", 5577, ammo_grenade, AmmoGrenade.CHLORINE); + addRemap("ammo_nuke_safe", 5595, ammo_nuke, AmmoFatman.SAFE); + addRemap("gun_mp_ammo", 5505, ammo_556, Ammo556mm.GOLD); + addRemap("gun_revolver_lead_ammo", 5435, ammo_357, Ammo357Magnum.NUCLEAR); + addRemap("ammo_stinger_rocket_nuclear", 5571, ammo_stinger_rocket, AmmoStinger.NUCLEAR); + addRemap("ammo_grenade_nuclear", 5581, ammo_grenade, AmmoGrenade.NUCLEAR); + addRemap("ammo_rocket_digamma", 5567, ammo_rocket, AmmoRocket.DIGAMMA); + addRemap("ammo_rocket_nuclear", 5565, ammo_rocket, AmmoRocket.NUCLEAR); + addRemap("ammo_mirv_low", 5599, ammo_nuke, AmmoFatman.MIRV_LOW); + addRemap("ammo_44_chlorophyte", 5489, ammo_44, Ammo44Magnum.CHLOROPHYTE); + addRemap("ammo_22lr_chlorophyte", 5522, ammo_22lr, Ammo22LR.CHLOROPHYTE); + addRemap("ammo_12gauge_sleek", 5458, ammo_12gauge, Ammo12Gauge.SLEEK); + addRemap("ammo_20gauge_sleek", 5469, ammo_20gauge, Ammo20Gauge.SLEEK); + addRemap("ammo_4gauge_explosive", 5474, ammo_4gauge, Ammo4Gauge.EXPLOSIVE); + addRemap("ammo_50bmg_incendiary", 5529, ammo_50bmg, Ammo50BMG.INCENDIARY); + addRemap("ammo_556_du", 5508, ammo_556, Ammo556mm.DU); + addRemap("ammo_fuel_napalm", 5544, ammo_fuel, AmmoFlamethrower.NAPALM); + addRemap("gun_revolver_schrabidium_ammo", 5436, ammo_357, Ammo357Magnum.SCHRABIDIUM); + addRemap("ammo_556_ap", 5507, ammo_556, Ammo556mm.AP); + addRemap("ammo_20gauge_wither", 5468, ammo_20gauge, Ammo20Gauge.WITHER); + addRemap("ammo_rocket_rpc", 5566, ammo_rocket, AmmoRocket.RPC); + addRemap("ammo_fuel_gas", 5547, ammo_fuel, AmmoFlamethrower.CHLORINE); + addRemap("ammo_22lr_ap", 5521, ammo_22lr, Ammo22LR.AP); + addRemap("ammo_grenade_he", 5574, ammo_grenade, AmmoGrenade.HE); + addRemap("ammo_4gauge_balefire", 5476, ammo_4gauge, Ammo4Gauge.BALEFIRE); + addRemap("ammo_357_desh", 5439, ammo_357, Ammo357Magnum.DESH); + addRemap("ammo_nuke_pumpkin", 5596, ammo_nuke, AmmoFatman.PUMPKIN); + addRemap("ammo_44_star", 5488, ammo_44, Ammo44Magnum.STAR); + addRemap("ammo_50bmg_sleek", 5539, ammo_50bmg, Ammo50BMG.SLEEK); + addRemap("ammo_dart_nerf", 5554, ammo_dart, AmmoDart.NERF); + addRemap("ammo_50bmg_phosphorus", 5530, ammo_50bmg, Ammo50BMG.PHOSPHORUS); + addRemap("ammo_44_rocket", 5493, ammo_44, Ammo44Magnum.ROCKET); + addRemap("ammo_rocket_he", 5556, ammo_rocket, AmmoRocket.HE); + addRemap("ammo_556_tracer", 5512, ammo_556, Ammo556mm.TRACER); + addRemap("ammo_75bolt_incendiary", 5541, ammo_75bolt, Ammo75Bolt.INCENDIARY); + addRemap("ammo_rocket_canister", 5563, ammo_rocket, AmmoRocket.CANISTER); + addRemap("ammo_rocket_phosphorus", 5558, ammo_rocket, AmmoRocket.PHOSPHORUS); + } + + public static void addRemap(String unloc, int removoingTheseWouldTakeForever, Item item, Enum sub) { + addRemap(unloc, item, sub.ordinal()); + } + + public static void addRemap(String unloc, Item item, int meta) { + Item remap = new ItemRemap(item, meta).setUnlocalizedName(unloc).setTextureName(RefStrings.MODID + ":plate_armor_titanium"); + GameRegistry.registerItem(remap, remap.getUnlocalizedName()); } } diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 661661140..abfd05a2c 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -220,6 +220,10 @@ public class ItemLemon extends ItemFood { if(this == ModItems.peas) { list.add("He accepts your offering."); } + + if(this == ModItems.quesadilla) { + list.add("That's what a 50 year old yeast infection does to you."); + } } diff --git a/src/main/java/com/hbm/items/machine/ItemDrillbit.java b/src/main/java/com/hbm/items/machine/ItemDrillbit.java index ce7ab09e9..d281c0b1e 100644 --- a/src/main/java/com/hbm/items/machine/ItemDrillbit.java +++ b/src/main/java/com/hbm/items/machine/ItemDrillbit.java @@ -43,26 +43,29 @@ public class ItemDrillbit extends ItemEnumMulti { list.add(EnumChatFormatting.YELLOW + "Speed: " + ((int) (type.speed * 100)) + "%"); list.add(EnumChatFormatting.YELLOW + "Tier: " + type.tier); + if(type.fortune > 0) list.add(EnumChatFormatting.LIGHT_PURPLE + "Fortune " + type.fortune); if(type.vein) list.add(EnumChatFormatting.GREEN + "Vein miner"); if(type.silk) list.add(EnumChatFormatting.GREEN + "Silk touch"); } public static enum EnumDrillType { - STEEL (1.0D, 1, false, false), - STEEL_DIAMOND (1.0D, 1, false, true), - HSS (1.5D, 2, true, false), - HSS_DIAMOND (1.5D, 2, true, true), - DESH (2.5D, 3, true, true), - DESH_DIAMOND (2.5D, 3, true, true); + STEEL (1.0D, 1, 0, false, false), + STEEL_DIAMOND (1.0D, 1, 2, false, true), + HSS (1.5D, 2, 0, true, false), + HSS_DIAMOND (1.5D, 2, 3, true, true), + DESH (2.5D, 3, 1, true, true), + DESH_DIAMOND (2.5D, 3, 4, true, true); public double speed; public int tier; + public int fortune; public boolean vein; public boolean silk; - private EnumDrillType(double speed, int tier, boolean vein, boolean silk) { + private EnumDrillType(double speed, int tier, int fortune, boolean vein, boolean silk) { this.speed = speed; this.tier = tier; + this.fortune = fortune; this.vein = vein; this.silk = silk; } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 276a3d72e..f15d2ad05 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -9,13 +9,13 @@ import com.hbm.items.ModItems; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; public class ItemFluidIcon extends Item { @@ -71,8 +71,9 @@ public class ItemFluidIcon extends Item { return stack.getTagCompound().getInteger("fill"); } + @Override public String getItemStackDisplayName(ItemStack stack) { - String s = (I18n.format(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); + String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); if(s != null) { return s; @@ -81,27 +82,6 @@ public class ItemFluidIcon extends Item { return "Unknown"; } - /* - * @Override - * - * @SideOnly(Side.CLIENT) public boolean requiresMultipleRenderPasses() { - * return true; } - * - * @Override - * - * @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister - * p_94581_1_) { super.registerIcons(p_94581_1_); - * - * this.overlayIcon = - * p_94581_1_.registerIcon("hbm:fluid_identifier_overlay"); } - * - * @Override - * - * @SideOnly(Side.CLIENT) public IIcon getIconFromDamageForRenderPass(int - * p_77618_1_, int p_77618_2_) { return p_77618_2_ == 1 ? this.overlayIcon : - * super.getIconFromDamageForRenderPass(p_77618_1_, p_77618_2_); } - */ - @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int p_82790_2_) { diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java new file mode 100644 index 000000000..691933e8a --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -0,0 +1,80 @@ +package com.hbm.items.special; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.lib.RefStrings; +import com.hbm.util.EnumUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +public class ItemBedrockOre extends ItemEnumMulti { + + protected IIcon overlayIcon; + + public ItemBedrockOre() { + super(EnumBedrockOre.class, false, false); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister p_94581_1_) { + super.registerIcons(p_94581_1_); + + this.overlayIcon = p_94581_1_.registerIcon(RefStrings.MODID + ":ore_overlay"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + return pass == 1 ? this.overlayIcon : super.getIconFromDamageForRenderPass(meta, pass); + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + + if(pass == 1) { + EnumBedrockOre ore = EnumUtil.grabEnumSafely(EnumBedrockOre.class, stack.getItemDamage()); + return ore.color; + } + + return 0xffffff; + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + + EnumBedrockOre ore = EnumUtil.grabEnumSafely(EnumBedrockOre.class, stack.getItemDamage()); + String oreName = StatCollector.translateToLocal("item.ore." + ore.oreName.toLowerCase()); + return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".name", oreName); + } + + public static enum EnumBedrockOre { + IRON("Iron", 0xE2C0AA), + COPPER("Copper", 0xEC9A63), + BORAX("Borax", 0xE4BE74), + ASBESTOS("Asbestos", 0xBFBFB9), + NIOBIUM("Niobium", 0xAF58D8), + TITANIUM("Titanium", 0xF2EFE2), + TUNGSTEN("Tungsten", 0x2C293C), + GOLD("Gold", 0xF9D738); + + public String oreName; + public int color; + + private EnumBedrockOre(String name, int color) { + this.oreName = name; + this.color = color; + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java b/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java new file mode 100644 index 000000000..2657bb7fe --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java @@ -0,0 +1,67 @@ +package com.hbm.items.tool; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGunBase; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemAmmoContainer extends Item { + + public static final List configBlacklist = new ArrayList(); + + public ItemAmmoContainer() { + this.setMaxDamage(1); + + configBlacklist.add(BulletConfigSyncingUtil.SCHRABIDIUM_REVOLVER); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + for(ItemStack slot : player.inventory.mainInventory) { + + if(slot == null || !(slot.getItem() instanceof ItemGunBase)) continue; + List cfgs = new ArrayList(); + ItemGunBase gun = (ItemGunBase) slot.getItem(); + if(gun.mainConfig != null) cfgs.add(gun.mainConfig); + if(gun.altConfig != null) cfgs.add(gun.altConfig); + + for(GunConfiguration cfg : cfgs) { + if(cfg.config.isEmpty()) continue; + Integer first = cfg.config.get(0); + if(configBlacklist.contains(first)) continue; + BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(first); + if(bullet == null) continue; + if(bullet.ammo == null) continue; + + ItemStack ammo = bullet.ammo.toStack(); + //for belt-fed guns: 64 is main config, 1 if alt config + //for reloaded guns: mag capacity divided by reload amount (equals one stack) + ammo.stackSize = cfg.reloadType == cfg.RELOAD_NONE ? cfg == gun.mainConfig ? 64 : 1 : (int) Math.ceil((double) cfg.ammoCap / (double) bullet.ammoCount); + player.inventory.addItemStackToInventory(ammo); + } + } + + stack.stackSize--; + if(stack.stackSize <= 0) + stack.damageItem(5, player); + + return stack; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(this == ModItems.ammo_container) { + list.add("Gives ammo for most held weapons."); + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 3d2271349..e98c71ad1 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -3,17 +3,23 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.config.WorldConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.logic.EntityTomBlast; import com.hbm.entity.mob.siege.EntitySiegeTunneler; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBookLore; import com.hbm.items.special.ItemBookLore.BookLoreType; import com.hbm.items.special.ItemKitCustom; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; import com.hbm.world.feature.OilSpot; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.EntityLiving; @@ -44,11 +50,11 @@ public class ItemWandD extends Item { if(pos != null) { - /*TomSaveData data = TomSaveData.forWorld(world); + TomSaveData data = TomSaveData.forWorld(world); data.impact = false; data.fire = 0F; data.dust = 0F; - data.markDirty();*/ + data.markDirty(); /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; @@ -74,19 +80,17 @@ public class ItemWandD extends Item { /*OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 20, 500);*/ - EntityNukeTorex torex = new EntityNukeTorex(world); + /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.getDataWatcher().updateObject(10, 1.5F); world.spawnEntityInWorld(torex); + EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); + IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); + EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(torex.getEntityId()); + entry.blocksDistanceThreshold = 1000; + world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ));*/ - EntityTracker entitytracker = ((WorldServer)world).getEntityTracker(); - //ReflectionHelper.setPrivateValue(EntityTracker.class, entitytracker, 1000, "entityViewDistance"); - - IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); - EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(torex.getEntityId()); - entry.blocksDistanceThreshold = 1000; - - world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ)); + //DungeonToolbox.generateBedrockOreWithChance(world, world.rand, pos.blockX, pos.blockZ, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, 1); /*EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); tunneler.setPosition(pos.blockX, pos.blockY + 1, pos.blockZ); diff --git a/src/main/java/com/hbm/items/weapon/GunBoltAction.java b/src/main/java/com/hbm/items/weapon/GunBoltAction.java deleted file mode 100644 index 31997695e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunBoltAction.java +++ /dev/null @@ -1,281 +0,0 @@ -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); - if(this == ModItems.gun_bolt_action_saturnite) { - this.setMaxDamage(2500); - dmgMin = 24; - dmgMax = 36; - } - } - - /** - * 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.ammo_20gauge_slug)) { - 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)); - - if(this == ModItems.gun_bolt_action_saturnite) - entityarrow1.fire = true; - - 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.ammo_20gauge_slug); - } - - 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(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."); - } - if(this == ModItems.gun_bolt_action_saturnite) { - list.add("Shiny shooter made from D-25A alloy."); - } - list.add(""); - list.add("Ammo: 12x74 Slug"); - - if(this == ModItems.gun_bolt_action_saturnite) { - list.add("Damage: 24 - 36"); - list.add("Sets enemy on fire."); - } else { - 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_) { - - if(this == ModItems.gun_bolt_action_saturnite) - return EnumRarity.rare; - - return EnumRarity.uncommon; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunBrimstone.java b/src/main/java/com/hbm/items/weapon/GunBrimstone.java deleted file mode 100644 index 861143919..000000000 --- a/src/main/java/com/hbm/items/weapon/GunBrimstone.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLaser; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunBrimstone extends Item { - - Random rand = new Random(); - - public GunBrimstone() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_566_gold)) && count % 1 == 0) { - - - EntityLaser laser = new EntityLaser(world, player); - - //world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.gun_dash_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(laser); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunMP.java b/src/main/java/com/hbm/items/weapon/GunMP.java deleted file mode 100644 index 84834d36a..000000000 --- a/src/main/java/com/hbm/items/weapon/GunMP.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunMP extends Item { - - Random rand = new Random(); - - public GunMP() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_566_gold)) && count % 3 == 0) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 100, 150, false, false); - entityarrow.setDamage(100 + rand.nextInt(50)); - - // world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + - // (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.ammo_566_gold); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Isn't that name a little contrary,"); - list.add("you can't be a pacifist AND"); - list.add("shoot people. Logic errors aside,"); - list.add("whose blood is that? The former"); - list.add("user's? The victim's? Both?"); - list.add(""); - list.add("Ammo: Small Propellantless Machine Gun Round"); - list.add("Damage: 100 - 150"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunNightmare.java b/src/main/java/com/hbm/items/weapon/GunNightmare.java deleted file mode 100644 index c1d6e1086..000000000 --- a/src/main/java/com/hbm/items/weapon/GunNightmare.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.entity.projectile.EntityNightmareBlast; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -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 GunNightmare extends Item { - private int dmgMin; - private int dmgMax; - public Item ammo; - Random rand = new Random(); - - public GunNightmare() { - - this.maxStackSize = 1; - - if (this == ModItems.gun_revolver_nightmare) { - this.dmgMin = 1; - this.dmgMax = 100; - this.ammo = ModItems.gun_revolver_nightmare_ammo; - } - if (this == ModItems.gun_revolver_nightmare2) { - this.dmgMin = 25; - this.dmgMax = 150; - this.ammo = ModItems.gun_revolver_nightmare2_ammo; - } - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - return EnumRarity.uncommon; - } - - @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; - 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; - } - - if (this == ModItems.gun_revolver_nightmare) { - EntityBullet entityarrow; - entityarrow = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F, dmgMin, dmgMax, false, false); - entityarrow.setDamage(1 + rand.nextInt(99)); - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow); - } - } - - if (this == ModItems.gun_revolver_nightmare2) { - EntityNightmareBlast entityarrow0; - EntityNightmareBlast entityarrow1; - EntityNightmareBlast entityarrow2; - EntityNightmareBlast entityarrow3; - EntityNightmareBlast entityarrow4; - EntityNightmareBlast entityarrow5; - EntityNightmareBlast entityarrow6; - EntityNightmareBlast entityarrow7; - EntityNightmareBlast entityarrow8; - EntityNightmareBlast entityarrow9; - entityarrow0 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow0.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow1 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow2 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow2.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow3 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow3.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow4 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow4.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow5 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow5.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow6 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow6.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow7 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow7.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow8 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow8.setDamage(25 + rand.nextInt(150 - 25)); - entityarrow9 = new EntityNightmareBlast(p_77615_2_, p_77615_3_, 3.0F); - entityarrow9.setDamage(25 + rand.nextInt(150 - 25)); - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow0); - p_77615_2_.spawnEntityInWorld(entityarrow1); - p_77615_2_.spawnEntityInWorld(entityarrow2); - p_77615_2_.spawnEntityInWorld(entityarrow3); - p_77615_2_.spawnEntityInWorld(entityarrow4); - p_77615_2_.spawnEntityInWorld(entityarrow5); - p_77615_2_.spawnEntityInWorld(entityarrow6); - p_77615_2_.spawnEntityInWorld(entityarrow7); - p_77615_2_.spawnEntityInWorld(entityarrow8); - p_77615_2_.spawnEntityInWorld(entityarrow9); - } - } - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.schrabidiumShoot", 1.0F, 1.0F); - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (!flag) - p_77615_1_.setItemDamage(p_77615_1_.getItemDamage() + 1); - } - - @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_.isSneaking()) { - - if (p_77659_1_.getItemDamage() < 6) { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - } else { - if(p_77659_2_.isRemote) - p_77659_3_.addChatMessage(new ChatComponentText("[Nightmare] Out of ammo! Shift right-click to reload!")); - } - } else if(p_77659_1_.getItemDamage() > 0) { - - int j = 0; - - for(int i = 0; i < 6; i++) { - if(p_77659_1_.getItem() == ModItems.gun_revolver_nightmare && p_77659_3_.inventory.consumeInventoryItem(ModItems.gun_revolver_nightmare_ammo)) { - p_77659_1_.setItemDamage(p_77659_1_.getItemDamage() - 1); - j++; - } - if(p_77659_1_.getItem() == ModItems.gun_revolver_nightmare2 && p_77659_3_.inventory.consumeInventoryItem(ModItems.gun_revolver_nightmare2_ammo)) { - p_77659_1_.setItemDamage(p_77659_1_.getItemDamage() - 1); - j++; - } - if(p_77659_1_.getItemDamage() == 0) - break; - } - - if(j > 0) { - if(p_77659_2_.isRemote) - p_77659_3_.addChatMessage(new ChatComponentText("[Nightmare] Reloaded!")); - p_77659_3_.swingItem(); - } - } - - 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_revolver_nightmare) { - list.add("Never let a cat doze on your belly when you sleep."); - list.add(""); - list.add("Ammo: Nightmare Bullets"); - list.add("Damage: 1 - 100"); - } - if (this == ModItems.gun_revolver_nightmare2) { - list.add("Ominous references. *shivers*"); - list.add(""); - list.add("Ammo: Laser Buckshot"); - list.add("Damage: 25 - 150"); - } - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5, 0)); - return multimap; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/weapon/GunSuicide.java b/src/main/java/com/hbm/items/weapon/GunSuicide.java index 792f608dc..b2a1d10b6 100644 --- a/src/main/java/com/hbm/items/weapon/GunSuicide.java +++ b/src/main/java/com/hbm/items/weapon/GunSuicide.java @@ -40,7 +40,7 @@ public class GunSuicide extends Item { this.setMaxDamage(500); } - this.ammo = ModItems.gun_revolver_ammo; + this.ammo = ModItems.ammo_357; } /** diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index 5246dc19a..1917cfa1c 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -1,22 +1,29 @@ package com.hbm.items.weapon; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; -import java.util.Random; +import java.util.Set; -import com.hbm.handler.indexing.AmmoIndex; -import com.hbm.handler.indexing.AmmoIndex.AmmoTrait; +import com.hbm.items.ItemAmmoEnums.AmmoRocket; +import com.hbm.items.ItemAmmoEnums.IAmmoItemEnum; +import com.hbm.items.ItemEnumMulti; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; -public class ItemAmmo extends Item { +public class ItemAmmo extends ItemEnumMulti { - //TODO: implement all this public enum AmmoItemTrait { CON_ACCURACY2, CON_DAMAGE, @@ -29,6 +36,7 @@ public class ItemAmmo extends Item { CON_NO_EXPLODE3, CON_NO_FIRE, CON_NO_MIRV, + CON_NO_PROJECTILE, CON_PENETRATION, CON_RADIUS, CON_RANGE2, @@ -81,6 +89,7 @@ public class ItemAmmo extends Item { PRO_NO_GRAVITY, PRO_NUCLEAR, PRO_PENETRATION, + PRO_PERCUSSION, PRO_PHOSPHORUS, PRO_PHOSPHORUS_SPLASH, PRO_POISON_GAS, @@ -103,659 +112,68 @@ public class ItemAmmo extends Item { } } - private AmmoItemTrait[] traits; + private final String altName; - public ItemAmmo(AmmoItemTrait... traits) { - this.traits = traits; - this.setCreativeTab(MainRegistry.weaponTab); + public ItemAmmo(Class> clazz) { + this(clazz, ""); } - @Override - public Item setUnlocalizedName(String unlocalizedName) { - super.setUnlocalizedName(unlocalizedName); - this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName); - return this; - } - - public ItemAmmo index(AmmoTrait... traits) { - AmmoIndex.registerAmmo(this, traits); - return this; + public ItemAmmo(Class> clazz, String altName) { + super(clazz, true, true); + setCreativeTab(MainRegistry.weaponTab); + this.altName = altName; } @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + super.addInformation(stack, player, list, ext); + if(!altName.isEmpty()) list.add(EnumChatFormatting.ITALIC + I18nUtil.resolveKey(altName)); - - //12 GAUGE - if(this == ModItems.ammo_12gauge_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Incendiary"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_12gauge_shrapnel) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Extra bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_12gauge_du) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Penetrating"); - list.add(EnumChatFormatting.YELLOW + "* Heavy Metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_12gauge_marauder) { - list.add(EnumChatFormatting.BLUE + "+ Instantly removes annoying and unbalanced enemies"); - list.add(EnumChatFormatting.YELLOW + "* No drawbacks lole"); - } - if(this == ModItems.ammo_12gauge_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); - } - - //20 GAUGE - if(this == ModItems.ammo_20gauge_flechette) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_20gauge_slug) { - list.add(EnumChatFormatting.BLUE + "+ Near-perfect accuracy"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_20gauge_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Incendiary"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_20gauge_shrapnel) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Extra bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_20gauge_explosive) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_20gauge_caustic) { - list.add(EnumChatFormatting.BLUE + "+ Toxic"); - list.add(EnumChatFormatting.BLUE + "+ Caustic"); - list.add(EnumChatFormatting.YELLOW + "* Not bouncy"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_20gauge_shock) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Stunning"); - list.add(EnumChatFormatting.BLUE + "+ EMP"); - list.add(EnumChatFormatting.YELLOW + "* Not bouncy"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_20gauge_wither) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Withering"); - } - if(this == ModItems.ammo_20gauge_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); - } - - //23mm - if(this == ModItems.ammo_4gauge_flechette) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_4gauge_flechette_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.YELLOW + "* Twice the warcrime in a single round!"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_4gauge_slug) { - list.add(EnumChatFormatting.BLUE + "+ Near-perfect accuracy"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_4gauge_explosive) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* It's a 40mm grenade that we squeezed to fit the barrel!"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_4gauge_semtex) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Explosion drops all blocks"); - list.add(EnumChatFormatting.RED + "- No splash damage"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_4gauge_balefire) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Balefire"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_4gauge_kampf) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Rocket Propelled"); - list.add(EnumChatFormatting.BLUE + "+ Increased accuracy"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - } - if(this == ModItems.ammo_4gauge_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a tracer which summons a storm of DU-flechettes"); - } - - //.357 MAGNUM - if(this == ModItems.ammo_357_desh) { - list.add(EnumChatFormatting.BLUE + "+ Fits every .357 model"); - list.add(EnumChatFormatting.BLUE + "+ Above-average damage"); + if(stack.getItem() == ModItems.ammo_rocket && stack.getItemDamage() == AmmoRocket.DIGAMMA.ordinal()) { + list.add(player.worldObj.rand.nextInt(3) < 2 ? EnumChatFormatting.RED + "COVER YOURSELF IN OIL" : EnumChatFormatting.RED + "" + EnumChatFormatting.OBFUSCATED + "COVER YOURSELF IN OIL"); } - //.44 MAGNUM - if(this == ModItems.ammo_44_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_44_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_44_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_44_pip) { - list.add(EnumChatFormatting.BLUE + "+ Boxcar"); - list.add(EnumChatFormatting.RED + "- Highly decreased damage"); - } - if(this == ModItems.ammo_44_bj) { - list.add(EnumChatFormatting.BLUE + "+ Boat"); - list.add(EnumChatFormatting.RED + "- Highly decreased damage"); - } - if(this == ModItems.ammo_44_silver) { - list.add(EnumChatFormatting.BLUE + "+ Building"); - list.add(EnumChatFormatting.RED + "- Highly decreased damage"); - } - if(this == ModItems.ammo_44_rocket) { - list.add(EnumChatFormatting.BLUE + "+ Rocket"); - list.add(EnumChatFormatting.YELLOW + "* Uhhhh"); - } - if(this == ModItems.ammo_44_star) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_44_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //5mm - if(this == ModItems.ammo_5mm_explosive) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_5mm_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_5mm_star) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_5mm_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //9mm - if(this == ModItems.ammo_9mm_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_9mm_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_9mm_rocket) { - list.add(EnumChatFormatting.BLUE + "+ Rocket"); - list.add(EnumChatFormatting.YELLOW + "* Uhhhh"); - } - if(this == ModItems.ammo_9mm_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //.22LR - if(this == ModItems.ammo_22lr_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_22lr_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //.50 BMG - if(this == ModItems.ammo_50bmg) { - list.add(EnumChatFormatting.YELLOW + "12.7mm anti-materiel round"); - list.add(EnumChatFormatting.YELLOW + "You shoot down planes with these, using"); - list.add(EnumChatFormatting.YELLOW + "them against people would be nasty."); - } - if(this == ModItems.ammo_50bmg_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Incendiary"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_50bmg_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_50bmg_explosive) { - list.add(EnumChatFormatting.BLUE + "+ Explosive"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_50bmg_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_50bmg_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_50bmg_star) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_50bmg_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); - } - if(this == ModItems.ammo_50bmg_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_50bmg_flechette) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - } - if(this == ModItems.ammo_50bmg_flechette_am) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.GREEN + "+ Highly Radioactive"); - list.add(EnumChatFormatting.YELLOW + "* Yes."); - } - if(this == ModItems.ammo_50bmg_flechette_po) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.GREEN + "+ Highly Radioactive"); - list.add(EnumChatFormatting.YELLOW + "* Maybe?"); - } - - //.50 AE - if(this == ModItems.ammo_50ae_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_50ae_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_50ae_star) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_50ae_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //84mm ROCKETS - if(this == ModItems.ammo_rocket_he) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_rocket_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Incendiary explosion"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_rocket_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Phosphorus splash"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_rocket_shrapnel) { - list.add(EnumChatFormatting.BLUE + "+ Shrapnel"); - } - if(this == ModItems.ammo_rocket_emp) { - list.add(EnumChatFormatting.BLUE + "+ EMP"); - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - } - if(this == ModItems.ammo_rocket_glare) { - list.add(EnumChatFormatting.BLUE + "+ Increased projectile speed"); - list.add(EnumChatFormatting.BLUE + "+ Incendiary explosion"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_rocket_toxic) { - list.add(EnumChatFormatting.BLUE + "+ Chlorine gas"); - list.add(EnumChatFormatting.RED + "- No explosion"); - list.add(EnumChatFormatting.RED + "- Decreased projectile speed"); - } - if(this == ModItems.ammo_rocket_sleek) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased blast radius"); - list.add(EnumChatFormatting.BLUE + "+ Not affected by gravity"); - list.add(EnumChatFormatting.YELLOW + "* Jolt"); - } - if(this == ModItems.ammo_rocket_nuclear) { - list.add(EnumChatFormatting.BLUE + "+ Nuclear"); - list.add(EnumChatFormatting.RED + "- Very highly increased wear"); - list.add(EnumChatFormatting.RED + "- Decreased projectile speed"); - } - if(this == ModItems.ammo_rocket_rpc) { - list.add(EnumChatFormatting.BLUE + "+ Chainsaw"); - list.add(EnumChatFormatting.BLUE + "+ Penetrating"); - list.add(EnumChatFormatting.BLUE + "+ Not affected by gravity"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Non-explosive"); - list.add(EnumChatFormatting.YELLOW + "* Uhhhh"); - } - if(this == ModItems.ammo_rocket_digamma) { + IAmmoItemEnum item = (IAmmoItemEnum) EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + Set ammoTraits = item.getTraits(); + + if(ammoTraits.size() > 0) { - if(new Random().nextInt(3) < 2) - list.add(EnumChatFormatting.RED + "COVER YOURSELF IN OIL"); - else - list.add(EnumChatFormatting.RED + "" + EnumChatFormatting.OBFUSCATED + "COVER YOURSELF IN OIL"); - } - - //40mm GRENADES - if(this == ModItems.ammo_grenade_he) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_grenade_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Incendiary explosion"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_grenade_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Phosphorus splash"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_grenade_toxic) { - list.add(EnumChatFormatting.BLUE + "+ Chlorine gas"); - list.add(EnumChatFormatting.RED + "- No explosion"); - } - if(this == ModItems.ammo_grenade_concussion) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.RED + "- No block damage"); - } - if(this == ModItems.ammo_grenade_finned) { - list.add(EnumChatFormatting.BLUE + "+ Decreased gravity"); - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - } - if(this == ModItems.ammo_grenade_sleek) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.YELLOW + "* Jolt"); - } - if(this == ModItems.ammo_grenade_nuclear) { - list.add(EnumChatFormatting.BLUE + "+ Nuclear"); - list.add(EnumChatFormatting.BLUE + "+ Increased range"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_grenade_kampf) { - list.add(EnumChatFormatting.BLUE + "+ Rocket Propelled"); - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.BLUE + "+ Increased accuracy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - - //FUEL - if(this == ModItems.ammo_fuel_napalm) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Increased range"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_fuel_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Phosphorus splash"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Increased range"); - list.add(EnumChatFormatting.BLUE + "+ Increased accuracy"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Single projectile"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_fuel_vaporizer) { - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.BLUE + "+ Increased flame count"); - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* For removing big mistakes"); - list.add(EnumChatFormatting.RED + "- Highly decreased accuracy"); - list.add(EnumChatFormatting.RED + "- Highly decreased range"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - list.add(EnumChatFormatting.RED + "- No lingering fire"); - } - if(this == ModItems.ammo_fuel_gas) { - list.add(EnumChatFormatting.BLUE + "+ No gravity"); - list.add(EnumChatFormatting.BLUE + "+ Poison splash"); - list.add(EnumChatFormatting.RED + "- No damage"); - list.add(EnumChatFormatting.RED + "- Not incendiary"); - } - - //FIRE EXT - if(this == ModItems.ammo_fireext_foam) { - list.add(EnumChatFormatting.BLUE + "+ Can put out any fire type"); - list.add(EnumChatFormatting.BLUE + "+ Creates protective foam layer"); - list.add(EnumChatFormatting.YELLOW + "* Broader spray"); - } - if(this == ModItems.ammo_fireext_sand) { - list.add(EnumChatFormatting.BLUE + "+ Creates protective sand layer"); - list.add(EnumChatFormatting.YELLOW + "* Very broad spray"); - list.add(EnumChatFormatting.RED + "- No extinguishing AoE"); - } - - //5.56mm - if(this == ModItems.ammo_556_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.YELLOW + "* Technically a warcrime"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_556_ap) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - } - if(this == ModItems.ammo_556_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_556_star) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Starmetal"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_556_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); - } - if(this == ModItems.ammo_556_flechette) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_556_flechette_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Incendiary"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_556_flechette_phosphorus) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Induces phosphorus burns"); - list.add(EnumChatFormatting.YELLOW + "* Twice the warcrime in a single round!"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Increased wear"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_556_flechette_du) { - list.add(EnumChatFormatting.BLUE + "+ Highly increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Penetrating"); - list.add(EnumChatFormatting.YELLOW + "* Heavy metal"); - list.add(EnumChatFormatting.YELLOW + "* Less bouncy"); - list.add(EnumChatFormatting.RED + "- Highly increased wear"); - } - if(this == ModItems.ammo_556_flechette_sleek) { - list.add(EnumChatFormatting.YELLOW + "* Fires a high-damage round that summons a small meteorite"); - } - if(this == ModItems.ammo_556_tracer) { - list.add(EnumChatFormatting.YELLOW + "* Tracer"); - } - if(this == ModItems.ammo_556_k) { - list.add(EnumChatFormatting.YELLOW + "* It's a blank"); - } - if(this == ModItems.ammo_556_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - if(this == ModItems.ammo_556_flechette_chlorophyte) { - list.add(EnumChatFormatting.BLUE + "+ Increased damage"); - list.add(EnumChatFormatting.BLUE + "+ Decreased wear"); - list.add(EnumChatFormatting.DARK_GREEN + "* Chlorophyte"); - list.add(EnumChatFormatting.YELLOW + "* Homing"); - list.add(EnumChatFormatting.RED + "- Not penetrating"); - } - - //BOLTS - if(this == ModItems.ammo_75bolt) { - list.add(EnumChatFormatting.YELLOW + "Gyro-stabilized armor-piercing"); - list.add(EnumChatFormatting.YELLOW + "DU round with tandem charge"); - } - if(this == ModItems.ammo_75bolt_incendiary) { - list.add(EnumChatFormatting.YELLOW + "Armor-piercing explosive round"); - list.add(EnumChatFormatting.YELLOW + "filled with oxy-phosphorous gel"); - } - if(this == ModItems.ammo_75bolt_he) { - list.add(EnumChatFormatting.YELLOW + "Armor-piercing penetrator filled"); - list.add(EnumChatFormatting.YELLOW + "with a powerful explosive charge"); - } - - //NUKES - if(this== ModItems.ammo_nuke_low) { - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - } - if(this== ModItems.ammo_nuke_high) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.BLUE + "+ Fallout"); - } - if(this== ModItems.ammo_nuke_tots) { - list.add(EnumChatFormatting.BLUE + "+ Increased bomb count"); - list.add(EnumChatFormatting.YELLOW + "* Fun for the whole family!"); - list.add(EnumChatFormatting.RED + "- Highly decreased accuracy"); - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - list.add(EnumChatFormatting.RED + "- Not recommended for the Proto MIRV"); - } - if(this== ModItems.ammo_nuke_safe) { - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - list.add(EnumChatFormatting.RED + "- No block damage"); - } - if(this== ModItems.ammo_nuke_pumpkin) { - list.add(EnumChatFormatting.RED + "- Not even a nuke"); - } - - //MIRV - if(this== ModItems.ammo_mirv_low) { - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - } - if(this== ModItems.ammo_mirv_high) { - list.add(EnumChatFormatting.BLUE + "+ Increased blast radius"); - list.add(EnumChatFormatting.BLUE + "+ Fallout"); - } - if(this== ModItems.ammo_mirv_safe) { - list.add(EnumChatFormatting.RED + "- Decreased blast radius"); - list.add(EnumChatFormatting.RED + "- No block damage"); - } - if(this== ModItems.ammo_mirv_special) { - list.add(EnumChatFormatting.BLUE + "+ 6 Low-yield mini nukes"); - list.add(EnumChatFormatting.BLUE + "+ 6 Mini nukes"); - list.add(EnumChatFormatting.BLUE + "+ 6 Tiny tots"); - list.add(EnumChatFormatting.BLUE + "+ 6 Balefire shells"); - list.add(EnumChatFormatting.WHITE + "* Sticky!"); - } - - //FOLLY - if(this == ModItems.ammo_folly) { - list.add(EnumChatFormatting.BLUE + "+ Focused starmetal reaction blast"); - } - if(this == ModItems.ammo_folly_nuclear) { - list.add(EnumChatFormatting.BLUE + "+ Howitzer mini nuke shell"); - } - if(this == ModItems.ammo_folly_du) { - list.add(EnumChatFormatting.BLUE + "+ Howitzer 17kg U238 shell"); - } - - //STINGER - if(this == ModItems.ammo_stinger_rocket) { - list.add(EnumChatFormatting.BLUE + "+ Homing"); - } - if(this == ModItems.ammo_stinger_rocket_he) { - list.add(EnumChatFormatting.BLUE + "+ Homing"); - list.add(EnumChatFormatting.BLUE + "+ Increased Blast Radius"); - list.add(EnumChatFormatting.RED + "- Increased Wear"); - } - if(this == ModItems.ammo_stinger_rocket_incendiary) { - list.add(EnumChatFormatting.BLUE + "+ Homing"); - list.add(EnumChatFormatting.BLUE + "+ Incendiary explosion"); - list.add(EnumChatFormatting.RED + "- Slightly Increased wear"); - } - if(this == ModItems.ammo_stinger_rocket_nuclear) { - list.add(EnumChatFormatting.BLUE + "+ Homing"); - list.add(EnumChatFormatting.BLUE + "+ Nuclear"); - list.add(EnumChatFormatting.RED + "- Highly Increased wear"); - } - if(this == ModItems.ammo_stinger_rocket_bones) { - list.add(EnumChatFormatting.BLUE + "+ Homing"); - list.add(EnumChatFormatting.YELLOW + "* RATTLE ME BONES"); - list.add(EnumChatFormatting.YELLOW + "* WELCOME ABOARD MATEYS!"); - list.add(EnumChatFormatting.YELLOW + "* RATTLE ME BONES"); - list.add(EnumChatFormatting.YELLOW + "* RATTLE ME BONES"); - list.add(EnumChatFormatting.YELLOW + "* SPIN THE WHEEL FOR THE TREASURE TO TAKE"); - } + ArrayList sortedTraits = new ArrayList(ammoTraits); + sortedTraits.sort(Comparator.reverseOrder()); + for(AmmoItemTrait trait : sortedTraits) { + final EnumChatFormatting color; + switch(trait.toString().substring(0, 3)) { + case "PRO": color = EnumChatFormatting.BLUE; break; + case "NEU": color = EnumChatFormatting.YELLOW; break; + case "CON": color = EnumChatFormatting.RED; break; + default: color = EnumChatFormatting.DARK_GRAY; break; + } + list.add(color + I18nUtil.resolveKey(trait.key)); + } + } } + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + IAmmoItemEnum num = (IAmmoItemEnum) enums[i]; + this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + num.getInternalName()); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + IAmmoItemEnum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + return "item." + num.getInternalName(); + } + + @Override + public ItemEnumMulti setUnlocalizedName(String uloc) { + setTextureName(RefStrings.MODID + ':' + uloc); + return (ItemEnumMulti) super.setUnlocalizedName(uloc); + } } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 1b9b64709..44a668afc 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -13,13 +13,15 @@ import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -171,14 +173,16 @@ public class ItemAmmoArty extends Item { return "item." + itemTypes[Math.abs(stack.getItemDamage()) % itemTypes.length].name; } + protected static SpentCasing SIXTEEN_INCH_CASE = new SpentCasing(CasingType.STRAIGHT).setScale(15F, 15F, 10F).setupSmoke(1F, 1D, 200, 60).setMaxAge(300); + public abstract class ArtilleryShell { String name; + public SpentCasing casing; - public ArtilleryShell() { } - - public ArtilleryShell(String name) { + public ArtilleryShell(String name, int casingColor) { this.name = name; + this.casing = SIXTEEN_INCH_CASE.clone().register(name).setColor(casingColor); } public abstract void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop); @@ -193,7 +197,7 @@ public class ItemAmmoArty extends Item { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); } - xnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(rangeMod)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); @@ -231,12 +235,12 @@ public class ItemAmmoArty extends Item { private void init() { /* STANDARD SHELLS */ - this.itemTypes[NORMAL] = new ArtilleryShell("ammo_arty") { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 10F, 3F, false); }}; - this.itemTypes[CLASSIC] = new ArtilleryShell("ammo_arty_classic") { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 15F, 5F, false); }}; - this.itemTypes[EXPLOSIVE] = new ArtilleryShell("ammo_arty_he") { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 15F, 3F, true); }}; + this.itemTypes[NORMAL] = new ArtilleryShell("ammo_arty", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 10F, 3F, false); }}; + this.itemTypes[CLASSIC] = new ArtilleryShell("ammo_arty_classic", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 15F, 5F, false); }}; + this.itemTypes[EXPLOSIVE] = new ArtilleryShell("ammo_arty_he", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 15F, 3F, true); }}; /* MINI NUKE */ - this.itemTypes[MINI_NUKE] = new ArtilleryShell("ammo_arty_mini_nuke") { + this.itemTypes[MINI_NUKE] = new ArtilleryShell("ammo_arty_mini_nuke", SpentCasing.COLOR_CASE_16INCH_NUKE) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { shell.killAndClear(); Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); @@ -245,7 +249,7 @@ public class ItemAmmoArty extends Item { }; /* FULL NUKE */ - this.itemTypes[NUKE] = new ArtilleryShell("ammo_arty_nuke") { + this.itemTypes[NUKE] = new ArtilleryShell("ammo_arty_nuke", SpentCasing.COLOR_CASE_16INCH_NUKE) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { shell.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(shell.worldObj, BombConfig.missileRadius, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(shell.worldObj, 1000, BombConfig.missileRadius * 0.005F); @@ -258,7 +262,7 @@ public class ItemAmmoArty extends Item { }; /* PHOSPHORUS */ - this.itemTypes[PHOSPHORUS] = new ArtilleryShell("ammo_arty_phosphorus") { + this.itemTypes[PHOSPHORUS] = new ArtilleryShell("ammo_arty_phosphorus", SpentCasing.COLOR_CASE_16INCH_PHOS) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { standardExplosion(shell, mop, 10F, 3F, false); shell.worldObj.playSoundEffect(shell.posX, shell.posY, shell.posZ, "hbm:weapon.explosionMedium", 20.0F, 0.9F + shell.worldObj.rand.nextFloat() * 0.2F); @@ -287,7 +291,7 @@ public class ItemAmmoArty extends Item { }; /* THIS DOOFUS */ - this.itemTypes[CARGO] = new ArtilleryShell("ammo_arty_cargo") { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + this.itemTypes[CARGO] = new ArtilleryShell("ammo_arty_cargo", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { if(mop.typeOfHit == MovingObjectType.BLOCK) { shell.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); shell.getStuck(mop.blockX, mop.blockY, mop.blockZ); @@ -295,11 +299,11 @@ public class ItemAmmoArty extends Item { }}; /* CLUSTER SHELLS */ - this.itemTypes[PHOSPHORUS_MULTI] = new ArtilleryShell("ammo_arty_phosphorus_multi") { + this.itemTypes[PHOSPHORUS_MULTI] = new ArtilleryShell("ammo_arty_phosphorus_multi", SpentCasing.COLOR_CASE_16INCH_PHOS) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { ItemAmmoArty.this.itemTypes[PHOSPHORUS].onImpact(shell, mop); } public void onUpdate(EntityArtilleryShell shell) { standardCluster(shell, PHOSPHORUS, 10, 300, 5); } }; - this.itemTypes[MINI_NUKE_MULTI] = new ArtilleryShell("ammo_arty_mini_nuke_multi") { + this.itemTypes[MINI_NUKE_MULTI] = new ArtilleryShell("ammo_arty_mini_nuke_multi", SpentCasing.COLOR_CASE_16INCH_NUKE) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { ItemAmmoArty.this.itemTypes[MINI_NUKE].onImpact(shell, mop); } public void onUpdate(EntityArtilleryShell shell) { standardCluster(shell, MINI_NUKE, 5, 300, 5); } }; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 0a76f7cd9..1af138e0a 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -6,7 +6,7 @@ import com.hbm.entity.projectile.EntityArtilleryRocket; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; @@ -74,7 +74,7 @@ public class ItemAmmoHIMARS extends Item { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); } - xnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(rangeMod)); + xnt.setEntityProcessor(new EntityProcessorCross(7.5).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/ItemClip.java b/src/main/java/com/hbm/items/weapon/ItemClip.java index a77b89528..eca5c4e73 100644 --- a/src/main/java/com/hbm/items/weapon/ItemClip.java +++ b/src/main/java/com/hbm/items/weapon/ItemClip.java @@ -1,402 +1,32 @@ package com.hbm.items.weapon; -import java.util.List; - -import com.hbm.items.ModItems; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemClip extends Item { + + private ItemStack toGive; - public ItemClip() - { - this.setMaxDamage(1); - } - + public ItemClip(ItemStack stack) { + toGive = stack; + this.setMaxDamage(1); + } + @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(toGive == null) return stack; + + ItemStack ammo = toGive.copy(); + + player.inventory.addItemStackToInventory(ammo); + stack.stackSize--; if(stack.stackSize <= 0) stack.damageItem(5, player); - if(this == ModItems.clip_revolver_iron) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_iron_ammo, 20))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_iron_ammo, 20), false); - } - } - - if(this == ModItems.clip_revolver) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_ammo, 12))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_ammo, 12), false); - } - } - - if(this == ModItems.clip_revolver_gold) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_gold_ammo, 4))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_gold_ammo, 4), false); - } - } - - if(this == ModItems.clip_revolver_schrabidium) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_schrabidium_ammo, 2))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_schrabidium_ammo, 2), false); - } - } - - if(this == ModItems.clip_rpg) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_rocket, 3))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_rpg_ammo, 3), false); - } - } - - if(this == ModItems.clip_osipr) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_osipr_ammo, 30))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_osipr_ammo, 30), false); - } - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_osipr_ammo2, 1))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_osipr_ammo2, 1), false); - } - } - - if(this == ModItems.clip_xvl1456) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_xvl1456_ammo, 60))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_xvl1456_ammo, 60), false); - } - } - - if(this == ModItems.clip_revolver_lead) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_lead_ammo, 12))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_lead_ammo, 12), false); - } - } - - if(this == ModItems.clip_revolver_cursed) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_cursed_ammo, 17))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_revolver_cursed_ammo, 17), false); - } - } - - if(this == ModItems.clip_fatman) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_nuke, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_fatman_ammo, 6), false); - } - } - - if(this == ModItems.clip_mp) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_566_gold, 30))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp_ammo, 30), false); - } - } - - if(this == ModItems.clip_mp40) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_9mm, 32))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_uzi) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_22lr, 32))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_uzi_ammo, 32), false); - } - } - - if(this == ModItems.clip_uboinik) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_12gauge, 24))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_uboinik_ammo, 24), false); - } - } - - if(this == ModItems.clip_lever_action) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 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.ammo_20gauge_slug, 24))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_bolt_action_ammo, 24), false); - } - } - - if(this == ModItems.clip_mirv) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_mirv, 3))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_bf) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_bf_ammo, 2))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_immolator) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_immolator_ammo, 60))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_cryolator) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_cryolator_ammo, 60))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_emp) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_emp_ammo, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_revolver_nightmare) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_nightmare_ammo, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_revolver_nightmare2) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_nightmare2_ammo, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_revolver_pip) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_44_pip, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_revolver_nopip) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_44, 12))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_stinger) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_stinger_rocket, 3))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_jack) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_jack_ammo, 6))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_spark) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_spark_ammo, 4))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_hp) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_hp_ammo, 8))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_euthanasia) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_euthanasia_ammo, 16))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - if(this == ModItems.clip_defabricator) - { - if (!player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_defabricator_ammo, 12))) - { - //player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.gun_mp40_ammo, 32), false); - } - } - - 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.ammo_44_pip, 12)); - if(player.inventory.hasItem(ModItems.gun_revolver_nopip)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_44, 12)); - if(player.inventory.hasItem(ModItems.gun_revolver_blackjack)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_44_bj, 12)); - if(player.inventory.hasItem(ModItems.gun_revolver_red)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_44, 12)); - if(player.inventory.hasItem(ModItems.gun_calamity)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_50bmg, 16)); - if(player.inventory.hasItem(ModItems.gun_calamity_dual)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_50bmg, 32)); - if(player.inventory.hasItem(ModItems.gun_minigun)) { - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - } - if(player.inventory.hasItem(ModItems.gun_avenger)) { - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - } - if(player.inventory.hasItem(ModItems.gun_lacunae)) { - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_5mm, 64)); - } - if(player.inventory.hasItem(ModItems.gun_rpg)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_rocket, 3)); - if(player.inventory.hasItem(ModItems.gun_stinger)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_stinger_rocket, 2)); - if(player.inventory.hasItem(ModItems.gun_skystinger)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_stinger_rocket_he, 2)); - if(player.inventory.hasItem(ModItems.gun_fatman)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_nuke, 2)); - if(player.inventory.hasItem(ModItems.gun_proto)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_nuke, 8)); - if(player.inventory.hasItem(ModItems.gun_mirv)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_mirv, 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.ammo_9mm, 32)); - if(player.inventory.hasItem(ModItems.gun_uzi)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_22lr, 32)); - if(player.inventory.hasItem(ModItems.gun_uzi_silencer)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_22lr, 32)); - if(player.inventory.hasItem(ModItems.gun_uzi_saturnite)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_22lr, 32)); - if(player.inventory.hasItem(ModItems.gun_uzi_saturnite_silencer)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_22lr, 32)); - if(player.inventory.hasItem(ModItems.gun_uboinik)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_12gauge, 12)); - if(player.inventory.hasItem(ModItems.gun_lever_action)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); - if(player.inventory.hasItem(ModItems.gun_lever_action_dark)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); - if(player.inventory.hasItem(ModItems.gun_lever_action_sonata)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 1)); - if(player.inventory.hasItem(ModItems.gun_bolt_action)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge_flechette, 12)); - if(player.inventory.hasItem(ModItems.gun_bolt_action_green)) - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge_flechette, 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.ammo_566_gold, 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_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; - - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - if(this == ModItems.ammo_container) - { - list.add("Gives ammo for all held weapons."); - } } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 91629717a..b60ec1d14 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -8,10 +8,15 @@ import com.hbm.config.GeneralConfig; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; import com.hbm.handler.HbmKeybinds; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.interfaces.IItemHUD; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.IEquipReceiver; +import com.hbm.lib.HbmCollection; +import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; @@ -19,12 +24,14 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import com.hbm.util.I18nUtil; +import com.hbm.util.InventoryUtil; import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; import net.minecraft.client.settings.GameSettings; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; @@ -39,7 +46,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { +public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEquipReceiver { public GunConfiguration mainConfig; public GunConfiguration altConfig; @@ -107,7 +114,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { if(mainConfig.reloadType != mainConfig.RELOAD_NONE || (altConfig != null && altConfig.reloadType != 0)) { - if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { + if(GameSettings.isKeyDown(HbmKeybinds.reloadKey) && Minecraft.getMinecraft().currentScreen == null && (getMag(stack) < mainConfig.ammoCap || hasInfinity(stack, mainConfig))) { PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 2)); setIsReloading(stack, true); resetReloadCycle(stack); @@ -138,6 +145,20 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { if(getIsReloading(stack) && isCurrentItem) { reload2(stack, world, player); } + + BulletConfiguration queued = getCasing(stack); + int timer = getCasingTimer(stack); + + if(queued != null && timer > 0) { + + timer--; + + if(timer <= 0) { + trySpawnCasing(player, mainConfig.ejector, queued, stack); + } + + setCasingTimer(stack, timer); + } } //whether or not the gun can shoot in its current state @@ -204,6 +225,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { } world.playSoundAtEntity(player, mainConfig.firingSound, 1.0F, mainConfig.firingPitch); + + if(mainConfig.ejector != null && !mainConfig.ejector.getAfterReload()) + queueCasing(player, mainConfig.ejector, config, stack); } //unlike fire(), being called does not automatically imply success, some things may still have to be handled before spawning the projectile @@ -214,8 +238,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { BulletConfiguration config = altConfig.reloadType == altConfig.RELOAD_NONE ? getBeltCfg(player, stack, false) : BulletConfigSyncingUtil.pullConfig(altConfig.config.get(getMagType(stack))); - //System.out.println(config.ammo.getUnlocalizedName()); - int bullets = config.bulletsMin; for(int k = 0; k < altConfig.roundsPerCycle; k++) { @@ -237,6 +259,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { } world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); + + if(altConfig.ejector != null) + queueCasing(player, altConfig.ejector, config, stack); } //spawns the actual projectile, can be overridden to change projectile entity @@ -278,160 +303,52 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { //called on click release (client side, called by update cycle) public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { } - //reload action, if existent - protected void reload(ItemStack stack, World world, EntityPlayer player) { - - if(getReloadCycle(stack) < 0 && stack == player.getHeldItem()) { - - //if the mag has bullet in them -> load only the same type - if(getMag(stack) > 0) { - - BulletConfiguration bulletCfg = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); - Item ammo = bulletCfg.ammo; - - //how many bullets to load - int count = 1; - - if(mainConfig.reloadType == 1) { - - count = mainConfig.ammoCap - getMag(stack); - } - - if(count == 0) - setIsReloading(stack, false); - - for(int i = 0; i < count; i++) { - - if(getMag(stack) < mainConfig.ammoCap) { - - if(player.inventory.hasItem(ammo)) { - player.inventory.consumeInventoryItem(ammo); - setMag(stack, Math.min(getMag(stack) + bulletCfg.ammoCount, mainConfig.ammoCap)); - } else { - setIsReloading(stack, false); - world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); - break; - } - } - - if(getMag(stack) == mainConfig.ammoCap) { - setIsReloading(stack, false); - world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); - break; - } else { - resetReloadCycle(stack); - } - } - - //if the mag has no bullets in them -> load new type - } else { - - BulletConfiguration bulletCfg = null; - - //determine new type - for(Integer config : mainConfig.config) { - - BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - - if(player.inventory.hasItem(cfg.ammo)) { - bulletCfg = cfg; - setMagType(stack, mainConfig.config.indexOf(config)); - break; - } - } - - //load new type if bullets are present - if(bulletCfg != null) { - - int count = 1; - - if(mainConfig.reloadType == 1) { - - count = mainConfig.ammoCap - getMag(stack); - } - - for(int i = 0; i < count; i++) { - - if(getMag(stack) < mainConfig.ammoCap) { - - if(player.inventory.hasItem(bulletCfg.ammo)) { - player.inventory.consumeInventoryItem(bulletCfg.ammo); - setMag(stack, Math.min(getMag(stack) + bulletCfg.ammoCount, mainConfig.ammoCap)); - } else { - setIsReloading(stack, false); - world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); - break; - } - } - - if(getMag(stack) == mainConfig.ammoCap) { - setIsReloading(stack, false); - world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); - break; - } else { - resetReloadCycle(stack); - } - } - } - } - } else { - setReloadCycle(stack, getReloadCycle(stack) - 1); - } - - if(stack != player.getHeldItem()) { - setReloadCycle(stack, 0); - setIsReloading(stack, false); - } - } - - //martin 2 reload algorithm - //now with less WET and more DRY - //compact, readable and most importantly, FUNCTIONAL + //current reload protected void reload2(ItemStack stack, World world, EntityPlayer player) { if(getMag(stack) >= mainConfig.ammoCap) { setIsReloading(stack, false); return; } + + if(getReloadCycle(stack) <= 0) { + - if(getReloadCycle(stack) < 0) { + BulletConfiguration prevCfg = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); - if(getMag(stack) == 0) + if (getMag(stack) == 0) resetAmmoType(stack, world, player); - - int count = 1; - - if(mainConfig.reloadType == mainConfig.RELOAD_FULL) { - - count = mainConfig.ammoCap - getMag(stack); - } - - boolean hasLoaded = false; BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); - Item ammo = cfg.ammo; + ComparableStack ammo = (ComparableStack) cfg.ammo.copy(); - for(int i = 0; i < count; i++) { - - if(player.inventory.hasItem(ammo) && getMag(stack) < mainConfig.ammoCap) { - player.inventory.consumeInventoryItem(ammo); - setMag(stack, Math.min(getMag(stack) + cfg.ammoCount, mainConfig.ammoCap)); - hasLoaded = true; - } else { - setIsReloading(stack, false); - break; - } - } + final int countNeeded = (mainConfig.reloadType == GunConfiguration.RELOAD_FULL) ? mainConfig.ammoCap - getMag(stack) : 1; + final int availableStacks = InventoryUtil.countAStackMatches(player, ammo, true); + final int availableFills = availableStacks * cfg.ammoCount; + final boolean hasLoaded = availableFills > 0; + final int toAdd = Math.min(availableFills * cfg.ammoCount, countNeeded); + final int toConsume = (int) Math.ceil((double) toAdd / cfg.ammoCount); - if(getMag(stack) >= mainConfig.ammoCap) { + // Skip logic if cannot reload + if(availableFills == 0) { setIsReloading(stack, false); - } else { - resetReloadCycle(stack); + return; } + ammo.stacksize = toConsume; + setMag(stack, getMag(stack) + toAdd); + if (getMag(stack) >= mainConfig.ammoCap) + setIsReloading(stack, false); + else + resetReloadCycle(stack); + if(hasLoaded && mainConfig.reloadSoundEnd) world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F); + if(mainConfig.ejector != null && mainConfig.ejector.getAfterReload()) + queueCasing(player, mainConfig.ejector, prevCfg, stack); + + InventoryUtil.tryConsumeAStack(player.inventory.mainInventory, 0, player.inventory.mainInventory.length, ammo); } else { setReloadCycle(stack, getReloadCycle(stack) - 1); } @@ -479,20 +396,15 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { if(getMag(stack) == 0) { - for(Integer config : mainConfig.config) { - - BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - - if(player.inventory.hasItem(cfg.ammo)) { + for(int config : mainConfig.config) { + if(InventoryUtil.doesPlayerHaveAStack(player, BulletConfigSyncingUtil.pullConfig(config).ammo, false, false)) { return true; } } } else { - - Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo; - if(player.inventory.hasItem(ammo)) - return true; + ComparableStack ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo; + return InventoryUtil.doesPlayerHaveAStack(player, ammo, false, false); } return false; @@ -501,11 +413,10 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { //searches the player's inv for next fitting ammo type and changes the gun's mag protected void resetAmmoType(ItemStack stack, World world, EntityPlayer player) { - for(Integer config : mainConfig.config) { - + for(int config : mainConfig.config) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - if(player.inventory.hasItem(cfg.ammo)) { + if(InventoryUtil.doesPlayerHaveAStack(player, cfg.ammo, false, false)) { setMagType(stack, mainConfig.config.indexOf(config)); break; } @@ -516,40 +427,46 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo; + ComparableStack ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo; - if(mainConfig.ammoCap > 0) - list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap); - else - list.add("Ammo: Belt"); + list.add(I18nUtil.resolveKey(HbmCollection.ammo, mainConfig.ammoCap > 0 ? I18nUtil.resolveKey(HbmCollection.ammoMag, getMag(stack), mainConfig.ammoCap) : I18nUtil.resolveKey(HbmCollection.ammoBelt))); - list.add("Ammo Type: " + I18n.format(ammo.getUnlocalizedName() + ".name")); - - if(altConfig != null && altConfig.ammoCap == 0) { - Item ammo2 = BulletConfigSyncingUtil.pullConfig(altConfig.config.get(0)).ammo; - if(ammo != ammo2) - list.add("Secondary Ammo: " + I18n.format(ammo2.getUnlocalizedName() + ".name")); + try { + list.add(I18nUtil.resolveKey(HbmCollection.ammoType, ammo.toStack().getDisplayName())); + + if(altConfig != null && altConfig.ammoCap == 0) { + ComparableStack ammo2 = BulletConfigSyncingUtil.pullConfig(altConfig.config.get(0)).ammo; + if(!ammo.isApplicable(ammo2)) { + list.add(I18nUtil.resolveKey(HbmCollection.altAmmoType, ammo2.toStack().getDisplayName())); + } + } } + catch (Exception e) + { + e.printStackTrace(); + list.add("Error: " + e + " has occurred!"); + } + + addAdditionalInformation(stack, list); + } + + protected void addAdditionalInformation(ItemStack stack, List list) + { + final BulletConfiguration bulletConfig = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); + list.add(I18nUtil.resolveKey(HbmCollection.gunDamage, bulletConfig.dmgMin, bulletConfig.dmgMax)); + int dura = Math.max(mainConfig.durability - getItemWear(stack), 0); - int dura = mainConfig.durability - getItemWear(stack); + list.add(I18nUtil.resolveKey(HbmCollection.durability, dura + " / " + mainConfig.durability)); - if(dura < 0) - dura = 0; - - list.add("Durability: " + dura + " / " + mainConfig.durability); - - //if(MainRegistry.enableDebugMode) { - list.add(""); - list.add("Name: " + mainConfig.name); - list.add("Manufacturer: " + mainConfig.manufacturer); - //} + list.add(""); + list.add(I18nUtil.resolveKey(HbmCollection.gunName, I18nUtil.resolveKey("gun.name." + mainConfig.name))); + list.add(I18nUtil.resolveKey(HbmCollection.gunMaker, I18nUtil.resolveKey(mainConfig.manufacturer.getKey()))); if(!mainConfig.comment.isEmpty()) { list.add(""); for(String s : mainConfig.comment) list.add(EnumChatFormatting.ITALIC + s); } - if(GeneralConfig.enableExtendedLogging) { list.add(""); list.add("Type: " + getMagType(stack)); @@ -560,52 +477,49 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { } //returns ammo item of belt-weapons - public static Item getBeltType(EntityPlayer player, ItemStack stack, boolean main) { - + public static ComparableStack getBeltType(EntityPlayer player, ItemStack stack, boolean main) { ItemGunBase gun = (ItemGunBase)stack.getItem(); GunConfiguration guncfg = main ? gun.mainConfig : (gun.altConfig != null ? gun.altConfig : gun.mainConfig); - Item ammo = BulletConfigSyncingUtil.pullConfig(guncfg.config.get(0)).ammo; for(Integer config : guncfg.config) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - if(player.inventory.hasItem(cfg.ammo)) { - ammo = cfg.ammo; - break; + if(InventoryUtil.doesPlayerHaveAStack(player, cfg.ammo, false, true)) { + return cfg.ammo; } } - return ammo; + return BulletConfigSyncingUtil.pullConfig(guncfg.config.get(0)).ammo; } //returns BCFG of belt-weapons public static BulletConfiguration getBeltCfg(EntityPlayer player, ItemStack stack, boolean main) { - ItemGunBase gun = (ItemGunBase)stack.getItem(); GunConfiguration guncfg = main ? gun.mainConfig : (gun.altConfig != null ? gun.altConfig : gun.mainConfig); getBeltType(player, stack, main); - - for(Integer config : guncfg.config) { + + for(int config : guncfg.config) { BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - if(player.inventory.hasItem(cfg.ammo)) { + if(InventoryUtil.doesPlayerHaveAStack(player, cfg.ammo, false, false)) { return cfg; } } - + return BulletConfigSyncingUtil.pullConfig(guncfg.config.get(0)); } //returns ammo capacity of belt-weapons for current ammo - public static int getBeltSize(EntityPlayer player, Item ammo) { + public static int getBeltSize(EntityPlayer player, ComparableStack ammo) { int amount = 0; for(ItemStack stack : player.inventory.mainInventory) { - if(stack != null && stack.getItem() == ammo) + if(stack != null && ammo.matchesRecipe(stack, true)) { amount += stack.stackSize; + } } return amount; @@ -625,11 +539,10 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { if(hasInfinity(stack, config)) return; - - if(config.reloadType != mainConfig.RELOAD_NONE) { + if(config.reloadType != GunConfiguration.RELOAD_NONE) { setMag(stack, getMag(stack) - 1); } else { - player.inventory.consumeInventoryItem(getBeltType(player, stack, main)); + InventoryUtil.doesPlayerHaveAStack(player, getBeltType(player, stack, main), true, false); } } @@ -637,16 +550,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { return config.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; } - /*//returns main config from itemstack - public static GunConfiguration extractConfig(ItemStack stack) { - - if(stack != null && stack.getItem() instanceof ItemGunBase) { - return ((ItemGunBase)stack.getItem()).mainConfig; - } - - return null; - }*/ - /// sets reload cycle to config defult /// public static void resetReloadCycle(ItemStack stack) { writeNBT(stack, "reload", ((ItemGunBase)stack.getItem()).mainConfig.reloadDuration); @@ -733,6 +636,24 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { return readNBT(stack, "magazineType"); } + /// queued casing for ejection /// + public static void setCasing(ItemStack stack, BulletConfiguration bullet) { + writeNBT(stack, "casing", BulletConfigSyncingUtil.getKey(bullet)); + } + + public static BulletConfiguration getCasing(ItemStack stack) { + return BulletConfigSyncingUtil.pullConfig(readNBT(stack, "casing")); + } + + /// timer for ejecting casing /// + public static void setCasingTimer(ItemStack stack, int i) { + writeNBT(stack, "casingTimer", i); + } + + public static int getCasingTimer(ItemStack stack) { + return readNBT(stack, "casingTimer"); + } + /// NBT utility /// public static void writeNBT(ItemStack stack, String key, int value) { @@ -769,7 +690,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { return; } - Item ammo = bcfg.ammo; + ComparableStack ammo = bcfg.ammo; int count = ItemGunBase.getMag(stack); int max = gcfg.ammoCap; boolean showammo = gcfg.showAmmo; @@ -782,15 +703,15 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { int dura = ItemGunBase.getItemWear(stack) * 50 / gcfg.durability; - RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, new ItemStack(ammo), count, max, dura, showammo); + RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo.toStack(), count, max, dura, showammo); if(gun.altConfig != null && gun.altConfig.reloadType == GunConfiguration.RELOAD_NONE) { - Item oldAmmo = ammo; + ComparableStack oldAmmo = ammo; ammo = ItemGunBase.getBeltType(player, stack, false); - if(ammo != oldAmmo) { + if(!ammo.isApplicable(oldAmmo)) { count = ItemGunBase.getBeltSize(player, ammo); - RenderScreenOverlay.renderAmmoAlt(event.resolution, Minecraft.getMinecraft().ingameGUI, new ItemStack(ammo), count); + RenderScreenOverlay.renderAmmoAlt(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo.toStack(), count); } } } @@ -811,4 +732,39 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD { GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; return config.animations.get(type); } + + @Override + public void onEquip(EntityPlayer player) { + if(!mainConfig.equipSound.isEmpty() && !player.worldObj.isRemote) { + player.worldObj.playSoundAtEntity(player, mainConfig.equipSound, 1, 1); + } + } + + protected static void queueCasing(Entity entity, CasingEjector ejector, BulletConfiguration bullet, ItemStack stack) { + + if(ejector == null || bullet == null || bullet.spentCasing == null) return; + + if(ejector.getDelay() <= 0) { + trySpawnCasing(entity, ejector, bullet, stack); + } else { + setCasing(stack, bullet); + setCasingTimer(stack, ejector.getDelay()); + } + } + + protected static void trySpawnCasing(Entity entity, CasingEjector ejector, BulletConfiguration bullet, ItemStack stack) { + + if(ejector == null) return; //abort if the gun can't eject bullets at all + if(bullet == null) return; //abort if there's no valid bullet cfg + if(bullet.spentCasing == null) return; //abort if the bullet is caseless + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "casing"); + data.setFloat("pitch", -(float) Math.toRadians(entity.rotationPitch)); + data.setFloat("yaw", (float) Math.toRadians(entity.rotationYaw)); + data.setBoolean("crouched", entity.isSneaking()); + data.setString("name", bullet.spentCasing.getName()); + data.setInteger("ej", ejector.getId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50)); + } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java index 04f029d2a..880813acd 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java @@ -76,13 +76,8 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { if(hasInfinity(stack, config)) return; - - if(config.reloadType != mainConfig.RELOAD_NONE) { - setMag(stack, getMag(stack) - this.getConsumption(stack)); - } else { - player.inventory.consumeInventoryItem(getBeltType(player, stack, main)); - } + setMag(stack, getMag(stack) - this.getConsumption(stack)); } @Override diff --git a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java b/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java index e24eead2d..7f8d76a53 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java @@ -1,6 +1,8 @@ package com.hbm.items.weapon; import com.hbm.entity.projectile.EntityCombineBall; +import com.hbm.entity.projectile.EntityCombineBallNT; +import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.GunConfiguration; import com.hbm.items.ModItems; @@ -20,7 +22,8 @@ public class ItemGunOSIPR extends ItemGunBase { setCharge(stack, 1); world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); } - + + @Override protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { super.updateServer(stack, world, player, slot, isCurrentItem); @@ -32,9 +35,8 @@ public class ItemGunOSIPR extends ItemGunBase { int i = getCharge(stack); if(i >= 20) { - EntityCombineBall entityarrow = new EntityCombineBall(player.worldObj, player, 3.0F); - entityarrow.setDamage(1000); - world.spawnEntityInWorld(entityarrow); + EntityCombineBallNT energyBall = new EntityCombineBallNT(world, BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED, player); + world.spawnEntityInWorld(energyBall); world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F); setCharge(stack, 0); setDelay(stack, altConfig.rateOfFire); @@ -43,7 +45,8 @@ public class ItemGunOSIPR extends ItemGunBase { } else if(i > 0) setCharge(stack, i + 1); } - + + @Override protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { return super.tryShoot(stack, world, player, main) && getCharge(stack) == 0; diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java index d1ef25af6..21dc8448a 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java @@ -9,32 +9,22 @@ import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.handler.HbmKeybinds; import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.machine.ItemBattery; import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.BobMathUtil; import com.hbm.util.ChatBuilder; -import com.hbm.util.I18nUtil; import api.hbm.energy.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.settings.GameSettings; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -56,28 +46,11 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { } @Override -public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { list.add("Energy Stored: " + BobMathUtil.getShortNumber(getCharge(stack)) + "/" + BobMathUtil.getShortNumber(mainConfig.maxCharge) + "HE"); list.add("Charge rate: " + BobMathUtil.getShortNumber(mainConfig.chargeRate) + "HE/t"); - BulletConfiguration config = getConfig(stack); - - list.add(""); - list.add("Mode: " + I18nUtil.resolveKey(config.modeName)); - list.add("Mode info:"); - list.add("Average damage: " + ((float)(config.dmgMax + config.dmgMin) / 2F)); - list.add("Firing Rate: " + BobMathUtil.roundDecimal((1F / (((float)config.firingRate) / 20F)), 2) + " rounds per second"); - list.add("Power Consumption per Shot: " + BobMathUtil.getShortNumber(config.dischargePerShot) + "HE"); - - list.add(""); - list.add("Name: " + mainConfig.name); - list.add("Manufacturer: " + mainConfig.manufacturer); - - if(!mainConfig.comment.isEmpty()) { - list.add(""); - for(String s : mainConfig.comment) - list.add(EnumChatFormatting.ITALIC + s); - } + addAdditionalInformation(stack, list); } @Override diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index db7e34abc..c405dab26 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -2,6 +2,8 @@ package com.hbm.lib; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; import com.hbm.items.special.ItemBookLore.BookLoreType; @@ -21,7 +23,7 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ingot_titanium, 0, 1, 1, 3), new WeightedRandomChestContent(ModItems.circuit_targeting_tier1, 0, 1, 1, 5), new WeightedRandomChestContent(ModItems.gun_revolver, 0, 1, 1, 3), - new WeightedRandomChestContent(ModItems.gun_revolver_ammo, 0, 2, 6, 4), + new WeightedRandomChestContent(ModItems.ammo_357, Ammo357Magnum.LEAD.ordinal(), 2, 6, 4), new WeightedRandomChestContent(ModItems.gun_kit_1, 0, 1, 3, 4), new WeightedRandomChestContent(ModItems.gun_lever_action, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.ammo_20gauge, 0, 2, 6, 3), @@ -102,9 +104,9 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.gun_rpg, 0, 1, 1, 4), new WeightedRandomChestContent(ModItems.ammo_rocket, 0, 1, 4, 5), new WeightedRandomChestContent(ModItems.gun_fatman, 0, 1, 1, 1), - new WeightedRandomChestContent(ModItems.ammo_nuke_safe, 0, 1, 2, 1), - new WeightedRandomChestContent(ModItems.ammo_nuke_low, 0, 1, 2, 1), - new WeightedRandomChestContent(ModItems.ammo_nuke_pumpkin, 0, 1, 2, 1), + new WeightedRandomChestContent(ModItems.ammo_nuke, AmmoFatman.SAFE.ordinal(), 1, 2, 1), + new WeightedRandomChestContent(ModItems.ammo_nuke, AmmoFatman.LOW.ordinal(), 1, 2, 1), + new WeightedRandomChestContent(ModItems.ammo_nuke, AmmoFatman.PUMPKIN.ordinal(), 1, 2, 1), new WeightedRandomChestContent(ModItems.grenade_nuclear, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.grenade_smart, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.grenade_mirv, 0, 1, 1, 2), @@ -204,14 +206,14 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.t45_kit, 0, 1, 1, 3), new WeightedRandomChestContent(ModItems.fusion_core, 0, 1, 1, 10), new WeightedRandomChestContent(ModItems.gun_revolver, 0, 1, 1, 4), - new WeightedRandomChestContent(ModItems.gun_revolver_ammo, 0, 1, 24, 4), + new WeightedRandomChestContent(ModItems.ammo_357, Ammo357Magnum.LEAD.ordinal(), 1, 24, 4), new WeightedRandomChestContent(ModItems.gun_kit_1, 0, 2, 3, 4), new WeightedRandomChestContent(ModItems.gun_rpg, 0, 1, 1, 3), new WeightedRandomChestContent(ModItems.ammo_rocket, 0, 1, 6, 3), new WeightedRandomChestContent(ModItems.rod, BreedingRodType.U235.ordinal(), 1, 1, 2), new WeightedRandomChestContent(ModItems.billet_uranium_fuel, 0, 1, 1, 2), new WeightedRandomChestContent(ModItems.ingot_uranium_fuel, 0, 1, 1, 2), - new WeightedRandomChestContent(ModItems.ammo_nuke_safe, 0, 1, 2, 1), + new WeightedRandomChestContent(ModItems.ammo_nuke, AmmoFatman.SAFE.ordinal(), 1, 2, 1), new WeightedRandomChestContent(ModItems.gun_fatman, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.bottle_nuka, 0, 1, 3, 6), new WeightedRandomChestContent(ModItems.bottle_quantum, 0, 1, 1, 3), @@ -321,7 +323,7 @@ public class HbmChestContents { public static WeightedRandomChestContent[] vault4 = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.ammo_container, 0, 3, 6, 1), new WeightedRandomChestContent(ModItems.clip_fatman, 0, 2, 3, 1), - new WeightedRandomChestContent(ModItems.ammo_mirv, 0, 2, 3, 1), + new WeightedRandomChestContent(ModItems.ammo_nuke, AmmoFatman.MIRV.ordinal(), 2, 3, 1), new WeightedRandomChestContent(ModItems.gun_mirv, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gun_fatman, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gun_proto, 0, 1, 1, 1), diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java new file mode 100644 index 000000000..7fa984f47 --- /dev/null +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -0,0 +1,190 @@ +package com.hbm.lib; + +import java.util.List; +import java.util.Set; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.items.weapon.ItemAmmo.AmmoItemTrait; + +public class HbmCollection { + + public static final Set APType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_WEAR); + public static final Set FlechetteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR); + public static final Set IncendiaryType = ImmutableSet.of(AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR); + public static final Set PhosphorusType = ImmutableSet.of(AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION); + public static final Set PhosphorusTypeSpecial = ImmutableSet.of(AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR); + public static final Set ExplosiveType = ImmutableSet.of(AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR); + public static final Set DUType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR); + public static final Set StarmetalType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_STARMETAL, AmmoItemTrait.CON_HEAVY_WEAR); + public static final Set ChlorophyteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.NEU_CHLOROPHYTE, AmmoItemTrait.NEU_HOMING, AmmoItemTrait.CON_PENETRATION); + + /// BULLET COLLECTIONS + // SHOTGUNS + /** 12 GAUGE **/ + public static final List twelveGauge = ImmutableList.of(BulletConfigSyncingUtil.G12_NORMAL, BulletConfigSyncingUtil.G12_INCENDIARY, BulletConfigSyncingUtil.G12_SHRAPNEL, BulletConfigSyncingUtil.G12_DU, BulletConfigSyncingUtil.G12_AM, BulletConfigSyncingUtil.G12_SLEEK, BulletConfigSyncingUtil.G12_PERCUSSION); + /** 20 GAUGE **/ + public static final List twentyGauge = ImmutableList.of(BulletConfigSyncingUtil.G20_NORMAL, BulletConfigSyncingUtil.G20_SLUG, BulletConfigSyncingUtil.G20_FLECHETTE, BulletConfigSyncingUtil.G20_FIRE, BulletConfigSyncingUtil.G20_SHRAPNEL, BulletConfigSyncingUtil.G20_EXPLOSIVE, BulletConfigSyncingUtil.G20_CAUSTIC, BulletConfigSyncingUtil.G20_SHOCK, BulletConfigSyncingUtil.G20_WITHER, BulletConfigSyncingUtil.G20_SLEEK); + /** 4 GAUGE **/ + public static final List fourGauge = ImmutableList.of(BulletConfigSyncingUtil.G4_NORMAL, BulletConfigSyncingUtil.G4_SLUG, BulletConfigSyncingUtil.G4_FLECHETTE, BulletConfigSyncingUtil.G4_FLECHETTE_PHOSPHORUS, BulletConfigSyncingUtil.G4_EXPLOSIVE, BulletConfigSyncingUtil.G4_SEMTEX, BulletConfigSyncingUtil.G4_BALEFIRE, BulletConfigSyncingUtil.G4_KAMPF, BulletConfigSyncingUtil.G4_CANISTER, BulletConfigSyncingUtil.G4_CLAW, BulletConfigSyncingUtil.G4_VAMPIRE, BulletConfigSyncingUtil.G4_VOID, BulletConfigSyncingUtil.G4_TITAN, BulletConfigSyncingUtil.G4_SLEEK); + // PISTOL CALIBER + /** .22 LONG RIFLE **/ + public static final List twentyTwoLR = ImmutableList.of(BulletConfigSyncingUtil.LR22_NORMAL, BulletConfigSyncingUtil.LR22_AP, BulletConfigSyncingUtil.CHL_LR22); + public static final List twentyTwoLRFire = ImmutableList.of(BulletConfigSyncingUtil.LR22_NORMAL_FIRE, BulletConfigSyncingUtil.LR22_AP_FIRE, BulletConfigSyncingUtil.CHL_LR22_FIRE); + /** .44 MAGNUM (BASIC) **/ + public static final List fourtyFourMagBasic = ImmutableList.of(BulletConfigSyncingUtil.M44_NORMAL, BulletConfigSyncingUtil.M44_AP, BulletConfigSyncingUtil.M44_DU, BulletConfigSyncingUtil.M44_PHOSPHORUS, BulletConfigSyncingUtil.M44_STAR, BulletConfigSyncingUtil.CHL_M44, BulletConfigSyncingUtil.M44_ROCKET); + /** .44 MAGNUM (ALL) **/ + public static final List fourtyFourMagAll = ImmutableList.of(BulletConfigSyncingUtil.M44_NORMAL, BulletConfigSyncingUtil.M44_AP, BulletConfigSyncingUtil.M44_DU, BulletConfigSyncingUtil.M44_PHOSPHORUS, BulletConfigSyncingUtil.M44_STAR, BulletConfigSyncingUtil.CHL_M44, BulletConfigSyncingUtil.M44_ROCKET, BulletConfigSyncingUtil.M44_PIP, BulletConfigSyncingUtil.M44_BJ, BulletConfigSyncingUtil.M44_SILVER); + /** .50 ACTION EXPRESS **/ + public static final List fiftyAE = ImmutableList.of(BulletConfigSyncingUtil.AE50_NORMAL, BulletConfigSyncingUtil.AE50_AP, BulletConfigSyncingUtil.AE50_DU, BulletConfigSyncingUtil.AE50_STAR, BulletConfigSyncingUtil.CHL_AE50); + /** 9MM Parabellum **/ + public static final List nineMM = ImmutableList.of(BulletConfigSyncingUtil.P9_NORMAL, BulletConfigSyncingUtil.P9_AP, BulletConfigSyncingUtil.P9_DU, BulletConfigSyncingUtil.CHL_P9, BulletConfigSyncingUtil.P9_ROCKET); + /** .45 AUTOMATIC COLT PISTOL **/ + public static final List fourtyFiveACP = ImmutableList.of(BulletConfigSyncingUtil.ACP_45, BulletConfigSyncingUtil.ACP_45_AP, BulletConfigSyncingUtil.ACP_45_DU); + // RIFLE CALIBER + /** .50 BROWNING MACHINE GUN **/ + public static final List fiftyBMG = ImmutableList.of(BulletConfigSyncingUtil.BMG50_NORMAL, BulletConfigSyncingUtil.BMG50_INCENDIARY, BulletConfigSyncingUtil.BMG50_PHOSPHORUS, BulletConfigSyncingUtil.BMG50_EXPLOSIVE, BulletConfigSyncingUtil.BMG50_AP, BulletConfigSyncingUtil.BMG50_DU, BulletConfigSyncingUtil.BMG50_STAR, BulletConfigSyncingUtil.CHL_BMG50, BulletConfigSyncingUtil.BMG50_SLEEK); + /** .50 BROWNING MACHINE GUN (FLECHETTE) **/ + public static final List fiftyBMGFlechette = ImmutableList.of(BulletConfigSyncingUtil.BMG50_FLECHETTE_AM, BulletConfigSyncingUtil.BMG50_FLECHETTE_NORMAL, BulletConfigSyncingUtil.BMG50_FLECHETTE_PO); + /** 5.56MMx45 NATO (BASIC) **/ + public static final List NATO = ImmutableList.of(BulletConfigSyncingUtil.R556_NORMAL, BulletConfigSyncingUtil.R556_TRACER, BulletConfigSyncingUtil.R556_PHOSPHORUS, BulletConfigSyncingUtil.R556_AP, BulletConfigSyncingUtil.R556_DU, BulletConfigSyncingUtil.R556_STAR, BulletConfigSyncingUtil.CHL_R556, BulletConfigSyncingUtil.R556_SLEEK, BulletConfigSyncingUtil.R556_K, BulletConfigSyncingUtil.R556_GOLD); + /** 5.56MMx45 NATO (FLECHETTE) **/ + public static final List NATOFlechette = ImmutableList.of(BulletConfigSyncingUtil.R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_INCENDIARY, BulletConfigSyncingUtil.R556_FLECHETTE_PHOSPHORUS, BulletConfigSyncingUtil.R556_FLECHETTE_DU, BulletConfigSyncingUtil.CHL_R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_SLEEK, BulletConfigSyncingUtil.R556_K); + /** 7.62x51mm NATO **/ + public static final List threeZeroEight = ImmutableList.of(BulletConfigSyncingUtil.W308); + /** 5MM **/ + public static final List fiveMM = ImmutableList.of(BulletConfigSyncingUtil.R5_NORMAL, BulletConfigSyncingUtil.R5_EXPLOSIVE, BulletConfigSyncingUtil.R5_DU, BulletConfigSyncingUtil.R5_STAR, BulletConfigSyncingUtil.CHL_R5); + /** 5MM LACUNAE **/ + public static final List fiveMMBolt = ImmutableList.of(BulletConfigSyncingUtil.R5_NORMAL_BOLT, BulletConfigSyncingUtil.R5_EXPLOSIVE_BOLT, BulletConfigSyncingUtil.R5_DU_BOLT, BulletConfigSyncingUtil.R5_STAR_BOLT, BulletConfigSyncingUtil.CHL_R5_BOLT); + // MISC + /** .75 **/ + public static final List seventyFive = ImmutableList.of(BulletConfigSyncingUtil.B75_NORMAL, BulletConfigSyncingUtil.B75_INCENDIARY, BulletConfigSyncingUtil.B75_HE); + /** 240MM SHELL **/ + public static final List cannon = ImmutableList.of(BulletConfigSyncingUtil.SHELL_NORMAL, BulletConfigSyncingUtil.SHELL_EXPLOSIVE, BulletConfigSyncingUtil.SHELL_AP, BulletConfigSyncingUtil.SHELL_DU, BulletConfigSyncingUtil.SHELL_W9); + /** FLAMETHROWER FUEL **/ + public static final List flamer = ImmutableList.of(BulletConfigSyncingUtil.FLAMER_NORMAL, BulletConfigSyncingUtil.FLAMER_NAPALM, BulletConfigSyncingUtil.FLAMER_WP, BulletConfigSyncingUtil.FLAMER_VAPORIZER, BulletConfigSyncingUtil.FLAMER_GAS); + /** MINI-NUKES **/ + public static final List fatman = ImmutableList.of(BulletConfigSyncingUtil.NUKE_NORMAL, BulletConfigSyncingUtil.NUKE_LOW, BulletConfigSyncingUtil.NUKE_HIGH, BulletConfigSyncingUtil.NUKE_TOTS, BulletConfigSyncingUtil.NUKE_SAFE, BulletConfigSyncingUtil.NUKE_PUMPKIN, BulletConfigSyncingUtil.NUKE_BARREL); + /** MIRV MINI-NUKES **/ + public static final List fatmanMIRV = ImmutableList.of(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL, BulletConfigSyncingUtil.NUKE_MIRV_LOW, BulletConfigSyncingUtil.NUKE_MIRV_HIGH, BulletConfigSyncingUtil.NUKE_MIRV_SAFE, BulletConfigSyncingUtil.NUKE_MIRV_SPECIAL); + /** 40MM GRENADE **/ + public static final List grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF); + /** 84MM ROCKET **/ + public static final List rocket = ImmutableList.of(BulletConfigSyncingUtil.ROCKET_NORMAL, BulletConfigSyncingUtil.ROCKET_HE, BulletConfigSyncingUtil.ROCKET_INCENDIARY, BulletConfigSyncingUtil.ROCKET_PHOSPHORUS, BulletConfigSyncingUtil.ROCKET_SHRAPNEL, BulletConfigSyncingUtil.ROCKET_EMP, BulletConfigSyncingUtil.ROCKET_GLARE, BulletConfigSyncingUtil.ROCKET_TOXIC, BulletConfigSyncingUtil.ROCKET_CANISTER, BulletConfigSyncingUtil.ROCKET_SLEEK, BulletConfigSyncingUtil.ROCKET_NUKE, BulletConfigSyncingUtil.ROCKET_CHAINSAW); + + /// FREQUENTLY USED TRANSLATION KEYS + // GUN MANUFACTURERS + public static enum EnumGunManufacturer { + /**Armalite**/ + ARMALITE, + /**Auto-Ordnance Corporation**/ + AUTO_ORDINANCE, + /**BAE Systems plc**/ + BAE, + /**Benelli Armi SpA**/ + BENELLI, + /**Black Mesa Research Facility**/ + BLACK_MESA, + /**Cerix Magnus**/ + CERIX, + /**Colt's Manufacturing Company**/ + COLT, + /**The Universal Union**/ + COMBINE, + /**Cube 2: Sauerbraten**/ + CUBE, + /**Enzinger Union**/ + ENZINGER, + /**Equestria Missile Systems**/ + EQUESTRIA, + /**Fisher Price**/ + F_PRICE, + /**Fort Strong**/ + F_STRONG, + /**FlimFlam Industries**/ + FLIMFLAM, + /**Gloria GmbH**/ + GLORIA, + /**Heckler & Koch**/ + H_AND_K, + /**Harrington & Richardson**/ + H_AND_R, + /**Hasbro**/ + HASBRO, + /**Ironshod Firearms**/ + IF, + /**Israel Military Industries**/ + IMI, + /**IMI / Big MT**/ + IMI_BIGMT, + /**Langford Research Laboratories**/ + LANGFORD, + /**Magnum Research / Israel Military Industries**/ + MAGNUM_R_IMI, + /**Open Mann Co.**/ + MANN, + /**Hiram Maxim**/ + MAXIM, + /**Metro Gunsmiths**/ + METRO, + /**MWT Prototype Labs**/ + MWT, + /**Erfurter Maschinenfabrik Geipel**/ + NAZI, + /**No manufacturer, just puts "-" **/ + NONE, + /**OxfordEM Technologies**/ + OXFORD, + /**Lunar Defense Corp**/ + LUNA, + /**Raytheon Missile Systems**/ + RAYTHEON, + /**Rockwell International Corporation**/ + ROCKWELL, + /**Rockwell International Corporation?**/ + ROCKWELL_U, + /**Ryan Industries**/ + RYAN, + /**Saab Bofors Dynamics**/ + SAAB, + /**Saco Defense / US Ordnance**/ + SACO, + /**Tulsky Oruzheiny Zavod**/ + TULSKY, + /**Union Aerospace Corporation**/ + UAC, + /**Unknown manufacturer, puts "???"**/ + UNKNOWN, + /**WestTek**/ + WESTTEK, + /**Wilhelm-Gustloff-Werke**/ + WGW, + /**Winchester Repeating Arms Company**/ + WINCHESTER, + /**Winchester Repeating Arms Company / Big MT**/ + WINCHESTER_BIGMT; + + public String getKey() { + return "gun.make." + toString(); + } + } + + // GUN DETAILS + public static final String ammo = "desc.item.gun.ammo"; + public static final String ammoMag = "desc.item.gun.ammoMag"; + public static final String ammoBelt = "desc.item.gun.ammoBelt"; + public static final String ammoEnergy = "desc.item.gun.ammoEnergy"; + public static final String altAmmoEnergy = "desc.item.gun.ammoEnergyAlt"; + public static final String ammoType = "desc.item.gun.ammoType"; + public static final String altAmmoType = "desc.item.gun.ammoTypeAlt"; + public static final String gunName = "desc.item.gun.name"; + public static final String gunMaker = "desc.item.gun.manufacturer"; + public static final String gunDamage = "desc.item.gun.damage"; + // MISC + public static final String capacity = "desc.block.barrel.capacity"; + public static final String durability = "desc.item.durability"; + public static final String meltPoint = "desc.misc.meltPoint"; + public static final String lctrl = "desc.misc.lctrl"; + public static final String lshift = "desc.misc.lshift"; +} diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 357f120e6..9ba48f076 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -8,7 +8,10 @@ import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; import com.hbm.config.GeneralConfig; import com.hbm.config.WorldConfig; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.machine.storage.TileEntitySafe; @@ -28,6 +31,7 @@ import com.hbm.world.dungeon.Satellite; import com.hbm.world.dungeon.Silo; import com.hbm.world.dungeon.Spaceship; import com.hbm.world.dungeon.Vertibird; +import com.hbm.world.feature.BedrockOre; import com.hbm.world.feature.DepthDeposit; import com.hbm.world.feature.Dud; import com.hbm.world.feature.Geyser; @@ -150,8 +154,17 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.hematiteSpawn, 10, 4, 80, ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 4, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); + //DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.hematiteSpawn, 10, 4, 80, ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); + + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.IRON, 1, WorldConfig.bedrockIronSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.COPPER, 1, WorldConfig.bedrockCopperSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.BORAX, new FluidStack(Fluids.SULFURIC_ACID, 500), 3, WorldConfig.bedrockBoraxSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.ASBESTOS, 2, WorldConfig.bedrockAsbestosSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.NIOBIUM, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockNiobiumSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, WorldConfig.bedrockTitaniumSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TUNGSTEN, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockTungstenSpawn); + DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.GOLD, 1, WorldConfig.bedrockGoldSpawn); for(int k = 0; k < WorldConfig.randomSpawn; k++) { BlockMotherOfAllOres.shuffleOverride(rand); @@ -169,16 +182,11 @@ public class HbmWorldGen implements IWorldGenerator { int colRange = 750; if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) != 0) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); + int x = i + rand.nextInt(16) + 8; + int z = j + rand.nextInt(16) + 8; if(GeneralConfig.enable528BedrockSpawn || (GeneralConfig.enable528BedrockDeposit && x <= colX + colRange && x >= colX - colRange && z <= colZ + colRange && z >= colZ - colRange)) { - - for(int y = 6; y >= 0; y--) { - if(world.getBlock(x, y, z).isReplaceableOreGen(world, x, y, z, Blocks.bedrock)) { - world.setBlock(x, y, z, ModBlocks.ore_bedrock_coltan); - } - } + BedrockOre.generate(world, x, z, new ItemStack(ModItems.fragment_coltan), null, 0xA78D7A, 1); } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index e4b840948..90d63b9dc 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -640,9 +640,12 @@ public class Library { } public static boolean isObstructed(World world, double x, double y, double z, double a, double b, double c) { - MovingObjectPosition pos = world.rayTraceBlocks(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c)); - + return pos != null; + } + + public static boolean isObstructedOpaque(World world, double x, double y, double z, double a, double b, double c) { + MovingObjectPosition pos = world.func_147447_a(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c), false, true, false); return pos != null; } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index dade4e19c..c07a242e8 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/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 (4445)"; + public static final String VERSION = "1.0.27 BETA (4501)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1aeae437c..9bfd5e61a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -58,6 +58,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; @@ -192,6 +193,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretBrandon.class, new RenderTurretBrandon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretArty.class, new RenderTurretArty()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHIMARS.class, new RenderTurretHIMARS()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentry.class, new RenderTurretSentry()); //mines ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLandmine.class, new RenderLandmine()); //machines @@ -264,6 +266,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExcavator.class, new RenderExcavator()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMixer.class, new RenderMixer()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); @@ -473,7 +476,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_avenger, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lacunae, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_brimstone, new ItemRenderObj()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hk69, new ItemRenderWeaponObj()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj()); @@ -1788,6 +1790,17 @@ public class ClientProxy extends ServerProxy { RenderOverhead.queuedMarkers.put(new BlockPos(x, y, z), new Marker(color).setDist(dist).setExpire(expires > 0 ? System.currentTimeMillis() + expires : 0).withLabel(label.isEmpty() ? null : label)); } + + if("casing".equals(type)) { + CasingEjector ejector = CasingEjector.fromId(data.getInteger("ej")); + if(ejector == null) return; + SpentCasing casingConfig = SpentCasing.fromName((data.getString("name"))); + if(casingConfig == null) return; + + for(int i = 0; i < ejector.getAmount(); i++) { + ejector.spawnCasing(man, casingConfig, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); + } + } } private HashMap vanished = new HashMap(); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 92c1ccf73..2c229c133 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -17,6 +17,8 @@ import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo50BMG; +import com.hbm.items.ItemAmmoEnums.Ammo5mm; import com.hbm.items.ItemEnums.EnumLegendaryType; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; @@ -228,7 +230,7 @@ public class CraftingManager { ItemStack infinity = new ItemStack(Items.enchanted_book); EnchantmentUtil.addEnchantment(infinity, Enchantment.infinity, 1); - addRecipeAuto(infinity, new Object[] { "SBS", "BDB", "SBS", 'S', ModItems.ammo_50bmg_star, 'B', ModItems.ammo_5mm_star, 'D', ModItems.powder_magic }); + addRecipeAuto(infinity, new Object[] { "SBS", "BDB", "SBS", 'S', ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STAR), 'B', ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STAR), 'D', ModItems.powder_magic }); ItemStack unbreaking = new ItemStack(Items.enchanted_book); EnchantmentUtil.addEnchantment(unbreaking, Enchantment.unbreaking, 3); addRecipeAuto(unbreaking, new Object[] { "SBS", "BDB", "SBS", 'S', BIGMT.ingot(), 'B', ModItems.plate_armor_lunar, 'D', ModItems.powder_magic }); @@ -304,6 +306,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_fraction_tower), new Object[] { "SHS", "SGS", "SHS", 'S', STEEL.plate(), 'H', ModItems.hull_big_steel, 'G', ModBlocks.steel_grate }); addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); + addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); @@ -445,6 +448,12 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.chain), 8), new Object[] { "S", "S", "S", 'S', ModBlocks.steel_beam }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.steel_grate), 4), new Object[] { "SS", "SS", 'S', ModBlocks.steel_beam }); + + addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 0), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeGray" }); + addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 1), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeRed" }); + addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 2), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeWhite" }); + addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 3), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeYellow" }); + reg2(); } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 0e8028d79..d04a3d4e2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -60,6 +60,7 @@ import com.hbm.inventory.recipes.*; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; import com.hbm.lib.HbmWorld; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; @@ -617,7 +618,7 @@ public class MainRegistry { achStratum = new Achievement("achievement.stratum", "stratum", -4, -2, new ItemStack(ModBlocks.stone_gneiss), null).initIndependentStat().setSpecial().registerStat(); achOmega12 = new Achievement("achievement.omega12", "omega12", 17, -1, ModItems.particle_digamma, null).initIndependentStat().setSpecial().registerStat(); - achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge_vampire, null).initIndependentStat().setSpecial().registerStat(); + achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, Items.slime_ball, null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, ModItems.bucket_sulfuric_acid, achSlimeball).initIndependentStat().setSpecial().registerStat(); @@ -785,6 +786,7 @@ public class MainRegistry { RadiolysisRecipes.registerRadiolysis(); GasCentrifugeRecipes.register(); CombinationRecipes.register(); + MixerRecipes.register(); //the good stuff SerializableRecipe.registerAllHandlers(); @@ -996,6 +998,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.pirfenidone"); ignoreMappings.add("hbm:item.coin_siege"); ignoreMappings.add("hbm:item.source"); + ignoreMappings.add("hbm:item.gun_brimstone"); ignoreMappings.add("hbm:item.stamp_schrabidium_flat"); ignoreMappings.add("hbm:item.stamp_schrabidium_plate"); ignoreMappings.add("hbm:item.stamp_schrabidium_wire"); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index f375b7a72..e7c1cbbe5 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -19,6 +19,7 @@ import com.hbm.entity.projectile.EntityChopperMine; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; +import com.hbm.handler.GunConfiguration; import com.hbm.handler.HTTPHandler; import com.hbm.handler.HazmatRegistry; import com.hbm.handler.ImpactWorldHandler; @@ -113,6 +114,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldProviderSurface; import net.minecraftforge.client.GuiIngameForge; import net.minecraftforge.client.IRenderHandler; +import net.minecraftforge.client.event.FOVUpdateEvent; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; @@ -219,6 +221,18 @@ public class ModEventHandlerClient { PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(0, 0, 0, 999, 0)); } + /// HANDLE SCOPE OVERLAY /// + ItemStack held = player.getHeldItem(); + + if(player.isSneaking() && held != null && held.getItem() instanceof ItemGunBase && event.type == event.type.HOTBAR) { + GunConfiguration config = ((ItemGunBase) held.getItem()).mainConfig; + + if(config.scopeTexture != null) { + ScaledResolution resolution = event.resolution; + RenderScreenOverlay.renderScope(resolution, config.scopeTexture); + } + } + /// HANDLE FSB HUD /// ItemStack helmet = player.inventory.armorInventory[3]; @@ -327,6 +341,27 @@ public class ModEventHandlerClient { } } + @SubscribeEvent + public void setupFOV(FOVUpdateEvent event) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack held = player.getHeldItem(); + + if(held == null) return; + if(!(held.getItem() instanceof ItemGunBase)) return; + + GunConfiguration config = ((ItemGunBase) held.getItem()).mainConfig; + + if(config == null) return; + if(config.zoomFOV == 0F || !player.isSneaking()) return; + + if(config.absoluteFOV) { + event.newfov = config.zoomFOV; + } else { + event.newfov += config.zoomFOV; + } + } + public static boolean ducked = false; @SubscribeEvent diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 8a9450bd4..21614d1fd 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -64,6 +64,7 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new BoilingHandler()); registerHandler(new CombinationHandler()); registerHandler(new SawmillHandler()); + registerHandler(new MixerHandler()); registerHandler(new ChunkyHandler()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 1f6aa2c91..7945004f4 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -21,29 +21,6 @@ public class ResourceManager { ////Obj TEs //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_cwis_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/cwis_base.obj")); - public static final IModelCustom turret_cwis_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/cwis_rotor.obj")); - - public static final IModelCustom turret_cheapo_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_cheapo_base.obj")); - public static final IModelCustom turret_cheapo_rotor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_cheapo_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")); - public static final IModelCustom turret_cwis_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/cwis_head.obj")); - public static final IModelCustom turret_cwis_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/cwis_gun.obj")); - public static final IModelCustom turret_cheapo_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_cheapo_head.obj")); - public static final IModelCustom turret_cheapo_gun = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/turret_cheapo_gun.obj")); - public static final IModelCustom turret_chekhov = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_chekhov.obj")); public static final IModelCustom turret_jeremy = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_jeremy.obj")); public static final IModelCustom turret_tauon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_tauon.obj")); @@ -54,6 +31,7 @@ public class ResourceManager { public static final IModelCustom turret_brandon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_brandon.obj")); public static final IModelCustom turret_arty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_arty.obj")).asDisplayList(); // test! public static final IModelCustom turret_himars = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_himars.obj")).asDisplayList(); + public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")); public static final IModelCustom turret_howard_damaged = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard_damaged.obj")); @@ -150,6 +128,9 @@ public class ResourceManager { public static final IModelCustom chemplant_fluidcap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluidcap.hmf")); public static final IModelCustom chemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chemfac.obj")); + //Mixer + public static final IModelCustom mixer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mixer.obj")); + //F6 TANKS public static final IModelCustom tank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tank.obj")); @@ -335,28 +316,7 @@ public class ResourceManager { public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); public static final ResourceLocation universal_bright = new ResourceLocation(RefStrings.MODID, "textures/models/turbofan_blades.png"); - - public static final ResourceLocation turret_heavy_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_heavy_base.png"); - public static final ResourceLocation turret_heavy_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_heavy_rotor.png"); - public static final ResourceLocation turret_heavy_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_heavy_gun.png"); - public static final ResourceLocation turret_light_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_light_rotor.png"); - public static final ResourceLocation turret_light_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_light_gun.png"); - public static final ResourceLocation turret_rocket_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_rocket_rotor.png"); - public static final ResourceLocation turret_rocket_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_rocket_gun.png"); - public static final ResourceLocation turret_flamer_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_flamer_rotor.png"); - public static final ResourceLocation turret_flamer_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_flamer_gun.png"); - public static final ResourceLocation turret_tau_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_tau_rotor.png"); - public static final ResourceLocation turret_tau_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_tau_gun.png"); - public static final ResourceLocation turret_ciws_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/cwis_base.png"); - public static final ResourceLocation turret_ciws_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/cwis_rotor.png"); - public static final ResourceLocation turret_ciws_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/cwis_head.png"); - public static final ResourceLocation turret_ciws_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/cwis_gun.png"); - public static final ResourceLocation turret_cheapo_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_cheapo_base.png"); - public static final ResourceLocation turret_cheapo_rotor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_cheapo_rotor.png"); - public static final ResourceLocation turret_cheapo_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_cheapo_head.png"); - public static final ResourceLocation turret_cheapo_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turret_cheapo_gun.png"); - public static final ResourceLocation turret_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base.png"); public static final ResourceLocation turret_base_friendly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base_friendly.png"); public static final ResourceLocation turret_carriage_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/carriage.png"); @@ -375,6 +335,7 @@ public class ResourceManager { public static final ResourceLocation turret_brandon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon.png"); public static final ResourceLocation turret_arty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/arty.png"); public static final ResourceLocation turret_himars_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/himars.png"); + public static final ResourceLocation turret_sentry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/sentry.png"); public static final ResourceLocation himars_standard_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/himars_standard.png"); public static final ResourceLocation himars_single_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/himars_single.png"); @@ -486,10 +447,13 @@ public class ResourceManager { public static final ResourceLocation chemplant_piston_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_piston_new.png"); public static final ResourceLocation chemplant_fluid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lavabase_small.png"); public static final ResourceLocation chemfac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chemfac.png"); - - //F6 TANKS - public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); - public static final ResourceLocation puf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/PUF6Tank.png"); + + //Mixer + public static final ResourceLocation mixer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mixer.png"); + + //F6 TANKS + public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); + public static final ResourceLocation puf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/PUF6Tank.png"); //Centrifuge public static final ResourceLocation centrifuge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/centrifuge.png"); @@ -691,7 +655,6 @@ public class ResourceManager { public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj")); public static final IModelCustom chainsaw = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chainsaw.obj"), false); - public static final IModelCustom brimstone = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/brimstone.obj")); public static final IModelCustom hk69 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/hk69.obj")); public static final IModelCustom deagle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/deagle.obj")); public static final IModelCustom shotty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/supershotty.obj")); @@ -762,7 +725,6 @@ public class ResourceManager { public static final ResourceLocation crucible_blade = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/crucible_blade.png"); public static final ResourceLocation chainsaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/chainsaw.png"); - public static final ResourceLocation brimstone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/brimstone.png"); public static final ResourceLocation hk69_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hk69.png"); public static final ResourceLocation deagle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/deagle.png"); public static final ResourceLocation ks23_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ks23.png"); @@ -903,6 +865,7 @@ public class ResourceManager { //Projectiles public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj")); + public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")); //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); @@ -1028,6 +991,7 @@ public class ResourceManager { public static final ResourceLocation rocket_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/rocket_mirv.png"); public static final ResourceLocation mini_nuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_nuke.png"); public static final ResourceLocation mini_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_mirv.png"); + public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png"); //Bomber public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 5a5d4e514..097bc6859 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -119,6 +119,10 @@ public class ModulePatternMatcher { String mode = modes[index]; + if(mode == null) { + modes[index] = mode = MODE_EXACT; + } + switch(mode) { case MODE_EXACT: return input.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(input, filter); case MODE_WILDCARD: return input.getItem() == filter.getItem() && ItemStack.areItemStackTagsEqual(input, filter); diff --git a/src/main/java/com/hbm/packet/AnvilCraftPacket.java b/src/main/java/com/hbm/packet/AnvilCraftPacket.java index c851d34b5..bc1719702 100644 --- a/src/main/java/com/hbm/packet/AnvilCraftPacket.java +++ b/src/main/java/com/hbm/packet/AnvilCraftPacket.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; +import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.util.InventoryUtil; @@ -52,7 +53,7 @@ public class AnvilCraftPacket implements IMessage { if(!(p.openContainer instanceof ContainerAnvil)) //player isn't even using an anvil -> bad return null; - ContainerAnvil anvil = (ContainerAnvil)p.openContainer; + ContainerAnvil anvil = (ContainerAnvil) p.openContainer; AnvilConstructionRecipe recipe = AnvilRecipes.getConstruction().get(m.recipeIndex); if(!recipe.isTierValid(anvil.tier)) //player is using the wrong type of anvil -> bad @@ -71,7 +72,7 @@ public class AnvilCraftPacket implements IMessage { p.triggerAchievement(MainRegistry.achAssembly); if(recipe.output.get(0).stack.getItem() == ModItems.billet_pu_mix) p.triggerAchievement(MainRegistry.achChicagoPile); - if(recipe.output.get(0).stack.getItem() == ModItems.ammo_4gauge_vampire) + if(recipe.output.get(0).stack.getItem() == ModItems.ammo_4gauge && recipe.output.get(0).stack.getItemDamage() == ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()) p.triggerAchievement(MainRegistry.achWitchtaunter); } else { diff --git a/src/main/java/com/hbm/particle/ParticleAmatFlash.java b/src/main/java/com/hbm/particle/ParticleAmatFlash.java index e01a28dca..4dbba4363 100644 --- a/src/main/java/com/hbm/particle/ParticleAmatFlash.java +++ b/src/main/java/com/hbm/particle/ParticleAmatFlash.java @@ -6,9 +6,11 @@ import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @SideOnly(Side.CLIENT) @@ -25,10 +27,15 @@ public class ParticleAmatFlash extends EntityFX { } public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; - float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX)); - float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY)); - float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ)); + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) interp - dX)); + float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY)); + float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ)); GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index f61a9ad2e..c09a00799 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -66,11 +67,17 @@ public class ParticleGiblet extends EntityFX { GL11.glPushMatrix(); GL11.glDisable(GL11.GL_LIGHTING); this.theRenderEngine.bindTexture(texture); + + /* use this instead of EntityFX.interpPosN since interpPosN isn't set up correctly for the current tick for layer 3 particles */ + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; float f10 = this.particleScale * 0.1F; - float f11 = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); - float f12 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); - float f13 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + float f11 = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - dX); + float f12 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY); + float f13 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ); tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java new file mode 100644 index 000000000..59e6ae201 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -0,0 +1,294 @@ +package com.hbm.particle; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.main.ResourceManager; +import com.hbm.util.Tuple.Pair; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleSpentCasing extends EntityFX { + + public static final Random rand = new Random(); + private static float dScale = 0.05F, smokeJitter = 0.001F; + + private int maxSmokeGen = 120; + private double smokeLift = 0.5D; + private int nodeLife = 30; + + private final List> smokeNodes = new ArrayList(); + + private final TextureManager textureManager; + + private final SpentCasing config; + private boolean isSmoking; + + private float momentumPitch, momentumYaw; + private boolean onGroundPreviously = false; + private double maxHeight; + + public ParticleSpentCasing(TextureManager textureManager, World world, double x, double y, double z, double mx, double my, double mz, float momentumPitch, float momentumYaw, SpentCasing config) { + super(world, x, y, z, 0, 0, 0); + this.textureManager = textureManager; + this.momentumPitch = momentumPitch; + this.momentumYaw = momentumYaw; + this.config = config; + + this.particleMaxAge = config.getMaxAge(); + this.isSmoking = rand.nextFloat() < config.getSmokeChance(); + this.maxSmokeGen = config.getSmokeDuration(); + this.smokeLift = config.getSmokeLift(); + this.nodeLife = config.getSmokeNodeLife(); + + this.prevPosX = x; + this.prevPosY = y; + this.prevPosZ = z; + + this.motionX = mx; + this.motionY = my; + this.motionZ = mz; + + particleGravity = 8F; + + maxHeight = y; + } + + @Override + public int getFXLayer() { + return 3; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(motionY > 0 && posY > maxHeight) + maxHeight = posY; + + if(!onGroundPreviously && onGround) + tryPlayBounceSound(); + + if(!onGroundPreviously && onGround) { + + onGroundPreviously = true; + motionY = Math.log10(maxHeight - posY + 2); + momentumPitch = (float) rand.nextGaussian() * config.getBouncePitch(); + momentumYaw = (float) rand.nextGaussian() * config.getBounceYaw(); + maxHeight = posY; + + } else if(onGroundPreviously && !onGround) { + onGroundPreviously = false; + } + + if(particleAge > maxSmokeGen && !smokeNodes.isEmpty()) + smokeNodes.clear(); + + if(isSmoking && particleAge <= maxSmokeGen) { + + for(Pair pair : smokeNodes) { + Vec3 node = pair.getKey(); + + node.xCoord += rand.nextGaussian() * smokeJitter; + node.zCoord += rand.nextGaussian() * smokeJitter; + node.yCoord += smokeLift * dScale; + + pair.value = Math.max(0, pair.value - (1D / (double) nodeLife)); + } + + if(particleAge < maxSmokeGen || inWater) { + smokeNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), smokeNodes.isEmpty() ? 0.0D : 1D)); + } + } + + prevRotationPitch = rotationPitch; + prevRotationYaw = rotationYaw; + + if(onGround) { + rotationPitch = 0; + } else { + rotationPitch += momentumPitch; + rotationYaw += momentumYaw; + } + } + + /** Used for frame-perfect translation of smoke */ + private boolean setupDeltas = false; + private double prevRenderX; + private double prevRenderY; + private double prevRenderZ; + + @Override + public void renderParticle(Tessellator tessellator, float interp, float x, float y, float z, float tx, float tz) { + + GL11.glPushMatrix(); + RenderHelper.enableStandardItemLighting(); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glDepthMask(true); + + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + + if(!setupDeltas) { + prevRenderX = pX; + prevRenderY = pY; + prevRenderZ = pZ; + setupDeltas = true; + } + + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + + textureManager.bindTexture(ResourceManager.casings_tex); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; + + GL11.glTranslated(pX - dX, pY - dY - this.height / 4 + config.getScaleY() * 0.01, pZ - dZ); + + GL11.glScalef(dScale, dScale, dScale); + + GL11.glRotatef(180 - rotationYaw, 0, 1, 0); + GL11.glRotatef(-rotationPitch, 1, 0, 0); + + GL11.glScalef(config.getScaleX(), config.getScaleY(), config.getScaleZ()); + + int index = 0; + for(String name : config.getType().partNames) { + int col = this.config.getColors()[index]; //unsafe on purpose, set your colors properly or else...! + Color color = new Color(col); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + ResourceManager.casings.renderPart(name); + index++; + } + + GL11.glColor3f(1F, 1F, 1F); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(pX - dX, pY - dY - this.height / 4, pZ - dZ); + //GL11.glScalef(dScale, dScale, dScale); + //GL11.glScalef(config.getScaleX(), config.getScaleY(), config.getScaleZ()); + + if(!smokeNodes.isEmpty()) { + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 1F, 0F); + + float scale = config.getScaleX() * 0.5F * dScale; + Vec3 vec = Vec3.createVectorHelper(scale, 0, 0); + float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp; + vec.rotateAroundY((float) Math.toRadians(-yaw)); + + double deltaX = prevRenderX - pX; + double deltaY = prevRenderY - pY; + double deltaZ = prevRenderZ - pZ; + + for(Pair pair : smokeNodes) { + Vec3 pos = pair.getKey(); + double mult = 1D; + pos.xCoord += deltaX * mult; + pos.yCoord += deltaY * mult; + pos.zCoord += deltaZ * mult; + } + + for(int i = 0; i < smokeNodes.size() - 1; i++) { + final Pair node = smokeNodes.get(i), past = smokeNodes.get(i + 1); + final Vec3 nodeLoc = node.getKey(), pastLoc = past.getKey(); + float nodeAlpha = node.getValue().floatValue(); + float pastAlpha = past.getValue().floatValue(); + + double timeAlpha = 1D - (double) particleAge / (double) maxSmokeGen; + nodeAlpha *= timeAlpha; + pastAlpha *= timeAlpha; + + tessellator.setNormal(0F, 1F, 0F); + tessellator.setColorRGBA_F(1F, 1F, 1F, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, 0F); + tessellator.addVertex(nodeLoc.xCoord + vec.xCoord, nodeLoc.yCoord, nodeLoc.zCoord + vec.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, 0F); + tessellator.addVertex(pastLoc.xCoord + vec.xCoord, pastLoc.yCoord, pastLoc.zCoord + vec.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + + tessellator.setColorRGBA_F(1F, 1F, 1F, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, 0F); + tessellator.addVertex(nodeLoc.xCoord - vec.xCoord, nodeLoc.yCoord, nodeLoc.zCoord - vec.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, 0F); + tessellator.addVertex(pastLoc.xCoord - vec.xCoord, pastLoc.yCoord, pastLoc.zCoord - vec.zCoord); + tessellator.setColorRGBA_F(1F, 1F, 1F, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + } + + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + tessellator.draw(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + + RenderHelper.disableStandardItemLighting(); + + prevRenderX = pX; + prevRenderY = pY; + prevRenderZ = pZ; + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + int i = MathHelper.floor_double(this.posX); + int j = MathHelper.floor_double(this.posZ); + + if(this.worldObj.blockExists(i, 0, j)) { + double d0 = (this.boundingBox.maxY - this.boundingBox.minY) * 0.66D; + int k = MathHelper.floor_double(this.posY - (double) this.yOffset + d0); + return this.worldObj.getLightBrightnessForSkyBlocks(i, k, j, 0); + } else { + return 0; + } + } + + private void tryPlayBounceSound() { + + String sound = config.getSound(); + + if(sound != null && !sound.isEmpty()) { + worldObj.playSoundAtEntity(this, sound, 2, 1); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/particle/SpentCasing.java b/src/main/java/com/hbm/particle/SpentCasing.java new file mode 100644 index 000000000..a44534a3f --- /dev/null +++ b/src/main/java/com/hbm/particle/SpentCasing.java @@ -0,0 +1,131 @@ +package com.hbm.particle; + +import java.util.HashMap; + +/** + * Definition for spent casing particles, what style and color they should use + * @author uffr, hbm + */ +public class SpentCasing implements Cloneable { + + public static final int COLOR_CASE_BRASS = 0xEBC35E; + public static final int COLOR_CASE_12GA = 0x757575; + public static final int COLOR_CASE_4GA = 0xD8D8D8; + public static final int COLOR_CASE_44 = 0x3E3E3E; + public static final int COLOR_CASE_16INCH = 0xD89128; + public static final int COLOR_CASE_16INCH_PHOS = 0xC8C8C8; + public static final int COLOR_CASE_16INCH_NUKE = 0x495443; + + public static final HashMap casingMap = new HashMap(); + + public enum CasingType { + STRAIGHT("Straight"), + BOTTLENECK("Bottleneck"), + SHOTGUN("Shotgun", "ShotgunCase"), //plastic shell, brass case + AR2("AR2", "AR2Highlight"); //plug, back detailing + + public final String[] partNames; + + private CasingType(String... names) { + this.partNames = names; + } + } + + private String registryName; + private float scaleX = 1F; + private float scaleY = 1F; + private float scaleZ = 1F; + private int[] colors; + private CasingType type; + private String bounceSound; + private float smokeChance; + private int smokeDuration; + private double smokeLift; + private int smokeNodeLife; + private float bounceYaw = 0F; + private float bouncePitch = 0F; + private int maxAge = 240; + + public SpentCasing(CasingType type) { + this.type = type; + } + + /** Separated from the ctor to allow for easy creation of new casings from templates that don't need to be registered */ + public SpentCasing register(String name) { + this.registryName = name; + casingMap.put(name, this); + return this; + } + + public SpentCasing setScale(float scale) { + this.scaleX = scale; + this.scaleY = scale; + this.scaleZ = scale; + return this; + } + + public SpentCasing setScale(float x, float y, float z) { + this.scaleX = x; + this.scaleY = y; + this.scaleZ = z; + return this; + } + + /** The number of colors has to match the number of objects of the chosen casing type. Brass/metal casing color has to come last to comply with the chorophyte coloring. */ + public SpentCasing setColor(int... color) { + this.colors = color; + return this; + } + + public SpentCasing setSound(String bounce) { + this.bounceSound = bounce; + return this; + } + + public SpentCasing setupSmoke(float chance, double lift, int duration, int nodeLife) { + this.smokeChance = chance; + this.smokeDuration = duration; + this.smokeLift = lift; + this.smokeNodeLife = nodeLife; + return this; + } + + public static SpentCasing fromName(String name) { + return casingMap.get(name); + } + + public SpentCasing setBounceMotion(float yaw, float pitch) { + this.bounceYaw = yaw; + this.bouncePitch = pitch; + return this; + } + + public SpentCasing setMaxAge(int age) { + this.maxAge = age; + return this; + } + + public String getName() { return this.registryName; } + public float getScaleX() { return this.scaleX; } + public float getScaleY() { return this.scaleY; } + public float getScaleZ() { return this.scaleZ; } + public int[] getColors() { return this.colors; } + public CasingType getType() { return this.type; } + public String getSound() { return this.bounceSound; } + public float getSmokeChance() { return this.smokeChance; } + public float getBounceYaw() { return this.bounceYaw; } + public float getBouncePitch() { return this.bouncePitch; } + public int getMaxAge() { return this.maxAge; } + public int getSmokeDuration() { return this.smokeDuration; } + public double getSmokeLift() { return this.smokeLift; } + public int getSmokeNodeLife() { return this.smokeNodeLife; } + + @Override + public SpentCasing clone() { + try { + return (SpentCasing) super.clone(); + } catch(CloneNotSupportedException e) { + return new SpentCasing(this.type); + } + } +} diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index 9e36909fc..084826705 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -36,7 +36,7 @@ public class HbmPotion extends Potion { public static HbmPotion radx; public static HbmPotion lead; public static HbmPotion radaway; - public static HbmPotion telekinesis; + //public static HbmPotion telekinesis; public static HbmPotion phosphorus; public static HbmPotion stability; public static HbmPotion potionsickness; @@ -54,7 +54,7 @@ public class HbmPotion extends Potion { radx = registerPotion(PotionConfig.radxID, false, 0xBB4B00, "potion.hbm_radx", 5, 0); lead = registerPotion(PotionConfig.leadID, true, 0x767682, "potion.hbm_lead", 6, 0); radaway = registerPotion(PotionConfig.radawayID, false, 0xBB4B00, "potion.hbm_radaway", 7, 0); - telekinesis = registerPotion(PotionConfig.telekinesisID, true, 0x00F3FF, "potion.hbm_telekinesis", 0, 1); + //telekinesis = registerPotion(PotionConfig.telekinesisID, true, 0x00F3FF, "potion.hbm_telekinesis", 0, 1); phosphorus = registerPotion(PotionConfig.phosphorusID, true, 0xFFFF00, "potion.hbm_phosphorus", 1, 1); stability = registerPotion(PotionConfig.stabilityID, false, 0xD0D0D0, "potion.hbm_stability", 2, 1); potionsickness = registerPotion(PotionConfig.potionsicknessID, false, 0xff8080, "potion.hbm_potionsickness", 3, 1); @@ -148,7 +148,7 @@ public class HbmPotion extends Potion { entity.attackEntityFrom(ModDamageSource.lead, (level + 1)); } - if(this == telekinesis) { + /*if(this == telekinesis) { int remaining = entity.getActivePotionEffect(this).getDuration(); @@ -158,7 +158,7 @@ public class HbmPotion extends Potion { entity.motionY = -2; entity.fallDistance = 50; } - } + }*/ if(this == phosphorus && !entity.worldObj.isRemote) { entity.setFire(1); @@ -171,7 +171,7 @@ public class HbmPotion extends Potion { return par1 % 2 == 0; } - if(this == radiation || this == radaway || this == telekinesis || this == phosphorus) { + if(this == radiation || this == radaway || /*this == telekinesis ||*/ this == phosphorus) { return true; } diff --git a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java index 1f715b9b3..32743c1e1 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java +++ b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java @@ -6,6 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.entity.item.EntityMovingItem; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; @@ -29,7 +31,7 @@ public class RenderMovingItem extends Render { EntityMovingItem item = (EntityMovingItem) entity; ItemStack stack = item.getItemStack().copy(); - if(!(stack.getItem() instanceof ItemBlock)) { + if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F); GL11.glTranslated(0.0, -0.1875, 0.0); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderFireExt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderFireExt.java index d4101f5af..012294910 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderFireExt.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderFireExt.java @@ -8,8 +8,8 @@ import com.hbm.items.weapon.ItemGunBase; import com.hbm.main.ResourceManager; import net.minecraft.client.Minecraft; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class ItemRenderFireExt implements IItemRenderer { @@ -43,14 +43,14 @@ public class ItemRenderFireExt implements IItemRenderer { int magType = ItemGunBase.getMagType(item); int config = ((ItemGunBase)ModItems.gun_fireext).mainConfig.config.get(magType); - Item ammo = BulletConfigSyncingUtil.pullConfig(config).ammo; - - if(ammo == ModItems.ammo_fireext_foam) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fireext_foam_tex); - else if(ammo == ModItems.ammo_fireext_sand) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fireext_sand_tex); - else - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fireext_tex); + int ammo = BulletConfigSyncingUtil.pullConfig(config).ammo.meta; + ResourceLocation tex; + switch (ammo) { + case 0: tex = ResourceManager.fireext_foam_tex; break; + case 1: tex = ResourceManager.fireext_sand_tex; break; + default: tex = ResourceManager.fireext_tex; break; + } + Minecraft.getMinecraft().renderEngine.bindTexture(tex); switch(type) { diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java index 568debf84..492a2be44 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java @@ -4,14 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92; -import com.hbm.items.weapon.GunBoltAction; -import com.hbm.items.weapon.GunLeverAction; import com.hbm.items.weapon.GunLeverActionS; import com.hbm.lib.RefStrings; -import com.hbm.render.anim.HbmAnimations; import com.hbm.render.model.ModelB92; import com.hbm.render.model.ModelB93; -import com.hbm.render.model.ModelBoltAction; import com.hbm.render.model.ModelLeverAction; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -21,14 +17,12 @@ import net.minecraftforge.client.IItemRenderer; public class ItemRenderGunAnim implements IItemRenderer { - protected ModelLeverAction leveraction; - protected ModelBoltAction boltaction; + protected ModelLeverAction flippedGun; protected ModelB92 b92; protected ModelB93 b93; public ItemRenderGunAnim() { - leveraction = new ModelLeverAction(); - boltaction = new ModelBoltAction(); + flippedGun = new ModelLeverAction(); b92 = new ModelB92(); b93 = new ModelB93(); } @@ -52,24 +46,14 @@ public class ItemRenderGunAnim implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - float lever = 0; - switch(type) { case EQUIPPED_FIRST_PERSON: GL11.glPushMatrix(); GL11.glEnable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_sonata) + if(item.getItem() == ModItems.gun_lever_action_sonata) 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")); - if(item.getItem() == ModItems.gun_bolt_action_saturnite) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionSaturnite.png")); if(item.getItem() == ModItems.gun_b92) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB92SM.png")); if(item.getItem() == ModItems.gun_b93) @@ -87,29 +71,12 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) { - - double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); - GL11.glTranslated(recoil[0], recoil[1] * 4, recoil[2]); - - GL11.glTranslatef(-1.5F, 0, 0); - double[] rotation = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - GL11.glRotated(rotation[2], 0.0, 0.0, 1.0); - lever = (float) Math.toRadians(rotation[2] * 2); - GL11.glTranslatef(1.5F, 0, 0); - } - if((item.getItem() == ModItems.gun_lever_action_sonata) && GunLeverActionS.getRotationFromAnim(item) > 0) { GL11.glRotatef(GunLeverActionS.getRotationFromAnim(item) * -25, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(GunLeverActionS.getOffsetFromAnim(item) * 1.5F, 0.0F, 0.0F); GL11.glTranslatef(0.0F, GunLeverActionS.getOffsetFromAnim(item) * -1.5F, 0.0F); } - if((item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green || item.getItem() == ModItems.gun_bolt_action_saturnite) && 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_b92 && GunB92.getRotationFromAnim(item) > 0) { float off = GunB92.getRotationFromAnim(item) * 2; GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); @@ -122,21 +89,8 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); } - if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green || - item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark - || item.getItem() == ModItems.gun_bolt_action_saturnite) { - GL11.glTranslatef(0.0F, -0.4F, 0.0F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - } - - 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, lever); if(item.getItem() == ModItems.gun_lever_action_sonata) - leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); - if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green || item.getItem() == ModItems.gun_bolt_action_saturnite) - boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) @@ -177,12 +131,8 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - 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_lever_action_sonata) - leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); - if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green || item.getItem() == ModItems.gun_bolt_action_saturnite) - boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderObj.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderObj.java deleted file mode 100644 index b6c9b5b14..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderObj.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderObj implements IItemRenderer { - - public ItemRenderObj() { } - - @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.glRotatef(70F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-50F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-0.6F, -0.9F, 0.2F); - case EQUIPPED: - case ENTITY: - default: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_brimstone) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.brimstone_tex); - //GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(190F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - GL11.glTranslatef(-0.7F, -0.4F, -1.1F); - GL11.glDisable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_brimstone) - ResourceManager.brimstone.renderAll(); - GL11.glPopMatrix(); break; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java index 0df9e0b12..f99591f9d 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java @@ -3,6 +3,7 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import net.minecraft.client.Minecraft; @@ -34,6 +35,9 @@ public class ItemRenderWeaponNovac implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + //prevent rendering when using scope + if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; + GL11.glPushMatrix(); GL11.glEnable(GL11.GL_CULL_FACE); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCore.java b/src/main/java/com/hbm/render/tileentity/RenderCore.java index eedf4feba..c024d36e5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCore.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCore.java @@ -9,10 +9,9 @@ import com.hbm.main.ResourceManager; import com.hbm.render.util.RenderSparks; import com.hbm.tileentity.machine.TileEntityCore; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; @@ -36,12 +35,13 @@ public class RenderCore extends TileEntitySpecialRenderer { } else { GL11.glPushMatrix(); - GL11.glTranslated(x, y, z); - /*GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(RenderManager.instance.playerViewX - 90, 1.0F, 0.0F, 0.0F); - GL11.glTranslated(-0.5, -0.5, -0.5);*/ - - renderOrb(core, 0, 0, 0); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + + if(core.meltdownTick) + renderFlare(core); + else + renderOrb(core, 0, 0, 0); + GL11.glPopMatrix(); } } @@ -81,7 +81,7 @@ public class RenderCore extends TileEntitySpecialRenderer { public void renderOrb(TileEntityCore tile, double x, double y, double z) { GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + //GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); int color = tile.color; @@ -129,12 +129,84 @@ public class RenderCore extends TileEntitySpecialRenderer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + public void renderFlare(TileEntityCore core) { + + int color = core.color; + float r = ((color & 0xFF0000) >> 16) / 255F; + float g = ((color & 0x00FF00) >> 8) / 255F; + float b = ((color & 0x0000FF) >> 0) / 255F; + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + float f1 = (core.getWorldObj().getTotalWorldTime()) / 200.0F; + float f2 = 0.0F; + + Random random = new Random(432L); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.0F); + GL11.glDepthMask(false); + RenderHelper.disableStandardItemLighting(); + GL11.glPushMatrix(); + + double ix = (core.getWorldObj().getTotalWorldTime() * 0.2D) % (Math.PI * 2D); + double t = 0.8F; + float pulse = (float) ((1D / t) * Math.atan((t * Math.sin(ix)) / (1 - t * Math.cos(ix)))); + + pulse += 1D; + pulse /= 2D; + + float s = 0.875F; + s += pulse * 0.125F; + + GL11.glScalef(s, s, s); + + int count = 150; + for(int i = 0; i < count; i++) { + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(random.nextFloat() * 360.0F + f1 * 90.0F, 0.0F, 0.0F, 1.0F); + tessellator.startDrawing(6); + float f3 = random.nextFloat() * 2.0F + 5.0F + f2 * 10F; + float f4 = random.nextFloat() * 1.0F + 1.0F + f2 * 2.0F; + tessellator.setColorRGBA_F(r, g, b, 1F); + tessellator.addVertex(0.0D, 0.0D, 0.0D); + tessellator.setColorRGBA_F(r, g, b, 0F); + tessellator.addVertex(-0.866D * f4, f3, -0.5F * f4); + tessellator.addVertex(0.866D * f4, f3, -0.5F * f4); + tessellator.addVertex(0.0D, f3, 1.0F * f4); + tessellator.addVertex(-0.866D * f4, f3, -0.5F * f4); + GL11.glScalef(0.999F, 0.999F, 0.999F); + tessellator.draw(); + } + + GL11.glPopMatrix(); + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + RenderHelper.enableStandardItemLighting(); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + } + public void renderVoid(TileEntity tile, double x, double y, double z) { TileEntityCore core = (TileEntityCore)tile; diff --git a/src/main/java/com/hbm/render/tileentity/RenderCoreComponent.java b/src/main/java/com/hbm/render/tileentity/RenderCoreComponent.java index 999418b1c..a8c936868 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCoreComponent.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCoreComponent.java @@ -55,9 +55,9 @@ public class RenderCoreComponent extends TileEntitySpecialRenderer { int range = ((TileEntityCoreEmitter)tileEntity).beam; if(range > 0) { - BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0x404000, 0x404000, 0, 1, 0F, 2, 0.0625F); - BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range * 2, 0.125F, 4, 0.0625F); - BeamPronter.prontBeam(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range * 2, 0.125F, 4, 0.0625F); + BeamPronter.prontBeamwithDepth(Vec3.createVectorHelper(0, 0, range), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0x404000, 0x404000, 0, 1, 0F, 2, 0.0625F); + BeamPronter.prontBeamwithDepth(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000, range * 2, 0.125F, 4, 0.0625F); + BeamPronter.prontBeamwithDepth(Vec3.createVectorHelper(0, 0, range), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x401500, 0x401500, (int)tileEntity.getWorldObj().getTotalWorldTime() % 1000 + 1, range * 2, 0.125F, 4, 0.0625F); } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderExcavator.java b/src/main/java/com/hbm/render/tileentity/RenderExcavator.java index b09a50660..1623c8747 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderExcavator.java +++ b/src/main/java/com/hbm/render/tileentity/RenderExcavator.java @@ -4,16 +4,22 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachineExcavator; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class RenderExcavator extends TileEntitySpecialRenderer implements IItemRendererProvider { + + public static final ResourceLocation cobble = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cobblestone.png"); + public static final ResourceLocation gravel = new ResourceLocation(RefStrings.MODID, "textures/models/machines/gravel.png"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -36,9 +42,23 @@ public class RenderExcavator extends TileEntitySpecialRenderer implements IItemR GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.mining_drill_tex); ResourceManager.mining_drill.renderPart("Main"); - ResourceManager.mining_drill.renderPart("Crusher1"); - ResourceManager.mining_drill.renderPart("Crusher2"); + float crusher = drill.prevCrusherRotation + (drill.crusherRotation - drill.prevCrusherRotation) * interp; + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, 2.0F, 2.8125F); + GL11.glRotatef(-crusher, 1, 0, 0); + GL11.glTranslatef(0.0F, -2.0F, -2.8125F); + ResourceManager.mining_drill.renderPart("Crusher1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F, 2.0F, 2.1875F); + GL11.glRotatef(crusher, 1, 0, 0); + GL11.glTranslatef(0.0F, -2.0F, -2.1875F); + ResourceManager.mining_drill.renderPart("Crusher2"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); GL11.glRotatef(drill.prevDrillRotation + (drill.drillRotation - drill.prevDrillRotation) * interp, 0F, -1F, 0F); float ext = drill.prevDrillExtension + (drill.drillExtension - drill.prevDrillExtension) * interp; GL11.glTranslatef(0.0F, -ext, 0.0F); @@ -49,9 +69,77 @@ public class RenderExcavator extends TileEntitySpecialRenderer implements IItemR GL11.glTranslated(0.0D, 2.0D, 0.0D); ext -= 2; } + GL11.glPopMatrix(); GL11.glShadeModel(GL11.GL_FLAT); + if(drill.chuteTimer > 0) { + bindTexture(cobble); + double widthX = 0.125; + double widthZ = 0.125; + double speed = 250D; + double dropU = -System.currentTimeMillis() % speed / speed; + double dropL = dropU + 4; + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.setNormal(0F, 0F, 1F); + tess.addVertexWithUV(widthX, 3, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(-widthX, 3, 2.5 + widthZ, 1, dropU); + tess.addVertexWithUV(-widthX, 2, 2.5 + widthZ, 1, dropL); + tess.addVertexWithUV(widthX, 2, 2.5 + widthZ, 0, dropL); + + tess.setNormal(0F, 0F, -1F); + tess.addVertexWithUV(-widthX, 3, 2.5 - widthZ, 1, dropU); + tess.addVertexWithUV(widthX, 3, 2.5 - widthZ, 0, dropU); + tess.addVertexWithUV(widthX, 2, 2.5 - widthZ, 0, dropL); + tess.addVertexWithUV(-widthX, 2, 2.5 - widthZ, 1, dropL); + + tess.setNormal(-1F, 0F, 0F); + tess.addVertexWithUV(-widthX, 3, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(-widthX, 3, 2.5 - widthZ, 1, dropU); + tess.addVertexWithUV(-widthX, 2, 2.5 - widthZ, 1, dropL); + tess.addVertexWithUV(-widthX, 2, 2.5 + widthZ, 0, dropL); + + tess.setNormal(1F, 0F, 0F); + tess.addVertexWithUV(widthX, 3, 2.5 - widthZ, 1, dropU); + tess.addVertexWithUV(widthX, 3, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(widthX, 2, 2.5 + widthZ, 0, dropL); + tess.addVertexWithUV(widthX, 2, 2.5 - widthZ, 1, dropL); + tess.draw(); + + boolean smoosh = drill.enableCrusher; + widthX = smoosh ? 0.5 : 0.25; + widthZ = 0.0625; + double uU = smoosh ? 4 : 2; + double uL = 0.5; + bindTexture(smoosh ? gravel : cobble); + tess.startDrawingQuads(); + tess.setNormal(0F, 0F, 1F); + tess.addVertexWithUV(widthX, 2, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(-widthX, 2, 2.5 + widthZ, uU, dropU); + tess.addVertexWithUV(-widthX, 1, 2.5 + widthZ, uU, dropL); + tess.addVertexWithUV(widthX, 1, 2.5 + widthZ, 0, dropL); + + tess.setNormal(0F, 0F, -1F); + tess.addVertexWithUV(-widthX, 2, 2.5 - widthZ, uU, dropU); + tess.addVertexWithUV(widthX, 2, 2.5 - widthZ, 0, dropU); + tess.addVertexWithUV(widthX, 1, 2.5 - widthZ, 0, dropL); + tess.addVertexWithUV(-widthX, 1, 2.5 - widthZ, uU, dropL); + + tess.setNormal(-1F, 0F, 0F); + tess.addVertexWithUV(-widthX, 2, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(-widthX, 2, 2.5 - widthZ, uL, dropU); + tess.addVertexWithUV(-widthX, 1, 2.5 - widthZ, uL, dropL); + tess.addVertexWithUV(-widthX, 1, 2.5 + widthZ, 0, dropL); + + tess.setNormal(1F, 0F, 0F); + tess.addVertexWithUV(widthX, 2, 2.5 - widthZ, uL, dropU); + tess.addVertexWithUV(widthX, 2, 2.5 + widthZ, 0, dropU); + tess.addVertexWithUV(widthX, 1, 2.5 + widthZ, 0, dropL); + tess.addVertexWithUV(widthX, 1, 2.5 - widthZ, uL, dropL); + tess.draw(); + } + GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index 5abd38f7a..d25492de0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -38,9 +38,7 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(item.getX(), item.getY(), item.getZ()); - if(stack.getItem() == ModItems.ammo_nuke || stack.getItem() == ModItems.ammo_nuke_low || - stack.getItem() == ModItems.ammo_nuke_high || stack.getItem() == ModItems.ammo_nuke_safe || - stack.getItem() == ModItems.ammo_nuke_pumpkin) { + if(stack.getItem() == ModItems.ammo_nuke) { renderNuke(); } else if(stack.getItem() == ModItems.gun_fatman || stack.getItem() == ModItems.gun_proto || stack.getItem() == ModItems.gun_mirv) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderMixer.java b/src/main/java/com/hbm/render/tileentity/RenderMixer.java new file mode 100644 index 000000000..ca92315e0 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderMixer.java @@ -0,0 +1,101 @@ +package com.hbm.render.tileentity; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineMixer; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderMixer extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mixer_tex); + ResourceManager.mixer.renderPart("Main"); + + TileEntityMachineMixer mixer = (TileEntityMachineMixer) tile; + + GL11.glPushMatrix(); + GL11.glRotatef(mixer.prevRotation + (mixer.rotation - mixer.prevRotation) * interp, 0, -1, 0); + ResourceManager.mixer.renderPart("Mixer"); + GL11.glPopMatrix(); + + int totalFill = 0; + int totalMax = 0; + + for(FluidTank tank : mixer.tanks) { + if(tank.getTankType() != Fluids.NONE) { + totalFill += tank.getFill(); + totalMax += tank.getMaxFill(); + } + } + + if(totalFill > 0) { + GL11.glDepthMask(false); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + Color color = new Color(mixer.tanks[2].getTankType().getColor()); + GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 0.75F); + GL11.glTranslated(0, 1, 0); + + GL11.glScaled(1, (double) totalFill / (double) totalMax, 1); + GL11.glTranslated(0, -1, 0); + ResourceManager.mixer.renderPart("Fluid"); + + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glDepthMask(true); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_mixer); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glRotated(180, 0, 1, 0); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mixer_tex); + ResourceManager.mixer.renderPart("Main"); + ResourceManager.mixer.renderPart("Mixer"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java b/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java new file mode 100644 index 000000000..480de1536 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java @@ -0,0 +1,84 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.turret.TileEntityTurretSentry; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IItemRenderer; + +public class RenderTurretSentry extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + TileEntityTurretSentry turret = (TileEntityTurretSentry)te; + Vec3 pos = turret.getHorizontalOffset(); + + GL11.glPushMatrix(); + GL11.glTranslated(x + pos.xCoord, y, z + pos.zCoord); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.turret_sentry_tex); + ResourceManager.turret_sentry.renderPart("Base"); + + double yaw = -Math.toDegrees(turret.lastRotationYaw + (turret.rotationYaw - turret.lastRotationYaw) * interp); + double pitch = Math.toDegrees(turret.lastRotationPitch + (turret.rotationPitch - turret.lastRotationPitch) * interp); + + GL11.glRotated(yaw, 0, 1, 0); + ResourceManager.turret_sentry.renderPart("Pivot"); + + GL11.glTranslated(0, 1.25, 0); + GL11.glRotated(-pitch, 1, 0, 0); + GL11.glTranslated(0, -1.25, 0); + ResourceManager.turret_sentry.renderPart("Body"); + ResourceManager.turret_sentry.renderPart("Drum"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, (turret.lastBarrelLeftPos + (turret.barrelLeftPos - turret.lastBarrelLeftPos) * interp) * -0.5); + ResourceManager.turret_sentry.renderPart("BarrelL"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, (turret.lastBarrelRightPos + (turret.barrelRightPos - turret.lastBarrelRightPos) * interp) * -0.5); + ResourceManager.turret_sentry.renderPart("BarrelR"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.turret_sentry); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(7, 7, 7); + } + public void renderCommon() { + GL11.glRotated(90, 0, 1, 0); + bindTexture(ResourceManager.turret_sentry_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.turret_sentry.renderPart("Base"); + ResourceManager.turret_sentry.renderPart("Pivot"); + ResourceManager.turret_sentry.renderPart("Body"); + ResourceManager.turret_sentry.renderPart("Drum"); + ResourceManager.turret_sentry.renderPart("BarrelL"); + ResourceManager.turret_sentry.renderPart("BarrelR"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java index d4283cc03..50ef61541 100644 --- a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java +++ b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL12; import com.hbm.extprop.HbmPlayerProps; import com.hbm.interfaces.Spaghetti; +import com.hbm.interfaces.Untested; import com.hbm.lib.RefStrings; import net.minecraft.client.Minecraft; @@ -13,6 +14,7 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -34,59 +36,56 @@ public class RenderScreenOverlay { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDepthMask(false); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_ALPHA_TEST); - - float radiation = 0; - - radiation = lastResult - prevResult; - - if(System.currentTimeMillis() >= lastSurvey + 1000) { - lastSurvey = System.currentTimeMillis(); - prevResult = lastResult; - lastResult = in; - } - + // GL11.glDisable(GL11.GL_DEPTH_TEST); + // GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + + float radiation = 0; + + radiation = lastResult - prevResult; + + if(System.currentTimeMillis() >= lastSurvey + 1000) { + lastSurvey = System.currentTimeMillis(); + prevResult = lastResult; + lastResult = in; + } + int length = 74; int maxRad = 1000; - + int bar = getScaled(in, maxRad, 74); - - //if(radiation >= 1 && radiation <= 999) - // bar -= (1 + Minecraft.getMinecraft().theWorld.rand.nextInt(3)); - + int posX = 16; int posY = resolution.getScaledHeight() - 18 - 2; Minecraft.getMinecraft().renderEngine.bindTexture(misc); - gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18); - gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16); - - if(radiation >= 25) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18); - - } else if(radiation >= 10) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18); - - } else if(radiation >= 2.5) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18); - - } - + gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18); + gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16); + + if(radiation >= 25) { + gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18); + + } else if(radiation >= 10) { + gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18); + + } else if(radiation >= 2.5) { + gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18); + + } + if(radiation > 1000) { Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0xFF0000); } else if(radiation >= 1) { - Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000); + Minecraft.getMinecraft().fontRenderer.drawString(((int) Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000); } else if(radiation > 0) { Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0xFF0000); } - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDepthMask(true); - GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(true); + GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } @@ -313,6 +312,48 @@ public class RenderScreenOverlay { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } + @Untested + public static void renderScope(ScaledResolution res, ResourceLocation tex) { + + GL11.glEnable(GL11.GL_BLEND); + //GL11.glDisable(GL11.GL_DEPTH_TEST); + //GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + + Minecraft.getMinecraft().renderEngine.bindTexture(tex); + Tessellator tess = Tessellator.instance; + + double w = res.getScaledWidth(); + double h = res.getScaledHeight(); + + double smallest = Math.min(w, h); + double divisor = smallest / (9D / 16D); + smallest = 9D / 16D; + double largest = Math.max(w, h) / divisor; + + double hMin = h < w ? 0.5 - smallest / 2D : 0.5 - largest / 2D; + double hMax = h < w ? 0.5 + smallest / 2D : 0.5 + largest / 2D; + double wMin = w < h ? 0.5 - smallest / 2D : 0.5 - largest / 2D; + double wMax = w < h ? 0.5 + smallest / 2D : 0.5 + largest / 2D; + + double depth = -300D; + + tess.startDrawingQuads(); + + tess.addVertexWithUV(0, h, depth, wMin, hMax); + tess.addVertexWithUV(w, h, depth, wMax, hMax); + tess.addVertexWithUV(w, 0, depth, wMax, hMin); + tess.addVertexWithUV(0, 0, depth, wMin, hMin); + tess.draw(); + + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + } + public enum Crosshair { NONE(0, 0, 0), diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 6dd24be2b..2d5f8fffa 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; import com.hbm.blocks.bomb.BlockVolcano.TileEntityVolcanoCore; +import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; @@ -201,6 +202,7 @@ public class TileMappings { put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); + put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); putNetwork(); putBombs(); @@ -238,6 +240,7 @@ public class TileMappings { put(TileEntityTurretBrandon.class, "tileentity_turret_brandon"); put(TileEntityTurretArty.class, "tileentity_turret_arty"); put(TileEntityTurretHIMARS.class, "tileentity_turret_himars"); + put(TileEntityTurretSentry.class, "tileentity_turret_sentry"); } private static void putMachines() { @@ -273,6 +276,7 @@ public class TileMappings { put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor"); put(TileEntityMachineSolidifier.class, "tileentity_solidifier"); put(TileEntityElectrolyser.class, "tileentity_electrolyser"); + put(TileEntityMachineMixer.class, "tileentity_mixer"); put(TileEntitySteamEngine.class, "tileentity_steam_engine"); put(TileEntityMachineTurbine.class, "tileentity_turbine"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 75b5a3b19..d1839125c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -53,7 +54,7 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - if(MainRegistry.proxy.getImpactFire(worldObj) > 0 && light > 7) { // Make both steam and water evaporate during firestorms... + if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... tanks[1].setFill(tanks[1].getFill() - convert); } else { tanks[1].setFill(tanks[1].getFill() + convert); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 21dbf979e..5dc289f22 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -1,9 +1,14 @@ package com.hbm.tileentity.machine; +import java.util.Iterator; import java.util.List; +import java.util.Map.Entry; +import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityCloudFleijaRainbow; import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK3.ATEntry; +import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -20,6 +25,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; public class TileEntityCore extends TileEntityMachineBase { @@ -28,6 +34,7 @@ public class TileEntityCore extends TileEntityMachineBase { public int color; public FluidTank[] tanks; private boolean lastTickValid = false; + public boolean meltdownTick = false; public TileEntityCore() { super(3); @@ -49,6 +56,8 @@ public class TileEntityCore extends TileEntityMachineBase { int chunkX = xCoord >> 4; int chunkZ = zCoord >> 4; + meltdownTick = false; + lastTickValid = worldObj.getChunkProvider().chunkExists(chunkX, chunkZ) && worldObj.getChunkProvider().chunkExists(chunkX + 1, chunkZ + 1) && worldObj.getChunkProvider().chunkExists(chunkX + 1, chunkZ - 1) && @@ -63,17 +72,46 @@ public class TileEntityCore extends TileEntityMachineBase { int size = Math.max(Math.min(fill * mod / max, 1000), 50); - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, size); + boolean canExplode = true; + Iterator> it = EntityNukeExplosionMK3.at.entrySet().iterator(); + while(it.hasNext()) { + Entry next = it.next(); + if(next.getValue() < worldObj.getTotalWorldTime()) { + it.remove(); + continue; + } + ATEntry entry = next.getKey(); + if(entry.dim != worldObj.provider.dimensionId) continue; + Vec3 vec = Vec3.createVectorHelper(xCoord + 0.5 - entry.x, yCoord + 0.5 - entry.y, zCoord + 0.5 - entry.z); + if(vec.lengthVector() < 300) { + canExplode = false; + break; + } + } - if(!ex.isDead) { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.explode", 100000.0F, 1.0F); + if(canExplode) { + + EntityNukeExplosionMK3 ex = new EntityNukeExplosionMK3(worldObj); + ex.posX = xCoord + 0.5; + ex.posY = yCoord + 0.5; + ex.posZ = zCoord + 0.5; + ex.destructionRange = size; + ex.speed = BombConfig.blastSpeed; + ex.coefficient = 1.0F; + ex.waste = false; worldObj.spawnEntityInWorld(ex); + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.explode", 100000.0F, 1.0F); + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(worldObj, size); cloud.posX = xCoord; cloud.posY = yCoord; cloud.posZ = zCoord; worldObj.spawnEntityInWorld(cloud); + + } else { + meltdownTick = true; + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, 100); } } @@ -96,6 +134,7 @@ public class TileEntityCore extends TileEntityMachineBase { data.setInteger("field", field); data.setInteger("heat", heat); data.setInteger("color", color); + data.setBoolean("melt", meltdownTick); networkPack(data, 250); heat = 0; @@ -121,13 +160,15 @@ public class TileEntityCore extends TileEntityMachineBase { field = data.getInteger("field"); heat = data.getInteger("heat"); color = data.getInteger("color"); + meltdownTick = data.getBoolean("melt"); } private void radiation() { - double scale = 2; + double scale = this.meltdownTick ? 5 : 3; + double range = this.meltdownTick ? 50 : 10; - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 10 + 0.5, yCoord - 10 + 0.5 + 6, zCoord - 10 + 0.5, xCoord + 10 + 0.5, yCoord + 10 + 0.5 + 6, zCoord + 10 + 0.5)); + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(range, range, range)); for(Entity e : list) { if(!(e instanceof EntityPlayer && ArmorUtil.checkForHazmat((EntityPlayer)e))) @@ -137,7 +178,7 @@ public class TileEntityCore extends TileEntityMachineBase { } } - List list2 = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - scale + 0.5, yCoord - scale + 0.5 + 6, zCoord - scale + 0.5, xCoord + scale + 0.5, yCoord + scale + 0.5 + 6, zCoord + scale + 0.5)); + List list2 =worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(scale, scale, scale)); for(Entity e : list2) { if(!(e instanceof EntityPlayer && ArmorUtil.checkForHaz2((EntityPlayer)e))) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index fcfafd053..f93c6f8c9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -21,6 +21,7 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -69,8 +70,8 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid int lastHeat = this.heat; int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - if(light > 7 && MainRegistry.proxy.getImpactFire(worldObj) > 0) { - this.heat += ((maxHeat - heat) * 0.5D); //constantly heat up 50% of the remaining heat buffer for rampant but diminishing heating + if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { + this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating } data.setInteger("heat", lastHeat); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 2f56a8feb..606d992f1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -90,7 +90,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement return false; } - for(int i = 0; i < 4; i++) { + for(int i = 0; i < Math.min(4, out.length); i++) { //either the slot is null, the output is null or the output can be added to the existing slot if(slots[i + 2] == null) @@ -111,7 +111,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement private void processItem() { ItemStack[] out = CentrifugeRecipes.getOutput(slots[0]); - for(int i = 0; i < 4; i++) { + for(int i = 0; i < Math.min(4, out.length); i++) { if(out[i] == null) continue; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 62e19ca68..d30396f96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -6,6 +6,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.lib.Library; @@ -28,7 +29,6 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public long power; public static final long maxPower = 1000000; public static final int demand = 1000; - public static final int acidRequired = 500; public short progress; public short duration = 600; @@ -38,8 +38,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public FluidTank tank; public TileEntityMachineCrystallizer() { - super(7); - tank = new FluidTank(Fluids.ACID, 8000, 0); + super(8); + tank = new FluidTank(Fluids.ACID, 8000); } @Override @@ -55,6 +55,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme this.updateConnections(); power = Library.chargeTEFromItems(slots, 1, power, maxPower); + tank.setType(7, slots); tank.loadTank(3, 4, slots); for(int i = 0; i < getCycleCount(); i++) { @@ -66,7 +67,6 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(progress > getDuration()) { progress = 0; - tank.setFill(tank.getFill() - getRequiredAcid()); processItem(); this.markDirty(); @@ -77,12 +77,11 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } } - tank.updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); - NBTTagCompound data = new NBTTagCompound(); data.setShort("progress", progress); data.setShort("duration", getDuration()); data.setLong("power", power); + tank.writeToNBT(data, "t"); this.networkPack(data, 25); } else { @@ -135,19 +134,24 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme this.power = data.getLong("power"); this.progress = data.getShort("progress"); this.duration = data.getShort("duration"); + this.tank.readFromNBT(data, "t"); } private void processItem() { - ItemStack result = CrystallizerRecipes.getOutput(slots[0]); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); if(result == null) //never happens but you can't be sure enough return; + ItemStack stack = result.output.copy(); + if(slots[2] == null) - slots[2] = result; - else if(slots[2].stackSize + result.stackSize <= slots[2].getMaxStackSize()) - slots[2].stackSize += result.stackSize; + slots[2] = stack; + else if(slots[2].stackSize + stack.stackSize <= slots[2].getMaxStackSize()) + slots[2].stackSize += stack.stackSize; + + tank.setFill(tank.getFill() - result.acid.fill); float freeChance = this.getFreeChance(); @@ -164,41 +168,41 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(power < getPowerRequired()) return false; - if(tank.getFill() < getRequiredAcid()) - return false; - - ItemStack result = CrystallizerRecipes.getOutput(slots[0]); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); //Or output? if(result == null) return false; + if(tank.getTankType() != result.acid.type) return false; + if(tank.getFill() < result.acid.fill) return false; + + ItemStack stack = result.output.copy(); + //Does the output not match? - if(slots[2] != null && (slots[2].getItem() != result.getItem() || slots[2].getItemDamage() != result.getItemDamage())) + if(slots[2] != null && (slots[2].getItem() != stack.getItem() || slots[2].getItemDamage() != stack.getItemDamage())) return false; //Or is the output slot already full? - if(slots[2] != null && slots[2].stackSize + result.stackSize > slots[2].getMaxStackSize()) + if(slots[2] != null && slots[2].stackSize + stack.stackSize > slots[2].getMaxStackSize()) return false; return true; } - public int getRequiredAcid() { - - int extra = 0; + public int getRequiredAcid(int base) { for(int i = 5; i <= 6; i++) { if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - extra += 1000; + base *= 3; if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - extra += 2000; + base *= 4; if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - extra += 3000; + base *= 5; } - return acidRequired + Math.min(extra, 3000); + return base; } public float getFreeChance() { @@ -221,6 +225,9 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public short getDuration() { float durationMod = 1; + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); + + int base = result != null ? result.duration : 600; for(int i = 5; i <= 6; i++) { @@ -232,7 +239,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme durationMod -= 0.75F; } - return (short) (600 * Math.max(durationMod, 0.25F)); + return (short) Math.ceil((base * Math.max(durationMod, 0.25F))); } public int getPowerRequired() { @@ -277,21 +284,14 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme return (progress * i) / duration; } - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } + @Override public void setFillForSync(int fill, int index) { } + @Override public void setTypeForSync(FluidType type, int index) { } @Override public void setFluidFill(int fill, FluidType type) { tank.setFill(fill); } - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public int getFluidFill(FluidType type) { return tank.getFill(); @@ -336,8 +336,10 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0 && CrystallizerRecipes.getOutput(itemStack) != null) - return true; + CrystallizerRecipe recipe = CrystallizerRecipes.getOutput(itemStack); + if(i == 0 && recipe != null) { + return recipe.acid.type == tank.getTankType(); + } if(i == 1 && itemStack.getItem() instanceof IBatteryItem) return true; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 463373f66..5ea2a2cbd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -1,29 +1,40 @@ package com.hbm.tileentity.machine; +import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Random; +import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.network.CraneInserter; import com.hbm.entity.item.EntityMovingItem; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineExcavator; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineExcavator; +import com.hbm.inventory.recipes.ShredderRecipes; +import com.hbm.items.ModItems; import com.hbm.items.machine.ItemDrillbit; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Compat; import com.hbm.util.EnumUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.conveyor.IConveyorBelt; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; +import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -57,11 +68,19 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements protected int ticksWorked = 0; protected int targetDepth = 0; //0 is the first block below null position + protected boolean bedrockDrilling = false; public float drillRotation = 0F; public float prevDrillRotation = 0F; public float drillExtension = 0F; public float prevDrillExtension = 0F; + public float crusherRotation = 0F; + public float prevCrusherRotation = 0F; + public int chuteTimer = 0; + + public double speed = 1.0D; + public final long baseConsumption = 10_000L; + public long consumption = baseConsumption; public FluidTank tank; @@ -78,17 +97,50 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements @Override public void updateEntity() { + //needs to happen on client too for GUI rendering + UpgradeManager.eval(slots, 2, 3); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + + consumption = baseConsumption * (1 + speedLevel); + consumption /= (1 + powerLevel); + if(!worldObj.isRemote) { + this.tank.setType(1, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + tryEjectBuffer(); + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + if(chuteTimer > 0) chuteTimer--; + this.power = Library.chargeTEFromItems(slots, 0, this.getPower(), this.getMaxPower()); this.operational = false; + int radiusLevel = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); - if(this.enableDrill && this.getInstalledDrill() != null && this.power >= this.getPowerConsumption()) { + EnumDrillType type = this.getInstalledDrill(); + if(this.enableDrill && type != null && this.power >= this.getPowerConsumption()) { operational = true; + this.power -= this.getPowerConsumption(); - if(targetDepth < this.yCoord - 4 && tryDrill(5)) { + this.speed = type.speed; + this.speed *= (1 + speedLevel / 2D); + + int maxDepth = this.yCoord - 4; + + if((bedrockDrilling || targetDepth <= maxDepth) && tryDrill(1 + radiusLevel * 2)) { targetDepth++; + + if(targetDepth > maxDepth) { + this.enableDrill = false; + } } } else { this.targetDepth = 0; @@ -102,7 +154,9 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements data.setBoolean("s", enableSilkTouch); data.setBoolean("o", operational); data.setInteger("t", targetDepth); + data.setInteger("g", chuteTimer); data.setLong("p", power); + tank.writeToNBT(data, "tank"); this.networkPack(data, 150); } else { @@ -120,19 +174,42 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.drillExtension -= sig * speed; } } - + this.prevDrillRotation = this.drillRotation; + this.prevCrusherRotation = this.crusherRotation; - if(this.operational) + if(this.operational) { this.drillRotation += 15F; + + if(this.enableCrusher) { + this.crusherRotation += 15F; + } + } if(this.drillRotation >= 360F) { this.drillRotation -= 360F; this.prevDrillRotation -= 360F; } + + if(this.crusherRotation >= 360F) { + this.crusherRotation -= 360F; + this.prevCrusherRotation -= 360F; + } } } + protected DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 4 + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 4 - rot.offsetZ, dir), + new DirPos(xCoord + rot.offsetX * 4, yCoord + 1, zCoord + rot.offsetZ * 4, rot), + new DirPos(xCoord - rot.offsetX * 4, yCoord + 1, zCoord - rot.offsetZ * 4, rot.getOpposite()) + }; + } + public void networkUnpack(NBTTagCompound nbt) { this.enableDrill = nbt.getBoolean("d"); this.enableCrusher = nbt.getBoolean("c"); @@ -141,7 +218,9 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.enableSilkTouch = nbt.getBoolean("s"); this.operational = nbt.getBoolean("o"); this.targetDepth = nbt.getInteger("t"); + this.chuteTimer = nbt.getInteger("g"); this.power = nbt.getLong("p"); + this.tank.readFromNBT(nbt, "tank"); } protected int getY() { @@ -151,8 +230,8 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements /** Works outwards and tries to break a ring, returns true if all rings are broken (or ignorable) and the drill should extend. */ protected boolean tryDrill(int radius) { int y = getY(); - - if(targetDepth == 0) { + + if(targetDepth == 0 || y == 0) { radius = 1; } @@ -160,6 +239,8 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements boolean ignoreAll = true; float combinedHardness = 0F; + BlockPos bedrockOre = null; + bedrockDrilling = false; for(int x = xCoord - ring; x <= xCoord + ring; x++) { for(int z = zCoord - ring; z <= zCoord + ring; z++) { @@ -169,6 +250,15 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements Block b = worldObj.getBlock(x, y, z); + if(b == ModBlocks.ore_bedrock) { + combinedHardness = 60 * 20; + bedrockOre = new BlockPos(x, y, z); + bedrockDrilling = true; + enableCrusher = false; + ignoreAll = false; + break; + } + if(shouldIgnoreBlock(b, x, y ,z)) continue; ignoreAll = false; @@ -181,16 +271,24 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements if(!ignoreAll) { ticksWorked++; - int ticksToWork = (int) Math.ceil(combinedHardness); + int ticksToWork = (int) Math.ceil(combinedHardness / this.speed); if(ticksWorked >= ticksToWork) { - breakBlocks(ring); - buildWall(ring + 1, ring == radius && this.enableWalling); - tryCollect(radius); + + if(bedrockOre == null) { + breakBlocks(ring); + buildWall(ring + 1, ring == radius && this.enableWalling); + if(ring == radius) mineOuterOres(ring + 1); + tryCollect(radius + 1); + } else { + collectBedrock(bedrockOre); + } ticksWorked = 0; } return false; + } else { + tryCollect(radius + 1); } } @@ -199,6 +297,76 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements return true; } + protected void collectBedrock(BlockPos pos) { + TileEntity oreTile = Compat.getTileStandard(worldObj, pos.getX(), pos.getY(), pos.getZ()); + + if(oreTile instanceof TileEntityBedrockOre) { + TileEntityBedrockOre ore = (TileEntityBedrockOre) oreTile; + + if(ore.resource == null) return; + if(ore.tier > this.getInstalledDrill().tier) return; + if(ore.acidRequirement != null) { + + if(ore.acidRequirement.type != tank.getTankType() || ore.acidRequirement.fill > tank.getFill()) return; + + tank.setFill(tank.getFill() - ore.acidRequirement.fill); + } + + ItemStack stack = ore.resource.copy(); + List stacks = new ArrayList(); + stacks.add(stack); + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + + int x = xCoord + dir.offsetX * 4; + int y = yCoord - 3; + int z = zCoord + dir.offsetZ * 4; + + /* try to insert into a valid container */ + TileEntity tile = worldObj.getTileEntity(x, y, z); + if(tile instanceof IInventory) { + supplyContainer((IInventory) tile, stacks, dir.getOpposite()); + } + + if(stack.stackSize <= 0) return; + + /* try to place on conveyor belt */ + Block b = worldObj.getBlock(x, y, z); + if(b instanceof IConveyorBelt) { + supplyConveyor((IConveyorBelt) b, stacks, x, y, z); + } + + if(stack.stackSize <= 0) return; + + for(int i = 5; i < 14; i++) { + + if(slots[i] != null && slots[i].stackSize < slots[i].getMaxStackSize() && stack.isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(stack, slots[i])) { + int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); + slots[i].stackSize += toAdd; + stack.stackSize -= toAdd; + + chuteTimer = 40; + + if(stack.stackSize <= 0) { + return; + } + } + } + + /* add leftovers to empty slots */ + for(int i = 5; i < 14; i++) { + + if(slots[i] == null) { + + chuteTimer = 40; + + slots[i] = stack.copy(); + return; + } + } + } + } + /** breaks and drops all blocks in the specified ring */ protected void breakBlocks(int ring) { int y = getY(); @@ -219,38 +387,47 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } public void tryMineAtLocation(int x ,int y, int z) { + + Block b = worldObj.getBlock(x, y, z); if(this.enableVeinMiner && this.getInstalledDrill().vein) { - /* doing this isn't terribly accurate but just for figuring out if there's OD it works */ - Item blockItem = Item.getItemFromBlock(worldObj.getBlock(x, y, z)); - - if(blockItem != null) { - List names = ItemStackUtil.getOreDictNames(new ItemStack(blockItem)); + if(isOre(x, y, z, b)) { + minX = x; + minY = y; + minZ = z; + maxX = x; + maxY = y; + maxZ = z; + breakRecursively(x, y, z, 10); + recursionBrake.clear(); - for(String name : names) { - if(name.startsWith("ore")) { - minX = x; - minY = y; - minZ = z; - maxX = x; - maxY = y; - maxZ = z; - breakRecursively(x, y, z, 10); - recursionBrake.clear(); - - /* move all excavated items to the last drillable position which is also within collection range */ - List items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX + 1, maxY + 1, maxZ + 1)); - for(EntityItem item : items) item.setPosition(x + 0.5, y + 0.5, z + 0.5); - - return; - } + /* move all excavated items to the last drillable position which is also within collection range */ + List items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX + 1, maxY + 1, maxZ + 1)); + for(EntityItem item : items) item.setPosition(x + 0.5, y + 0.5, z + 0.5); + + return; + } + } + breakSingleBlock(b, x, y, z); + } + + protected boolean isOre(int x ,int y, int z, Block b) { + + /* doing this isn't terribly accurate but just for figuring out if there's OD it works */ + Item blockItem = Item.getItemFromBlock(b); + + if(blockItem != null) { + List names = ItemStackUtil.getOreDictNames(new ItemStack(blockItem)); + + for(String name : names) { + if(name.startsWith("ore")) { + return true; } } } - - Block b = worldObj.getBlock(x, y, z); - breakSingleBlock(b, x, y, z); + + return false; } private HashSet recursionBrake = new HashSet(); @@ -289,7 +466,47 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } protected void breakSingleBlock(Block b, int x ,int y, int z) { - b.dropBlockAsItem(worldObj, x, y, z, worldObj.getBlockMetadata(x, y, z), 0 /* fortune */); + + List items = b.getDrops(worldObj, x, y, z, worldObj.getBlockMetadata(x, y, z), this.getFortuneLevel()); + + if(this.canSilkTouch()) { + + try { + Method createStackedBlock = ReflectionHelper.findMethod(Block.class, b, new String[] {"createStackedBlock", "func_149644_j"}, int.class); + ItemStack result = (ItemStack) createStackedBlock.invoke(b, worldObj.getBlockMetadata(x, y, z)); + + if(result != null) { + items.clear(); + items.add(result.copy()); + } + } catch(Exception ex) { } + } + + if(this.enableCrusher) { + + List list = new ArrayList(); + + for(ItemStack stack : items) { + ItemStack crushed = ShredderRecipes.getShredderResult(stack).copy(); + + if(crushed.getItem() == ModItems.scrap || crushed.getItem() == ModItems.dust) { + list.add(stack); + } else { + crushed.stackSize *= stack.stackSize; + list.add(crushed); + } + } + + items = list; + } + + if(b == ModBlocks.barricade) + items.clear(); + + for(ItemStack item : items) { + worldObj.spawnEntityInWorld(new EntityItem(worldObj, x + 0.5, y + 0.5, z + 0.5, item)); + } + worldObj.func_147480_a(x, y, z, false); } @@ -317,6 +534,64 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } } } + protected void mineOuterOres(int ring) { + int y = getY(); + + for(int x = xCoord - ring; x <= xCoord + ring; x++) { + for(int z = zCoord - ring; z <= zCoord + ring; z++) { + + if(ring == 1 || (x == xCoord - ring || x == xCoord + ring || z == zCoord - ring || z == zCoord + ring)) { + + Block b = worldObj.getBlock(x, y, z); + + if(!this.shouldIgnoreBlock(b, x, y, z) && this.isOre(x, y, z, b)) { + tryMineAtLocation(x, y, z); + } + } + } + } + } + + protected void tryEjectBuffer() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + + int x = xCoord + dir.offsetX * 4; + int y = yCoord - 3; + int z = zCoord + dir.offsetZ * 4; + + List items = new ArrayList(); + + for(int i = 5; i < 14; i++) { + ItemStack stack = slots[i]; + + if(stack != null) { + items.add(stack.copy()); + } + } + + TileEntity tile = worldObj.getTileEntity(x, y, z); + if(tile instanceof IInventory) { + supplyContainer((IInventory) tile, items, dir.getOpposite()); + } + + Block b = worldObj.getBlock(x, y, z); + if(b instanceof IConveyorBelt) { + supplyConveyor((IConveyorBelt) b, items, x, y, z); + } + + items.removeIf(i -> i == null || i.stackSize <= 0); + + for(int i = 5; i < 14; i++) { + int index = i - 5; + + if(items.size() > index) { + slots[i] = items.get(index).copy(); + } else { + slots[i] = null; + } + } + } /** pulls up an AABB around the drillbit and tries to either conveyor output or buffer collected items */ protected void tryCollect(int radius) { @@ -330,19 +605,63 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements int y = yCoord - 3; int z = zCoord + dir.offsetZ * 4; + List stacks = new ArrayList(); + items.forEach(i -> stacks.add(i.getEntityItem())); + + /* try to insert into a valid container */ TileEntity tile = worldObj.getTileEntity(x, y, z); if(tile instanceof IInventory) { - supplyContainer((IInventory) tile, items, dir.getOpposite()); + supplyContainer((IInventory) tile, stacks, dir.getOpposite()); } + /* try to place on conveyor belt */ Block b = worldObj.getBlock(x, y, z); if(b instanceof IConveyorBelt) { - supplyConveyor((IConveyorBelt) b, items, x, y, z); + supplyConveyor((IConveyorBelt) b, stacks, x, y, z); + } + + items.removeIf(i -> i.isDead || i.getEntityItem().stackSize <= 0); + + /* collect remaining items in internal buffer */ + outer: + for(EntityItem item : items) { + + ItemStack stack = item.getEntityItem(); + + /* adding items to existing stacks */ + for(int i = 5; i < 14; i++) { + + if(slots[i] != null && slots[i].stackSize < slots[i].getMaxStackSize() && stack.isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(stack, slots[i])) { + int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); + slots[i].stackSize += toAdd; + stack.stackSize -= toAdd; + + chuteTimer = 40; + + if(stack.stackSize <= 0) { + item.setDead(); + continue outer; + } + } + } + + /* add leftovers to empty slots */ + for(int i = 5; i < 14; i++) { + + if(slots[i] == null) { + + chuteTimer = 40; + + slots[i] = stack.copy(); + item.setDead(); + break; + } + } } } /** places all items into a connected container, if possible */ - protected void supplyContainer(IInventory inv, List items, ForgeDirection dir) { + protected void supplyContainer(IInventory inv, List items, ForgeDirection dir) { int side = dir.ordinal(); int[] access = null; @@ -352,44 +671,50 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements access = CraneInserter.masquerade(sided, dir.ordinal()); } - for(EntityItem item : items) { + for(ItemStack item : items) { - if(item.isDead) continue; + if(item.stackSize <= 0) continue; - ItemStack stack = CraneInserter.addToInventory(inv, access, item.getEntityItem(), side); - - if(stack == null || stack.stackSize == 0) { - item.setDead(); - } + CraneInserter.addToInventory(inv, access, item, side); + chuteTimer = 40; } } /** moves all items onto a connected conveyor belt */ - protected void supplyConveyor(IConveyorBelt belt, List items, int x, int y, int z) { + protected void supplyConveyor(IConveyorBelt belt, List items, int x, int y, int z) { Random rand = worldObj.rand; - for(EntityItem item : items) { + for(ItemStack item : items) { - if(item.isDead) continue; + if(item.stackSize <= 0) continue; Vec3 base = Vec3.createVectorHelper(x + rand.nextDouble(), y + 0.5, z + rand.nextDouble()); Vec3 vec = belt.getClosestSnappingPosition(worldObj, x, y, z, base); EntityMovingItem moving = new EntityMovingItem(worldObj); moving.setPosition(base.xCoord, vec.yCoord, base.zCoord); - moving.setItemStack(item.getEntityItem().copy()); + moving.setItemStack(item.copy()); worldObj.spawnEntityInWorld(moving); - item.setDead(); + item.stackSize = 0; + + chuteTimer = 40; } } - public int getPowerConsumption() { - return 10_000; + public long getPowerConsumption() { + return consumption; + } + + public int getFortuneLevel() { + EnumDrillType type = getInstalledDrill(); + + if(type != null) return type.fortune; + return 0; } public boolean shouldIgnoreBlock(Block block, int x, int y, int z) { - return block.isAir(worldObj, x, y, z) || block.getBlockHardness(worldObj, x, y, z) < 0 || block.getMaterial().isLiquid() || block == Blocks.bedrock; + return block.isAir(worldObj, x, y, z) || block.getMaterial() == ModBlocks.materialGas || block.getBlockHardness(worldObj, x, y, z) < 0 || block.getMaterial().isLiquid() || block == Blocks.bedrock; } @Override @@ -420,6 +745,34 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements EnumDrillType type = getInstalledDrill(); return this.enableSilkTouch && type != null && type.silk; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.enableDrill = nbt.getBoolean("d"); + this.enableCrusher = nbt.getBoolean("c"); + this.enableWalling = nbt.getBoolean("w"); + this.enableVeinMiner = nbt.getBoolean("v"); + this.enableSilkTouch = nbt.getBoolean("s"); + this.targetDepth = nbt.getInteger("t"); + this.power = nbt.getLong("p"); + this.tank.readFromNBT(nbt, "tank"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setBoolean("d", enableDrill); + nbt.setBoolean("c", enableCrusher); + nbt.setBoolean("w", enableWalling); + nbt.setBoolean("v", enableVeinMiner); + nbt.setBoolean("s", enableSilkTouch); + nbt.setInteger("t", targetDepth); + nbt.setLong("p", power); + tank.writeToNBT(nbt, "tank"); + } @Override public boolean hasPermission(EntityPlayer player) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java index 73769b3b3..bc36ef189 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; import com.hbm.items.tool.ItemKeyPin; import net.minecraft.entity.player.EntityPlayer; @@ -186,7 +187,7 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven //DEBUG, remove later if(slots[2] != null && slots[2].getItem() == ModItems.ammo_4gauge) { - slots[2] = new ItemStack(ModItems.ammo_4gauge_titan, slots[2].stackSize); + slots[2] = ModItems.ammo_4gauge.stackFromEnum(slots[2].stackSize, Ammo4Gauge.QUACK); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 806a425e6..ed3e44148 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -14,6 +14,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CentrifugeRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; @@ -253,9 +254,9 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(stack != null && stack.getItem() != null) { if(hasCrystallizer()) { - ItemStack result = CrystallizerRecipes.getOutput(stack); - if(result != null && result.getItem() != ModItems.scrap) { - worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.copy())); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack); + if(result != null && result.output.getItem() != ModItems.scrap) { + worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.output.copy())); normal = false; } @@ -347,6 +348,8 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen for(EntityItem item : items) { + if(item.isDead) continue; + if(nullifier && bad.contains(item.getEntityItem().getItem())) { item.setDead(); continue; @@ -419,7 +422,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } private boolean canBreak(Block block, int x, int y, int z) { - return block.isAir(worldObj, x, y, z) && block.getBlockHardness(worldObj, x, y, z) >= 0 && !block.getMaterial().isLiquid() && block != Blocks.bedrock; + return !block.isAir(worldObj, x, y, z) && block.getBlockHardness(worldObj, x, y, z) >= 0 && !block.getMaterial().isLiquid() && block != Blocks.bedrock; } public int getRange() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java new file mode 100644 index 000000000..87d2fcc4c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -0,0 +1,299 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerMixer; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMixer; +import com.hbm.inventory.recipes.MixerRecipes; +import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver { + + public long power; + public static final long maxPower = 10_000; + public int progress; + public int processTime; + + public float rotation; + public float prevRotation; + public boolean wasOn = false; + + private int consumption = 50; + + public FluidTank[] tanks; + + public TileEntityMachineMixer() { + super(5); + this.tanks = new FluidTank[3]; + this.tanks[0] = new FluidTank(Fluids.NONE, 16_000); + this.tanks[1] = new FluidTank(Fluids.NONE, 16_000); + this.tanks[2] = new FluidTank(Fluids.NONE, 16_000); + } + + @Override + public String getName() { + return "container.machineMixer"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + tanks[2].setType(2, slots); + + UpgradeManager.eval(slots, 3, 4); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + + this.consumption = 50; + + this.consumption += speedLevel * 150; + this.consumption -= this.consumption * powerLevel * 0.25; + this.consumption *= (overLevel * 3 + 1); + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[0].getTankType() != Fluids.NONE) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getTankType() != Fluids.NONE) this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + this.wasOn = this.canProcess(); + + if(this.wasOn) { + this.progress++; + this.power -= this.getConsumption(); + + this.processTime -= this.processTime * speedLevel / 4; + this.processTime /= (overLevel + 1); + + if(processTime <= 0) this.processTime = 1; + + if(this.progress >= this.processTime) { + this.process(); + this.progress = 0; + } + + } else { + this.progress = 0; + } + + for(DirPos pos : getConPos()) { + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("processTime", processTime); + data.setInteger("progress", progress); + data.setBoolean("wasOn", wasOn); + for(int i = 0; i < 3; i++) { + tanks[i].writeToNBT(data, i + ""); + } + this.networkPack(data, 50); + + } else { + + this.prevRotation = this.rotation; + + if(this.wasOn) { + this.rotation += 20F; + } + + if(this.rotation >= 360) { + this.rotation -= 360; + this.prevRotation -= 360; + } + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.processTime = nbt.getInteger("processTime"); + this.progress = nbt.getInteger("progress"); + this.wasOn = nbt.getBoolean("wasOn"); + for(int i = 0; i < 3; i++) { + tanks[i].readFromNBT(nbt, i + ""); + } + } + + public boolean canProcess() { + + MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + + if(recipe == null) return false; + + if(recipe.input1 != null) { + + if(recipe.input1.type != tanks[0].getTankType()) { + tanks[0].setTankType(recipe.input1.type); + } + + if(tanks[0].getFill() < recipe.input1.fill) return false; + } + + if(recipe.input2 != null) { + + if(recipe.input2.type != tanks[1].getTankType()) { + tanks[1].setTankType(recipe.input2.type); + } + + if(tanks[1].getFill() < recipe.input2.fill) return false; + } + + /* simplest check would usually go first, but fluid checks also do the setup and we want that to happen even without power */ + if(this.power < getConsumption()) return false; + + if(recipe.output + tanks[2].getFill() > tanks[2].getMaxFill()) return false; + + if(recipe.solidInput != null) { + + if(slots[1] == null) return false; + + if(!recipe.solidInput.matchesRecipe(slots[1], true) || recipe.solidInput.stacksize > slots[1].stackSize) return false; + } + + this.processTime = recipe.processTime; + return true; + } + + protected void process() { + + MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + + if(recipe.input1 != null) tanks[0].setFill(tanks[0].getFill() - recipe.input1.fill); + if(recipe.input2 != null) tanks[1].setFill(tanks[1].getFill() - recipe.input2.fill); + if(recipe.solidInput != null) this.decrStackSize(1, recipe.solidInput.stacksize); + tanks[2].setFill(tanks[2].getFill() + recipe.output); + } + + public int getConsumption() { + return consumption; + } + + protected DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), + new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.POS_Z), + }; + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 1 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + + MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + + if(recipe == null || recipe.solidInput == null) return false; + + return recipe.solidInput.matchesRecipe(itemStack, true); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + for(int i = 0; i < 3; i++) this.tanks[i].readFromNBT(nbt, i + ""); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setInteger("progress", progress); + nbt.setInteger("processTime", processTime); + for(int i = 0; i < 3; i++) this.tanks[i].writeToNBT(nbt, i + ""); + } + + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[2]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[1]}; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMixer(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMixer(player.inventory, this); + } + + AxisAlignedBB aabb; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(aabb != null) + return aabb; + + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 3, zCoord + 1); + return aabb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index a86bd60df..2674b87bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -18,10 +18,12 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.Compat; import com.hbm.util.I18nUtil; import api.hbm.fluid.IFluidConductor; @@ -167,7 +169,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements heatCache[index] = null; if(heatCache[index] == null) { - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); + TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase base = (TileEntityRBMKBase) te; @@ -226,8 +228,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } protected void coolPassively() { - - if(MainRegistry.proxy.getImpactFire(worldObj) > 1e-5) { + + if(TomSaveData.forWorld(worldObj).fire > 1e-5) { double light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord) / 15D; if(heat < 20 + (480 * light)) { this.heat += this.passiveCooling() * 2; @@ -535,7 +537,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements private void getFF(int x, int y, int z) { - TileEntity te = worldObj.getTileEntity(x, y, z); + TileEntity te = Compat.getTileStandard(worldObj, x, y, z); if(te instanceof TileEntityRBMKBase) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 0dd5ff3b6..59772c142 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -97,6 +97,15 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im @Override public void onMelt(int reduce) { + if(this.isModerated()) { + + int count = 2 + worldObj.rand.nextInt(2); + + for(int i = 0; i < count; i++) { + spawnDebris(DebrisType.GRAPHITE); + } + } + int count = 2 + worldObj.rand.nextInt(2); for(int i = 0; i < count; i++) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index aa0935e94..ddd96c7de 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -26,12 +26,12 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidA if(!worldObj.isRemote) { + this.subscribeToAllAround(water.getTankType(), this); + for(int i = 2; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); - this.trySubscribe(water.getTankType(), worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir); - if(b instanceof RBMKBase) { int[] pos = ((RBMKBase)b).findCore(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 953a7564f..2394ecea4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -8,6 +8,7 @@ import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.Compat; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -152,7 +153,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM protected double runInteraction(int x, int y, int z, double flux) { - TileEntity te = worldObj.getTileEntity(x, y, z); + TileEntity te = Compat.getTileStandard(worldObj, x, y, z); if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase base = (TileEntityRBMKBase) te; @@ -272,6 +273,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Override public void onMelt(int reduce) { + boolean moderated = this.isModerated(); int h = RBMKDials.getColumnHeight(worldObj); reduce = MathHelper.clamp_int(reduce, 1, h); @@ -306,6 +308,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.standardMelt(reduce); } + if(moderated) { + + int count = 2 + worldObj.rand.nextInt(2); + + for(int i = 0; i < count; i++) { + spawnDebris(DebrisType.GRAPHITE); + } + } + spawnDebris(DebrisType.ELEMENT); if(this.getBlockMetadata() == RBMKBase.DIR_NORMAL_LID.ordinal() + RBMKBase.offset) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 1bf55bb4b..2dce4df9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -14,7 +14,7 @@ import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -38,6 +38,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public static final short modes = 4; public int age = 0; public List list = new ArrayList(); + protected boolean sendingBrake = false; public TileEntityBarrel() { super(6); @@ -64,17 +65,9 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.unloadTank(4, 5, slots); tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - /*if(this.mode == 1 || this.mode == 2) { - this.sendFluidToAll(tank.getTankType(), this); - } - - if(this.mode == 0 || this.mode == 1) { - this.subscribeToAllAround(tank.getTankType(), worldObj, xCoord, yCoord, zCoord); - } else { - this.unsubscribeToAllAround(tank.getTankType(), worldObj, xCoord, yCoord, zCoord); - }*/ - + this.sendingBrake = true; tank.setFill(transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + this.sendingBrake = false; age++; if(age >= 20) @@ -126,6 +119,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc consumers.add((IFluidConnector) te); } } + + consumers.remove(that); if(fill > 0 && send) { List con = new ArrayList(); @@ -213,7 +208,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } //For when Tom's firestorm hits a barrel full of water - if(tank.getTankType() == Fluids.WATER && MainRegistry.proxy.getImpactFire(worldObj) > 0) { + if(tank.getTankType() == Fluids.WATER && TomSaveData.forWorld(worldObj).fire > 1e-5) { int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); if(light > 7) { @@ -312,7 +307,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc @Override public FluidTank[] getReceivingTanks() { - return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; + return (mode == 0 || mode == 1) && !sendingBrake ? new FluidTank[] {tank} : new FluidTank[0]; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 133bbb3e1..84f1395f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -55,6 +55,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public short mode = 0; public static final short modes = 4; public boolean hasExploded = false; + protected boolean sendingBrake = false; public Explosion lastExplosion = null; @@ -98,7 +99,9 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements if(age >= 20) age = 0; + this.sendingBrake = true; tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + this.sendingBrake = false; if((mode == 1 || mode == 2) && (age == 9 || age == 19)) fillFluidInit(tank.getTankType()); @@ -254,7 +257,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Override public int getMaxFluidFill(FluidType type) { - if(mode == 2 || mode == 3) + if(mode == 2 || mode == 3 || this.sendingBrake) return 0; return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; @@ -333,7 +336,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Override public long getDemand(FluidType type) { - if(this.mode == 2 || this.mode == 3) + if(this.mode == 2 || this.mode == 3 || this.sendingBrake) return 0; return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; @@ -370,7 +373,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Override public FluidTank[] getReceivingTanks() { - if(this.hasExploded) return new FluidTank[0]; + if(this.hasExploded || this.sendingBrake) return new FluidTank[0]; return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; } @@ -380,6 +383,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements } @Override + @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineFluidTank(player.inventory, (TileEntityMachineFluidTank) world.getTileEntity(x, y, z)); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java index 360a24636..daade6ad6 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineOrbus.java @@ -6,9 +6,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineOrbus extends TileEntityBarrel { diff --git a/src/main/java/com/hbm/tileentity/network/RTTYSystem.java b/src/main/java/com/hbm/tileentity/network/RTTYSystem.java index 5d0badde8..efd38aaf1 100644 --- a/src/main/java/com/hbm/tileentity/network/RTTYSystem.java +++ b/src/main/java/com/hbm/tileentity/network/RTTYSystem.java @@ -9,6 +9,7 @@ import com.hbm.util.NoteBuilder.Note; import com.hbm.util.NoteBuilder.Octave; import com.hbm.util.Tuple.Pair; +import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; public class RTTYSystem { @@ -45,8 +46,7 @@ public class RTTYSystem { } HashMap, RTTYChannel> toAdd = new HashMap(); - for(Entry, RTTYChannel> entry : broadcast.entrySet()) { - World world = entry.getKey().getKey(); + for(World world : MinecraftServer.getServer().worldServers) { RTTYChannel chan = new RTTYChannel(); chan.timeStamp = world.getTotalWorldTime(); chan.signal = getTestSender(chan.timeStamp); @@ -69,6 +69,7 @@ public class RTTYSystem { PRINT_BUFFER //print message, literally, it makes a paper printout } + /* Song of Storms at 300 BPM */ public static Object getTestSender(long timeStamp) { int tempo = 4; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 2d0232d60..1d3624297 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -183,6 +183,11 @@ public class TileEntityCraneExtractor extends TileEntityMachineBase implements I this.matcher.nextMode(worldObj, slots[i], i); } + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + } + @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return i > 8 && i < 18; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 4ad7a19ee..a32914fc3 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -5,9 +5,11 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.entity.projectile.EntityArtilleryShell; +import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretArty; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemAmmoArty; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; @@ -210,6 +212,13 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen proj.setWhistle(true); worldObj.spawnEntityInWorld(proj); + + casingDelay = this.casingDelay(); + } + + @Override + public int casingDelay() { + return 7; } protected void updateConnections() { @@ -333,6 +342,12 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen this.didJustShoot = false; + if(casingDelay > 0) { + casingDelay--; + } else { + spawnCasing(); + } + } else { Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); @@ -364,6 +379,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen ItemStack conf = this.getShellLoaded(); if(conf != null) { + cachedCasingConfig = ItemAmmoArty.itemTypes[conf.getItemDamage()].casing; this.spawnShell(conf); this.conusmeAmmo(ModItems.ammo_arty); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 25.0F, 1.0F); @@ -388,6 +404,18 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } } + protected static CasingEjector ejector = new CasingEjector().setMotion(0, 0.6, -1).setAngleRange(0.1F, 0.1F); + + @Override + protected CasingEjector getEjector() { + return ejector; + } + + @Override + protected Vec3 getCasingSpawnPos() { + return this.getTurretPos(); + } + @Override public void handleButtonPacket(int value, int meta) { if(meta == 5) { @@ -433,6 +461,25 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen nbt.setShort("mode", this.mode); } + + @Override + protected void spawnCasing() { + + if(cachedCasingConfig == null) return; + CasingEjector ej = getEjector(); + + Vec3 spawn = this.getCasingSpawnPos(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "casing"); + data.setFloat("pitch", (float) 0); + data.setFloat("yaw", (float) rotationYaw); + data.setBoolean("crouched", false); + data.setString("name", cachedCasingConfig.getName()); + if(ej != null) data.setInteger("ej", ej.getId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, spawn.xCoord, spawn.yCoord, spawn.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + cachedCasingConfig = null; + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 877851407..6d54d6a3a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -12,13 +12,19 @@ import com.hbm.entity.missile.EntitySiegeDropship; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; import com.hbm.lib.Library; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; @@ -31,7 +37,6 @@ import net.minecraft.entity.item.EntityMinecart; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.passive.IAnimals; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; @@ -90,6 +95,8 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple //tally marks! public int stattrak; + public int casingDelay; + protected SpentCasing cachedCasingConfig = null; /** * X @@ -212,6 +219,14 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple NBTTagCompound data = this.writePacket(); this.networkPack(data, 250); + if(usesCasings() && this.casingDelay() > 0) { + if(casingDelay > 0) { + casingDelay--; + } else { + spawnCasing(); + } + } + } else { Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); @@ -298,6 +313,9 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public abstract void updateFiringTick(); + public boolean usesCasings() { return false; } + public int casingDelay() { return 0; } + public BulletConfiguration getFirstConfigLoaded() { List list = getAmmoList(); @@ -315,7 +333,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(c); - if(conf.ammo == slots[i].getItem()) + if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) return conf; } } @@ -336,13 +354,21 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); worldObj.spawnEntityInWorld(proj); + + if(usesCasings()) { + if(this.casingDelay() == 0) { + spawnCasing(); + } else { + casingDelay = this.casingDelay(); + } + } } - public void conusmeAmmo(Item ammo) { + public void conusmeAmmo(ComparableStack ammo) { for(int i = 1; i < 10; i++) { - if(slots[i] != null && slots[i].getItem() == ammo) { + if(slots[i] != null && ammo.matchesRecipe(slots[i], true)) { this.decrStackSize(i, 1); return; @@ -551,7 +577,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(pitchDeg < -this.getTurretDepression() || pitchDeg > this.getTurretElevation()) return false; - return !Library.isObstructed(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); + return !Library.isObstructedOpaque(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); } /** @@ -756,7 +782,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple BulletConfiguration config = BulletConfigSyncingUtil.pullConfig(i); if(config != null && config.ammo != null) { - ammoStacks.add(new ItemStack(config.ammo)); + ammoStacks.add(config.ammo.toStack()); } } @@ -781,10 +807,12 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple return this.isOn; } + @Override public void setPower(long i) { this.power = i; } - + + @Override public long getPower() { return this.power; } @@ -817,4 +845,30 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public void closeInventory() { this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.closeC", 1.0F, 1.0F); } + + protected Vec3 getCasingSpawnPos() { + return this.getTurretPos(); + } + + protected CasingEjector getEjector() { + return null; + } + + protected void spawnCasing() { + + if(cachedCasingConfig == null) return; + CasingEjector ej = getEjector(); + + Vec3 spawn = this.getCasingSpawnPos(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "casing"); + data.setFloat("pitch", (float) -rotationPitch); + data.setFloat("yaw", (float) rotationYaw); + data.setBoolean("crouched", false); + data.setString("name", cachedCasingConfig.getName()); + if(ej != null) data.setInteger("ej", ej.getId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, spawn.xCoord, spawn.yCoord, spawn.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + cachedCasingConfig = null; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index 80f5da180..7e2af2be1 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -73,6 +74,7 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { BulletConfiguration conf = this.getFirstConfigLoaded(); if(conf != null) { + this.cachedCasingConfig = conf.spentCasing; this.spawnBullet(conf); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.chekhov_fire", 2.0F, 1.0F); @@ -91,6 +93,24 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { } } } + + @Override + protected Vec3 getCasingSpawnPos() { + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(-1.125, 0.125, 0.25); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); + } + + protected static CasingEjector ejector = new CasingEjector().setMotion(-0.8, 0.8, 0).setAngleRange(0.1F, 0.1F); + + @Override + protected CasingEjector getEjector() { + return ejector; + } public int getDelay() { return 2; @@ -139,7 +159,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { @Override public void manualSetup() { - manual = true; } + + @Override + public boolean usesCasings() { + return true; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java index cadfc4c94..8a0b679b1 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.CasingEjector; public class TileEntityTurretFriendly extends TileEntityTurretChekhov { @@ -31,4 +32,11 @@ public class TileEntityTurretFriendly extends TileEntityTurretChekhov { public int getDelay() { return 5; } + + protected static CasingEjector ejector = new CasingEjector().setMotion(-0.3, 0.6, 0).setAngleRange(0.02F, 0.05F); + + @Override + protected CasingEjector getEjector() { + return ejector; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 6e57f56b5..0b0718d44 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.entity.projectile.EntityArtilleryRocket; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretHIMARS; import com.hbm.items.ModItems; @@ -198,7 +199,7 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem HIMARSRocket type = ItemAmmoHIMARS.itemTypes[available]; this.typeLoaded = available; this.ammo = type.amount; - this.conusmeAmmo(ModItems.ammo_himars); + this.conusmeAmmo(new ComparableStack(ModItems.ammo_himars, 1, available)); } } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 94df68742..a295b1487 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -6,9 +6,12 @@ import java.util.List; import com.hbm.config.WeaponConfig; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; +import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasing; import com.hbm.util.EntityDamageUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -126,9 +129,16 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { if(loaded > 0 && this.tPos != null) { + SpentCasing cfg = GunDGKFactory.CASINGDGK; + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.howard_fire", 4.0F, 0.9F + worldObj.rand.nextFloat() * 0.3F); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.howard_fire", 4.0F, 1F + worldObj.rand.nextFloat() * 0.3F); + for(int i = 0; i < 2; i++) { + this.cachedCasingConfig = cfg; + this.spawnCasing(); + } + if(timer % 2 == 0) { loaded--; @@ -174,4 +184,27 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { super.writeToNBT(nbt); nbt.setInteger("loaded", loaded); } + + @Override + protected Vec3 getCasingSpawnPos() { + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(-0.875, 0.2, -0.125); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); + } + + protected static CasingEjector ejector = new CasingEjector().setAngleRange(0.01F, 0.01F).setMotion(0, 0, -0.1); + + @Override + protected CasingEjector getEjector() { + return ejector.setMotion(0.4, 0, 0).setAngleRange(0.02F, 0.03F); + } + + @Override + public boolean usesCasings() { + return true; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java index 284706ca9..92066229d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.turret; import com.hbm.config.WeaponConfig; +import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -70,6 +71,9 @@ public class TileEntityTurretHowardDamaged extends TileEntityTurretHoward { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.howard_fire", 4.0F, 0.7F + worldObj.rand.nextFloat() * 0.3F); + this.cachedCasingConfig = GunDGKFactory.CASINGDGK; + this.spawnCasing(); + if(worldObj.rand.nextInt(100) + 1 <= WeaponConfig.ciwsHitrate * 0.5) EntityDamageUtil.attackEntityFromIgnoreIFrame(this.target, ModDamageSource.shrapnel, 2F + worldObj.rand.nextInt(2)); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index feddb8f2c..1e344c870 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -84,6 +85,7 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { BulletConfiguration conf = this.getFirstConfigLoaded(); if(conf != null) { + this.cachedCasingConfig = conf.spentCasing; this.spawnBullet(conf); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 4.0F, 1.0F); @@ -103,4 +105,32 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { } } } + + @Override + protected Vec3 getCasingSpawnPos() { + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(-2, 0, 0); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); + } + + protected static CasingEjector ejector = new CasingEjector().setAngleRange(0.01F, 0.01F).setMotion(0, 0, -0.2); + + @Override + protected CasingEjector getEjector() { + return ejector; + } + + @Override + public boolean usesCasings() { + return true; + } + + @Override + public int casingDelay() { + return 22; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index e40b9093b..04521c296 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -6,6 +6,8 @@ import java.util.List; import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoRocket; import com.hbm.items.ModItems; import net.minecraft.nbt.NBTTagCompound; @@ -128,7 +130,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.richard_fire", 2.0F, 1.0F); this.loaded--; - if(conf.ammo == ModItems.ammo_rocket_nuclear) + if(conf.ammo.equals(new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)))) timer = -50; } else { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java new file mode 100644 index 000000000..5a1a1326b --- /dev/null +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -0,0 +1,262 @@ +package com.hbm.tileentity.turret; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.CasingEjector; +import com.hbm.inventory.container.ContainerTurretBase; +import com.hbm.inventory.gui.GUITurretSentry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IGUIProvider { + + private boolean didJustShootLeft = false; + private boolean retractingLeft = false; + public double barrelLeftPos = 0; + public double lastBarrelLeftPos = 0; + private boolean didJustShootRight = false; + private boolean retractingRight = false; + public double barrelRightPos = 0; + public double lastBarrelRightPos = 0; + + static List configs = new ArrayList(); + + static { + configs.add(BulletConfigSyncingUtil.R5_NORMAL); + configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); + configs.add(BulletConfigSyncingUtil.R5_DU); + configs.add(BulletConfigSyncingUtil.R5_STAR); + configs.add(BulletConfigSyncingUtil.CHL_R5); + } + + @Override + protected List getAmmoList() { + return configs; + } + + @Override + public String getName() { + return "container.turretSentry"; + } + + @Override + public double getTurretDepression() { + return 20D; + } + + @Override + public double getTurretElevation() { + return 20D; + } + + @Override + public int getDecetorInterval() { + return 10; + } + + @Override + public double getDecetorRange() { + return 24D; + } + + @Override + public double getDecetorGrace() { + return 2D; + } + + @Override + public long getMaxPower() { + return 1_000; + } + + @Override + public long getConsumption() { + return 5; + } + + @Override + public double getBarrelLength() { + return 1.25D; + } + + @Override + public double getAcceptableInaccuracy() { + return 15; + } + + @Override + public boolean hasThermalVision() { + return false; + } + + @Override + public Vec3 getHorizontalOffset() { + return Vec3.createVectorHelper(0.5, 0, 0.5); + } + + @Override + public void updateEntity() { + + if(worldObj.isRemote) { + this.lastBarrelLeftPos = this.barrelLeftPos; + this.lastBarrelRightPos = this.barrelRightPos; + + float retractSpeed = 0.5F; + float pushSpeed = 0.25F; + + if(this.retractingLeft) { + this.barrelLeftPos += retractSpeed; + + if(this.barrelLeftPos >= 1) { + this.retractingLeft = false; + } + + } else { + this.barrelLeftPos -= pushSpeed; + if(this.barrelLeftPos < 0) { + this.barrelLeftPos = 0; + } + } + + if(this.retractingRight) { + this.barrelRightPos += retractSpeed; + + if(this.barrelRightPos >= 1) { + this.retractingRight = false; + } + + } else { + this.barrelRightPos -= pushSpeed; + if(this.barrelRightPos < 0) { + this.barrelRightPos = 0; + } + } + } + + super.updateEntity(); + } + + boolean shotSide = false; + int timer; + + @Override + public void updateFiringTick() { + + timer++; + + if(timer % 10 == 0) { + + BulletConfiguration conf = this.getFirstConfigLoaded(); + + if(conf != null) { + this.cachedCasingConfig = conf.spentCasing; + this.spawnBullet(conf); + this.conusmeAmmo(conf.ammo); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + Vec3 side = Vec3.createVectorHelper(0.125 * (shotSide ? 1 : -1), 0, 0); + side.rotateAroundY((float) -(this.rotationYaw)); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord + vec.xCoord + side.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord + side.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + if(shotSide) { + this.didJustShootLeft = true; + } else { + this.didJustShootRight = true; + } + shotSide = !shotSide; + } + } + } + + @Override + protected Vec3 getCasingSpawnPos() { + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(0, 0.25,-0.125); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); + } + + protected static CasingEjector ejector = new CasingEjector().setMotion(-0.3, 0.6, 0).setAngleRange(0.01F, 0.01F); + + @Override + protected CasingEjector getEjector() { + return ejector.setMotion(0.3, 0.6, 0); + } + + @Override + public boolean usesCasings() { + return true; + } + + @Override + protected void seekNewTarget() { + Entity lastTarget = this.target; + super.seekNewTarget(); + + if(lastTarget != this.target && this.target != null) { + worldObj.playSoundAtEntity(target, "hbm:turret.sentry_lockon", 2.0F, 1.5F); + } + } + + @Override + protected NBTTagCompound writePacket() { + NBTTagCompound data = super.writePacket(); + if(didJustShootLeft) data.setBoolean("justShotLeft", didJustShootLeft); + if(didJustShootRight) data.setBoolean("justShotRight", didJustShootRight); + didJustShootLeft = false; + didJustShootRight = false; + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + if(nbt.getBoolean("justShotLeft")) this.retractingLeft = true; + if(nbt.getBoolean("justShotRight")) this.retractingRight = true; + } + + protected void updateConnections() { + this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTurretBase(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITurretSentry(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/util/ArmorRegistry.java b/src/main/java/com/hbm/util/ArmorRegistry.java index 5dd71a79c..06e69f8a9 100644 --- a/src/main/java/com/hbm/util/ArmorRegistry.java +++ b/src/main/java/com/hbm/util/ArmorRegistry.java @@ -9,7 +9,6 @@ import com.hbm.handler.ArmorModHandler; import api.hbm.item.IGasMask; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index ff292c09c..21bba6f78 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -137,7 +137,10 @@ public class ArmorUtil { if(checkArmor(player, ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots) || checkArmor(player, ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots) || - checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) + checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots) || + checkArmor(player, ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots) || + checkArmor(player, ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots) || + checkArmor(player, ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots)) { return true; } diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index 75b761ad4..ef36e6998 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -21,6 +21,8 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; public class Compat { @@ -194,4 +196,12 @@ public class Compat { } MainRegistry.logger.info("#######################################################"); } + + /** A standard implementation of safely grabbing a tile entity without loading chunks, might have more fluff added to it later on. */ + public static TileEntity getTileStandard(World world, int x, int y, int z) { + + if(!world.getChunkProvider().chunkExists(x >> 4, z >> 4)) return null; + + return world.getTileEntity(x, y, z); + } } diff --git a/src/main/java/com/hbm/util/EnchantmentUtil.java b/src/main/java/com/hbm/util/EnchantmentUtil.java index b64ce08ab..8007924ae 100644 --- a/src/main/java/com/hbm/util/EnchantmentUtil.java +++ b/src/main/java/com/hbm/util/EnchantmentUtil.java @@ -75,42 +75,56 @@ public class EnchantmentUtil { * @param player * @param xp */ - public static void addExperience(EntityPlayer player, int xp, boolean silent) { - - int j = Integer.MAX_VALUE - player.experienceTotal; + public static void addExperience(EntityPlayer player, int xp, boolean silent) { - if(xp > j) { - xp = j; - } + int j = Integer.MAX_VALUE - player.experienceTotal; - player.experience += (float)xp / (float)player.xpBarCap(); + if(xp > j) { + xp = j; + } - for(player.experienceTotal += xp; player.experience >= 1.0F; player.experience /= (float)player.xpBarCap()) { - player.experience = (player.experience - 1.0F) * (float)player.xpBarCap(); - - if(silent) - addExperienceLevelSilent(player, 1); - else - player.addExperienceLevel(1); - } - } - - public static void setExperience(EntityPlayer player, int xp) { - - player.experienceLevel = 0; - player.experience = 0.0F; - player.experienceTotal = 0; - - addExperience(player, xp, true); - } - - public static void addExperienceLevelSilent(EntityPlayer player, int level) { - player.experienceLevel += level; + player.experience += (float) xp / (float) player.xpBarCap(); - if (player.experienceLevel < 0) { - player.experienceLevel = 0; - player.experience = 0.0F; - player.experienceTotal = 0; - } - } + for(player.experienceTotal += xp; player.experience >= 1.0F; player.experience /= (float) player.xpBarCap()) { + player.experience = (player.experience - 1.0F) * (float) player.xpBarCap(); + + if(silent) + addExperienceLevelSilent(player, 1); + else + player.addExperienceLevel(1); + } + } + + public static void setExperience(EntityPlayer player, int xp) { + + player.experienceLevel = 0; + player.experience = 0.0F; + player.experienceTotal = 0; + + addExperience(player, xp, true); + } + + public static void addExperienceLevelSilent(EntityPlayer player, int level) { + player.experienceLevel += level; + + if(player.experienceLevel < 0) { + player.experienceLevel = 0; + player.experience = 0.0F; + player.experienceTotal = 0; + } + } + + /** Fun fact: experienceTotal lies and has no actual purpose other than misleading people! */ + public static int getTotalExperience(EntityPlayer player) { + int xp = 0; + + /* count only completed levels */ + for(int i = 0; i < player.experienceLevel; i++) { + xp += xpBarCap(i); + } + + xp += xpBarCap(player.experienceLevel) * player.experience; + + return xp; + } } diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 33ad1422a..802c270b5 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -394,6 +394,26 @@ public class InventoryUtil { return stacks; } + /* in emergency situations with mixed types where AStacks coexist with NBT dependent ItemStacks, such as for fluid icons */ + if(o instanceof Object[]) { + Object[] ingredients = (Object[]) o; + ItemStack[][] stacks = new ItemStack[ingredients.length][0]; + + for(int i = 0; i < ingredients.length; i++) { + Object ingredient = ingredients[i]; + + if(ingredient instanceof AStack) { + stacks[i] = ((AStack) ingredient).extractForNEI().toArray(new ItemStack[0]); + } + if(ingredient instanceof ItemStack) { + stacks[i] = new ItemStack[1]; + stacks[i][0] = ((ItemStack) ingredient).copy(); + } + } + + return stacks; + } + return new ItemStack[0][0]; } @@ -541,4 +561,53 @@ public class InventoryUtil { return success; } + + public static int countAStackMatches(ItemStack[] inventory, AStack stack, boolean ignoreSize) { + int count = 0; + + for(ItemStack itemStack : inventory) { + if(itemStack != null) { + if(stack.matchesRecipe(itemStack, true)) { + count += itemStack.stackSize; + } + } + } + return ignoreSize ? count : count / stack.stacksize; + } + + public static int countAStackMatches(EntityPlayer player, AStack stack, boolean ignoreSize) { + return countAStackMatches(player.inventory.mainInventory, stack, ignoreSize); + } + + public static boolean doesPlayerHaveAStack(EntityPlayer player, AStack stack, boolean shouldRemove, boolean ignoreSize) { + return doesInventoryHaveAStack(player.inventory.mainInventory, stack, shouldRemove, ignoreSize); + } + + public static boolean doesInventoryHaveAStack(ItemStack[] inventory, AStack stack, boolean shouldRemove, boolean ignoreSize) { + final int totalMatches; + int totalStacks = 0; + for(ItemStack itemStack : inventory) { + if(itemStack != null && stack.matchesRecipe(itemStack, ignoreSize)) + totalStacks += itemStack.stackSize; + if(!shouldRemove && ignoreSize && totalStacks > 0) + return true; + } + + totalMatches = ignoreSize ? totalStacks : totalStacks / stack.stacksize; + + if(shouldRemove) { + int consumedStacks = 0, requiredStacks = ignoreSize ? 1 : stack.stacksize; + for(ItemStack itemStack : inventory) { + if(consumedStacks > requiredStacks) + break; + if(itemStack != null && stack.matchesRecipe(itemStack, true)) { + final int toConsume = Math.min(itemStack.stackSize, requiredStacks - consumedStacks); + itemStack.stackSize -= toConsume; + consumedStacks += toConsume; + } + } + } + + return totalMatches > 0; + } } diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index 519c4c428..fd95b1c4c 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -5,6 +5,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -27,7 +28,7 @@ public class LootGenerator { if(loot != null && loot.items.isEmpty()) { if(world.rand.nextInt(5) == 0) - loot.addItem(new ItemStack(ModItems.ammo_nuke_low), -0.25, 0, -0.125); + loot.addItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), -0.25, 0, -0.125); else loot.addItem(new ItemStack(ModItems.ammo_rocket), -0.25, 0, -0.25); @@ -122,8 +123,8 @@ public class LootGenerator { if(world.rand.nextBoolean() || memes) { int type = world.rand.nextInt(11); - Item nuke = memes ? ModItems.ammo_nuke_pumpkin : type == 0 ? ModItems.ammo_nuke : type <= 5 ? ModItems.ammo_nuke_low : ModItems.ammo_nuke_safe; - loot.addItem(new ItemStack(nuke), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); + AmmoFatman nuke = memes ? AmmoFatman.PUMPKIN : type == 0 ? AmmoFatman.STOCK : type <= 5 ? AmmoFatman.LOW : AmmoFatman.SAFE; + loot.addItem(ModItems.ammo_nuke.stackFromEnum(nuke), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); } } } diff --git a/src/main/java/com/hbm/util/Tuple.java b/src/main/java/com/hbm/util/Tuple.java index 250989cc5..cd69db973 100644 --- a/src/main/java/com/hbm/util/Tuple.java +++ b/src/main/java/com/hbm/util/Tuple.java @@ -12,8 +12,8 @@ public class Tuple { public static class Pair { - X key; - Y value; + public X key; + public Y value; //because fuck you public Pair(X x, Y y) { this.key = x; diff --git a/src/main/java/com/hbm/world/dungeon/Factory.java b/src/main/java/com/hbm/world/dungeon/Factory.java index f8446778c..d5e060fc3 100644 --- a/src/main/java/com/hbm/world/dungeon/Factory.java +++ b/src/main/java/com/hbm/world/dungeon/Factory.java @@ -23,6 +23,8 @@ public class Factory extends WorldGenerator Block Block4 = ModBlocks.steel_wall; Block Block5 = ModBlocks.reinforced_light; + int s4 = 8; + protected Block[] GetValidSpawnBlocks() { return new Block[] @@ -726,7 +728,7 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 0, z + 24, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 0, z + 24, Blocks.stonebrick, 0, 3); world.setBlock(x + 7, y + 0, z + 24, Blocks.stone_brick_stairs, 6, 3); - world.setBlock(x + 14, y + 0, z + 24, Block1, 4, 3); + world.setBlock(x + 14, y + 0, z + 24, Block1, s4, 3); world.setBlock(x + 0, y + 0, z + 25, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 0, z + 25, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 0, z + 25, Blocks.lava, 0, 3); @@ -739,7 +741,7 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 0, z + 25, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 0, z + 25, Blocks.stonebrick, 0, 3); world.setBlock(x + 7, y + 0, z + 25, Blocks.stone_brick_stairs, 5, 3); - world.setBlock(x + 14, y + 0, z + 25, Block1, 4, 3); + world.setBlock(x + 14, y + 0, z + 25, Block1, s4, 3); world.setBlock(x + 0, y + 0, z + 26, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 0, z + 26, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 0, z + 26, Blocks.lava, 0, 3); @@ -747,14 +749,14 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 0, z + 26, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 0, z + 26, Blocks.stonebrick, 0, 3); world.setBlock(x + 7, y + 0, z + 26, Blocks.stone_brick_stairs, 7, 3); - world.setBlock(x + 14, y + 0, z + 26, Block1, 4, 3); + world.setBlock(x + 14, y + 0, z + 26, Block1, s4, 3); world.setBlock(x + 0, y + 0, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 0, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 0, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 4, y + 0, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 5, y + 0, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 6, y + 0, z + 27, Blocks.stonebrick, 0, 3); - world.setBlock(x + 14, y + 0, z + 27, Block1, 4, 3); + world.setBlock(x + 14, y + 0, z + 27, Block1, s4, 3); world.setBlock(x + 0, y + 0, z + 28, Blocks.stonebrick, 0, 3); world.setBlock(x + 14, y + 0, z + 28, Blocks.stonebrick, 0, 3); world.setBlock(x + 0, y + 0, z + 29, Blocks.stonebrick, 0, 3); @@ -894,7 +896,7 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 1, z + 24, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 1, z + 24, Blocks.lit_furnace, 5, 3); world.setBlock(x + 7, y + 1, z + 24, Blocks.heavy_weighted_pressure_plate, 0, 3); - world.setBlock(x + 14, y + 1, z + 24, Block1, 4, 3); + world.setBlock(x + 14, y + 1, z + 24, Block1, s4, 3); world.setBlock(x + 0, y + 1, z + 25, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 1, z + 25, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 1, z + 25, Blocks.lava, 0, 3); @@ -902,7 +904,7 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 1, z + 25, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 1, z + 25, Blocks.lit_furnace, 5, 3); world.setBlock(x + 7, y + 1, z + 25, Blocks.heavy_weighted_pressure_plate, 0, 3); - world.setBlock(x + 14, y + 1, z + 25, Block1, 4, 3); + world.setBlock(x + 14, y + 1, z + 25, Block1, s4, 3); world.setBlock(x + 0, y + 1, z + 26, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 1, z + 26, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 1, z + 26, Blocks.lava, 0, 3); @@ -910,14 +912,14 @@ public class Factory extends WorldGenerator world.setBlock(x + 5, y + 1, z + 26, Blocks.lava, 0, 3); world.setBlock(x + 6, y + 1, z + 26, Blocks.lit_furnace, 5, 3); world.setBlock(x + 7, y + 1, z + 26, Blocks.heavy_weighted_pressure_plate, 0, 3); - world.setBlock(x + 14, y + 1, z + 26, Block1, 4, 3); + world.setBlock(x + 14, y + 1, z + 26, Block1, s4, 3); world.setBlock(x + 0, y + 1, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 2, y + 1, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 3, y + 1, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 4, y + 1, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 5, y + 1, z + 27, Blocks.stonebrick, 0, 3); world.setBlock(x + 6, y + 1, z + 27, Blocks.stonebrick, 0, 3); - world.setBlock(x + 14, y + 1, z + 27, Block1, 4, 3); + world.setBlock(x + 14, y + 1, z + 27, Block1, s4, 3); world.setBlock(x + 0, y + 1, z + 28, Blocks.stonebrick, 0, 3); world.setBlock(x + 14, y + 1, z + 28, Blocks.stonebrick, 0, 3); world.setBlock(x + 0, y + 1, z + 29, Blocks.stonebrick, 0, 3); @@ -1040,16 +1042,16 @@ public class Factory extends WorldGenerator world.setBlock(x + 0, y + 2, z + 24, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 2, z + 24, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 2, z + 24, Blocks.stonebrick, 0, 3); - world.setBlock(x + 14, y + 2, z + 24, Block1, 4, 3); + world.setBlock(x + 14, y + 2, z + 24, Block1, s4, 3); world.setBlock(x + 0, y + 2, z + 25, Blocks.brick_block, 0, 3); world.setBlock(x + 1, y + 2, z + 25, Blocks.iron_bars, 0, 3); world.setBlock(x + 2, y + 2, z + 25, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 2, z + 25, Blocks.lit_furnace, 5, 3); - world.setBlock(x + 14, y + 2, z + 25, Block1, 4, 3); + world.setBlock(x + 14, y + 2, z + 25, Block1, s4, 3); world.setBlock(x + 0, y + 2, z + 26, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 2, z + 26, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 2, z + 26, Blocks.stonebrick, 0, 3); - world.setBlock(x + 14, y + 2, z + 26, Block1, 4, 3); + world.setBlock(x + 14, y + 2, z + 26, Block1, s4, 3); world.setBlock(x + 0, y + 2, z + 27, Blocks.brick_block, 0, 3); world.setBlock(x + 1, y + 2, z + 27, Blocks.iron_bars, 0, 3); world.setBlock(x + 2, y + 2, z + 27, Blocks.brick_block, 0, 3); @@ -1057,7 +1059,7 @@ public class Factory extends WorldGenerator world.setBlock(x + 4, y + 2, z + 27, Blocks.brick_block, 0, 3); world.setBlock(x + 5, y + 2, z + 27, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 2, z + 27, Blocks.brick_block, 0, 3); - world.setBlock(x + 14, y + 2, z + 27, Block1, 4, 3); + world.setBlock(x + 14, y + 2, z + 27, Block1, s4, 3); world.setBlock(x + 0, y + 2, z + 28, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 2, z + 28, Blocks.iron_bars, 0, 3); world.setBlock(x + 4, y + 2, z + 28, Blocks.iron_bars, 0, 3); @@ -1151,11 +1153,11 @@ public class Factory extends WorldGenerator world.setBlock(x + 0, y + 3, z + 25, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 3, z + 25, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 3, z + 25, Blocks.brick_block, 0, 3); - world.setBlock(x + 14, y + 3, z + 25, Block1, 4, 3); + world.setBlock(x + 14, y + 3, z + 25, Block1, s4, 3); world.setBlock(x + 0, y + 3, z + 26, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 3, z + 26, Blocks.brick_block, 0, 3); world.setBlock(x + 6, y + 3, z + 26, Blocks.brick_block, 0, 3); - world.setBlock(x + 14, y + 3, z + 26, Block1, 4, 3); + world.setBlock(x + 14, y + 3, z + 26, Block1, s4, 3); world.setBlock(x + 0, y + 3, z + 27, Blocks.brick_block, 0, 3); world.setBlock(x + 2, y + 3, z + 27, Blocks.brick_block, 0, 3); world.setBlock(x + 3, y + 3, z + 27, Blocks.brick_block, 0, 3); diff --git a/src/main/java/com/hbm/world/dungeon/Relay.java b/src/main/java/com/hbm/world/dungeon/Relay.java index 9e8126099..93fb53610 100644 --- a/src/main/java/com/hbm/world/dungeon/Relay.java +++ b/src/main/java/com/hbm/world/dungeon/Relay.java @@ -34,6 +34,11 @@ public class Relay extends WorldGenerator Block Block8 = ModBlocks.deco_tungsten; Block Block9 = ModBlocks.pole_top; + int s2 = 0; + int s3 = 0; + int s4 = 8; + int s5 = 8; + protected Block[] GetValidSpawnBlocks() { return new Block[] @@ -594,16 +599,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 2, y + 0, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 10, y + 0, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 0, z + 2, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 0, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 0, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 0, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 0, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 0, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 0, z + 2, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 0, z + 3, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 0, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 0, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 0, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 0, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 0, z + 3, Block4, s4, 3); world.setBlock(x + 10, y + 0, z + 3, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 0, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 0, z + 4, Block2, 0, 3); @@ -613,16 +618,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 0, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 0, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 0, z + 5, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 0, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 0, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 0, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 0, z + 5, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 0, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 0, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 0, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 0, z + 5, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 0, z + 6, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 0, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 0, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 0, z + 6, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 0, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 0, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 0, z + 6, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 0, y + 0, z + 7, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 1, y + 0, z + 7, ModBlocks.fence_metal, 0, 3); @@ -717,16 +722,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 2, y + 1, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 10, y + 1, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 1, z + 2, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 1, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 1, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 1, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 1, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 1, z + 2, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 1, z + 3, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 1, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 1, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 1, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 1, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 1, z + 3, Block4, s4, 3); world.setBlock(x + 10, y + 1, z + 3, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 1, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 1, z + 4, Block2, 0, 3); @@ -736,16 +741,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 1, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 1, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 1, z + 5, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 1, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 1, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 1, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 1, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 1, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 1, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 1, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 1, z + 5, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 1, z + 6, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 1, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 1, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 1, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 1, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 1, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 1, z + 6, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 0, y + 1, z + 7, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 1, y + 1, z + 7, ModBlocks.fence_metal, 0, 3); @@ -817,16 +822,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 2, y + 2, z + 1, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 10, y + 2, z + 1, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 2, y + 2, z + 2, ModBlocks.barbed_wire, 0, 3); - world.setBlock(x + 5, y + 2, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 2, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 2, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 2, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 2, z + 2, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 2, y + 2, z + 3, ModBlocks.barbed_wire, 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 2, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 2, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 2, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 2, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 2, z + 3, Block4, s4, 3); world.setBlock(x + 10, y + 2, z + 3, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 2, y + 2, z + 4, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 4, y + 2, z + 4, Block2, 0, 3); @@ -836,16 +841,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 2, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 2, z + 4, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 2, y + 2, z + 5, ModBlocks.barbed_wire, 0, 3); - world.setBlock(x + 4, y + 2, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 2, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 2, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 2, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 2, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 2, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 2, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 2, z + 5, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 2, y + 2, z + 6, ModBlocks.barbed_wire, 0, 3); - world.setBlock(x + 5, y + 2, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 2, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 2, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 2, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 2, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 2, z + 6, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 0, y + 2, z + 7, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 1, y + 2, z + 7, ModBlocks.barbed_wire, 0, 3); @@ -910,28 +915,28 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 2, z + 15, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 9, y + 2, z + 15, ModBlocks.barbed_wire, 0, 3); world.setBlock(x + 10, y + 2, z + 15, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 5, y + 3, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 3, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 3, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 2, Block4, 3, 3); - world.setBlock(x + 4, y + 3, z + 3, Block4, 5, 3); + world.setBlock(x + 7, y + 3, z + 2, Block4, s3, 3); + world.setBlock(x + 4, y + 3, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 3, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 3, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 3, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 3, z + 3, Block4, s4, 3); world.setBlock(x + 4, y + 3, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 3, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 3, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 3, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 3, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 3, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 3, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 3, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 3, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 3, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 3, z + 5, Block4, s4, 3); world.setBlock(x + 9, y + 3, z + 5, Block2, 0, 3); - world.setBlock(x + 5, y + 3, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 3, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 3, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 3, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 3, z + 6, Block4, s2, 3); world.setBlock(x + 8, y + 3, z + 6, Block2, 0, 3); world.setBlock(x + 9, y + 3, z + 6, Block2, 0, 3); world.setBlock(x + 10, y + 3, z + 6, Block2, 0, 3); @@ -942,30 +947,30 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 3, z + 8, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 7, y + 3, z + 8, Block2, 0, 3); world.setBlock(x + 8, y + 3, z + 8, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 4, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 4, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 2, Block4, 3, 3); - world.setBlock(x + 4, y + 4, z + 3, Block4, 5, 3); + world.setBlock(x + 7, y + 4, z + 2, Block4, s3, 3); + world.setBlock(x + 4, y + 4, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 4, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 4, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 4, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 4, z + 3, Block4, s4, 3); world.setBlock(x + 4, y + 4, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 4, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 4, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 4, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 4, z + 4, Block2, 0, 3); world.setBlock(x + 9, y + 4, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 4, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 4, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 4, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 4, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 4, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 4, z + 5, Block4, s4, 3); world.setBlock(x + 9, y + 4, z + 5, Block2, 0, 3); world.setBlock(x + 10, y + 4, z + 5, Block2, 0, 3); - world.setBlock(x + 5, y + 4, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 4, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 4, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 4, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 4, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 4, z + 6, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 9, y + 4, z + 7, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 10, y + 4, z + 7, ModBlocks.fence_metal, 0, 3); @@ -973,14 +978,14 @@ public class Relay extends WorldGenerator world.setBlock(x + 7, y + 4, z + 8, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 8, y + 4, z + 8, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 9, y + 4, z + 8, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 5, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 5, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 5, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 5, z + 2, Block4, 3, 3); - world.setBlock(x + 4, y + 5, z + 3, Block4, 5, 3); + world.setBlock(x + 7, y + 5, z + 2, Block4, s3, 3); + world.setBlock(x + 4, y + 5, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 5, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 5, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 5, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 5, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 5, z + 3, Block4, s4, 3); world.setBlock(x + 9, y + 5, z + 3, Block2, 0, 3); world.setBlock(x + 4, y + 5, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 5, z + 4, Block2, 0, 3); @@ -989,31 +994,31 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 5, z + 4, Block2, 0, 3); world.setBlock(x + 9, y + 5, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 5, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 5, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 5, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 5, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 5, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 5, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 5, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 5, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 5, z + 5, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 5, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 5, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 5, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 5, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 5, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 5, z + 6, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 8, y + 6, z + 0, Block2, 0, 3); world.setBlock(x + 7, y + 6, z + 1, Block2, 0, 3); world.setBlock(x + 8, y + 6, z + 1, Block2, 0, 3); world.setBlock(x + 9, y + 6, z + 1, Block2, 0, 3); - world.setBlock(x + 5, y + 6, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 6, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 6, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 6, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 6, z + 2, Block4, s3, 3); world.setBlock(x + 8, y + 6, z + 2, Block2, 0, 3); world.setBlock(x + 9, y + 6, z + 2, Block2, 0, 3); world.setBlock(x + 10, y + 6, z + 2, Block2, 0, 3); - world.setBlock(x + 4, y + 6, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 6, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 6, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 6, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 6, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 6, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 6, z + 3, Block4, s4, 3); world.setBlock(x + 9, y + 6, z + 3, Block2, 0, 3); world.setBlock(x + 10, y + 6, z + 3, Block2, 0, 3); world.setBlock(x + 4, y + 6, z + 4, Block2, 0, 3); @@ -1022,15 +1027,15 @@ public class Relay extends WorldGenerator world.setBlock(x + 7, y + 6, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 6, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 6, z + 4, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 6, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 6, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 6, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 6, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 6, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 6, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 6, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 6, z + 5, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 6, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 6, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 6, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 6, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 6, z + 6, Block4, s2, 3); world.setBlock(x + 7, y + 7, z + 0, Block2, 0, 3); world.setBlock(x + 8, y + 7, z + 0, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 9, y + 7, z + 0, ModBlocks.fence_metal, 0, 3); @@ -1038,15 +1043,15 @@ public class Relay extends WorldGenerator world.setBlock(x + 7, y + 7, z + 1, Block2, 0, 3); world.setBlock(x + 9, y + 7, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 10, y + 7, z + 1, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 7, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 7, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 7, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 7, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 7, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 7, z + 2, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 7, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 7, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 7, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 7, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 7, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 7, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 7, z + 3, Block4, s4, 3); world.setBlock(x + 10, y + 7, z + 3, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 7, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 7, z + 4, Block2, 0, 3); @@ -1054,40 +1059,40 @@ public class Relay extends WorldGenerator world.setBlock(x + 7, y + 7, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 7, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 7, z + 4, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 7, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 7, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 7, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 7, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 7, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 7, z + 5, Block4, 4, 3); - world.setBlock(x + 5, y + 7, z + 6, Block4, 2, 3); + world.setBlock(x + 8, y + 7, z + 5, Block4, s4, 3); + world.setBlock(x + 5, y + 7, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 7, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 7, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 7, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 8, z + 0, Block2, 0, 3); world.setBlock(x + 7, y + 8, z + 0, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 8, y + 8, z + 0, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 5, y + 8, z + 1, Block2, 0, 3); world.setBlock(x + 6, y + 8, z + 1, Block2, 0, 3); - world.setBlock(x + 5, y + 8, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 8, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 8, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 8, z + 2, Block4, 3, 3); - world.setBlock(x + 4, y + 8, z + 3, Block4, 5, 3); + world.setBlock(x + 7, y + 8, z + 2, Block4, s3, 3); + world.setBlock(x + 4, y + 8, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 8, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 8, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 8, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 8, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 8, z + 3, Block4, s4, 3); world.setBlock(x + 4, y + 8, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 8, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 8, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 8, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 8, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 8, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 8, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 8, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 8, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 8, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 8, z + 5, Block4, 4, 3); - world.setBlock(x + 5, y + 8, z + 6, Block4, 2, 3); + world.setBlock(x + 8, y + 8, z + 5, Block4, s4, 3); + world.setBlock(x + 5, y + 8, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 8, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 8, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 8, z + 6, Block4, s2, 3); world.setBlock(x + 4, y + 9, z + 0, Block2, 0, 3); world.setBlock(x + 5, y + 9, z + 0, Block2, 0, 3); world.setBlock(x + 6, y + 9, z + 0, ModBlocks.fence_metal, 0, 3); @@ -1098,28 +1103,28 @@ public class Relay extends WorldGenerator world.setBlock(x + 2, y + 9, z + 2, Block2, 0, 3); world.setBlock(x + 3, y + 9, z + 2, Block2, 0, 3); world.setBlock(x + 4, y + 9, z + 2, Block2, 0, 3); - world.setBlock(x + 5, y + 9, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 9, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 9, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 9, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 9, z + 2, Block4, s3, 3); world.setBlock(x + 3, y + 9, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 9, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 9, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 9, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 9, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 9, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 9, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 9, z + 3, Block4, s4, 3); world.setBlock(x + 4, y + 9, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 9, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 9, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 9, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 9, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 9, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 9, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 9, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 9, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 9, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 9, z + 5, Block4, 4, 3); - world.setBlock(x + 5, y + 9, z + 6, Block4, 2, 3); + world.setBlock(x + 8, y + 9, z + 5, Block4, s4, 3); + world.setBlock(x + 5, y + 9, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 9, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 9, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 9, z + 6, Block4, s2, 3); world.setBlock(x + 3, y + 10, z + 0, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 10, z + 0, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 5, y + 10, z + 0, ModBlocks.fence_metal, 0, 3); @@ -1127,40 +1132,40 @@ public class Relay extends WorldGenerator world.setBlock(x + 2, y + 10, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 3, y + 10, z + 1, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 2, y + 10, z + 2, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 10, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 10, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 10, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 10, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 10, z + 2, Block4, s3, 3); world.setBlock(x + 2, y + 10, z + 3, Block2, 0, 3); world.setBlock(x + 3, y + 10, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 10, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 10, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 10, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 10, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 10, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 10, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 10, z + 3, Block4, s4, 3); world.setBlock(x + 3, y + 10, z + 4, Block2, 0, 3); world.setBlock(x + 4, y + 10, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 10, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 10, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 10, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 10, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 10, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 10, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 10, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 10, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 10, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 10, z + 5, Block4, 4, 3); - world.setBlock(x + 5, y + 10, z + 6, Block4, 2, 3); + world.setBlock(x + 8, y + 10, z + 5, Block4, s4, 3); + world.setBlock(x + 5, y + 10, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 10, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 10, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 10, z + 6, Block4, s2, 3); world.setBlock(x + 2, y + 11, z + 2, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 11, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 11, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 11, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 11, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 11, z + 2, Block4, s3, 3); world.setBlock(x + 2, y + 11, z + 3, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 11, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 11, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 11, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 11, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 11, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 11, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 11, z + 3, Block4, s4, 3); world.setBlock(x + 10, y + 11, z + 3, Block6, 0, 3); world.setBlock(x + 2, y + 11, z + 4, Block2, 0, 3); world.setBlock(x + 3, y + 11, z + 4, Block2, 0, 3); @@ -1171,25 +1176,25 @@ public class Relay extends WorldGenerator world.setBlock(x + 8, y + 11, z + 4, Block2, 0, 3); world.setBlock(x + 10, y + 11, z + 4, Block6, 0, 3); world.setBlock(x + 3, y + 11, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 11, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 11, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 11, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 11, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 11, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 11, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 11, z + 5, Block4, s4, 3); world.setBlock(x + 10, y + 11, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 11, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 11, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 11, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 11, z + 6, Block4, 2, 3); - world.setBlock(x + 5, y + 12, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 11, z + 6, Block4, s2, 3); + world.setBlock(x + 5, y + 12, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 12, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 12, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 12, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 12, z + 2, Block6, 0, 3); world.setBlock(x + 2, y + 12, z + 3, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 12, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 12, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 12, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 12, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 12, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 12, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 12, z + 3, Block4, s4, 3); world.setBlock(x + 9, y + 12, z + 3, Block6, 0, 3); world.setBlock(x + 2, y + 12, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 12, z + 4, Block2, 0, 3); @@ -1200,32 +1205,32 @@ public class Relay extends WorldGenerator world.setBlock(x + 9, y + 12, z + 4, Block6, 0, 3); world.setBlock(x + 2, y + 12, z + 5, Block2, 0, 3); world.setBlock(x + 3, y + 12, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 12, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 12, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 12, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 12, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 12, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 12, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 12, z + 5, Block4, s4, 3); world.setBlock(x + 9, y + 12, z + 5, Block6, 0, 3); world.setBlock(x + 2, y + 12, z + 6, Block2, 0, 3); world.setBlock(x + 3, y + 12, z + 6, Block2, 0, 3); world.setBlock(x + 4, y + 12, z + 6, Block2, 0, 3); - world.setBlock(x + 5, y + 12, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 12, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 12, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 12, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 12, z + 6, Block4, s2, 3); world.setBlock(x + 10, y + 12, z + 6, Block6, 0, 3); world.setBlock(x + 3, y + 12, z + 7, Block2, 0, 3); world.setBlock(x + 4, y + 12, z + 7, Block2, 0, 3); world.setBlock(x + 5, y + 12, z + 7, Block2, 0, 3); world.setBlock(x + 4, y + 12, z + 8, Block2, 0, 3); - world.setBlock(x + 5, y + 13, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 13, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 13, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 13, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 13, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 13, z + 2, Block6, 0, 3); - world.setBlock(x + 4, y + 13, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 13, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 13, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 13, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 13, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 13, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 13, z + 3, Block4, s4, 3); world.setBlock(x + 9, y + 13, z + 3, Block6, 0, 3); world.setBlock(x + 2, y + 13, z + 4, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 4, y + 13, z + 4, Block2, 0, 3); @@ -1237,16 +1242,16 @@ public class Relay extends WorldGenerator world.setBlock(x + 10, y + 13, z + 4, Block7, 0, 3); world.setBlock(x + 11, y + 13, z + 4, Block8, 0, 3); world.setBlock(x + 2, y + 13, z + 5, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 4, y + 13, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 13, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 13, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 13, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 13, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 13, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 13, z + 5, Block4, s4, 3); world.setBlock(x + 9, y + 13, z + 5, Block6, 0, 3); world.setBlock(x + 2, y + 13, z + 6, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 5, y + 13, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 13, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 13, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 13, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 13, z + 6, Block4, s2, 3); world.setBlock(x + 8, y + 13, z + 6, Block2, 0, 3); world.setBlock(x + 9, y + 13, z + 6, Block2, 0, 3); world.setBlock(x + 10, y + 13, z + 6, Block6, 0, 3); @@ -1263,15 +1268,15 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 13, z + 8, Block2, 0, 3); world.setBlock(x + 7, y + 13, z + 8, Block2, 0, 3); world.setBlock(x + 8, y + 13, z + 8, Block2, 0, 3); - world.setBlock(x + 5, y + 14, z + 2, Block4, 3, 3); + world.setBlock(x + 5, y + 14, z + 2, Block4, s3, 3); world.setBlock(x + 6, y + 14, z + 2, Block2, 0, 3); - world.setBlock(x + 7, y + 14, z + 2, Block4, 3, 3); + world.setBlock(x + 7, y + 14, z + 2, Block4, s3, 3); world.setBlock(x + 10, y + 14, z + 2, Block6, 0, 3); - world.setBlock(x + 4, y + 14, z + 3, Block4, 5, 3); + world.setBlock(x + 4, y + 14, z + 3, Block4, s5, 3); world.setBlock(x + 5, y + 14, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 14, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 14, z + 3, Block2, 0, 3); - world.setBlock(x + 8, y + 14, z + 3, Block4, 4, 3); + world.setBlock(x + 8, y + 14, z + 3, Block4, s4, 3); world.setBlock(x + 9, y + 14, z + 3, Block6, 0, 3); world.setBlock(x + 4, y + 14, z + 4, Block2, 0, 3); world.setBlock(x + 5, y + 14, z + 4, Block2, 0, 3); @@ -1279,15 +1284,15 @@ public class Relay extends WorldGenerator world.setBlock(x + 7, y + 14, z + 4, Block2, 0, 3); world.setBlock(x + 8, y + 14, z + 4, Block2, 0, 3); world.setBlock(x + 9, y + 14, z + 4, Block6, 0, 3); - world.setBlock(x + 4, y + 14, z + 5, Block4, 5, 3); + world.setBlock(x + 4, y + 14, z + 5, Block4, s5, 3); world.setBlock(x + 5, y + 14, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 14, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 14, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 14, z + 5, Block4, 4, 3); + world.setBlock(x + 8, y + 14, z + 5, Block4, s4, 3); world.setBlock(x + 9, y + 14, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 14, z + 6, Block4, 2, 3); + world.setBlock(x + 5, y + 14, z + 6, Block4, s2, 3); world.setBlock(x + 6, y + 14, z + 6, Block2, 0, 3); - world.setBlock(x + 7, y + 14, z + 6, Block4, 2, 3); + world.setBlock(x + 7, y + 14, z + 6, Block4, s2, 3); world.setBlock(x + 8, y + 14, z + 6, ModBlocks.crate_iron, 0, 3); world.setBlockMetadataWithNotify(x + 8, y + 14, z + 6, 3, 3); WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.antenna, (TileEntityCrateIron)world.getTileEntity(x + 8, y + 14, z + 6), 8); @@ -1337,109 +1342,109 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 16, z + 5, Block2, 0, 3); world.setBlock(x + 7, y + 16, z + 5, Block2, 0, 3); world.setBlock(x + 6, y + 16, z + 6, Block2, 0, 3); - world.setBlock(x + 5, y + 17, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 17, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 17, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 17, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 17, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 17, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 17, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 17, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 17, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 17, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 17, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 17, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 18, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 17, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 18, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 18, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 18, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 18, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 18, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 18, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 18, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 18, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 18, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 18, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 18, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 19, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 18, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 19, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 19, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 19, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 19, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 19, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 19, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 19, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 19, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 19, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 19, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 19, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 20, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 19, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 20, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 20, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 20, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 20, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 20, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 20, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 20, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 20, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 20, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 20, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 20, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 21, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 20, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 21, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 21, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 21, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 21, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 21, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 21, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 21, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 21, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 21, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 21, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 21, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 22, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 21, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 22, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 22, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 22, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 22, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 22, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 22, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 22, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 22, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 22, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 22, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 22, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 23, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 22, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 23, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 23, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 23, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 23, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 23, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 23, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 23, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 23, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 23, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 23, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 23, z + 5, Block4, 2, 3); - world.setBlock(x + 5, y + 24, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 23, z + 5, Block4, s2, 3); + world.setBlock(x + 5, y + 24, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 24, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 24, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 24, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 24, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 24, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 24, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 24, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 24, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 24, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 24, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 24, z + 5, Block4, s2, 3); world.setBlock(x + 3, y + 25, z + 3, Block6, 0, 3); - world.setBlock(x + 5, y + 25, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 25, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 25, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 25, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 25, z + 3, Block4, s3, 3); world.setBlock(x + 3, y + 25, z + 4, Block6, 0, 3); world.setBlock(x + 5, y + 25, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 25, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 25, z + 4, Block2, 0, 3); world.setBlock(x + 3, y + 25, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 25, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 25, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 25, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 25, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 25, z + 5, Block4, s2, 3); world.setBlock(x + 3, y + 26, z + 2, Block6, 0, 3); world.setBlock(x + 4, y + 26, z + 3, Block6, 0, 3); - world.setBlock(x + 5, y + 26, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 26, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 26, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 26, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 26, z + 3, Block4, s3, 3); world.setBlock(x + 4, y + 26, z + 4, Block6, 0, 3); world.setBlock(x + 5, y + 26, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 26, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 26, z + 4, Block2, 0, 3); world.setBlock(x + 4, y + 26, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 26, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 26, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 26, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 26, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 26, z + 5, Block4, s2, 3); world.setBlock(x + 3, y + 26, z + 6, Block6, 0, 3); world.setBlock(x + 3, y + 27, z + 2, Block6, 0, 3); world.setBlock(x + 4, y + 27, z + 3, Block6, 0, 3); - world.setBlock(x + 5, y + 27, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 27, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 27, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 27, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 27, z + 3, Block4, s3, 3); world.setBlock(x + 2, y + 27, z + 4, Block8, 0, 3); world.setBlock(x + 3, y + 27, z + 4, Block7, 0, 3); world.setBlock(x + 4, y + 27, z + 4, Block7, 0, 3); @@ -1447,62 +1452,62 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 27, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 27, z + 4, Block2, 0, 3); world.setBlock(x + 4, y + 27, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 27, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 27, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 27, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 27, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 27, z + 5, Block4, s2, 3); world.setBlock(x + 3, y + 27, z + 6, Block6, 0, 3); world.setBlock(x + 3, y + 28, z + 2, Block6, 0, 3); world.setBlock(x + 4, y + 28, z + 3, Block6, 0, 3); - world.setBlock(x + 5, y + 28, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 28, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 28, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 28, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 28, z + 3, Block4, s3, 3); world.setBlock(x + 4, y + 28, z + 4, Block6, 0, 3); world.setBlock(x + 5, y + 28, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 28, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 28, z + 4, Block2, 0, 3); world.setBlock(x + 4, y + 28, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 28, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 28, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 28, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 28, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 28, z + 5, Block4, s2, 3); world.setBlock(x + 3, y + 28, z + 6, Block6, 0, 3); world.setBlock(x + 3, y + 29, z + 3, Block6, 0, 3); - world.setBlock(x + 5, y + 29, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 29, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 29, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 29, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 29, z + 3, Block4, s3, 3); world.setBlock(x + 3, y + 29, z + 4, Block6, 0, 3); world.setBlock(x + 5, y + 29, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 29, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 29, z + 4, Block2, 0, 3); world.setBlock(x + 3, y + 29, z + 5, Block6, 0, 3); - world.setBlock(x + 5, y + 29, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 29, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 29, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 29, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 29, z + 5, Block4, s2, 3); world.setBlock(x + 5, y + 30, z + 1, Block6, 0, 3); world.setBlock(x + 6, y + 30, z + 1, Block6, 0, 3); world.setBlock(x + 7, y + 30, z + 1, Block6, 0, 3); - world.setBlock(x + 5, y + 30, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 30, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 30, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 30, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 30, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 30, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 30, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 30, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 30, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 30, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 30, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 30, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 30, z + 5, Block4, s2, 3); world.setBlock(x + 4, y + 31, z + 1, Block6, 0, 3); world.setBlock(x + 8, y + 31, z + 1, Block6, 0, 3); world.setBlock(x + 5, y + 31, z + 2, Block6, 0, 3); world.setBlock(x + 6, y + 31, z + 2, Block6, 0, 3); world.setBlock(x + 7, y + 31, z + 2, Block6, 0, 3); - world.setBlock(x + 5, y + 31, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 31, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 31, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 31, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 31, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 31, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 31, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 31, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 31, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 31, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 31, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 31, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 31, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 32, z + 0, Block8, 0, 3); world.setBlock(x + 4, y + 32, z + 1, Block6, 0, 3); world.setBlock(x + 6, y + 32, z + 1, Block7, 0, 3); @@ -1512,41 +1517,41 @@ public class Relay extends WorldGenerator world.setBlockMetadataWithNotify(x + 6, y + 32, z + 2, 2, 3); WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.expensive, (TileEntityCrateIron)world.getTileEntity(x + 6, y + 32, z + 2), 8); world.setBlock(x + 7, y + 32, z + 2, Block6, 0, 3); - world.setBlock(x + 5, y + 32, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 32, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 32, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 32, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 32, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 32, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 32, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 32, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 32, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 32, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 32, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 32, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 32, z + 5, Block4, s2, 3); world.setBlock(x + 4, y + 33, z + 1, Block6, 0, 3); world.setBlock(x + 8, y + 33, z + 1, Block6, 0, 3); world.setBlock(x + 5, y + 33, z + 2, Block6, 0, 3); world.setBlock(x + 6, y + 33, z + 2, Block6, 0, 3); world.setBlock(x + 7, y + 33, z + 2, Block6, 0, 3); - world.setBlock(x + 5, y + 33, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 33, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 33, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 33, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 33, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 33, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 33, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 33, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 33, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 33, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 33, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 33, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 33, z + 5, Block4, s2, 3); world.setBlock(x + 5, y + 34, z + 1, Block6, 0, 3); world.setBlock(x + 6, y + 34, z + 1, Block6, 0, 3); world.setBlock(x + 7, y + 34, z + 1, Block6, 0, 3); - world.setBlock(x + 5, y + 34, z + 3, Block4, 3, 3); + world.setBlock(x + 5, y + 34, z + 3, Block4, s3, 3); world.setBlock(x + 6, y + 34, z + 3, Block2, 0, 3); - world.setBlock(x + 7, y + 34, z + 3, Block4, 3, 3); + world.setBlock(x + 7, y + 34, z + 3, Block4, s3, 3); world.setBlock(x + 5, y + 34, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 34, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 34, z + 4, Block2, 0, 3); - world.setBlock(x + 5, y + 34, z + 5, Block4, 2, 3); + world.setBlock(x + 5, y + 34, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 34, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 34, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 34, z + 5, Block4, s2, 3); world.setBlock(x + 5, y + 35, z + 3, Block2, 0, 3); world.setBlock(x + 6, y + 35, z + 3, Block2, 0, 3); world.setBlock(x + 7, y + 35, z + 3, Block2, 0, 3); @@ -1561,47 +1566,47 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 36, z + 4, ModBlocks.red_wire_coated, 0, 3); world.setBlock(x + 7, y + 36, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 36, z + 5, Block2, 0, 3); - world.setBlock(x + 6, y + 37, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 37, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 37, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 37, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 37, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 37, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 37, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 38, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 38, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 37, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 37, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 38, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 38, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 38, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 38, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 38, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 39, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 39, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 38, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 38, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 39, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 39, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 39, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 39, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 39, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 40, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 40, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 39, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 39, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 40, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 40, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 40, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 40, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 40, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 41, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 41, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 40, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 40, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 41, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 41, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 41, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 41, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 41, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 41, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 41, z + 5, Block4, s2, 3); world.setBlock(x + 5, y + 41, z + 6, Block6, 0, 3); world.setBlock(x + 6, y + 41, z + 6, Block6, 0, 3); world.setBlock(x + 7, y + 41, z + 6, Block6, 0, 3); - world.setBlock(x + 6, y + 42, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 42, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 42, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 42, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 42, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 42, z + 4, Block4, 4, 3); + world.setBlock(x + 7, y + 42, z + 4, Block4, s4, 3); world.setBlock(x + 5, y + 42, z + 5, Block6, 0, 3); world.setBlock(x + 6, y + 42, z + 5, Block6, 0, 3); world.setBlock(x + 7, y + 42, z + 5, Block6, 0, 3); world.setBlock(x + 4, y + 42, z + 6, Block6, 0, 3); world.setBlock(x + 8, y + 42, z + 6, Block6, 0, 3); - world.setBlock(x + 6, y + 43, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 43, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 43, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 43, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 43, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 43, z + 4, Block4, 4, 3); + world.setBlock(x + 7, y + 43, z + 4, Block4, s4, 3); world.setBlock(x + 5, y + 43, z + 5, Block6, 0, 3); world.setBlock(x + 6, y + 43, z + 5, Block7, 0, 3); world.setBlock(x + 7, y + 43, z + 5, Block6, 0, 3); @@ -1609,17 +1614,17 @@ public class Relay extends WorldGenerator world.setBlock(x + 6, y + 43, z + 6, Block7, 0, 3); world.setBlock(x + 8, y + 43, z + 6, Block6, 0, 3); world.setBlock(x + 6, y + 43, z + 7, Block8, 0, 3); - world.setBlock(x + 6, y + 44, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 44, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 44, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 44, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 44, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 44, z + 4, Block4, 4, 3); + world.setBlock(x + 7, y + 44, z + 4, Block4, s4, 3); world.setBlock(x + 5, y + 44, z + 5, Block6, 0, 3); world.setBlock(x + 6, y + 44, z + 5, Block6, 0, 3); world.setBlock(x + 7, y + 44, z + 5, Block6, 0, 3); world.setBlock(x + 4, y + 44, z + 6, Block6, 0, 3); world.setBlock(x + 8, y + 44, z + 6, Block6, 0, 3); - world.setBlock(x + 6, y + 45, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 45, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 45, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 45, z + 4, Block4, s5, 3); generate_r02(world, rand, x, y, z); return true; @@ -1629,31 +1634,31 @@ public class Relay extends WorldGenerator { world.setBlock(x + 6, y + 45, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 45, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 45, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 45, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 45, z + 5, Block4, s2, 3); world.setBlock(x + 5, y + 45, z + 6, Block6, 0, 3); world.setBlock(x + 6, y + 45, z + 6, Block6, 0, 3); world.setBlock(x + 7, y + 45, z + 6, Block6, 0, 3); - world.setBlock(x + 6, y + 46, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 46, z + 4, Block4, 5, 3); + world.setBlock(x + 6, y + 46, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 46, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 46, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 46, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 46, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 47, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 47, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 46, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 46, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 47, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 47, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 47, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 47, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 47, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 48, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 48, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 47, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 47, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 48, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 48, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 48, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 48, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 48, z + 5, Block4, 2, 3); - world.setBlock(x + 6, y + 49, z + 3, Block4, 3, 3); - world.setBlock(x + 5, y + 49, z + 4, Block4, 5, 3); + world.setBlock(x + 7, y + 48, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 48, z + 5, Block4, s2, 3); + world.setBlock(x + 6, y + 49, z + 3, Block4, s3, 3); + world.setBlock(x + 5, y + 49, z + 4, Block4, s5, 3); world.setBlock(x + 6, y + 49, z + 4, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 7, y + 49, z + 4, Block4, 4, 3); - world.setBlock(x + 6, y + 49, z + 5, Block4, 2, 3); + world.setBlock(x + 7, y + 49, z + 4, Block4, s4, 3); + world.setBlock(x + 6, y + 49, z + 5, Block4, s2, 3); world.setBlock(x + 6, y + 50, z + 3, Block2, 0, 3); world.setBlock(x + 5, y + 50, z + 4, Block2, 0, 3); world.setBlock(x + 6, y + 50, z + 4, ModBlocks.red_wire_coated, 0, 3); diff --git a/src/main/java/com/hbm/world/dungeon/Satellite.java b/src/main/java/com/hbm/world/dungeon/Satellite.java index 784579797..33c4b9273 100644 --- a/src/main/java/com/hbm/world/dungeon/Satellite.java +++ b/src/main/java/com/hbm/world/dungeon/Satellite.java @@ -8,7 +8,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.lib.HbmChestContents; import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; import com.hbm.util.LootGenerator; import net.minecraft.block.Block; @@ -28,6 +27,11 @@ public class Satellite extends WorldGenerator Block dTape = ModBlocks.tape_recorder; Block Block7 = ModBlocks.deco_tungsten; + int s2 = 0; + int s3 = 0; + int s4 = 8; + int s5 = 8; + protected Block[] GetValidSpawnBlocks() { return new Block[] { Blocks.grass, Blocks.dirt, Blocks.stone, Blocks.sand, Blocks.sandstone }; } @@ -296,8 +300,8 @@ public class Satellite extends WorldGenerator world.setBlock(x + 18, y + -1, z + 30, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 19, y + -1, z + 30, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 20, y + -1, z + 30, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 5, y + 0, z + 8, Block3, 3, 3); - world.setBlock(x + 13, y + 0, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 0, z + 8, Block3, s3, 3); + world.setBlock(x + 13, y + 0, z + 8, Block3, s3, 3); world.setBlock(x + 19, y + 0, z + 8, dSteel, 0, 3); world.setBlock(x + 20, y + 0, z + 8, dSteel, 0, 3); world.setBlock(x + 21, y + 0, z + 8, ModBlocks.fence_metal, 0, 3); @@ -327,11 +331,11 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 0, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 0, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 0, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 0, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 0, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 0, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 0, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 1, z + 8, Block3, 3, 3); - world.setBlock(x + 13, y + 1, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 1, z + 8, Block3, s3, 3); + world.setBlock(x + 13, y + 1, z + 8, Block3, s3, 3); world.setBlock(x + 17, y + 1, z + 8, dSteel, 0, 3); world.setBlock(x + 18, y + 1, z + 8, dSteel, 0, 3); world.setBlock(x + 19, y + 1, z + 8, ModBlocks.fence_metal, 0, 3); @@ -362,11 +366,11 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 1, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 1, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 1, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 1, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 1, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 1, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 1, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 2, z + 8, Block3, 3, 3); - world.setBlock(x + 13, y + 2, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 2, z + 8, Block3, s3, 3); + world.setBlock(x + 13, y + 2, z + 8, Block3, s3, 3); world.setBlock(x + 15, y + 2, z + 8, dSteel, 0, 3); world.setBlock(x + 16, y + 2, z + 8, dSteel, 0, 3); world.setBlock(x + 17, y + 2, z + 8, ModBlocks.fence_metal, 0, 3); @@ -397,10 +401,10 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 2, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 2, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 2, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 2, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 2, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 2, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 2, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 3, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 3, z + 8, Block3, s3, 3); world.setBlock(x + 13, y + 3, z + 8, dSteel, 0, 3); world.setBlock(x + 14, y + 3, z + 8, dSteel, 0, 3); world.setBlock(x + 15, y + 3, z + 8, ModBlocks.fence_metal, 0, 3); @@ -431,10 +435,10 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 3, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 3, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 3, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 3, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 3, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 3, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 3, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 4, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 4, z + 8, Block3, s3, 3); world.setBlock(x + 11, y + 4, z + 8, dSteel, 0, 3); world.setBlock(x + 12, y + 4, z + 8, dSteel, 0, 3); world.setBlock(x + 13, y + 4, z + 8, ModBlocks.fence_metal, 0, 3); @@ -465,10 +469,10 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 4, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 4, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 4, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 4, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 4, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 4, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 4, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 5, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 5, z + 8, Block3, s3, 3); world.setBlock(x + 9, y + 5, z + 8, dSteel, 0, 3); world.setBlock(x + 10, y + 5, z + 8, dSteel, 0, 3); world.setBlock(x + 11, y + 5, z + 8, ModBlocks.fence_metal, 0, 3); @@ -499,10 +503,10 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 5, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 5, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 5, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 5, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 5, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 5, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 5, z + 29, Block4, 0, 3); - world.setBlock(x + 5, y + 6, z + 8, Block3, 3, 3); + world.setBlock(x + 5, y + 6, z + 8, Block3, s3, 3); world.setBlock(x + 7, y + 6, z + 8, dSteel, 0, 3); world.setBlock(x + 8, y + 6, z + 8, dSteel, 0, 3); world.setBlock(x + 9, y + 6, z + 8, ModBlocks.fence_metal, 0, 3); @@ -533,7 +537,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 20, y + 6, z + 14, Library.getRandomConcrete(), 0, 3); world.setBlock(x + 7, y + 6, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 6, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 6, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 6, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 6, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 6, z + 29, Block4, 0, 3); world.setBlock(x + 5, y + 7, z + 8, dSteel, 0, 3); @@ -580,7 +584,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 6, y + 7, z + 16, dSteel, 0, 3); world.setBlock(x + 7, y + 7, z + 17, Block4, 0, 3); world.setBlock(x + 19, y + 7, z + 17, Block4, 0, 3); - world.setBlock(x + 5, y + 7, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 7, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 7, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 7, z + 29, Block4, 0, 3); world.setBlock(x + 5, y + 8, z + 8, ModBlocks.fence_metal, 0, 3); @@ -621,7 +625,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 19, y + 8, z + 17, Block4, 0, 3); world.setBlock(x + 5, y + 8, z + 18, dSteel, 0, 3); world.setBlock(x + 6, y + 8, z + 18, dSteel, 0, 3); - world.setBlock(x + 5, y + 8, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 8, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 8, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 8, z + 29, Block4, 0, 3); world.setBlock(x + 18, y + 9, z + 10, Library.getRandomConcrete(), 0, 3); @@ -654,7 +658,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 6, y + 9, z + 19, dSteel, 0, 3); world.setBlock(x + 5, y + 9, z + 20, dSteel, 0, 3); world.setBlock(x + 6, y + 9, z + 20, dSteel, 0, 3); - world.setBlock(x + 5, y + 9, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 9, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 9, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 9, z + 29, Block4, 0, 3); world.setBlock(x + 18, y + 10, z + 10, Library.getRandomConcrete(), 0, 3); @@ -687,7 +691,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 6, y + 10, z + 21, dSteel, 0, 3); world.setBlock(x + 5, y + 10, z + 22, dSteel, 0, 3); world.setBlock(x + 6, y + 10, z + 22, dSteel, 0, 3); - world.setBlock(x + 5, y + 10, z + 23, Block3, 5, 3); + world.setBlock(x + 5, y + 10, z + 23, Block3, s5, 3); world.setBlock(x + 7, y + 10, z + 29, Block4, 0, 3); world.setBlock(x + 19, y + 10, z + 29, Block4, 0, 3); world.setBlock(x + 18, y + 11, z + 10, Library.getRandomConcrete(), 0, 3); @@ -1067,7 +1071,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 14, y + 15, z + 23, dTape, 4, 3); world.setBlock(x + 19, y + 15, z + 23, dSteel, 0, 3); world.setBlock(x + 7, y + 15, z + 24, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 14, y + 15, z + 24, Block3, 5, 3); + world.setBlock(x + 14, y + 15, z + 24, Block3, s5, 3); world.setBlock(x + 19, y + 15, z + 24, dSteel, 0, 3); world.setBlock(x + 19, y + 15, z + 25, dSteel, 0, 3); world.setBlock(x + 19, y + 15, z + 26, dSteel, 0, 3); @@ -1136,7 +1140,7 @@ public class Satellite extends WorldGenerator world.setBlock(x + 7, y + 16, z + 23, ModBlocks.fence_metal, 0, 3); world.setBlock(x + 19, y + 16, z + 23, dSteel, 0, 3); world.setBlock(x + 7, y + 16, z + 24, ModBlocks.fence_metal, 0, 3); - world.setBlock(x + 14, y + 16, z + 24, Block3, 5, 3); + world.setBlock(x + 14, y + 16, z + 24, Block3, s5, 3); world.setBlock(x + 19, y + 16, z + 24, dSteel, 0, 3); world.setBlock(x + 19, y + 16, z + 25, dSteel, 0, 3); world.setBlock(x + 19, y + 16, z + 26, dSteel, 0, 3); diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java new file mode 100644 index 000000000..0cf979b5d --- /dev/null +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -0,0 +1,44 @@ +package com.hbm.world.feature; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.inventory.FluidStack; + +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class BedrockOre { + + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier) { + + for(int ix = x - 1; ix <= x + 1; ix++) { + for(int iz = z - 1; iz <= z + 1; iz++) { + + if((ix == x && iz == z) || world.rand.nextBoolean()) { + + world.setBlock(ix, 0, iz, ModBlocks.ore_bedrock); + TileEntityBedrockOre ore = (TileEntityBedrockOre) world.getTileEntity(ix, 0, iz); + ore.resource = stack; + ore.color = color; + ore.shape = world.rand.nextInt(10); + ore.acidRequirement = acid; + ore.tier = tier; + world.markBlockForUpdate(ix, 0, iz); + world.markTileEntityChunkModified(ix, 0, iz, ore); + } + } + } + + for(int ix = x - 3; ix <= x + 3; ix++) { + for(int iz = z - 3; iz <= z + 3; iz++) { + + for(int iy = 1; iy < 7; iy++) { + if(iy < 3 || world.getBlock(ix, iy, iz) == Blocks.bedrock) { + world.setBlock(ix, iy, iz, ModBlocks.stone_depth); + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index f22c451ab..f8a739378 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -3,10 +3,15 @@ package com.hbm.world.generator; import java.util.List; import java.util.Random; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.world.feature.BedrockOre; import net.minecraft.block.Block; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenFlowers; @@ -88,6 +93,24 @@ public class DungeonToolbox { (new WorldGenMinable(ore, meta, amount, target)).generate(world, rand, x, y, z); } } + + public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier, int chance) { + if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); + } + + public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier, int chance) { + if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, stack, tier); + } + + public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier) { + generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); + } + + public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier) { + int randPosX = chunkX + rand.nextInt(16) + 8; + int randPosZ = chunkZ + rand.nextInt(16) + 8; + BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.ore_bedrock, 1, ore.ordinal()), stack, ore.color, tier); + } private static WorldGenFlowers genFlowers = new WorldGenFlowers(null); public static void generateFlowers(World world, Random rand, int chunkX, int chunkZ, Block flower, int meta) { diff --git a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java b/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java index 5219e255f..4bb3ea17b 100644 --- a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java +++ b/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java @@ -22,7 +22,7 @@ import net.minecraft.world.gen.structure.StructureStart; public class MapGenNTMFeatures extends MapGenStructure { //BiomeDictionary could be /very/ useful, since it automatically sorts *all* biomes into predefined categories - private static List biomelist = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.ocean, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.deepOcean}); + private static List biomelist; /** Maximum distance between structures */ private int maxDistanceBetweenScatteredFeatures; /** Minimum distance between structures */ @@ -64,6 +64,11 @@ public class MapGenNTMFeatures extends MapGenStructure { if(k == i1 && l == j1) { BiomeGenBase biomegenbase = this.worldObj.getWorldChunkManager().getBiomeGenAt(k * 16 + 8, l * 16 + 8); + + if(biomelist == null) { + biomelist = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.ocean, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.deepOcean}); + } + Iterator iterator = biomelist.iterator(); while(iterator.hasNext()) { diff --git a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java b/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java index 05b02c604..958313bd7 100644 --- a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java +++ b/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java @@ -247,8 +247,8 @@ public class CivilianFeatures { this.hasPlacedLoot[0] = true; } this.fillWithBlocks(world, box, 4, 1, sizeZ - 1, 5, 1, sizeZ - 1, ModBlocks.crate, Blocks.air, false); - this.fillWithMetadataBlocks(world, box, 5, 1, 4, 5, 3, 4, ModBlocks.steel_scaffold, eastMeta, Blocks.air, 0, false); - this.fillWithMetadataBlocks(world, box, 5, 1, 6, 5, 3, 6, ModBlocks.steel_scaffold, eastMeta, Blocks.air, 0, false); + this.fillWithMetadataBlocks(world, box, 5, 1, 4, 5, 3, 4, ModBlocks.steel_scaffold, eastMeta < 4 ? 0 : 8, Blocks.air, 0, false); + this.fillWithMetadataBlocks(world, box, 5, 1, 6, 5, 3, 6, ModBlocks.steel_scaffold, eastMeta < 4 ? 0 : 8, Blocks.air, 0, false); this.placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 5, 1, 5, box); this.placeBlockAtCurrentPosition(world, ModBlocks.crate_weapon, 0, 5, 2, 5, box); @@ -377,7 +377,7 @@ public class CivilianFeatures { ItemDoor.placeDoorBlock(world, this.getXWithOffset(3, sizeZ - 1), this.getYWithOffset(1), this.getZWithOffset(3, sizeZ - 1), doorMeta, ModBlocks.door_office); int northDecoMeta = this.getDecoMeta(3); - this.fillWithMetadataBlocks(world, box, 5, sizeY - 1, 1, sizeX - 1, sizeY - 1, 1, ModBlocks.steel_scaffold, westDecoMeta, Blocks.air, 0, false); + this.fillWithMetadataBlocks(world, box, 5, sizeY - 1, 1, sizeX - 1, sizeY - 1, 1, ModBlocks.steel_scaffold, westDecoMeta < 4 ? 0 : 8, Blocks.air, 0, false); this.fillWithMetadataBlocks(world, box, 5, sizeY - 1, 2, sizeX - 1, sizeY - 1, 2, ModBlocks.steel_wall, northDecoMeta, Blocks.air, 0, false); this.placeBlockAtCurrentPosition(world, ModBlocks.machine_electric_furnace_off, northDecoMeta, 5, 1, 1, box); this.placeBlockAtCurrentPosition(world, ModBlocks.machine_microwave, northDecoMeta, 5, 2, 1, box); @@ -695,7 +695,7 @@ public class CivilianFeatures { this.fillWithBlocks(world, box, 5, 1, 1, 5, 1, 2, ModBlocks.deco_beryllium, Blocks.air, false); this.fillWithBlocks(world, box, 6, 1, 1, 6, 3, 1, ModBlocks.deco_red_copper, Blocks.air, false); this.fillWithBlocks(world, box, 3, 1, 4, 4, 1, 4, ModBlocks.concrete_super_broken, Blocks.air, false); - this.fillWithMetadataBlocks(world, box, 6, 1, 4, 6, 3, 4, ModBlocks.steel_scaffold, eastMeta, Blocks.air, 0, false); + this.fillWithMetadataBlocks(world, box, 6, 1, 4, 6, 3, 4, ModBlocks.steel_scaffold, eastMeta < 4 ? 0 : 8, Blocks.air, 0, false); this.fillWithMetadataBlocks(world, box, 6, 1, 5, 6, 1, 7, ModBlocks.steel_grate, 7, Blocks.air, 0, false); this.placeBlockAtCurrentPosition(world, ModBlocks.radiorec, eastMeta, 6, 2, sizeZ - 1, box); this.fillWithMetadataBlocks(world, box, 2, 1, sizeZ - 1, 3, 1, sizeZ - 1, ModBlocks.machine_electric_furnace_off, southMeta, Blocks.air, 0, false); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 072065e57..659be366e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -324,6 +324,7 @@ container.machineFEL=FEL container.machineITER=Kernfusionsreaktor container.machineLargeTurbine=Industrielle Dampfturbine container.machineLiquefactor=Verflüssiger +container.machineMixer=Industrieller Mixer container.machineRefinery=Ölraffinerie container.machineSelenium=Hochleistungs-Sternmotor container.machineShredder=Brecher @@ -395,6 +396,7 @@ container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell container.turretRichard=Richard +container.turretSentry=Brown container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Abklingbecken-Trommel @@ -787,6 +789,7 @@ item.ammo_12gauge.name=Kaliber 12 Schrot item.ammo_12gauge_du.name=Kaliber 12 Schrot (Uranbeschichtung) item.ammo_12gauge_incendiary.name=Kaliber 12 Schrot (Brand) item.ammo_12gauge_marauder.name=Kaliber 12 Taktische Anti-Marauder Schrotpatrone +item.ammo_12gauge_percussion.name=Kaliber 12 Sprengkapsel item.ammo_12gauge_shrapnel.name=Kaliber 12 Schrot (Schrapnell) item.ammo_12gauge_sleek.name=Kaliber 12 Schrot (IF-F&E) item.ammo_20gauge.name=Kaliber 20 Schrot @@ -813,6 +816,9 @@ item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon) item.ammo_44_rocket.name=.44 Magnum Rakete item.ammo_44_silver.name=.44 Magnum Patrone (Gebäude) item.ammo_44_star.name=.44 Magnum Patrone (Sternenmetall) +item.ammo_45.name=.45 ACP Patrone +item.ammo_45_ap.name=.45 ACP Patrone (AP) +item.ammo_45_du.name=.45 ACP Patrone (DU) item.ammo_4gauge.name=Kaliber 20 Schrot item.ammo_4gauge_balefire.name=23mm Balefire-Granate item.ammo_4gauge_canister.name=23mm Rakete (Katusche) @@ -864,6 +870,12 @@ item.ammo_5mm_chlorophyte.name=5mm Patrone (Grünalgen) item.ammo_5mm_du.name=5mm Patrone (DU) item.ammo_5mm_explosive.name=5mm Patrone (Explosiv) item.ammo_5mm_star.name=5mm Patrone (Sternenmetall) +item.ammo_762.name=7.62mm Patrone +item.ammo_762_ap.name=7.62mm Patrone (AP) +item.ammo_762_du.name=7.62mm Patrone (DU) +item.ammo_762_k.name=7.62mm K-Patrone +item.ammo_762_phosphorus.name=7.62mm Patrone (WP) +item.ammo_762_tracer.name=7.62mm Patrone (Leuchtspur) item.ammo_75bolt.name=30er .75 Bolzenmagazin item.ammo_75bolt_incendiary.name=30er .75 Bolzenmagazin (Brand) item.ammo_75bolt_he.name=30er .75 Bolzenmagazin (Explosiv) @@ -911,6 +923,9 @@ item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=M28 gelenkte Artillerierakete item.ammo_himars_single.name=M39A1 gelenkte Artillerierakete +item.ammo_luna.name=Lunatic Sniper Sabot +item.ammo_luna_explosive.name=Lunatic Sniper Explosivgeschoss +item.ammo_luna_incendiary.name=Lunatic Sniper Brandgeschoss item.ammo_mirv.name=Mini-MIRV item.ammo_mirv_high.name=Mini-MIRV (Stark) item.ammo_mirv_low.name=Mini-MIRV (Schwach) @@ -987,7 +1002,9 @@ item.asbestos_helmet.name=Hitzeschutzhelm item.asbestos_legs.name=Hitzeschutzhose item.asbestos_plate.name=Hitzeschutzbrustplatte item.ashglasses.name=Aschegläser +item.assembly_45.name=.45 ACP Patronensatz item.assembly_556.name=5.56mm Patronensatz +item.assembly_762.name=7.62mm Patronensatz item.assembly_actionexpress.name=.50 AE Patronensatz item.assembly_calamity.name=.50 BMG Patronensatz item.assembly_desh.name=Desh-Patronensatz @@ -995,6 +1012,7 @@ item.assembly_gold.name=Goldpatronensatz item.assembly_iron.name=Eisenpatronensatz item.assembly_lacunae.name=5mm Patronensatz item.assembly_lead.name=Glaspatronensatz +item.assembly_luna.name=Lunatic Sniper Patronensatz item.assembly_nightmare.name=Nightmare-Patronensatz item.assembly_nopip.name=.44er Patronensatz item.assembly_nuke.name=Miniatombombengehäuse @@ -1281,6 +1299,7 @@ item.centrifuge_element.name=Zentrifugenelement item.centrifuge_tower.name=Zentrifugenturm item.chainsaw.name=Kettensäge item.cheese.name=Käse +item.cheese_quesadilla.name=Käse-Quesadilla item.chemistry_set.name=Laborgläser item.chemistry_set_boron.name=Laborgläser (Borglas) item.chemistry_template.name=Chemievorlage: @@ -1521,6 +1540,12 @@ item.dosimeter.name=Dosimeter item.drax.name=Terra-Bohrer item.drax_mk2.name=Gehärteter Terra-Bohrer item.drax_mk3.name=Schrabidischer Terra-Bohrer +item.drillbit_desh.name=Desh-Bohrspitze +item.drillbit_desh_diamond.name=Desh-Bohrspitze (Diamantbeschichtung) +item.drillbit_hss.name=Schnellarbeitsstahl-Bohrspitze +item.drillbit_hss_diamond.name=Schnellarbeitsstahl-Bohrspitze (Diamantbeschichtung) +item.drillbit_steel.name=Stahl-Bohrspitze +item.drillbit_steel_diamond.name=Stahl-Bohrspitze (Diamantbeschichtung) item.drill_titanium.name=Titanbohrer item.ducttape.name=Klebeband item.dust.name=Staub @@ -1751,7 +1776,7 @@ item.gun_moist_nugget.name=Mosin-Nagant item.gun_mp.name=Maschinengewehr des Pazifisten item.gun_mp40.name=Maschinenpistole item.gun_mp40_ammo.name=SMG-Patrone (LEGACY) -item.gun_mp_ammo.name=Kleine treibmittellose MG-Patrone +item.gun_pm_ammo.name=Kleine treibmittellose MG-Patrone item.gun_mymy.name=Nietes item.gun_osipr.name=Standartausrüstung für Sicherheitskräfte item.gun_osipr_ammo.name=Dunkler Energiepuls-Plug @@ -2323,6 +2348,20 @@ item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer item.oil_tar.wood.name=Holzteer +item.ore.asbestos=Asbest +item.ore.borax=Borax +item.ore.copper=Kupfer +item.ore.gold=Gold +item.ore.iron=Eisen +item.ore.niobium=Niob +item.ore.titanium=Titan +item.ore.tungsten=Wolfram +item.ore_bedrock.name=Bedrock-%serz +item.ore_centrifuged.name=Zentrifugiertes %serz +item.ore_cleaned.name=Gereinigtes %serz +item.ore_enriched.name=Reiches %serz +item.ore_purified.name=Pures %serz +item.ore_separated.name=Separiertes %serz item.overfuse.name=Singularitätsschraubenzieher item.oxy_mask.name=Sauerstoffmaske item.paa_boots.name=PaA-"olle Latschen" @@ -2839,6 +2878,7 @@ item.shimmer_head.name=Schwerer Hammerkopf item.shimmer_sledge.name=Shimmer Sledge item.singularity.name=Singularität item.singularity_counter_resonant.name=Eingefasste nicht-resonante Singularität +item.singularity_micro.name=Mikrosingularität item.singularity_spark.name=Spark'sche Singularität item.singularity_super_heated.name=Supererhitzte resonante Singularität item.siox.name=SiOX-Krebsmedikament @@ -3223,6 +3263,9 @@ tile.block_cap_sparkle.name=S~Cola Kronkorkenblock tile.block_cap_star.name=Sunset Sarsaparilla Kronkorkenblock tile.block_cap_sunset.name=Sunset Sarsaparilla Sternkronkorkenblock tile.block_cobalt.name=Kobaltblock +tile.block_coke.coal.name=Kohlekoksblock +tile.block_coke.lignite.name=Braunkohlekoksblock +tile.block_coke.petroleum.name=Petroleumkoksblock tile.block_coltan.name=Coltanblock tile.block_combine_steel.name=CMB-Stahlblock tile.block_copper.name=Kupferblock @@ -3492,6 +3535,9 @@ tile.dfc_stabilizer.name=DFC-Stabilisator tile.dirt_dead.name=Tote Erde tile.dirt_oily.name=Ölige Erde tile.drill_pipe.name=Bohrgestänge +tile.door_bunker.name=Bunkertür +tile.door_metal.name=Metalltür +tile.door_office.name=Bürotür tile.ducrete.name=Ducretefliese tile.ducrete_stairs.name=Ducretefliesentreppe tile.ducrete_smooth.name=Ducrete @@ -3687,6 +3733,7 @@ tile.machine_drill.name=Automatischer Minenbohrer tile.machine_electric_furnace_off.name=Elektrischer Ofen tile.machine_electric_furnace_on.name=Elektrischer Ofen tile.machine_epress.name=Hydraulische Presse +tile.machine_excavator.name=Großer Minenbohrer tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Abfackelturm @@ -3706,6 +3753,7 @@ tile.machine_microwave.name=Mikrowelle tile.machine_mining_laser.name=Bergbaulaser tile.machine_minirtg.name=Radioisotopenzelle tile.machine_missile_assembly.name=Raketenmontagestation +tile.machine_mixer.name=Industrieller Mixer tile.machine_nuke_furnace_off.name=Atombetriebener Ofen tile.machine_nuke_furnace_on.name=Atombetriebener Ofen tile.machine_orbus.name=Schwerer Magnetischer Lagerbehälter @@ -3802,6 +3850,7 @@ tile.ore_alexandrite.name=Alexandriterz tile.ore_aluminium.name=Aluminiumerz tile.ore_asbestos.name=Asbesterz tile.ore_australium.name=Australisches Erz +tile.ore_bedrock.name=Bedrock-Erz tile.ore_bedrock_coltan.name=Bedrock-Coltanerz tile.ore_bedrock_oil.name=Bedrock-Ölvorkommen tile.ore_beryllium.name=Berylliumerz @@ -3893,7 +3942,7 @@ tile.radio_torch_receiver.desc=Kann auf ebenen Flächen oder Komparator-kompatib tile.radio_torch_sender.name=Redstone-over-Radio Sender tile.radio_torch_sender.desc=Kann auf ebenen Flächen oder Komparator-kompatiblen Blöcken platziert werden$Erkennt Redstone-Signale oder Komparator-Output tile.radiobox.name=Rosenberg Ungeziefervernichter -tile.radiorec.name=Kaputtes UKW Radio +tile.radiorec.name=UKW Radio tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen tile.rail_highspeed.name=Hochgeschwindigkeitsschienen tile.rail_narrow.name=Schmalspurschienen @@ -4043,6 +4092,7 @@ tile.turret_maxwell.name=Hochenergie-MASER-Geschütz "Maxwell" tile.turret_rocket.name=Raketengeschütz tile.turret_richard.name=Raketenwerfergeschütz "Richard" tile.turret_spitfire.name=Geschütz für das ich noch keinen Namen habe [WIP] +tile.turret_sentry.name=Selbstschussanlage "Brown" tile.turret_tau.name=Tauonengeschütz tile.turret_tauon.name=XVL1456-Prototypengeschütz "Tauon" tile.vacuum.name=Vakuum diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index a732636cc..6ad1e9846 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -644,6 +644,7 @@ container.machineFEL=FEL container.machineITER=Fusion Reactor container.machineLargeTurbine=Industrial Steam Turbine container.machineLiquefactor=Liquefactor +container.machineMixer=Industrial Mixer container.machineRefinery=Oil Refinery container.machineSelenium=Radial Performance Engine container.machineShredder=Shredder @@ -716,6 +717,7 @@ container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell container.turretRichard=Richard +container.turretSentry=Brown container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Spent Fuel Pool Drum @@ -791,12 +793,6 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. -desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ -desc.item.rtgDecay=Decays to: %s -desc.item.rtgHeat=Power Level: %s -desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum -desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks -desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. @@ -823,6 +819,133 @@ desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the wa desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! +desc.item.ammo.con_accuracy2=- Highly decreased accuracy +desc.item.ammo.con_damage=- Highly decreased damage +desc.item.ammo.con_heavy_wear=- Highly increased wear +desc.item.ammo.con_ling_fire=- No lingering fire +desc.item.ammo.con_nn=- Not even a nuke +desc.item.ammo.con_no_damage=- No damage +desc.item.ammo.con_no_explode1=- Non-explosive +desc.item.ammo.con_no_explode2=- No block damage +desc.item.ammo.con_no_explode3=- No splash damage +desc.item.ammo.con_no_fire=- Not incendiary +desc.item.ammo.con_no_mirv=- Not recommended for the Proto MIRV +desc.item.ammo.con_no_projectile=- No projectile +desc.item.ammo.con_penetration=- Not penetrating +desc.item.ammo.con_radius=- Decreased blast radius +desc.item.ammo.con_range2=- Highly decreased range +desc.item.ammo.con_sing_projectile=- Single projectile +desc.item.ammo.con_speed=- Decreased projectile speed +desc.item.ammo.con_super_wear=- Very highly increased wear +desc.item.ammo.con_wear=- Increased wear +desc.item.ammo.neu_40mm=* It's a 40mm grenade that we squeezed to fit the barrel! +desc.item.ammo.neu_blank=* It's a blank +desc.item.ammo.neu_boat=* Boat +desc.item.ammo.neu_boxcar=* Boxcar +desc.item.ammo.neu_building=* Building +desc.item.ammo.neu_chlorophyte=* Chlorophyte +desc.item.ammo.neu_eraser=* For removing big mistakes +desc.item.ammo.neu_fun=* Fun for the whole family! +desc.item.ammo.neu_heavy_metal=* Heavy Metal +desc.item.ammo.neu_homing=* Homing +desc.item.ammo.neu_jolt=* Jolt +desc.item.ammo.neu_less_bouncy=* Less bouncy +desc.item.ammo.neu_maskman_flechette=* Fires a tracer which summons a storm of DU-flechettes +desc.item.ammo.neu_maskman_meteorite=* Fires a high-damage round that summons a small meteorite +desc.item.ammo.neu_more_bouncy=* Extra bouncy +desc.item.ammo.neu_no_bounce=* Not bouncy +desc.item.ammo.neu_no_con=* No drawbacks lole +desc.item.ammo.neu_starmetal=* Starmetal +desc.item.ammo.neu_tracer=* Tracer +desc.item.ammo.neu_uhh=* Uhhh +desc.item.ammo.neu_warcrime1=* Technically a warcrime +desc.item.ammo.neu_warcrime2=* Twice the warcrime in a single round! +desc.item.ammo.pro_accurate1=+ Increased accuracy +desc.item.ammo.pro_accurate2=+ Near-perfect accuracy +desc.item.ammo.pro_balefire=+ Balefire +desc.item.ammo.pro_bomb_count=+ Increased bomb count +desc.item.ammo.pro_caustic=+ Caustic +desc.item.ammo.pro_chainsaw=+ Chainsaw +desc.item.ammo.pro_chlorine=+ Chlorine gas +desc.item.ammo.pro_damage=+ Increased damage +desc.item.ammo.pro_damage_slight=+ Above average damage +desc.item.ammo.pro_emp=+ EMP +desc.item.ammo.pro_explosive=+ Explosive +desc.item.ammo.pro_fallout=+ Fallout +desc.item.ammo.pro_fit_357=+ Fits every .357 model +desc.item.ammo.pro_flames=+ Increased flame count +desc.item.ammo.pro_gravity=+ Decreased gravity +desc.item.ammo.pro_heavy_damage=+ Highly increased damage +desc.item.ammo.pro_incendiary=+ Incendiary +desc.item.ammo.pro_lunatic=+ Lunatic +desc.item.ammo.pro_marauder=+ Instantly removes annoying and unbalanced enemies +desc.item.ammo.pro_mining=+ Explosion drops all blocks +desc.item.ammo.pro_no_gravity=+ Not affected by gravity +desc.item.ammo.pro_nuclear=+ Nuclear +desc.item.ammo.pro_penetration=+ Penetrating +desc.item.ammo.pro_percussion=+ Percussive blast +desc.item.ammo.pro_phosphorus=+ Induces phosphorus burns +desc.item.ammo.pro_phosphorus_splash=+ Phosphorus splash +desc.item.ammo.pro_poison_gas=+ Poison splash +desc.item.ammo.pro_radius=+ Increased blast radius +desc.item.ammo.pro_radius_high=+ Highly increased blast radius +desc.item.ammo.pro_range=+ Increased range +desc.item.ammo.pro_rocket=+ Rocket +desc.item.ammo.pro_rocket_propelled=+ Rocket Propelled +desc.item.ammo.pro_shrapnel=+ Shrapnel +desc.item.ammo.pro_speed=+ Increased projectile speed +desc.item.ammo.pro_stunning=+ Stunning +desc.item.ammo.pro_toxic=+ Toxic +desc.item.ammo.pro_wear=+ Decreased wear +desc.item.ammo.pro_withering=+ Withering +desc.item.armorMod.display=to display installed armor mods +desc.item.battery.charge=Charge: %s / %sHE +desc.item.battery.chargePerc=Charge: %s%% +desc.item.battery.chargeRate=Charge rate: %sHE/tick +desc.item.battery.dischargeRate=Discharge rate: %sHE/tick +desc.item.durability=Durability: %s +desc.item.grenade.fuse=Fuse: %s +desc.item.grenade.fuseImpact=Impact +desc.item.grenade.fuseInstant=Instant +desc.item.gun.ammo=Ammo %s +desc.item.gun.ammoBelt=Belt +desc.item.gun.ammoEnergy=Energy; %sHE per shot +desc.item.gun.ammoEnergyAlt=%sHE per alt shot +desc.item.gun.ammoMag=%s / %s +desc.item.gun.ammoType=Ammo Type: %s +desc.item.gun.ammoTypeAlt=Secondary Ammo: %s +desc.item.gun.damage=Damage: %s - %s +desc.item.gun.damageAlt=Damage: %s +desc.item.gun.lore=to view in-depth lore +desc.item.gun.loreFunc=to view in-depth functionality +desc.item.gun.manufacturer=Manufacturer: %s +desc.item.gun.name=Name: %s +desc.item.gun.penetration=Armor Penetration Value: %s +desc.item.kitArmor=Armor will be displaced by new set. +desc.item.kitHaz=Armor will be displaced by hazmat suit. +desc.item.kitPack=What a bargain! +desc.item.kitPool=Please empty inventory before opening! +desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ +desc.item.rtgDecay=Decays to: %s +desc.item.rtgHeat=Power Level: %s +desc.item.storage.capacity=Capacity %s%%s +desc.item.storage.proscons=to view pros cons list +desc.misc.357=.357 Magnum +desc.misc.556=.223 Remington +desc.misc.762=.308 Winchester +desc.misc.func=§n-- Function -- +desc.misc.lanthanum="Lanthanum" +desc.misc.lctrl=§8Hold <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- Lore -- +desc.misc.lshift=§8Hold <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm Lunatic +desc.misc.meltPoint=Melting point: §c%s +desc.misc.noPos=No position set! +desc.misc.pos=Set pos to: %s, %s, %s +desc.misc.posSet=Position set! +desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum +desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks +desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks digamma.playerDigamma=Digamma exposure: digamma.playerHealth=Digamma influence: @@ -869,6 +992,129 @@ geiger.playerRes=Player resistance: geiger.title=GEIGER COUNTER geiger.title.dosimeter=DOSIMETER +gun.make.ARMALITE=Armalite +gun.make.AUTO_ORDINANCE=Auto-Ordnance Corporation +gun.make.BAE=BAE Systems plc +gun.make.BENELLI=Benelli Armi SpA +gun.make.BLACK_MESA=Black Mesa Research Facility +gun.make.CERIX=Cerix Magnus +gun.make.COLT=Colt's Manufacturing Company +gun.make.COMBINE=The Universal Union +gun.make.CUBE=Cube 2: Sauerbraten +gun.make.ENZINGER=Enzinger Union +gun.make.EQUESTRIA=Equestria Missile Systems +gun.make.FLIMFLAM=FlimFlam Industries +gun.make.F_STRONG=Fort Strong +gun.make.GLORIA=Gloria GmbH +gun.make.HASBRO=Hasbro +gun.make.H_AND_K=Heckler & Koch +gun.make.H_AND_R=Harrington & Richardson +gun.make.IF=Ironshod Firearms +gun.make.IMI=Israel Military Industries +gun.make.IMI_BIGMT=IMI / Big MT +gun.make.LANGFORD=Langford Research Laboratories +gun.make.LUNA=Lunar Defense Corp +gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries +gun.make.MANN=Open Mann Co. +gun.make.MAXIM=Hiram Maxim +gun.make.METRO=Metro Gunsmiths +gun.make.MWT=MWT Prototype Labs +gun.make.NAZI=Erfurter Maschinenfabrik Geipel +gun.make.NONE=- +gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.ROCKWELL=Rockwell International Corporation +gun.make.ROCKWELL_U=Rockwell International Corporation? +gun.make.RYAN=Ryan Industries +gun.make.SAAB=Saab Bofors Dynamics +gun.make.SACO=Saco Defense / US Ordnance +gun.make.TULSKY=Tulsky Oruzheiny Zavod +gun.make.UAC=Union Aerospace Corporation +gun.make.UNKNOWN=??? +gun.make.WESTTEK=WestTek +gun.make.WGW=Wilhelm-Gustloff-Werke +gun.make.WINCHESTER=Winchester Repeating Arms Company +gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / Big MT + +gun.name.ar15_50=AR-15 .50 BMG Mod +gun.name.baeAR=Britannian Standard Issue Assault Rifle +gun.name.bel=Balefire Egg Launcher +gun.name.benelli=Benelli M4 Super 90 +gun.name.benelliDrum=Benelli M4 Super 90 (Drum Magazine Modification) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=Manticora Pattern Boltgun +gun.name.cPython=Colt Python +gun.name.cz53=CZ53 Personal Minigun +gun.name.cz57=CZ57 Avenger Minigun +gun.name.dart=Needle Gun +gun.name.deagle=IMI Desert Eagle +gun.name.emp=EMP Orb Projector +gun.name.extinguisher=PROTEX Fire Exinguisher 6kg +gun.name.ffiV=FFI Viper +gun.name.ffiVInox=FFI Viper Inox +gun.name.ffiVLead=FFI Viper Lead +gun.name.ffiVN1=FFI Viper N1 +gun.name.ffiVN2=FFI Viper N2 +gun.name.ffiVUltra=FFI Viper Ultra +gun.name.ffivBling=FFI Viper Bling +gun.name.ffivSatur=FFI Viper D-25A +gun.name.g36=Heckler & Koch Gewehr 36 +gun.name.gPistol=Granatpistole HK69 +gun.name.gustav=Carl Gustav Recoilless Rifle M1 +gun.name.ifHorseshoe=IF-18 Horseshoe +gun.name.ifPit=IF-18 Horseshoe Bottomless Pit +gun.name.ifScope=IF-18 Horseshoe Scoped +gun.name.ifStorm=IF-18 Horseshoe Silver Storm +gun.name.ifVanity=IF-18 Horseshoe Vanity +gun.name.karl=M1 Karl-Gerät +gun.name.ks23=KS-23 +gun.name.lacunae=Auntie Lacunae +gun.name.lasetDet=Hopeville Laser Detonator +gun.name.lunaAR=1986 Bishamonten type Assault Rifle +gun.name.lunaGun=1978 Rāhula type Standard Issue Sidearm (Revision 2) +gun.name.lunaHLR=1944 Chang'e type Light Machine Gun +gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) +gun.name.lunaSMG=1956 Ānanda type Submachine Gun +gun.name.lunaSniper=1915 Hou Yi type Anti-Material Rifle +gun.name.lunaTWR=Time Warp Rifle +gun.name.m2=Browning machine gun, cal. .50, M2, HB +gun.name.m42=M-42 Tactical Nuclear Catapult +gun.name.m42MIRV=M-42 Experimental MIRV +gun.name.m60=Machine Gun, Caliber 7.62 mm, M60 +gun.name.maxim=Maxim gun +gun.name.maximDouble=Double Maxim gun +gun.name.mg42=Universal-Maschinengewehr Modell 42 - .50 Mod +gun.name.mp40=Maschinenpistole 40 +gun.name.nerf=NERF blaster of unknown design +gun.name.osipr=Overwatch Standard Issue Pulse Rifle +gun.name.panz=Raketenpanzerbüchse 54 +gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher +gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun +gun.name.sauer=Sauer Shotgun +gun.name.spas12=Franchi SPAS-12 +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92 Stinger man-portable air-defense system +gun.name.stingerOneSky=The One Sky Stinger +gun.name.supershotty=Double-Barreled Combat Shotgun +gun.name.tau=XVL1456 Tau Cannon +gun.name.tommy9=M1A1 Submachine Gun 9mm Mod +gun.name.tommy=M1A1 Submachine Gun +gun.name.topaz=Heavy Duty Flamer +gun.name.uacCarbine=UAC-41 Carbine +gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag +gun.name.uacDMR=UAC-30 Designated Marksman Rifle +gun.name.uacLMG=UAC-49 Light Machine Gun +gun.name.uacPistol=UAC-B950 .45 Standard Issue Handgun +gun.name.uacSMG=UAC-17 Compact Sub-Machine Gun +gun.name.uboinik=Uboinik Revolving Shotgun +gun.name.uzi=IMI Uzi +gun.name.uziSatur=IMI Uzi D-25A +gun.name.win1887=Winchester Model 1887 +gun.name.win1887Inox=Winchester Model 1887 Inox +gun.name.win20Inox=Winchester Model 20 Inox +gun.name.win20Poly=Winchester Model 20 Polymer +gun.name.win20Satur=Winchester Model 20 D-25A +gun.name.zomg=EMC101 Prismatic Negative Energy Cannon + hadron.analysis=Analyzing... hadron.buttonOn=Analysis Chamber (if present) is ON hadron.buttonOff=Analysis Chamber is OFF @@ -1145,6 +1391,7 @@ item.ammo_12gauge.name=12 Gauge Buckshot item.ammo_12gauge_du.name=12 Gauge Buckshot (Uranium Coated) item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary) item.ammo_12gauge_marauder.name=12 Gauge Tactical Anti-Marauder Shell +item.ammo_12gauge_percussion.name=12 Gauge Percussion Cap item.ammo_12gauge_shrapnel.name=12 Gauge Buckshot (Shrapnel) item.ammo_12gauge_sleek.name=12 Gauge Buckshot (IF-R&D) item.ammo_20gauge.name=20 Gauge Buckshot @@ -1171,6 +1418,9 @@ item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) item.ammo_44_rocket.name=.44 Magnum Rocket item.ammo_44_silver.name=.44 Magnum Bullet (Building) item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) +item.ammo_45.name=.45 ACP Bullet +item.ammo_45_ap.name=.45 ACP Bullet (AP) +item.ammo_45_du.name=.45 ACP Bullet (DU) item.ammo_4gauge.name=4 Gauge Buckshot item.ammo_4gauge_balefire.name=23mm Balefire Grenade item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) @@ -1225,6 +1475,12 @@ item.ammo_5mm_star.name=5mm Round (Starmetal) item.ammo_75bolt.name=.75 Bolt Magazine (30rnd) item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd) item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd) +item.ammo_762.name=7.62mm Round +item.ammo_762_ap.name=7.62mm Round (AP) +item.ammo_762_du.name=7.62mm Round (DU) +item.ammo_762_k.name=7.62mm K-Round +item.ammo_762_phosphorus.name=7.62mm Round (WP) +item.ammo_762_tracer.name=7.62mm Round (Tracer) item.ammo_9mm.name=9mm Round item.ammo_9mm_ap.name=9mm Round (Armor Piercing) item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) @@ -1269,6 +1525,9 @@ item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=M28 Guided Artillery Rocket Pod item.ammo_himars_single.name=M39A1 Guided Artillery Rocket Pod +item.ammo_luna.name=Lunatic Sniper Sabot Round +item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round +item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round item.ammo_mirv.name=Mini MIRV item.ammo_mirv_high.name=Mini MIRV (High Yield) item.ammo_mirv_low.name=Mini MIRV (Low Yield) @@ -1348,7 +1607,9 @@ item.asbestos_helmet.name=Fire Proximity Helmet item.asbestos_legs.name=Fire Proximity Leggings item.asbestos_plate.name=Fire Proximity Chestplate item.ashglasses.name=Ash Goggles +item.assembly_45.name=.45 ACP Assembly item.assembly_556.name=5.56mm Assembly +item.assembly_762.name=7.62mm Assembly item.assembly_actionexpress.name=.50 AE Assembly item.assembly_calamity.name=.50 BMG Assembly item.assembly_desh.name=Desh Bullet Assembly @@ -1356,6 +1617,7 @@ item.assembly_gold.name=Gold Bullet Assembly item.assembly_iron.name=Iron Bullet Assembly item.assembly_lacunae.name=.5mm Assembly item.assembly_lead.name=Glass Bullet Assembly +item.assembly_luna.name=Lunatic Sniper Bullet Assembly item.assembly_nightmare.name=Nightmare Bullet Assembly item.assembly_nopip.name=.44 Magnum Assembly item.assembly_nuke.name=Mini Nuke Shell @@ -1651,6 +1913,7 @@ item.centrifuge_element.name=Centrifuge Element item.centrifuge_tower.name=Centrifuge Tower item.chainsaw.name=Chainsaw item.cheese.name=Cheese +item.cheese_quesadilla.name=Cheese Quesadilla item.chemistry_set.name=Laboratory Glassware item.chemistry_set_boron.name=Laboratory Glassware (Boron Glass) item.chemistry_template.name=Chemistry Template: @@ -1896,6 +2159,12 @@ item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door item.dosimeter.name=Dosimeter +item.drillbit_desh.name=Desh Drillbit +item.drillbit_desh_diamond.name=Desh Drillbit (Diamond-Tipped) +item.drillbit_hss.name=High-Speed Steel Drillbit +item.drillbit_hss_diamond.name=High-Speed Steel Drillbit (Diamond-Tipped) +item.drillbit_steel.name=Steel Drillbit +item.drillbit_steel_diamond.name=Steel Drillbit (Diamond-Tipped) item.drill_titanium.name=Titanium Drill item.drax.name=Terra Drill item.drax_mk2.name=Hardened Terra Drill @@ -2145,7 +2414,7 @@ item.gun_moist_nugget.name=Mosin-Nagant item.gun_mp.name=Pacifist's Machine Gun item.gun_mp40.name=Submachine Gun item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) -item.gun_mp_ammo.name=Small Propellantless Machine Gun Round +item.gun_pm_ammo.name=Small Propellantless Machine Gun Round item.gun_mymy.name=Nietes item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle item.gun_osipr_ammo.name=Dark Energy Pulse Plug @@ -2755,6 +3024,20 @@ item.oil_tar.coal.name=Coal Tar item.oil_tar.crude.name=Oil Tar item.oil_tar.crack.name=Crack Oil Tar item.oil_tar.wood.name=Wood Tar +item.ore.asbestos=Asbestos +item.ore.borax=Borax +item.ore.copper=Copper +item.ore.gold=Gold +item.ore.iron=Iron +item.ore.niobium=Niobium +item.ore.titanium=Titanium +item.ore.tungsten=Tungsten +item.ore_bedrock.name=%s Bedrock Ore +item.ore_centrifuged.name=Centrifuged %s Ore +item.ore_cleaned.name=Cleaned %s Ore +item.ore_enriched.name=Enriched %s Ore +item.ore_purified.name=Purified %s Ore +item.ore_separated.name=Separated %s Ore item.overfuse.name=Singularity Screwdriver item.overfuse.desc=Say what? item.oxy_mask.name=Oxygen Mask @@ -2867,7 +3150,7 @@ item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects item.pin.name=Bobby Pin -item.pin.desc="*Unmodified* success rate of picking a standard lock is ~10%. +item.pin.desc=Standard success rate of picking a regular lock is ~10%%. item.pipes_steel.name=Steel Pipes item.pipes_steel.desc=Uncrafting was omitted due to tax evasion. item.piston_selenium.name=Combustion Engine Piston @@ -3380,6 +3663,7 @@ item.shimmer_head.name=Heavy Hammer Head item.shimmer_sledge.name=Shimmer Sledge item.singularity.name=Singularity item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity +item.singularity_micro.name=Micro Singularity item.singularity_spark.name=Spark Singularity item.singularity_super_heated.name=Superheated Resonating Singularity item.siox.name=SiOX Cancer Medication @@ -3784,6 +4068,9 @@ tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps tile.block_cobalt.name=Block of Cobalt +tile.block_coke.coal.name=Block of Coal Coke +tile.block_coke.lignite.name=Block of Lignite Coke +tile.block_coke.petroleum.name=Block of Petroleum Coke tile.block_coltan.name=Block of Coltan tile.block_combine_steel.name=Block of CMB Steel tile.block_copper.name=Block of Copper @@ -4058,6 +4345,9 @@ tile.dfc_stabilizer.name=DFC Stabilizer tile.dirt_dead.name=Dead Dirt tile.dirt_oily.name=Oily Dirt tile.drill_pipe.name=Drill Pipe +tile.door_bunker.name=Bunker Door +tile.door_metal.name=Metal Door +tile.door_office.name=Office Door tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete @@ -4255,6 +4545,7 @@ tile.machine_drill.name=Automatic Mining Drill tile.machine_electric_furnace_off.name=Electric Furnace tile.machine_electric_furnace_on.name=Electric Furnace tile.machine_epress.name=Electric Press +tile.machine_excavator.name=Large Mining Drill tile.machine_fel.name=FEL tile.machine_fensu.name=FEnSU tile.machine_flare.name=Flare Stack @@ -4276,6 +4567,7 @@ tile.machine_microwave.name=Microwave tile.machine_mining_laser.name=Mining Laser tile.machine_minirtg.name=Radio Isotope Cell tile.machine_missile_assembly.name=Missile Assembly Station +tile.machine_mixer.name=Industrial Mixer tile.machine_nuke_furnace_off.name=Nuclear Furnace tile.machine_nuke_furnace_on.name=Nuclear Furnace tile.machine_orbus.name=Heavy Magnetic Storage Tank @@ -4373,6 +4665,7 @@ tile.ore_alexandrite.name=Alexandrite Ore tile.ore_aluminium.name=Aluminium Ore tile.ore_asbestos.name=Asbestos Ore tile.ore_australium.name=Australian Ore +tile.ore_bedrock.name=Bedrock Ore tile.ore_bedrock_coltan.name=Bedrock Coltan Ore tile.ore_bedrock_oil.name=Bedrock Oil Deposit tile.ore_beryllium.name=Beryllium Ore @@ -4464,7 +4757,7 @@ tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatibl tile.radio_torch_sender.name=Redstone-over-Radio Transmitter tile.radio_torch_sender.desc=Placable on flat surfaces or comparator-compatible blocks$Reads redstone signals or comparator input tile.radiobox.name=Rosenberg Pest Control Box -tile.radiorec.name=Broken FM Radio +tile.radiorec.name=FM Radio tile.rail_booster.name=High Speed Booster Rail tile.rail_highspeed.name=High Speed Rail tile.rail_narrow.name=Narrow Gauge Cart Rail @@ -4614,6 +4907,7 @@ tile.turret_maxwell.name=High-Energy MASER Turret "Maxwell" tile.turret_rocket.name=Rocket Turret tile.turret_richard.name=Rocket Launcher Turret "Richard" tile.turret_spitfire.name=Turret I have no name for right now [WIP] +tile.turret_sentry.name=Sentry Turret "Brown" tile.turret_tau.name=Tauon Turret tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" tile.vacuum.name=Vacuum diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 782cd9b32..ccafc3591 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1170,7 +1170,7 @@ hbmmat.lignite=Лигнит hbmmat.lithium=Литий hbmmat.magnetizedtungsten=Намагниченный вольфрам hbmmat.malachite=Малахит -hbmmat.mingrade=Промышленная медь +hbmmat.mingrade=Красная медь hbmmat.neptunium237=Нептуний-237 hbmmat.niobium=Ниобий hbmmat.obsidian=Обсидиан @@ -1785,6 +1785,7 @@ tile.gas_duct_solid.name=Покрытая газовая труба tile.machine_drill.name=Автоматический горный бур container.miningDrill=Автоматический горный бур tile.drill_pipe.name=Бур +tile.machine_excavator.name=Большой горный бур tile.machine_assembler.name=Сборочная машина container.assembler=Сборочная машина tile.machine_assemfac.name=Сборочный завод @@ -1869,11 +1870,13 @@ container.turretFriendly=Мистер Дружелюбный container.turretJeremy=Джереми container.turretTauon=Тауон container.turretRichard=Ричард +container.turretSentry=Браун tile.turret_chekhov.name=Крупнокалиберная пулеметная турель "Чеховское ружьё" tile.turret_friendly.name=Турель Гатлинга "Мистер Дружелюбный" tile.turret_jeremy.name=Автопушка "Джереми" tile.turret_tauon.name=Прототип турели XVL1456 "Тауон" tile.turret_richard.name=Ракетная турель "Ричард" +tile.turret_sentry.name=Сторожевая турель "Браун" container.turretHoward=Говард tile.turret_howard.name=Двойная турель Гатлинга CIWS "Говард" container.turretMaxwell=Максвелл @@ -2014,6 +2017,8 @@ tile.radio_torch_sender.desc=Ставится на плоские поверхн container.rttyReceiver=Редстоун-радио приёмник container.rttySender=Редстоун-радио передатчик tile.machine_combustion_engine.name=Промышленный двигатель внутреннего сгорания +tile.machine_mixer.name=Промышленный смеситель +container.machineMixer=Промышленный смеситель container.hadron=Ускоритель частиц tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -2055,7 +2060,7 @@ tile.broadcaster_pc.name=Повреждённый передатчик tile.tesla.name=Катушка Теслы tile.charger.name=Станция зарядки tile.radiobox.name=Коробка управления вредителями Розенберга -tile.radiorec.name=Сломанное FM радио +tile.radiorec.name=FM радио container.radiobox=FM передатчик container.radiorec=FM радио tile.muffler.name=Глушитель @@ -2444,7 +2449,7 @@ item.coke.lignite.name=Бурый кокс item.coke.petroleum.name=Нефтяной кокс item.lignite.name=Бурый уголь item.coal_infernal.name=Адский уголь -item.briquette_lignite.name=Брикет бурого угля +item.briquette.lignite.name=Брикет бурого угля item.briquette.coal.name=Брикет угля item.briquette.wood.name=Брикет древесных опилок item.powder_lignite.name=Порошок бурого угля @@ -2783,6 +2788,22 @@ tile.ore_bedrock_oil.name=Бедроковый нефтяной пласт tile.ore_cobalt.name=Кобальтовая руда tile.stone_porous.name=Пористый камень tile.ore_random.name=Руда %s +tile.ore_bedrock.name=Бедроковая руда + +item.ore.asbestos=Асбестовая +item.ore.borax=Буровая +item.ore.copper=Медная +item.ore.gold=Золотая +item.ore.iron=Железная +item.ore.niobium=Ниобиевая +item.ore.titanium=Титановая +item.ore.tungsten=Вольфрамовая +item.ore_bedrock.name=%s бедроковая руда +item.ore_centrifuged.name=Центрифугированная %s бедроковая руда +item.ore_cleaned.name=Очищенная %s бедроковая руда +item.ore_enriched.name=Обогащённая %s бедроковая руда +item.ore_purified.name=Промытая %s бедроковая руда +item.ore_separated.name=Отделённая %s бедроковая руда tile.bobblehead.name=Болванчик tile.deco_titanium.name=Титановый декоративный блок @@ -2986,6 +3007,10 @@ item.door_metal.name=Металлическая дверь item.door_office.name=Офисная дверь item.door_bunker.name=Бункерная дверь +tile.door_metal.name=Металлическая дверь +tile.door_office.name=Офисная дверь +tile.door_bunker.name=Бункерная дверь + item.nugget_uranium.name=Урановый самородок item.nugget_plutonium.name=Плутониевый самородок item.nugget_neptunium.name=Нептуниевый самородок @@ -4788,6 +4813,7 @@ item.crucible.name="Горнило Палача" item.bismuth_pickaxe.name=Висмутовая кирка tile.red_cable.name=Провод из красной меди +tile.red_cable_paintable.name=Окрашиваемый провод из красной меди tile.red_cable_classic.name=Провод из красной меди (Старый) tile.red_connector.name=Электрический коннектор @@ -5004,6 +5030,12 @@ item.blades_combine_steel.name=Стальные лезвия измельчит item.blades_schrabidium.name=Шрабидиевые лезвия измельчителя item.blades_desh.name=Деш-лезвия измельчителя item.sawblade.name=Лезвие пилорамы +item.drillbit_desh.name=Деш-головка бура +item.drillbit_desh_diamond.name=Деш-головка бура (с алмазным напылением) +item.drillbit_hss.name=Головка бура из высокоскоростной стали +item.drillbit_hss_diamond.name=Головка бура из высокоскоростной стали (с алмазным напылением) +item.drillbit_steel.name=Головка бура из стали +item.drillbit_steel_diamond.name=Головка бура из стали (с алмазным напылением) item.stamp_stone_flat.name=Плоский штамп (Камень) item.stamp_stone_plate.name=Штамп пластины (Камень) @@ -5131,6 +5163,8 @@ item.bismuth_tool.name=Магнитный экстрактор item.reacher.name=Вольфрамовые хваталки item.power_net_tool.name=Анализатор энергосети item.anchor_remote.name=Устройство вызова +item.acetylene_torch.name=Ацетиленовая сварочная горелка +item.blowtorch.name=Паяльная лампа item.multitool_dig.name=Силовая перчатка (Добывающий коготь) item.multitool_silk.name=Силовая перчатка (Коготь шёлкового касания) @@ -5369,7 +5403,6 @@ item.ingot_cn286.name=Coperinicium-286 Ingot item.ingot_dineutronium_forged.name=§5Forged Dineutronium Ingot§r item.ingot_du_dioxide.name=Uranium Dioxide Pellet item.ingot_es254.name=Einsteinium-254 Ingot -item.ingot_ferrouranium.name=Ferrouranium Ingot item.ingot_md258.name=Mendelevium-258 Ingot item.ingot_nbbe.name=Niobium-Beryllium Alloy Ingot item.ingot_neodymium.name=Neodymium Ingot @@ -5599,6 +5632,9 @@ tile.block_ferrouranium.name=Reinforced Block of Ferrouranium tile.block_polymer.name=Блок полимера tile.block_bakelite.name=Блок бакелита tile.block_rubber.name=Блок резины +tile.block_coke.coal.name=Блок угольного кокса +tile.block_coke.lignite.name=Блок бурого кокса +tile.block_coke.petroleum.name=Блок нефтяного кокса tile.block_saturnite.name=Reinforced Block of Saturnite tile.block_silicon.name=Block of Silicon tile.block_staballoy.name=Reinforced Block of Staballoy diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 09fa517cd..c182cfeef 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -221,7 +221,6 @@ book.rbmk.title8=碳化钨中子反射器 book.rbmk.page8=反应堆中的 §l碳化钨中子反射器§r 将阻止中子的通过, 相反,中子将被反射回它们来自的燃料棒上. 这对于使用中子是有用的, 否则这些中子一旦离开反应堆就会被浪费掉. book.rbmk.title9=硼中子吸收器 book.rbmk.page9=§l硼中子吸收器§r 只是阻挡中子. 被吸收的中子不会产生热量,会被有效地吸收. 这有助于防止燃料棒发生过度反应从而超出临界值. - book.rbmk.title10=石墨慢化剂 book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中子转换成慢中子. 大多数核燃料反应释放出快中子, 而引起裂变需要慢中子, 所以强烈建议使用慢化剂. book.rbmk.title11=结构柱 @@ -313,52 +312,87 @@ book_lore.test.page.2=他在我怀里睡着时,我正在打字。我怎么才 book_lore.test.page.3=3 book_lore.test.page.4=4 book_lore.test.page.5=5 -book_lore.book_iodine.name=Note -book_lore.book_iodine.author=Dave +book_lore.book_iodine.name=笔记 +book_lore.book_iodine.author=戴夫 book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. book_lore.book_iodine.page.3=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d -book_lore.book_phosphorous.name=Note -book_lore.book_phosphorous.author=Dave +book_lore.book_phosphorous.name=笔记 +book_lore.book_phosphorous.author=戴夫 book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d -book_lore.book_dust.name=Note -book_lore.book_dust.author=Dave +book_lore.book_dust.name=笔记 +book_lore.book_dust.author=戴夫 book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d -book_lore.book_mercury.name=Note -book_lore.book_mercury.author=Dave +book_lore.book_mercury.name=笔记 +book_lore.book_mercury.author=戴夫 book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d -book_lore.book_flower.name=Note -book_lore.book_flower.author=Dave +book_lore.book_flower.name=笔记 +book_lore.book_flower.author=戴夫 book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d -book_lore.book_syringe.name=Note -book_lore.book_syringe.author=Dave +book_lore.book_syringe.name=笔记 +book_lore.book_syringe.author=戴夫 book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal book_lore.book_syringe.page.2=syringe goes into slot %d -book_lore.resignation_note.name=Letter of Resignation -book_lore.resignation_note.author=Kosma +book_lore.resignation_note.name=辞职信 +book_lore.resignation_note.author=科斯马 book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. -book_lore.memo_stocks.name=Intracorporate Memorandum +book_lore.memo_stocks.name=公司内部备忘录 book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. -book_lore.memo_schrab_gsa.name=Internal Memorandum +book_lore.memo_schrab_gsa.name=内部备忘录 book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. -book_lore.memo_schrab_rd.name=Internal Memorandum +book_lore.memo_schrab_rd.name=内部备忘录 book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. -book_lore.memo_schrab_nuke.name=Research Report +book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Doctor Schrabauer book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. book_lore.memo_schrab_nuke.page.2=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. book_lore.memo_schrab_nuke.page.3=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. +book_lore.insanity_1.name=Torn Page +book_lore.insanity_1.author=D Ferguson +book_lore.insanity_1.page.1=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off. +book_lore.insanity_1.page.2=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting. +book_lore.insanity_1.page.3=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something. +book_lore.insanity_2.name=Torn Page +book_lore.insanity_2.author=D Ferguson +book_lore.insanity_2.page.1=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data. +book_lore.insanity_2.page.2=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked +book_lore.insanity_2.page.3=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man? +book_lore.insanity_3.name=Torn Page +book_lore.insanity_3.author=D Ferguson +book_lore.insanity_3.page.1=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago. +book_lore.insanity_3.page.2=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud. +book_lore.insanity_3.page.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. +book_lore.insanity_4.name=Torn Page +book_lore.insanity_4.author=D Ferguson +book_lore.insanity_4.page.1=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation. +book_lore.insanity_4.page.2=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly +book_lore.insanity_4.page.3=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job. +book_lore.insanity_5.name=Torn Page +book_lore.insanity_5.author=D Ferguson +book_lore.insanity_5.page.1=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare, +book_lore.insanity_5.page.2=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away. +book_lore.insanity_5.page.3=Something is telling me that The Thing is still out there somewhere. I can feel it. +book_lore.insanity_6.name=Torn Page +book_lore.insanity_6.author=D Ferguson +book_lore.insanity_6.page.1=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse. +book_lore.insanity_6.page.2=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago. +book_lore.insanity_6.page.3=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all. +book_lore.insanity_7.name=Torn Page +book_lore.insanity_7.author=D Ferguson +book_lore.insanity_7.page.1=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say. +book_lore.insanity_7.page.2=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert. +book_lore.insanity_7.page.3=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance. cannery.f1=[按F1键获取帮助] cannery.centrifuge=气体离心机 cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。 @@ -545,6 +579,7 @@ container.fluidtank=储罐 container.fileCabinet=文件柜 container.forceField=力场发生器 container.frackingTower=水力压裂塔 +container.furnaceCombination=复式炼焦炉 container.furnaceIron=铁炉 container.furnaceSteel=钢炉 container.fusionMultiblock=大型聚变反应堆 @@ -554,6 +589,7 @@ container.gasFlare=高架火炬 container.generator=研究型反应堆 container.hadron=粒子加速器 container.heaterFirebox=燃烧室 +container.heaterHeatex=热交换器 container.heaterOilburner=流体燃烧器 container.heaterOven=加热炉 container.iGenerator=工业发电机 @@ -570,6 +606,7 @@ container.machineFEL=FEL自由电子激光器 container.machineITER=聚变反应堆 container.machineLargeTurbine=工业汽轮机 container.machineLiquefactor=液化机 +container.machineMixer=工业搅拌机 container.machineRefinery=炼油厂 container.machineSelenium=星型发动机 container.machineShredder=粉碎机 @@ -647,6 +684,17 @@ container.uf6_tank=六氟化铀储罐 container.wasteDrum=乏燃料池 container.watzPowerplant=Watz发电厂 container.zirnox=锆诺克斯核反应堆 +crucible.aa=高级合金生产 +crucible.ferro=铀铁合金生产 +crucible.hematite=赤铁矿炼铁 +crucible.hss=高速钢生产 +crucible.malachite=孔雀石炼铜 +crucible.redcopper=紫铜生产 +crucible.steel=钢铁生产 +crucible.steelMeteoric=陨铁炼钢 +crucible.steelPig=生铁炼钢 +crucible.steelWrought=锻铁炼钢 +crucible.tcalloy=锝钢合金生产 death.attack.acid=%1$s 掉进了酸里 death.attack.acidPlayer=%1$s 被 %2$s 溶解 death.attack.ams=%1$s 沐浴在尚未被人类科学命名的致命粒子中 @@ -703,9 +751,7 @@ death.attack.taint=%1$s 死于恶性肿瘤 death.attack.tau=%1$s 被 %2$s 用带负电荷的陶子射穿 death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸成碎片 death.attack.teleporter=%1$s 被传送到虚空 -desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ - - +desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ desc.item.rtgDecay=衰变为:%s desc.item.rtgHeat=功率级别:%s desc.item.wasteCooling=在乏燃料池中冷却 @@ -836,6 +882,7 @@ hbmfluid.biofuel=生物燃料 hbmfluid.biogas=沼气 hbmfluid.bitumen=沥青 hbmfluid.carbondioxide=二氧化碳 +hbmfluid.coalcreosote=煤焦杂酚油 hbmfluid.coalgas=煤汽油 hbmfluid.coalgas_leaded=含铅煤汽油 hbmfluid.coaloil=煤液化油 @@ -891,6 +938,7 @@ hbmfluid.reclaimed=再生油 hbmfluid.salient=绿色液体 hbmfluid.sas3=三硫化Sa hbmfluid.schrabidic=Sa酸 +hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工业油 hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 @@ -904,6 +952,7 @@ hbmfluid.wastefluid=液态核废料 hbmfluid.wastegas=气态核废料 hbmfluid.water=水 hbmfluid.watz=毒泥浆 +hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=经验汁 hbmpseudofluid.none=空 @@ -958,12 +1007,14 @@ hbmmat.lignite=褐煤 hbmmat.lithium=锂 hbmmat.magnetizedtungsten=磁化钨 hbmmat.malachite=孔雀石 +hbmmat.meteoriciron=陨铁 hbmmat.mingrade=工业级铜 hbmmat.neptunium237=镎-237 hbmmat.niobium=铌 hbmmat.obsidian=黑曜岩 hbmmat.osmiridium=铱锇合金 hbmmat.petcoke=石油焦炭 +hbmmat.pigiron=生铁 hbmmat.plutonium=钚 hbmmat.plutonium238=钚-238 hbmmat.plutonium239=钚-239 @@ -999,6 +1050,7 @@ hbmmat.uranium235=铀-235 hbmmat.uranium238=铀-238 hbmmat.whitephosphorus=白磷 hbmmat.workersalloy=Desh +hbmmat.wroughtiron=锻铁 matshape.block=%s 块 matshape.blocks=%s 块 matshape.ingot=%s 锭 @@ -1017,6 +1069,7 @@ info.template_out=输出: info.template_out_p=输出: info.template_seconds=秒 info.template_time=生产耗时: +item.acetylene_torch.name=乙炔焊罐 item.ajr_boots.name=AJR 动力装甲靴子 item.ajr_helmet.name=AJR 动力装甲头盔 item.ajr_legs.name=AJR 动力装甲护腿 @@ -1134,9 +1187,9 @@ item.ammo_arty_phosphorus.name=16英寸磷炮弹 item.ammo_arty_phosphorus_multi.name=16英寸多弹头磷炮弹 item.ammo_cell.name=能量单元 item.ammo_container.name=万能弹药盒 -item.ammo_dart.name=塑料镖(凋零) +item.ammo_dart.name=塑料镖[凋零] item.ammo_dart_nerf.name=NERF 飞镖 -item.ammo_dart_nuclear.name=塑料镖(定时炸药) +item.ammo_dart_nuclear.name=塑料镖[定时炸药] item.ammo_dgk.name=双联守门员近防系统200发弹药 item.ammo_fireext.name=灭火器 水罐 item.ammo_fireext_foam.name=灭火器 泡沫罐 @@ -1189,7 +1242,6 @@ item.ammo_rocket_sleek.name=84mm火箭弹[IF-R&D] item.ammo_rocket_toxic.name=84mm火箭弹[化学] item.ammo_shell.name=240mm炮弹 item.ammo_shell_apfsds_du.name=240mm 贫铀尾翼稳定脱壳穿甲弹 - item.ammo_shell_apfsds_t.name=240mm 钨心尾翼稳定脱壳穿甲弹 item.ammo_shell_explosive.name=240mm 高爆炮弹 item.ammo_shell_w9.name=240mm W9核子炮弹 @@ -1399,6 +1451,7 @@ item.blades_iron.name=铁制刀片 item.blades_schrabidium.name=Sa326刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 +item.blowtorch.name=喷灯 item.board_copper.name=铜片 item.bobmazon_hidden.name=隐藏目录 item.bobmazon_machines.name=Bobmazon: 方块和机器 @@ -1433,7 +1486,9 @@ item.boy_kit.name=小男孩 套件 item.boy_propellant.name=炸药 item.boy_shielding.name=中子屏蔽罩 item.boy_target.name=次临界铀-235标靶 -item.briquette_lignite.name=褐煤煤球 +item.briquette.coal.name=煤球 +item.briquette.lignite.name=褐煤煤球 +item.briquette.wood.name=木屑球 item.bucket_acid.name=一桶酸 item.bucket_mud.name=一桶毒泥 item.bucket_schrabidic_acid.name=一桶Sa酸 @@ -1555,6 +1610,7 @@ item.chernobylsign.name=辐射警告标志战斧 item.chlorine_pinwheel.name=氯气转轮 item.chlorophyte_pickaxe.name=叶绿镐 item.chocolate.name=“我是-镭牌”巧克力 +item.chocolate.desc=镭巧克力?我很确定这是冰毒。 item.chocolate_milk.name=巧克力牛奶 item.chopper.name=猎人直升机 item.chopper_blades.name=猎人直升机旋翼 @@ -1756,6 +1812,7 @@ item.debris_metal.name=断裂金属棒 item.debris_shrapnel.name=走道碎片 item.definitelyfood.name=完全不脏牌军粮 item.defuser.name=高科技拆弹装置 +item.defuser_gold.name=黄金剪线钳 item.demon_core_closed.name=封闭的恶魔核心 item.demon_core_open.name=打开的恶魔核心 item.desh_axe.name=工人合金斧 @@ -1791,6 +1848,12 @@ item.door_bunker.name=仓门 item.door_metal.name=金属门 item.door_office.name=办公室门 item.dosimeter.name=剂量计 +item.drillbit_desh.name=Desh钻头 +item.drillbit_desh_diamond.name=Desh钻头(镶钻) +item.drillbit_hss.name=高速钢钻头 +item.drillbit_hss_diamond.name=高速钢钻头(镶钻) +item.drillbit_steel.name=钢钻头 +item.drillbit_steel_diamond.name=钢钻头(镶钻) item.drill_titanium.name=钛钻头 item.drax.name=采掘钻 item.drax_mk2.name=强化型采掘钻 @@ -1845,6 +1908,7 @@ item.fins_quad_titanium.name=小型钛翼 item.fins_small_steel.name=小型钢栅格翼 item.fins_tri_steel.name=大型钢翼 item.five_htp.name=5-羟色胺药丸 +item.five_htp.desc=移除所有迪伽马辐射,并获得10分钟稳定效果 item.flame_conspiracy.name=阴谋论 item.flame_conspiracy.desc=钢梁不能熔化喷气燃料! item.flame_opinion.name=个人观点 @@ -1877,6 +1941,7 @@ item.fluid_tank_lead_full.name=危险品罐: item.fluorite.name=氟石粉 item.flywheel_beryllium.name=铍制飞轮 item.fmn.name=氟硝西泮片 +item.fmn.desc=移除2000mDRX以上的所有迪伽马辐射 item.folly_bullet.name=128mm星辉弹头 item.folly_bullet_du.name=128mm贫铀弹头 item.folly_bullet_nuclear.name=128mm核弹头 @@ -1919,6 +1984,7 @@ item.gas_mask_m65.name=M65-Z防毒面具 item.gas_mask_mono.name=防一氧化碳面罩 item.gas_mask_olde.name=皮革防毒面具 item.gas_petroleum.name=石油气罐 +item.gas_tester.name=气体传感器 item.gear_large.name=大型齿轮 item.gear_large_steel.name=大型钢齿轮 item.geiger_counter.name=手持盖革计数器 @@ -2226,7 +2292,6 @@ item.ingot_smore.name=S'more 锭 item.ingot_solinium.name=Sa327锭 item.ingot_sr90.name=锶-90锭 item.ingot_starmetal.name=§9星辉锭§r - item.ingot_steel.name=钢锭 item.ingot_steel_dusted.name=粉末钢锭 item.ingot_tantalium.name=钽锭 @@ -2647,6 +2712,21 @@ item.oil_detector.noOil=未发现油田 item.oil_tar.coal.name=煤焦油 item.oil_tar.crude.name=焦油 item.oil_tar.crack.name=裂化焦油 +item.oil_tar.wood.name=木馏油 +item.ore.asbestos=石棉 +item.ore.borax=硼砂 +item.ore.copper=铜 +item.ore.gold=金 +item.ore.iron=铁 +item.ore.niobium=铌 +item.ore.titanium=钛 +item.ore.tungsten=钨 +item.ore_bedrock.name=基岩%s矿 +item.ore_centrifuged.name=离心%s矿 +item.ore_cleaned.name=清洁%s矿 +item.ore_enriched.name=富集%s矿 +item.ore_purified.name=净化%s矿 +item.ore_separated.name=分离%s矿 item.overfuse.name=奇异螺丝刀 item.overfuse.desc=说啥? item.oxy_mask.name=氧气面罩 @@ -2755,14 +2835,20 @@ item.pile_rod_source.desc=§d[中子源棒] item.pile_rod_uranium.name=芝加哥反应堆 铀棒 item.pile_rod_uranium.desc=§a[可反应核燃料]$§e使用手钻取堆芯样本 item.pill_iodine.name=碘丸 +item.pill_iodine.desc=消除负面buff item.pill_herbal.name=草药膏 +item.pill_herbal.desc=有效治疗肺部疾病和轻度辐射中毒$有副作用 item.pin.name=发夹 item.pin.desc=“*未修改*撬开标准锁的成功率约为10%。 item.pipes_steel.name=钢管 item.pipes_steel.desc=为了避免合成冲突,所以造价如此高昂 -item.pirfenidone.name=吡咯菲酮 item.piston_selenium.name=星型发动机活塞 +item.piston_set_desh.name=Desh活塞组 +item.piston_set_dura.name=高速钢活塞组 +item.piston_set_starmetal.name=星辉活塞组 +item.piston_set_steel.name=钢活塞组 item.plan_c.name=C计划 +item.plan_c.desc=致死 item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=烟叶 item.plate_advanced_alloy.name=高级合金板 @@ -2924,6 +3010,7 @@ item.radaway.name=消辐宁 item.radaway_flush.name=超级消辐宁 item.radaway_strong.name=强效消辐宁 item.radx.name=防辐射药 +item.radx.desc=在3分钟内增加0.2(37%)的抗辐射能力 item.rag.name=布 item.rag_damp.name=湿布 item.rag_piss.name=沾有尿的布 @@ -3268,6 +3355,7 @@ item.singularity_counter_resonant.name=可控反振谐奇点 item.singularity_spark.name=Spark奇点 item.singularity_super_heated.name=超热共振奇点 item.siox.name=SiOX抗癌药物 +item.siox.desc=使用石棉的力量逆转间皮瘤! item.siren_track.name=警报声轨 item.smashing_hammer.name=粉碎锤 item.solid_fuel.name=固体燃料 @@ -3529,6 +3617,7 @@ item.wrench.name=管道扳手 item.wrench_archineer.name=Archineer扳手 item.wrench_flipped.name=刺刀扳手 item.xanax.name=NAXA 抗迪伽马药物 +item.xanax.desc=移除500mDRX迪伽马辐射 item.zirconium_legs.name=锆质护腿 itemGroup.tabBlocks=HBM 矿石和方块 itemGroup.tabConsumable=HBM 食物和装备 @@ -3664,6 +3753,9 @@ tile.block_cap_sparkle.name=核子可乐瓶盖方块 tile.block_cap_star.name=夕阳沙士星星瓶盖方块 tile.block_cap_sunset.name=夕阳沙士瓶盖方块 tile.block_cobalt.name=钴块 +tile.block_coke.coal.name=煤焦炭块 +tile.block_coke.lignite.name=褐煤焦炭块 +tile.block_coke.petroleum.name=石油焦炭块 tile.block_coltan.name=钽块 tile.block_combine_steel.name=CMB钢块 tile.block_copper.name=铜块 @@ -3938,6 +4030,9 @@ tile.dfc_stabilizer.name=DFC稳定器 tile.dirt_dead.name=泥渣 tile.dirt_oily.name=油泥 tile.drill_pipe.name=钻杆 +tile.door_bunker.name=仓门 +tile.door_metal.name=金属门 +tile.door_office.name=办公室门 tile.ducrete.name=高密度贫铀混凝土瓷砖 tile.ducrete_stairs.name=高密度贫铀混凝土瓷砖楼梯 tile.ducrete_smooth.name=高密度贫铀混凝土 @@ -3970,7 +4065,10 @@ tile.flame_war.name=盒中论战 tile.float_bomb.name=悬浮炸弹 tile.fluid_duct.name=通用流体管道 tile.fluid_duct_box.name=通用流体管道(方形) +tile.fluid_duct_gauge.name=流量计管 +tile.fluid_duct_gauge.desc=显示每个游戏刻在管网有多少流体移动的管道$由桶或罐连接的分离网络被视为一个共享网络。 tile.fluid_duct_neo.name=通用流体管道 +tile.fluid_duct_paintable.name=可喷漆涂层通用流体导管 tile.fluid_duct_solid.name=带涂层的通用流体导管 tile.foam_layer.name=泡沫层 tile.foundry_basin.name=铸造水池 @@ -3983,6 +4081,8 @@ tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=冰冻草 tile.frozen_log.name=冰冻原木 tile.frozen_planks.name=冰冻木板 +tile.furnace_combination.name=复式炼焦炉 +tile.furnace_combination.desc=一种可以生产木炭和煤焦炭的大熔炉$产生流体副产品$传热速率:ΔT*0.25 TU/T tile.furnace_iron.name=铁炉 tile.furnace_iron.desc=更大、效率更高的炉子,在闲置时不会浪费燃料。 tile.furnace_steel.name=钢炉 @@ -4056,6 +4156,8 @@ tile.heater_electric.name=电加热器 tile.heater_electric.desc=利用电能产生热量$以85%的效率接受来自底部的热量$可使用螺丝刀进行配置。 tile.heater_firebox.name=燃烧室 tile.heater_firebox.desc=燃烧固体燃料以产生热量。 +tile.heater_heatex.name=换热加热器 +tile.heater_heatex.desc=从热流体中产生热量。 tile.heater_oilburner.name=流体燃烧器 tile.heater_oilburner.desc=燃烧可燃液体产生热量。 tile.heater_oven.name=加热炉 @@ -4107,6 +4209,7 @@ tile.machine_chungus.desc=效率: 85%% tile.machine_coal_off.name=火力发电机 tile.machine_coal_on.name=火力发电机 tile.machine_combine_factory.name=CMB炼钢炉 +tile.machine_combustion_engine.name=工业内燃机 tile.machine_condenser.name=蒸汽冷凝器 tile.machine_controller.name=反应堆遥控模块 tile.machine_converter_he_rf.name=HE→RF转换器 @@ -4127,6 +4230,7 @@ tile.machine_drill.name=自动采矿钻机 tile.machine_electric_furnace_off.name=电炉 tile.machine_electric_furnace_on.name=电炉 tile.machine_epress.name=电动锻压机 +tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FEL自由电子激光器 tile.machine_fensu.name=FEnSU飞轮储能系统 tile.machine_flare.name=高架火炬 @@ -4148,6 +4252,7 @@ tile.machine_microwave.name=微波炉 tile.machine_mining_laser.name=采矿激光 tile.machine_minirtg.name=放射性同位素电池 tile.machine_missile_assembly.name=导弹装配台 +tile.machine_mixer.name=工业搅拌机 tile.machine_nuke_furnace_off.name=核熔炉 tile.machine_nuke_furnace_on.name=核熔炉 tile.machine_orbus.name=重型磁约束储罐 @@ -4245,6 +4350,7 @@ tile.ore_alexandrite.name=亚历山大变石矿 tile.ore_aluminium.name=铝矿石 tile.ore_asbestos.name=石棉矿 tile.ore_australium.name=奥斯矿石 +tile.ore_bedrock.name=基岩矿石 tile.ore_bedrock_coltan.name=基岩钶钽铁矿 tile.ore_bedrock_oil.name=基岩油层 tile.ore_beryllium.name=铍矿石 @@ -4318,7 +4424,7 @@ tile.pink_slab.name=粉色木半砖 tile.pink_stairs.name=粉色木台阶 tile.plant_dead.name=死亡植物 tile.plant_flower.foxglove.name=毛地黄 -tile.plant_flower.nightshade.name=致命茄 +tile.plant_flower.nightshade.name=颠茄 tile.plant_flower.tobacco.name=烟草 tile.plant_flower.weed.name=大麻 tile.plant_reeds.name=芦苇 @@ -4373,6 +4479,7 @@ tile.reactor_inserter.name=反应堆燃料插入器 tile.red_barrel.name=炸药桶 tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(经典型) +tile.red_cable_paintable.name=可涂漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=电线杆 tile.red_pylon_large.name=大型输电塔 @@ -4533,7 +4640,7 @@ trait.rbmk.depletion=燃料消耗: %s trait.rbmk.diffusion=扩散度: %s trait.rbmk.fluxFunc=中子放射函数: %s trait.rbmk.funcType=中子放射函数类型: %s -trait.rbmk.heat=满功率时每刻产生的热量: %s +trait.rbmk.heat=每接受一个中子产生的热量: %s trait.rbmk.melt=熔点: %s trait.rbmk.neutron.any=所有中子 trait.rbmk.neutron.fast=快中子 @@ -4550,7 +4657,7 @@ trait.rbmx.depletion=衰变: %s trait.rbmx.diffusion=能量潮涌: %s trait.rbmx.fluxFunc=F迪伽马粒子放射函数: %s trait.rbmx.funcType=F迪伽马粒子放射函数类型: %s -trait.rbmx.heat=满功率时每刻产生的热量: %s +trait.rbmx.heat=满功率下每刻产生的热量: %s trait.rbmx.melt=崩溃深度: %s trait.rbmk.neutron.any.x=所有非欧几里德形时空平面 trait.rbmk.neutron.fast.x=椭圆非欧几里德形时空平面 diff --git a/src/main/resources/assets/hbm/models/brimstone.obj b/src/main/resources/assets/hbm/models/brimstone.obj deleted file mode 100644 index c14450a78..000000000 --- a/src/main/resources/assets/hbm/models/brimstone.obj +++ /dev/null @@ -1,7091 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'brimstone_unified.blend' -# www.blender.org -o Cylinder.013 -v 0.266224 0.813588 -0.337500 -v 0.102394 0.928303 -0.337500 -v 0.301713 0.864270 -0.311872 -v 0.137882 0.978985 -0.311872 -v 0.316412 0.885263 -0.250000 -v 0.152582 0.999979 -0.250000 -v 0.301713 0.864270 -0.188128 -v 0.137882 0.978985 -0.188128 -v 0.266224 0.813588 -0.162500 -v 0.102394 0.928303 -0.162500 -v 0.230736 0.762905 -0.188128 -v 0.066906 0.877621 -0.188128 -v 0.216036 0.741912 -0.250000 -v 0.052206 0.856627 -0.250000 -v 0.230736 0.762905 -0.311872 -v 0.066906 0.877621 -0.311872 -v 0.307182 0.784909 -0.293750 -v 0.324926 0.810250 -0.280936 -v 0.332276 0.820747 -0.250000 -v 0.324926 0.810250 -0.219064 -v 0.307182 0.784909 -0.206250 -v 0.289438 0.759568 -0.219064 -v 0.282088 0.749071 -0.250000 -v 0.289438 0.759568 -0.280936 -v 0.348140 0.756230 -0.293750 -v 0.365884 0.781571 -0.280936 -v 0.373234 0.792068 -0.250000 -v 0.365884 0.781571 -0.219064 -v 0.348140 0.756230 -0.206250 -v 0.330396 0.730889 -0.219064 -v 0.323046 0.720392 -0.250000 -v 0.330396 0.730889 -0.280936 -v 0.335852 0.764834 -0.381250 -v 0.389085 0.840857 -0.342808 -v 0.411134 0.872347 -0.250000 -v 0.389085 0.840857 -0.157192 -v 0.335852 0.764834 -0.118750 -v 0.282620 0.688810 -0.157192 -v 0.260570 0.657320 -0.250000 -v 0.282620 0.688810 -0.342808 -v 0.380906 0.733287 -0.381250 -v 0.434138 0.809311 -0.342808 -v 0.456188 0.840801 -0.250000 -v 0.434138 0.809311 -0.157192 -v 0.380906 0.733287 -0.118750 -v 0.327673 0.657263 -0.157192 -v 0.305624 0.625773 -0.250000 -v 0.327673 0.657263 -0.342808 -v 0.368618 0.741891 -0.293750 -v 0.386363 0.767232 -0.280936 -v 0.393712 0.777728 -0.250000 -v 0.386363 0.767232 -0.219064 -v 0.368618 0.741891 -0.206250 -v 0.350874 0.716549 -0.219064 -v 0.343524 0.706053 -0.250000 -v 0.350874 0.716549 -0.280936 -v 0.389097 0.727551 -0.271875 -v 0.397969 0.740222 -0.265468 -v 0.401644 0.745470 -0.250000 -v 0.397969 0.740222 -0.234532 -v 0.389097 0.727551 -0.228125 -v 0.380225 0.714880 -0.234532 -v 0.376550 0.709632 -0.250000 -v 0.380225 0.714880 -0.265468 -v 0.229810 1.229810 -1.037500 -v 0.088388 1.088388 -1.037500 -v 0.186060 1.273560 -1.011872 -v 0.044638 1.132138 -1.011872 -v 0.167938 1.291682 -0.950000 -v 0.026517 1.150260 -0.950000 -v 0.186060 1.273560 -0.888128 -v 0.044638 1.132138 -0.888128 -v 0.229810 1.229810 -0.862500 -v 0.088388 1.088388 -0.862500 -v 0.273560 1.186060 -0.888128 -v 0.132138 1.044638 -0.888128 -v 0.291682 1.167938 -0.950000 -v 0.150260 1.026516 -0.950000 -v 0.273560 1.186060 -1.011872 -v 0.132138 1.044638 -1.011872 -v 0.265165 1.265165 -0.993750 -v 0.243290 1.287040 -0.980936 -v 0.234229 1.296101 -0.950000 -v 0.243290 1.287040 -0.919064 -v 0.265165 1.265165 -0.906250 -v 0.287040 1.243290 -0.919064 -v 0.296101 1.234229 -0.950000 -v 0.287040 1.243290 -0.980936 -v 0.300520 1.300520 -0.993750 -v 0.278645 1.322395 -0.980936 -v 0.269585 1.331456 -0.950000 -v 0.278645 1.322395 -0.919064 -v 0.300520 1.300520 -0.906250 -v 0.322395 1.278645 -0.919064 -v 0.331456 1.269584 -0.950000 -v 0.322395 1.278645 -0.980936 -v 0.289914 1.289914 -1.081250 -v 0.224289 1.355539 -1.042808 -v 0.197106 1.382721 -0.950000 -v 0.224289 1.355539 -0.857192 -v 0.289914 1.289914 -0.818750 -v 0.355539 1.224289 -0.857192 -v 0.382722 1.197106 -0.950000 -v 0.355539 1.224289 -1.042808 -v 0.328805 1.328805 -1.081250 -v 0.263180 1.394430 -1.042808 -v 0.235997 1.421612 -0.950000 -v 0.263180 1.394430 -0.857192 -v 0.328805 1.328805 -0.818750 -v 0.394430 1.263180 -0.857192 -v 0.421612 1.235997 -0.950000 -v 0.394430 1.263180 -1.042808 -v 0.318198 1.318198 -0.993750 -v 0.296323 1.340073 -0.980936 -v 0.287262 1.349134 -0.950000 -v 0.296323 1.340073 -0.919064 -v 0.318198 1.318198 -0.906250 -v 0.340073 1.296323 -0.919064 -v 0.349134 1.287262 -0.950000 -v 0.340073 1.296323 -0.980936 -v 0.335876 1.335876 -0.971875 -v 0.324938 1.346813 -0.965468 -v 0.320408 1.351344 -0.950000 -v 0.324938 1.346813 -0.934532 -v 0.335876 1.335876 -0.928125 -v 0.346813 1.324938 -0.934532 -v 0.351344 1.320408 -0.950000 -v 0.346813 1.324938 -0.965468 -v -0.162500 1.281458 0.262500 -v -0.062500 1.108253 0.262500 -v -0.216083 1.250522 0.288128 -v -0.116083 1.077317 0.288128 -v -0.238277 1.237708 0.350000 -v -0.138277 1.064503 0.350000 -v -0.216083 1.250522 0.411872 -v -0.116083 1.077317 0.411872 -v -0.162500 1.281458 0.437500 -v -0.062500 1.108253 0.437500 -v -0.108917 1.312394 0.411872 -v -0.008917 1.139189 0.411872 -v -0.086723 1.325208 0.350000 -v 0.013277 1.152003 0.350000 -v -0.108917 1.312394 0.288128 -v -0.008917 1.139189 0.288128 -v -0.187500 1.324759 0.306250 -v -0.214291 1.309292 0.319064 -v -0.225389 1.302885 0.350000 -v -0.214291 1.309292 0.380936 -v -0.187500 1.324759 0.393750 -v -0.160709 1.340227 0.380936 -v -0.149611 1.346635 0.350000 -v -0.160709 1.340227 0.319064 -v -0.212500 1.368061 0.306250 -v -0.239291 1.352593 0.319064 -v -0.250389 1.346186 0.350000 -v -0.239291 1.352593 0.380936 -v -0.212500 1.368061 0.393750 -v -0.185709 1.383529 0.380936 -v -0.174611 1.389936 0.350000 -v -0.185709 1.383529 0.319064 -v -0.205000 1.355070 0.218750 -v -0.285374 1.308667 0.257192 -v -0.318666 1.289445 0.350000 -v -0.285374 1.308667 0.442808 -v -0.205000 1.355070 0.481250 -v -0.124626 1.401474 0.442808 -v -0.091334 1.420695 0.350000 -v -0.124626 1.401474 0.257192 -v -0.232500 1.402702 0.218750 -v -0.312874 1.356298 0.257192 -v -0.346166 1.337077 0.350000 -v -0.312874 1.356298 0.442808 -v -0.232500 1.402702 0.481250 -v -0.152126 1.449106 0.442808 -v -0.118834 1.468327 0.350000 -v -0.152126 1.449106 0.257192 -v -0.225000 1.389711 0.306250 -v -0.251791 1.374243 0.319064 -v -0.262889 1.367836 0.350000 -v -0.251791 1.374243 0.380936 -v -0.225000 1.389711 0.393750 -v -0.198209 1.405179 0.380936 -v -0.187111 1.411586 0.350000 -v -0.198209 1.405179 0.319064 -v -0.237500 1.411362 0.328125 -v -0.250896 1.403628 0.334532 -v -0.256444 1.400425 0.350000 -v -0.250896 1.403628 0.365468 -v -0.237500 1.411362 0.371875 -v -0.224104 1.419096 0.365468 -v -0.218556 1.422300 0.350000 -v -0.224104 1.419096 0.334532 -v 0.445000 0.832342 -0.609143 -v 0.445000 0.757342 -0.739046 -v 0.500243 0.852158 -0.620584 -v 0.500243 0.777158 -0.750487 -v 0.523125 0.900000 -0.648205 -v 0.523125 0.825000 -0.778109 -v 0.500243 0.947842 -0.675826 -v 0.500243 0.872842 -0.805730 -v 0.445000 0.967658 -0.687268 -v 0.445000 0.892658 -0.817171 -v 0.389757 0.947842 -0.675826 -v 0.389757 0.872842 -0.805730 -v 0.366875 0.900000 -0.648205 -v 0.366875 0.825000 -0.778109 -v 0.389757 0.852158 -0.620584 -v 0.389757 0.777158 -0.750487 -v 0.481460 0.780925 -0.781529 -v 0.445000 0.767846 -0.773978 -v 0.496562 0.812500 -0.799760 -v 0.481460 0.844075 -0.817990 -v 0.445000 0.857154 -0.825541 -v 0.408540 0.844075 -0.817990 -v 0.393437 0.812500 -0.799760 -v 0.408540 0.780925 -0.781529 -v 0.463230 0.796712 -0.790644 -v 0.445000 0.790173 -0.786869 -v 0.470781 0.812500 -0.799760 -v 0.463230 0.828288 -0.808874 -v 0.445000 0.834827 -0.812650 -v 0.426770 0.828288 -0.808874 -v 0.419219 0.812500 -0.799760 -v 0.426770 0.796712 -0.790644 -v 0.461573 0.748147 -0.878076 -v 0.445000 0.742203 -0.874643 -v 0.468437 0.762500 -0.886362 -v 0.461573 0.776852 -0.894648 -v 0.445000 0.782797 -0.898081 -v 0.428427 0.776852 -0.894648 -v 0.421562 0.762500 -0.886362 -v 0.428427 0.748147 -0.878076 -v 0.445000 0.884405 -0.581466 -v 0.478146 0.896295 -0.588331 -v 0.491875 0.925000 -0.604904 -v 0.478146 0.953705 -0.621477 -v 0.445000 0.965595 -0.628341 -v 0.411854 0.953705 -0.621477 -v 0.398125 0.925000 -0.604904 -v 0.411854 0.896295 -0.588331 -v 0.445000 0.959405 -0.451562 -v 0.478146 0.971295 -0.458427 -v 0.491875 1.000000 -0.475000 -v 0.478146 1.028705 -0.491573 -v 0.445000 1.040595 -0.498438 -v 0.411854 1.028705 -0.491573 -v 0.398125 1.000000 -0.475000 -v 0.411854 0.971295 -0.458427 -v 0.445000 1.200000 -0.553125 -v 0.445000 1.350000 -0.553125 -v 0.500243 1.200000 -0.530243 -v 0.500243 1.350000 -0.530243 -v 0.523125 1.200000 -0.475000 -v 0.523125 1.350000 -0.475000 -v 0.500243 1.200000 -0.419757 -v 0.500243 1.350000 -0.419757 -v 0.445000 1.200000 -0.396875 -v 0.445000 1.350000 -0.396875 -v 0.389757 1.200000 -0.419757 -v 0.389757 1.350000 -0.419757 -v 0.366875 1.200000 -0.475000 -v 0.366875 1.350000 -0.475000 -v 0.389757 1.200000 -0.530243 -v 0.389757 1.350000 -0.530243 -v 0.481460 1.375000 -0.511460 -v 0.445000 1.375000 -0.526563 -v 0.496562 1.375000 -0.475000 -v 0.481460 1.375000 -0.438540 -v 0.445000 1.375000 -0.423437 -v 0.408540 1.375000 -0.438540 -v 0.393437 1.375000 -0.475000 -v 0.408540 1.375000 -0.511460 -v 0.463230 1.375000 -0.493230 -v 0.445000 1.375000 -0.500781 -v 0.470781 1.375000 -0.475000 -v 0.463230 1.375000 -0.456770 -v 0.445000 1.375000 -0.449219 -v 0.426770 1.375000 -0.456770 -v 0.419219 1.375000 -0.475000 -v 0.426770 1.375000 -0.493230 -v 0.461573 1.475000 -0.491573 -v 0.445000 1.475000 -0.498437 -v 0.468437 1.475000 -0.475000 -v 0.461573 1.475000 -0.458427 -v 0.445000 1.475000 -0.451562 -v 0.428427 1.475000 -0.458427 -v 0.421562 1.475000 -0.475000 -v 0.428427 1.475000 -0.491573 -v 0.445000 1.150000 -0.521875 -v 0.478146 1.150000 -0.508146 -v 0.491875 1.150000 -0.475000 -v 0.478146 1.150000 -0.441854 -v 0.445000 1.150000 -0.428125 -v 0.411854 1.150000 -0.441854 -v 0.398125 1.150000 -0.475000 -v 0.411854 1.150000 -0.508146 -v 0.445000 1.000000 -0.521875 -v 0.478146 1.000000 -0.508146 -v 0.491875 1.000000 -0.475000 -v 0.478146 1.000000 -0.441854 -v 0.445000 1.000000 -0.428125 -v 0.411854 1.000000 -0.441854 -v 0.398125 1.000000 -0.475000 -v 0.411854 1.000000 -0.508146 -v 0.445000 1.200000 -0.078125 -v 0.445000 1.350000 -0.078125 -v 0.500243 1.200000 -0.055243 -v 0.500243 1.350000 -0.055243 -v 0.523125 1.200000 0.000000 -v 0.523125 1.350000 0.000000 -v 0.500243 1.200000 0.055243 -v 0.500243 1.350000 0.055243 -v 0.445000 1.200000 0.078125 -v 0.445000 1.350000 0.078125 -v 0.389757 1.200000 0.055243 -v 0.389757 1.350000 0.055243 -v 0.366875 1.200000 0.000000 -v 0.366875 1.350000 0.000000 -v 0.389757 1.200000 -0.055243 -v 0.389757 1.350000 -0.055243 -v 0.481460 1.375000 -0.036460 -v 0.445000 1.375000 -0.051563 -v 0.496562 1.375000 0.000000 -v 0.481460 1.375000 0.036460 -v 0.445000 1.375000 0.051563 -v 0.408540 1.375000 0.036460 -v 0.393437 1.375000 0.000000 -v 0.408540 1.375000 -0.036460 -v 0.463230 1.375000 -0.018230 -v 0.445000 1.375000 -0.025781 -v 0.470781 1.375000 0.000000 -v 0.463230 1.375000 0.018230 -v 0.445000 1.375000 0.025781 -v 0.426770 1.375000 0.018230 -v 0.419219 1.375000 0.000000 -v 0.426770 1.375000 -0.018230 -v 0.461573 1.475000 -0.016573 -v 0.445000 1.475000 -0.023438 -v 0.468437 1.475000 0.000000 -v 0.461573 1.475000 0.016573 -v 0.445000 1.475000 0.023438 -v 0.428427 1.475000 0.016573 -v 0.421562 1.475000 0.000000 -v 0.428427 1.475000 -0.016573 -v 0.445000 1.150000 -0.046875 -v 0.478146 1.150000 -0.033146 -v 0.491875 1.150000 0.000000 -v 0.478146 1.150000 0.033146 -v 0.445000 1.150000 0.046875 -v 0.411854 1.150000 0.033146 -v 0.398125 1.150000 0.000000 -v 0.411854 1.150000 -0.033146 -v 0.445000 1.000000 -0.046875 -v 0.478146 1.000000 -0.033146 -v 0.491875 1.000000 0.000000 -v 0.478146 1.000000 0.033146 -v 0.445000 1.000000 0.046875 -v 0.411854 1.000000 0.033146 -v 0.398125 1.000000 0.000000 -v 0.411854 1.000000 -0.033146 -v -0.300000 1.061872 -0.536872 -v -0.300000 1.000000 -0.562500 -v -0.350000 1.000000 -0.600000 -v -0.400000 1.000000 -0.600000 -v -0.350000 1.088388 -0.563388 -v -0.400000 1.088388 -0.563388 -v -0.350000 1.125000 -0.475000 -v -0.400000 1.125000 -0.475000 -v -0.350000 1.088388 -0.386612 -v -0.400000 1.088388 -0.386612 -v -0.350000 1.000000 -0.350000 -v -0.400000 1.000000 -0.350000 -v -0.350000 0.911612 -0.386612 -v -0.400000 0.911611 -0.386612 -v -0.350000 0.875000 -0.475000 -v -0.400000 0.875000 -0.475000 -v -0.350000 0.911612 -0.563388 -v -0.400000 0.911611 -0.563388 -v -0.300000 1.087500 -0.475000 -v -0.300000 1.061872 -0.413128 -v -0.300000 1.000000 -0.387500 -v -0.300000 0.938128 -0.413128 -v -0.300000 0.912500 -0.475000 -v -0.300000 0.938128 -0.536872 -v -0.200000 0.938128 -0.536872 -v -0.200000 1.000000 -0.562500 -v -0.200000 0.912500 -0.475000 -v -0.200000 0.938128 -0.413128 -v -0.200000 1.000000 -0.387500 -v -0.200000 1.061872 -0.413128 -v -0.200000 1.087500 -0.475000 -v -0.200000 1.061872 -0.536872 -v -0.400000 1.066291 -0.541291 -v -0.400000 1.000000 -0.568750 -v -0.400000 1.093750 -0.475000 -v -0.400000 1.066291 -0.408709 -v -0.400000 1.000000 -0.381250 -v -0.400000 0.933709 -0.408709 -v -0.400000 0.906250 -0.475000 -v -0.400000 0.933709 -0.541291 -v -0.350000 1.033145 -0.508146 -v -0.350000 1.000000 -0.521875 -v -0.350000 1.046875 -0.475000 -v -0.350000 1.033145 -0.441854 -v -0.350000 1.000000 -0.428125 -v -0.350000 0.966854 -0.441854 -v -0.350000 0.953125 -0.475000 -v -0.350000 0.966854 -0.508146 -v 0.500000 0.938128 -0.536872 -v 0.500000 1.000000 -0.562500 -v 0.500000 1.000000 -0.600000 -v 0.600000 1.000000 -0.600000 -v 0.500000 0.911612 -0.563388 -v 0.600000 0.911612 -0.563388 -v 0.500000 0.875000 -0.475000 -v 0.600000 0.875000 -0.475000 -v 0.500000 0.911612 -0.386612 -v 0.600000 0.911612 -0.386612 -v 0.500000 1.000000 -0.350000 -v 0.600000 1.000000 -0.350000 -v 0.500000 1.088388 -0.386612 -v 0.600000 1.088388 -0.386612 -v 0.500000 1.125000 -0.475000 -v 0.600000 1.125000 -0.475000 -v 0.500000 1.088388 -0.563388 -v 0.600000 1.088388 -0.563388 -v 0.500000 0.912500 -0.475000 -v 0.500000 0.938128 -0.413128 -v 0.500000 1.000000 -0.387500 -v 0.500000 1.061872 -0.413128 -v 0.500000 1.087500 -0.475000 -v 0.500000 1.061872 -0.536872 -v 0.400000 1.061872 -0.536872 -v 0.400000 1.000000 -0.562500 -v 0.400000 1.087500 -0.475000 -v 0.400000 1.061872 -0.413128 -v 0.400000 1.000000 -0.387500 -v 0.400000 0.938128 -0.413128 -v 0.400000 0.912500 -0.475000 -v 0.400000 0.938128 -0.536872 -v 0.400000 1.088388 -0.563388 -v 0.400000 1.000000 -0.600000 -v 0.400000 1.125000 -0.475000 -v 0.400000 1.088388 -0.386612 -v 0.400000 1.000000 -0.350000 -v 0.400000 0.911612 -0.386612 -v 0.400000 0.875000 -0.475000 -v 0.400000 0.911612 -0.563388 -v 0.350000 1.088388 -0.563388 -v 0.350000 1.000000 -0.600000 -v 0.350000 1.125000 -0.475000 -v 0.350000 1.088388 -0.386612 -v 0.350000 1.000000 -0.350000 -v 0.350000 0.911612 -0.386612 -v 0.350000 0.875000 -0.475000 -v 0.350000 0.911612 -0.563388 -v 0.350000 1.061872 -0.536872 -v 0.350000 1.000000 -0.562500 -v 0.350000 1.087500 -0.475000 -v 0.350000 1.061872 -0.413128 -v 0.350000 1.000000 -0.387500 -v 0.350000 0.938128 -0.413128 -v 0.350000 0.912500 -0.475000 -v 0.350000 0.938128 -0.536872 -v 0.150000 1.061872 -0.536872 -v 0.150000 1.000000 -0.562500 -v 0.150000 1.087500 -0.475000 -v 0.150000 1.061872 -0.413128 -v 0.150000 1.000000 -0.387500 -v 0.150000 0.938128 -0.413128 -v 0.150000 0.912500 -0.475000 -v 0.150000 0.938128 -0.536872 -v 0.600000 0.933709 -0.541291 -v 0.600000 1.000000 -0.568750 -v 0.600000 0.906250 -0.475000 -v 0.600000 0.933709 -0.408709 -v 0.600000 1.000000 -0.381250 -v 0.600000 1.066291 -0.408709 -v 0.600000 1.093750 -0.475000 -v 0.600000 1.066291 -0.541291 -v 0.550000 0.966854 -0.508146 -v 0.550000 1.000000 -0.521875 -v 0.550000 0.953125 -0.475000 -v 0.550000 0.966854 -0.441854 -v 0.550000 1.000000 -0.428125 -v 0.550000 1.033146 -0.441854 -v 0.550000 1.046875 -0.475000 -v 0.550000 1.033146 -0.508146 -v -0.300000 1.061872 -0.061872 -v -0.300000 1.000000 -0.087500 -v -0.350000 1.000000 -0.125000 -v -0.400000 1.000000 -0.125000 -v -0.350000 1.088388 -0.088388 -v -0.400000 1.088388 -0.088388 -v -0.350000 1.125000 0.000000 -v -0.400000 1.125000 0.000000 -v -0.350000 1.088388 0.088388 -v -0.400000 1.088388 0.088388 -v -0.350000 1.000000 0.125000 -v -0.400000 1.000000 0.125000 -v -0.350000 0.911612 0.088388 -v -0.400000 0.911611 0.088388 -v -0.350000 0.875000 0.000000 -v -0.400000 0.875000 0.000000 -v -0.350000 0.911612 -0.088388 -v -0.400000 0.911611 -0.088388 -v -0.300000 1.087500 0.000000 -v -0.300000 1.061872 0.061872 -v -0.300000 1.000000 0.087500 -v -0.300000 0.938128 0.061872 -v -0.300000 0.912500 0.000000 -v -0.300000 0.938128 -0.061872 -v -0.200000 0.938128 -0.061872 -v -0.200000 1.000000 -0.087500 -v -0.200000 0.912500 0.000000 -v -0.200000 0.938128 0.061872 -v -0.200000 1.000000 0.087500 -v -0.200000 1.061872 0.061872 -v -0.200000 1.087500 0.000000 -v -0.200000 1.061872 -0.061872 -v -0.400000 1.066291 -0.066291 -v -0.400000 1.000000 -0.093750 -v -0.400000 1.093750 0.000000 -v -0.400000 1.066291 0.066291 -v -0.400000 1.000000 0.093750 -v -0.400000 0.933709 0.066291 -v -0.400000 0.906250 0.000000 -v -0.400000 0.933709 -0.066291 -v -0.350000 1.033145 -0.033146 -v -0.350000 1.000000 -0.046875 -v -0.350000 1.046875 0.000000 -v -0.350000 1.033145 0.033146 -v -0.350000 1.000000 0.046875 -v -0.350000 0.966854 0.033146 -v -0.350000 0.953125 0.000000 -v -0.350000 0.966854 -0.033146 -v 0.500000 0.938128 -0.061872 -v 0.500000 1.000000 -0.087500 -v 0.500000 1.000000 -0.125000 -v 0.600000 1.000000 -0.125000 -v 0.500000 0.911612 -0.088388 -v 0.600000 0.911612 -0.088388 -v 0.500000 0.875000 0.000000 -v 0.600000 0.875000 0.000000 -v 0.500000 0.911612 0.088388 -v 0.600000 0.911612 0.088388 -v 0.500000 1.000000 0.125000 -v 0.600000 1.000000 0.125000 -v 0.500000 1.088388 0.088388 -v 0.600000 1.088388 0.088388 -v 0.500000 1.125000 0.000000 -v 0.600000 1.125000 0.000000 -v 0.500000 1.088388 -0.088388 -v 0.600000 1.088388 -0.088388 -v 0.500000 0.912500 0.000000 -v 0.500000 0.938128 0.061872 -v 0.500000 1.000000 0.087500 -v 0.500000 1.061872 0.061872 -v 0.500000 1.087500 0.000000 -v 0.500000 1.061872 -0.061872 -v 0.400000 1.061872 -0.061872 -v 0.400000 1.000000 -0.087500 -v 0.400000 1.087500 0.000000 -v 0.400000 1.061872 0.061872 -v 0.400000 1.000000 0.087500 -v 0.400000 0.938128 0.061872 -v 0.400000 0.912500 0.000000 -v 0.400000 0.938128 -0.061872 -v 0.400000 1.088388 -0.088388 -v 0.400000 1.000000 -0.125000 -v 0.400000 1.125000 0.000000 -v 0.400000 1.088388 0.088388 -v 0.400000 1.000000 0.125000 -v 0.400000 0.911612 0.088388 -v 0.400000 0.875000 0.000000 -v 0.400000 0.911612 -0.088388 -v 0.350000 1.088388 -0.088388 -v 0.350000 1.000000 -0.125000 -v 0.350000 1.125000 0.000000 -v 0.350000 1.088388 0.088388 -v 0.350000 1.000000 0.125000 -v 0.350000 0.911612 0.088388 -v 0.350000 0.875000 0.000000 -v 0.350000 0.911612 -0.088388 -v 0.350000 1.061872 -0.061872 -v 0.350000 1.000000 -0.087500 -v 0.350000 1.087500 0.000000 -v 0.350000 1.061872 0.061872 -v 0.350000 1.000000 0.087500 -v 0.350000 0.938128 0.061872 -v 0.350000 0.912500 0.000000 -v 0.350000 0.938128 -0.061872 -v 0.150000 1.061872 -0.061872 -v 0.150000 1.000000 -0.087500 -v 0.150000 1.087500 0.000000 -v 0.150000 1.061872 0.061872 -v 0.150000 1.000000 0.087500 -v 0.150000 0.938128 0.061872 -v 0.150000 0.912500 0.000000 -v 0.150000 0.938128 -0.061872 -v 0.600000 0.933709 -0.066291 -v 0.600000 1.000000 -0.093750 -v 0.600000 0.906250 0.000000 -v 0.600000 0.933709 0.066291 -v 0.600000 1.000000 0.093750 -v 0.600000 1.066291 0.066291 -v 0.600000 1.093750 0.000000 -v 0.600000 1.066291 -0.066291 -v 0.550000 0.966854 -0.033146 -v 0.550000 1.000000 -0.046875 -v 0.550000 0.953125 0.000000 -v 0.550000 0.966854 0.033146 -v 0.550000 1.000000 0.046875 -v 0.550000 1.033146 0.033146 -v 0.550000 1.046875 0.000000 -v 0.550000 1.033146 -0.033146 -v -0.325000 1.000000 -1.037500 -v -0.125000 1.000000 -1.037500 -v -0.325000 0.938128 -1.011872 -v -0.125000 0.938128 -1.011872 -v -0.325000 0.912500 -0.950000 -v -0.125000 0.912500 -0.950000 -v -0.325000 0.938128 -0.888128 -v -0.125000 0.938128 -0.888128 -v -0.325000 1.000000 -0.862500 -v -0.125000 1.000000 -0.862500 -v -0.325000 1.061872 -0.888128 -v -0.125000 1.061872 -0.888128 -v -0.325000 1.087500 -0.950000 -v -0.125000 1.087500 -0.950000 -v -0.325000 1.061872 -1.011872 -v -0.125000 1.061872 -1.011872 -v -0.375000 1.000000 -0.993750 -v -0.375000 0.969064 -0.980936 -v -0.375000 0.956250 -0.950000 -v -0.375000 0.969064 -0.919064 -v -0.375000 1.000000 -0.906250 -v -0.375000 1.030936 -0.919064 -v -0.375000 1.043750 -0.950000 -v -0.375000 1.030936 -0.980936 -v -0.425000 1.000000 -0.993750 -v -0.425000 0.969064 -0.980936 -v -0.425000 0.956250 -0.950000 -v -0.425000 0.969064 -0.919064 -v -0.425000 1.000000 -0.906250 -v -0.425000 1.030936 -0.919064 -v -0.425000 1.043750 -0.950000 -v -0.425000 1.030936 -0.980936 -v -0.410000 1.000000 -1.081250 -v -0.410000 0.907192 -1.042808 -v -0.410000 0.868750 -0.950000 -v -0.410000 0.907192 -0.857192 -v -0.410000 1.000000 -0.818750 -v -0.410000 1.092808 -0.857192 -v -0.410000 1.131250 -0.950000 -v -0.410000 1.092808 -1.042808 -v -0.465000 1.000000 -1.081250 -v -0.465000 0.907192 -1.042808 -v -0.465000 0.868750 -0.950000 -v -0.465000 0.907192 -0.857192 -v -0.465000 1.000000 -0.818750 -v -0.465000 1.092808 -0.857192 -v -0.465000 1.131250 -0.950000 -v -0.465000 1.092808 -1.042808 -v -0.450000 1.000000 -0.993750 -v -0.450000 0.969064 -0.980936 -v -0.450000 0.956250 -0.950000 -v -0.450000 0.969064 -0.919064 -v -0.450000 1.000000 -0.906250 -v -0.450000 1.030936 -0.919064 -v -0.450000 1.043750 -0.950000 -v -0.450000 1.030936 -0.980936 -v -0.475000 1.000000 -0.971875 -v -0.475000 0.984532 -0.965468 -v -0.475000 0.978125 -0.950000 -v -0.475000 0.984532 -0.934532 -v -0.475000 1.000000 -0.928125 -v -0.475000 1.015468 -0.934532 -v -0.475000 1.021875 -0.950000 -v -0.475000 1.015468 -0.965468 -v 0.445000 1.214279 0.713718 -v 0.445000 1.350225 0.777111 -v 0.500243 1.204608 0.734457 -v 0.500243 1.340554 0.797849 -v 0.523125 1.181262 0.784524 -v 0.523125 1.317208 0.847916 -v 0.500243 1.157915 0.834591 -v 0.500243 1.293861 0.897983 -v 0.445000 1.148245 0.855329 -v 0.445000 1.284191 0.918722 -v 0.389757 1.157915 0.834591 -v 0.389757 1.293861 0.897983 -v 0.366875 1.181262 0.784524 -v 0.366875 1.317208 0.847916 -v 0.389757 1.204608 0.734457 -v 0.389757 1.340554 0.797849 -v 0.481460 1.355274 0.825438 -v 0.445000 1.361657 0.811750 -v 0.496563 1.339865 0.858482 -v 0.481460 1.324457 0.891526 -v 0.445000 1.318074 0.905213 -v 0.408540 1.324457 0.891526 -v 0.393437 1.339865 0.858482 -v 0.408540 1.355274 0.825438 -v 0.463230 1.347570 0.841960 -v 0.445000 1.350761 0.835116 -v 0.470781 1.339865 0.858482 -v 0.463230 1.332161 0.875004 -v 0.445000 1.328970 0.881848 -v 0.426770 1.332161 0.875004 -v 0.419219 1.339865 0.858482 -v 0.426770 1.347570 0.841960 -v 0.461573 1.437500 0.885724 -v 0.445000 1.440401 0.879502 -v 0.468438 1.430496 0.900744 -v 0.461573 1.423492 0.915764 -v 0.445000 1.420591 0.921985 -v 0.428427 1.423492 0.915764 -v 0.421562 1.430496 0.900744 -v 0.428427 1.437500 0.885724 -v 0.445000 1.155756 0.720910 -v 0.478146 1.149954 0.733353 -v 0.491875 1.135946 0.763393 -v 0.478146 1.121938 0.793433 -v 0.445000 1.116136 0.805876 -v 0.411854 1.121938 0.793433 -v 0.398125 1.135946 0.763393 -v 0.411854 1.149954 0.733353 -v 0.445000 1.019810 0.657517 -v 0.478146 1.014008 0.669960 -v 0.491875 1.000000 0.700000 -v 0.478146 0.985992 0.730040 -v 0.445000 0.980190 0.742483 -v 0.411854 0.985992 0.730040 -v 0.398125 1.000000 0.700000 -v 0.411854 1.014008 0.669960 -v -0.300000 1.061872 0.638128 -v -0.300000 1.000000 0.612500 -v -0.350000 1.000000 0.575000 -v -0.400000 1.000000 0.575000 -v -0.350000 1.088388 0.611612 -v -0.400000 1.088388 0.611612 -v -0.350000 1.125000 0.700000 -v -0.400000 1.125000 0.700000 -v -0.350000 1.088388 0.788388 -v -0.400000 1.088388 0.788388 -v -0.350000 1.000000 0.825000 -v -0.400000 1.000000 0.825000 -v -0.350000 0.911612 0.788388 -v -0.400000 0.911611 0.788388 -v -0.350000 0.875000 0.700000 -v -0.400000 0.875000 0.700000 -v -0.350000 0.911612 0.611612 -v -0.400000 0.911611 0.611612 -v -0.300000 1.087500 0.700000 -v -0.300000 1.061872 0.761872 -v -0.300000 1.000000 0.787500 -v -0.300000 0.938128 0.761872 -v -0.300000 0.912500 0.700000 -v -0.300000 0.938128 0.638128 -v -0.200000 0.938128 0.638128 -v -0.200000 1.000000 0.612500 -v -0.200000 0.912500 0.700000 -v -0.200000 0.938128 0.761872 -v -0.200000 1.000000 0.787500 -v -0.200000 1.061872 0.761872 -v -0.200000 1.087500 0.700000 -v -0.200000 1.061872 0.638128 -v -0.400000 1.066291 0.633709 -v -0.400000 1.000000 0.606250 -v -0.400000 1.093750 0.700000 -v -0.400000 1.066291 0.766291 -v -0.400000 1.000000 0.793750 -v -0.400000 0.933709 0.766291 -v -0.400000 0.906250 0.700000 -v -0.400000 0.933709 0.633709 -v -0.350000 1.033145 0.666854 -v -0.350000 1.000000 0.653125 -v -0.350000 1.046875 0.700000 -v -0.350000 1.033145 0.733146 -v -0.350000 1.000000 0.746875 -v -0.350000 0.966854 0.733146 -v -0.350000 0.953125 0.700000 -v -0.350000 0.966854 0.666854 -v 0.500000 0.938128 0.638128 -v 0.500000 1.000000 0.612500 -v 0.500000 1.000000 0.575000 -v 0.600000 1.000000 0.575000 -v 0.500000 0.911612 0.611612 -v 0.600000 0.911612 0.611612 -v 0.500000 0.875000 0.700000 -v 0.600000 0.875000 0.700000 -v 0.500000 0.911612 0.788388 -v 0.600000 0.911612 0.788388 -v 0.500000 1.000000 0.825000 -v 0.600000 1.000000 0.825000 -v 0.500000 1.088388 0.788388 -v 0.600000 1.088388 0.788388 -v 0.500000 1.125000 0.700000 -v 0.600000 1.125000 0.700000 -v 0.500000 1.088388 0.611612 -v 0.600000 1.088388 0.611612 -v 0.500000 0.912500 0.700000 -v 0.500000 0.938128 0.761872 -v 0.500000 1.000000 0.787500 -v 0.500000 1.061872 0.761872 -v 0.500000 1.087500 0.700000 -v 0.500000 1.061872 0.638128 -v 0.400000 1.061872 0.638128 -v 0.400000 1.000000 0.612500 -v 0.400000 1.087500 0.700000 -v 0.400000 1.061872 0.761872 -v 0.400000 1.000000 0.787500 -v 0.400000 0.938128 0.761872 -v 0.400000 0.912500 0.700000 -v 0.400000 0.938128 0.638128 -v 0.400000 1.088388 0.611612 -v 0.400000 1.000000 0.575000 -v 0.400000 1.125000 0.700000 -v 0.400000 1.088388 0.788388 -v 0.400000 1.000000 0.825000 -v 0.400000 0.911612 0.788388 -v 0.400000 0.875000 0.700000 -v 0.400000 0.911612 0.611612 -v 0.350000 1.088388 0.611612 -v 0.350000 1.000000 0.575000 -v 0.350000 1.125000 0.700000 -v 0.350000 1.088388 0.788388 -v 0.350000 1.000000 0.825000 -v 0.350000 0.911612 0.788388 -v 0.350000 0.875000 0.700000 -v 0.350000 0.911612 0.611612 -v 0.350000 1.061872 0.638128 -v 0.350000 1.000000 0.612500 -v 0.350000 1.087500 0.700000 -v 0.350000 1.061872 0.761872 -v 0.350000 1.000000 0.787500 -v 0.350000 0.938128 0.761872 -v 0.350000 0.912500 0.700000 -v 0.350000 0.938128 0.638128 -v 0.150000 1.061872 0.638128 -v 0.150000 1.000000 0.612500 -v 0.150000 1.087500 0.700000 -v 0.150000 1.061872 0.761872 -v 0.150000 1.000000 0.787500 -v 0.150000 0.938128 0.761872 -v 0.150000 0.912500 0.700000 -v 0.150000 0.938128 0.638128 -v 0.600000 0.933709 0.633709 -v 0.600000 1.000000 0.606250 -v 0.600000 0.906250 0.700000 -v 0.600000 0.933709 0.766291 -v 0.600000 1.000000 0.793750 -v 0.600000 1.066291 0.766291 -v 0.600000 1.093750 0.700000 -v 0.600000 1.066291 0.633709 -v 0.550000 0.966854 0.666854 -v 0.550000 1.000000 0.653125 -v 0.550000 0.953125 0.700000 -v 0.550000 0.966854 0.733146 -v 0.550000 1.000000 0.746875 -v 0.550000 1.033146 0.733146 -v 0.550000 1.046875 0.700000 -v 0.550000 1.033146 0.666854 -v 0.156250 1.270633 -0.175000 -v -0.000000 1.312500 -0.175000 -v -0.000000 1.250000 -0.175000 -v -0.000000 1.250000 0.175000 -v 0.125000 1.216506 -0.175000 -v 0.125000 1.216506 0.175000 -v 0.216506 1.125000 -0.175000 -v 0.216506 1.125000 0.175000 -v 0.250000 1.000000 -0.175000 -v 0.250000 1.000000 0.175000 -v 0.216506 0.875000 -0.175000 -v 0.216506 0.875000 0.175000 -v 0.125000 0.783494 -0.175000 -v 0.125000 0.783494 0.175000 -v 0.000000 0.750000 -0.175000 -v 0.000000 0.750000 0.175000 -v -0.125000 0.783494 -0.175000 -v -0.125000 0.783494 0.175000 -v -0.216506 0.875000 -0.175000 -v -0.216506 0.875000 0.175000 -v -0.250000 1.000000 -0.175000 -v -0.250000 1.000000 0.175000 -v -0.216506 1.125000 -0.175000 -v -0.216506 1.125000 0.175000 -v -0.125000 1.216506 -0.175000 -v -0.125000 1.216506 0.175000 -v 0.270633 1.156250 -0.175000 -v 0.312500 1.000000 -0.175000 -v 0.270633 0.843750 -0.175000 -v 0.156250 0.729367 -0.175000 -v 0.000000 0.687500 -0.175000 -v -0.156250 0.729367 -0.175000 -v -0.270633 0.843750 -0.175000 -v -0.312500 1.000000 -0.175000 -v -0.270633 1.156250 -0.175000 -v -0.156250 1.270633 -0.175000 -v -0.156250 1.270633 -0.300000 -v -0.000000 1.312500 -0.300000 -v -0.270633 1.156250 -0.300000 -v -0.312500 1.000000 -0.300000 -v -0.270633 0.843750 -0.300000 -v -0.156250 0.729367 -0.300000 -v 0.000000 0.687500 -0.300000 -v 0.156250 0.729367 -0.300000 -v 0.270633 0.843750 -0.300000 -v 0.312500 1.000000 -0.300000 -v 0.270633 1.156250 -0.300000 -v 0.156250 1.270633 -0.300000 -v -0.125000 1.216506 -0.300000 -v -0.000000 1.250000 -0.300000 -v -0.216506 1.125000 -0.300000 -v -0.250000 1.000000 -0.300000 -v -0.216506 0.875000 -0.300000 -v -0.125000 0.783494 -0.300000 -v 0.000000 0.750000 -0.300000 -v 0.125000 0.783494 -0.300000 -v 0.216506 0.875000 -0.300000 -v 0.250000 1.000000 -0.300000 -v 0.216506 1.125000 -0.300000 -v 0.125000 1.216506 -0.300000 -v -0.125000 1.216506 -0.650000 -v -0.000000 1.250000 -0.650000 -v -0.216506 1.125000 -0.650000 -v -0.250000 1.000000 -0.650000 -v -0.216506 0.875000 -0.650000 -v -0.125000 0.783494 -0.650000 -v 0.000000 0.750000 -0.650000 -v 0.125000 0.783494 -0.650000 -v 0.216506 0.875000 -0.650000 -v 0.250000 1.000000 -0.650000 -v 0.216506 1.125000 -0.650000 -v 0.125000 1.216506 -0.650000 -v -0.156250 1.270633 -0.650000 -v -0.000000 1.312500 -0.650000 -v -0.270633 1.156250 -0.650000 -v -0.312500 1.000000 -0.650000 -v -0.270633 0.843750 -0.650000 -v -0.156250 0.729367 -0.650000 -v 0.000000 0.687500 -0.650000 -v 0.156250 0.729367 -0.650000 -v 0.270633 0.843750 -0.650000 -v 0.312500 1.000000 -0.650000 -v 0.270633 1.156250 -0.650000 -v 0.156250 1.270633 -0.650000 -v -0.156250 1.270633 -1.150000 -v -0.000000 1.312500 -1.150000 -v -0.270633 1.156250 -1.150000 -v -0.312500 1.000000 -1.150000 -v -0.270633 0.843750 -1.150000 -v -0.156250 0.729367 -1.150000 -v 0.000000 0.687500 -1.150000 -v 0.156250 0.729367 -1.150000 -v 0.270633 0.843750 -1.150000 -v 0.312500 1.000000 -1.150000 -v 0.270633 1.156250 -1.150000 -v 0.156250 1.270633 -1.150000 -v 0.156250 1.270633 0.175000 -v -0.000000 1.312500 0.175000 -v 0.270633 1.156250 0.175000 -v 0.312500 1.000000 0.175000 -v 0.270633 0.843750 0.175000 -v 0.156250 0.729367 0.175000 -v 0.000000 0.687500 0.175000 -v -0.156250 0.729367 0.175000 -v -0.270633 0.843750 0.175000 -v -0.312500 1.000000 0.175000 -v -0.270633 1.156250 0.175000 -v -0.156250 1.270633 0.175000 -v 0.156250 1.270633 0.525000 -v -0.000000 1.312500 0.525000 -v 0.270633 1.156250 0.525000 -v 0.312500 1.000000 0.525000 -v 0.270633 0.843750 0.525000 -v 0.156250 0.729367 0.525000 -v 0.000000 0.687500 0.525000 -v -0.156250 0.729367 0.525000 -v -0.270633 0.843750 0.525000 -v -0.312500 1.000000 0.525000 -v -0.270633 1.156250 0.525000 -v -0.156250 1.270633 0.525000 -v 0.125000 1.216506 0.525000 -v -0.000000 1.250000 0.525000 -v 0.216506 1.125000 0.525000 -v 0.250000 1.000000 0.525000 -v 0.216506 0.875000 0.525000 -v 0.125000 0.783494 0.525000 -v 0.000000 0.750000 0.525000 -v -0.125000 0.783494 0.525000 -v -0.216506 0.875000 0.525000 -v -0.250000 1.000000 0.525000 -v -0.216506 1.125000 0.525000 -v -0.125000 1.216506 0.525000 -v 0.125000 1.216506 0.875000 -v -0.000000 1.250000 0.875000 -v 0.216506 1.125000 0.875000 -v 0.250000 1.000000 0.875000 -v 0.216506 0.875000 0.875000 -v 0.125000 0.783494 0.875000 -v 0.000000 0.750000 0.875000 -v -0.125000 0.783494 0.875000 -v -0.216506 0.875000 0.875000 -v -0.250000 1.000000 0.875000 -v -0.216506 1.125000 0.875000 -v -0.125000 1.216506 0.875000 -v 0.156250 1.270633 0.875000 -v -0.000000 1.312500 0.875000 -v 0.270633 1.156250 0.875000 -v 0.312500 1.000000 0.875000 -v 0.270633 0.843750 0.875000 -v 0.156250 0.729367 0.875000 -v 0.000000 0.687500 0.875000 -v -0.156250 0.729367 0.875000 -v -0.270633 0.843750 0.875000 -v -0.312500 1.000000 0.875000 -v -0.270633 1.156250 0.875000 -v -0.156250 1.270633 0.875000 -v 0.156250 1.270633 1.015000 -v -0.000000 1.312500 1.015000 -v 0.270633 1.156250 1.015000 -v 0.312500 1.000000 1.015000 -v 0.270633 0.843750 1.015000 -v 0.156250 0.729367 1.015000 -v 0.000000 0.687500 1.015000 -v -0.156250 0.729367 1.015000 -v -0.270633 0.843750 1.015000 -v -0.312500 1.000000 1.015000 -v -0.270633 1.156250 1.015000 -v -0.156250 1.270633 1.015000 -v 0.125000 1.216506 1.115000 -v -0.000000 1.250000 1.115000 -v 0.216506 1.125000 1.115000 -v 0.250000 1.000000 1.115000 -v 0.216506 0.875000 1.115000 -v 0.125000 0.783494 1.115000 -v 0.000000 0.750000 1.115000 -v -0.125000 0.783494 1.115000 -v -0.216506 0.875000 1.115000 -v -0.250000 1.000000 1.115000 -v -0.216506 1.125000 1.115000 -v -0.125000 1.216506 1.115000 -v -0.078125 1.135316 -1.250000 -v -0.000000 1.156250 -1.250000 -v -0.135317 1.078125 -1.250000 -v -0.156250 1.000000 -1.250000 -v -0.135316 0.921875 -1.250000 -v -0.078125 0.864683 -1.250000 -v 0.000000 0.843750 -1.250000 -v 0.078125 0.864684 -1.250000 -v 0.135316 0.921875 -1.250000 -v 0.156250 1.000000 -1.250000 -v 0.135316 1.078125 -1.250000 -v 0.078125 1.135316 -1.250000 -v -0.078125 1.135317 -2.250000 -v -0.000000 1.156250 -2.250000 -v -0.135317 1.078125 -2.250000 -v -0.156250 1.000000 -2.250000 -v -0.135316 0.921875 -2.250000 -v -0.078125 0.864684 -2.250000 -v 0.000000 0.843750 -2.250000 -v 0.078125 0.864684 -2.250000 -v 0.135316 0.921875 -2.250000 -v 0.156250 1.000000 -2.250000 -v 0.135316 1.078125 -2.250000 -v 0.078125 1.135317 -2.250000 -v -0.058594 1.101487 -2.250000 -v -0.000000 1.117188 -2.250000 -v -0.101487 1.058594 -2.250000 -v -0.117188 1.000000 -2.250000 -v -0.101487 0.941406 -2.250000 -v -0.058594 0.898513 -2.250000 -v 0.000000 0.882813 -2.250000 -v 0.058594 0.898513 -2.250000 -v 0.101487 0.941406 -2.250000 -v 0.117188 1.000000 -2.250000 -v 0.101487 1.058594 -2.250000 -v 0.058594 1.101487 -2.250000 -v -0.058594 1.101487 -1.250000 -v -0.000000 1.117188 -1.250000 -v -0.101487 1.058594 -1.250000 -v -0.117188 1.000000 -1.250000 -v -0.101487 0.941406 -1.250000 -v -0.058594 0.898513 -1.250000 -v 0.000000 0.882813 -1.250000 -v 0.058594 0.898513 -1.250000 -v 0.101487 0.941406 -1.250000 -v 0.117188 1.000000 -1.250000 -v 0.101487 1.058594 -1.250000 -v 0.058594 1.101487 -1.250000 -v 0.000000 1.150000 1.250000 -v -0.106066 1.106066 1.250000 -v -0.150000 1.000000 1.250000 -v -0.106066 0.893934 1.250000 -v 0.000000 0.850000 1.250000 -v 0.106066 0.893934 1.250000 -v 0.150000 1.000000 1.250000 -v 0.106066 1.106066 1.250000 -v -0.079549 1.079550 1.350000 -v 0.000000 1.112500 1.350000 -v -0.112500 1.000000 1.350000 -v -0.079549 0.920450 1.350000 -v 0.000000 0.887500 1.350000 -v 0.079550 0.920450 1.350000 -v 0.112500 1.000000 1.350000 -v 0.079550 1.079550 1.350000 -v 0.000000 0.950000 1.115000 -v 0.000000 0.950000 1.250000 -v 0.021651 0.937500 1.115000 -v 0.021651 0.937500 1.250000 -v 0.021651 0.912500 1.115000 -v 0.021651 0.912500 1.250000 -v 0.000000 0.900000 1.115000 -v 0.000000 0.900000 1.250000 -v -0.021651 0.912500 1.115000 -v -0.021651 0.912500 1.250000 -v -0.021651 0.937500 1.115000 -v -0.021651 0.937500 1.250000 -v -0.000000 1.100000 1.115000 -v -0.000000 1.100000 1.250000 -v 0.021651 1.087500 1.115000 -v 0.021651 1.087500 1.250000 -v 0.021651 1.062500 1.115000 -v 0.021651 1.062500 1.250000 -v -0.000000 1.050000 1.115000 -v -0.000000 1.050000 1.250000 -v -0.021651 1.062500 1.115000 -v -0.021651 1.062500 1.250000 -v -0.021651 1.087500 1.115000 -v -0.021651 1.087500 1.250000 -v 0.075000 1.025000 1.115000 -v 0.075000 1.025000 1.250000 -v 0.096651 1.012500 1.115000 -v 0.096651 1.012500 1.250000 -v 0.096651 0.987500 1.115000 -v 0.096651 0.987500 1.250000 -v 0.075000 0.975000 1.115000 -v 0.075000 0.975000 1.250000 -v 0.053349 0.987500 1.115000 -v 0.053349 0.987500 1.250000 -v 0.053349 1.012500 1.115000 -v 0.053349 1.012500 1.250000 -v -0.075000 1.025000 1.115000 -v -0.075000 1.025000 1.250000 -v -0.053349 1.012500 1.115000 -v -0.053349 1.012500 1.250000 -v -0.053349 0.987500 1.115000 -v -0.053349 0.987500 1.250000 -v -0.075000 0.975000 1.115000 -v -0.075000 0.975000 1.250000 -v -0.096651 0.987500 1.115000 -v -0.096651 0.987500 1.250000 -v -0.096651 1.012500 1.115000 -v -0.096651 1.012500 1.250000 -v -0.125000 0.575000 1.100000 -v -0.125000 0.625000 1.100000 -v -0.125000 0.575000 -1.300000 -v -0.125000 0.625000 -1.300000 -v 0.125000 0.575000 1.100000 -v 0.125000 0.625000 1.100000 -v 0.125000 0.575000 -1.300000 -v 0.125000 0.625000 -1.300000 -v -0.125000 0.625000 -1.350000 -v 0.125000 0.625000 -1.350000 -v 0.218750 0.725000 -1.350000 -v -0.218750 0.725000 -1.350000 -v -0.218750 1.275000 -1.350000 -v -0.218750 1.275000 -1.300000 -v 0.218750 0.725000 -1.300000 -v -0.218750 0.725000 -1.300000 -v 0.218750 1.275000 -1.350000 -v 0.218750 1.275000 -1.300000 -v -0.125000 1.375000 -1.300000 -v 0.125000 1.375000 -1.300000 -v -0.125000 1.375000 -1.350000 -v 0.125000 1.375000 -1.350000 -v -0.107422 1.241060 -1.700000 -v 0.214844 1.055000 -1.700000 -v 0.214844 0.945000 -1.700000 -v -0.195312 0.950000 -1.350000 -v -0.169146 0.852344 -1.350000 -v -0.097656 0.780855 -1.350000 -v 0.000000 0.754688 -1.350000 -v 0.097656 0.780855 -1.350000 -v 0.169146 0.852344 -1.350000 -v 0.195312 0.950000 -1.350000 -v 0.186060 0.837578 -1.700000 -v 0.107422 0.758940 -1.700000 -v 0.000000 0.730156 -1.700000 -v -0.107422 0.758940 -1.700000 -v -0.186060 0.837578 -1.700000 -v -0.195312 0.950000 -1.700000 -v -0.169146 0.852344 -1.700000 -v -0.097656 0.780854 -1.700000 -v 0.000000 0.754688 -1.700000 -v 0.097656 0.780855 -1.700000 -v 0.169146 0.852344 -1.700000 -v 0.195312 0.950000 -1.700000 -v -0.214844 1.055000 -1.700000 -v -0.214844 0.945000 -1.700000 -v -0.097656 1.219146 -1.350000 -v 0.000000 1.245313 -1.350000 -v -0.169146 1.147656 -1.350000 -v -0.195312 1.050000 -1.350000 -v 0.195312 1.050000 -1.350000 -v 0.169146 1.147656 -1.350000 -v 0.097656 1.219146 -1.350000 -v -0.097656 1.219146 -1.700000 -v 0.000000 1.245313 -1.700000 -v -0.169146 1.147656 -1.700000 -v -0.195312 1.050000 -1.700000 -v 0.195312 1.050000 -1.700000 -v 0.169146 1.147656 -1.700000 -v 0.097656 1.219146 -1.700000 -v -0.000000 1.269844 -1.700000 -v -0.186060 1.162422 -1.700000 -v 0.186060 1.162422 -1.700000 -v 0.107422 1.241060 -1.700000 -v 0.214844 0.945000 -1.750000 -v 0.214844 1.055000 -1.750000 -v 0.186060 0.837578 -1.750000 -v 0.107422 0.758940 -1.750000 -v 0.000000 0.730156 -1.750000 -v -0.107422 0.758940 -1.750000 -v -0.186060 0.837578 -1.750000 -v -0.214844 0.945000 -1.750000 -v -0.214844 1.055000 -1.750000 -v 0.107422 1.241060 -1.750000 -v 0.186060 1.162422 -1.750000 -v -0.186060 1.162422 -1.750000 -v -0.107422 1.241060 -1.750000 -v -0.000000 1.269844 -1.750000 -v -0.100000 0.525000 2.575000 -v -0.100000 0.925000 2.575000 -v -0.100000 0.525000 2.325000 -v -0.100000 0.925000 2.325000 -v 0.100000 0.525000 2.575000 -v 0.100000 0.925000 2.575000 -v 0.100000 0.525000 2.325000 -v 0.100000 0.925000 2.325000 -v -0.100000 0.975000 1.600000 -v -0.100000 1.025000 1.600000 -v 0.100000 0.975000 1.600000 -v 0.100000 1.025000 1.600000 -v -0.100000 0.975000 2.425000 -v -0.100000 1.025000 2.425000 -v 0.100000 1.025000 2.425000 -v 0.100000 0.975000 2.425000 -v -0.100000 0.925000 2.475000 -v -0.100000 0.925000 2.525000 -v 0.100000 0.925000 2.525000 -v 0.100000 0.925000 2.475000 -v -0.050000 1.025000 1.350000 -v -0.050000 1.025000 1.600000 -v -0.028349 1.012500 1.350000 -v -0.028349 1.012500 1.600000 -v -0.028349 0.987500 1.350000 -v -0.028349 0.987500 1.600000 -v -0.050000 0.975000 1.350000 -v -0.050000 0.975000 1.600000 -v -0.071651 0.987500 1.350000 -v -0.071651 0.987500 1.600000 -v -0.071651 1.012500 1.350000 -v -0.071651 1.012500 1.600000 -v 0.050000 1.025000 1.350000 -v 0.050000 1.025000 1.600000 -v 0.071651 1.012500 1.350000 -v 0.071651 1.012500 1.600000 -v 0.071651 0.987500 1.350000 -v 0.071651 0.987500 1.600000 -v 0.050000 0.975000 1.350000 -v 0.050000 0.975000 1.600000 -v 0.028349 0.987500 1.350000 -v 0.028349 0.987500 1.600000 -v 0.028349 1.012500 1.350000 -v 0.028349 1.012500 1.600000 -v -0.125000 0.750000 1.275000 -v -0.125000 0.800000 1.275000 -v 0.125000 0.800000 1.275000 -v 0.125000 0.750000 1.275000 -v -0.125000 0.750000 1.325000 -v -0.125000 0.800000 1.325000 -v 0.125000 0.800000 1.325000 -v 0.125000 0.750000 1.325000 -v -0.100000 0.750000 1.600000 -v -0.100000 0.800000 1.600000 -v 0.100000 0.800000 1.600000 -v 0.100000 0.750000 1.600000 -v 0.062500 0.925000 1.275000 -v -0.062500 0.925000 1.275000 -v 0.062500 0.925000 1.325000 -v -0.062500 0.925000 1.325000 -v -0.100000 0.550000 2.125000 -v -0.100000 0.600000 2.125000 -v 0.100000 0.600000 2.125000 -v 0.100000 0.550000 2.125000 -v -0.100000 0.550000 2.325000 -v -0.100000 0.600000 2.325000 -v 0.100000 0.600000 2.325000 -v 0.100000 0.550000 2.325000 -v -0.000000 0.762500 2.125000 -v -0.000000 0.762500 2.325000 -v 0.044194 0.744194 2.125000 -v 0.044194 0.744194 2.325000 -v 0.062500 0.700000 2.125000 -v 0.062500 0.700000 2.325000 -v 0.044194 0.655806 2.125000 -v 0.044194 0.655806 2.325000 -v -0.000000 0.637500 2.125000 -v -0.000000 0.637500 2.325000 -v -0.044194 0.655806 2.125000 -v -0.044194 0.655806 2.325000 -v -0.062500 0.700000 2.125000 -v -0.062500 0.700000 2.325000 -v -0.044194 0.744194 2.125000 -v -0.044194 0.744194 2.325000 -v -0.000000 0.912500 1.925000 -v -0.000000 0.912500 2.325000 -v 0.044194 0.894194 1.925000 -v 0.044194 0.894194 2.325000 -v 0.062500 0.850000 1.925000 -v 0.062500 0.850000 2.325000 -v 0.044194 0.805806 1.925000 -v 0.044194 0.805806 2.325000 -v -0.000000 0.787500 1.925000 -v -0.000000 0.787500 2.325000 -v -0.044194 0.805806 1.925000 -v -0.044194 0.805806 2.325000 -v -0.062500 0.850000 1.925000 -v -0.062500 0.850000 2.325000 -v -0.044194 0.894194 1.925000 -v -0.044194 0.894194 2.325000 -v -0.000000 0.715625 2.125000 -v 0.011049 0.711049 2.125000 -v 0.015625 0.700000 2.125000 -v 0.011049 0.688951 2.125000 -v 0.000000 0.684375 2.125000 -v -0.011049 0.688951 2.125000 -v -0.015625 0.700000 2.125000 -v -0.011049 0.711049 2.125000 -v -0.000000 0.715626 1.775000 -v 0.011049 0.711050 1.775000 -v 0.015625 0.700001 1.775000 -v 0.011049 0.688952 1.775000 -v 0.000000 0.684376 1.775000 -v -0.011049 0.688952 1.775000 -v -0.015625 0.700001 1.775000 -v -0.011049 0.711050 1.775000 -v -0.000000 0.865625 1.925000 -v 0.011049 0.861049 1.925000 -v 0.015625 0.850000 1.925000 -v 0.011049 0.838951 1.925000 -v -0.000000 0.834375 1.925000 -v -0.011049 0.838951 1.925000 -v -0.015625 0.850000 1.925000 -v -0.011049 0.861049 1.925000 -v -0.000000 0.865625 1.300000 -v 0.011049 0.861049 1.300000 -v 0.015625 0.850000 1.300000 -v 0.011049 0.838951 1.300000 -v -0.000000 0.834375 1.300000 -v -0.011049 0.838951 1.300000 -v -0.015625 0.850000 1.300000 -v -0.011049 0.861049 1.300000 -v -0.125000 0.625000 -0.037500 -v 0.125000 0.625000 -0.037500 -v -0.125000 0.625000 0.012500 -v 0.125000 0.625000 0.012500 -v 0.125000 0.800000 -0.037500 -v -0.125000 0.800000 -0.037500 -v 0.125000 0.800000 0.012500 -v -0.125000 0.800000 0.012500 -v -0.125000 0.625000 -0.487500 -v 0.125000 0.625000 -0.487500 -v -0.125000 0.625000 -0.437500 -v 0.125000 0.625000 -0.437500 -v 0.125000 0.800000 -0.487500 -v -0.125000 0.800000 -0.487500 -v 0.125000 0.800000 -0.437500 -v -0.125000 0.800000 -0.437500 -v -0.125000 0.625000 0.677500 -v 0.125000 0.625000 0.677500 -v -0.125000 0.625000 0.727500 -v 0.125000 0.625000 0.727500 -v 0.125000 0.800000 0.677500 -v -0.125000 0.800000 0.677500 -v 0.125000 0.800000 0.727500 -v -0.125000 0.800000 0.727500 -v -0.200000 0.550000 0.100000 -v -0.200000 0.675000 0.100000 -v -0.200000 0.550000 -0.900000 -v -0.200000 0.675000 -0.900000 -v 0.200000 0.550000 0.100000 -v 0.200000 0.675000 0.100000 -v 0.200000 0.550000 -0.900000 -v 0.200000 0.675000 -0.900000 -v -0.100000 0.425000 -0.900000 -v -0.100000 0.425000 0.100000 -v 0.100000 0.425000 -0.900000 -v 0.100000 0.425000 0.100000 -v -0.050000 0.299279 1.429474 -v -0.050000 0.769125 1.258464 -v -0.050000 0.230875 1.241536 -v 0.057500 0.304409 1.443570 -v 0.050000 0.299279 1.429474 -v 0.050000 0.769125 1.258464 -v 0.050000 0.230875 1.241536 -v 0.057500 0.225745 1.227440 -v -0.057500 0.304409 1.443570 -v -0.050000 0.606752 1.104728 -v 0.050000 0.606752 1.104728 -v -0.057500 0.225745 1.227440 -v -0.057500 0.257425 1.460671 -v 0.057500 0.257425 1.460671 -v 0.057500 0.178760 1.244541 -v -0.057500 0.178760 1.244541 -vt 0.380430 0.366521 -vt 0.413739 0.366533 -vt 0.413735 0.377686 -vt 0.413731 0.388839 -vt 0.380423 0.388827 -vt 0.413762 0.299614 -vt 0.413758 0.310767 -vt 0.380450 0.310755 -vt 0.413754 0.321920 -vt 0.380446 0.321909 -vt 0.413750 0.333073 -vt 0.380442 0.333062 -vt 0.413746 0.344226 -vt 0.413742 0.355379 -vt 0.380434 0.355368 -vt 0.369728 0.352576 -vt 0.369730 0.346999 -vt 0.361401 0.352573 -vt 0.369716 0.386035 -vt 0.369718 0.380459 -vt 0.369735 0.330270 -vt 0.369724 0.363729 -vt 0.369726 0.358153 -vt 0.380427 0.377674 -vt 0.369720 0.374882 -vt 0.380454 0.299602 -vt 0.369743 0.307964 -vt 0.380438 0.344215 -vt 0.369732 0.341423 -vt 0.369739 0.319117 -vt 0.369741 0.313540 -vt 0.675348 0.938663 -vt 0.684496 0.938211 -vt 0.682721 0.952889 -vt 0.361408 0.330267 -vt 0.361410 0.324690 -vt 0.369745 0.302387 -vt 0.361416 0.307961 -vt 0.361393 0.374879 -vt 0.361395 0.369303 -vt 0.361397 0.363726 -vt 0.361399 0.358150 -vt 0.361405 0.341420 -vt 0.361407 0.335843 -vt 0.361412 0.319114 -vt 0.361414 0.313537 -vt 0.361389 0.386033 -vt 0.911644 0.212776 -vt 0.911644 0.203617 -vt 0.928374 0.203617 -vt 0.903378 0.964600 -vt 0.895298 0.976982 -vt 0.885770 0.963231 -vt 0.948140 0.542394 -vt 0.940061 0.554776 -vt 0.930533 0.541025 -vt 0.611961 0.956270 -vt 0.599579 0.948191 -vt 0.613331 0.938663 -vt 0.673978 0.956270 -vt 0.661596 0.948191 -vt 0.902704 0.950983 -vt 0.893443 0.939458 -vt 0.901450 0.935010 -vt 0.357233 0.363725 -vt 0.357235 0.358148 -vt 0.885318 0.954082 -vt 0.899996 0.955858 -vt 0.637103 0.946336 -vt 0.625578 0.955597 -vt 0.620704 0.952889 -vt 0.971151 0.534582 -vt 0.980311 0.534582 -vt 0.980311 0.551311 -vt 0.980311 0.591550 -vt 0.971151 0.591550 -vt 0.971151 0.574821 -vt 0.805628 0.672352 -vt 0.788899 0.672352 -vt 0.788899 0.663193 -vt 0.885436 0.935010 -vt 0.930199 0.512804 -vt 0.938206 0.517252 -vt 0.930081 0.531876 -vt 0.626928 0.930204 -vt 0.641552 0.938329 -vt 0.688945 0.930204 -vt 0.703569 0.938329 -vt 0.699120 0.946336 -vt 0.934988 0.637420 -vt 0.938931 0.641363 -vt 0.934159 0.644163 -vt 0.687595 0.955597 -vt 0.944759 0.533652 -vt 0.944964 0.537810 -vt 0.357249 0.319112 -vt 0.357251 0.313536 -vt 0.947467 0.528777 -vt 0.946213 0.512804 -vt 0.357241 0.341419 -vt 0.357243 0.335842 -vt 0.927428 0.646951 -vt 0.932188 0.642191 -vt 0.922656 0.641363 -vt 0.926600 0.637420 -vt 0.929399 0.642191 -vt 0.922656 0.649751 -vt 0.929399 0.648923 -vt 0.934988 0.653694 -vt 0.932188 0.648923 -vt 0.934159 0.646951 -vt 0.939513 0.642769 -vt 0.939513 0.648345 -vt 0.928005 0.636838 -vt 0.933582 0.636838 -vt 0.922074 0.648345 -vt 0.922074 0.642769 -vt 0.927428 0.644163 -vt 0.933582 0.654277 -vt 0.928005 0.654277 -vt 0.357226 0.386031 -vt 0.357228 0.380455 -vt 0.361391 0.380456 -vt 0.703569 0.954343 -vt 0.689617 0.959237 -vt 0.616545 0.953094 -vt 0.627601 0.959237 -vt 0.713798 0.785601 -vt 0.713798 0.818909 -vt 0.702645 0.818909 -vt 0.702645 0.785601 -vt 0.691491 0.818909 -vt 0.780717 0.818909 -vt 0.769563 0.818909 -vt 0.769563 0.785601 -vt 0.758410 0.818909 -vt 0.758410 0.785601 -vt 0.747257 0.818909 -vt 0.747257 0.785601 -vt 0.736104 0.818909 -vt 0.724951 0.785601 -vt 0.724951 0.818909 -vt 0.736104 0.785601 -vt 0.727739 0.774894 -vt 0.727739 0.766567 -vt 0.733316 0.766567 -vt 0.691491 0.785601 -vt 0.694280 0.774894 -vt 0.750045 0.774894 -vt 0.716586 0.774894 -vt 0.722163 0.774894 -vt 0.705433 0.774894 -vt 0.780717 0.785601 -vt 0.772352 0.774894 -vt 0.738892 0.774894 -vt 0.744469 0.774894 -vt 0.761199 0.774894 -vt 0.766775 0.774894 -vt 0.938670 0.781476 -vt 0.953348 0.783251 -vt 0.953554 0.787410 -vt 0.750045 0.766567 -vt 0.755622 0.766567 -vt 0.772352 0.766567 -vt 0.777928 0.766567 -vt 0.711009 0.774894 -vt 0.705433 0.766567 -vt 0.716586 0.766567 -vt 0.722163 0.766567 -vt 0.738892 0.766567 -vt 0.744469 0.766567 -vt 0.761199 0.766567 -vt 0.766775 0.766567 -vt 0.694280 0.766567 -vt 0.699856 0.766567 -vt 0.504645 0.473058 -vt 0.495485 0.473058 -vt 0.495485 0.456328 -vt 0.967350 0.948578 -vt 0.970526 0.953162 -vt 0.962447 0.965544 -vt 0.925040 0.587203 -vt 0.933120 0.574821 -vt 0.942647 0.588572 -vt 0.925040 0.463169 -vt 0.933119 0.450787 -vt 0.942647 0.464538 -vt 0.956730 0.791994 -vt 0.948651 0.804376 -vt 0.939123 0.790624 -vt 0.969853 0.939545 -vt 0.960592 0.928020 -vt 0.968599 0.923571 -vt 0.716586 0.762403 -vt 0.722163 0.762403 -vt 0.952467 0.942644 -vt 0.967145 0.944419 -vt 0.943100 0.473687 -vt 0.934975 0.488311 -vt 0.925713 0.476786 -vt 0.567356 0.608529 -vt 0.567356 0.591799 -vt 0.576516 0.591799 -vt 0.898139 0.430742 -vt 0.881409 0.430742 -vt 0.881409 0.421583 -vt 0.947393 0.833580 -vt 0.930664 0.833580 -vt 0.930664 0.824420 -vt 0.952585 0.923571 -vt 0.951107 0.602169 -vt 0.942981 0.616793 -vt 0.934975 0.612345 -vt 0.951107 0.478135 -vt 0.942981 0.492759 -vt 0.938789 0.762403 -vt 0.946796 0.766852 -vt 0.988008 0.501624 -vt 0.983236 0.504424 -vt 0.981265 0.502452 -vt 0.956057 0.778377 -vt 0.943100 0.597721 -vt 0.928422 0.595945 -vt 0.928216 0.591787 -vt 0.761199 0.762403 -vt 0.766775 0.762403 -vt 0.925713 0.600820 -vt 0.926968 0.616793 -vt 0.738892 0.762403 -vt 0.744469 0.762403 -vt 0.976505 0.507212 -vt 0.978476 0.502452 -vt 0.981265 0.509183 -vt 0.975676 0.497680 -vt 0.976505 0.504424 -vt 0.975676 0.513955 -vt 0.971733 0.510012 -vt 0.984065 0.513955 -vt 0.983236 0.507212 -vt 0.988590 0.508606 -vt 0.977082 0.497098 -vt 0.982659 0.497098 -vt 0.971151 0.503029 -vt 0.977082 0.514537 -vt 0.978476 0.509183 -vt 0.694280 0.762403 -vt 0.699856 0.762403 -vt 0.954803 0.762403 -vt 0.959696 0.776355 -vt 0.928422 0.471911 -vt 0.928216 0.467753 -vt 0.926968 0.492759 -vt 0.836444 0.046647 -vt 0.803136 0.046647 -vt 0.803136 0.035494 -vt 0.836444 0.035494 -vt 0.803136 0.024341 -vt 0.803136 0.113566 -vt 0.803136 0.102413 -vt 0.836444 0.102413 -vt 0.803136 0.091260 -vt 0.836444 0.091260 -vt 0.803136 0.080107 -vt 0.836444 0.080107 -vt 0.803136 0.068953 -vt 0.803136 0.057800 -vt 0.836444 0.057800 -vt 0.847152 0.060589 -vt 0.847152 0.066165 -vt 0.855479 0.060589 -vt 0.836444 0.024341 -vt 0.847152 0.027129 -vt 0.847152 0.082895 -vt 0.847152 0.049435 -vt 0.847152 0.055012 -vt 0.847152 0.038282 -vt 0.847152 0.043859 -vt 0.847152 0.105201 -vt 0.847152 0.110778 -vt 0.836444 0.068953 -vt 0.847152 0.071742 -vt 0.847152 0.094048 -vt 0.959317 0.262111 -vt 0.944639 0.260336 -vt 0.944433 0.256177 -vt 0.855479 0.082895 -vt 0.855479 0.088471 -vt 0.855479 0.105201 -vt 0.855479 0.038282 -vt 0.855479 0.043859 -vt 0.855479 0.049435 -vt 0.855479 0.055012 -vt 0.847152 0.077318 -vt 0.855479 0.071742 -vt 0.847152 0.099625 -vt 0.855479 0.094048 -vt 0.855479 0.027129 -vt 0.855479 0.032706 -vt 0.576516 0.645303 -vt 0.567356 0.645303 -vt 0.567356 0.628573 -vt 0.365727 0.983380 -vt 0.353345 0.975301 -vt 0.367096 0.965773 -vt 0.152899 0.946060 -vt 0.144819 0.958442 -vt 0.135292 0.944691 -vt 0.945975 0.085817 -vt 0.958358 0.093897 -vt 0.944606 0.103424 -vt 0.941257 0.251593 -vt 0.949336 0.239211 -vt 0.958864 0.252963 -vt 0.379344 0.982707 -vt 0.390869 0.973446 -vt 0.395317 0.981452 -vt 0.859642 0.049435 -vt 0.859642 0.055012 -vt 0.376245 0.965320 -vt 0.374469 0.979998 -vt 0.920833 0.095752 -vt 0.932358 0.086490 -vt 0.937233 0.089199 -vt 0.967438 0.841150 -vt 0.967438 0.824420 -vt 0.976597 0.824420 -vt 0.197247 0.985573 -vt 0.180518 0.985573 -vt 0.180518 0.976414 -vt 0.085262 0.983929 -vt 0.068532 0.983929 -vt 0.068532 0.974770 -vt 0.380693 0.957314 -vt 0.395317 0.965439 -vt 0.126832 0.931094 -vt 0.134958 0.916470 -vt 0.142964 0.920918 -vt 0.916385 0.103758 -vt 0.935457 0.103877 -vt 0.967323 0.266560 -vt 0.959198 0.281184 -vt 0.951191 0.276735 -vt 0.170391 0.792782 -vt 0.175968 0.792782 -vt 0.174573 0.798136 -vt 0.941930 0.265210 -vt 0.134839 0.935542 -vt 0.149517 0.937318 -vt 0.149723 0.941476 -vt 0.859642 0.094048 -vt 0.859642 0.099625 -vt 0.155865 0.930421 -vt 0.152226 0.932443 -vt 0.859642 0.071742 -vt 0.859642 0.077318 -vt 0.855479 0.077318 -vt 0.171785 0.804867 -vt 0.169813 0.800107 -vt 0.176545 0.802896 -vt 0.164460 0.804290 -vt 0.164460 0.798713 -vt 0.175968 0.810221 -vt 0.170391 0.810221 -vt 0.181899 0.798713 -vt 0.181899 0.804290 -vt 0.181317 0.797307 -vt 0.176545 0.800107 -vt 0.165042 0.797307 -vt 0.168985 0.793364 -vt 0.171785 0.798136 -vt 0.165042 0.805695 -vt 0.169813 0.802896 -vt 0.177373 0.809639 -vt 0.174573 0.804867 -vt 0.859642 0.027129 -vt 0.859642 0.032706 -vt 0.943185 0.281184 -vt 0.938291 0.267232 -vt 0.941391 0.088993 -vt 0.930336 0.082851 -vt 0.477364 0.769821 -vt 0.502345 0.769821 -vt 0.502345 0.779780 -vt 0.477364 0.779780 -vt 0.502345 0.789738 -vt 0.502345 0.799696 -vt 0.477364 0.799696 -vt 0.502345 0.809654 -vt 0.502345 0.819612 -vt 0.477364 0.819612 -vt 0.502345 0.829570 -vt 0.508179 0.781472 -vt 0.502345 0.759863 -vt 0.477364 0.749905 -vt 0.502345 0.749905 -vt 0.477364 0.829570 -vt 0.467749 0.827579 -vt 0.508179 0.801389 -vt 0.512146 0.803032 -vt 0.512146 0.806318 -vt 0.508179 0.811347 -vt 0.508179 0.817919 -vt 0.508179 0.761556 -vt 0.508179 0.771514 -vt 0.508179 0.791431 -vt 0.508179 0.821305 -vt 0.508179 0.807961 -vt 0.508179 0.751598 -vt 0.508179 0.758170 -vt 0.789164 0.695676 -vt 0.805798 0.696572 -vt 0.805664 0.699557 -vt 0.512146 0.783116 -vt 0.512146 0.786402 -vt 0.512146 0.753241 -vt 0.512146 0.812990 -vt 0.508179 0.798003 -vt 0.512146 0.793074 -vt 0.512146 0.773157 -vt 0.512146 0.776444 -vt 0.512146 0.763199 -vt 0.512146 0.766485 -vt 0.512146 0.822948 -vt 0.512146 0.826234 -vt 0.441018 0.503466 -vt 0.438906 0.508566 -vt 0.435918 0.501353 -vt 0.789370 0.718664 -vt 0.789164 0.715384 -vt 0.805798 0.714489 -vt 0.788928 0.708816 -vt 0.805584 0.708518 -vt 0.805664 0.711504 -vt 0.788899 0.705530 -vt 0.788928 0.702244 -vt 0.805584 0.702543 -vt 0.789370 0.692397 -vt 0.805986 0.693591 -vt 0.789016 0.712101 -vt 0.805557 0.705530 -vt 0.789016 0.698959 -vt 0.467749 0.751897 -vt 0.467749 0.757872 -vt 0.442768 0.757872 -vt 0.477364 0.809654 -vt 0.467749 0.807662 -vt 0.467749 0.801688 -vt 0.477364 0.759863 -vt 0.477364 0.789738 -vt 0.467749 0.787746 -vt 0.467749 0.817621 -vt 0.467749 0.811646 -vt 0.467749 0.767830 -vt 0.467749 0.777788 -vt 0.467749 0.771813 -vt 0.467749 0.797704 -vt 0.442768 0.817621 -vt 0.442768 0.811646 -vt 0.442768 0.797704 -vt 0.442768 0.791729 -vt 0.442768 0.777788 -vt 0.467749 0.761855 -vt 0.442768 0.767830 -vt 0.467749 0.821604 -vt 0.442768 0.827579 -vt 0.442768 0.807662 -vt 0.442768 0.801688 -vt 0.442768 0.787746 -vt 0.442768 0.781771 -vt 0.490896 0.512177 -vt 0.500854 0.512177 -vt 0.500854 0.537158 -vt 0.510812 0.512177 -vt 0.510812 0.537158 -vt 0.520770 0.512177 -vt 0.520770 0.537158 -vt 0.530728 0.512177 -vt 0.530728 0.537158 -vt 0.540687 0.512177 -vt 0.540687 0.537158 -vt 0.550645 0.512177 -vt 0.550645 0.537158 -vt 0.502547 0.506343 -vt 0.480938 0.537158 -vt 0.480938 0.512177 -vt 0.470980 0.512177 -vt 0.548653 0.546774 -vt 0.542678 0.546774 -vt 0.529036 0.506343 -vt 0.522463 0.506343 -vt 0.524106 0.502376 -vt 0.532421 0.506343 -vt 0.538994 0.506343 -vt 0.482631 0.506343 -vt 0.492589 0.506343 -vt 0.499161 0.506343 -vt 0.512505 0.506343 -vt 0.542379 0.506343 -vt 0.548952 0.506343 -vt 0.472672 0.506343 -vt 0.729246 0.103245 -vt 0.729393 0.099962 -vt 0.746028 0.100858 -vt 0.504190 0.502376 -vt 0.507476 0.502376 -vt 0.479245 0.506343 -vt 0.474316 0.502376 -vt 0.534064 0.502376 -vt 0.537351 0.502376 -vt 0.519077 0.506343 -vt 0.514148 0.502376 -vt 0.494232 0.502376 -vt 0.489203 0.506343 -vt 0.484274 0.502376 -vt 0.544023 0.502376 -vt 0.547309 0.502376 -vt 0.572802 0.564102 -vt 0.570689 0.559002 -vt 0.575789 0.556889 -vt 0.729393 0.119670 -vt 0.746028 0.118774 -vt 0.746215 0.121756 -vt 0.729246 0.116387 -vt 0.729157 0.113102 -vt 0.745813 0.112804 -vt 0.729128 0.109816 -vt 0.729157 0.106530 -vt 0.745813 0.106829 -vt 0.729599 0.096683 -vt 0.746215 0.097877 -vt 0.745894 0.115790 -vt 0.745786 0.109816 -vt 0.745894 0.103843 -vt 0.478946 0.546774 -vt 0.478946 0.571755 -vt 0.472971 0.571755 -vt 0.528737 0.546774 -vt 0.472971 0.546774 -vt 0.508820 0.546774 -vt 0.502846 0.546774 -vt 0.538695 0.546774 -vt 0.532720 0.546774 -vt 0.490896 0.537158 -vt 0.488904 0.546774 -vt 0.498862 0.546774 -vt 0.492887 0.546774 -vt 0.518779 0.546774 -vt 0.512804 0.546774 -vt 0.538695 0.571755 -vt 0.532720 0.571755 -vt 0.518779 0.571755 -vt 0.512804 0.571755 -vt 0.498862 0.571755 -vt 0.492887 0.571755 -vt 0.488904 0.571755 -vt 0.482929 0.571755 -vt 0.548653 0.571755 -vt 0.542678 0.571755 -vt 0.528737 0.571755 -vt 0.522762 0.571755 -vt 0.508820 0.571755 -vt 0.502846 0.571755 -vt 0.270641 0.751019 -vt 0.270641 0.760977 -vt 0.245660 0.760977 -vt 0.270641 0.770935 -vt 0.270641 0.780893 -vt 0.245660 0.780893 -vt 0.270641 0.790852 -vt 0.245660 0.790852 -vt 0.270641 0.800810 -vt 0.245660 0.800810 -vt 0.270641 0.810768 -vt 0.245660 0.810768 -vt 0.276475 0.762670 -vt 0.276475 0.769242 -vt 0.270641 0.741061 -vt 0.245660 0.751019 -vt 0.245660 0.731103 -vt 0.270641 0.731103 -vt 0.236044 0.808776 -vt 0.276475 0.782586 -vt 0.280442 0.784229 -vt 0.280442 0.787516 -vt 0.276475 0.792544 -vt 0.276475 0.799117 -vt 0.276475 0.742754 -vt 0.276475 0.752712 -vt 0.276475 0.759284 -vt 0.276475 0.772628 -vt 0.276475 0.802503 -vt 0.276475 0.809075 -vt 0.276475 0.732795 -vt 0.723831 0.900789 -vt 0.723978 0.897506 -vt 0.740612 0.898402 -vt 0.280442 0.764313 -vt 0.280442 0.767599 -vt 0.276475 0.739368 -vt 0.280442 0.734439 -vt 0.280442 0.794188 -vt 0.276475 0.779200 -vt 0.280442 0.774271 -vt 0.280442 0.754355 -vt 0.280442 0.744397 -vt 0.280442 0.747683 -vt 0.280442 0.804146 -vt 0.280442 0.807432 -vt 0.572802 0.509588 -vt 0.570689 0.504488 -vt 0.575789 0.502376 -vt 0.723978 0.917214 -vt 0.740612 0.916318 -vt 0.740800 0.919300 -vt 0.723831 0.913931 -vt 0.723742 0.910646 -vt 0.740398 0.910347 -vt 0.723713 0.907360 -vt 0.723742 0.904074 -vt 0.740398 0.904373 -vt 0.724184 0.894226 -vt 0.740800 0.895420 -vt 0.740478 0.913334 -vt 0.740371 0.907360 -vt 0.740478 0.901386 -vt 0.236044 0.739069 -vt 0.211063 0.739069 -vt 0.211063 0.733094 -vt 0.236044 0.788860 -vt 0.236044 0.782885 -vt 0.245660 0.741061 -vt 0.236044 0.733094 -vt 0.245660 0.770935 -vt 0.236044 0.768944 -vt 0.236044 0.762969 -vt 0.236044 0.798818 -vt 0.236044 0.792843 -vt 0.236044 0.749027 -vt 0.236044 0.743052 -vt 0.236044 0.758985 -vt 0.236044 0.753011 -vt 0.236044 0.778902 -vt 0.211063 0.798818 -vt 0.211063 0.792843 -vt 0.211063 0.778902 -vt 0.211063 0.772927 -vt 0.211063 0.758985 -vt 0.211063 0.753011 -vt 0.211063 0.749027 -vt 0.211063 0.743052 -vt 0.211063 0.808776 -vt 0.211063 0.802801 -vt 0.211063 0.788860 -vt 0.211063 0.782885 -vt 0.211063 0.768944 -vt 0.211063 0.762969 -vt 0.562881 0.785605 -vt 0.562881 0.774452 -vt 0.579535 0.774452 -vt 0.552750 0.692397 -vt 0.562881 0.694787 -vt 0.562881 0.705940 -vt 0.552750 0.787995 -vt 0.544423 0.787995 -vt 0.544423 0.772062 -vt 0.562881 0.726653 -vt 0.579535 0.726653 -vt 0.579535 0.737806 -vt 0.552750 0.756129 -vt 0.562881 0.758519 -vt 0.562881 0.769672 -vt 0.544423 0.756129 -vt 0.562881 0.817471 -vt 0.562881 0.806318 -vt 0.579535 0.806318 -vt 0.552750 0.772062 -vt 0.544423 0.740196 -vt 0.579535 0.758519 -vt 0.579535 0.769672 -vt 0.552750 0.708330 -vt 0.562881 0.710720 -vt 0.562881 0.721873 -vt 0.544423 0.724263 -vt 0.552750 0.724263 -vt 0.562881 0.737806 -vt 0.544423 0.708330 -vt 0.552750 0.740196 -vt 0.562881 0.742586 -vt 0.579535 0.694787 -vt 0.579535 0.705940 -vt 0.544423 0.692397 -vt 0.353345 0.926003 -vt 0.353345 0.910070 -vt 0.358153 0.912062 -vt 0.552750 0.803928 -vt 0.544423 0.803928 -vt 0.552750 0.819861 -vt 0.544423 0.819861 -vt 0.579535 0.710720 -vt 0.579535 0.721873 -vt 0.562881 0.790385 -vt 0.562881 0.753739 -vt 0.579535 0.742586 -vt 0.562881 0.801538 -vt 0.579535 0.790385 -vt 0.086211 0.916470 -vt 0.087663 0.927791 -vt 0.082142 0.930075 -vt 0.391810 0.926003 -vt 0.387002 0.924011 -vt 0.387002 0.912062 -vt 0.358153 0.924011 -vt 0.366603 0.932461 -vt 0.364611 0.898803 -vt 0.380544 0.898803 -vt 0.378552 0.903612 -vt 0.364611 0.937269 -vt 0.378552 0.932461 -vt 0.391810 0.910070 -vt 0.366603 0.903612 -vt 0.380544 0.937269 -vt 0.082138 0.941116 -vt 0.079854 0.935595 -vt 0.102219 0.923107 -vt 0.106788 0.934148 -vt 0.095467 0.935600 -vt 0.102210 0.948098 -vt 0.093178 0.941119 -vt 0.075159 0.950148 -vt 0.087657 0.943404 -vt 0.073110 0.923097 -vt 0.100161 0.921047 -vt 0.093182 0.930079 -vt 0.100151 0.950156 -vt 0.089109 0.954725 -vt 0.068532 0.937047 -vt 0.881409 0.314431 -vt 0.898063 0.314431 -vt 0.898063 0.325584 -vt 0.842907 0.677960 -vt 0.842907 0.662027 -vt 0.848677 0.664417 -vt 0.826253 0.630161 -vt 0.826253 0.614228 -vt 0.842907 0.614228 -vt 0.881409 0.370197 -vt 0.898063 0.370197 -vt 0.898063 0.381350 -vt 0.842907 0.598295 -vt 0.848677 0.600685 -vt 0.826253 0.598295 -vt 0.881409 0.347890 -vt 0.881409 0.336737 -vt 0.898063 0.336737 -vt 0.842907 0.630161 -vt 0.848677 0.616618 -vt 0.842907 0.725760 -vt 0.826253 0.725760 -vt 0.826253 0.709827 -vt 0.881409 0.303278 -vt 0.898063 0.303278 -vt 0.848677 0.680350 -vt 0.848677 0.691504 -vt 0.842907 0.709827 -vt 0.826253 0.693893 -vt 0.182908 0.880001 -vt 0.194061 0.880001 -vt 0.196451 0.885771 -vt 0.842907 0.693893 -vt 0.848677 0.696283 -vt 0.848677 0.707437 -vt 0.826253 0.677960 -vt 0.848677 0.712216 -vt 0.848677 0.723370 -vt 0.898063 0.347890 -vt 0.898063 0.359044 -vt 0.826253 0.662027 -vt 0.010022 0.927736 -vt 0.021289 0.916470 -vt 0.023280 0.921278 -vt 0.826253 0.646094 -vt 0.842907 0.646094 -vt 0.881409 0.359044 -vt 0.848677 0.632551 -vt 0.848677 0.648484 -vt 0.848677 0.659637 -vt 0.881409 0.381350 -vt 0.898063 0.392503 -vt 0.881409 0.325584 -vt 0.276116 0.885771 -vt 0.276116 0.894098 -vt 0.260183 0.894098 -vt 0.225927 0.880001 -vt 0.228317 0.885771 -vt 0.212384 0.885771 -vt 0.246640 0.880001 -vt 0.257793 0.880001 -vt 0.260183 0.885771 -vt 0.305592 0.880001 -vt 0.307982 0.885771 -vt 0.292049 0.885771 -vt 0.198841 0.880001 -vt 0.209994 0.880001 -vt 0.241860 0.880001 -vt 0.244250 0.885771 -vt 0.273726 0.880001 -vt 0.289659 0.880001 -vt 0.292049 0.894098 -vt 0.307982 0.894098 -vt 0.305592 0.899868 -vt 0.180518 0.885771 -vt 0.196451 0.894098 -vt 0.228317 0.894098 -vt 0.212384 0.894098 -vt 0.244250 0.894098 -vt 0.868722 0.495399 -vt 0.868722 0.484246 -vt 0.902030 0.484246 -vt 0.209994 0.899868 -vt 0.198841 0.899868 -vt 0.241860 0.899868 -vt 0.273726 0.899868 -vt 0.289659 0.899868 -vt 0.194061 0.899868 -vt 0.182908 0.899868 -vt 0.225927 0.899868 -vt 0.257793 0.899868 -vt 0.246640 0.899868 -vt 0.868722 0.450787 -vt 0.902030 0.450787 -vt 0.902030 0.461940 -vt 0.868722 0.517705 -vt 0.902030 0.517705 -vt 0.902030 0.528858 -vt 0.902030 0.495399 -vt 0.902030 0.506552 -vt 0.868722 0.473093 -vt 0.902030 0.473093 -vt 0.868722 0.461940 -vt 0.868722 0.540012 -vt 0.868722 0.528859 -vt 0.868722 0.506552 -vt 0.918108 0.320950 -vt 0.922681 0.309909 -vt 0.931715 0.316885 -vt 0.037222 0.954935 -vt 0.035230 0.950127 -vt 0.043680 0.941677 -vt 0.014830 0.929728 -vt 0.014830 0.941677 -vt 0.048488 0.927736 -vt 0.043680 0.929728 -vt 0.035230 0.921278 -vt 0.010022 0.943669 -vt 0.023280 0.950127 -vt 0.048488 0.943669 -vt 0.037222 0.916470 -vt 0.021289 0.954935 -vt 0.937235 0.330212 -vt 0.931715 0.327925 -vt 0.938691 0.303278 -vt 0.949731 0.307851 -vt 0.942755 0.316885 -vt 0.956362 0.320950 -vt 0.945042 0.322405 -vt 0.938691 0.341533 -vt 0.942755 0.327925 -vt 0.922680 0.334901 -vt 0.918108 0.323861 -vt 0.929428 0.322405 -vt 0.935779 0.303278 -vt 0.937235 0.314599 -vt 0.951789 0.334901 -vt 0.924739 0.336960 -vt 0.821594 0.226819 -vt 0.821594 0.215665 -vt 0.838248 0.215665 -vt 0.811463 0.133610 -vt 0.821594 0.136000 -vt 0.821594 0.147153 -vt 0.811463 0.229208 -vt 0.803136 0.229208 -vt 0.803136 0.213275 -vt 0.821594 0.167866 -vt 0.838248 0.167866 -vt 0.838248 0.179019 -vt 0.811463 0.197342 -vt 0.821594 0.199732 -vt 0.821594 0.210885 -vt 0.803136 0.197342 -vt 0.821594 0.258685 -vt 0.821594 0.247531 -vt 0.838248 0.247531 -vt 0.811463 0.213275 -vt 0.803136 0.181409 -vt 0.838248 0.199732 -vt 0.838248 0.210886 -vt 0.811463 0.149543 -vt 0.821594 0.151933 -vt 0.821594 0.163086 -vt 0.803136 0.165476 -vt 0.811463 0.165476 -vt 0.821594 0.179019 -vt 0.803136 0.149543 -vt 0.811463 0.181409 -vt 0.821594 0.183799 -vt 0.838248 0.136000 -vt 0.838248 0.147153 -vt 0.803136 0.133610 -vt 0.470365 0.910070 -vt 0.481631 0.898803 -vt 0.483623 0.903612 -vt 0.811463 0.245142 -vt 0.803136 0.245142 -vt 0.803136 0.261075 -vt 0.838248 0.151933 -vt 0.838248 0.163086 -vt 0.821594 0.231598 -vt 0.821594 0.194952 -vt 0.838248 0.183799 -vt 0.821594 0.242752 -vt 0.838248 0.231598 -vt 0.935779 0.361577 -vt 0.937235 0.372898 -vt 0.931715 0.375185 -vt 0.497564 0.937269 -vt 0.495573 0.932461 -vt 0.504022 0.924011 -vt 0.475173 0.912062 -vt 0.475173 0.924011 -vt 0.497564 0.898803 -vt 0.508831 0.910070 -vt 0.504022 0.912062 -vt 0.470365 0.926003 -vt 0.483623 0.932461 -vt 0.508831 0.926003 -vt 0.495573 0.903612 -vt 0.481631 0.937269 -vt 0.931715 0.386225 -vt 0.929428 0.380705 -vt 0.951789 0.368209 -vt 0.956362 0.379249 -vt 0.945042 0.380705 -vt 0.956362 0.382160 -vt 0.951789 0.393200 -vt 0.942755 0.386225 -vt 0.924739 0.395259 -vt 0.937235 0.388511 -vt 0.922680 0.368209 -vt 0.938691 0.361577 -vt 0.949731 0.366150 -vt 0.942755 0.375185 -vt 0.949731 0.395259 -vt 0.938691 0.399832 -vt 0.918108 0.382160 -vt 0.764063 0.850107 -vt 0.780717 0.850107 -vt 0.780717 0.861260 -vt 0.317140 0.810768 -vt 0.317140 0.794835 -vt 0.322910 0.797225 -vt 0.300486 0.762969 -vt 0.300486 0.747036 -vt 0.317140 0.747036 -vt 0.764063 0.905872 -vt 0.780717 0.905872 -vt 0.780717 0.917026 -vt 0.317140 0.731103 -vt 0.322910 0.733492 -vt 0.300486 0.731103 -vt 0.764063 0.883566 -vt 0.764063 0.872413 -vt 0.780717 0.872413 -vt 0.317140 0.762969 -vt 0.322910 0.749426 -vt 0.317140 0.858567 -vt 0.300486 0.858567 -vt 0.300486 0.842634 -vt 0.764063 0.838954 -vt 0.780717 0.838954 -vt 0.317140 0.826701 -vt 0.322910 0.813158 -vt 0.317140 0.842634 -vt 0.300486 0.826701 -vt 0.023565 0.876558 -vt 0.025955 0.882328 -vt 0.010022 0.882328 -vt 0.322910 0.829091 -vt 0.322910 0.840244 -vt 0.300486 0.810768 -vt 0.322910 0.845024 -vt 0.322910 0.856177 -vt 0.780717 0.883566 -vt 0.780717 0.894719 -vt 0.300486 0.794835 -vt 0.916385 0.051540 -vt 0.916385 0.035607 -vt 0.921193 0.037599 -vt 0.300486 0.778902 -vt 0.317140 0.778902 -vt 0.764063 0.894719 -vt 0.322910 0.765359 -vt 0.322910 0.776512 -vt 0.322910 0.781292 -vt 0.322910 0.792445 -vt 0.764063 0.928179 -vt 0.764063 0.917026 -vt 0.764063 0.861260 -vt 0.105620 0.882328 -vt 0.105620 0.890655 -vt 0.089687 0.890655 -vt 0.055431 0.876558 -vt 0.057821 0.882328 -vt 0.041888 0.882328 -vt 0.076144 0.876558 -vt 0.087297 0.876558 -vt 0.089687 0.882328 -vt 0.135097 0.876558 -vt 0.137486 0.882328 -vt 0.121553 0.882328 -vt 0.028345 0.876558 -vt 0.039498 0.876558 -vt 0.071364 0.876558 -vt 0.073754 0.882328 -vt 0.092077 0.876558 -vt 0.103230 0.876558 -vt 0.119163 0.876558 -vt 0.121553 0.890655 -vt 0.137486 0.890655 -vt 0.135097 0.896425 -vt 0.025955 0.890655 -vt 0.057821 0.890655 -vt 0.041888 0.890655 -vt 0.073754 0.890655 -vt 0.868722 0.604668 -vt 0.868722 0.593515 -vt 0.902030 0.593515 -vt 0.039498 0.896425 -vt 0.028345 0.896425 -vt 0.071364 0.896425 -vt 0.103230 0.896425 -vt 0.092077 0.896425 -vt 0.119163 0.896425 -vt 0.023565 0.896425 -vt 0.012412 0.896425 -vt 0.055431 0.896425 -vt 0.087297 0.896425 -vt 0.076144 0.896425 -vt 0.868722 0.560056 -vt 0.902030 0.560056 -vt 0.902030 0.571209 -vt 0.868722 0.626975 -vt 0.902030 0.626975 -vt 0.902030 0.638128 -vt 0.902030 0.604668 -vt 0.902030 0.615822 -vt 0.868722 0.582362 -vt 0.902030 0.582362 -vt 0.868722 0.571209 -vt 0.868722 0.649281 -vt 0.868722 0.638128 -vt 0.868722 0.615822 -vt 0.192771 0.919912 -vt 0.204721 0.919912 -vt 0.201734 0.930928 -vt 0.954851 0.051540 -vt 0.950042 0.049549 -vt 0.950042 0.037599 -vt 0.921193 0.049549 -vt 0.929643 0.057998 -vt 0.943584 0.024341 -vt 0.941593 0.029149 -vt 0.929643 0.029149 -vt 0.927651 0.062807 -vt 0.941593 0.057998 -vt 0.954851 0.035607 -vt 0.927651 0.024341 -vt 0.943584 0.062807 -vt 0.191534 0.941128 -vt 0.191534 0.935153 -vt 0.216975 0.944116 -vt 0.205959 0.941128 -vt 0.205959 0.935153 -vt 0.207411 0.955255 -vt 0.201734 0.945353 -vt 0.181632 0.946805 -vt 0.195759 0.945353 -vt 0.181632 0.929476 -vt 0.190082 0.921026 -vt 0.195759 0.930928 -vt 0.215861 0.929476 -vt 0.204721 0.956369 -vt 0.192771 0.956369 -vt 0.180518 0.932166 -vt 0.800761 0.784709 -vt 0.800761 0.773556 -vt 0.834069 0.773556 -vt 0.800761 0.762403 -vt 0.834069 0.762403 -vt 0.800761 0.851628 -vt 0.800761 0.840475 -vt 0.834069 0.840475 -vt 0.800761 0.829322 -vt 0.834069 0.829322 -vt 0.800761 0.818169 -vt 0.834069 0.818169 -vt 0.800761 0.807016 -vt 0.800761 0.795863 -vt 0.834069 0.784709 -vt 0.834069 0.795863 -vt 0.844776 0.798651 -vt 0.844776 0.804227 -vt 0.853103 0.798651 -vt 0.853103 0.804227 -vt 0.844777 0.765191 -vt 0.844777 0.770768 -vt 0.844777 0.820957 -vt 0.844777 0.787498 -vt 0.844776 0.776345 -vt 0.834069 0.851628 -vt 0.844777 0.843263 -vt 0.834069 0.807016 -vt 0.844777 0.809804 -vt 0.844777 0.815381 -vt 0.844777 0.832110 -vt 0.844777 0.837687 -vt 0.965486 0.884454 -vt 0.950808 0.882679 -vt 0.950603 0.878520 -vt 0.844777 0.826534 -vt 0.853103 0.820957 -vt 0.844777 0.848840 -vt 0.853103 0.843263 -vt 0.844777 0.781921 -vt 0.853103 0.776345 -vt 0.853103 0.787498 -vt 0.853103 0.793074 -vt 0.853103 0.809804 -vt 0.853103 0.815381 -vt 0.853103 0.832110 -vt 0.853103 0.837687 -vt 0.853103 0.765191 -vt 0.853103 0.770768 -vt 0.026752 0.974980 -vt 0.026752 0.984139 -vt 0.010022 0.984139 -vt 0.751126 0.974289 -vt 0.738744 0.966210 -vt 0.752495 0.956682 -vt 0.942002 0.687871 -vt 0.950082 0.675489 -vt 0.959610 0.689241 -vt 0.803727 0.950258 -vt 0.811806 0.937876 -vt 0.821334 0.951627 -vt 0.947427 0.873936 -vt 0.955506 0.861554 -vt 0.965034 0.875305 -vt 0.764743 0.973616 -vt 0.776268 0.964355 -vt 0.780717 0.972362 -vt 0.857267 0.787498 -vt 0.857267 0.793074 -vt 0.761644 0.956230 -vt 0.759868 0.970908 -vt 0.813661 0.975400 -vt 0.804400 0.963875 -vt 0.807109 0.959000 -vt 0.971687 0.421583 -vt 0.971687 0.430742 -vt 0.954957 0.430742 -vt 0.974895 0.024341 -vt 0.984055 0.024341 -vt 0.984055 0.041071 -vt 0.918183 0.430742 -vt 0.918183 0.421583 -vt 0.934913 0.421583 -vt 0.780717 0.956348 -vt 0.968069 0.702838 -vt 0.959943 0.717462 -vt 0.951937 0.713013 -vt 0.829793 0.965224 -vt 0.821668 0.979849 -vt 0.965368 0.903527 -vt 0.957361 0.899078 -vt 0.976414 0.641363 -vt 0.971643 0.644163 -vt 0.969671 0.642191 -vt 0.948100 0.887553 -vt 0.960062 0.698389 -vt 0.945384 0.696613 -vt 0.945178 0.692455 -vt 0.857267 0.832110 -vt 0.857267 0.837687 -vt 0.939036 0.703510 -vt 0.942676 0.701488 -vt 0.857267 0.809804 -vt 0.857267 0.815381 -vt 0.964911 0.646951 -vt 0.966883 0.642191 -vt 0.969671 0.648923 -vt 0.964083 0.637420 -vt 0.964911 0.644163 -vt 0.960140 0.649751 -vt 0.966883 0.648923 -vt 0.976414 0.649751 -vt 0.972471 0.653694 -vt 0.976997 0.648345 -vt 0.971643 0.646951 -vt 0.965489 0.636838 -vt 0.971065 0.636838 -vt 0.959557 0.648345 -vt 0.959557 0.642769 -vt 0.971065 0.654277 -vt 0.965489 0.654277 -vt 0.857267 0.765191 -vt 0.857267 0.770768 -vt 0.949354 0.903527 -vt 0.944460 0.889575 -vt 0.806903 0.954842 -vt 0.800761 0.965897 -vt 0.387941 0.769821 -vt 0.412922 0.769821 -vt 0.412922 0.779780 -vt 0.387941 0.779780 -vt 0.412922 0.789738 -vt 0.412922 0.799696 -vt 0.387941 0.799696 -vt 0.412922 0.809654 -vt 0.387941 0.809654 -vt 0.412922 0.819612 -vt 0.412922 0.829570 -vt 0.387941 0.829570 -vt 0.418756 0.781472 -vt 0.418756 0.788045 -vt 0.387941 0.759863 -vt 0.412922 0.759863 -vt 0.387941 0.749905 -vt 0.412922 0.749905 -vt 0.378326 0.827579 -vt 0.378326 0.821604 -vt 0.418757 0.801389 -vt 0.422723 0.803032 -vt 0.422723 0.806318 -vt 0.418757 0.811347 -vt 0.418756 0.761556 -vt 0.418756 0.771514 -vt 0.418756 0.791431 -vt 0.418757 0.821305 -vt 0.418757 0.827877 -vt 0.418756 0.807961 -vt 0.418756 0.751598 -vt 0.971269 0.457349 -vt 0.971416 0.454066 -vt 0.988051 0.454962 -vt 0.422723 0.783116 -vt 0.422723 0.786402 -vt 0.418756 0.758170 -vt 0.422723 0.753241 -vt 0.418757 0.817919 -vt 0.422723 0.812990 -vt 0.418756 0.798003 -vt 0.422723 0.793074 -vt 0.418756 0.778087 -vt 0.422723 0.773157 -vt 0.422723 0.763199 -vt 0.422723 0.766485 -vt 0.422723 0.822948 -vt 0.575789 0.536845 -vt 0.570689 0.531745 -vt 0.572802 0.529633 -vt 0.971416 0.473774 -vt 0.988051 0.472878 -vt 0.988238 0.475860 -vt 0.971180 0.467206 -vt 0.987836 0.466908 -vt 0.987917 0.469894 -vt 0.971180 0.460634 -vt 0.987836 0.460933 -vt 0.987809 0.463920 -vt 0.971622 0.450787 -vt 0.988238 0.451981 -vt 0.971269 0.470491 -vt 0.971151 0.463920 -vt 0.987917 0.457947 -vt 0.378326 0.751897 -vt 0.378326 0.757872 -vt 0.353345 0.757872 -vt 0.378326 0.807662 -vt 0.378326 0.801688 -vt 0.387941 0.789738 -vt 0.378326 0.787746 -vt 0.387941 0.819612 -vt 0.378326 0.817621 -vt 0.378326 0.767830 -vt 0.378326 0.761855 -vt 0.378326 0.777788 -vt 0.378326 0.771813 -vt 0.378326 0.797704 -vt 0.378326 0.811646 -vt 0.353345 0.817621 -vt 0.353345 0.797704 -vt 0.353345 0.791729 -vt 0.353345 0.777788 -vt 0.353345 0.767830 -vt 0.353345 0.761855 -vt 0.353345 0.827579 -vt 0.353345 0.821604 -vt 0.353345 0.807662 -vt 0.353345 0.801688 -vt 0.353345 0.787746 -vt 0.353345 0.781771 -vt 0.842907 0.337534 -vt 0.842907 0.348687 -vt 0.826253 0.348687 -vt 0.853038 0.414809 -vt 0.853038 0.430742 -vt 0.842907 0.428352 -vt 0.853038 0.335144 -vt 0.861365 0.335144 -vt 0.861365 0.351077 -vt 0.842907 0.396486 -vt 0.826253 0.396486 -vt 0.826253 0.385333 -vt 0.853038 0.367010 -vt 0.842907 0.364620 -vt 0.842907 0.353467 -vt 0.861365 0.367010 -vt 0.842907 0.305668 -vt 0.842907 0.316821 -vt 0.826253 0.316821 -vt 0.853038 0.351077 -vt 0.861365 0.382943 -vt 0.826253 0.364620 -vt 0.826253 0.353467 -vt 0.842907 0.412419 -vt 0.842907 0.401266 -vt 0.861365 0.398876 -vt 0.853038 0.398876 -vt 0.853038 0.382943 -vt 0.861365 0.414809 -vt 0.842907 0.380553 -vt 0.826253 0.428352 -vt 0.826253 0.417199 -vt 0.861365 0.430742 -vt 0.528875 0.910070 -vt 0.533683 0.912062 -vt 0.533683 0.924011 -vt 0.853038 0.319211 -vt 0.861365 0.319211 -vt 0.861365 0.303278 -vt 0.826253 0.412419 -vt 0.826253 0.401266 -vt 0.842907 0.332754 -vt 0.842907 0.369400 -vt 0.826253 0.380553 -vt 0.842907 0.321601 -vt 0.826253 0.332754 -vt 0.305774 0.919912 -vt 0.317724 0.919912 -vt 0.314736 0.930928 -vt 0.567341 0.910070 -vt 0.567341 0.926003 -vt 0.562532 0.924011 -vt 0.528875 0.926003 -vt 0.542133 0.932461 -vt 0.540141 0.898803 -vt 0.556074 0.898803 -vt 0.554083 0.903612 -vt 0.540141 0.937269 -vt 0.554083 0.932461 -vt 0.562532 0.912062 -vt 0.542133 0.903612 -vt 0.556074 0.937269 -vt 0.304537 0.941128 -vt 0.304537 0.935153 -vt 0.329978 0.932166 -vt 0.329978 0.944116 -vt 0.318961 0.941128 -vt 0.328863 0.946805 -vt 0.320414 0.955255 -vt 0.314736 0.945353 -vt 0.303084 0.955255 -vt 0.294635 0.946805 -vt 0.303084 0.921026 -vt 0.308762 0.930928 -vt 0.328863 0.929476 -vt 0.318961 0.935153 -vt 0.317724 0.956369 -vt 0.305774 0.956369 -vt 0.308762 0.945353 -vt 0.293521 0.932166 -vt 0.896340 0.091260 -vt 0.896340 0.102413 -vt 0.879686 0.102413 -vt 0.832023 0.498586 -vt 0.832023 0.514519 -vt 0.826253 0.512129 -vt 0.848677 0.546385 -vt 0.848677 0.562318 -vt 0.832023 0.562318 -vt 0.896340 0.046647 -vt 0.879686 0.046647 -vt 0.879686 0.035494 -vt 0.832023 0.578251 -vt 0.826253 0.575861 -vt 0.826253 0.564708 -vt 0.848677 0.578251 -vt 0.896340 0.068953 -vt 0.896340 0.080107 -vt 0.879686 0.080107 -vt 0.826253 0.559928 -vt 0.826253 0.548775 -vt 0.848677 0.450787 -vt 0.848677 0.466720 -vt 0.832023 0.466720 -vt 0.896340 0.113566 -vt 0.879686 0.113566 -vt 0.826253 0.496196 -vt 0.826253 0.485043 -vt 0.848677 0.482653 -vt 0.613122 0.854315 -vt 0.615512 0.860085 -vt 0.599579 0.860085 -vt 0.832023 0.482653 -vt 0.826253 0.480263 -vt 0.826253 0.469110 -vt 0.848677 0.498586 -vt 0.826253 0.464330 -vt 0.826253 0.453176 -vt 0.879686 0.068953 -vt 0.879686 0.057800 -vt 0.848677 0.514519 -vt 0.423121 0.898803 -vt 0.425113 0.903612 -vt 0.416663 0.912062 -vt 0.848677 0.530452 -vt 0.832023 0.546385 -vt 0.832023 0.530452 -vt 0.896340 0.057800 -vt 0.826253 0.543995 -vt 0.826253 0.532842 -vt 0.826253 0.528062 -vt 0.826253 0.516909 -vt 0.896340 0.024341 -vt 0.896340 0.035494 -vt 0.879686 0.091260 -vt 0.695178 0.860085 -vt 0.695178 0.868412 -vt 0.679245 0.868412 -vt 0.633835 0.854315 -vt 0.644988 0.854315 -vt 0.647378 0.860085 -vt 0.665701 0.854315 -vt 0.676855 0.854315 -vt 0.679244 0.860085 -vt 0.713501 0.854315 -vt 0.724654 0.854315 -vt 0.727044 0.860085 -vt 0.629055 0.854315 -vt 0.631445 0.860085 -vt 0.660922 0.854315 -vt 0.663311 0.860085 -vt 0.692788 0.854315 -vt 0.697567 0.854315 -vt 0.708721 0.854315 -vt 0.711111 0.860085 -vt 0.727044 0.868412 -vt 0.724654 0.874182 -vt 0.713501 0.874182 -vt 0.711111 0.868412 -vt 0.615512 0.868412 -vt 0.647378 0.868412 -vt 0.631445 0.868412 -vt 0.663311 0.868412 -vt 0.858292 0.178223 -vt 0.858292 0.167070 -vt 0.891600 0.167070 -vt 0.629055 0.874182 -vt 0.660922 0.874182 -vt 0.692788 0.874182 -vt 0.681634 0.874182 -vt 0.708721 0.874182 -vt 0.697567 0.874182 -vt 0.599579 0.868412 -vt 0.613122 0.874182 -vt 0.644988 0.874182 -vt 0.633835 0.874182 -vt 0.676855 0.874182 -vt 0.665701 0.874182 -vt 0.858292 0.133610 -vt 0.891600 0.133610 -vt 0.891600 0.144763 -vt 0.858292 0.200529 -vt 0.891600 0.200529 -vt 0.891600 0.211682 -vt 0.891600 0.178223 -vt 0.891600 0.189376 -vt 0.858292 0.155917 -vt 0.891600 0.155917 -vt 0.858292 0.144763 -vt 0.858292 0.211682 -vt 0.891600 0.222835 -vt 0.858292 0.189376 -vt 0.249273 0.919912 -vt 0.261223 0.919912 -vt 0.258235 0.930928 -vt 0.450321 0.926003 -vt 0.439054 0.937269 -vt 0.437063 0.932461 -vt 0.411855 0.910070 -vt 0.416663 0.924011 -vt 0.450321 0.910070 -vt 0.445512 0.912062 -vt 0.437063 0.903612 -vt 0.411855 0.926003 -vt 0.425113 0.932461 -vt 0.445512 0.924011 -vt 0.439054 0.898803 -vt 0.423121 0.937269 -vt 0.248035 0.941128 -vt 0.248035 0.935153 -vt 0.273476 0.944116 -vt 0.262460 0.941128 -vt 0.262460 0.935153 -vt 0.263912 0.955255 -vt 0.258235 0.945353 -vt 0.238133 0.946805 -vt 0.252260 0.945353 -vt 0.246583 0.921026 -vt 0.252260 0.930928 -vt 0.272362 0.929476 -vt 0.249273 0.956369 -vt 0.237019 0.944116 -vt 0.237019 0.932166 -vt 0.198601 0.701004 -vt 0.198601 0.680187 -vt 0.225541 0.680187 -vt 0.174355 0.711058 -vt 0.171661 0.701004 -vt 0.599579 0.287640 -vt 0.599579 0.266088 -vt 0.657868 0.266088 -vt 0.090842 0.701004 -vt 0.090842 0.680187 -vt 0.117782 0.680187 -vt 0.309054 0.711058 -vt 0.306360 0.701004 -vt 0.333300 0.701004 -vt 0.599579 0.244536 -vt 0.657868 0.244536 -vt 0.225541 0.701004 -vt 0.252481 0.680187 -vt 0.255175 0.711058 -vt 0.252481 0.701004 -vt 0.279421 0.701004 -vt 0.599579 0.222984 -vt 0.657868 0.222984 -vt 0.279421 0.680187 -vt 0.306360 0.680187 -vt 0.222847 0.711058 -vt 0.201295 0.711058 -vt 0.599579 0.201432 -vt 0.171661 0.680187 -vt 0.120476 0.711058 -vt 0.117782 0.701004 -vt 0.144721 0.701004 -vt 0.599579 0.179880 -vt 0.657868 0.179880 -vt 0.010022 0.701004 -vt 0.010022 0.680186 -vt 0.036962 0.680186 -vt 0.066596 0.711058 -vt 0.063902 0.701004 -vt 0.599579 0.158328 -vt 0.063902 0.680187 -vt 0.168967 0.711058 -vt 0.147415 0.711058 -vt 0.599579 0.416951 -vt 0.599579 0.395399 -vt 0.657868 0.395399 -vt 0.144721 0.680187 -vt 0.034268 0.711058 -vt 0.012716 0.711058 -vt 0.599579 0.373847 -vt 0.657868 0.373847 -vt 0.012716 0.670132 -vt 0.034268 0.670132 -vt 0.282115 0.711058 -vt 0.599579 0.352295 -vt 0.657868 0.352295 -vt 0.093536 0.711058 -vt 0.599579 0.330744 -vt 0.657868 0.330744 -vt 0.201295 0.353345 -vt 0.222847 0.353345 -vt 0.225541 0.363399 -vt 0.599579 0.309192 -vt 0.657868 0.287640 -vt 0.657868 0.309192 -vt 0.039656 0.711058 -vt 0.036962 0.701004 -vt 0.249787 0.711058 -vt 0.228235 0.711058 -vt 0.333300 0.680187 -vt 0.288689 0.650088 -vt 0.288689 0.591799 -vt 0.310241 0.591799 -vt 0.255175 0.670133 -vt 0.276727 0.670133 -vt 0.120476 0.670132 -vt 0.174355 0.670133 -vt 0.195907 0.670133 -vt 0.039656 0.670132 -vt 0.282115 0.670133 -vt 0.147415 0.670132 -vt 0.168967 0.670133 -vt 0.201295 0.670133 -vt 0.222847 0.670133 -vt 0.066596 0.670132 -vt 0.309054 0.670133 -vt 0.228235 0.670133 -vt 0.249787 0.670133 -vt 0.093536 0.670132 -vt 0.115088 0.670132 -vt 0.133498 0.249787 -vt 0.123444 0.252481 -vt 0.123444 0.225541 -vt 0.482656 0.650088 -vt 0.482656 0.591799 -vt 0.504208 0.591799 -vt 0.374897 0.650088 -vt 0.374897 0.591799 -vt 0.396449 0.591799 -vt 0.418000 0.650088 -vt 0.418000 0.591799 -vt 0.439552 0.591799 -vt 0.310241 0.650088 -vt 0.331793 0.591799 -vt 0.504208 0.650088 -vt 0.525760 0.591799 -vt 0.396449 0.650088 -vt 0.439552 0.650088 -vt 0.461104 0.591799 -vt 0.331793 0.650088 -vt 0.353345 0.591799 -vt 0.525760 0.650088 -vt 0.547312 0.591799 -vt 0.461104 0.650088 -vt 0.353345 0.650088 -vt 0.123444 0.117782 -vt 0.040174 0.117782 -vt 0.040174 0.090842 -vt 0.133498 0.309055 -vt 0.133498 0.330606 -vt 0.123444 0.333300 -vt 0.133498 0.066596 -vt 0.133498 0.088148 -vt 0.123444 0.090842 -vt 0.133498 0.222847 -vt 0.123444 0.198601 -vt 0.133498 0.168967 -vt 0.123444 0.171661 -vt 0.123444 0.144721 -vt 0.133498 0.303667 -vt 0.123444 0.306361 -vt 0.123444 0.279421 -vt 0.133498 0.061208 -vt 0.123444 0.063902 -vt 0.123444 0.036962 -vt 0.133498 0.174355 -vt 0.133498 0.195907 -vt 0.133498 0.120476 -vt 0.133498 0.142027 -vt 0.133498 0.276727 -vt 0.133498 0.034268 -vt 0.123444 0.010022 -vt 0.133498 0.093536 -vt 0.133498 0.115088 -vt 0.010022 0.111047 -vt 0.010022 0.097577 -vt 0.040174 0.252481 -vt 0.040174 0.225541 -vt 0.040174 0.333301 -vt 0.040174 0.306361 -vt 0.040174 0.063902 -vt 0.040174 0.198601 -vt 0.040174 0.171661 -vt 0.040174 0.144721 -vt 0.040174 0.279421 -vt 0.040174 0.036962 -vt 0.040174 0.010022 -vt 0.036962 0.363399 -vt 0.036962 0.421688 -vt 0.010022 0.421688 -vt 0.147415 0.353345 -vt 0.168967 0.353345 -vt 0.171661 0.363399 -vt 0.255175 0.353345 -vt 0.276727 0.353345 -vt 0.279421 0.363399 -vt 0.309055 0.353345 -vt 0.330606 0.353345 -vt 0.333300 0.363399 -vt 0.061208 0.353345 -vt 0.063902 0.363399 -vt 0.115088 0.353345 -vt 0.117782 0.363399 -vt 0.090842 0.363399 -vt 0.228235 0.353345 -vt 0.249787 0.353345 -vt 0.252481 0.363399 -vt 0.282115 0.353345 -vt 0.303667 0.353345 -vt 0.306361 0.363399 -vt 0.034268 0.353345 -vt 0.010022 0.363399 -vt 0.088148 0.353345 -vt 0.142027 0.353345 -vt 0.144721 0.363399 -vt 0.195907 0.353345 -vt 0.198601 0.363399 -vt 0.034268 0.431742 -vt 0.117782 0.421688 -vt 0.090842 0.421688 -vt 0.252481 0.421688 -vt 0.225541 0.421688 -vt 0.333300 0.421688 -vt 0.306361 0.421688 -vt 0.063902 0.421688 -vt 0.198601 0.421688 -vt 0.171661 0.421688 -vt 0.144721 0.421688 -vt 0.279421 0.421688 -vt 0.225541 0.591799 -vt 0.225541 0.650088 -vt 0.203989 0.650088 -vt 0.115088 0.431742 -vt 0.249787 0.431742 -vt 0.228235 0.431742 -vt 0.330606 0.431742 -vt 0.309054 0.431742 -vt 0.088148 0.431742 -vt 0.222847 0.431742 -vt 0.201295 0.431742 -vt 0.168967 0.431742 -vt 0.147415 0.431742 -vt 0.303667 0.431742 -vt 0.282115 0.431742 -vt 0.061208 0.431742 -vt 0.195907 0.431742 -vt 0.142027 0.431742 -vt 0.276727 0.431742 -vt 0.255175 0.431742 -vt 0.579535 0.290334 -vt 0.569481 0.293028 -vt 0.569481 0.266088 -vt 0.031574 0.591799 -vt 0.031574 0.650088 -vt 0.010022 0.650088 -vt 0.096230 0.591799 -vt 0.096230 0.650088 -vt 0.074678 0.650088 -vt 0.203989 0.591799 -vt 0.182437 0.650088 -vt 0.268645 0.591799 -vt 0.268645 0.650088 -vt 0.247093 0.650088 -vt 0.074678 0.591799 -vt 0.053126 0.650088 -vt 0.182437 0.591799 -vt 0.160885 0.650088 -vt 0.139333 0.591799 -vt 0.139333 0.650088 -vt 0.117782 0.650088 -vt 0.247093 0.591799 -vt 0.053126 0.591799 -vt 0.160885 0.591799 -vt 0.117782 0.591799 -vt 0.569481 0.346908 -vt 0.546165 0.346907 -vt 0.546165 0.319968 -vt 0.579535 0.403481 -vt 0.579535 0.425033 -vt 0.569481 0.427727 -vt 0.579535 0.182574 -vt 0.569481 0.185268 -vt 0.569481 0.158328 -vt 0.579535 0.263394 -vt 0.569481 0.239148 -vt 0.579535 0.376541 -vt 0.579535 0.398093 -vt 0.569481 0.400787 -vt 0.579535 0.457361 -vt 0.579535 0.478913 -vt 0.569481 0.481607 -vt 0.579535 0.236454 -vt 0.569481 0.212208 -vt 0.579535 0.349601 -vt 0.579535 0.371153 -vt 0.569481 0.373847 -vt 0.579535 0.295722 -vt 0.579535 0.317274 -vt 0.569481 0.319968 -vt 0.579535 0.430421 -vt 0.579535 0.451973 -vt 0.569481 0.454667 -vt 0.579535 0.209514 -vt 0.579535 0.344214 -vt 0.546165 0.212208 -vt 0.526712 0.209514 -vt 0.526712 0.187962 -vt 0.546165 0.293028 -vt 0.546165 0.427727 -vt 0.546165 0.400787 -vt 0.546165 0.185268 -vt 0.546165 0.266088 -vt 0.546165 0.373847 -vt 0.546165 0.481607 -vt 0.546165 0.454667 -vt 0.546165 0.239148 -vt 0.728905 0.487025 -vt 0.688689 0.476249 -vt 0.707353 0.406592 -vt 0.526712 0.344213 -vt 0.526712 0.322662 -vt 0.526712 0.290334 -vt 0.526712 0.425033 -vt 0.526712 0.403481 -vt 0.546165 0.158328 -vt 0.526712 0.182574 -vt 0.526712 0.263394 -vt 0.526712 0.398093 -vt 0.526712 0.376541 -vt 0.526712 0.478913 -vt 0.526712 0.236454 -vt 0.526712 0.214902 -vt 0.526712 0.371153 -vt 0.526712 0.349601 -vt 0.526712 0.317274 -vt 0.526712 0.295722 -vt 0.526712 0.451973 -vt 0.153543 0.171799 -vt 0.320083 0.171798 -vt 0.320083 0.185268 -vt 0.010022 0.245746 -vt 0.010022 0.232276 -vt 0.010022 0.326566 -vt 0.010022 0.084107 -vt 0.010022 0.218806 -vt 0.010022 0.164926 -vt 0.010022 0.299626 -vt 0.010022 0.286156 -vt 0.010022 0.057167 -vt 0.010022 0.043697 -vt 0.010022 0.191866 -vt 0.010022 0.178396 -vt 0.010022 0.137986 -vt 0.010022 0.124517 -vt 0.010022 0.272686 -vt 0.010022 0.030227 -vt 0.010022 0.016757 -vt 0.900591 0.725760 -vt 0.887121 0.725760 -vt 0.888805 0.719476 -vt 0.153543 0.293028 -vt 0.320083 0.293028 -vt 0.320083 0.306498 -vt 0.153543 0.225678 -vt 0.320083 0.225678 -vt 0.320083 0.239148 -vt 0.153543 0.252618 -vt 0.320083 0.252618 -vt 0.320083 0.266088 -vt 0.153543 0.185268 -vt 0.320083 0.198738 -vt 0.153543 0.306498 -vt 0.320083 0.319967 -vt 0.153543 0.266088 -vt 0.320083 0.279558 -vt 0.153543 0.198738 -vt 0.320083 0.212208 -vt 0.153543 0.158329 -vt 0.320083 0.158328 -vt 0.153543 0.279558 -vt 0.153543 0.212208 -vt 0.153543 0.239148 -vt 0.506667 0.239148 -vt 0.340127 0.239148 -vt 0.340127 0.229046 -vt 0.887122 0.675489 -vt 0.888805 0.681773 -vt 0.880056 0.686824 -vt 0.918992 0.693889 -vt 0.912708 0.695573 -vt 0.907657 0.686824 -vt 0.875456 0.719025 -vt 0.880056 0.714424 -vt 0.912257 0.719025 -vt 0.898908 0.719476 -vt 0.868721 0.693889 -vt 0.875456 0.682224 -vt 0.900591 0.675489 -vt 0.912257 0.682224 -vt 0.918992 0.707359 -vt 0.907657 0.714425 -vt 0.875005 0.695573 -vt 0.875005 0.705676 -vt 0.898908 0.681773 -vt 0.912708 0.705676 -vt 0.868721 0.707359 -vt 0.506667 0.218943 -vt 0.340127 0.218943 -vt 0.340127 0.208841 -vt 0.506667 0.269455 -vt 0.340127 0.269456 -vt 0.340127 0.259353 -vt 0.506667 0.178533 -vt 0.340127 0.178533 -vt 0.340127 0.168431 -vt 0.506667 0.229046 -vt 0.506667 0.208841 -vt 0.340127 0.198738 -vt 0.506667 0.259353 -vt 0.340127 0.249251 -vt 0.506667 0.168431 -vt 0.340127 0.158328 -vt 0.506667 0.198738 -vt 0.340127 0.188636 -vt 0.506667 0.249251 -vt 0.506667 0.279558 -vt 0.340127 0.279558 -vt 0.506667 0.188636 -vt 0.814281 0.917831 -vt 0.800761 0.885192 -vt 0.833400 0.871673 -vt 0.622265 0.811585 -vt 0.622265 0.785089 -vt 0.648761 0.785089 -vt 0.630976 0.762403 -vt 0.635513 0.779601 -vt 0.606896 0.820538 -vt 0.599579 0.802874 -vt 0.616777 0.798337 -vt 0.640050 0.834271 -vt 0.635513 0.817073 -vt 0.648761 0.811585 -vt 0.671447 0.793800 -vt 0.654249 0.798337 -vt 0.657714 0.769720 -vt 0.606896 0.776136 -vt 0.613312 0.826954 -vt 0.664130 0.820538 -vt 0.541365 0.979796 -vt 0.537202 0.979796 -vt 0.537202 0.957314 -vt 0.533038 0.979796 -vt 0.533038 0.957314 -vt 0.528875 0.979796 -vt 0.528875 0.957314 -vt 0.553856 0.957314 -vt 0.553856 0.979796 -vt 0.549692 0.979796 -vt 0.545529 0.957314 -vt 0.545529 0.979796 -vt 0.977487 0.198620 -vt 0.973324 0.198620 -vt 0.973324 0.176138 -vt 0.969160 0.198620 -vt 0.969160 0.176138 -vt 0.964997 0.198620 -vt 0.964997 0.176138 -vt 0.989978 0.176138 -vt 0.989978 0.198620 -vt 0.985814 0.198620 -vt 0.981651 0.176138 -vt 0.981651 0.198620 -vt 0.977487 0.156093 -vt 0.973324 0.156093 -vt 0.973324 0.133610 -vt 0.969160 0.156093 -vt 0.969160 0.133610 -vt 0.964997 0.156093 -vt 0.964997 0.133610 -vt 0.989978 0.133610 -vt 0.989978 0.156093 -vt 0.985814 0.156093 -vt 0.981651 0.133610 -vt 0.981651 0.156093 -vt 0.489531 0.979796 -vt 0.485368 0.979796 -vt 0.485368 0.957314 -vt 0.481204 0.979796 -vt 0.481204 0.957314 -vt 0.477041 0.979796 -vt 0.477041 0.957314 -vt 0.502022 0.957314 -vt 0.502022 0.979796 -vt 0.497858 0.979796 -vt 0.493695 0.957314 -vt 0.493695 0.979796 -vt 0.409721 0.501748 -vt 0.409721 0.510075 -vt 0.010022 0.510075 -vt 0.491054 0.424508 -vt 0.491054 0.436284 -vt 0.449419 0.436284 -vt 0.010022 0.460114 -vt 0.010022 0.451787 -vt 0.409721 0.451786 -vt 0.883199 0.867442 -vt 0.877311 0.861554 -vt 0.918528 0.861554 -vt 0.450935 0.530120 -vt 0.450935 0.571755 -vt 0.051239 0.571755 -vt 0.409721 0.460113 -vt 0.010022 0.501749 -vt 0.797882 0.636074 -vt 0.797882 0.627747 -vt 0.806209 0.627747 -vt 0.797881 0.303278 -vt 0.806208 0.311605 -vt 0.797881 0.311605 -vt 0.806208 0.334433 -vt 0.806208 0.426030 -vt 0.797881 0.426030 -vt 0.433806 0.407853 -vt 0.433806 0.316256 -vt 0.506667 0.316256 -vt 0.677913 0.266580 -vt 0.677913 0.174982 -vt 0.750774 0.174982 -vt 0.797881 0.513321 -vt 0.797881 0.490493 -vt 0.806208 0.490493 -vt 0.797882 0.604919 -vt 0.806209 0.604919 -vt 0.693526 0.283234 -vt 0.750774 0.266580 -vt 0.449419 0.424508 -vt 0.506667 0.407853 -vt 0.806208 0.513321 -vt 0.797881 0.334433 -vt 0.806208 0.448858 -vt 0.693526 0.158328 -vt 0.735161 0.158328 -vt 0.449419 0.299602 -vt 0.491054 0.299602 -vt 0.797881 0.448858 -vt 0.657868 0.621840 -vt 0.599579 0.621840 -vt 0.599579 0.605186 -vt 0.599579 0.487508 -vt 0.657868 0.487508 -vt 0.657868 0.504162 -vt 0.657868 0.638678 -vt 0.771512 0.210184 -vt 0.774765 0.209351 -vt 0.774765 0.227670 -vt 0.771034 0.173739 -vt 0.774765 0.172309 -vt 0.774765 0.190830 -vt 0.599579 0.453833 -vt 0.657868 0.453833 -vt 0.657868 0.470670 -vt 0.599579 0.638678 -vt 0.657868 0.655515 -vt 0.771407 0.063029 -vt 0.774765 0.061383 -vt 0.774765 0.079904 -vt 0.770818 0.154845 -vt 0.774765 0.153787 -vt 0.599579 0.470670 -vt 0.599579 0.655515 -vt 0.657868 0.672352 -vt 0.774765 0.246191 -vt 0.783092 0.246191 -vt 0.783092 0.264712 -vt 0.771034 0.044293 -vt 0.774765 0.042862 -vt 0.599579 0.436995 -vt 0.657868 0.436995 -vt 0.599579 0.520999 -vt 0.657868 0.520999 -vt 0.657868 0.537836 -vt 0.599579 0.554674 -vt 0.657868 0.554674 -vt 0.657868 0.571511 -vt 0.599579 0.537836 -vt 0.599579 0.571511 -vt 0.657868 0.588349 -vt 0.599579 0.588349 -vt 0.657868 0.605186 -vt 0.599579 0.504162 -vt 0.771407 0.192476 -vt 0.771407 0.244545 -vt 0.771407 0.227708 -vt 0.771407 0.115099 -vt 0.771407 0.098261 -vt 0.774765 0.098224 -vt 0.771512 0.080737 -vt 0.771034 0.263282 -vt 0.771034 0.246444 -vt 0.771034 0.133835 -vt 0.771034 0.116998 -vt 0.774765 0.116745 -vt 0.770819 0.282176 -vt 0.770818 0.265339 -vt 0.774765 0.264712 -vt 0.770818 0.152730 -vt 0.770818 0.135892 -vt 0.774765 0.135266 -vt 0.770818 0.025398 -vt 0.774765 0.024341 -vt 0.749473 0.542849 -vt 0.749473 0.561169 -vt 0.677913 0.542849 -vt 0.783092 0.116745 -vt 0.783092 0.135266 -vt 0.783092 0.227670 -vt 0.783092 0.098224 -vt 0.783092 0.209351 -vt 0.783092 0.190830 -vt 0.783092 0.172309 -vt 0.783092 0.079904 -vt 0.783092 0.061383 -vt 0.783092 0.024341 -vt 0.783092 0.042862 -vt 0.783092 0.283234 -vt 0.783092 0.153787 -vt 0.559912 0.096683 -vt 0.571688 0.096683 -vt 0.571688 0.129991 -vt 0.464989 0.130639 -vt 0.464989 0.126479 -vt 0.498263 0.126479 -vt 0.605467 0.694836 -vt 0.617244 0.694836 -vt 0.623132 0.700724 -vt 0.464989 0.018341 -vt 0.498263 0.018341 -vt 0.498263 0.084887 -vt 0.464989 0.084887 -vt 0.623132 0.734032 -vt 0.617244 0.739920 -vt 0.605467 0.739920 -vt 0.768854 0.700724 -vt 0.768854 0.734032 -vt 0.760527 0.734032 -vt 0.877311 0.787384 -vt 0.877311 0.762403 -vt 0.910619 0.762403 -vt 0.709084 0.129991 -vt 0.760527 0.700724 -vt 0.623132 0.692397 -vt 0.760527 0.742359 -vt 0.623132 0.742359 -vt 0.599579 0.734032 -vt 0.464989 0.010022 -vt 0.498263 0.010022 -vt 0.433806 0.468819 -vt 0.433806 0.464655 -vt 0.475441 0.464655 -vt 0.433806 0.460492 -vt 0.475441 0.460492 -vt 0.433806 0.456328 -vt 0.475441 0.456328 -vt 0.475441 0.481309 -vt 0.433806 0.481309 -vt 0.433806 0.477146 -vt 0.475441 0.472982 -vt 0.433806 0.472982 -vt 0.415362 0.969804 -vt 0.415362 0.965641 -vt 0.456997 0.965641 -vt 0.415362 0.961477 -vt 0.456997 0.961477 -vt 0.415362 0.957314 -vt 0.456997 0.957314 -vt 0.456997 0.982295 -vt 0.415362 0.982295 -vt 0.415362 0.978131 -vt 0.456997 0.973968 -vt 0.415362 0.973968 -vt 0.720657 0.652819 -vt 0.723697 0.629743 -vt 0.743373 0.622945 -vt 0.051239 0.530120 -vt 0.010022 0.571755 -vt 0.883199 0.909077 -vt 0.924416 0.867442 -vt 0.924416 0.909077 -vt 0.918528 0.914965 -vt 0.182692 0.772738 -vt 0.136893 0.768574 -vt 0.136893 0.735266 -vt 0.503210 0.729861 -vt 0.494917 0.729107 -vt 0.495671 0.720814 -vt 0.191019 0.772738 -vt 0.182692 0.731103 -vt 0.503964 0.678425 -vt 0.495671 0.679179 -vt 0.494917 0.670886 -vt 0.449872 0.716651 -vt 0.356309 0.716651 -vt 0.356309 0.683343 -vt 0.449872 0.683343 -vt 0.449118 0.675050 -vt 0.449118 0.724943 -vt 0.043330 0.768574 -vt 0.010022 0.768574 -vt 0.010022 0.735266 -vt 0.760009 0.639223 -vt 0.749197 0.616993 -vt 0.712401 0.651731 -vt 0.715441 0.628655 -vt 0.677913 0.628406 -vt 0.698197 0.616993 -vt 0.446908 0.724432 -vt 0.353345 0.724432 -vt 0.043330 0.735266 -vt 0.446908 0.675561 -vt 0.910619 0.787384 -vt 0.910619 0.841510 -vt 0.877311 0.841510 -vt 0.944952 0.141937 -vt 0.911644 0.141937 -vt 0.911644 0.133610 -vt 0.944952 0.175245 -vt 0.911644 0.175245 -vt 0.944952 0.183572 -vt 0.911644 0.183572 -vt 0.433794 0.018159 -vt 0.423397 0.072410 -vt 0.539867 0.018340 -vt 0.539855 0.072410 -vt 0.103895 0.824648 -vt 0.103895 0.816682 -vt 0.137203 0.816682 -vt 0.103895 0.808715 -vt 0.137203 0.808715 -vt 0.103895 0.800748 -vt 0.137203 0.800748 -vt 0.103895 0.792782 -vt 0.137203 0.792782 -vt 0.103895 0.856514 -vt 0.103895 0.848548 -vt 0.137203 0.848548 -vt 0.103895 0.840581 -vt 0.137203 0.840581 -vt 0.103895 0.832615 -vt 0.137203 0.824648 -vt 0.137203 0.832615 -vt 0.144415 0.803736 -vt 0.010022 0.824648 -vt 0.010022 0.816682 -vt 0.076638 0.816682 -vt 0.010022 0.808715 -vt 0.076638 0.808715 -vt 0.010022 0.800748 -vt 0.076638 0.800748 -vt 0.010022 0.792782 -vt 0.076638 0.792782 -vt 0.010022 0.856514 -vt 0.010022 0.848548 -vt 0.076638 0.848548 -vt 0.010022 0.840581 -vt 0.076638 0.840581 -vt 0.010022 0.832615 -vt 0.076638 0.824648 -vt 0.076638 0.832615 -vt 0.083851 0.843569 -vt 0.083851 0.845560 -vt 0.353345 0.417801 -vt 0.353345 0.415809 -vt 0.411633 0.415809 -vt 0.144415 0.843569 -vt 0.144415 0.795769 -vt 0.144415 0.797761 -vt 0.144415 0.835602 -vt 0.144415 0.837594 -vt 0.144415 0.811702 -vt 0.144415 0.813694 -vt 0.137203 0.856514 -vt 0.144415 0.851535 -vt 0.144415 0.827635 -vt 0.144415 0.829627 -vt 0.144415 0.819669 -vt 0.599579 0.908168 -vt 0.703668 0.908168 -vt 0.703668 0.910159 -vt 0.353345 0.421784 -vt 0.353345 0.419792 -vt 0.411634 0.419792 -vt 0.353345 0.425767 -vt 0.411634 0.425767 -vt 0.411634 0.427759 -vt 0.353345 0.429751 -vt 0.411633 0.429750 -vt 0.411633 0.431742 -vt 0.411634 0.417801 -vt 0.411634 0.421784 -vt 0.411634 0.423776 -vt 0.353345 0.423776 -vt 0.353345 0.427759 -vt 0.083851 0.795769 -vt 0.083851 0.797761 -vt 0.083851 0.835602 -vt 0.083851 0.837594 -vt 0.083851 0.811702 -vt 0.076638 0.856514 -vt 0.083851 0.851535 -vt 0.083851 0.827635 -vt 0.083851 0.829627 -vt 0.083851 0.819669 -vt 0.083851 0.803736 -vt 0.599579 0.896218 -vt 0.703668 0.896218 -vt 0.703668 0.898210 -vt 0.599579 0.900201 -vt 0.703668 0.900202 -vt 0.703668 0.902193 -vt 0.599579 0.902193 -vt 0.703668 0.904185 -vt 0.599579 0.906176 -vt 0.703668 0.906176 -vt 0.599579 0.894226 -vt 0.703668 0.894227 -vt 0.599579 0.898210 -vt 0.599579 0.904185 -vt 0.238807 0.830812 -vt 0.238807 0.859957 -vt 0.230480 0.859957 -vt 0.411634 0.849615 -vt 0.411634 0.878759 -vt 0.403307 0.878759 -vt 0.453269 0.849615 -vt 0.453269 0.878759 -vt 0.361672 0.849615 -vt 0.361672 0.878759 -vt 0.353345 0.878759 -vt 0.403307 0.849615 -vt 0.280442 0.830812 -vt 0.280442 0.859957 -vt 0.188845 0.830812 -vt 0.188845 0.859957 -vt 0.180518 0.859957 -vt 0.230480 0.830812 -vt 0.531602 0.849615 -vt 0.531602 0.878759 -vt 0.523275 0.878759 -vt 0.573237 0.849615 -vt 0.573237 0.878759 -vt 0.481640 0.849615 -vt 0.481640 0.878759 -vt 0.473313 0.878759 -vt 0.523275 0.849615 -vt 0.361718 0.010022 -vt 0.361718 0.030840 -vt 0.195178 0.030840 -vt 0.403353 0.107461 -vt 0.382535 0.107461 -vt 0.382535 0.040845 -vt 0.195178 0.138284 -vt 0.195178 0.117467 -vt 0.361718 0.117467 -vt 0.153543 0.040845 -vt 0.174360 0.040845 -vt 0.174360 0.107461 -vt 0.361718 0.090807 -vt 0.361718 0.057499 -vt 0.726452 0.010022 -vt 0.726452 0.076638 -vt 0.559912 0.076638 -vt 0.195178 0.090807 -vt 0.195178 0.057499 -vt 0.858292 0.270359 -vt 0.858292 0.253705 -vt 0.860790 0.252456 -vt 0.869117 0.252456 -vt 0.869117 0.271608 -vt 0.761183 0.386548 -vt 0.727875 0.386548 -vt 0.727875 0.319932 -vt 0.761183 0.303278 -vt 0.777837 0.303278 -vt 0.777837 0.386548 -vt 0.918247 0.270359 -vt 0.915749 0.271608 -vt 0.915749 0.252456 -vt 0.907421 0.252456 -vt 0.907421 0.271608 -vt 0.711221 0.386548 -vt 0.711221 0.319932 -vt 0.677913 0.386548 -vt 0.871615 0.242880 -vt 0.904923 0.242880 -vt 0.907421 0.244129 -vt 0.904923 0.281184 -vt 0.871615 0.281184 -vt 0.869117 0.279935 -vt 0.907421 0.279935 -vt 0.361403 0.346997 -vt 0.369737 0.324693 -vt 0.369722 0.369306 -vt 0.369733 0.335846 -vt 0.678562 0.953094 -vt 0.361418 0.302384 -vt 0.928374 0.212776 -vt 0.900202 0.960016 -vt 0.906344 0.948961 -vt 0.622479 0.938211 -vt 0.971151 0.551311 -vt 0.980311 0.574821 -vt 0.805628 0.663193 -vt 0.877311 0.949634 -vt 0.922074 0.527428 -vt 0.951107 0.526755 -vt 0.926599 0.653694 -vt 0.938931 0.649751 -vt 0.641552 0.954343 -vt 0.733316 0.774894 -vt 0.699856 0.774894 -vt 0.755622 0.774894 -vt 0.777928 0.774894 -vt 0.711009 0.766567 -vt 0.504645 0.456328 -vt 0.952919 0.951792 -vt 0.973493 0.937522 -vt 0.576516 0.608529 -vt 0.898139 0.421583 -vt 0.947393 0.824420 -vt 0.944460 0.938195 -vt 0.930664 0.777027 -vt 0.984064 0.497680 -vt 0.922074 0.602842 -vt 0.971733 0.501624 -vt 0.988008 0.510012 -vt 0.988590 0.503029 -vt 0.971151 0.508606 -vt 0.982659 0.514537 -vt 0.922074 0.478808 -vt 0.836444 0.113566 -vt 0.855479 0.066165 -vt 0.847152 0.032706 -vt 0.847152 0.088471 -vt 0.855479 0.110778 -vt 0.855479 0.099625 -vt 0.576516 0.628573 -vt 0.370311 0.980204 -vt 0.381366 0.986346 -vt 0.976597 0.841150 -vt 0.197247 0.976414 -vt 0.085262 0.974770 -vt 0.931009 0.111884 -vt 0.150971 0.916470 -vt 0.177373 0.793364 -vt 0.168985 0.809639 -vt 0.181317 0.805695 -vt 0.916385 0.087745 -vt 0.508179 0.788045 -vt 0.508179 0.768129 -vt 0.508179 0.778087 -vt 0.508179 0.827878 -vt 0.512146 0.756527 -vt 0.512146 0.816276 -vt 0.512146 0.796360 -vt 0.433806 0.506453 -vt 0.433806 0.503466 -vt 0.438906 0.501353 -vt 0.441018 0.506453 -vt 0.435918 0.508566 -vt 0.805986 0.717470 -vt 0.442768 0.751897 -vt 0.467749 0.781771 -vt 0.467749 0.791729 -vt 0.442768 0.771813 -vt 0.442768 0.761855 -vt 0.442768 0.821604 -vt 0.509119 0.506343 -vt 0.470980 0.537158 -vt 0.527393 0.502376 -vt 0.477602 0.502376 -vt 0.517434 0.502376 -vt 0.497518 0.502376 -vt 0.487560 0.502376 -vt 0.577901 0.559002 -vt 0.577901 0.561989 -vt 0.575789 0.564102 -vt 0.570689 0.561989 -vt 0.572802 0.556889 -vt 0.729599 0.122950 -vt 0.522762 0.546774 -vt 0.482929 0.546774 -vt 0.236044 0.802801 -vt 0.276475 0.789159 -vt 0.276475 0.749326 -vt 0.280442 0.737725 -vt 0.280442 0.797474 -vt 0.280442 0.777557 -vt 0.280442 0.757641 -vt 0.577901 0.504488 -vt 0.577901 0.507476 -vt 0.575789 0.509588 -vt 0.570689 0.507476 -vt 0.572802 0.502376 -vt 0.724184 0.920494 -vt 0.236044 0.772927 -vt 0.579535 0.785605 -vt 0.579535 0.817471 -vt 0.579535 0.753739 -vt 0.579535 0.801538 -vt 0.075169 0.921039 -vt 0.106787 0.937060 -vt 0.086198 0.954724 -vt 0.068533 0.934135 -vt 0.089122 0.916471 -vt 0.073101 0.948088 -vt 0.848677 0.675571 -vt 0.848677 0.611838 -vt 0.848677 0.627771 -vt 0.848677 0.643704 -vt 0.881409 0.392503 -vt 0.214774 0.880001 -vt 0.294439 0.880001 -vt 0.230707 0.880001 -vt 0.262573 0.880001 -vt 0.278506 0.880001 -vt 0.294439 0.899868 -vt 0.180518 0.894098 -vt 0.230707 0.899868 -vt 0.262573 0.899868 -vt 0.278506 0.899868 -vt 0.214774 0.899868 -vt 0.902030 0.540012 -vt 0.951789 0.309910 -vt 0.949731 0.336960 -vt 0.924739 0.307851 -vt 0.956362 0.323861 -vt 0.935779 0.341533 -vt 0.838248 0.226819 -vt 0.838248 0.258685 -vt 0.811463 0.261075 -vt 0.838248 0.194952 -vt 0.838248 0.242752 -vt 0.924739 0.366150 -vt 0.935779 0.399832 -vt 0.918108 0.379249 -vt 0.922680 0.393200 -vt 0.322910 0.808378 -vt 0.322910 0.744646 -vt 0.322910 0.760579 -vt 0.322910 0.824311 -vt 0.012412 0.876558 -vt 0.780717 0.928179 -vt 0.044278 0.876558 -vt 0.123943 0.876558 -vt 0.060211 0.876558 -vt 0.108010 0.876558 -vt 0.123943 0.896425 -vt 0.010022 0.890655 -vt 0.060211 0.896425 -vt 0.108010 0.896425 -vt 0.044278 0.896425 -vt 0.902030 0.649281 -vt 0.216975 0.932166 -vt 0.215861 0.946805 -vt 0.190082 0.955255 -vt 0.207411 0.921026 -vt 0.180518 0.944116 -vt 0.844777 0.793074 -vt 0.853103 0.826534 -vt 0.853104 0.848840 -vt 0.853103 0.781921 -vt 0.010022 0.974980 -vt 0.755710 0.971113 -vt 0.766765 0.977256 -vt 0.821787 0.960776 -vt 0.954957 0.421583 -vt 0.974895 0.041071 -vt 0.934913 0.430742 -vt 0.766092 0.948223 -vt 0.973493 0.888903 -vt 0.972471 0.637420 -vt 0.943930 0.717462 -vt 0.960140 0.641363 -vt 0.964083 0.653694 -vt 0.976997 0.642769 -vt 0.805655 0.979849 -vt 0.418756 0.768129 -vt 0.422723 0.756527 -vt 0.422723 0.816276 -vt 0.422723 0.796360 -vt 0.422723 0.776444 -vt 0.422723 0.826234 -vt 0.575789 0.529633 -vt 0.577901 0.531745 -vt 0.577901 0.534733 -vt 0.572802 0.536845 -vt 0.570689 0.534733 -vt 0.971622 0.477054 -vt 0.353345 0.751897 -vt 0.378326 0.781771 -vt 0.378326 0.791729 -vt 0.353345 0.811646 -vt 0.353345 0.771813 -vt 0.826253 0.337534 -vt 0.842907 0.417199 -vt 0.842907 0.385333 -vt 0.826253 0.305668 -vt 0.853038 0.303278 -vt 0.826253 0.369400 -vt 0.826253 0.321601 -vt 0.294635 0.929476 -vt 0.320414 0.921026 -vt 0.293521 0.944116 -vt 0.826253 0.500976 -vt 0.832023 0.450787 -vt 0.601969 0.854315 -vt 0.879686 0.024341 -vt 0.617902 0.854315 -vt 0.649768 0.854315 -vt 0.681634 0.854315 -vt 0.617902 0.874182 -vt 0.649768 0.874182 -vt 0.601969 0.874182 -vt 0.858292 0.222835 -vt 0.273476 0.932166 -vt 0.272362 0.946805 -vt 0.246583 0.955255 -vt 0.238133 0.929476 -vt 0.263912 0.921026 -vt 0.261223 0.956369 -vt 0.195907 0.711058 -vt 0.330606 0.711058 -vt 0.276727 0.711058 -vt 0.657868 0.201432 -vt 0.142027 0.711058 -vt 0.088148 0.711058 -vt 0.657868 0.158328 -vt 0.657868 0.416951 -vt 0.303667 0.711058 -vt 0.115088 0.711058 -vt 0.061208 0.711058 -vt 0.142027 0.670132 -vt 0.061208 0.670132 -vt 0.303667 0.670133 -vt 0.088148 0.670132 -vt 0.330606 0.670133 -vt 0.133498 0.228235 -vt 0.547312 0.650088 -vt 0.133498 0.201295 -vt 0.133498 0.147415 -vt 0.133498 0.282115 -vt 0.133498 0.039656 -vt 0.133498 0.255175 -vt 0.133498 0.012716 -vt 0.039656 0.353345 -vt 0.093536 0.353345 -vt 0.012716 0.353345 -vt 0.066596 0.353345 -vt 0.120476 0.353345 -vt 0.174355 0.353345 -vt 0.012716 0.431742 -vt 0.093536 0.431742 -vt 0.066596 0.431742 -vt 0.039656 0.431742 -vt 0.174355 0.431742 -vt 0.120476 0.431742 -vt 0.579535 0.268782 -vt 0.010022 0.591799 -vt 0.579535 0.161022 -vt 0.579535 0.241842 -vt 0.579535 0.214902 -vt 0.579535 0.187962 -vt 0.579535 0.322662 -vt 0.728905 0.406592 -vt 0.747570 0.417368 -vt 0.758345 0.436033 -vt 0.758345 0.457585 -vt 0.747570 0.476249 -vt 0.707353 0.487025 -vt 0.677913 0.457585 -vt 0.677913 0.436033 -vt 0.688689 0.417368 -vt 0.526712 0.268782 -vt 0.526712 0.161022 -vt 0.526712 0.241842 -vt 0.526712 0.457361 -vt 0.526712 0.430421 -vt 0.010022 0.313096 -vt 0.010022 0.070637 -vt 0.010022 0.205336 -vt 0.010022 0.151456 -vt 0.010022 0.259216 -vt 0.153543 0.319968 -vt 0.506667 0.158329 -vt 0.846920 0.885192 -vt 0.846920 0.904312 -vt 0.833400 0.917831 -vt 0.800761 0.904312 -vt 0.814281 0.871673 -vt 0.613312 0.769720 -vt 0.657714 0.826954 -vt 0.664130 0.776136 -vt 0.640050 0.762403 -vt 0.599579 0.793800 -vt 0.630976 0.834271 -vt 0.671447 0.802874 -vt 0.541365 0.957314 -vt 0.549692 0.957314 -vt 0.977487 0.176137 -vt 0.985814 0.176138 -vt 0.977487 0.133610 -vt 0.985814 0.133610 -vt 0.489531 0.957314 -vt 0.497858 0.957314 -vt 0.735161 0.283234 -vt 0.771512 0.226838 -vt 0.771034 0.190577 -vt 0.771407 0.079867 -vt 0.770818 0.171682 -vt 0.599579 0.672352 -vt 0.771034 0.061130 -vt 0.771407 0.209313 -vt 0.771512 0.097391 -vt 0.774765 0.283234 -vt 0.770818 0.042236 -vt 0.677913 0.561169 -vt 0.682706 0.524959 -vt 0.695803 0.511863 -vt 0.713693 0.507069 -vt 0.731583 0.511863 -vt 0.744679 0.524959 -vt 0.744679 0.579059 -vt 0.731583 0.592155 -vt 0.713693 0.596949 -vt 0.695803 0.592155 -vt 0.682706 0.579059 -vt 0.559912 0.129991 -vt 0.498263 0.130639 -vt 0.599579 0.700724 -vt 0.709084 0.096683 -vt 0.760527 0.692397 -vt 0.475441 0.468819 -vt 0.475441 0.477146 -vt 0.456997 0.969804 -vt 0.456997 0.978131 -vt 0.010022 0.530120 -vt 0.877311 0.914965 -vt 0.503964 0.721568 -vt 0.191019 0.731103 -vt 0.503210 0.670132 -vt 0.765833 0.633271 -vt 0.353345 0.675561 -vt 0.944952 0.133610 -vt 0.423397 0.084887 -vt 0.423397 0.080729 -vt 0.423397 0.018341 -vt 0.444193 0.018159 -vt 0.539855 0.084888 -vt 0.539855 0.080728 -vt 0.539849 0.017615 -vt 0.144415 0.805728 -vt 0.144415 0.845560 -vt 0.144415 0.853527 -vt 0.144415 0.821661 -vt 0.599579 0.910160 -vt 0.353345 0.431742 -vt 0.083851 0.813694 -vt 0.083851 0.853527 -vt 0.083851 0.821661 -vt 0.083851 0.805728 -vt 0.353345 0.849615 -vt 0.180518 0.830812 -vt 0.473313 0.849615 -vt 0.195178 0.010022 -vt 0.403353 0.040845 -vt 0.361718 0.138284 -vt 0.153543 0.107461 -vt 0.559912 0.010022 -vt 0.860790 0.271608 -vt 0.918247 0.253705 -vt 0.677913 0.303278 -vt 0.869117 0.244129 -vn 0.219500 0.313500 -0.923900 -vn 0.529900 0.756800 -0.382700 -vn 0.529900 0.756800 0.382700 -vn 0.219500 0.313500 0.923900 -vn -0.219500 -0.313500 0.923900 -vn -0.529900 -0.756800 0.382700 -vn -0.219500 -0.313500 -0.923900 -vn -0.529900 -0.756800 -0.382700 -vn 0.102900 -0.949100 -0.297600 -vn 0.927100 0.228000 -0.297600 -vn 0.344300 -0.604400 0.718500 -vn 0.344300 -0.604400 -0.718500 -vn 0.685700 -0.116800 -0.718500 -vn 0.927100 0.228000 0.297600 -vn 0.102900 -0.949100 0.297600 -vn 0.685700 -0.116800 0.718500 -vn -0.573600 -0.819200 0.000000 -vn -0.708700 0.702000 0.069800 -vn -0.765400 0.621100 -0.168600 -vn -0.902100 0.425900 -0.069800 -vn -0.845400 0.506800 0.168600 -vn 0.405600 0.579200 -0.707100 -vn 0.000000 -0.000000 1.000000 -vn 0.708700 -0.702000 -0.069800 -vn 0.765400 -0.621100 0.168600 -vn 0.573600 0.819200 0.000000 -vn -0.405600 -0.579200 -0.707100 -vn 0.902100 -0.425900 0.069800 -vn 0.845400 -0.506800 -0.168600 -vn 0.819200 -0.573600 0.000000 -vn 0.405600 0.579200 0.707100 -vn 0.000000 0.000000 -1.000000 -vn -0.405600 -0.579200 0.707100 -vn -0.270600 0.270600 -0.923900 -vn -0.653300 0.653300 -0.382700 -vn -0.653300 0.653300 0.382700 -vn -0.270600 0.270600 0.923900 -vn 0.270600 -0.270600 0.923900 -vn 0.653300 -0.653300 0.382700 -vn 0.270600 -0.270600 -0.923900 -vn 0.653300 -0.653300 -0.382700 -vn 0.952600 -0.063500 -0.297600 -vn -0.063500 0.952600 -0.297600 -vn 0.655000 0.234100 0.718500 -vn 0.655000 0.234100 -0.718500 -vn 0.234100 0.655000 -0.718500 -vn -0.063500 0.952600 0.297600 -vn 0.952600 -0.063500 0.297600 -vn 0.234100 0.655000 0.718500 -vn 0.707100 -0.707100 0.000000 -vn -0.814400 -0.576100 0.069800 -vn -0.744600 -0.645900 -0.168600 -vn -0.576100 -0.814400 -0.069800 -vn -0.645900 -0.744600 0.168600 -vn -0.500000 0.500000 -0.707100 -vn 0.814400 0.576100 -0.069800 -vn 0.744600 0.645900 0.168600 -vn -0.707100 0.707100 0.000000 -vn 0.500000 -0.500000 -0.707100 -vn 0.576100 0.814400 0.069800 -vn 0.645900 0.744600 -0.168500 -vn 0.707100 0.707100 0.000000 -vn -0.500000 0.500000 0.707100 -vn 0.500000 -0.500000 0.707100 -vn -0.331400 -0.191300 -0.923900 -vn -0.800100 -0.461900 -0.382700 -vn -0.800100 -0.461900 0.382700 -vn -0.331400 -0.191300 0.923900 -vn 0.331400 0.191300 0.923900 -vn 0.800100 0.461900 0.382700 -vn 0.331400 0.191300 -0.923900 -vn 0.800100 0.461900 -0.382700 -vn 0.307900 0.903700 -0.297600 -vn -0.936600 0.185200 -0.297600 -vn -0.056600 0.693200 0.718500 -vn -0.056600 0.693200 -0.718500 -vn -0.572100 0.395600 -0.718500 -vn -0.936600 0.185200 0.297600 -vn 0.307900 0.903700 0.297600 -vn -0.572100 0.395600 0.718500 -vn 0.866000 0.500000 0.000000 -vn 0.345600 -0.935800 0.069800 -vn 0.431100 -0.886400 -0.168600 -vn 0.637600 -0.767200 -0.069800 -vn 0.552100 -0.816600 0.168500 -vn -0.612400 -0.353600 -0.707100 -vn -0.345600 0.935800 -0.069800 -vn -0.431100 0.886400 0.168600 -vn -0.866000 -0.500000 0.000000 -vn 0.612400 0.353600 -0.707100 -vn -0.637600 0.767200 0.069800 -vn -0.552100 0.816600 -0.168600 -vn -0.500000 0.866000 0.000000 -vn -0.612400 -0.353600 0.707100 -vn 0.612400 0.353600 0.707100 -vn 0.382700 -0.800100 0.461900 -vn 0.923900 -0.331400 0.191300 -vn 0.923900 0.331400 -0.191300 -vn 0.382700 0.800100 -0.461900 -vn -0.382700 0.800100 -0.461900 -vn -0.923900 0.331400 -0.191300 -vn 0.659300 -0.586800 -0.470100 -vn -0.382700 -0.800100 0.461900 -vn -0.923900 -0.331400 0.191300 -vn -0.800100 0.537000 0.267400 -vn 0.000000 -0.500000 -0.866000 -vn -0.273100 0.220700 -0.936300 -vn -0.273100 -0.921200 -0.277000 -vn 0.273100 -0.921200 -0.277000 -vn 0.659300 -0.113800 -0.743200 -vn -0.659300 -0.113800 -0.743200 -vn 0.273100 0.220700 -0.936300 -vn -0.659300 -0.586800 -0.470100 -vn -0.382600 -0.810700 0.443100 -vn -0.923700 0.320500 -0.210000 -vn 0.382600 0.789100 -0.480600 -vn 0.923700 -0.342200 0.172500 -vn -0.923700 -0.342200 0.172600 -vn -0.382600 0.789100 -0.480600 -vn 0.923700 0.320500 -0.210000 -vn 0.382600 -0.810700 0.443100 -vn 0.331400 0.942900 0.033000 -vn -0.800100 -0.037000 0.598800 -vn 0.800100 -0.037000 0.598800 -vn -0.331400 0.942900 0.033000 -vn -0.331400 -0.442900 0.833100 -vn 0.331400 -0.442900 0.833100 -vn 0.800100 0.537000 0.267400 -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.659300 0.700500 -0.273100 -vn -0.382700 -0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -vn -0.800100 -0.500000 0.331400 -vn 0.000000 1.000000 -0.000000 -vn -0.273100 0.700500 0.659300 -vn -0.273100 0.700500 -0.659300 -vn 0.273100 0.700500 -0.659300 -vn 0.659300 0.700500 0.273100 -vn -0.659300 0.700500 0.273100 -vn 0.273100 0.700500 0.659300 -vn -0.659300 0.700500 -0.273100 -vn -0.382600 0.021600 -0.923700 -vn -0.923700 0.021600 0.382600 -vn 0.382600 0.021600 0.923700 -vn 0.923700 0.021600 -0.382600 -vn -0.923700 0.021600 -0.382600 -vn -0.382600 0.021600 0.923700 -vn 0.923700 0.021600 0.382600 -vn 0.382600 0.021600 -0.923700 -vn 0.331400 -0.500000 0.800100 -vn -0.800100 -0.500000 -0.331400 -vn 0.800100 -0.500000 -0.331400 -vn -0.331400 -0.500000 0.800100 -vn -0.331400 -0.500000 -0.800100 -vn 0.331400 -0.500000 -0.800100 -vn 0.800100 -0.500000 0.331400 -vn 0.000000 0.382700 -0.923900 -vn 0.569500 -0.759400 0.314600 -vn 0.000000 0.382700 0.923900 -vn 0.569500 0.759400 -0.314600 -vn -0.000000 0.923900 -0.382700 -vn 0.000000 -0.923900 -0.382700 -vn 0.569500 0.314600 -0.759400 -vn -0.000000 0.923900 0.382700 -vn 0.569500 -0.314600 0.759400 -vn 0.569500 0.314500 0.759400 -vn 0.000000 -0.382700 0.923900 -vn 0.569500 0.759400 0.314500 -vn -0.000000 -0.923900 0.382700 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 -0.382700 -0.923900 -vn 0.569500 -0.314600 -0.759400 -vn 0.569500 -0.759400 -0.314600 -vn -0.654700 -0.698400 -0.289300 -vn -0.654700 -0.289300 0.698300 -vn -0.654700 0.289300 0.698300 -vn -0.654700 0.698300 -0.289300 -vn -0.654700 -0.289300 -0.698300 -vn -0.654700 -0.698300 0.289300 -vn -0.654700 0.698300 0.289300 -vn -0.654700 0.289300 -0.698300 -vn 1.000000 -0.000000 -0.000000 -vn 0.654700 0.698300 -0.289300 -vn 0.654700 0.289300 0.698300 -vn 0.654700 -0.289300 0.698300 -vn 0.654700 -0.698300 -0.289300 -vn 0.654700 0.289300 -0.698300 -vn 0.654700 0.698400 0.289300 -vn 0.654700 -0.698300 0.289300 -vn 0.654700 -0.289300 -0.698300 -vn 0.569500 0.314600 0.759400 -vn -0.654700 -0.698300 -0.289300 -vn 0.654700 0.698300 0.289300 -vn -0.628700 0.718500 -0.297600 -vn -0.628700 -0.718500 -0.297600 -vn -0.628700 0.297600 0.718500 -vn -0.628700 0.297600 -0.718500 -vn -0.628700 -0.297600 -0.718500 -vn -0.628700 -0.718500 0.297600 -vn -0.628700 0.718500 0.297600 -vn -0.628700 -0.297600 0.718500 -vn 0.983200 -0.168600 0.069800 -vn 0.983200 -0.069800 -0.168600 -vn 0.983200 0.168600 -0.069800 -vn 0.983200 0.069800 0.168600 -vn 0.000000 -0.707100 -0.707100 -vn -0.983200 0.168600 -0.069800 -vn -0.983200 0.069800 0.168600 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 0.707100 -0.707100 -vn -0.983200 -0.168600 0.069800 -vn -0.983200 -0.069800 -0.168600 -vn 0.000000 -0.707100 0.707100 -vn 0.000000 0.707100 0.707100 -vn 0.382700 0.390400 -0.837300 -vn 0.923900 0.161700 -0.346800 -vn 0.923900 -0.161700 0.346800 -vn 0.382700 -0.390400 0.837300 -vn -0.382700 -0.390400 0.837300 -vn -0.923900 -0.161700 0.346800 -vn 0.659300 0.750300 0.048500 -vn -0.382700 0.390400 -0.837300 -vn -0.923900 0.161700 -0.346800 -vn -0.800100 -0.593300 0.089000 -vn -0.000000 0.906300 0.422600 -vn -0.273100 0.356300 0.893600 -vn -0.273100 0.913500 -0.301500 -vn 0.273100 0.913500 -0.301500 -vn 0.659300 0.519500 0.543600 -vn -0.659300 0.519500 0.543600 -vn 0.273100 0.356200 0.893600 -vn -0.659300 0.750300 0.048500 -vn -0.382600 0.410000 -0.828000 -vn -0.923700 -0.142100 0.355900 -vn 0.382600 -0.370700 0.846300 -vn 0.923700 0.181300 -0.337600 -vn -0.923700 0.181300 -0.337600 -vn -0.382600 -0.370700 0.846300 -vn 0.923700 -0.142100 0.355900 -vn 0.382600 0.410000 -0.828000 -vn 0.331400 -0.791300 0.513800 -vn -0.800100 -0.313100 -0.511700 -vn 0.800100 -0.313100 -0.511700 -vn -0.331400 -0.791300 0.513800 -vn -0.331400 -0.115100 -0.936400 -vn 0.331400 -0.115100 -0.936400 -vn 0.800100 -0.593300 0.089000 -vn 0.258800 0.965900 -0.000000 -vn 0.965900 0.258800 0.000000 -vn -0.965900 0.258800 0.000000 -vn -0.707100 -0.707100 0.000000 -vn 0.965900 -0.258800 0.000000 -vn -0.258800 0.965900 0.000000 -vn 0.258800 -0.965900 0.000000 -vn -0.258800 -0.965900 0.000000 -vn -0.965900 -0.258800 0.000000 -vn -0.533500 0.143000 -0.833600 -vn 0.605300 -0.605300 0.516800 -vn -0.221600 0.826900 0.516800 -vn 0.605300 0.605300 0.516800 -vn -0.826900 -0.221600 0.516800 -vn 0.221600 -0.826900 0.516800 -vn 0.826900 0.221600 0.516800 -vn -0.826900 0.221600 0.516800 -vn -0.221600 -0.826900 0.516800 -vn 0.826900 -0.221600 0.516800 -vn -0.605300 0.605300 0.516800 -vn 0.221600 0.826900 0.516800 -vn -0.605300 -0.605300 0.516800 -vn 0.533500 0.143000 -0.833600 -vn 0.143000 -0.533500 -0.833600 -vn -0.533500 -0.143000 -0.833600 -vn 0.390600 0.390600 -0.833600 -vn -0.143000 0.533500 -0.833600 -vn 0.390600 -0.390600 -0.833600 -vn -0.390600 -0.390600 -0.833600 -vn 0.143000 0.533500 -0.833600 -vn -0.390600 0.390600 -0.833600 -vn 0.533500 -0.143000 -0.833600 -vn -0.143000 -0.533500 -0.833600 -vn 0.873000 0.361600 0.327400 -vn 0.361600 -0.873000 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.873000 -0.361600 0.327400 -vn -0.361600 -0.873000 0.327400 -vn -0.873000 0.361600 0.327400 -vn 0.500000 0.866000 0.000000 -vn 0.500000 -0.866000 0.000000 -vn -0.500000 -0.866000 0.000000 -vn -0.729500 0.683900 0.000000 -vn -0.729500 -0.683900 0.000000 -vn 0.729500 -0.683900 0.000000 -vn 0.729500 0.683900 0.000000 -vn 0.000000 0.934500 0.356000 -vn 0.995900 -0.000000 0.090500 -vn -0.995900 0.000000 0.090500 -vn 0.894400 0.447200 0.000000 -vn -0.894400 0.447200 0.000000 -vn 0.000000 -0.934500 -0.356000 -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.382700 0.923900 0.000000 -vn -0.923900 0.382700 0.000000 -vn 0.780900 -0.624700 0.000000 -vn -0.780900 -0.624700 0.000000 -vn 0.000000 0.939700 -0.342000 -vn 0.000000 0.342000 0.939700 -vn 0.000000 -0.939700 0.342000 -vn 0.000000 -0.342000 -0.939700 -vn 0.645900 0.744600 -0.168600 -vn 0.431100 -0.886400 -0.168500 -vn 0.552100 -0.816600 0.168600 -vn -0.923700 -0.342200 0.172500 -vn 0.331400 -0.500100 0.800100 -vn 0.569500 0.759400 -0.314500 -vn 0.569500 0.314500 -0.759400 -vn 0.983200 -0.168500 0.069800 -vn -0.273100 0.356200 0.893600 -vn 0.273100 0.356300 0.893600 -vn 0.569500 -0.759400 0.314500 -vn 0.654700 -0.698400 -0.289300 -s off -f 1/1/1 2/2/1 4/3/1 -f 4/3/2 6/4/2 5/5/2 -f 6/6/3 8/7/3 7/8/3 -f 8/7/4 10/9/4 9/10/4 -f 10/9/5 12/11/5 11/12/5 -f 11/12/6 12/11/6 14/13/6 -f 16/14/7 2/2/7 1/1/7 -f 14/13/8 16/14/8 15/15/8 -f 15/15/9 24/16/9 23/17/9 -f 23/17/8 24/16/8 32/18/8 -f 5/5/10 19/19/10 18/20/10 -f 9/10/11 11/12/11 22/21/11 -f 1/1/12 17/22/12 24/23/12 -f 1/1/13 3/24/13 18/25/13 -f 5/26/14 7/8/14 20/27/14 -f 11/12/15 13/28/15 23/29/15 -f 9/10/16 21/30/16 20/31/16 -f 33/32/17 41/33/17 49/34/17 -f 22/21/5 30/35/5 29/36/5 -f 19/37/3 20/27/3 28/38/3 -f 18/25/1 26/39/1 25/40/1 -f 17/22/7 25/41/7 32/42/7 -f 23/29/6 31/43/6 30/44/6 -f 21/30/4 29/45/4 28/46/4 -f 18/20/2 19/19/2 27/47/2 -f 33/48/7 41/49/7 48/50/7 -f 32/51/18 40/52/18 39/53/18 -f 30/54/19 38/55/19 37/56/19 -f 28/57/20 36/58/20 35/59/20 -f 26/60/21 34/61/21 33/32/21 -f 56/62/22 48/63/22 40/64/22 -f 25/41/7 49/65/7 56/66/7 -f 39/53/23 47/67/23 55/68/23 -f 44/69/24 52/70/24 51/71/24 -f 39/72/6 47/73/6 46/74/6 -f 37/75/4 45/76/4 44/77/4 -f 34/78/2 35/79/2 43/80/2 -f 40/81/8 48/63/8 47/67/8 -f 38/82/5 46/83/5 45/84/5 -f 35/85/3 36/86/3 44/69/3 -f 33/87/1 34/88/1 42/89/1 -f 55/90/9 56/91/9 64/92/9 -f 42/89/25 50/93/25 49/34/25 -f 45/84/26 53/94/26 29/95/26 -f 53/96/4 52/97/4 28/46/4 -f 54/98/27 46/83/27 38/99/27 -f 31/43/6 55/100/6 54/101/6 -f 47/67/28 48/63/28 56/62/28 -f 45/84/29 46/83/29 54/98/29 -f 60/102/30 63/103/30 64/92/30 -f 53/104/11 54/105/11 62/106/11 -f 52/107/14 60/102/14 59/108/14 -f 50/109/13 58/110/13 57/111/13 -f 56/112/12 49/113/12 57/111/12 -f 54/114/15 55/115/15 63/103/15 -f 52/116/16 53/117/16 61/118/16 -f 50/119/10 51/120/10 59/108/10 -f 51/121/2 50/122/2 26/123/2 -f 34/124/31 26/125/31 50/93/31 -f 51/71/32 27/126/32 35/59/32 -f 28/127/33 52/70/33 44/69/33 -f 65/128/34 66/129/34 68/130/34 -f 67/131/35 68/130/35 70/132/35 -f 70/133/36 72/134/36 71/135/36 -f 72/134/37 74/136/37 73/137/37 -f 74/136/38 76/138/38 75/139/38 -f 75/139/39 76/138/39 78/140/39 -f 79/141/40 80/142/40 66/129/40 -f 78/140/41 80/142/41 79/141/41 -f 77/143/42 79/141/42 88/144/42 -f 88/144/41 96/145/41 95/146/41 -f 67/131/43 69/147/43 83/148/43 -f 73/137/44 75/139/44 86/149/44 -f 65/128/45 81/150/45 88/151/45 -f 65/128/46 67/131/46 82/152/46 -f 69/153/47 71/135/47 84/154/47 -f 77/143/48 87/155/48 86/156/48 -f 73/137/49 85/157/49 84/158/49 -f 105/159/50 113/160/50 89/161/50 -f 86/149/38 94/162/38 93/163/38 -f 84/154/36 92/164/36 91/165/36 -f 81/166/34 82/152/34 90/167/34 -f 81/150/40 89/168/40 96/169/40 -f 87/155/39 95/170/39 94/171/39 -f 85/157/37 93/172/37 92/173/37 -f 83/148/35 91/174/35 90/175/35 -f 97/176/40 105/177/40 112/178/40 -f 95/179/51 96/180/51 104/181/51 -f 94/182/52 102/183/52 101/184/52 -f 92/185/53 100/186/53 99/187/53 -f 90/188/54 98/189/54 97/190/54 -f 120/191/55 112/192/55 104/193/55 -f 113/194/40 120/195/40 96/169/40 -f 111/196/23 119/197/23 95/179/23 -f 107/198/56 108/199/56 116/200/56 -f 102/201/39 103/202/39 111/203/39 -f 100/204/37 101/205/37 109/206/37 -f 98/207/35 99/208/35 107/209/35 -f 104/210/41 112/192/41 111/196/41 -f 101/211/38 102/212/38 110/213/38 -f 99/214/36 100/215/36 108/199/36 -f 98/216/34 106/217/34 105/159/34 -f 120/218/42 128/219/42 127/220/42 -f 105/159/57 106/217/57 114/221/57 -f 109/222/58 117/223/58 93/224/58 -f 93/172/37 117/225/37 116/226/37 -f 118/227/59 110/213/59 102/228/59 -f 95/170/39 119/229/39 118/230/39 -f 111/196/60 112/192/60 120/191/60 -f 110/213/61 118/227/61 117/223/61 -f 124/231/62 126/232/62 122/233/62 -f 118/234/44 126/232/44 125/235/44 -f 115/236/47 116/237/47 124/231/47 -f 114/238/46 122/233/46 121/239/46 -f 113/240/45 121/239/45 128/219/45 -f 118/241/48 119/242/48 127/220/48 -f 117/243/49 125/235/49 124/231/49 -f 115/244/43 123/245/43 122/233/43 -f 91/174/35 115/246/35 114/247/35 -f 106/217/63 98/248/63 90/249/63 -f 115/250/32 91/251/32 99/187/32 -f 116/200/64 108/199/64 100/252/64 -f 129/253/65 130/254/65 132/255/65 -f 131/256/66 132/255/66 134/257/66 -f 134/258/67 136/259/67 135/260/67 -f 136/259/68 138/261/68 137/262/68 -f 137/262/69 138/261/69 140/263/69 -f 139/264/70 140/263/70 142/265/70 -f 144/266/71 130/254/71 129/253/71 -f 142/265/72 144/266/72 143/267/72 -f 143/267/73 152/268/73 151/269/73 -f 151/269/72 152/268/72 160/270/72 -f 131/256/74 133/271/74 147/272/74 -f 137/262/75 139/264/75 150/273/75 -f 129/253/76 145/274/76 152/275/76 -f 131/256/77 146/276/77 145/277/77 -f 135/260/78 148/278/78 147/279/78 -f 139/264/79 141/280/79 151/281/79 -f 135/260/80 137/262/80 149/282/80 -f 169/283/81 177/284/81 153/285/81 -f 150/273/69 158/286/69 157/287/69 -f 147/279/67 148/278/67 156/288/67 -f 146/276/65 154/289/65 153/290/65 -f 145/274/71 153/291/71 160/292/71 -f 150/293/70 151/281/70 159/294/70 -f 148/295/68 149/282/68 157/296/68 -f 147/272/66 155/297/66 154/298/66 -f 161/299/71 169/300/71 176/301/71 -f 160/302/82 168/303/82 167/304/82 -f 158/305/83 166/306/83 165/307/83 -f 156/308/84 164/309/84 163/310/84 -f 154/311/85 162/312/85 161/313/85 -f 184/314/86 176/315/86 168/316/86 -f 153/291/71 177/317/71 184/318/71 -f 167/304/23 175/319/23 183/320/23 -f 172/321/87 180/322/87 179/323/87 -f 166/324/70 167/325/70 175/326/70 -f 164/327/68 165/328/68 173/329/68 -f 162/330/66 163/331/66 171/332/66 -f 167/333/72 168/334/72 176/315/72 -f 165/335/69 166/336/69 174/337/69 -f 164/338/67 172/321/67 171/339/67 -f 161/340/65 162/341/65 170/342/65 -f 183/343/73 184/344/73 192/345/73 -f 170/342/88 178/346/88 177/284/88 -f 173/347/89 181/348/89 157/349/89 -f 157/296/68 181/350/68 180/351/68 -f 158/352/90 182/353/90 174/337/90 -f 183/354/70 182/355/70 158/356/70 -f 176/315/91 184/314/91 183/320/91 -f 173/347/92 174/337/92 182/353/92 -f 188/357/93 190/358/93 186/359/93 -f 181/360/75 182/361/75 190/358/75 -f 179/362/78 180/363/78 188/357/78 -f 177/364/77 178/365/77 186/359/77 -f 177/366/76 185/367/76 192/345/76 -f 182/368/79 183/369/79 191/370/79 -f 181/371/80 189/372/80 188/357/80 -f 179/373/74 187/374/74 186/359/74 -f 155/297/66 179/375/66 178/376/66 -f 170/342/94 162/377/94 154/378/94 -f 155/379/32 163/310/32 171/339/32 -f 156/380/95 180/322/95 172/321/95 -f 193/381/96 194/382/96 196/383/96 -f 195/384/97 196/383/97 198/385/97 -f 198/385/98 200/386/98 199/387/98 -f 199/387/99 200/386/99 202/388/99 -f 202/388/100 204/389/100 203/390/100 -f 203/390/101 204/389/101 206/391/101 -f 198/385/102 196/383/102 209/392/102 -f 208/393/103 194/382/103 193/381/103 -f 205/394/104 206/395/104 208/393/104 -f 203/390/105 205/396/105 239/397/105 -f 212/398/106 220/399/106 221/400/106 -f 202/388/107 213/401/107 214/402/107 -f 194/382/108 208/393/108 216/403/108 -f 196/383/109 194/382/109 210/404/109 -f 200/386/110 198/385/110 211/405/110 -f 206/391/111 204/389/111 214/406/111 -f 200/386/112 212/398/112 213/407/112 -f 206/395/113 215/408/113 216/409/113 -f 224/410/114 232/411/114 226/412/114 -f 209/392/106 217/413/106 219/414/106 -f 216/409/106 215/408/106 223/415/106 -f 214/402/106 213/401/106 221/416/106 -f 212/417/106 211/405/106 219/418/106 -f 210/404/106 218/419/106 217/420/106 -f 216/403/106 224/421/106 218/422/106 -f 214/406/106 222/423/106 223/424/106 -f 231/425/106 229/426/106 226/427/106 -f 223/428/115 222/429/115 230/430/115 -f 220/431/116 228/432/116 229/433/116 -f 219/434/117 217/435/117 225/436/117 -f 224/410/118 223/437/118 231/438/118 -f 221/439/119 229/433/119 230/430/119 -f 219/434/120 227/440/120 228/432/120 -f 218/441/121 226/412/121 225/436/121 -f 239/442/104 240/443/104 248/444/104 -f 201/445/122 237/446/122 236/447/122 -f 207/448/123 240/443/123 239/442/123 -f 195/384/124 197/449/124 235/450/124 -f 203/390/125 238/451/125 237/452/125 -f 207/448/126 193/381/126 233/453/126 -f 195/384/127 234/454/127 233/455/127 -f 197/449/128 199/387/128 236/456/128 -f 238/451/100 246/457/100 245/458/100 -f 236/456/98 244/459/98 243/460/98 -f 233/455/96 234/454/96 242/461/96 -f 240/462/103 233/453/103 241/463/103 -f 238/464/101 239/397/101 247/465/101 -f 237/446/99 245/466/99 244/467/99 -f 235/450/97 243/468/97 242/469/97 -f 250/470/129 252/471/129 251/472/129 -f 252/471/130 254/473/130 253/474/130 -f 254/473/131 256/475/131 255/476/131 -f 256/475/132 258/477/132 257/478/132 -f 258/477/133 260/479/133 259/480/133 -f 260/479/134 262/481/134 261/482/134 -f 254/473/135 252/471/135 265/483/135 -f 263/484/136 264/485/136 250/470/136 -f 262/486/137 264/485/137 263/484/137 -f 261/482/138 295/487/138 294/488/138 -f 269/489/139 268/490/139 276/491/139 -f 258/477/140 269/492/140 270/493/140 -f 250/470/141 264/485/141 272/494/141 -f 250/470/142 266/495/142 265/496/142 -f 256/475/143 254/473/143 267/497/143 -f 260/479/144 270/498/144 271/499/144 -f 258/477/145 256/475/145 268/490/145 -f 264/485/146 262/486/146 271/500/146 -f 274/501/147 280/502/147 288/503/147 -f 265/483/139 273/504/139 275/505/139 -f 272/506/139 271/500/139 279/507/139 -f 269/492/139 277/508/139 278/509/139 -f 268/510/139 267/497/139 275/511/139 -f 265/496/139 266/495/139 274/512/139 -f 266/513/139 272/494/139 280/514/139 -f 270/498/139 278/515/139 279/516/139 -f 287/517/139 285/518/139 283/519/139 -f 278/520/148 286/521/148 287/522/148 -f 277/523/149 276/524/149 284/525/149 -f 275/526/150 273/527/150 281/528/150 -f 280/502/151 279/529/151 287/530/151 -f 277/523/152 285/531/152 286/521/152 -f 275/526/153 283/532/153 284/525/153 -f 274/501/154 282/533/154 281/528/154 -f 296/534/137 304/535/137 303/536/137 -f 255/476/155 257/478/155 293/537/155 -f 263/484/156 296/534/156 295/538/156 -f 253/474/157 291/539/157 290/540/157 -f 259/480/158 294/541/158 293/542/158 -f 263/484/159 249/543/159 289/544/159 -f 251/472/160 290/545/160 289/546/160 -f 255/476/161 292/547/161 291/548/161 -f 294/541/133 302/549/133 301/550/133 -f 292/547/131 300/551/131 299/552/131 -f 290/545/129 298/553/129 297/554/129 -f 289/544/136 297/555/136 304/556/136 -f 295/487/134 303/557/134 302/558/134 -f 293/537/132 301/559/132 300/560/132 -f 291/539/130 299/561/130 298/562/130 -f 306/563/129 308/564/129 307/565/129 -f 307/565/130 308/564/130 310/566/130 -f 310/566/131 312/567/131 311/568/131 -f 312/567/132 314/569/132 313/570/132 -f 314/569/133 316/571/133 315/572/133 -f 316/571/134 318/573/134 317/574/134 -f 308/564/135 321/575/135 323/576/135 -f 320/577/136 306/563/136 305/578/136 -f 317/579/137 318/580/137 320/577/137 -f 315/572/138 317/574/138 351/581/138 -f 324/582/139 332/583/139 333/584/139 -f 314/569/140 325/585/140 326/586/140 -f 306/563/141 320/577/141 328/587/141 -f 306/563/142 322/588/142 321/589/142 -f 312/567/143 310/566/143 323/590/143 -f 316/571/144 326/591/144 327/592/144 -f 314/569/145 312/567/145 324/582/145 -f 320/577/146 318/580/146 327/593/146 -f 330/594/147 336/595/147 344/596/147 -f 321/575/139 329/597/139 331/598/139 -f 328/599/139 327/593/139 335/600/139 -f 326/586/139 325/585/139 333/601/139 -f 324/602/139 323/590/139 331/603/139 -f 321/589/139 322/588/139 330/604/139 -f 328/587/139 336/605/139 330/606/139 -f 326/591/139 334/607/139 335/608/139 -f 343/609/139 341/610/139 339/611/139 -f 334/612/148 342/613/148 343/614/148 -f 333/615/149 332/616/149 340/617/149 -f 331/618/150 329/619/150 337/620/150 -f 336/595/151 335/621/151 343/622/151 -f 333/615/152 341/623/152 342/613/152 -f 331/618/153 339/624/153 340/617/153 -f 330/594/154 338/625/154 337/620/154 -f 352/626/137 360/627/137 359/628/137 -f 313/570/155 349/629/155 348/630/155 -f 319/631/156 352/626/156 351/632/156 -f 309/633/157 347/634/157 346/635/157 -f 315/572/158 350/636/158 349/637/158 -f 305/578/159 345/638/159 352/639/159 -f 307/565/160 346/640/160 345/641/160 -f 309/633/161 311/568/161 348/642/161 -f 350/636/133 358/643/133 357/644/133 -f 348/642/131 356/645/131 355/646/131 -f 346/640/129 354/647/129 353/648/129 -f 345/638/136 353/649/136 360/650/136 -f 351/581/134 359/651/134 358/652/134 -f 349/629/132 357/653/132 356/654/132 -f 347/634/130 355/655/130 354/656/130 -f 362/657/162 361/658/162 392/659/162 -f 375/660/163 383/661/163 382/662/163 -f 363/663/162 364/664/162 366/665/162 -f 381/666/164 389/667/164 390/668/164 -f 367/669/165 379/670/165 361/671/165 -f 366/665/166 368/672/166 367/669/166 -f 383/673/167 384/674/167 385/675/167 -f 363/663/168 365/676/168 361/658/168 -f 367/669/169 368/672/169 370/677/169 -f 379/670/166 391/678/166 392/679/166 -f 373/680/170 382/681/170 381/682/170 -f 370/677/164 372/683/164 371/684/164 -f 371/684/171 381/666/171 380/685/171 -f 372/683/172 374/686/172 373/680/172 -f 367/669/173 369/687/173 380/688/173 -f 383/661/174 387/689/174 388/690/174 -f 374/686/174 376/691/174 375/660/174 -f 372/692/175 370/693/175 396/694/175 -f 377/695/176 378/696/176 364/664/176 -f 375/697/167 376/698/167 378/696/167 -f 382/681/172 388/699/172 389/700/172 -f 377/695/177 363/663/177 362/701/177 -f 375/697/178 377/695/178 384/674/178 -f 379/702/169 380/688/169 390/703/169 -f 384/704/176 362/701/176 386/705/176 -f 395/706/179 403/707/179 404/708/179 -f 378/709/175 400/710/175 394/711/175 -f 372/692/175 397/712/175 398/713/175 -f 368/714/175 366/715/175 393/716/175 -f 374/717/175 398/713/175 399/718/175 -f 366/715/175 364/719/175 394/711/175 -f 368/714/175 395/720/175 396/694/175 -f 376/721/175 399/718/175 400/710/175 -f 406/722/175 405/723/175 403/707/175 -f 393/724/180 394/725/180 402/726/180 -f 400/727/181 408/728/181 402/726/181 -f 398/729/182 406/722/182 407/730/182 -f 396/731/183 404/708/183 405/723/183 -f 393/732/184 401/733/184 403/707/184 -f 400/734/185 399/735/185 407/730/185 -f 397/736/186 405/723/186 406/722/186 -f 409/737/176 440/738/176 434/739/176 -f 421/740/175 423/741/175 431/742/175 -f 412/743/176 414/744/176 413/745/176 -f 429/746/172 437/747/172 438/748/172 -f 413/745/175 415/749/175 427/750/175 -f 414/744/167 416/751/167 415/749/167 -f 431/752/166 432/753/166 433/754/166 -f 411/755/175 413/745/175 409/756/175 -f 415/757/174 416/758/174 418/759/174 -f 427/760/167 439/761/167 440/738/167 -f 421/740/175 430/762/175 429/763/175 -f 417/764/172 418/759/172 420/765/172 -f 439/766/187 438/767/187 446/768/187 -f 419/769/175 429/770/175 428/771/175 -f 420/765/164 422/772/164 421/740/164 -f 417/764/175 428/773/175 427/774/175 -f 431/752/169 435/775/169 436/776/169 -f 421/740/169 422/772/169 424/777/169 -f 420/778/187 418/779/187 476/780/187 -f 426/781/162 412/743/162 411/755/162 -f 424/777/166 426/781/166 425/782/166 -f 430/783/164 436/776/164 437/747/164 -f 425/782/175 411/755/175 410/784/175 -f 425/782/175 432/785/175 431/786/175 -f 428/787/174 438/748/174 439/788/174 -f 410/789/162 434/739/162 433/754/162 -f 442/790/162 450/791/162 449/792/162 -f 436/793/187 444/794/187 445/795/187 -f 435/796/187 433/797/187 441/798/187 -f 439/799/187 447/800/187 448/801/187 -f 438/802/187 437/803/187 445/795/187 -f 435/804/187 443/805/187 444/794/187 -f 434/806/187 442/790/187 441/798/187 -f 440/807/187 448/801/187 442/790/187 -f 456/808/175 455/809/175 463/810/175 -f 442/790/176 448/801/176 456/808/176 -f 447/811/174 446/768/174 454/812/174 -f 444/794/164 452/813/164 453/814/164 -f 443/805/166 441/798/166 449/792/166 -f 447/800/167 455/809/167 456/808/167 -f 445/795/172 453/814/172 454/812/172 -f 443/805/169 451/815/169 452/813/169 -f 459/816/166 457/817/166 465/818/166 -f 453/814/175 461/819/175 462/820/175 -f 452/813/175 451/815/175 459/821/175 -f 449/792/175 450/791/175 458/822/175 -f 450/791/175 456/808/175 464/823/175 -f 454/812/175 462/824/175 463/825/175 -f 453/814/175 452/813/175 460/826/175 -f 449/792/175 457/827/175 459/828/175 -f 463/829/167 471/830/167 472/831/167 -f 461/832/172 469/833/172 470/834/172 -f 459/816/169 467/835/169 468/836/169 -f 458/837/162 466/838/162 465/818/162 -f 458/837/176 464/839/176 472/831/176 -f 463/840/174 462/841/174 470/834/174 -f 461/832/164 460/842/164 468/836/164 -f 476/843/188 475/844/188 483/845/188 -f 426/846/187 480/847/187 474/848/187 -f 420/778/187 477/849/187 478/850/187 -f 414/851/187 473/852/187 475/853/187 -f 422/854/187 478/850/187 479/855/187 -f 414/851/187 412/856/187 474/848/187 -f 418/779/187 416/857/187 475/853/187 -f 426/846/187 424/858/187 479/855/187 -f 486/859/187 485/860/187 483/845/187 -f 473/861/189 474/862/189 482/863/189 -f 480/864/190 488/865/190 482/863/190 -f 478/866/191 486/859/191 487/867/191 -f 477/868/192 476/869/192 484/870/192 -f 473/871/193 481/872/193 483/845/193 -f 479/873/194 487/867/194 488/865/194 -f 477/874/195 485/860/195 486/859/195 -f 490/875/162 489/876/162 520/877/162 -f 503/878/163 511/879/163 510/880/163 -f 491/881/162 492/882/162 494/883/162 -f 509/884/164 517/885/164 518/886/164 -f 495/887/165 507/888/165 489/889/165 -f 494/883/166 496/890/166 495/887/166 -f 511/891/167 512/892/167 513/893/167 -f 491/881/168 493/894/168 489/876/168 -f 495/887/169 496/890/169 498/895/169 -f 507/888/166 519/896/166 520/897/166 -f 501/898/170 510/899/170 509/900/170 -f 498/895/164 500/901/164 499/902/164 -f 499/902/196 509/884/196 508/903/196 -f 500/901/172 502/904/172 501/898/172 -f 495/887/173 497/905/173 508/906/173 -f 511/879/174 515/907/174 516/908/174 -f 501/898/174 502/904/174 504/909/174 -f 500/910/175 498/911/175 524/912/175 -f 505/913/176 506/914/176 492/882/176 -f 504/915/167 506/914/167 505/913/167 -f 510/899/172 516/916/172 517/917/172 -f 505/913/177 491/881/177 490/918/177 -f 505/913/178 512/892/178 511/891/178 -f 507/919/169 508/906/169 518/920/169 -f 512/921/176 490/918/176 514/922/176 -f 523/923/197 531/924/197 532/925/197 -f 506/926/175 528/927/175 522/928/175 -f 500/910/175 525/929/175 526/930/175 -f 496/931/175 494/932/175 521/933/175 -f 502/934/175 526/930/175 527/935/175 -f 492/936/175 522/928/175 521/933/175 -f 496/931/175 523/937/175 524/912/175 -f 506/926/175 504/938/175 527/935/175 -f 534/939/175 533/940/175 531/924/175 -f 521/941/180 522/942/180 530/943/180 -f 522/944/181 528/945/181 536/946/181 -f 526/947/182 534/939/182 535/948/182 -f 524/949/183 532/925/183 533/940/183 -f 523/950/184 521/951/184 529/952/184 -f 528/953/185 527/954/185 535/948/185 -f 525/955/186 533/940/186 534/939/186 -f 537/956/176 568/957/176 562/958/176 -f 549/959/175 551/960/175 559/961/175 -f 540/962/176 542/963/176 541/964/176 -f 557/965/172 565/966/172 566/967/172 -f 541/964/175 543/968/175 555/969/175 -f 542/963/167 544/970/167 543/968/167 -f 559/971/166 560/972/166 561/973/166 -f 539/974/175 541/964/175 537/975/175 -f 543/976/174 544/977/174 546/978/174 -f 555/979/167 567/980/167 568/957/167 -f 547/981/175 549/959/175 558/982/175 -f 545/983/172 546/978/172 548/984/172 -f 566/985/187 574/986/187 575/987/187 -f 547/981/175 557/988/175 556/989/175 -f 548/984/164 550/990/164 549/959/164 -f 545/983/175 556/991/175 555/992/175 -f 559/971/169 563/993/169 564/994/169 -f 549/959/169 550/990/169 552/995/169 -f 548/996/187 546/997/187 604/998/187 -f 554/999/162 540/962/162 539/974/162 -f 552/995/166 554/999/166 553/1000/166 -f 558/1001/164 564/994/164 565/966/164 -f 539/974/175 538/1002/175 560/1003/175 -f 553/1000/175 560/1004/175 559/1005/175 -f 555/1006/174 556/1007/174 566/967/174 -f 538/1008/162 562/958/162 561/973/162 -f 570/1009/162 578/1010/162 577/1011/162 -f 564/1012/187 572/1013/187 573/1014/187 -f 563/1015/187 561/1016/187 569/1017/187 -f 567/1018/187 575/1019/187 576/1020/187 -f 566/1021/187 565/1022/187 573/1014/187 -f 563/1023/187 571/1024/187 572/1013/187 -f 561/1025/187 562/1026/187 570/1009/187 -f 568/1027/187 576/1020/187 570/1009/187 -f 584/1028/175 583/1029/175 591/1030/175 -f 570/1009/176 576/1020/176 584/1028/176 -f 575/987/174 574/986/174 582/1031/174 -f 572/1013/164 580/1032/164 581/1033/164 -f 571/1024/166 569/1017/166 577/1011/166 -f 575/1019/167 583/1029/167 584/1028/167 -f 573/1014/172 581/1033/172 582/1031/172 -f 571/1024/169 579/1034/169 580/1032/169 -f 587/1035/166 585/1036/166 593/1037/166 -f 581/1033/175 589/1038/175 590/1039/175 -f 580/1032/175 579/1034/175 587/1040/175 -f 578/1010/175 586/1041/175 585/1042/175 -f 578/1010/175 584/1028/175 592/1043/175 -f 582/1031/175 590/1044/175 591/1045/175 -f 581/1033/175 580/1032/175 588/1046/175 -f 577/1011/175 585/1047/175 587/1048/175 -f 591/1049/167 599/1050/167 600/1051/167 -f 589/1052/172 597/1053/172 598/1054/172 -f 587/1035/169 595/1055/169 596/1056/169 -f 586/1057/162 594/1058/162 593/1037/162 -f 586/1057/176 592/1059/176 600/1051/176 -f 591/1060/174 590/1061/174 598/1054/174 -f 589/1052/164 588/1062/164 596/1056/164 -f 604/1063/188 603/1064/188 611/1065/188 -f 554/1066/187 608/1067/187 602/1068/187 -f 548/996/187 605/1069/187 606/1070/187 -f 542/1071/187 601/1072/187 603/1073/187 -f 550/1074/187 606/1070/187 607/1075/187 -f 540/1076/187 602/1068/187 601/1072/187 -f 546/997/187 544/1077/187 603/1073/187 -f 552/1078/187 607/1075/187 608/1067/187 -f 614/1079/187 613/1080/187 611/1065/187 -f 602/1081/189 610/1082/189 609/1083/189 -f 608/1084/190 616/1085/190 610/1082/190 -f 606/1086/191 614/1079/191 615/1087/191 -f 605/1088/192 604/1089/192 612/1090/192 -f 601/1091/198 609/1083/198 611/1065/198 -f 608/1092/194 607/1093/194 615/1087/194 -f 605/1094/195 613/1080/195 614/1079/195 -f 618/1095/176 620/1096/176 619/1097/176 -f 620/1096/167 622/1098/167 621/1099/167 -f 622/1100/174 624/1101/174 623/1102/174 -f 624/1101/172 626/1103/172 625/1104/172 -f 625/1104/164 626/1103/164 628/1105/164 -f 627/1106/169 628/1105/169 630/1107/169 -f 632/1108/162 618/1095/162 617/1109/162 -f 630/1107/166 632/1108/166 631/1110/166 -f 631/1110/199 640/1111/199 639/1112/199 -f 640/1111/166 648/1113/166 647/1114/166 -f 621/1099/200 635/1115/200 634/1116/200 -f 625/1104/201 627/1106/201 638/1117/201 -f 631/1110/202 617/1109/202 633/1118/202 -f 617/1109/203 619/1097/203 634/1119/203 -f 621/1120/204 623/1102/204 636/1121/204 -f 629/1122/205 639/1123/205 638/1124/205 -f 625/1104/206 637/1125/206 636/1126/206 -f 657/1127/139 665/1128/139 641/1129/139 -f 637/1130/164 638/1117/164 646/1131/164 -f 635/1132/174 636/1121/174 644/1133/174 -f 633/1134/176 634/1119/176 642/1135/176 -f 633/1118/162 641/1136/162 648/1137/162 -f 639/1123/169 647/1138/169 646/1139/169 -f 637/1125/172 645/1140/172 644/1141/172 -f 635/1115/167 643/1142/167 642/1143/167 -f 649/1144/162 657/1145/162 664/1146/162 -f 648/1147/207 656/1148/207 655/1149/207 -f 646/1150/208 654/1151/208 653/1152/208 -f 644/1153/209 652/1154/209 651/1155/209 -f 642/1156/210 650/1157/210 649/1158/210 -f 672/1159/211 664/1160/211 656/1161/211 -f 641/1136/162 665/1162/162 672/1163/162 -f 655/1149/23 663/1164/23 671/1165/23 -f 660/1166/212 668/1167/212 667/1168/212 -f 655/1169/169 663/1170/169 662/1171/169 -f 653/1172/172 661/1173/172 660/1174/172 -f 651/1175/167 659/1176/167 658/1177/167 -f 656/1178/166 664/1160/166 663/1164/166 -f 653/1179/164 654/1180/164 662/1181/164 -f 651/1182/174 652/1183/174 660/1166/174 -f 650/1184/176 658/1185/176 657/1127/176 -f 672/1186/199 680/1187/199 679/1188/199 -f 657/1127/213 658/1185/213 666/1189/213 -f 661/1190/214 669/1191/214 645/1192/214 -f 645/1140/172 669/1193/172 668/1194/172 -f 646/1195/215 670/1196/215 662/1181/215 -f 647/1138/169 671/1197/169 670/1198/169 -f 663/1164/216 664/1160/216 672/1159/216 -f 662/1181/217 670/1196/217 669/1191/217 -f 676/1199/175 678/1200/175 674/1201/175 -f 670/1202/201 678/1200/201 677/1203/201 -f 668/1204/204 676/1199/204 675/1205/204 -f 665/1206/203 666/1207/203 674/1201/203 -f 665/1208/202 673/1209/202 680/1187/202 -f 670/1210/205 671/1211/205 679/1188/205 -f 668/1212/206 669/1213/206 677/1203/206 -f 666/1214/200 667/1215/200 675/1205/200 -f 643/1142/167 667/1216/167 666/1217/167 -f 650/1218/218 642/1219/218 666/1189/218 -f 667/1168/32 643/1220/32 651/1155/32 -f 644/1221/219 668/1167/219 660/1166/219 -f 681/1222/220 682/1223/220 684/1224/220 -f 683/1225/221 684/1224/221 686/1226/221 -f 686/1226/222 688/1227/222 687/1228/222 -f 688/1227/223 690/1229/223 689/1230/223 -f 689/1230/224 690/1229/224 692/1231/224 -f 692/1231/225 694/1232/225 693/1233/225 -f 684/1224/226 697/1234/226 699/1235/226 -f 695/1236/227 696/1237/227 682/1223/227 -f 693/1238/228 694/1239/228 696/1237/228 -f 693/1233/229 727/1240/229 726/1241/229 -f 700/1242/230 708/1243/230 709/1244/230 -f 692/1231/231 690/1229/231 701/1245/231 -f 682/1223/232 696/1237/232 704/1246/232 -f 684/1224/233 682/1223/233 698/1247/233 -f 688/1227/234 686/1226/234 699/1248/234 -f 692/1231/235 702/1249/235 703/1250/235 -f 688/1227/236 700/1242/236 701/1251/236 -f 696/1237/237 694/1239/237 703/1252/237 -f 706/1253/238 712/1254/238 720/1255/238 -f 697/1234/230 705/1256/230 707/1257/230 -f 704/1258/230 703/1252/230 711/1259/230 -f 702/1260/230 701/1245/230 709/1261/230 -f 700/1262/230 699/1248/230 707/1263/230 -f 697/1264/230 698/1247/230 706/1265/230 -f 704/1246/230 712/1266/230 706/1267/230 -f 703/1250/230 702/1249/230 710/1268/230 -f 719/1269/230 716/1270/230 715/1271/230 -f 710/1272/239 718/1273/239 719/1274/239 -f 708/1275/240 716/1276/240 717/1277/240 -f 705/1278/241 713/1279/241 715/1280/241 -f 711/1281/242 719/1282/242 720/1255/242 -f 709/1283/243 717/1277/243 718/1273/243 -f 708/1275/244 707/1284/244 715/1280/244 -f 706/1253/245 714/1285/245 713/1279/245 -f 727/1286/228 728/1287/228 736/1288/228 -f 689/1230/246 725/1289/246 724/1290/246 -f 695/1236/247 728/1287/247 727/1286/247 -f 683/1225/248 685/1291/248 723/1292/248 -f 689/1230/249 691/1293/249 726/1294/249 -f 681/1222/250 721/1295/250 728/1296/250 -f 683/1225/251 722/1297/251 721/1298/251 -f 685/1291/252 687/1228/252 724/1299/252 -f 725/1300/224 726/1294/224 734/1301/224 -f 724/1299/222 732/1302/222 731/1303/222 -f 721/1298/220 722/1297/220 730/1304/220 -f 721/1295/227 729/1305/227 736/1306/227 -f 727/1240/225 735/1307/225 734/1308/225 -f 725/1289/223 733/1309/223 732/1310/223 -f 723/1292/221 731/1311/221 730/1312/221 -f 738/1313/162 737/1314/162 768/1315/162 -f 749/1316/163 751/1317/163 759/1318/163 -f 739/1319/162 740/1320/162 742/1321/162 -f 757/1322/164 765/1323/164 766/1324/164 -f 743/1325/165 755/1326/165 737/1327/165 -f 742/1321/166 744/1328/166 743/1325/166 -f 759/1329/167 760/1330/167 761/1331/167 -f 739/1319/168 741/1332/168 737/1314/168 -f 743/1325/169 744/1328/169 746/1333/169 -f 755/1326/166 767/1334/166 768/1335/166 -f 749/1316/170 758/1336/170 757/1337/170 -f 746/1333/164 748/1338/164 747/1339/164 -f 745/1340/196 747/1339/196 757/1322/196 -f 748/1338/172 750/1341/172 749/1316/172 -f 743/1325/173 745/1340/173 756/1342/173 -f 759/1318/174 763/1343/174 764/1344/174 -f 749/1316/174 750/1341/174 752/1345/174 -f 746/1346/175 772/1347/175 773/1348/175 -f 753/1349/176 754/1350/176 740/1320/176 -f 752/1351/167 754/1350/167 753/1349/167 -f 758/1336/172 764/1352/172 765/1353/172 -f 753/1349/177 739/1319/177 738/1354/177 -f 753/1349/178 760/1330/178 759/1329/178 -f 755/1355/169 756/1342/169 766/1356/169 -f 760/1357/176 738/1354/176 762/1358/176 -f 772/1359/197 771/1360/197 779/1361/197 -f 740/1362/175 754/1363/175 776/1364/175 -f 748/1365/175 773/1348/175 774/1366/175 -f 744/1367/175 742/1368/175 769/1369/175 -f 750/1370/175 774/1366/175 775/1371/175 -f 740/1362/175 770/1372/175 769/1369/175 -f 744/1367/175 771/1373/175 772/1347/175 -f 754/1363/175 752/1374/175 775/1371/175 -f 782/1375/175 781/1376/175 779/1361/175 -f 769/1377/180 770/1378/180 778/1379/180 -f 770/1380/181 776/1381/181 784/1382/181 -f 775/1383/182 774/1384/182 782/1375/182 -f 772/1385/183 780/1386/183 781/1376/183 -f 769/1387/184 777/1388/184 779/1361/184 -f 776/1389/185 775/1390/185 783/1391/185 -f 773/1392/186 781/1376/186 782/1375/186 -f 786/1393/176 785/1394/176 816/1395/176 -f 797/1396/175 799/1397/175 807/1398/175 -f 788/1399/176 790/1400/176 789/1401/176 -f 805/1402/172 813/1403/172 814/1404/172 -f 791/1405/175 803/1406/175 785/1407/175 -f 789/1401/167 790/1400/167 792/1408/167 -f 807/1409/166 808/1410/166 809/1411/166 -f 789/1401/175 785/1412/175 786/1413/175 -f 792/1414/174 794/1415/174 793/1416/174 -f 803/1417/167 815/1418/167 816/1395/167 -f 797/1396/175 806/1419/175 805/1420/175 -f 793/1416/172 794/1415/172 796/1421/172 -f 814/1422/187 822/1423/187 823/1424/187 -f 795/1425/175 805/1426/175 804/1427/175 -f 796/1421/164 798/1428/164 797/1396/164 -f 793/1416/175 804/1429/175 803/1430/175 -f 807/1409/169 811/1431/169 812/1432/169 -f 797/1396/169 798/1428/169 800/1433/169 -f 794/1434/187 852/1435/187 853/1436/187 -f 802/1437/162 788/1399/162 787/1438/162 -f 800/1433/166 802/1437/166 801/1439/166 -f 806/1440/164 812/1432/164 813/1403/164 -f 787/1438/175 786/1441/175 808/1442/175 -f 801/1439/175 808/1443/175 807/1444/175 -f 803/1445/174 804/1446/174 814/1404/174 -f 786/1393/162 810/1447/162 809/1411/162 -f 818/1448/162 826/1449/162 825/1450/162 -f 813/1451/187 812/1452/187 820/1453/187 -f 811/1454/187 809/1455/187 817/1456/187 -f 816/1457/187 815/1458/187 823/1459/187 -f 813/1460/187 821/1461/187 822/1423/187 -f 811/1462/187 819/1463/187 820/1453/187 -f 810/1464/187 818/1448/187 817/1456/187 -f 810/1465/187 816/1466/187 824/1467/187 -f 831/1468/175 839/1469/175 840/1470/175 -f 818/1448/176 824/1467/176 832/1471/176 -f 823/1424/174 822/1423/174 830/1472/174 -f 820/1453/164 828/1473/164 829/1474/164 -f 819/1463/166 817/1456/166 825/1450/166 -f 823/1459/167 831/1468/167 832/1471/167 -f 821/1461/172 829/1474/172 830/1472/172 -f 819/1463/169 827/1475/169 828/1473/169 -f 835/1476/166 833/1477/166 841/1478/166 -f 830/1472/175 829/1474/175 837/1479/175 -f 828/1473/175 827/1475/175 835/1480/175 -f 826/1449/175 834/1481/175 833/1482/175 -f 832/1471/175 840/1483/175 834/1484/175 -f 831/1485/175 830/1472/175 838/1486/175 -f 828/1473/175 836/1487/175 837/1488/175 -f 825/1450/175 833/1489/175 835/1490/175 -f 839/1491/167 847/1492/167 848/1493/167 -f 837/1494/172 845/1495/172 846/1496/172 -f 835/1476/169 843/1497/169 844/1498/169 -f 834/1499/162 842/1500/162 841/1478/162 -f 840/1501/176 848/1493/176 842/1500/176 -f 838/1502/174 846/1496/174 847/1503/174 -f 837/1494/164 836/1504/164 844/1498/164 -f 852/1505/188 851/1506/188 859/1507/188 -f 788/1508/187 802/1509/187 856/1510/187 -f 796/1511/187 853/1436/187 854/1512/187 -f 790/1513/187 849/1514/187 851/1515/187 -f 798/1516/187 854/1512/187 855/1517/187 -f 788/1508/187 850/1518/187 849/1514/187 -f 792/1519/187 851/1515/187 852/1435/187 -f 802/1509/187 800/1520/187 855/1517/187 -f 862/1521/187 861/1522/187 859/1507/187 -f 850/1523/189 858/1524/189 857/1525/189 -f 856/1526/190 864/1527/190 858/1524/190 -f 854/1528/191 862/1521/191 863/1529/191 -f 852/1530/192 860/1531/192 861/1522/192 -f 849/1532/198 857/1525/198 859/1507/198 -f 855/1533/194 863/1529/194 864/1527/194 -f 854/1534/195 853/1535/195 861/1522/195 -f 900/1536/58 901/1537/58 903/1538/58 -f 867/1539/23 866/1540/23 900/1536/23 -f 868/1541/253 870/1542/253 869/1543/253 -f 892/1544/254 910/1545/254 911/1546/254 -f 881/1547/23 896/1548/23 895/1549/23 -f 870/1542/62 872/1550/62 871/1551/62 -f 899/1552/255 903/1538/255 904/1553/255 -f 885/1554/23 898/1555/23 897/1556/23 -f 872/1550/254 874/1557/254 873/1558/254 -f 897/1556/256 905/1559/256 906/1560/256 -f 887/1561/23 889/1562/23 900/1536/23 -f 873/1558/257 874/1557/257 876/1563/257 -f 866/1540/258 902/1564/258 901/1537/258 -f 871/1565/23 891/1566/23 865/1567/23 -f 876/1563/50 878/1568/50 877/1569/50 -f 895/1570/259 907/1571/259 908/1572/259 -f 875/1573/23 893/1574/23 892/1544/23 -f 877/1569/259 878/1568/259 880/1575/259 -f 893/1574/257 909/1576/257 910/1545/257 -f 867/1577/23 869/1578/23 865/1567/23 -f 880/1579/260 882/1580/260 881/1581/260 -f 891/1566/62 911/1546/62 912/1582/62 -f 877/1583/23 879/1584/23 895/1570/23 -f 882/1580/256 884/1585/256 883/1586/256 -f 907/1571/32 919/1587/32 920/1588/32 -f 883/1589/23 897/1556/23 896/1548/23 -f 884/1585/261 886/1590/261 885/1591/261 -f 873/1592/23 892/1544/23 891/1566/23 -f 898/1555/261 904/1553/261 905/1559/261 -f 886/1590/255 888/1593/255 887/1594/255 -f 890/1595/32 888/1596/32 971/1597/32 -f 890/1598/258 868/1541/258 867/1599/258 -f 888/1593/58 890/1598/58 889/1600/58 -f 865/1567/253 912/1582/253 902/1564/253 -f 877/1601/23 894/1602/23 893/1574/23 -f 885/1603/23 887/1604/23 899/1552/23 -f 894/1602/50 908/1572/50 909/1576/50 -f 896/1548/260 906/1560/260 907/1605/260 -f 919/1606/259 931/1607/259 932/1608/259 -f 904/1553/32 916/1609/32 917/1610/32 -f 912/1582/32 911/1546/32 923/1611/32 -f 902/1564/32 914/1612/32 913/1613/32 -f 909/1576/32 908/1572/32 920/1614/32 -f 906/1560/32 905/1559/32 917/1615/32 -f 912/1582/32 924/1616/32 914/1617/32 -f 901/1537/32 913/1618/32 915/1619/32 -f 910/1545/32 909/1576/32 921/1620/32 -f 907/1605/32 906/1560/32 918/1621/32 -f 903/1538/32 915/1622/32 916/1623/32 -f 910/1545/32 922/1624/32 923/1625/32 -f 934/1626/23 946/1627/23 947/1628/23 -f 916/1629/261 928/1630/261 929/1631/261 -f 923/1632/62 935/1633/62 936/1634/62 -f 914/1635/258 926/1636/258 925/1637/258 -f 920/1638/50 932/1608/50 933/1639/50 -f 917/1640/256 929/1631/256 930/1641/256 -f 924/1642/253 936/1634/253 926/1636/253 -f 913/1643/58 925/1637/58 927/1644/58 -f 921/1645/257 933/1639/257 934/1646/257 -f 918/1647/260 930/1641/260 931/1648/260 -f 915/1649/255 927/1644/255 928/1630/255 -f 922/1650/254 934/1646/254 935/1633/254 -f 939/1651/255 951/1652/255 952/1653/255 -f 932/1654/23 931/1655/23 943/1656/23 -f 929/1657/23 928/1658/23 940/1659/23 -f 935/1660/23 947/1628/23 948/1661/23 -f 926/1662/23 938/1663/23 937/1664/23 -f 932/1665/23 944/1666/23 945/1667/23 -f 929/1668/23 941/1669/23 942/1670/23 -f 926/1671/23 936/1672/23 948/1661/23 -f 927/1673/23 925/1674/23 937/1664/23 -f 933/1675/23 945/1667/23 946/1627/23 -f 930/1676/23 942/1670/23 943/1677/23 -f 928/1678/23 927/1679/23 939/1651/23 -f 951/1652/262 1047/1680/262 1048/1681/262 -f 946/1627/254 958/1682/254 959/1683/254 -f 943/1656/259 955/1684/259 956/1685/259 -f 940/1659/261 952/1653/261 953/1686/261 -f 947/1628/62 959/1683/62 960/1687/62 -f 938/1663/258 950/1688/258 949/1689/258 -f 944/1666/50 956/1685/50 957/1690/50 -f 941/1669/256 953/1686/256 954/1691/256 -f 948/1661/253 960/1687/253 950/1688/253 -f 939/1651/58 937/1664/58 949/1689/58 -f 945/1667/257 957/1690/257 958/1682/257 -f 942/1670/260 954/1691/260 955/1692/260 -f 966/1693/259 978/1694/259 979/1695/259 -f 870/1696/32 868/1697/32 962/1698/32 -f 886/1699/32 884/1700/32 969/1701/32 -f 882/1702/32 880/1703/32 967/1704/32 -f 876/1705/32 965/1706/32 966/1693/32 -f 872/1707/32 963/1708/32 964/1709/32 -f 888/1710/32 886/1711/32 970/1712/32 -f 884/1713/32 882/1714/32 968/1715/32 -f 878/1716/32 966/1693/32 967/1717/32 -f 874/1718/32 964/1709/32 965/1706/32 -f 870/1719/32 961/1720/32 963/1708/32 -f 890/1721/32 972/1722/32 962/1698/32 -f 979/1695/23 978/1694/23 990/1723/23 -f 963/1708/254 975/1724/254 976/1725/254 -f 970/1712/255 982/1726/255 983/1727/255 -f 967/1704/260 979/1728/260 980/1729/260 -f 964/1709/257 976/1725/257 977/1730/257 -f 971/1597/58 983/1727/58 984/1731/58 -f 962/1698/253 974/1732/253 973/1733/253 -f 968/1715/256 980/1729/256 981/1734/256 -f 965/1706/50 977/1730/50 978/1694/50 -f 972/1722/258 984/1731/258 974/1732/258 -f 961/1720/62 973/1733/62 975/1724/62 -f 969/1701/261 981/1734/261 982/1726/261 -f 993/1735/261 1005/1736/261 1006/1737/261 -f 976/1725/23 975/1724/23 987/1738/23 -f 982/1726/23 994/1739/23 995/1740/23 -f 979/1728/23 991/1741/23 992/1742/23 -f 977/1730/23 976/1725/23 988/1743/23 -f 983/1727/23 995/1744/23 996/1745/23 -f 974/1732/23 986/1746/23 985/1747/23 -f 980/1729/23 992/1748/23 993/1749/23 -f 978/1694/23 977/1730/23 989/1750/23 -f 974/1732/23 984/1731/23 996/1751/23 -f 975/1724/23 973/1733/23 985/1752/23 -f 981/1734/23 993/1753/23 994/1754/23 -f 997/1755/32 1009/1756/32 1011/1757/32 -f 990/1758/259 1002/1759/259 1003/1760/259 -f 987/1761/254 999/1762/254 1000/1763/254 -f 994/1764/255 1006/1737/255 1007/1765/255 -f 991/1766/260 1003/1767/260 1004/1768/260 -f 988/1769/257 1000/1763/257 1001/1770/257 -f 995/1771/58 1007/1765/58 1008/1772/58 -f 986/1773/253 998/1774/253 997/1775/253 -f 992/1776/256 1004/1768/256 1005/1736/256 -f 989/1777/50 1001/1770/50 1002/1759/50 -f 996/1778/258 1008/1772/258 998/1774/258 -f 985/1779/62 997/1775/62 999/1762/62 -f 1020/1780/258 1032/1781/258 1022/1782/258 -f 1006/1783/32 1005/1784/32 1017/1785/32 -f 1002/1786/32 1014/1787/32 1015/1788/32 -f 999/1789/32 1011/1757/32 1012/1790/32 -f 1007/1791/32 1006/1792/32 1018/1793/32 -f 1004/1794/32 1003/1795/32 1015/1796/32 -f 1000/1797/32 1012/1790/32 1013/1798/32 -f 1008/1799/32 1007/1800/32 1019/1801/32 -f 997/1802/32 998/1803/32 1010/1804/32 -f 1005/1805/32 1004/1806/32 1016/1807/32 -f 1001/1808/32 1013/1798/32 1014/1787/32 -f 1008/1809/32 1020/1780/32 1010/1804/32 -f 1025/1810/263 1037/1811/263 1038/1812/263 -f 1011/1757/62 1009/1756/62 1021/1813/62 -f 1017/1785/261 1029/1814/261 1030/1815/261 -f 1015/1788/259 1014/1787/259 1026/1816/259 -f 1012/1790/254 1011/1757/254 1023/1817/254 -f 1018/1793/255 1030/1815/255 1031/1818/255 -f 1015/1796/260 1027/1819/260 1028/1820/260 -f 1013/1798/257 1012/1790/257 1024/1821/257 -f 1019/1801/58 1031/1818/58 1032/1781/58 -f 1009/1756/253 1010/1804/253 1022/1782/253 -f 1016/1807/256 1028/1820/256 1029/1814/256 -f 1014/1787/50 1013/1798/50 1025/1810/50 -f 1041/1822/23 1039/1823/23 1035/1824/23 -f 1032/1781/264 1044/1825/264 1034/1826/264 -f 1023/1817/265 1021/1813/265 1033/1827/265 -f 1029/1814/266 1041/1828/266 1042/1829/266 -f 1027/1830/267 1026/1816/267 1038/1831/267 -f 1024/1821/268 1023/1817/268 1035/1832/268 -f 1030/1815/269 1042/1833/269 1043/1834/269 -f 1028/1820/270 1027/1819/270 1039/1835/270 -f 1024/1821/271 1036/1836/271 1037/1837/271 -f 1031/1818/272 1043/1838/272 1044/1839/272 -f 1022/1782/273 1034/1840/273 1033/1841/273 -f 1029/1814/274 1028/1820/274 1040/1842/274 -f 1052/1843/50 1064/1844/50 1065/1845/50 -f 958/1682/275 1054/1846/275 1055/1847/275 -f 956/1685/276 955/1684/276 1051/1848/276 -f 953/1686/277 952/1653/277 1048/1849/277 -f 960/1687/278 959/1683/278 1055/1850/278 -f 949/1689/279 950/1688/279 1046/1851/279 -f 956/1685/280 1052/1852/280 1053/1853/280 -f 953/1686/281 1049/1854/281 1050/1855/281 -f 960/1687/282 1056/1856/282 1046/1857/282 -f 949/1689/283 1045/1858/283 1047/1859/283 -f 958/1682/284 957/1690/284 1053/1860/284 -f 954/1691/285 1050/1861/285 1051/1862/285 -f 1057/1863/32 1058/1864/32 1070/1865/32 -f 1049/1866/256 1061/1867/256 1062/1868/256 -f 1056/1869/253 1068/1870/253 1058/1871/253 -f 1045/1872/58 1057/1873/58 1059/1874/58 -f 1053/1875/257 1065/1845/257 1066/1876/257 -f 1050/1877/260 1062/1868/260 1063/1878/260 -f 1047/1879/255 1059/1874/255 1060/1880/255 -f 1054/1881/254 1066/1876/254 1067/1882/254 -f 1051/1883/259 1063/1884/259 1064/1844/259 -f 1048/1885/261 1060/1880/261 1061/1867/261 -f 1055/1886/62 1067/1882/62 1068/1870/62 -f 1046/1887/258 1058/1871/258 1057/1873/258 -f 1079/1888/256 1091/1889/256 1092/1890/256 -f 1064/1891/32 1076/1892/32 1077/1893/32 -f 1061/1894/32 1073/1895/32 1074/1896/32 -f 1068/1897/32 1080/1898/32 1070/1865/32 -f 1059/1899/32 1057/1863/32 1069/1900/32 -f 1066/1901/32 1065/1902/32 1077/1893/32 -f 1063/1903/32 1062/1904/32 1074/1896/32 -f 1060/1905/32 1059/1899/32 1071/1906/32 -f 1066/1901/32 1078/1907/32 1079/1908/32 -f 1064/1891/32 1063/1903/32 1075/1909/32 -f 1061/1894/32 1060/1905/32 1072/1910/32 -f 1068/1897/32 1067/1911/32 1079/1908/32 -f 1070/1912/259 1082/1913/259 1081/1914/259 -f 1076/1915/58 1088/1916/58 1089/1917/58 -f 1073/1918/62 1085/1919/62 1086/1920/62 -f 1080/1921/260 1092/1890/260 1082/1913/260 -f 1069/1922/50 1081/1914/50 1083/1923/50 -f 1077/1924/255 1089/1917/255 1090/1925/255 -f 1074/1926/253 1086/1920/253 1087/1927/253 -f 1071/1928/257 1083/1923/257 1084/1929/257 -f 1078/1930/261 1090/1925/261 1091/1889/261 -f 1075/1931/258 1087/1932/258 1088/1916/258 -f 1072/1933/254 1084/1929/254 1085/1919/254 -f 1099/1934/32 1097/1935/32 1095/1936/32 -f 1105/1937/23 1107/1938/23 1102/1939/23 -f 1100/1940/286 1108/1941/286 1107/1938/286 -f 1097/1942/287 1098/1943/287 1106/1944/287 -f 1096/1945/288 1104/1946/288 1103/1947/288 -f 1094/1948/289 1101/1949/289 1102/1939/289 -f 1093/1950/290 1102/1939/290 1108/1941/290 -f 1099/1951/291 1107/1938/291 1106/1944/291 -f 1097/1952/292 1105/1937/292 1104/1946/292 -f 1095/1953/293 1103/1947/293 1101/1949/293 -f 1110/1954/294 1112/1955/294 1111/1956/294 -f 1112/1955/187 1114/1957/187 1113/1958/187 -f 1114/1957/295 1116/1959/295 1115/1960/295 -f 1115/1961/296 1116/1962/296 1118/1963/296 -f 1119/1964/93 1120/1965/93 1110/1954/93 -f 1118/1963/175 1120/1965/175 1119/1964/175 -f 1122/1966/294 1124/1967/294 1123/1968/294 -f 1124/1967/187 1126/1969/187 1125/1970/187 -f 1126/1969/295 1128/1971/295 1127/1972/295 -f 1127/1973/296 1128/1974/296 1130/1975/296 -f 1131/1976/93 1132/1977/93 1122/1966/93 -f 1130/1975/175 1132/1977/175 1131/1976/175 -f 1134/1978/294 1136/1979/294 1135/1980/294 -f 1136/1979/187 1138/1981/187 1137/1982/187 -f 1138/1981/295 1140/1983/295 1139/1984/295 -f 1139/1985/296 1140/1986/296 1142/1987/296 -f 1143/1988/93 1144/1989/93 1134/1978/93 -f 1142/1987/175 1144/1989/175 1143/1988/175 -f 1146/1990/294 1148/1991/294 1147/1992/294 -f 1148/1991/187 1150/1993/187 1149/1994/187 -f 1150/1993/295 1152/1995/295 1151/1996/295 -f 1151/1997/296 1152/1998/296 1154/1999/296 -f 1155/2000/93 1156/2001/93 1146/1990/93 -f 1154/1999/175 1156/2001/175 1155/2000/175 -f 1160/2002/175 1159/2003/175 1157/2004/175 -f 1166/2005/211 1163/2006/211 1159/2007/211 -f 1162/2008/187 1161/2009/187 1163/2010/187 -f 1158/2011/175 1157/2012/175 1279/2013/175 -f 1159/2014/214 1163/2015/214 1161/2016/214 -f 1164/2017/139 1160/2002/139 1158/2018/139 -f 1159/2019/175 1160/2020/175 1165/2021/175 -f 1163/2022/187 1166/2023/187 1164/2024/187 -f 1167/2025/187 1173/2026/187 1174/2027/187 -f 1168/2028/32 1169/2029/32 1173/2030/32 -f 1171/2031/23 1174/2032/23 1170/2033/23 -f 1170/2034/297 1175/2035/297 1177/2036/297 -f 1160/2020/298 1172/2037/298 1168/2038/298 -f 1164/2039/23 1171/2031/23 1172/2040/23 -f 1165/2041/32 1168/2028/32 1167/2042/32 -f 1172/2037/175 1170/2034/175 1169/2043/175 -f 1166/2023/299 1167/2025/299 1171/2044/299 -f 1178/2045/139 1177/2036/139 1175/2035/139 -f 1174/2032/23 1176/2046/23 1175/2047/23 -f 1169/2029/32 1177/2048/32 1178/2049/32 -f 1173/2026/300 1178/2045/300 1176/2050/300 -f 1194/2051/175 1182/2052/175 1206/2053/175 -f 1188/2054/187 1200/2055/187 1214/2056/187 -f 1182/2052/261 1194/2051/261 1195/2057/261 -f 1213/2058/23 1201/2059/23 1202/2060/23 -f 1210/2061/23 1179/2062/23 1218/2063/23 -f 1186/2064/50 1198/2065/50 1199/2066/50 -f 1183/2067/256 1195/2057/256 1196/2068/256 -f 1199/2069/23 1189/2070/23 1181/2071/23 -f 1211/2072/23 1217/2073/23 1179/2062/23 -f 1187/2074/257 1199/2066/257 1200/2055/257 -f 1184/2075/260 1196/2068/260 1197/2076/260 -f 1193/2077/256 1227/2078/256 1226/2079/256 -f 1198/2080/23 1190/2081/23 1189/2070/23 -f 1185/2082/259 1197/2083/259 1198/2065/259 -f 1208/2084/62 1215/2085/62 1216/2086/62 -f 1204/2087/258 1211/2088/258 1210/2089/258 -f 1209/2090/253 1216/2086/253 1211/2088/253 -f 1203/2091/58 1210/2089/58 1212/2092/58 -f 1205/2093/255 1212/2092/255 1213/2094/255 -f 1207/2095/254 1214/2056/254 1215/2085/254 -f 1212/2096/23 1218/2063/23 1201/2059/23 -f 1195/2097/23 1194/2098/23 1202/2060/23 -f 1215/2099/23 1214/2100/23 1180/2101/23 -f 1200/2102/23 1181/2071/23 1180/2101/23 -f 1196/2103/23 1195/2104/23 1193/2077/23 -f 1216/2105/23 1215/2106/23 1219/2107/23 -f 1197/2108/23 1196/2109/23 1192/2110/23 -f 1211/2111/23 1216/2112/23 1220/2113/23 -f 1197/2114/23 1191/2115/23 1190/2081/23 -f 1222/2116/32 1221/2117/32 1229/2118/32 -f 1219/2107/62 1231/2119/62 1230/2120/62 -f 1193/2077/261 1202/2060/261 1228/2121/261 -f 1180/2101/254 1222/2122/254 1231/2119/254 -f 1202/2060/175 1201/2059/175 1229/2123/175 -f 1218/2063/255 1232/2124/255 1229/2123/255 -f 1179/2062/58 1233/2125/58 1232/2124/58 -f 1181/2071/187 1221/2126/187 1222/2122/187 -f 1189/2070/257 1223/2127/257 1221/2126/257 -f 1191/2115/259 1225/2128/259 1224/2129/259 -f 1190/2081/50 1224/2129/50 1223/2127/50 -f 1192/2110/260 1226/2079/260 1225/2130/260 -f 1220/2113/253 1230/2120/253 1234/2131/253 -f 1217/2073/258 1234/2131/258 1233/2125/258 -f 1251/2132/211 1247/2133/211 1250/2134/211 -f 1302/2135/32 1241/2136/32 1237/2137/32 -f 1254/2138/187 1250/2139/187 1249/2140/187 -f 1240/2141/23 1236/2142/23 1235/2143/23 -f 1237/2137/214 1241/2136/214 1239/2144/214 -f 1248/2145/175 1247/2146/175 1251/2147/175 -f 1245/2148/32 1243/2149/32 1244/2150/32 -f 1238/2151/139 1251/2152/139 1254/2153/139 -f 1245/2154/214 1250/2134/214 1247/2133/214 -f 1246/2155/187 1249/2140/187 1250/2156/187 -f 1244/2150/139 1248/2145/139 1249/2140/139 -f 1243/2157/175 1247/2158/175 1248/2145/175 -f 1249/2140/219 1248/2145/219 1252/2159/219 -f 1240/2141/139 1253/2160/139 1252/2161/139 -f 1256/2162/294 1258/2163/294 1257/2164/294 -f 1258/2163/187 1260/2165/187 1259/2166/187 -f 1260/2165/295 1262/2167/295 1261/2168/295 -f 1261/2169/296 1262/2170/296 1264/2171/296 -f 1265/2172/93 1266/2173/93 1256/2162/93 -f 1264/2171/175 1266/2173/175 1265/2172/175 -f 1268/2174/294 1270/2175/294 1269/2176/294 -f 1270/2175/187 1272/2177/187 1271/2178/187 -f 1272/2177/295 1274/2179/295 1273/2180/295 -f 1273/2181/296 1274/2182/296 1276/2183/296 -f 1277/2184/93 1278/2185/93 1268/2174/93 -f 1276/2183/175 1278/2185/175 1277/2184/175 -f 1280/2186/32 1292/2187/32 1291/2188/32 -f 1157/2189/218 1161/2016/218 1282/2190/218 -f 1162/2191/215 1158/2011/215 1280/2192/215 -f 1162/2191/187 1281/2193/187 1282/2194/187 -f 1286/2195/214 1290/2196/214 1287/2197/214 -f 1279/2198/175 1283/2199/175 1284/2200/175 -f 1282/2201/214 1286/2195/214 1283/2202/214 -f 1281/2203/187 1285/2204/187 1286/2205/187 -f 1288/2206/301 1296/2207/301 1297/2208/301 -f 1285/2204/302 1289/2209/302 1290/2210/302 -f 1284/2200/139 1288/2206/139 1289/2209/139 -f 1283/2199/303 1287/2211/303 1288/2206/303 -f 1298/2212/214 1302/2213/214 1299/2214/214 -f 1281/2215/304 1291/2188/304 1293/2216/304 -f 1284/2217/305 1294/2218/305 1292/2187/305 -f 1285/2219/23 1293/2220/23 1294/2218/23 -f 1287/2221/175 1295/2222/175 1296/2207/175 -f 1290/2196/306 1298/2212/306 1295/2223/306 -f 1290/2224/187 1289/2209/187 1297/2208/187 -f 1242/2225/32 1301/2226/32 1300/2227/32 -f 1297/2228/187 1301/2229/187 1302/2230/187 -f 1296/2231/139 1300/2232/139 1301/2229/139 -f 1295/2233/175 1299/2234/175 1300/2232/175 -f 1254/2235/187 1239/2144/187 1301/2236/187 -f 1251/2237/175 1300/2238/175 1235/2143/175 -f 1304/2239/307 1306/2240/307 1305/2241/307 -f 1306/2240/308 1308/2242/308 1307/2243/308 -f 1308/2242/309 1310/2244/309 1309/2245/309 -f 1310/2244/310 1312/2246/310 1311/2247/310 -f 1312/2248/311 1314/2249/311 1313/2250/311 -f 1314/2249/312 1316/2251/312 1315/2252/312 -f 1318/2253/313 1304/2239/313 1303/2254/313 -f 1316/2251/314 1318/2253/314 1317/2255/314 -f 1307/2243/32 1309/2245/32 1338/2256/32 -f 1320/2257/307 1322/2258/307 1321/2259/307 -f 1322/2258/308 1324/2260/308 1323/2261/308 -f 1324/2260/309 1326/2262/309 1325/2263/309 -f 1326/2262/310 1328/2264/310 1327/2265/310 -f 1328/2266/311 1330/2267/311 1329/2268/311 -f 1330/2267/312 1332/2269/312 1331/2270/312 -f 1334/2271/313 1320/2257/313 1319/2272/313 -f 1332/2269/314 1334/2271/314 1333/2273/314 -f 1331/2270/32 1357/2274/32 1356/2275/32 -f 1338/2276/310 1339/2277/310 1347/2278/310 -f 1313/2250/32 1315/2252/32 1341/2279/32 -f 1311/2247/32 1339/2280/32 1338/2281/32 -f 1317/2255/32 1342/2282/32 1341/2283/32 -f 1307/2243/32 1337/2284/32 1336/2285/32 -f 1311/2286/32 1313/2250/32 1340/2287/32 -f 1303/2254/32 1335/2288/32 1342/2289/32 -f 1303/2254/32 1305/2241/32 1336/2290/32 -f 1356/2291/311 1364/2292/311 1363/2293/311 -f 1336/2294/308 1337/2295/308 1345/2296/308 -f 1342/2297/314 1350/2298/314 1349/2299/314 -f 1340/2300/311 1348/2301/311 1347/2302/311 -f 1337/2295/309 1338/2276/309 1346/2303/309 -f 1336/2294/307 1344/2304/307 1343/2305/307 -f 1335/2306/313 1343/2305/313 1350/2298/313 -f 1341/2307/312 1349/2299/312 1348/2301/312 -f 1327/2265/32 1355/2308/32 1354/2309/32 -f 1333/2273/32 1358/2310/32 1357/2311/32 -f 1321/2259/32 1323/2261/32 1353/2312/32 -f 1327/2313/32 1329/2268/32 1356/2314/32 -f 1319/2272/32 1351/2315/32 1358/2316/32 -f 1319/2272/32 1321/2259/32 1352/2317/32 -f 1323/2261/32 1325/2263/32 1354/2318/32 -f 1354/2319/309 1362/2320/309 1361/2321/309 -f 1352/2322/307 1360/2323/307 1359/2324/307 -f 1351/2325/313 1359/2324/313 1366/2326/313 -f 1357/2327/312 1365/2328/312 1364/2292/312 -f 1355/2329/310 1363/2330/310 1362/2320/310 -f 1353/2331/308 1361/2321/308 1360/2323/308 -f 1358/2332/314 1366/2326/314 1365/2328/314 -f 1377/2333/175 1382/2334/175 1380/2335/175 -f 1369/2336/175 1374/2337/175 1372/2338/175 -f 1370/2339/23 1373/2340/23 1374/2337/23 -f 1368/2341/187 1371/2342/187 1373/2343/187 -f 1367/2344/32 1372/2338/32 1371/2342/32 -f 1378/2345/23 1381/2346/23 1382/2334/23 -f 1376/2347/187 1379/2348/187 1381/2349/187 -f 1375/2350/32 1380/2335/32 1379/2348/32 -f 1385/2351/175 1390/2352/175 1388/2353/175 -f 1386/2354/23 1389/2355/23 1390/2352/23 -f 1384/2356/187 1387/2357/187 1389/2358/187 -f 1383/2359/32 1388/2353/32 1387/2357/32 -f 1394/2360/175 1393/2361/175 1391/2362/175 -f 1398/2363/32 1397/2364/32 1393/2365/32 -f 1396/2366/187 1395/2367/187 1397/2368/187 -f 1392/2369/23 1391/2370/23 1395/2371/23 -f 1397/2364/32 1401/2372/32 1399/2373/32 -f 1398/2374/139 1394/2375/139 1392/2376/139 -f 1399/2373/214 1401/2372/214 1402/2377/214 -f 1395/2371/23 1391/2370/23 1400/2378/23 -f 1395/2367/315 1402/2377/315 1401/2372/315 -f 1393/2361/316 1399/2373/316 1400/2378/316 -f 1407/2379/317 1403/2380/317 1411/2381/317 -f 1411/2381/318 1415/2382/318 1416/2383/318 -f 1407/2384/187 1409/2385/187 1413/2386/187 -f 1408/2387/318 1404/2388/318 1403/2389/318 -f 1409/2390/317 1410/2391/317 1414/2392/317 -f 1418/2393/319 1417/2394/319 1416/2383/319 -f 1409/2385/320 1405/2395/320 1412/2396/320 -f 1412/2396/175 1405/2395/175 1403/2397/175 -f 1403/2398/317 1405/2399/317 1414/2400/317 -f 1409/2401/317 1407/2402/317 1406/2403/317 -f 1414/2392/320 1410/2391/320 1417/2394/320 -f 1410/2404/187 1406/2403/187 1416/2383/187 -f 1414/2400/175 1418/2393/175 1415/2382/175 -f 3/24/1 1/1/1 4/3/1 -f 3/24/2 4/3/2 5/5/2 -f 5/26/3 6/6/3 7/8/3 -f 7/8/4 8/7/4 9/10/4 -f 9/10/5 10/9/5 11/12/5 -f 13/28/6 11/12/6 14/13/6 -f 15/15/7 16/14/7 1/1/7 -f 13/28/8 14/13/8 15/15/8 -f 13/28/9 15/15/9 23/17/9 -f 31/2405/8 23/17/8 32/18/8 -f 3/24/10 5/5/10 18/20/10 -f 21/2406/11 9/10/11 22/21/11 -f 15/15/12 1/1/12 24/23/12 -f 17/2407/13 1/1/13 18/25/13 -f 19/37/14 5/26/14 20/27/14 -f 22/2408/15 11/12/15 23/29/15 -f 7/8/16 9/10/16 20/31/16 -f 25/2409/17 33/32/17 49/34/17 -f 21/2406/5 22/21/5 29/36/5 -f 27/2410/3 19/37/3 28/38/3 -f 17/2407/1 18/25/1 25/40/1 -f 24/23/7 17/22/7 32/42/7 -f 22/2408/6 23/29/6 30/44/6 -f 20/31/4 21/30/4 28/46/4 -f 26/123/2 18/20/2 27/47/2 -f 40/2411/7 33/48/7 48/50/7 -f 31/2412/18 32/51/18 39/53/18 -f 29/95/19 30/54/19 37/56/19 -f 27/126/20 28/57/20 35/59/20 -f 25/2409/21 26/60/21 33/32/21 -f 32/2413/22 56/62/22 40/64/22 -f 32/42/7 25/41/7 56/66/7 -f 31/2412/23 39/53/23 55/68/23 -f 43/2414/24 44/69/24 51/71/24 -f 38/2415/6 39/72/6 46/74/6 -f 36/2416/4 37/75/4 44/77/4 -f 42/2417/2 34/78/2 43/80/2 -f 39/2418/8 40/81/8 47/67/8 -f 37/2419/5 38/82/5 45/84/5 -f 43/2414/3 35/85/3 44/69/3 -f 41/33/1 33/87/1 42/89/1 -f 63/103/9 55/90/9 64/92/9 -f 41/33/25 42/89/25 49/34/25 -f 37/56/26 45/84/26 29/95/26 -f 29/45/4 53/96/4 28/46/4 -f 30/2420/27 54/98/27 38/99/27 -f 30/44/6 31/43/6 54/101/6 -f 55/68/28 47/67/28 56/62/28 -f 53/94/29 45/84/29 54/98/29 -f 64/92/30 57/111/30 58/110/30 -f 58/110/30 59/108/30 64/92/30 -f 60/102/30 61/118/30 62/106/30 -f 62/106/30 63/103/30 60/102/30 -f 64/92/30 59/108/30 60/102/30 -f 61/118/11 53/104/11 62/106/11 -f 51/2421/14 52/107/14 59/108/14 -f 49/2422/13 50/109/13 57/111/13 -f 64/92/12 56/112/12 57/111/12 -f 62/106/15 54/114/15 63/103/15 -f 60/102/16 52/116/16 61/118/16 -f 58/110/10 50/119/10 59/108/10 -f 27/47/2 51/121/2 26/123/2 -f 42/89/31 34/124/31 50/93/31 -f 43/2414/32 51/71/32 35/59/32 -f 36/2423/33 28/127/33 44/69/33 -f 67/131/34 65/128/34 68/130/34 -f 69/147/35 67/131/35 70/132/35 -f 69/153/36 70/133/36 71/135/36 -f 71/135/37 72/134/37 73/137/37 -f 73/137/38 74/136/38 75/139/38 -f 77/143/39 75/139/39 78/140/39 -f 65/128/40 79/141/40 66/129/40 -f 77/143/41 78/140/41 79/141/41 -f 87/2424/42 77/143/42 88/144/42 -f 87/2424/41 88/144/41 95/146/41 -f 82/2425/43 67/131/43 83/148/43 -f 85/2426/44 73/137/44 86/149/44 -f 79/141/45 65/128/45 88/151/45 -f 81/166/46 65/128/46 82/152/46 -f 83/2427/47 69/153/47 84/154/47 -f 75/139/48 77/143/48 86/156/48 -f 71/135/49 73/137/49 84/158/49 -f 97/190/50 105/159/50 89/161/50 -f 85/2426/38 86/149/38 93/163/38 -f 83/2427/36 84/154/36 91/165/36 -f 89/2428/34 81/166/34 90/167/34 -f 88/151/40 81/150/40 96/169/40 -f 86/156/39 87/155/39 94/171/39 -f 84/158/37 85/157/37 92/173/37 -f 82/2425/35 83/148/35 90/175/35 -f 104/2429/40 97/176/40 112/178/40 -f 103/2430/51 95/179/51 104/181/51 -f 93/224/52 94/182/52 101/184/52 -f 91/251/53 92/185/53 99/187/53 -f 89/161/54 90/188/54 97/190/54 -f 96/2431/55 120/191/55 104/193/55 -f 89/168/40 113/194/40 96/169/40 -f 103/2430/23 111/196/23 95/179/23 -f 115/250/56 107/198/56 116/200/56 -f 110/2432/39 102/201/39 111/203/39 -f 108/2433/37 100/204/37 109/206/37 -f 106/2434/35 98/207/35 107/209/35 -f 103/2435/41 104/210/41 111/196/41 -f 109/222/38 101/211/38 110/213/38 -f 107/198/36 99/214/36 108/199/36 -f 97/2436/34 98/216/34 105/159/34 -f 119/2437/42 120/218/42 127/220/42 -f 113/160/57 105/159/57 114/221/57 -f 101/184/58 109/222/58 93/224/58 -f 92/173/37 93/172/37 116/226/37 -f 94/2438/59 118/227/59 102/228/59 -f 94/171/39 95/170/39 118/230/39 -f 119/197/60 111/196/60 120/191/60 -f 109/222/321 110/213/321 117/223/321 -f 128/219/62 121/239/62 122/233/62 -f 122/233/62 123/245/62 124/231/62 -f 124/231/62 125/235/62 126/232/62 -f 126/232/62 127/220/62 128/219/62 -f 128/219/62 122/233/62 126/232/62 -f 117/2439/44 118/234/44 125/235/44 -f 123/245/47 115/236/47 124/231/47 -f 113/2440/46 114/238/46 121/239/46 -f 120/2441/45 113/240/45 128/219/45 -f 126/232/48 118/241/48 127/220/48 -f 116/2442/49 117/243/49 124/231/49 -f 114/2443/43 115/244/43 122/233/43 -f 90/175/35 91/174/35 114/247/35 -f 114/221/63 106/217/63 90/249/63 -f 107/198/32 115/250/32 99/187/32 -f 92/2444/64 116/200/64 100/252/64 -f 131/256/65 129/253/65 132/255/65 -f 133/271/66 131/256/66 134/257/66 -f 133/2445/67 134/258/67 135/260/67 -f 135/260/68 136/259/68 137/262/68 -f 139/264/69 137/262/69 140/263/69 -f 141/280/70 139/264/70 142/265/70 -f 143/267/71 144/266/71 129/253/71 -f 141/280/72 142/265/72 143/267/72 -f 141/280/73 143/267/73 151/269/73 -f 159/2446/72 151/269/72 160/270/72 -f 146/2447/74 131/256/74 147/272/74 -f 149/2448/75 137/262/75 150/273/75 -f 143/267/76 129/253/76 152/275/76 -f 129/253/77 131/256/77 145/277/77 -f 133/2445/78 135/260/78 147/279/78 -f 150/293/79 139/264/79 151/281/79 -f 148/295/80 135/260/80 149/282/80 -f 161/313/81 169/283/81 153/285/81 -f 149/2448/69 150/273/69 157/287/69 -f 155/2449/67 147/279/67 156/288/67 -f 145/277/65 146/276/65 153/290/65 -f 152/275/71 145/274/71 160/292/71 -f 158/356/70 150/293/70 159/294/70 -f 156/2450/68 148/295/68 157/296/68 -f 146/2447/66 147/272/66 154/298/66 -f 168/2451/71 161/299/71 176/301/71 -f 159/2452/82 160/302/82 167/304/82 -f 157/349/322 158/305/322 165/307/322 -f 155/379/84 156/308/84 163/310/84 -f 153/285/323 154/311/323 161/313/323 -f 160/2453/86 184/314/86 168/316/86 -f 160/292/71 153/291/71 184/318/71 -f 159/2452/23 167/304/23 183/320/23 -f 171/339/87 172/321/87 179/323/87 -f 174/2454/70 166/324/70 175/326/70 -f 172/2455/68 164/327/68 173/329/68 -f 170/2456/66 162/330/66 171/332/66 -f 175/319/72 167/333/72 176/315/72 -f 173/347/69 165/335/69 174/337/69 -f 163/2457/67 164/338/67 171/339/67 -f 169/283/65 161/340/65 170/342/65 -f 191/370/73 183/343/73 192/345/73 -f 169/283/88 170/342/88 177/284/88 -f 165/307/89 173/347/89 157/349/89 -f 156/2450/68 157/296/68 180/351/68 -f 166/2458/90 158/352/90 174/337/90 -f 159/294/70 183/354/70 158/356/70 -f 175/319/91 176/315/91 183/320/91 -f 181/348/92 173/347/92 182/353/92 -f 192/345/93 185/367/93 186/359/93 -f 186/359/93 187/374/93 188/357/93 -f 188/357/93 189/372/93 190/358/93 -f 190/358/93 191/370/93 192/345/93 -f 192/345/93 186/359/93 190/358/93 -f 189/372/75 181/360/75 190/358/75 -f 187/374/78 179/362/78 188/357/78 -f 185/367/77 177/364/77 186/359/77 -f 184/2459/76 177/366/76 192/345/76 -f 190/358/79 182/368/79 191/370/79 -f 180/2460/80 181/371/80 188/357/80 -f 178/2461/74 179/373/74 186/359/74 -f 154/298/66 155/297/66 178/376/66 -f 178/346/94 170/342/94 154/378/94 -f 179/323/32 155/379/32 171/339/32 -f 164/2462/95 156/380/95 172/321/95 -f 195/384/96 193/381/96 196/383/96 -f 197/449/97 195/384/97 198/385/97 -f 197/449/98 198/385/98 199/387/98 -f 201/445/99 199/387/99 202/388/99 -f 201/445/100 202/388/100 203/390/100 -f 205/396/101 203/390/101 206/391/101 -f 211/2463/102 198/385/102 209/392/102 -f 207/448/103 208/393/103 193/381/103 -f 207/448/104 205/394/104 208/393/104 -f 238/464/105 203/390/105 239/397/105 -f 213/407/106 212/398/106 221/400/106 -f 204/389/107 202/388/107 214/402/107 -f 210/2464/108 194/382/108 216/403/108 -f 209/2465/109 196/383/109 210/404/109 -f 212/417/110 200/386/110 211/405/110 -f 215/2466/111 206/391/111 214/406/111 -f 202/388/112 200/386/112 213/407/112 -f 208/393/113 206/395/113 216/409/113 -f 218/441/114 224/410/114 226/412/114 -f 211/2463/106 209/392/106 219/414/106 -f 224/2467/106 216/409/106 223/415/106 -f 222/2468/106 214/402/106 221/416/106 -f 220/2469/106 212/417/106 219/418/106 -f 209/2465/106 210/404/106 217/420/106 -f 210/2464/106 216/403/106 218/422/106 -f 215/2466/106 214/406/106 223/424/106 -f 227/2470/106 225/2471/106 226/427/106 -f 226/427/106 232/2472/106 231/425/106 -f 231/425/106 230/2473/106 229/426/106 -f 229/426/106 228/2474/106 227/2470/106 -f 227/2470/106 226/427/106 229/426/106 -f 231/2475/115 223/428/115 230/430/115 -f 221/439/116 220/431/116 229/433/116 -f 227/440/117 219/434/117 225/436/117 -f 232/411/324 224/410/324 231/438/324 -f 222/429/119 221/439/119 230/430/119 -f 220/431/120 219/434/120 228/432/120 -f 217/435/121 218/441/121 225/436/121 -f 247/2476/104 239/442/104 248/444/104 -f 199/387/122 201/445/122 236/447/122 -f 205/394/123 207/448/123 239/442/123 -f 234/2477/124 195/384/124 235/450/124 -f 201/445/125 203/390/125 237/452/125 -f 240/462/126 207/448/126 233/453/126 -f 193/381/127 195/384/127 233/455/127 -f 235/2478/128 197/449/128 236/456/128 -f 237/452/100 238/451/100 245/458/100 -f 235/2478/98 236/456/98 243/460/98 -f 241/2479/96 233/455/96 242/461/96 -f 248/2480/103 240/462/103 241/463/103 -f 246/2481/101 238/464/101 247/465/101 -f 236/447/99 237/446/99 244/467/99 -f 234/2477/97 235/450/97 242/469/97 -f 249/543/129 250/470/129 251/472/129 -f 251/472/130 252/471/130 253/474/130 -f 253/474/131 254/473/131 255/476/131 -f 255/476/132 256/475/132 257/478/132 -f 257/478/133 258/477/133 259/480/133 -f 259/480/134 260/479/134 261/482/134 -f 267/2482/135 254/473/135 265/483/135 -f 249/543/136 263/484/136 250/470/136 -f 261/2483/137 262/486/137 263/484/137 -f 259/480/138 261/482/138 294/488/138 -f 277/2484/139 269/489/139 276/491/139 -f 260/479/140 258/477/140 270/493/140 -f 266/513/141 250/470/141 272/494/141 -f 252/471/142 250/470/142 265/496/142 -f 268/510/143 256/475/143 267/497/143 -f 262/481/144 260/479/144 271/499/144 -f 269/489/145 258/477/145 268/490/145 -f 272/506/146 264/485/146 271/500/146 -f 282/533/147 274/501/147 288/503/147 -f 267/2482/139 265/483/139 275/505/139 -f 280/2485/139 272/506/139 279/507/139 -f 270/493/139 269/492/139 278/509/139 -f 276/2486/139 268/510/139 275/511/139 -f 273/2487/139 265/496/139 274/512/139 -f 274/2488/139 266/513/139 280/514/139 -f 271/499/139 270/498/139 279/516/139 -f 283/519/139 281/2489/139 282/2490/139 -f 282/2490/139 288/2491/139 287/517/139 -f 287/517/139 286/2492/139 285/518/139 -f 285/518/139 284/2493/139 283/519/139 -f 283/519/139 282/2490/139 287/517/139 -f 279/2494/148 278/520/148 287/522/148 -f 285/531/149 277/523/149 284/525/149 -f 283/532/150 275/526/150 281/528/150 -f 288/503/151 280/502/151 287/530/151 -f 278/520/152 277/523/152 286/521/152 -f 276/524/153 275/526/153 284/525/153 -f 273/527/154 274/501/154 281/528/154 -f 295/538/137 296/534/137 303/536/137 -f 292/2495/155 255/476/155 293/537/155 -f 261/2483/156 263/484/156 295/538/156 -f 251/472/157 253/474/157 290/540/157 -f 257/478/158 259/480/158 293/542/158 -f 296/2496/159 263/484/159 289/544/159 -f 249/543/160 251/472/160 289/546/160 -f 253/474/161 255/476/161 291/548/161 -f 293/542/133 294/541/133 301/550/133 -f 291/548/131 292/547/131 299/552/131 -f 289/546/129 290/545/129 297/554/129 -f 296/2496/136 289/544/136 304/556/136 -f 294/488/134 295/487/134 302/558/134 -f 292/2495/132 293/537/132 300/560/132 -f 290/540/130 291/539/130 298/562/130 -f 305/578/129 306/563/129 307/565/129 -f 309/633/130 307/565/130 310/566/130 -f 309/633/131 310/566/131 311/568/131 -f 311/568/132 312/567/132 313/570/132 -f 313/570/133 314/569/133 315/572/133 -f 315/572/134 316/571/134 317/574/134 -f 310/566/135 308/564/135 323/576/135 -f 319/631/136 320/577/136 305/578/136 -f 319/631/137 317/579/137 320/577/137 -f 350/2497/138 315/572/138 351/581/138 -f 325/2498/139 324/582/139 333/584/139 -f 316/571/140 314/569/140 326/586/140 -f 322/2499/141 306/563/141 328/587/141 -f 308/564/142 306/563/142 321/589/142 -f 324/602/143 312/567/143 323/590/143 -f 318/573/144 316/571/144 327/592/144 -f 325/2498/145 314/569/145 324/582/145 -f 328/599/146 320/577/146 327/593/146 -f 338/625/147 330/594/147 344/596/147 -f 323/576/139 321/575/139 331/598/139 -f 336/2500/139 328/599/139 335/600/139 -f 334/2501/139 326/586/139 333/601/139 -f 332/2502/139 324/602/139 331/603/139 -f 329/2503/139 321/589/139 330/604/139 -f 322/2499/139 328/587/139 330/606/139 -f 327/592/139 326/591/139 335/608/139 -f 339/611/139 337/2504/139 338/2505/139 -f 338/2505/139 344/2506/139 343/609/139 -f 343/609/139 342/2507/139 341/610/139 -f 341/610/139 340/2508/139 339/611/139 -f 339/611/139 338/2505/139 343/609/139 -f 335/2509/148 334/612/148 343/614/148 -f 341/623/149 333/615/149 340/617/149 -f 339/624/150 331/618/150 337/620/150 -f 344/596/151 336/595/151 343/622/151 -f 334/612/152 333/615/152 342/613/152 -f 332/616/153 331/618/153 340/617/153 -f 329/619/154 330/594/154 337/620/154 -f 351/632/137 352/626/137 359/628/137 -f 311/568/325 313/570/325 348/630/325 -f 317/579/156 319/631/156 351/632/156 -f 307/565/157 309/633/157 346/635/157 -f 313/570/158 315/572/158 349/637/158 -f 319/631/159 305/578/159 352/639/159 -f 305/578/160 307/565/160 345/641/160 -f 347/2510/161 309/633/161 348/642/161 -f 349/637/133 350/636/133 357/644/133 -f 347/2510/131 348/642/131 355/646/131 -f 345/641/129 346/640/129 353/648/129 -f 352/639/136 345/638/136 360/650/136 -f 350/2497/134 351/581/134 358/652/134 -f 348/630/132 349/629/132 356/654/132 -f 346/635/130 347/634/130 354/656/130 -f 386/2511/162 362/657/162 392/659/162 -f 373/680/163 375/660/163 382/662/163 -f 365/676/162 363/663/162 366/665/162 -f 380/685/164 381/666/164 390/668/164 -f 365/676/326 367/669/326 361/671/326 -f 365/676/166 366/665/166 367/669/166 -f 387/2512/167 383/673/167 385/675/167 -f 362/657/168 363/663/168 361/658/168 -f 369/687/169 367/669/169 370/677/169 -f 361/671/166 379/670/166 392/679/166 -f 371/684/170 373/680/170 381/682/170 -f 369/687/164 370/677/164 371/684/164 -f 369/687/196 371/684/196 380/685/196 -f 371/684/172 372/683/172 373/680/172 -f 379/702/173 367/669/173 380/688/173 -f 382/662/174 383/661/174 388/690/174 -f 373/680/174 374/686/174 375/660/174 -f 397/712/175 372/692/175 396/694/175 -f 363/663/176 377/695/176 364/664/176 -f 377/695/167 375/697/167 378/696/167 -f 381/682/172 382/681/172 389/700/172 -f 384/704/177 377/695/177 362/701/177 -f 383/673/178 375/697/178 384/674/178 -f 391/2513/169 379/702/169 390/703/169 -f 385/2514/176 384/704/176 386/705/176 -f 396/2515/197 395/706/197 404/708/197 -f 364/719/175 378/709/175 394/711/175 -f 374/717/175 372/692/175 398/713/175 -f 395/720/175 368/714/175 393/716/175 -f 376/721/175 374/717/175 399/718/175 -f 393/716/175 366/715/175 394/711/175 -f 370/693/175 368/714/175 396/694/175 -f 378/709/175 376/721/175 400/710/175 -f 403/707/175 401/733/175 402/726/175 -f 402/726/175 408/728/175 403/707/175 -f 407/730/175 406/722/175 403/707/175 -f 405/723/175 404/708/175 403/707/175 -f 403/707/175 408/728/175 407/730/175 -f 401/733/180 393/724/180 402/726/180 -f 394/2516/181 400/727/181 402/726/181 -f 399/2517/182 398/729/182 407/730/182 -f 397/2518/183 396/731/183 405/723/183 -f 395/2519/184 393/732/184 403/707/184 -f 408/728/185 400/734/185 407/730/185 -f 398/2520/186 397/736/186 406/722/186 -f 410/789/176 409/737/176 434/739/176 -f 430/2521/175 421/740/175 431/742/175 -f 411/755/176 412/743/176 413/745/176 -f 428/787/172 429/746/172 438/748/172 -f 409/2522/175 413/745/175 427/750/175 -f 413/745/167 414/744/167 415/749/167 -f 435/775/166 431/752/166 433/754/166 -f 410/2523/175 411/755/175 409/756/175 -f 417/764/174 415/757/174 418/759/174 -f 409/737/167 427/760/167 440/738/167 -f 419/769/175 421/740/175 429/763/175 -f 419/769/172 417/764/172 420/765/172 -f 447/811/187 439/766/187 446/768/187 -f 417/764/175 419/769/175 428/771/175 -f 419/769/164 420/765/164 421/740/164 -f 415/757/175 417/764/175 427/774/175 -f 430/783/169 431/752/169 436/776/169 -f 423/741/169 421/740/169 424/777/169 -f 477/849/187 420/778/187 476/780/187 -f 425/782/162 426/781/162 411/755/162 -f 423/741/166 424/777/166 425/782/166 -f 429/746/164 430/783/164 437/747/164 -f 432/2524/175 425/782/175 410/784/175 -f 423/741/175 425/782/175 431/786/175 -f 427/2525/174 428/787/174 439/788/174 -f 432/753/162 410/789/162 433/754/162 -f 441/798/162 442/790/162 449/792/162 -f 437/2526/187 436/793/187 445/795/187 -f 443/805/187 435/796/187 441/798/187 -f 440/2527/187 439/799/187 448/801/187 -f 446/768/187 438/802/187 445/795/187 -f 436/2528/187 435/804/187 444/794/187 -f 433/2529/187 434/806/187 441/798/187 -f 434/2530/187 440/807/187 442/790/187 -f 464/2531/175 456/808/175 463/810/175 -f 450/791/176 442/790/176 456/808/176 -f 455/2532/174 447/811/174 454/812/174 -f 445/795/164 444/794/164 453/814/164 -f 451/815/166 443/805/166 449/792/166 -f 448/801/167 447/800/167 456/808/167 -f 446/768/172 445/795/172 454/812/172 -f 444/794/169 443/805/169 452/813/169 -f 467/835/166 459/816/166 465/818/166 -f 454/812/175 453/814/175 462/820/175 -f 460/2533/175 452/813/175 459/821/175 -f 457/2534/175 449/792/175 458/822/175 -f 458/2535/175 450/791/175 464/823/175 -f 455/2532/175 454/812/175 463/825/175 -f 461/2536/175 453/814/175 460/826/175 -f 451/815/175 449/792/175 459/828/175 -f 464/839/167 463/829/167 472/831/167 -f 462/841/172 461/832/172 470/834/172 -f 460/842/169 459/816/169 468/836/169 -f 457/817/162 458/837/162 465/818/162 -f 466/838/176 458/837/176 472/831/176 -f 471/2537/174 463/840/174 470/834/174 -f 469/833/164 461/832/164 468/836/164 -f 484/870/188 476/843/188 483/845/188 -f 412/856/187 426/846/187 474/848/187 -f 422/854/187 420/778/187 478/850/187 -f 416/857/187 414/851/187 475/853/187 -f 424/858/187 422/854/187 479/855/187 -f 473/852/187 414/851/187 474/848/187 -f 476/780/187 418/779/187 475/853/187 -f 480/847/187 426/846/187 479/855/187 -f 483/845/187 481/872/187 482/863/187 -f 482/863/187 488/865/187 483/845/187 -f 487/867/187 486/859/187 483/845/187 -f 485/860/187 484/870/187 483/845/187 -f 483/845/187 488/865/187 487/867/187 -f 481/872/189 473/861/189 482/863/189 -f 474/2538/190 480/864/190 482/863/190 -f 479/2539/191 478/866/191 487/867/191 -f 485/860/192 477/868/192 484/870/192 -f 475/2540/198 473/871/198 483/845/198 -f 480/2541/194 479/873/194 488/865/194 -f 478/2542/195 477/874/195 486/859/195 -f 514/2543/162 490/875/162 520/877/162 -f 501/898/163 503/878/163 510/880/163 -f 493/894/162 491/881/162 494/883/162 -f 508/903/164 509/884/164 518/886/164 -f 493/894/326 495/887/326 489/889/326 -f 493/894/166 494/883/166 495/887/166 -f 515/2544/167 511/891/167 513/893/167 -f 490/875/327 491/881/327 489/876/327 -f 497/905/169 495/887/169 498/895/169 -f 489/889/166 507/888/166 520/897/166 -f 499/902/170 501/898/170 509/900/170 -f 497/905/164 498/895/164 499/902/164 -f 497/905/196 499/902/196 508/903/196 -f 499/902/172 500/901/172 501/898/172 -f 507/919/173 495/887/173 508/906/173 -f 510/880/174 511/879/174 516/908/174 -f 503/878/174 501/898/174 504/909/174 -f 525/929/175 500/910/175 524/912/175 -f 491/881/176 505/913/176 492/882/176 -f 503/2545/167 504/915/167 505/913/167 -f 509/900/172 510/899/172 517/917/172 -f 512/921/177 505/913/177 490/918/177 -f 503/2545/178 505/913/178 511/891/178 -f 519/2546/169 507/919/169 518/920/169 -f 513/2547/176 512/921/176 514/922/176 -f 524/2548/197 523/923/197 532/925/197 -f 492/936/175 506/926/175 522/928/175 -f 502/934/175 500/910/175 526/930/175 -f 523/937/175 496/931/175 521/933/175 -f 504/938/175 502/934/175 527/935/175 -f 494/932/175 492/936/175 521/933/175 -f 498/911/175 496/931/175 524/912/175 -f 528/927/175 506/926/175 527/935/175 -f 531/924/175 529/952/175 530/943/175 -f 530/943/175 536/946/175 531/924/175 -f 535/948/175 534/939/175 531/924/175 -f 533/940/175 532/925/175 531/924/175 -f 531/924/175 536/946/175 535/948/175 -f 529/952/180 521/941/180 530/943/180 -f 530/943/181 522/944/181 536/946/181 -f 527/2549/182 526/947/182 535/948/182 -f 525/2550/183 524/949/183 533/940/183 -f 531/924/184 523/950/184 529/952/184 -f 536/946/185 528/953/185 535/948/185 -f 526/2551/186 525/955/186 534/939/186 -f 538/1008/176 537/956/176 562/958/176 -f 558/2552/175 549/959/175 559/961/175 -f 539/974/176 540/962/176 541/964/176 -f 556/1007/172 557/965/172 566/967/172 -f 537/2553/175 541/964/175 555/969/175 -f 541/964/167 542/963/167 543/968/167 -f 563/993/166 559/971/166 561/973/166 -f 538/2554/175 539/974/175 537/975/175 -f 545/983/174 543/976/174 546/978/174 -f 537/956/167 555/979/167 568/957/167 -f 557/2555/175 547/981/175 558/982/175 -f 547/981/172 545/983/172 548/984/172 -f 567/2556/187 566/985/187 575/987/187 -f 545/983/175 547/981/175 556/989/175 -f 547/981/164 548/984/164 549/959/164 -f 543/976/175 545/983/175 555/992/175 -f 558/1001/169 559/971/169 564/994/169 -f 551/960/169 549/959/169 552/995/169 -f 605/1069/187 548/996/187 604/998/187 -f 553/1000/162 554/999/162 539/974/162 -f 551/960/166 552/995/166 553/1000/166 -f 557/965/164 558/1001/164 565/966/164 -f 553/1000/175 539/974/175 560/1003/175 -f 551/960/175 553/1000/175 559/1005/175 -f 567/2557/174 555/1006/174 566/967/174 -f 560/972/162 538/1008/162 561/973/162 -f 569/1017/162 570/1009/162 577/1011/162 -f 565/2558/187 564/1012/187 573/1014/187 -f 571/1024/187 563/1015/187 569/1017/187 -f 568/2559/187 567/1018/187 576/1020/187 -f 574/986/187 566/1021/187 573/1014/187 -f 564/2560/187 563/1023/187 572/1013/187 -f 569/1017/187 561/1025/187 570/1009/187 -f 562/2561/187 568/1027/187 570/1009/187 -f 592/2562/175 584/1028/175 591/1030/175 -f 578/1010/176 570/1009/176 584/1028/176 -f 583/2563/174 575/987/174 582/1031/174 -f 573/1014/164 572/1013/164 581/1033/164 -f 579/1034/166 571/1024/166 577/1011/166 -f 576/1020/167 575/1019/167 584/1028/167 -f 574/986/172 573/1014/172 582/1031/172 -f 572/1013/169 571/1024/169 580/1032/169 -f 595/1055/166 587/1035/166 593/1037/166 -f 582/1031/175 581/1033/175 590/1039/175 -f 588/2564/175 580/1032/175 587/1040/175 -f 577/1011/175 578/1010/175 585/1042/175 -f 586/2565/175 578/1010/175 592/1043/175 -f 583/2563/175 582/1031/175 591/1045/175 -f 589/2566/175 581/1033/175 588/1046/175 -f 579/1034/175 577/1011/175 587/1048/175 -f 592/1059/167 591/1049/167 600/1051/167 -f 590/1061/172 589/1052/172 598/1054/172 -f 588/1062/169 587/1035/169 596/1056/169 -f 585/1036/162 586/1057/162 593/1037/162 -f 594/1058/176 586/1057/176 600/1051/176 -f 599/2567/174 591/1060/174 598/1054/174 -f 597/1053/164 589/1052/164 596/1056/164 -f 612/1090/188 604/1063/188 611/1065/188 -f 540/1076/187 554/1066/187 602/1068/187 -f 550/1074/187 548/996/187 606/1070/187 -f 544/1077/187 542/1071/187 603/1073/187 -f 552/1078/187 550/1074/187 607/1075/187 -f 542/1071/187 540/1076/187 601/1072/187 -f 604/998/187 546/997/187 603/1073/187 -f 554/1066/187 552/1078/187 608/1067/187 -f 611/1065/187 609/1083/187 610/1082/187 -f 610/1082/187 616/1085/187 611/1065/187 -f 615/1087/187 614/1079/187 611/1065/187 -f 613/1080/187 612/1090/187 611/1065/187 -f 611/1065/187 616/1085/187 615/1087/187 -f 601/2568/189 602/1081/189 609/1083/189 -f 602/2569/190 608/1084/190 610/1082/190 -f 607/2570/191 606/1086/191 615/1087/191 -f 613/1080/192 605/1088/192 612/1090/192 -f 603/2571/198 601/1091/198 611/1065/198 -f 616/1085/194 608/1092/194 615/1087/194 -f 606/2572/195 605/1094/195 614/1079/195 -f 617/1109/176 618/1095/176 619/1097/176 -f 619/1097/167 620/1096/167 621/1099/167 -f 621/1120/174 622/1100/174 623/1102/174 -f 623/1102/172 624/1101/172 625/1104/172 -f 627/1106/164 625/1104/164 628/1105/164 -f 629/1122/169 627/1106/169 630/1107/169 -f 631/1110/162 632/1108/162 617/1109/162 -f 629/1122/166 630/1107/166 631/1110/166 -f 629/1122/199 631/1110/199 639/1112/199 -f 639/1112/166 640/1111/166 647/1114/166 -f 619/1097/200 621/1099/200 634/1116/200 -f 637/1130/201 625/1104/201 638/1117/201 -f 640/2573/202 631/1110/202 633/1118/202 -f 633/1134/203 617/1109/203 634/1119/203 -f 635/1132/204 621/1120/204 636/1121/204 -f 627/1106/205 629/1122/205 638/1124/205 -f 623/1102/206 625/1104/206 636/1126/206 -f 649/1158/139 657/1127/139 641/1129/139 -f 645/2574/164 637/1130/164 646/1131/164 -f 643/2575/174 635/1132/174 644/1133/174 -f 641/2576/176 633/1134/176 642/1135/176 -f 640/2573/162 633/1118/162 648/1137/162 -f 638/1124/169 639/1123/169 646/1139/169 -f 636/1126/172 637/1125/172 644/1141/172 -f 634/1116/167 635/1115/167 642/1143/167 -f 656/2577/162 649/1144/162 664/1146/162 -f 647/2578/328 648/1147/328 655/1149/328 -f 645/1192/208 646/1150/208 653/1152/208 -f 643/1220/209 644/1153/209 651/1155/209 -f 641/1129/210 642/1156/210 649/1158/210 -f 648/2579/211 672/1159/211 656/1161/211 -f 648/1137/162 641/1136/162 672/1163/162 -f 647/2578/23 655/1149/23 671/1165/23 -f 659/2580/212 660/1166/212 667/1168/212 -f 654/2581/169 655/1169/169 662/1171/169 -f 652/2582/172 653/1172/172 660/1174/172 -f 650/2583/167 651/1175/167 658/1177/167 -f 655/2584/166 656/1178/166 663/1164/166 -f 661/1190/164 653/1179/164 662/1181/164 -f 659/2580/174 651/1182/174 660/1166/174 -f 649/2585/176 650/1184/176 657/1127/176 -f 671/2586/199 672/1186/199 679/1188/199 -f 665/1128/213 657/1127/213 666/1189/213 -f 653/1152/214 661/1190/214 645/1192/214 -f 644/1141/172 645/1140/172 668/1194/172 -f 654/2587/215 646/1195/215 662/1181/215 -f 646/1139/169 647/1138/169 670/1198/169 -f 671/1165/216 663/1164/216 672/1159/216 -f 661/1190/217 662/1181/217 669/1191/217 -f 680/1187/175 673/1209/175 674/1201/175 -f 674/1201/175 675/1205/175 676/1199/175 -f 676/1199/175 677/1203/175 678/1200/175 -f 678/1200/175 679/1188/175 680/1187/175 -f 680/1187/175 674/1201/175 678/1200/175 -f 669/2588/201 670/1202/201 677/1203/201 -f 667/2589/204 668/1204/204 675/1205/204 -f 673/1209/203 665/1206/203 674/1201/203 -f 672/2590/202 665/1208/202 680/1187/202 -f 678/1200/205 670/1210/205 679/1188/205 -f 676/1199/206 668/1212/206 677/1203/206 -f 674/1201/200 666/1214/200 675/1205/200 -f 642/1143/167 643/1142/167 666/1217/167 -f 658/1185/218 650/1218/218 666/1189/218 -f 659/2580/32 667/1168/32 651/1155/32 -f 652/2591/219 644/1221/219 660/1166/219 -f 683/1225/220 681/1222/220 684/1224/220 -f 685/1291/221 683/1225/221 686/1226/221 -f 685/1291/222 686/1226/222 687/1228/222 -f 687/1228/223 688/1227/223 689/1230/223 -f 691/1293/224 689/1230/224 692/1231/224 -f 691/1293/225 692/1231/225 693/1233/225 -f 686/1226/226 684/1224/226 699/1235/226 -f 681/1222/227 695/1236/227 682/1223/227 -f 695/1236/228 693/1238/228 696/1237/228 -f 691/1293/229 693/1233/229 726/1241/229 -f 701/1251/230 700/1242/230 709/1244/230 -f 702/1260/329 692/1231/329 701/1245/329 -f 698/2592/232 682/1223/232 704/1246/232 -f 697/1264/233 684/1224/233 698/1247/233 -f 700/1262/234 688/1227/234 699/1248/234 -f 694/1232/235 692/1231/235 703/1250/235 -f 690/1229/330 688/1227/330 701/1251/330 -f 704/1258/237 696/1237/237 703/1252/237 -f 714/1285/238 706/1253/238 720/1255/238 -f 699/1235/230 697/1234/230 707/1257/230 -f 712/2593/230 704/1258/230 711/1259/230 -f 710/2594/230 702/1260/230 709/1261/230 -f 708/2595/230 700/1262/230 707/1263/230 -f 705/2596/230 697/1264/230 706/1265/230 -f 698/2592/230 704/1246/230 706/1267/230 -f 711/2597/230 703/1250/230 710/1268/230 -f 715/1271/230 713/2598/230 719/1269/230 -f 714/2599/230 720/2600/230 719/1269/230 -f 719/1269/230 718/2601/230 717/2602/230 -f 717/2602/230 716/1270/230 719/1269/230 -f 713/2598/230 714/2599/230 719/1269/230 -f 711/2603/239 710/1272/239 719/1274/239 -f 709/1283/240 708/1275/240 717/1277/240 -f 707/1284/241 705/1278/241 715/1280/241 -f 712/1254/242 711/1281/242 720/1255/242 -f 710/1272/243 709/1283/243 718/1273/243 -f 716/1276/244 708/1275/244 715/1280/244 -f 705/1278/245 706/1253/245 713/1279/245 -f 735/2604/228 727/1286/228 736/1288/228 -f 687/1228/246 689/1230/246 724/1290/246 -f 693/1238/247 695/1236/247 727/1286/247 -f 722/2605/248 683/1225/248 723/1292/248 -f 725/1300/249 689/1230/249 726/1294/249 -f 695/1236/250 681/1222/250 728/1296/250 -f 681/1222/251 683/1225/251 721/1298/251 -f 723/2606/252 685/1291/252 724/1299/252 -f 733/2607/224 725/1300/224 734/1301/224 -f 723/2606/222 724/1299/222 731/1303/222 -f 729/2608/220 721/1298/220 730/1304/220 -f 728/1296/227 721/1295/227 736/1306/227 -f 726/1241/225 727/1240/225 734/1308/225 -f 724/1290/223 725/1289/223 732/1310/223 -f 722/2605/221 723/1292/221 730/1312/221 -f 762/2609/162 738/1313/162 768/1315/162 -f 758/2610/331 749/1316/331 759/1318/331 -f 741/1332/162 739/1319/162 742/1321/162 -f 756/2611/164 757/1322/164 766/1324/164 -f 741/1332/326 743/1325/326 737/1327/326 -f 741/1332/166 742/1321/166 743/1325/166 -f 763/2612/167 759/1329/167 761/1331/167 -f 738/1313/168 739/1319/168 737/1314/168 -f 745/1340/169 743/1325/169 746/1333/169 -f 737/1327/166 755/1326/166 768/1335/166 -f 747/1339/170 749/1316/170 757/1337/170 -f 745/1340/164 746/1333/164 747/1339/164 -f 756/2611/196 745/1340/196 757/1322/196 -f 747/1339/172 748/1338/172 749/1316/172 -f 755/1355/173 743/1325/173 756/1342/173 -f 758/2610/174 759/1318/174 764/1344/174 -f 751/1317/174 749/1316/174 752/1345/174 -f 748/1365/175 746/1346/175 773/1348/175 -f 739/1319/176 753/1349/176 740/1320/176 -f 751/2613/167 752/1351/167 753/1349/167 -f 757/1337/172 758/1336/172 765/1353/172 -f 760/1357/177 753/1349/177 738/1354/177 -f 751/2613/178 753/1349/178 759/1329/178 -f 767/2614/169 755/1355/169 766/1356/169 -f 761/2615/176 760/1357/176 762/1358/176 -f 780/1386/197 772/1359/197 779/1361/197 -f 770/1372/175 740/1362/175 776/1364/175 -f 750/1370/175 748/1365/175 774/1366/175 -f 771/1373/175 744/1367/175 769/1369/175 -f 752/1374/175 750/1370/175 775/1371/175 -f 742/1368/175 740/1362/175 769/1369/175 -f 746/1346/175 744/1367/175 772/1347/175 -f 776/1364/175 754/1363/175 775/1371/175 -f 779/1361/175 777/1388/175 778/1379/175 -f 778/1379/175 784/1382/175 779/1361/175 -f 783/1391/175 782/1375/175 779/1361/175 -f 781/1376/175 780/1386/175 779/1361/175 -f 779/1361/175 784/1382/175 783/1391/175 -f 777/1388/180 769/1377/180 778/1379/180 -f 778/1379/181 770/1380/181 784/1382/181 -f 783/1391/182 775/1383/182 782/1375/182 -f 773/2616/183 772/1385/183 781/1376/183 -f 771/2617/184 769/1387/184 779/1361/184 -f 784/1382/185 776/1389/185 783/1391/185 -f 774/2618/186 773/1392/186 782/1375/186 -f 810/1447/176 786/1393/176 816/1395/176 -f 806/2619/175 797/1396/175 807/1398/175 -f 787/1438/176 788/1399/176 789/1401/176 -f 804/1446/172 805/1402/172 814/1404/172 -f 789/1401/175 791/1405/175 785/1407/175 -f 791/1405/167 789/1401/167 792/1408/167 -f 811/1431/166 807/1409/166 809/1411/166 -f 787/1438/175 789/1401/175 786/1413/175 -f 791/2620/174 792/1414/174 793/1416/174 -f 785/1394/167 803/1417/167 816/1395/167 -f 795/1425/175 797/1396/175 805/1420/175 -f 795/1425/172 793/1416/172 796/1421/172 -f 815/2621/187 814/1422/187 823/1424/187 -f 793/1416/175 795/1425/175 804/1427/175 -f 795/1425/164 796/1421/164 797/1396/164 -f 791/2620/175 793/1416/175 803/1430/175 -f 806/1440/169 807/1409/169 812/1432/169 -f 799/1397/169 797/1396/169 800/1433/169 -f 796/1511/187 794/1434/187 853/1436/187 -f 801/1439/162 802/1437/162 787/1438/162 -f 799/1397/166 800/1433/166 801/1439/166 -f 805/1402/164 806/1440/164 813/1403/164 -f 801/1439/175 787/1438/175 808/1442/175 -f 799/1397/175 801/1439/175 807/1444/175 -f 815/2622/174 803/1445/174 814/1404/174 -f 808/1410/162 786/1393/162 809/1411/162 -f 817/1456/162 818/1448/162 825/1450/162 -f 821/1461/187 813/1451/187 820/1453/187 -f 819/1463/187 811/1454/187 817/1456/187 -f 824/1467/187 816/1457/187 823/1459/187 -f 814/2623/187 813/1460/187 822/1423/187 -f 812/2624/187 811/1462/187 820/1453/187 -f 809/2625/187 810/1464/187 817/1456/187 -f 818/1448/187 810/1465/187 824/1467/187 -f 832/1471/175 831/1468/175 840/1470/175 -f 826/1449/176 818/1448/176 832/1471/176 -f 831/1485/174 823/1424/174 830/1472/174 -f 821/1461/164 820/1453/164 829/1474/164 -f 827/1475/166 819/1463/166 825/1450/166 -f 824/1467/167 823/1459/167 832/1471/167 -f 822/1423/172 821/1461/172 830/1472/172 -f 820/1453/169 819/1463/169 828/1473/169 -f 843/1497/166 835/1476/166 841/1478/166 -f 838/2626/175 830/1472/175 837/1479/175 -f 836/2627/175 828/1473/175 835/1480/175 -f 825/1450/175 826/1449/175 833/1482/175 -f 826/1449/175 832/1471/175 834/1484/175 -f 839/2628/175 831/1485/175 838/1486/175 -f 829/1474/175 828/1473/175 837/1488/175 -f 827/1475/175 825/1450/175 835/1490/175 -f 840/1501/167 839/1491/167 848/1493/167 -f 838/1502/172 837/1494/172 846/1496/172 -f 836/1504/169 835/1476/169 844/1498/169 -f 833/1477/162 834/1499/162 841/1478/162 -f 834/1499/176 840/1501/176 842/1500/176 -f 839/2629/174 838/1502/174 847/1503/174 -f 845/1495/164 837/1494/164 844/1498/164 -f 860/1531/188 852/1505/188 859/1507/188 -f 850/1518/187 788/1508/187 856/1510/187 -f 798/1516/187 796/1511/187 854/1512/187 -f 792/1519/187 790/1513/187 851/1515/187 -f 800/1520/187 798/1516/187 855/1517/187 -f 790/1513/187 788/1508/187 849/1514/187 -f 794/1434/187 792/1519/187 852/1435/187 -f 856/1510/187 802/1509/187 855/1517/187 -f 859/1507/187 857/1525/187 858/1524/187 -f 858/1524/187 864/1527/187 859/1507/187 -f 863/1529/187 862/1521/187 859/1507/187 -f 861/1522/187 860/1531/187 859/1507/187 -f 859/1507/187 864/1527/187 863/1529/187 -f 849/2630/189 850/1523/189 857/1525/189 -f 850/2631/190 856/1526/190 858/1524/190 -f 855/2632/332 854/1528/332 863/1529/332 -f 853/2633/192 852/1530/192 861/1522/192 -f 851/2634/198 849/1532/198 859/1507/198 -f 856/2635/194 855/1533/194 864/1527/194 -f 862/1521/195 854/1534/195 861/1522/195 -f 899/1552/58 900/1536/58 903/1538/58 -f 889/2636/23 867/1539/23 900/1536/23 -f 867/1599/253 868/1541/253 869/1543/253 -f 891/1566/254 892/1544/254 911/1546/254 -f 879/2637/23 881/1547/23 895/1549/23 -f 869/1543/62 870/1542/62 871/1551/62 -f 898/1555/255 899/1552/255 904/1553/255 -f 883/2638/23 885/1554/23 897/1556/23 -f 871/1551/254 872/1550/254 873/1558/254 -f 896/1548/256 897/1556/256 906/1560/256 -f 899/1552/23 887/1561/23 900/1536/23 -f 875/2639/257 873/1558/257 876/1563/257 -f 900/1536/258 866/1540/258 901/1537/258 -f 869/2640/23 871/1565/23 865/1567/23 -f 875/2639/50 876/1563/50 877/1569/50 -f 894/1602/259 895/1570/259 908/1572/259 -f 873/2641/23 875/1573/23 892/1544/23 -f 879/2642/259 877/1569/259 880/1575/259 -f 892/1544/257 893/1574/257 910/1545/257 -f 866/1540/23 867/1577/23 865/1567/23 -f 879/2643/260 880/1579/260 881/1581/260 -f 865/1567/62 891/1566/62 912/1582/62 -f 894/1602/23 877/1583/23 895/1570/23 -f 881/1581/256 882/1580/256 883/1586/256 -f 908/1572/32 907/1571/32 920/1588/32 -f 881/2644/23 883/1589/23 896/1548/23 -f 883/1586/261 884/1585/261 885/1591/261 -f 871/2645/23 873/1592/23 891/1566/23 -f 897/1556/261 898/1555/261 905/1559/261 -f 885/1591/255 886/1590/255 887/1594/255 -f 972/1722/32 890/1595/32 971/1597/32 -f 889/1600/258 890/1598/258 867/1599/258 -f 887/1594/58 888/1593/58 889/1600/58 -f 866/1540/253 865/1567/253 902/1564/253 -f 875/2646/23 877/1601/23 893/1574/23 -f 898/1555/23 885/1603/23 899/1552/23 -f 893/1574/50 894/1602/50 909/1576/50 -f 895/1549/260 896/1548/260 907/1605/260 -f 920/1638/259 919/1606/259 932/1608/259 -f 905/1559/32 904/1553/32 917/1610/32 -f 924/2647/32 912/1582/32 923/1611/32 -f 901/1537/32 902/1564/32 913/1613/32 -f 921/2648/32 909/1576/32 920/1614/32 -f 918/2649/32 906/1560/32 917/1615/32 -f 902/1564/32 912/1582/32 914/1617/32 -f 903/1538/32 901/1537/32 915/1619/32 -f 922/2650/32 910/1545/32 921/1620/32 -f 919/2651/32 907/1605/32 918/1621/32 -f 904/1553/32 903/1538/32 916/1623/32 -f 911/1546/32 910/1545/32 923/1625/32 -f 935/2652/23 934/1626/23 947/1628/23 -f 917/1640/261 916/1629/261 929/1631/261 -f 924/1642/62 923/1632/62 936/1634/62 -f 913/1643/258 914/1635/258 925/1637/258 -f 921/1645/50 920/1638/50 933/1639/50 -f 918/1647/256 917/1640/256 930/1641/256 -f 914/1635/253 924/1642/253 926/1636/253 -f 915/1649/58 913/1643/58 927/1644/58 -f 922/1650/257 921/1645/257 934/1646/257 -f 919/2653/260 918/1647/260 931/1648/260 -f 916/1629/255 915/1649/255 928/1630/255 -f 923/1632/254 922/1650/254 935/1633/254 -f 940/1659/255 939/1651/255 952/1653/255 -f 944/1666/23 932/1654/23 943/1656/23 -f 941/1669/23 929/1657/23 940/1659/23 -f 936/2654/23 935/1660/23 948/1661/23 -f 925/2655/23 926/1662/23 937/1664/23 -f 933/2656/23 932/1665/23 945/1667/23 -f 930/2657/23 929/1668/23 942/1670/23 -f 938/1663/23 926/1671/23 948/1661/23 -f 939/1651/23 927/1673/23 937/1664/23 -f 934/2658/23 933/1675/23 946/1627/23 -f 931/2659/23 930/1676/23 943/1677/23 -f 940/1659/23 928/1678/23 939/1651/23 -f 952/1653/262 951/1652/262 1048/1681/262 -f 947/1628/254 946/1627/254 959/1683/254 -f 944/1666/259 943/1656/259 956/1685/259 -f 941/1669/261 940/1659/261 953/1686/261 -f 948/1661/62 947/1628/62 960/1687/62 -f 937/1664/258 938/1663/258 949/1689/258 -f 945/1667/50 944/1666/50 957/1690/50 -f 942/1670/256 941/1669/256 954/1691/256 -f 938/1663/253 948/1661/253 950/1688/253 -f 951/1652/58 939/1651/58 949/1689/58 -f 946/1627/257 945/1667/257 958/1682/257 -f 943/1677/260 942/1670/260 955/1692/260 -f 967/1717/259 966/1693/259 979/1695/259 -f 961/1720/32 870/1696/32 962/1698/32 -f 970/1712/32 886/1699/32 969/1701/32 -f 968/1715/32 882/1702/32 967/1704/32 -f 878/2660/32 876/1705/32 966/1693/32 -f 874/2661/32 872/1707/32 964/1709/32 -f 971/1597/32 888/1710/32 970/1712/32 -f 969/1701/32 884/1713/32 968/1715/32 -f 880/2662/32 878/1716/32 967/1717/32 -f 876/2663/32 874/1718/32 965/1706/32 -f 872/2664/32 870/1719/32 963/1708/32 -f 868/2665/32 890/1721/32 962/1698/32 -f 991/2666/23 979/1695/23 990/1723/23 -f 964/1709/254 963/1708/254 976/1725/254 -f 971/1597/255 970/1712/255 983/1727/255 -f 968/1715/260 967/1704/260 980/1729/260 -f 965/1706/257 964/1709/257 977/1730/257 -f 972/1722/58 971/1597/58 984/1731/58 -f 961/1720/253 962/1698/253 973/1733/253 -f 969/1701/256 968/1715/256 981/1734/256 -f 966/1693/50 965/1706/50 978/1694/50 -f 962/1698/258 972/1722/258 974/1732/258 -f 963/1708/62 961/1720/62 975/1724/62 -f 970/1712/261 969/1701/261 982/1726/261 -f 994/1764/261 993/1735/261 1006/1737/261 -f 988/2667/23 976/1725/23 987/1738/23 -f 983/1727/23 982/1726/23 995/1740/23 -f 980/1729/23 979/1728/23 992/1742/23 -f 989/2668/23 977/1730/23 988/1743/23 -f 984/1731/23 983/1727/23 996/1745/23 -f 973/1733/23 974/1732/23 985/1747/23 -f 981/1734/23 980/1729/23 993/1749/23 -f 990/2669/23 978/1694/23 989/1750/23 -f 986/2670/23 974/1732/23 996/1751/23 -f 987/2671/23 975/1724/23 985/1752/23 -f 982/1726/23 981/1734/23 994/1754/23 -f 999/2672/32 997/1755/32 1011/1757/32 -f 991/2673/259 990/1758/259 1003/1760/259 -f 988/1769/254 987/1761/254 1000/1763/254 -f 995/1771/255 994/1764/255 1007/1765/255 -f 992/1776/260 991/1766/260 1004/1768/260 -f 989/1777/257 988/1769/257 1001/1770/257 -f 996/1778/58 995/1771/58 1008/1772/58 -f 985/1779/253 986/1773/253 997/1775/253 -f 993/1735/256 992/1776/256 1005/1736/256 -f 990/1758/50 989/1777/50 1002/1759/50 -f 986/1773/258 996/1778/258 998/1774/258 -f 987/1761/62 985/1779/62 999/1762/62 -f 1010/1804/258 1020/1780/258 1022/1782/258 -f 1018/1793/32 1006/1783/32 1017/1785/32 -f 1003/2674/32 1002/1786/32 1015/1788/32 -f 1000/2675/32 999/1789/32 1012/1790/32 -f 1019/1801/32 1007/1791/32 1018/1793/32 -f 1016/1807/32 1004/1794/32 1015/1796/32 -f 1001/2676/32 1000/1797/32 1013/1798/32 -f 1020/1780/32 1008/1799/32 1019/1801/32 -f 1009/1756/32 997/1802/32 1010/1804/32 -f 1017/1785/32 1005/1805/32 1016/1807/32 -f 1002/2677/32 1001/1808/32 1014/1787/32 -f 998/2678/32 1008/1809/32 1010/1804/32 -f 1026/1816/263 1025/1810/263 1038/1812/263 -f 1023/1817/62 1011/1757/62 1021/1813/62 -f 1018/1793/261 1017/1785/261 1030/1815/261 -f 1027/1830/259 1015/1788/259 1026/1816/259 -f 1024/1821/254 1012/1790/254 1023/1817/254 -f 1019/1801/255 1018/1793/255 1031/1818/255 -f 1016/1807/260 1015/1796/260 1028/1820/260 -f 1025/1810/257 1013/1798/257 1024/1821/257 -f 1020/1780/58 1019/1801/58 1032/1781/58 -f 1021/1813/253 1009/1756/253 1022/1782/253 -f 1017/1785/256 1016/1807/256 1029/1814/256 -f 1026/1816/50 1014/1787/50 1025/1810/50 -f 1035/1824/23 1033/2679/23 1034/2680/23 -f 1034/2680/23 1044/2681/23 1035/1824/23 -f 1043/2682/23 1042/2683/23 1041/1822/23 -f 1041/1822/23 1040/2684/23 1039/1823/23 -f 1039/1823/23 1038/2685/23 1037/2686/23 -f 1037/2686/23 1036/2687/23 1035/1824/23 -f 1035/1824/23 1044/2681/23 1043/2682/23 -f 1043/2682/23 1041/1822/23 1035/1824/23 -f 1039/1823/23 1037/2686/23 1035/1824/23 -f 1022/1782/264 1032/1781/264 1034/1826/264 -f 1035/2688/265 1023/1817/265 1033/1827/265 -f 1030/1815/266 1029/1814/266 1042/1829/266 -f 1039/2689/267 1027/1830/267 1038/1831/267 -f 1036/2690/268 1024/1821/268 1035/1832/268 -f 1031/1818/269 1030/1815/269 1043/1834/269 -f 1040/2691/270 1028/1820/270 1039/1835/270 -f 1025/1810/271 1024/1821/271 1037/1837/271 -f 1032/1781/272 1031/1818/272 1044/1839/272 -f 1021/1813/273 1022/1782/273 1033/1841/273 -f 1041/2692/274 1029/1814/274 1040/1842/274 -f 1053/1875/50 1052/1843/50 1065/1845/50 -f 959/1683/275 958/1682/275 1055/1847/275 -f 1052/2693/276 956/1685/276 1051/1848/276 -f 1049/2694/277 953/1686/277 1048/1849/277 -f 1056/2695/278 960/1687/278 1055/1850/278 -f 1045/2696/279 949/1689/279 1046/1851/279 -f 957/1690/280 956/1685/280 1053/1853/280 -f 954/1691/281 953/1686/281 1050/1855/281 -f 950/1688/282 960/1687/282 1046/1857/282 -f 951/1652/283 949/1689/283 1047/1859/283 -f 1054/2697/284 958/1682/284 1053/1860/284 -f 955/1692/285 954/1691/285 1051/1862/285 -f 1069/1900/32 1057/1863/32 1070/1865/32 -f 1050/1877/256 1049/1866/256 1062/1868/256 -f 1046/1887/253 1056/1869/253 1058/1871/253 -f 1047/1879/58 1045/1872/58 1059/1874/58 -f 1054/1881/257 1053/1875/257 1066/1876/257 -f 1051/2698/260 1050/1877/260 1063/1878/260 -f 1048/1885/255 1047/1879/255 1060/1880/255 -f 1055/1886/254 1054/1881/254 1067/1882/254 -f 1052/1843/259 1051/1883/259 1064/1844/259 -f 1049/1866/261 1048/1885/261 1061/1867/261 -f 1056/1869/62 1055/1886/62 1068/1870/62 -f 1045/1872/258 1046/1887/258 1057/1873/258 -f 1080/1921/256 1079/1888/256 1092/1890/256 -f 1065/1902/32 1064/1891/32 1077/1893/32 -f 1062/1904/32 1061/1894/32 1074/1896/32 -f 1058/1864/32 1068/1897/32 1070/1865/32 -f 1071/1906/32 1059/1899/32 1069/1900/32 -f 1078/1907/32 1066/1901/32 1077/1893/32 -f 1075/1909/32 1063/1903/32 1074/1896/32 -f 1072/1910/32 1060/1905/32 1071/1906/32 -f 1067/1911/32 1066/1901/32 1079/1908/32 -f 1076/1892/32 1064/1891/32 1075/1909/32 -f 1073/1895/32 1061/1894/32 1072/1910/32 -f 1080/1898/32 1068/1897/32 1079/1908/32 -f 1069/1922/259 1070/1912/259 1081/1914/259 -f 1077/1924/58 1076/1915/58 1089/1917/58 -f 1074/1926/62 1073/1918/62 1086/1920/62 -f 1070/1912/260 1080/1921/260 1082/1913/260 -f 1071/1928/50 1069/1922/50 1083/1923/50 -f 1078/1930/255 1077/1924/255 1090/1925/255 -f 1075/2699/253 1074/1926/253 1087/1927/253 -f 1072/1933/257 1071/1928/257 1084/1929/257 -f 1079/1888/261 1078/1930/261 1091/1889/261 -f 1076/1915/258 1075/1931/258 1088/1916/258 -f 1073/1918/254 1072/1933/254 1085/1919/254 -f 1095/1936/32 1094/2700/32 1099/1934/32 -f 1093/2701/32 1100/2702/32 1099/1934/32 -f 1099/1934/32 1098/2703/32 1097/1935/32 -f 1097/1935/32 1096/2704/32 1095/1936/32 -f 1094/2700/32 1093/2701/32 1099/1934/32 -f 1102/1939/23 1101/1949/23 1103/1947/23 -f 1103/1947/23 1104/1946/23 1105/1937/23 -f 1105/1937/23 1106/1944/23 1107/1938/23 -f 1107/1938/23 1108/1941/23 1102/1939/23 -f 1102/1939/23 1103/1947/23 1105/1937/23 -f 1099/2705/286 1100/1940/286 1107/1938/286 -f 1105/1937/287 1097/1942/287 1106/1944/287 -f 1095/2706/288 1096/1945/288 1103/1947/288 -f 1093/2707/289 1094/1948/289 1102/1939/289 -f 1100/2708/290 1093/1950/290 1108/1941/290 -f 1098/2709/291 1099/1951/291 1106/1944/291 -f 1096/2710/292 1097/1952/292 1104/1946/292 -f 1094/2711/293 1095/1953/293 1101/1949/293 -f 1109/2712/294 1110/1954/294 1111/1956/294 -f 1111/1956/187 1112/1955/187 1113/1958/187 -f 1113/1958/295 1114/1957/295 1115/1960/295 -f 1117/2713/296 1115/1961/296 1118/1963/296 -f 1109/2712/93 1119/1964/93 1110/1954/93 -f 1117/2713/175 1118/1963/175 1119/1964/175 -f 1121/2714/294 1122/1966/294 1123/1968/294 -f 1123/1968/187 1124/1967/187 1125/1970/187 -f 1125/1970/295 1126/1969/295 1127/1972/295 -f 1129/2715/296 1127/1973/296 1130/1975/296 -f 1121/2714/93 1131/1976/93 1122/1966/93 -f 1129/2715/175 1130/1975/175 1131/1976/175 -f 1133/2716/294 1134/1978/294 1135/1980/294 -f 1135/1980/187 1136/1979/187 1137/1982/187 -f 1137/1982/295 1138/1981/295 1139/1984/295 -f 1141/2717/296 1139/1985/296 1142/1987/296 -f 1133/2716/93 1143/1988/93 1134/1978/93 -f 1141/2717/175 1142/1987/175 1143/1988/175 -f 1145/2718/294 1146/1990/294 1147/1992/294 -f 1147/1992/187 1148/1991/187 1149/1994/187 -f 1149/1994/295 1150/1993/295 1151/1996/295 -f 1153/2719/296 1151/1997/296 1154/1999/296 -f 1145/2718/93 1155/2000/93 1146/1990/93 -f 1153/2719/175 1154/1999/175 1155/2000/175 -f 1158/2018/175 1160/2002/175 1157/2004/175 -f 1165/2041/211 1166/2005/211 1159/2007/211 -f 1164/2017/187 1162/2008/187 1163/2010/187 -f 1280/2192/175 1158/2011/175 1279/2013/175 -f 1157/2189/214 1159/2014/214 1161/2016/214 -f 1162/2008/139 1164/2017/139 1158/2018/139 -f 1171/2044/187 1167/2025/187 1174/2027/187 -f 1167/2042/32 1168/2028/32 1173/2030/32 -f 1172/2040/23 1171/2031/23 1170/2033/23 -f 1169/2043/297 1170/2034/297 1177/2036/297 -f 1165/2021/298 1160/2020/298 1168/2038/298 -f 1160/2720/23 1164/2039/23 1172/2040/23 -f 1166/2005/32 1165/2041/32 1167/2042/32 -f 1168/2038/175 1172/2037/175 1169/2043/175 -f 1164/2024/299 1166/2023/299 1171/2044/299 -f 1176/2050/139 1178/2045/139 1175/2035/139 -f 1170/2033/23 1174/2032/23 1175/2047/23 -f 1173/2030/32 1169/2029/32 1178/2049/32 -f 1174/2027/300 1173/2026/300 1176/2050/300 -f 1213/2094/175 1194/2051/175 1206/2053/175 -f 1207/2095/187 1188/2054/187 1214/2056/187 -f 1183/2067/261 1182/2052/261 1195/2057/261 -f 1194/2721/23 1213/2058/23 1202/2060/23 -f 1212/2722/23 1210/2061/23 1218/2063/23 -f 1187/2074/50 1186/2064/50 1199/2066/50 -f 1184/2075/256 1183/2067/256 1196/2068/256 -f 1200/2723/23 1199/2069/23 1181/2071/23 -f 1210/2724/23 1211/2072/23 1179/2062/23 -f 1188/2054/257 1187/2074/257 1200/2055/257 -f 1185/2725/260 1184/2075/260 1197/2076/260 -f 1192/2110/256 1193/2077/256 1226/2079/256 -f 1199/2726/23 1198/2080/23 1189/2070/23 -f 1186/2064/259 1185/2082/259 1198/2065/259 -f 1209/2090/62 1208/2084/62 1216/2086/62 -f 1203/2091/258 1204/2087/258 1210/2089/258 -f 1204/2087/253 1209/2090/253 1211/2088/253 -f 1205/2093/58 1203/2091/58 1212/2092/58 -f 1206/2053/255 1205/2093/255 1213/2094/255 -f 1208/2084/254 1207/2095/254 1215/2085/254 -f 1213/2727/23 1212/2096/23 1201/2059/23 -f 1193/2077/23 1195/2097/23 1202/2060/23 -f 1219/2107/23 1215/2099/23 1180/2101/23 -f 1214/2728/23 1200/2102/23 1180/2101/23 -f 1192/2110/23 1196/2103/23 1193/2077/23 -f 1220/2113/23 1216/2105/23 1219/2107/23 -f 1191/2729/23 1197/2108/23 1192/2110/23 -f 1217/2073/23 1211/2111/23 1220/2113/23 -f 1198/2730/23 1197/2114/23 1190/2081/23 -f 1228/2731/32 1229/2118/32 1221/2117/32 -f 1232/2732/32 1233/2733/32 1234/2734/32 -f 1234/2734/32 1230/2735/32 1231/2736/32 -f 1231/2736/32 1222/2116/32 1229/2118/32 -f 1221/2117/32 1223/2737/32 1224/2738/32 -f 1224/2738/32 1225/2739/32 1221/2117/32 -f 1226/2740/32 1227/2741/32 1228/2731/32 -f 1229/2118/32 1232/2732/32 1234/2734/32 -f 1234/2734/32 1231/2736/32 1229/2118/32 -f 1221/2117/32 1225/2739/32 1226/2740/32 -f 1226/2740/32 1228/2731/32 1221/2117/32 -f 1220/2113/62 1219/2107/62 1230/2120/62 -f 1227/2078/261 1193/2077/261 1228/2121/261 -f 1219/2107/254 1180/2101/254 1231/2119/254 -f 1228/2121/175 1202/2060/175 1229/2123/175 -f 1201/2059/255 1218/2063/255 1229/2123/255 -f 1218/2063/58 1179/2062/58 1232/2124/58 -f 1180/2101/187 1181/2071/187 1222/2122/187 -f 1181/2071/257 1189/2070/257 1221/2126/257 -f 1190/2081/259 1191/2115/259 1224/2129/259 -f 1189/2070/50 1190/2081/50 1223/2127/50 -f 1191/2729/260 1192/2110/260 1225/2130/260 -f 1217/2073/253 1220/2113/253 1234/2131/253 -f 1179/2062/258 1217/2073/258 1233/2125/258 -f 1254/2742/211 1251/2132/211 1250/2134/211 -f 1299/2743/32 1302/2135/32 1237/2137/32 -f 1253/2744/187 1254/2138/187 1249/2140/187 -f 1239/2144/23 1240/2141/23 1235/2143/23 -f 1235/2143/214 1237/2137/214 1239/2144/214 -f 1252/2159/175 1248/2145/175 1251/2147/175 -f 1246/2155/32 1245/2148/32 1244/2150/32 -f 1242/2225/139 1238/2151/139 1254/2153/139 -f 1243/2745/214 1245/2154/214 1247/2133/214 -f 1245/2746/187 1246/2155/187 1250/2156/187 -f 1246/2155/139 1244/2150/139 1249/2140/139 -f 1244/2150/175 1243/2157/175 1248/2145/175 -f 1253/2744/219 1249/2140/219 1252/2159/219 -f 1236/2142/139 1240/2141/139 1252/2161/139 -f 1255/2747/294 1256/2162/294 1257/2164/294 -f 1257/2164/187 1258/2163/187 1259/2166/187 -f 1259/2166/295 1260/2165/295 1261/2168/295 -f 1263/2748/296 1261/2169/296 1264/2171/296 -f 1255/2747/93 1265/2172/93 1256/2162/93 -f 1263/2748/175 1264/2171/175 1265/2172/175 -f 1267/2749/294 1268/2174/294 1269/2176/294 -f 1269/2176/187 1270/2175/187 1271/2178/187 -f 1271/2178/295 1272/2177/295 1273/2180/295 -f 1275/2750/296 1273/2181/296 1276/2183/296 -f 1267/2749/93 1277/2184/93 1268/2174/93 -f 1275/2750/175 1276/2183/175 1277/2184/175 -f 1281/2215/32 1280/2186/32 1291/2188/32 -f 1279/2751/218 1157/2189/218 1282/2190/218 -f 1281/2193/215 1162/2191/215 1280/2192/215 -f 1161/2752/187 1162/2191/187 1282/2194/187 -f 1283/2202/214 1286/2195/214 1287/2197/214 -f 1280/2753/175 1279/2198/175 1284/2200/175 -f 1279/2754/214 1282/2201/214 1283/2202/214 -f 1282/2755/187 1281/2203/187 1286/2205/187 -f 1289/2209/301 1288/2206/301 1297/2208/301 -f 1286/2205/302 1285/2204/302 1290/2210/302 -f 1285/2204/139 1284/2200/139 1289/2209/139 -f 1284/2200/303 1283/2199/303 1288/2206/303 -f 1295/2223/214 1298/2212/214 1299/2214/214 -f 1285/2756/304 1281/2215/304 1293/2216/304 -f 1280/2186/305 1284/2217/305 1292/2187/305 -f 1284/2217/23 1285/2219/23 1294/2218/23 -f 1288/2206/175 1287/2221/175 1296/2207/175 -f 1287/2197/306 1290/2196/306 1295/2223/306 -f 1298/2757/187 1290/2224/187 1297/2208/187 -f 1238/2151/32 1242/2225/32 1300/2227/32 -f 1298/2758/187 1297/2228/187 1302/2230/187 -f 1297/2228/139 1296/2231/139 1301/2229/139 -f 1296/2231/175 1295/2233/175 1300/2232/175 -f 1241/2759/187 1302/2760/187 1239/2144/187 -f 1301/2236/187 1242/2761/187 1254/2235/187 -f 1254/2235/187 1253/2762/187 1239/2144/187 -f 1240/2141/187 1239/2144/187 1253/2762/187 -f 1302/2760/187 1301/2236/187 1239/2144/187 -f 1237/2763/175 1235/2143/175 1299/2764/175 -f 1236/2142/175 1252/2765/175 1235/2143/175 -f 1251/2237/175 1238/2237/175 1300/2238/175 -f 1300/2238/175 1299/2764/175 1235/2143/175 -f 1235/2143/175 1252/2765/175 1251/2237/175 -f 1303/2254/307 1304/2239/307 1305/2241/307 -f 1305/2241/308 1306/2240/308 1307/2243/308 -f 1307/2243/309 1308/2242/309 1309/2245/309 -f 1309/2245/310 1310/2244/310 1311/2247/310 -f 1311/2286/311 1312/2248/311 1313/2250/311 -f 1313/2250/312 1314/2249/312 1315/2252/312 -f 1317/2255/313 1318/2253/313 1303/2254/313 -f 1315/2252/314 1316/2251/314 1317/2255/314 -f 1337/2766/32 1307/2243/32 1338/2256/32 -f 1319/2272/307 1320/2257/307 1321/2259/307 -f 1321/2259/308 1322/2258/308 1323/2261/308 -f 1323/2261/309 1324/2260/309 1325/2263/309 -f 1325/2263/310 1326/2262/310 1327/2265/310 -f 1327/2313/311 1328/2266/311 1329/2268/311 -f 1329/2268/312 1330/2267/312 1331/2270/312 -f 1333/2273/313 1334/2271/313 1319/2272/313 -f 1331/2270/314 1332/2269/314 1333/2273/314 -f 1329/2268/32 1331/2270/32 1356/2275/32 -f 1346/2303/310 1338/2276/310 1347/2278/310 -f 1340/2767/32 1313/2250/32 1341/2279/32 -f 1309/2245/32 1311/2247/32 1338/2281/32 -f 1315/2252/32 1317/2255/32 1341/2283/32 -f 1305/2241/32 1307/2243/32 1336/2285/32 -f 1339/2768/32 1311/2286/32 1340/2287/32 -f 1317/2255/32 1303/2254/32 1342/2289/32 -f 1335/2769/32 1303/2254/32 1336/2290/32 -f 1355/2770/311 1356/2291/311 1363/2293/311 -f 1344/2304/308 1336/2294/308 1345/2296/308 -f 1341/2307/314 1342/2297/314 1349/2299/314 -f 1339/2771/311 1340/2300/311 1347/2302/311 -f 1345/2296/309 1337/2295/309 1346/2303/309 -f 1335/2306/307 1336/2294/307 1343/2305/307 -f 1342/2297/313 1335/2306/313 1350/2298/313 -f 1340/2300/312 1341/2307/312 1348/2301/312 -f 1325/2263/32 1327/2265/32 1354/2309/32 -f 1331/2270/32 1333/2273/32 1357/2311/32 -f 1352/2772/32 1321/2259/32 1353/2312/32 -f 1355/2773/32 1327/2313/32 1356/2314/32 -f 1333/2273/32 1319/2272/32 1358/2316/32 -f 1351/2774/32 1319/2272/32 1352/2317/32 -f 1353/2775/32 1323/2261/32 1354/2318/32 -f 1353/2331/309 1354/2319/309 1361/2321/309 -f 1351/2325/307 1352/2322/307 1359/2324/307 -f 1358/2332/313 1351/2325/313 1366/2326/313 -f 1356/2291/312 1357/2327/312 1364/2292/312 -f 1354/2319/310 1355/2329/310 1362/2320/310 -f 1352/2322/308 1353/2331/308 1360/2323/308 -f 1357/2327/314 1358/2332/314 1365/2328/314 -f 1375/2350/175 1377/2333/175 1380/2335/175 -f 1367/2344/175 1369/2336/175 1372/2338/175 -f 1369/2336/23 1370/2339/23 1374/2337/23 -f 1370/2776/187 1368/2341/187 1373/2343/187 -f 1368/2341/32 1367/2344/32 1371/2342/32 -f 1377/2333/23 1378/2345/23 1382/2334/23 -f 1378/2777/187 1376/2347/187 1381/2349/187 -f 1376/2347/32 1375/2350/32 1379/2348/32 -f 1383/2359/175 1385/2351/175 1388/2353/175 -f 1385/2351/23 1386/2354/23 1390/2352/23 -f 1386/2778/187 1384/2356/187 1389/2358/187 -f 1384/2356/32 1383/2359/32 1387/2357/32 -f 1392/2779/175 1394/2360/175 1391/2362/175 -f 1394/2780/32 1398/2363/32 1393/2365/32 -f 1398/2781/187 1396/2366/187 1397/2368/187 -f 1396/2782/23 1392/2369/23 1395/2371/23 -f 1393/2365/32 1397/2364/32 1399/2373/32 -f 1396/2783/139 1398/2374/139 1392/2376/139 -f 1400/2378/214 1399/2373/214 1402/2377/214 -f 1402/2377/23 1395/2371/23 1400/2378/23 -f 1397/2368/315 1395/2367/315 1401/2372/315 -f 1391/2362/316 1393/2361/316 1400/2378/316 -f 1406/2784/317 1407/2379/317 1411/2381/317 -f 1406/2784/318 1411/2381/318 1416/2383/318 -f 1408/2387/187 1407/2384/187 1413/2386/187 -f 1407/2384/318 1408/2387/318 1403/2389/318 -f 1405/2785/317 1409/2390/317 1414/2392/317 -f 1415/2382/319 1418/2393/319 1416/2383/319 -f 1413/2386/320 1409/2385/320 1412/2396/320 -f 1404/2786/175 1412/2396/175 1403/2397/175 -f 1411/2787/317 1403/2398/317 1414/2400/317 -f 1410/2404/317 1409/2401/317 1406/2403/317 -f 1418/2393/320 1414/2392/320 1417/2394/320 -f 1417/2394/187 1410/2404/187 1416/2383/187 -f 1411/2787/175 1414/2400/175 1415/2382/175 diff --git a/src/main/resources/assets/hbm/models/effect/casings.obj b/src/main/resources/assets/hbm/models/effect/casings.obj new file mode 100644 index 000000000..0198624c1 --- /dev/null +++ b/src/main/resources/assets/hbm/models/effect/casings.obj @@ -0,0 +1,1001 @@ +# Blender v2.79 (sub 0) OBJ File: 'casings.blend' +# www.blender.org +o ShotgunCase +v -0.353356 -0.353356 1.148335 +v 0.000000 -0.499721 1.148335 +v 0.353356 -0.353356 1.148335 +v 0.499721 -0.000000 1.148335 +v 0.353356 0.353357 1.148335 +v 0.000000 0.499721 1.148335 +v -0.353356 0.353357 1.148335 +v -0.499721 -0.000000 1.148335 +v 0.000000 -0.449124 1.112764 +v 0.317579 -0.317578 1.112764 +v -0.317579 0.317579 1.112764 +v -0.449124 -0.000000 1.112764 +v 0.317579 0.317579 1.112764 +v 0.000000 0.449124 1.112764 +v -0.317579 -0.317578 1.112764 +v 0.449124 -0.000000 1.112764 +v 0.317579 -0.317578 0.334163 +v 0.000000 -0.449124 0.334163 +v -0.449124 -0.000000 0.334163 +v -0.317579 0.317579 0.334163 +v 0.317579 0.317579 0.334163 +v -0.317579 -0.317578 0.334163 +v 0.000000 0.449124 0.334163 +v 0.449124 -0.000000 0.334163 +vt 0.416667 0.818578 +vt 0.358660 0.802560 +vt 0.474673 0.725217 +vt 0.334633 0.763889 +vt 0.358660 0.725217 +vt 0.416667 0.709199 +vt 0.498701 0.763889 +vt 0.474673 0.802560 +vt 0.041667 0.722222 +vt 0.083333 0.708333 +vt 0.083333 0.722222 +vt 0.000000 0.722222 +vt 0.041667 0.708333 +vt 0.291667 0.708333 +vt 0.333333 0.722222 +vt 0.291667 0.722222 +vt 0.250000 0.708333 +vt 0.250000 0.722222 +vt 0.208333 0.722222 +vt 0.166667 0.722222 +vt 0.208333 0.708333 +vt 0.125000 0.708333 +vt 0.166667 0.708333 +vt 0.041667 0.791667 +vt 0.208333 0.791667 +vt 0.250000 0.791667 +vt 0.291667 0.791667 +vt 0.333333 0.791667 +vt 0.166667 0.791667 +vt 0.125000 0.722222 +vt 0.083333 0.791667 +vt 0.125000 0.791667 +vt 0.000000 0.708333 +vt 0.333333 0.708333 +vt -0.000000 0.791667 +vn 0.0000 0.0000 1.0000 +vn -0.4067 -0.4067 -0.8181 +vn -0.5751 -0.0000 -0.8181 +vn 0.0000 -0.5751 -0.8181 +vn 0.4067 -0.4067 -0.8181 +vn 0.5751 -0.0000 -0.8181 +vn 0.4067 0.4067 -0.8181 +vn 0.0000 0.5751 -0.8181 +vn -0.4067 0.4067 -0.8181 +vn -0.7071 -0.7071 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 -0.0000 -0.0000 +s off +f 6/1/1 7/2/1 3/3/1 +f 7/2/1 8/4/1 3/3/1 +f 8/4/1 1/5/1 3/3/1 +f 1/5/1 2/6/1 3/3/1 +f 3/3/1 4/7/1 5/8/1 +f 5/8/1 6/1/1 3/3/1 +s 1 +f 15/9/2 8/10/3 12/11/3 +f 9/12/4 1/13/2 15/9/2 +f 3/14/5 9/15/4 10/16/5 +f 4/17/6 10/16/5 16/18/6 +f 13/19/7 4/17/6 16/18/6 +f 14/20/8 5/21/7 13/19/7 +f 14/20/8 7/22/9 6/23/8 +f 22/24/10 9/12/11 15/9/10 +f 21/25/12 14/20/13 13/19/12 +f 24/26/14 13/19/12 16/18/14 +f 17/27/15 16/18/14 10/16/15 +f 18/28/11 10/16/15 9/15/11 +f 23/29/13 11/30/16 14/20/13 +f 19/31/17 15/9/10 12/11/17 +f 20/32/16 12/11/17 11/30/16 +f 8/10/3 11/30/9 12/11/3 +f 15/9/2 1/13/2 8/10/3 +f 9/12/4 2/33/4 1/13/2 +f 3/14/5 2/34/4 9/15/4 +f 4/17/6 3/14/5 10/16/5 +f 13/19/7 5/21/7 4/17/6 +f 14/20/8 6/23/8 5/21/7 +f 14/20/8 11/30/9 7/22/9 +f 22/24/10 18/35/11 9/12/11 +f 21/25/12 23/29/13 14/20/13 +f 24/26/14 21/25/12 13/19/12 +f 17/27/15 24/26/14 16/18/14 +f 18/28/11 17/27/15 10/16/15 +f 23/29/13 20/32/16 11/30/16 +f 19/31/17 22/24/10 15/9/10 +f 20/32/16 19/31/17 12/11/17 +f 8/10/3 7/22/9 11/30/9 +o AR2Highlight +v 0.100000 -0.400000 0.017959 +v -0.312132 0.312132 0.017959 +v -0.100000 0.400000 0.017959 +v -0.400000 0.100000 0.017959 +v 0.400000 -0.100000 0.017959 +v 0.312132 -0.312132 0.017959 +v 0.100000 -0.250000 0.017959 +v -0.206066 0.206066 0.017959 +v -0.100000 0.250000 0.017959 +v -0.250000 0.100000 0.017959 +v 0.250000 -0.100000 0.017959 +v 0.206066 -0.206066 0.017959 +v -0.100000 -0.400000 0.017959 +v -0.312132 -0.312132 0.017959 +v 0.100000 0.400000 0.017959 +v 0.312132 0.312132 0.017959 +v -0.400000 -0.100000 0.017959 +v 0.400000 0.100000 0.017959 +v -0.100000 -0.250000 0.017959 +v -0.206066 -0.206066 0.017959 +v 0.100000 0.250000 0.017959 +v 0.206066 0.206066 0.017959 +v -0.250000 -0.100000 0.017959 +v 0.250000 0.100000 0.017959 +vt 0.348404 0.684398 +vt 0.380638 0.678103 +vt 0.380638 0.693299 +vt 0.357845 0.662908 +vt 0.364521 0.673653 +vt 0.433822 0.642648 +vt 0.443263 0.621158 +vt 0.456615 0.642648 +vt 0.411029 0.627452 +vt 0.411029 0.612257 +vt 0.443263 0.684398 +vt 0.433822 0.662908 +vt 0.456615 0.662908 +vt 0.380638 0.627452 +vt 0.348404 0.621158 +vt 0.380638 0.612257 +vt 0.411029 0.678103 +vt 0.411029 0.693299 +vt 0.357845 0.642648 +vt 0.335052 0.642648 +vt 0.335052 0.662908 +vt 0.427146 0.631903 +vt 0.427146 0.673653 +vt 0.364521 0.631903 +vn -0.0000 -0.0000 1.0000 +s off +f 26/36/18 33/37/18 27/38/18 +f 26/36/18 34/39/18 32/40/18 +f 35/41/18 30/42/18 29/43/18 +f 30/42/18 31/44/18 25/45/18 +f 40/46/18 48/47/18 42/48/18 +f 43/49/18 38/50/18 37/51/18 +f 45/52/18 40/46/18 39/53/18 +f 38/50/18 47/54/18 41/55/18 +f 26/36/18 32/40/18 33/37/18 +f 26/36/18 28/56/18 34/39/18 +f 35/41/18 36/57/18 30/42/18 +f 30/42/18 36/57/18 31/44/18 +f 40/46/18 46/58/18 48/47/18 +f 43/49/18 44/59/18 38/50/18 +f 45/52/18 46/58/18 40/46/18 +f 38/50/18 44/59/18 47/54/18 +o Bottleneck +v -0.135595 0.135594 -0.764953 +v -0.135595 0.135594 -1.014953 +v -0.191761 -0.000003 -1.014953 +v 0.000000 0.191760 -0.764953 +v 0.000000 0.191760 -1.014953 +v 0.135595 0.135594 -0.764953 +v 0.191762 -0.000003 -0.764953 +v 0.191762 -0.000003 -1.014953 +v -0.135596 -0.135597 -0.764953 +v -0.135596 -0.135597 -1.014953 +v 0.000000 -0.191762 -1.014953 +v 0.135596 -0.135596 -0.764953 +v 0.135596 -0.135596 -1.014953 +v -0.191761 -0.000003 -0.764953 +v 0.135595 0.135594 -1.014953 +v 0.000000 -0.191762 -0.764953 +v 0.300002 -0.000003 0.685047 +v 0.212132 0.212131 -0.414953 +v 0.212132 0.212131 0.685047 +v 0.212132 -0.212133 -0.414953 +v 0.000000 -0.300001 0.685047 +v 0.000000 -0.300001 -0.414953 +v -0.300000 -0.000003 -0.414953 +v -0.212132 -0.212133 0.685047 +v -0.300000 -0.000003 0.685047 +v 0.000000 0.299999 -0.414953 +v -0.212132 0.212131 0.685047 +v 0.212132 -0.212133 0.685047 +v -0.212132 0.212131 -0.414953 +v 0.000000 0.299999 0.685047 +v 0.300002 -0.000003 -0.414953 +v -0.212132 -0.212133 -0.414953 +v 0.185616 -0.185617 0.735047 +v 0.000000 -0.262503 0.685047 +v 0.185616 -0.185617 0.685047 +v 0.000000 -0.262503 0.735047 +v -0.185614 -0.185617 0.685047 +v 0.262502 -0.000003 0.735047 +v 0.262502 -0.000003 0.685047 +v 0.185616 0.185613 0.735047 +v 0.185616 0.185613 0.685047 +v 0.000000 0.262499 0.735047 +v 0.000000 0.262499 0.685047 +v -0.185614 0.185613 0.735047 +v -0.185614 0.185613 0.685047 +v -0.262500 -0.000003 0.735047 +v -0.262500 -0.000003 0.685047 +v -0.185614 -0.185617 0.735047 +v -0.212132 -0.212133 0.735047 +v 0.000000 -0.300001 0.785047 +v -0.212132 -0.212133 0.785047 +v 0.300002 -0.000003 0.735047 +v 0.212132 -0.212133 0.785047 +v 0.212132 -0.212133 0.735047 +v 0.000000 0.299999 0.735047 +v 0.212132 0.212131 0.785047 +v 0.212132 0.212131 0.735047 +v -0.212132 0.212131 0.785047 +v 0.000000 0.299999 0.785047 +v -0.300000 -0.000003 0.735047 +v -0.300000 -0.000001 0.785047 +v 0.000000 -0.300001 0.735047 +v 0.300002 -0.000001 0.785047 +v -0.212132 0.212131 0.735047 +vt 0.541667 0.527778 +vt 0.583333 0.541667 +vt 0.541667 0.541667 +vt 0.500000 0.527778 +vt 0.500000 0.541667 +vt 0.833333 0.541667 +vt 0.791667 0.527778 +vt 0.833333 0.527778 +vt 0.750000 0.541667 +vt 0.750000 0.527778 +vt 0.708333 0.541667 +vt 0.708333 0.527778 +vt 0.666667 0.541667 +vt 0.666667 0.527778 +vt 0.625000 0.527778 +vt 0.625000 0.541667 +vt 0.541667 0.569444 +vt 0.583333 0.555556 +vt 0.583333 0.569444 +vt 0.500000 0.569444 +vt 0.541667 0.555556 +vt 0.833333 0.555556 +vt 0.791667 0.569444 +vt 0.791667 0.555556 +vt 0.750000 0.555556 +vt 0.750000 0.569444 +vt 0.708333 0.555556 +vt 0.708333 0.569444 +vt 0.666667 0.555556 +vt 0.666667 0.569444 +vt 0.625000 0.569444 +vt 0.916666 0.514039 +vt 0.999775 0.569444 +vt 0.916666 0.624849 +vt 0.708333 0.736111 +vt 0.666667 0.680556 +vt 0.708333 0.680556 +vt 0.750000 0.736111 +vt 0.750000 0.680556 +vt 0.791667 0.680556 +vt 0.833333 0.736111 +vt 0.833333 0.680556 +vt 0.541667 0.736111 +vt 0.500000 0.680556 +vt 0.541667 0.680556 +vt 0.583333 0.736111 +vt 0.625000 0.736111 +vt 0.583333 0.680556 +vt 0.625000 0.680556 +vt 0.666667 0.736111 +vt 0.835373 0.641835 +vt 0.891414 0.626360 +vt 0.914627 0.663720 +vt 0.833333 0.569444 +vt 0.708333 0.777778 +vt 0.750000 0.777778 +vt 0.791667 0.777778 +vt 0.791667 0.736111 +vt 0.833333 0.777778 +vt 0.500000 0.777778 +vt 0.500000 0.736111 +vt 0.541667 0.777778 +vt 0.583333 0.777778 +vt 0.625000 0.777778 +vt 0.666667 0.777778 +vt 0.750000 0.513889 +vt 0.708333 0.513889 +vt 0.666667 0.513889 +vt 0.583333 0.513889 +vt 0.625000 0.513889 +vt 0.583333 0.527778 +vt 0.541667 0.513889 +vt 0.500000 0.513889 +vt 0.791667 0.513889 +vt 0.625000 0.555556 +vt 0.500000 0.555556 +vt 0.791667 0.541667 +vt 0.833558 0.569444 +vt 0.857900 0.530267 +vt 0.975432 0.530267 +vt 0.975433 0.608622 +vt 0.857900 0.608622 +vt 0.858586 0.626360 +vt 0.914627 0.641835 +vt 0.891414 0.679196 +vt 0.858586 0.679196 +vt 0.835373 0.663721 +vt 0.833333 0.513889 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 +vn 0.6755 0.6755 -0.2954 +vn 0.0000 0.9554 -0.2954 +vn 0.6755 0.6755 -0.2955 +vn 0.9554 -0.0000 -0.2955 +vn 0.6755 -0.6755 -0.2954 +vn 0.0000 -0.9554 -0.2954 +vn -0.6755 -0.6755 -0.2954 +vn -0.9554 -0.0000 -0.2954 +vn -0.6755 0.6755 -0.2954 +vn -0.7071 0.7071 0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 97/60/19 94/61/19 96/62/19 +f 110/63/19 96/62/19 84/64/19 +f 84/65/19 102/66/19 110/67/19 +f 102/66/19 86/68/19 100/69/19 +f 100/69/19 88/70/19 105/71/19 +f 105/71/19 90/72/19 103/73/19 +f 112/74/19 90/72/19 92/75/19 +f 94/61/19 112/74/19 92/75/19 +f 72/76/20 95/77/20 73/78/20 +f 69/79/20 85/80/20 72/76/20 +f 82/81/20 76/82/20 83/83/20 +f 87/84/20 76/82/20 65/85/20 +f 89/86/20 65/85/20 67/87/20 +f 91/88/20 67/87/20 78/89/20 +f 75/90/20 91/88/20 78/89/20 +f 95/77/20 75/90/20 73/78/20 +f 98/91/20 111/92/20 107/93/20 +f 54/94/21 74/95/22 66/96/23 +f 55/97/24 66/96/23 79/98/24 +f 68/99/25 55/97/24 79/98/24 +f 64/100/26 68/99/25 70/101/26 +f 57/102/27 70/103/26 80/104/27 +f 80/104/27 62/105/28 57/102/27 +f 49/106/29 71/107/28 77/108/29 +f 52/109/22 77/108/29 74/95/22 +f 50/110/19 63/111/19 61/112/19 +f 77/108/30 73/78/31 75/90/30 +f 73/78/31 80/104/32 72/76/32 +f 80/104/32 69/79/33 72/76/32 +f 70/101/33 76/82/34 69/113/33 +f 76/82/34 79/98/35 65/85/35 +f 79/98/35 67/87/36 65/85/35 +f 78/89/37 66/96/36 74/95/37 +f 77/108/30 78/89/37 74/95/37 +f 63/114/36 52/109/37 54/94/36 +f 63/114/36 55/97/35 56/115/35 +f 61/116/34 55/97/35 60/117/34 +f 61/116/34 64/100/33 59/118/33 +f 57/102/32 59/119/33 64/120/33 +f 58/121/32 62/105/31 51/122/31 +f 49/106/30 51/122/31 62/105/31 +f 50/123/30 52/109/37 53/124/37 +f 111/125/35 105/71/36 104/126/36 +f 107/127/37 105/71/36 103/73/37 +f 112/74/30 107/127/37 103/73/37 +f 112/74/30 109/128/31 106/129/30 +f 108/130/31 99/131/32 109/128/31 +f 99/131/32 110/63/33 98/132/33 +f 101/133/34 110/67/33 102/66/34 +f 100/69/35 101/133/34 102/66/34 +f 88/70/36 87/84/35 89/86/36 +f 88/70/36 91/88/37 90/72/37 +f 90/72/37 93/134/30 92/75/30 +f 92/75/30 95/77/31 94/61/31 +f 96/62/32 95/77/31 85/80/32 +f 82/135/33 96/62/32 85/80/32 +f 83/83/34 84/65/33 82/81/33 +f 86/68/35 83/83/34 87/84/35 +f 97/60/19 108/130/19 94/61/19 +f 110/63/19 97/60/19 96/62/19 +f 84/65/19 81/136/19 102/66/19 +f 102/66/19 81/136/19 86/68/19 +f 100/69/19 86/68/19 88/70/19 +f 105/71/19 88/70/19 90/72/19 +f 112/74/19 103/73/19 90/72/19 +f 94/61/19 108/130/19 112/74/19 +f 72/76/20 85/80/20 95/77/20 +f 69/79/20 82/135/20 85/80/20 +f 82/81/20 69/113/20 76/82/20 +f 87/84/20 83/83/20 76/82/20 +f 89/86/20 87/84/20 65/85/20 +f 91/88/20 89/86/20 67/87/20 +f 75/90/20 93/134/20 91/88/20 +f 95/77/20 93/134/20 75/90/20 +f 109/137/20 99/138/20 98/91/20 +f 98/91/20 101/139/20 111/92/20 +f 111/92/20 104/140/20 107/93/20 +f 107/93/20 106/141/20 109/137/20 +f 109/137/20 98/91/20 107/93/20 +f 54/94/21 52/109/22 74/95/22 +f 55/97/24 54/94/21 66/96/23 +f 68/99/25 60/117/25 55/97/24 +f 64/100/26 60/117/25 68/99/25 +f 57/102/27 64/120/26 70/103/26 +f 80/104/27 71/107/28 62/105/28 +f 49/106/29 62/105/28 71/107/28 +f 52/109/22 49/106/29 77/108/29 +f 50/110/19 53/142/19 63/111/19 +f 63/111/19 56/143/19 61/112/19 +f 61/112/19 59/144/19 50/110/19 +f 59/144/19 58/145/19 50/110/19 +f 58/145/19 51/146/19 50/110/19 +f 77/108/30 71/107/31 73/78/31 +f 73/78/31 71/107/31 80/104/32 +f 80/104/32 70/103/33 69/79/33 +f 70/101/33 68/99/34 76/82/34 +f 76/82/34 68/99/34 79/98/35 +f 79/98/35 66/96/36 67/87/36 +f 78/89/37 67/87/36 66/96/36 +f 77/108/30 75/90/30 78/89/37 +f 63/114/36 53/124/37 52/109/37 +f 63/114/36 54/94/36 55/97/35 +f 61/116/34 56/115/35 55/97/35 +f 61/116/34 60/117/34 64/100/33 +f 57/102/32 58/121/32 59/119/33 +f 58/121/32 57/102/32 62/105/31 +f 49/106/30 50/123/30 51/122/31 +f 50/123/30 49/106/30 52/109/37 +f 111/125/35 100/69/35 105/71/36 +f 107/127/37 104/126/36 105/71/36 +f 112/74/30 106/129/30 107/127/37 +f 112/74/30 108/130/31 109/128/31 +f 108/130/31 97/60/32 99/131/32 +f 99/131/32 97/60/32 110/63/33 +f 101/133/34 98/147/33 110/67/33 +f 100/69/35 111/125/35 101/133/34 +f 88/70/36 86/68/35 87/84/35 +f 88/70/36 89/86/36 91/88/37 +f 90/72/37 91/88/37 93/134/30 +f 92/75/30 93/134/30 95/77/31 +f 96/62/32 94/61/31 95/77/31 +f 82/135/33 84/64/33 96/62/32 +f 83/83/34 81/136/34 84/65/33 +f 86/68/35 81/136/34 83/83/34 +o Straight +v -0.300000 -0.000003 -0.814953 +v -0.212132 -0.212133 0.685047 +v -0.300000 -0.000003 0.685047 +v -0.212132 0.212131 -0.814953 +v 0.000000 0.299999 0.685047 +v 0.000000 0.299999 -0.814953 +v -0.212132 0.212131 0.685047 +v 0.000000 -0.300001 -0.814953 +v 0.000000 -0.300001 0.685047 +v 0.212132 -0.212133 -0.814953 +v 0.300002 -0.000003 0.685047 +v 0.212132 -0.212133 0.685047 +v 0.212132 0.212131 -0.814953 +v 0.212132 0.212131 0.685047 +v -0.212132 -0.212133 -0.814953 +v 0.300002 -0.000003 -0.814953 +v -0.212132 -0.212133 0.735047 +v 0.000000 -0.300001 0.785047 +v -0.212132 -0.212133 0.785047 +v 0.300002 -0.000003 0.735047 +v 0.212132 -0.212133 0.785047 +v 0.212132 -0.212133 0.735047 +v 0.000000 0.299999 0.735047 +v 0.212132 0.212131 0.785047 +v 0.212132 0.212131 0.735047 +v -0.212132 0.212131 0.785047 +v 0.000000 0.299999 0.785047 +v -0.300000 -0.000003 0.735047 +v -0.300000 -0.000001 0.785047 +v 0.000000 -0.300001 0.735047 +v 0.300002 -0.000001 0.785047 +v -0.212132 0.212131 0.735047 +v 0.185616 -0.185617 0.735047 +v 0.000000 -0.262503 0.685047 +v 0.185616 -0.185617 0.685047 +v 0.000000 -0.262503 0.735047 +v -0.185614 -0.185617 0.685047 +v 0.262502 -0.000003 0.735047 +v 0.262502 -0.000003 0.685047 +v 0.185616 0.185613 0.735047 +v 0.185616 0.185613 0.685047 +v 0.000000 0.262499 0.735047 +v 0.000000 0.262499 0.685047 +v -0.185614 0.185613 0.735047 +v -0.185614 0.185613 0.685047 +v -0.262500 -0.000003 0.735047 +v -0.262500 -0.000003 0.685047 +v -0.185614 -0.185617 0.735047 +vt 0.708333 0.791667 +vt 0.750000 0.777778 +vt 0.750000 0.791667 +vt 0.708333 0.805556 +vt 0.750000 0.805556 +vt 0.791667 0.791667 +vt 0.791667 0.805556 +vt 0.833333 0.805556 +vt 0.833333 0.791667 +vt 0.500000 0.791667 +vt 0.541667 0.805556 +vt 0.500000 0.805556 +vt 0.583333 0.805556 +vt 0.541667 0.791667 +vt 0.583333 0.791667 +vt 0.625000 0.791667 +vt 0.625000 0.805556 +vt 0.666667 0.805556 +vt 0.666667 0.819444 +vt 0.625000 0.833333 +vt 0.625000 0.819444 +vt 0.583333 0.819444 +vt 0.583333 0.833333 +vt 0.541667 0.833333 +vt 0.541667 0.819444 +vt 0.500000 0.833333 +vt 0.500000 0.819444 +vt 0.791667 0.833333 +vt 0.833333 1.000000 +vt 0.791667 1.000000 +vt 0.948390 0.893385 +vt 0.993256 0.923295 +vt 0.840078 0.965594 +vt 0.750000 1.000000 +vt 0.833333 0.819444 +vt 0.833333 0.833333 +vt 0.750000 0.819444 +vt 0.791667 0.819444 +vt 0.708333 0.819444 +vt 0.750000 0.833333 +vt 0.708333 0.833333 +vt 0.666667 0.833333 +vt 0.708333 1.000000 +vt 0.666667 1.000000 +vt 0.541667 1.000000 +vt 0.625000 1.000000 +vt 0.916667 0.778020 +vt 0.999638 0.833334 +vt 0.916667 0.888647 +vt 0.583333 1.000000 +vt 0.666667 0.777778 +vt 0.666667 0.791667 +vt 0.541667 0.777778 +vt 0.583333 0.777778 +vt 0.791667 0.777778 +vt 0.625000 0.777778 +vt 0.708333 0.777778 +vt 0.993255 0.965594 +vt 0.948390 0.995504 +vt 0.884942 0.995504 +vt 0.840077 0.923295 +vt 0.884942 0.893385 +vt 0.500000 1.000000 +vt 0.833696 0.833334 +vt 0.857998 0.794221 +vt 0.975336 0.794221 +vt 0.975336 0.872446 +vt 0.857998 0.872446 +vt 0.833333 0.777778 +vt 0.500000 0.777778 +vn 0.7071 0.7071 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 -0.0000 -0.0000 +s 1 +f 137/148/38 143/149/39 132/150/39 +f 132/150/40 152/151/40 137/148/40 +f 150/152/40 134/153/40 145/154/40 +f 148/155/40 134/153/40 142/156/40 +f 142/157/40 160/158/40 148/159/40 +f 158/160/40 129/161/40 140/162/40 +f 158/160/40 144/163/40 156/164/40 +f 144/163/40 154/165/40 156/164/40 +f 154/165/40 137/148/40 152/151/40 +f 155/166/41 119/167/41 157/168/41 +f 159/169/41 119/167/41 115/170/41 +f 114/171/41 159/169/41 115/170/41 +f 149/172/41 121/173/41 146/174/41 +f 124/175/42 120/176/43 122/177/42 +f 125/178/40 128/179/40 113/180/40 +f 128/181/39 124/175/42 122/177/42 +f 124/175/41 146/182/41 121/183/41 +f 124/175/41 151/184/41 147/185/41 +f 153/186/41 123/187/41 126/188/41 +f 155/166/41 126/188/41 117/189/41 +f 128/181/39 126/188/38 123/187/39 +f 117/189/44 125/190/38 118/191/44 +f 127/192/45 121/173/43 114/171/45 +f 116/193/46 115/170/47 119/167/46 +f 130/194/41 143/195/41 139/196/41 +f 127/192/45 115/170/47 113/197/47 +f 160/158/45 146/174/43 148/159/43 +f 145/154/42 151/184/39 150/152/39 +f 154/165/44 157/168/46 156/164/46 +f 148/155/43 147/185/42 145/154/42 +f 144/163/46 139/198/44 135/199/44 +f 152/151/38 155/166/44 154/165/44 +f 140/162/47 131/200/45 141/201/47 +f 132/150/39 133/202/42 134/153/42 +f 158/160/47 149/172/45 160/158/45 +f 133/202/42 142/156/43 134/153/42 +f 139/198/44 137/148/38 135/199/44 +f 150/152/39 153/186/38 152/151/38 +f 142/157/43 131/200/45 129/161/45 +f 144/163/46 141/201/47 138/203/46 +f 156/164/46 159/169/47 158/160/47 +f 119/167/46 118/191/44 116/193/46 +f 137/148/38 136/204/38 143/149/39 +f 132/150/40 150/152/40 152/151/40 +f 150/152/40 132/150/40 134/153/40 +f 148/155/40 145/154/40 134/153/40 +f 142/157/40 129/161/40 160/158/40 +f 158/160/40 160/158/40 129/161/40 +f 158/160/40 140/162/40 144/163/40 +f 144/163/40 135/199/40 154/165/40 +f 154/165/40 135/199/40 137/148/40 +f 155/166/41 117/189/41 119/167/41 +f 159/169/41 157/168/41 119/167/41 +f 114/171/41 149/172/41 159/169/41 +f 149/172/41 114/171/41 121/173/41 +f 124/175/42 121/183/43 120/176/43 +f 128/179/40 122/205/40 113/180/40 +f 122/205/40 120/206/40 113/180/40 +f 120/206/40 127/207/40 113/180/40 +f 113/180/40 116/208/40 118/209/40 +f 118/209/40 125/178/40 113/180/40 +f 128/181/39 123/187/39 124/175/42 +f 124/175/41 147/185/41 146/182/41 +f 124/175/41 123/187/41 151/184/41 +f 153/186/41 151/184/41 123/187/41 +f 155/166/41 153/186/41 126/188/41 +f 128/181/39 125/190/38 126/188/38 +f 117/189/44 126/188/38 125/190/38 +f 127/192/45 120/210/43 121/173/43 +f 116/193/46 113/197/47 115/170/47 +f 141/211/41 131/212/41 130/194/41 +f 130/194/41 133/213/41 143/195/41 +f 143/195/41 136/214/41 139/196/41 +f 139/196/41 138/215/41 141/211/41 +f 141/211/41 130/194/41 139/196/41 +f 127/192/45 114/171/45 115/170/47 +f 160/158/45 149/172/45 146/174/43 +f 145/154/42 147/185/42 151/184/39 +f 154/165/44 155/166/44 157/168/46 +f 148/155/43 146/182/43 147/185/42 +f 144/163/46 138/203/46 139/198/44 +f 152/151/38 153/186/38 155/166/44 +f 140/162/47 129/161/45 131/200/45 +f 132/150/39 143/149/39 133/202/42 +f 158/160/47 159/169/47 149/172/45 +f 133/202/42 130/216/43 142/156/43 +f 139/198/44 136/204/38 137/148/38 +f 150/152/39 151/184/39 153/186/38 +f 142/157/43 130/217/43 131/200/45 +f 144/163/46 140/162/47 141/201/47 +f 156/164/46 157/168/46 159/169/47 +f 119/167/46 117/189/44 118/191/44 +o Shotgun +v 0.317579 -0.317578 -1.223040 +v -0.449124 0.000000 -1.223040 +v 0.000000 0.449124 -1.223040 +v -0.317579 0.317579 -1.223040 +v 0.000000 -0.449123 -1.223040 +v -0.317579 -0.317578 -1.223040 +v 0.449124 0.000000 -1.223040 +v 0.317579 0.317579 -1.223040 +v 0.317579 -0.317578 0.334163 +v 0.000000 -0.449124 0.334163 +v -0.449124 -0.000000 0.334163 +v -0.317579 0.317579 0.334163 +v 0.317579 0.317579 0.334163 +v -0.317579 -0.317578 0.334163 +v 0.000000 0.449124 0.334163 +v 0.449124 -0.000000 0.334163 +v 0.158790 -0.158789 -0.473040 +v -0.224562 0.000000 -0.473040 +v 0.000000 0.224562 -0.473040 +v -0.158790 0.158790 -0.473040 +v 0.000000 -0.224561 -0.473040 +v -0.158790 -0.158789 -0.473040 +v 0.224562 0.000000 -0.473040 +v 0.158790 0.158790 -0.473040 +v 0.317579 -0.317578 -1.223040 +v -0.449124 0.000000 -1.223040 +v 0.000000 0.449124 -1.223040 +v -0.317579 0.317579 -1.223040 +v 0.000000 -0.449123 -1.223040 +v -0.317579 -0.317578 -1.223040 +v 0.449124 0.000000 -1.223040 +v 0.317579 0.317579 -1.223040 +v 0.158790 -0.158789 -0.473040 +v -0.224562 0.000000 -0.473040 +v 0.000000 0.224562 -0.473040 +v -0.158790 0.158790 -0.473040 +v 0.000000 -0.224561 -0.473040 +v -0.158790 -0.158789 -0.473040 +v 0.224562 0.000000 -0.473040 +v 0.158790 0.158790 -0.473040 +vt 0.391609 0.820490 +vt 0.415098 0.858295 +vt 0.358391 0.873954 +vt 0.334902 0.836150 +vt 0.358391 0.820490 +vt 0.415098 0.836149 +vt 0.391609 0.873954 +vt 0.334902 0.858295 +vt 0.125000 0.930556 +vt 0.083333 0.791667 +vt 0.125000 0.791667 +vt 0.083333 0.930556 +vt 0.041667 0.791667 +vt 0.166667 0.930556 +vt 0.166667 0.791667 +vt 0.333333 0.930556 +vt 0.291667 0.791667 +vt 0.333333 0.791667 +vt 0.291667 0.930556 +vt 0.250000 0.791667 +vt 0.250000 0.930556 +vt 0.208333 0.791667 +vt 0.208333 0.930556 +vt 0.041667 0.930556 +vt -0.000000 0.791667 +vt 0.333333 0.930556 +vt 0.291667 1.000000 +vt 0.291667 0.930556 +vt -0.000000 0.930556 +vt 0.041667 1.000000 +vt -0.000000 1.000000 +vt 0.083333 0.930556 +vt 0.041667 0.930556 +vt 0.125000 1.000000 +vt 0.083333 1.000000 +vt 0.166667 0.930556 +vt 0.125000 0.930556 +vt 0.208333 1.000000 +vt 0.208333 0.930556 +vt 0.250000 0.930556 +vt 0.250000 1.000000 +vt -0.000000 0.930556 +vt 0.333333 1.000000 +vt 0.166667 1.000000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.0000 0.9580 -0.2868 +vn -0.6774 0.6774 -0.2868 +vn 0.6774 0.6774 -0.2868 +vn 0.9580 0.0000 -0.2868 +vn 0.6774 -0.6774 -0.2868 +vn 0.0000 -0.9580 -0.2868 +vn -0.6774 -0.6774 -0.2868 +vn -0.9580 0.0000 -0.2868 +s off +f 179/218/48 183/219/48 181/220/48 +f 178/221/48 180/222/48 179/218/48 +f 179/218/48 184/223/48 183/219/48 +f 183/219/48 177/224/48 181/220/48 +f 181/220/48 182/225/48 178/221/48 +f 178/221/48 179/218/48 181/220/48 +s 1 +f 164/226/49 171/227/50 172/228/49 +f 162/229/50 174/230/51 171/227/50 +f 163/231/52 172/228/49 175/232/52 +f 165/233/53 169/234/54 170/235/53 +f 161/236/54 176/237/55 169/234/54 +f 167/238/55 173/239/56 176/237/55 +f 168/240/56 175/232/52 173/239/56 +f 166/241/51 170/242/53 174/230/51 +f 189/243/57 193/244/58 185/245/58 +f 189/246/57 198/247/59 197/248/57 +f 186/249/60 198/247/59 190/250/59 +f 186/249/60 196/251/61 194/252/60 +f 187/253/62 196/251/61 188/254/61 +f 200/255/63 187/253/62 192/256/63 +f 200/255/63 191/257/64 199/258/64 +f 191/257/64 193/244/58 199/258/64 +f 164/226/49 162/229/50 171/227/50 +f 162/229/50 166/241/51 174/230/51 +f 163/231/52 164/226/49 172/228/49 +f 165/233/53 161/236/54 169/234/54 +f 161/236/54 167/238/55 176/237/55 +f 167/238/55 168/240/56 173/239/56 +f 168/240/56 163/231/52 175/232/52 +f 166/241/51 165/259/53 170/242/53 +f 189/243/57 197/260/57 193/244/58 +f 189/246/57 190/250/59 198/247/59 +f 186/249/60 194/252/60 198/247/59 +f 186/249/60 188/254/61 196/251/61 +f 187/253/62 195/261/62 196/251/61 +f 200/255/63 195/261/62 187/253/62 +f 200/255/63 192/256/63 191/257/64 +f 191/257/64 185/245/58 193/244/58 +o AR2 +v 0.424264 -0.424264 -0.000000 +v 0.600000 0.000000 0.000000 +v -0.600000 0.000000 0.000000 +v 0.424264 -0.424264 -0.400000 +v -0.424264 -0.424264 -0.400000 +v -0.424264 0.424264 -0.400000 +v 0.424264 0.424264 0.000000 +v 0.000000 0.600000 0.000000 +v -0.424264 0.424264 0.000000 +v -0.424264 -0.424264 -0.000000 +v 0.000000 -0.600000 -0.000000 +v 0.000000 0.600000 -0.400000 +v 0.424264 0.424264 -0.400000 +v 0.600000 0.000000 -0.400000 +v 0.000000 -0.600000 -0.400000 +v -0.600000 0.000000 -0.400000 +v 0.000000 0.360000 -0.400000 +v 0.254558 0.254558 -1.200000 +v 0.000000 0.360000 -1.200000 +v 0.254558 0.254558 -0.400000 +v 0.360000 0.000000 -1.200000 +v 0.360000 0.000000 -0.400000 +v 0.254558 -0.254558 -1.200000 +v 0.254558 -0.254558 -0.400000 +v 0.000000 -0.360000 -1.200000 +v 0.000000 -0.360000 -0.400000 +v -0.254558 -0.254558 -1.200000 +v -0.254558 -0.254559 -0.400000 +v -0.360000 0.000000 -1.200000 +v -0.360000 0.000000 -0.400000 +v -0.254559 0.254558 -1.200000 +v -0.254559 0.254558 -0.400000 +vt 0.420629 0.529536 +vt 0.455696 0.585975 +vt 0.371038 0.609353 +vt 0.117187 0.528847 +vt 0.165063 0.560764 +vt 0.001603 0.605902 +vt 0.216442 0.637344 +vt 0.168983 0.560961 +vt 0.283558 0.529322 +vt 0.333333 0.638889 +vt 0.291667 0.708333 +vt 0.291667 0.638889 +vt 0.083333 0.638889 +vt 0.041667 0.708333 +vt 0.041667 0.638889 +vt 0.375000 0.500000 +vt 0.312500 0.527778 +vt 0.312500 0.500000 +vt 0.250000 0.638889 +vt 0.208333 0.708333 +vt 0.208333 0.638889 +vt 0.437500 0.500000 +vt 0.375000 0.527778 +vt 0.500000 0.500000 +vt 0.437500 0.527778 +vt 0.062500 0.500000 +vt -0.000000 0.527778 +vt -0.000000 0.500000 +vt 0.187500 0.500000 +vt 0.125000 0.527778 +vt 0.125000 0.500000 +vt -0.000000 0.708333 +vt -0.000000 0.638889 +vt 0.166667 0.638889 +vt 0.125000 0.708333 +vt 0.125000 0.638889 +vt 0.062500 0.527778 +vt 0.166667 0.708333 +vt 0.250000 0.708333 +vt 0.250000 0.527778 +vt 0.250000 0.500000 +vt 0.083333 0.708333 +vt 0.187500 0.527778 +vt 0.335971 0.552914 +vt 0.371037 0.529536 +vt 0.455696 0.552914 +vt 0.420629 0.609353 +vt 0.335971 0.585975 +vt 0.165063 0.605902 +vt 0.117187 0.637820 +vt 0.049480 0.637820 +vt 0.001603 0.560764 +vt 0.049480 0.528847 +vt 0.331017 0.560961 +vt 0.331017 0.605705 +vt 0.283558 0.637344 +vt 0.168983 0.605705 +vt 0.216442 0.529322 +vt 0.333333 0.708333 +vt 0.500000 0.527778 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 218/262/65 223/263/65 227/264/65 +f 213/265/65 214/266/65 216/267/65 +f 209/268/66 210/269/66 201/270/66 +f 226/271/67 223/272/68 224/273/68 +f 230/274/69 227/275/70 228/276/70 +f 202/277/71 213/278/72 207/279/72 +f 222/280/71 218/281/72 220/282/72 +f 201/283/68 214/284/71 202/277/71 +f 211/285/67 204/286/68 201/283/68 +f 210/287/70 215/288/67 211/289/67 +f 209/290/73 216/291/69 203/292/69 +f 228/276/70 225/293/67 226/294/67 +f 217/295/74 231/296/73 232/297/73 +f 203/292/69 205/298/70 210/287/70 +f 220/282/72 219/299/74 217/295/74 +f 224/273/68 221/300/71 222/280/71 +f 207/279/72 212/301/74 208/302/74 +f 232/297/73 229/303/69 230/274/69 +f 208/302/74 206/304/73 209/290/73 +f 231/305/65 219/306/65 218/262/65 +f 218/262/65 221/307/65 223/263/65 +f 223/263/65 225/308/65 227/264/65 +f 227/264/65 229/309/65 231/305/65 +f 231/305/65 218/262/65 227/264/65 +f 214/266/65 204/310/65 215/311/65 +f 215/311/65 205/312/65 214/266/65 +f 205/312/65 216/267/65 214/266/65 +f 216/267/65 206/313/65 212/314/65 +f 212/314/65 213/265/65 216/267/65 +f 201/270/66 202/315/66 207/316/66 +f 207/316/66 208/317/66 209/268/66 +f 209/268/66 203/318/66 210/269/66 +f 210/269/66 211/319/66 201/270/66 +f 201/270/66 207/316/66 209/268/66 +f 226/271/67 225/320/67 223/272/68 +f 230/274/69 229/303/69 227/275/70 +f 202/277/71 214/284/71 213/278/72 +f 222/280/71 221/300/71 218/281/72 +f 201/283/68 204/286/68 214/284/71 +f 211/285/67 215/321/67 204/286/68 +f 210/287/70 205/298/70 215/288/67 +f 209/290/73 206/304/73 216/291/69 +f 228/276/70 227/275/70 225/293/67 +f 217/295/74 219/299/74 231/296/73 +f 203/292/69 216/291/69 205/298/70 +f 220/282/72 218/281/72 219/299/74 +f 224/273/68 223/272/68 221/300/71 +f 207/279/72 213/278/72 212/301/74 +f 232/297/73 231/296/73 229/303/69 +f 208/302/74 212/301/74 206/304/73 diff --git a/src/main/resources/assets/hbm/models/machines/mixer.obj b/src/main/resources/assets/hbm/models/machines/mixer.obj new file mode 100644 index 000000000..b36f2b118 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/mixer.obj @@ -0,0 +1,1454 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Main +v -0.156250 3.000000 -0.377221 +v 0.156250 2.500000 -0.377221 +v -0.156250 2.500000 -0.377221 +v 0.156250 3.000000 -0.377221 +v 0.377221 2.500000 -0.156250 +v 0.377221 3.000000 -0.156250 +v 0.377221 2.500000 0.156250 +v 0.377221 3.000000 0.156250 +v 0.156250 2.500000 0.377221 +v 0.156250 3.000000 0.377221 +v -0.156250 2.500000 0.377221 +v -0.156250 3.000000 0.377221 +v -0.377221 2.500000 0.156250 +v -0.377221 3.000000 0.156250 +v -0.377221 2.500000 -0.156250 +v -0.377221 3.000000 -0.156250 +v -0.187500 0.687500 0.500000 +v -0.187500 0.312500 0.437500 +v -0.187500 0.312500 0.500000 +v -0.187500 0.687500 0.437500 +v 0.187500 0.687500 0.437500 +v 0.000000 0.500000 0.125000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.312500 0.437500 +v 0.187500 0.687500 0.500000 +v -0.500000 0.687500 -0.187500 +v -0.437500 0.312500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.437500 0.687500 -0.187500 +v -0.437500 0.687500 0.187500 +v -0.125000 0.500000 0.000000 +v -0.500000 0.312500 0.187500 +v -0.437500 0.312500 0.187500 +v -0.500000 0.687500 0.187500 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.312500 -0.437500 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.437500 +v -0.187500 0.687500 -0.437500 +v 0.000000 0.500000 -0.125000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.312500 -0.437500 +v -0.187500 0.687500 -0.500000 +v 0.500000 0.687500 0.187500 +v 0.437500 0.312500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.437500 0.687500 0.187500 +v 0.437500 0.687500 -0.187500 +v 0.125000 0.500000 0.000000 +v 0.500000 0.312500 -0.187500 +v 0.437500 0.312500 -0.187500 +v 0.500000 0.687500 -0.187500 +v 0.062500 1.075517 0.453905 +v -0.062500 0.987129 0.365517 +v -0.062500 1.075517 0.453905 +v -0.276765 1.075517 0.365154 +v -0.302653 0.987129 0.214265 +v -0.365153 1.075517 0.276765 +v -0.453905 1.075517 -0.062500 +v -0.365517 0.987129 0.062500 +v -0.365517 0.987129 -0.062500 +v -0.365154 1.075517 -0.276765 +v -0.214265 0.987129 -0.302653 +v -0.276765 1.075517 -0.365153 +v 0.062500 1.075517 -0.453905 +v -0.062500 0.987129 -0.365517 +v 0.062500 0.987129 -0.365517 +v 0.276765 1.075518 -0.365154 +v 0.302653 0.987129 -0.214265 +v 0.365153 1.075518 -0.276765 +v 0.453905 1.075518 0.062500 +v 0.365516 0.987129 -0.062500 +v 0.365516 0.987129 0.062500 +v 0.365153 1.075518 0.276765 +v 0.214265 0.987129 0.302653 +v 0.276765 1.075518 0.365153 +v -0.191298 1.136516 0.461833 +v -0.415650 1.086527 0.172168 +v -0.461833 1.136516 0.191298 +v 0.191298 1.136516 0.461833 +v -0.172168 1.086527 0.415650 +v 0.355806 2.656250 -0.400000 +v 0.400000 0.218750 -0.444194 +v 0.355806 0.218750 -0.400000 +v 0.400000 2.656250 -0.444194 +v 0.444194 0.218750 -0.400000 +v 0.444194 2.656250 -0.400000 +v 0.400000 0.218750 -0.355806 +v 0.400000 2.656250 -0.355806 +v 0.223223 2.656250 -0.267417 +v 0.400000 2.718750 -0.355806 +v 0.355806 2.718750 -0.400000 +v 0.267417 2.656250 -0.223223 +v 0.223223 2.718750 -0.267417 +v 0.267417 2.718750 -0.223223 +v 0.400000 2.656250 0.355806 +v 0.444194 0.218750 0.400000 +v 0.400000 0.218750 0.355806 +v 0.444194 2.656250 0.400000 +v 0.400000 0.218750 0.444194 +v 0.399999 2.656250 0.444194 +v 0.355806 0.218750 0.400000 +v 0.355805 2.656250 0.400000 +v 0.267417 2.656250 0.223223 +v 0.355805 2.718750 0.400000 +v 0.400000 2.718750 0.355806 +v 0.223223 2.718750 0.267418 +v 0.223223 2.656250 0.267418 +v 0.267417 2.718750 0.223223 +v -0.187500 0.500000 -0.452665 +v 0.187500 0.250000 -0.452665 +v -0.187500 0.250000 -0.452665 +v 0.187500 0.500000 -0.452665 +v 0.452665 0.250000 -0.187500 +v 0.452665 0.500000 -0.187500 +v 0.452665 0.250000 0.187500 +v 0.452665 0.500000 0.187500 +v 0.187500 0.250000 0.452665 +v 0.187500 0.500000 0.452665 +v -0.187500 0.250000 0.452665 +v -0.187500 0.500000 0.452665 +v -0.452665 0.250000 0.187500 +v 0.156250 0.625000 0.377221 +v -0.452665 0.500000 0.187500 +v -0.452665 0.250000 -0.187500 +v -0.452665 0.500000 -0.187500 +v -0.156250 0.625000 -0.377221 +v 0.156250 1.000000 -0.377221 +v 0.156250 0.625000 -0.377221 +v -0.377221 0.625000 -0.156250 +v 0.377221 0.625000 -0.156250 +v -0.156250 0.625000 0.377221 +v 0.377221 0.625000 0.156250 +v -0.377221 0.625000 0.156250 +v -0.156250 1.000000 0.377221 +v 0.156250 1.000000 0.377221 +v 0.377221 1.000000 -0.156250 +v -0.156250 1.000000 -0.377221 +v -0.377221 1.000000 0.156250 +v -0.377221 1.000000 -0.156250 +v 0.377221 1.000000 0.156250 +v -0.500000 0.250000 0.500000 +v -0.500000 0.187500 -0.500000 +v -0.500000 0.187500 0.500000 +v -0.500000 0.250000 -0.500000 +v 0.500000 0.187500 -0.500000 +v 0.500000 0.250000 -0.500000 +v 0.500000 0.187500 0.500000 +v 0.500000 0.250000 0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 -0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.437500 0.062500 0.437500 +v -0.437500 0.062500 0.437500 +v -0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.187500 0.437500 +v 0.500000 0.062500 0.500000 +v 0.437500 0.062500 -0.437500 +v 0.500000 0.062500 -0.500000 +v 0.500000 -0.000000 0.500000 +v 0.437500 0.187500 0.437500 +v 0.437500 0.187500 -0.437500 +v -0.437500 0.187500 -0.437500 +v -0.210427 2.414505 -0.508016 +v 0.191297 2.464493 -0.461833 +v 0.210427 2.414505 -0.508016 +v 0.062500 2.511245 -0.365517 +v -0.062500 2.422857 -0.453905 +v 0.062500 2.422857 -0.453905 +v 0.302653 2.511245 -0.214265 +v 0.276765 2.422857 -0.365154 +v 0.365153 2.422857 -0.276765 +v 0.365517 2.511245 0.062500 +v 0.453905 2.422857 -0.062500 +v 0.453905 2.422857 0.062500 +v 0.214265 2.511245 0.302653 +v 0.365154 2.422857 0.276765 +v 0.276765 2.422857 0.365153 +v -0.062500 2.422857 0.453905 +v 0.062500 2.511245 0.365517 +v 0.062500 2.422857 0.453905 +v -0.365153 2.422857 0.276765 +v -0.214265 2.511245 0.302653 +v -0.276765 2.422857 0.365154 +v -0.453905 2.422857 -0.062500 +v -0.365516 2.511245 0.062500 +v -0.453905 2.422857 0.062500 +v -0.276765 2.422857 -0.365153 +v -0.302653 2.511245 -0.214265 +v -0.365153 2.422857 -0.276765 +v 0.062500 0.987129 0.365517 +v -0.214265 0.987129 0.302654 +v -0.453905 1.075517 0.062500 +v -0.302654 0.987129 -0.214265 +v -0.062500 1.075517 -0.453905 +v 0.214265 0.987129 -0.302653 +v 0.453905 1.075518 -0.062500 +v 0.302653 0.987129 0.214265 +v 0.172168 1.086527 0.415650 +v -0.191298 2.464493 -0.461833 +v -0.062500 2.511245 -0.365517 +v 0.214265 2.511245 -0.302654 +v 0.365517 2.511245 -0.062500 +v 0.302654 2.511245 0.214265 +v -0.062500 2.511245 0.365517 +v -0.302653 2.511245 0.214265 +v -0.365516 2.511245 -0.062500 +v -0.214265 2.511245 -0.302653 +v 0.210427 1.086527 -0.508016 +v 0.461833 1.136516 -0.191298 +v 0.508016 1.086527 -0.210427 +v 0.191297 1.136516 -0.461833 +v 0.415650 1.086527 -0.172168 +v 0.172168 1.086527 -0.415650 +v 0.461833 1.036539 -0.191298 +v 0.191297 1.036539 -0.461833 +v -0.210427 1.086527 -0.508016 +v -0.191298 1.136516 -0.461833 +v -0.172168 1.086527 -0.415650 +v -0.191298 1.036539 -0.461833 +v -0.508016 1.086527 -0.210427 +v -0.461833 1.136516 -0.191297 +v -0.415650 1.086527 -0.172168 +v -0.461833 1.036539 -0.191297 +v -0.508016 1.086527 0.210427 +v -0.461833 1.036539 0.191298 +v -0.191298 1.036539 0.461833 +v 0.210427 1.086527 0.508016 +v -0.210427 1.086527 0.508016 +v 0.508016 1.086527 0.210428 +v 0.461833 1.136516 0.191298 +v 0.415650 1.086527 0.172168 +v 0.191298 1.036539 0.461833 +v 0.461833 1.036539 0.191298 +v 0.000000 2.500000 -0.326641 +v 0.230970 1.000000 -0.230970 +v 0.000000 1.000000 -0.326641 +v 0.230970 2.500000 -0.230970 +v 0.326641 1.000000 0.000000 +v 0.326641 2.500000 0.000000 +v 0.230970 1.000000 0.230970 +v 0.230970 2.500000 0.230970 +v 0.000000 1.000000 0.326641 +v 0.000000 2.500000 0.326641 +v -0.230970 1.000000 0.230970 +v -0.230970 2.500000 0.230970 +v -0.326641 1.000000 0.000000 +v -0.326641 2.500000 0.000000 +v -0.230970 1.000000 -0.230970 +v -0.230970 2.500000 -0.230970 +v 0.461833 2.464493 -0.191298 +v 0.508016 2.414505 -0.210427 +v 0.172168 2.414505 -0.415650 +v 0.415650 2.414505 -0.172168 +v 0.461833 2.364516 -0.191298 +v -0.172168 2.414505 -0.415650 +v 0.191297 2.364516 -0.461833 +v -0.191298 2.364516 -0.461833 +v -0.508016 2.414505 -0.210427 +v -0.461833 2.464493 -0.191297 +v -0.415650 2.414505 -0.172168 +v -0.461833 2.364516 -0.191297 +v -0.508016 2.414505 0.210427 +v -0.415650 2.414505 0.172168 +v -0.461833 2.364516 0.191298 +v -0.210427 2.414505 0.508016 +v -0.461833 2.464493 0.191298 +v -0.191298 2.464493 0.461833 +v -0.172168 2.414505 0.415650 +v -0.191298 2.364516 0.461833 +v 0.191298 2.464493 0.461833 +v 0.172168 2.414505 0.415650 +v 0.191298 2.364516 0.461833 +v 0.508016 2.414505 0.210428 +v 0.210427 2.414505 0.508016 +v 0.461833 2.464493 0.191298 +v 0.415650 2.414505 0.172168 +v 0.461833 2.364516 0.191298 +v -0.355806 2.656250 0.400000 +v -0.400000 0.218750 0.444194 +v -0.355806 0.218750 0.400000 +v -0.400000 2.656250 0.444194 +v -0.444194 0.218750 0.400000 +v -0.444194 2.656250 0.400000 +v -0.400000 0.218750 0.355806 +v -0.400000 2.656250 0.355806 +v -0.223223 2.656250 0.267417 +v -0.400000 2.718750 0.355806 +v -0.355806 2.718750 0.400000 +v -0.267417 2.656250 0.223223 +v -0.223223 2.718750 0.267417 +v -0.267417 2.718750 0.223223 +v -0.400000 2.656250 -0.355806 +v -0.444194 0.218750 -0.400000 +v -0.400000 0.218750 -0.355806 +v -0.444194 2.656250 -0.400000 +v -0.400000 0.218750 -0.444194 +v -0.399999 2.656250 -0.444194 +v -0.355806 0.218750 -0.400000 +v -0.355805 2.656250 -0.400000 +v -0.267417 2.656250 -0.223223 +v -0.355805 2.718750 -0.400000 +v -0.400000 2.718750 -0.355806 +v -0.223223 2.718750 -0.267418 +v -0.223223 2.656250 -0.267418 +v -0.267417 2.718750 -0.223223 +vt 0.740741 0.236364 +vt 0.666667 0.327273 +vt 0.666667 0.236364 +vt 0.740741 0.327273 +vt 0.666667 0.418182 +vt 0.740741 0.418182 +vt 0.666667 0.509091 +vt 0.740741 0.509091 +vt 0.666667 0.600000 +vt 0.740741 0.600000 +vt 0.666667 0.690909 +vt 0.740741 0.690909 +vt 0.666667 0.781818 +vt 0.777778 1.000000 +vt 0.740741 0.818182 +vt 0.870370 0.927273 +vt 0.740741 0.781818 +vt 0.666667 0.872727 +vt 0.740741 0.145455 +vt 0.666667 0.145455 +vt 0.962963 1.000000 +vt 0.870370 0.818182 +vt 0.907407 0.745455 +vt 0.157407 0.872727 +vt 0.148148 0.763636 +vt 0.157407 0.763636 +vt 0.148148 0.636364 +vt 0.148148 0.527273 +vt 0.194444 0.581818 +vt 0.222222 0.872727 +vt 0.212963 0.763636 +vt 0.222222 0.763636 +vt 0.212963 0.872727 +vt 0.212963 0.745455 +vt 0.157407 0.745455 +vt 0.157407 0.890909 +vt 0.212963 0.890909 +vt 0.148148 0.527273 +vt 0.148148 0.418182 +vt 0.194444 0.472727 +vt 0.148148 0.745455 +vt 0.148148 0.636364 +vt 0.194444 0.690909 +vt 0.157407 0.872727 +vt 0.148148 0.763636 +vt 0.157407 0.763636 +vt 0.148148 0.636364 +vt 0.148148 0.527273 +vt 0.194444 0.581818 +vt 0.222222 0.872727 +vt 0.212963 0.763636 +vt 0.222222 0.763636 +vt 0.212963 0.872727 +vt 0.212963 0.745455 +vt 0.157407 0.745455 +vt 0.212963 0.890909 +vt 0.148148 0.527273 +vt 0.148148 0.418182 +vt 0.194444 0.472727 +vt 0.148148 0.745455 +vt 0.148148 0.636364 +vt 0.194444 0.690909 +vt 0.157407 0.872727 +vt 0.148148 0.763636 +vt 0.157407 0.763636 +vt 0.148148 0.636364 +vt 0.148148 0.527273 +vt 0.194444 0.581818 +vt 0.222222 0.872727 +vt 0.212963 0.763636 +vt 0.222222 0.763636 +vt 0.212963 0.872727 +vt 0.157407 0.745455 +vt 0.157407 0.890909 +vt 0.212963 0.890909 +vt 0.148148 0.527273 +vt 0.148148 0.418182 +vt 0.194444 0.472727 +vt 0.148148 0.745455 +vt 0.148148 0.636364 +vt 0.194444 0.690909 +vt 0.157407 0.872727 +vt 0.148148 0.763636 +vt 0.157407 0.763636 +vt 0.148148 0.636364 +vt 0.148148 0.527273 +vt 0.194444 0.581818 +vt 0.222222 0.872727 +vt 0.212963 0.763636 +vt 0.222222 0.763636 +vt 0.212963 0.872727 +vt 0.157407 0.745455 +vt 0.157407 0.890909 +vt 0.212963 0.890909 +vt 0.148148 0.527273 +vt 0.148148 0.418182 +vt 0.194444 0.472727 +vt 0.148148 0.745455 +vt 0.148148 0.636364 +vt 0.194444 0.690909 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.222222 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.890909 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.222222 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.890909 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.222222 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.890909 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.037037 0.054545 +vt 0.398148 0.036364 +vt 0.398148 0.054545 +vt 0.037037 0.036364 +vt 0.398148 0.018182 +vt 0.037037 0.018182 +vt 0.398148 -0.000000 +vt 0.037037 0.072727 +vt 0.398148 0.072727 +vt 0.027778 0.072727 +vt 0.000000 0.054545 +vt 0.027778 0.054545 +vt 0.027778 0.018182 +vt 0.032371 0.009804 +vt 0.032371 0.044742 +vt 0.027778 0.036364 +vt 0.000000 0.000000 +vt 0.027778 0.000000 +vt 0.000000 0.036364 +vt 0.000000 0.018182 +vt 0.037037 0.054545 +vt 0.398148 0.036364 +vt 0.398148 0.054545 +vt 0.037037 0.036364 +vt 0.398148 0.018182 +vt 0.037037 0.018182 +vt 0.398148 -0.000000 +vt 0.037037 0.072727 +vt 0.398148 0.072727 +vt 0.027778 0.072727 +vt 0.000000 0.054545 +vt 0.027778 0.054545 +vt 0.027778 0.018182 +vt 0.032371 0.009804 +vt 0.032371 0.044742 +vt 0.027778 0.036364 +vt 0.027778 0.000000 +vt 0.000000 0.018182 +vt 0.000000 0.000000 +vt 0.000000 0.036364 +vt 0.351852 0.927273 +vt 0.407407 1.000000 +vt 0.351852 1.000000 +vt 0.407407 0.927273 +vt 0.462963 1.000000 +vt 0.462963 0.927273 +vt 0.518519 1.000000 +vt 0.518519 0.927273 +vt 0.574074 1.000000 +vt 0.574074 0.927273 +vt 0.629630 1.000000 +vt 0.629630 0.927273 +vt 0.685185 1.000000 +vt 0.569408 0.872727 +vt 0.685185 0.927273 +vt 0.740741 1.000000 +vt 0.296296 0.927273 +vt 0.296296 1.000000 +vt 0.620370 0.763636 +vt 0.574074 0.872727 +vt 0.574074 0.763636 +vt 0.736075 0.872727 +vt 0.740741 0.927273 +vt 0.458297 0.872727 +vt 0.624963 0.872727 +vt 0.347186 0.872727 +vt 0.402741 0.872727 +vt 0.513852 0.872727 +vt 0.680519 0.872727 +vt 0.333333 0.509091 +vt 0.388889 0.509091 +vt 0.425926 0.690909 +vt 0.666667 0.763636 +vt 0.620370 0.872727 +vt 0.388889 0.763636 +vt 0.342593 0.872727 +vt 0.342593 0.763636 +vt 0.481481 0.763636 +vt 0.435185 0.872727 +vt 0.435185 0.763636 +vt 0.527778 0.872727 +vt 0.527778 0.763636 +vt 0.296296 0.872727 +vt 0.296296 0.763636 +vt 0.388889 0.872727 +vt 0.481481 0.872727 +vt 0.296296 1.000000 +vt 0.148148 0.981818 +vt 0.296296 0.981818 +vt 0.296296 1.000000 +vt 0.148148 0.981818 +vt 0.296296 0.981818 +vt 0.296296 1.000000 +vt 0.148148 0.981818 +vt 0.296296 0.981818 +vt 0.296296 1.000000 +vt 0.148148 0.981818 +vt 0.296296 0.981818 +vt 0.000000 1.000000 +vt 0.148148 0.709091 +vt 0.148148 1.000000 +vt 0.148148 0.709091 +vt 0.000000 0.418182 +vt 0.148148 0.418182 +vt 0.148148 0.909091 +vt 0.287037 0.927273 +vt 0.157407 0.927273 +vt 0.148148 0.909091 +vt 0.287037 0.927273 +vt 0.157407 0.927273 +vt 0.157407 0.963636 +vt 0.148148 0.909091 +vt 0.287037 0.927273 +vt 0.157407 0.927273 +vt 0.296296 0.909091 +vt 0.148148 0.890909 +vt 0.296296 0.890909 +vt 0.296296 0.909091 +vt 0.148148 0.890909 +vt 0.296296 0.890909 +vt 0.296296 0.909091 +vt 0.148148 0.890909 +vt 0.296296 0.890909 +vt 0.296296 0.909091 +vt 0.148148 0.890909 +vt 0.296296 0.890909 +vt 0.148148 0.909091 +vt 0.287037 0.927273 +vt 0.157407 0.927273 +vt 0.287037 0.963636 +vt 0.157407 0.963636 +vt 0.287037 0.963636 +vt 0.287037 0.963636 +vt 0.287037 0.963636 +vt 0.157407 0.963636 +vt 0.157407 0.963636 +vt 0.222222 0.381818 +vt 0.148148 0.363636 +vt 0.148148 0.381818 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.222222 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.222222 0.854545 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.833333 0.745455 +vt 0.870370 0.818182 +vt 0.833333 1.000000 +vt 0.740741 0.927273 +vt 0.777778 0.745455 +vt 0.740741 0.872727 +vt 0.962963 0.745455 +vt 1.000000 0.818182 +vt 1.000000 0.927273 +vt 0.907407 1.000000 +vt 0.870370 0.927273 +vt 0.148148 0.872727 +vt 0.148148 0.872727 +vt 0.157407 0.890909 +vt 0.148148 0.872727 +vt 0.212963 0.745455 +vt 0.148148 0.872727 +vt 0.212963 0.745455 +vt 0.240741 0.890909 +vt 0.240741 0.890909 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.240741 0.854545 +vt 0.240741 0.890909 +vt 0.037037 0.000000 +vt 0.000000 0.072727 +vt 0.037037 0.000000 +vt 0.000000 0.072727 +vt 0.523112 0.872727 +vt 0.689778 0.872727 +vt 0.412001 0.872727 +vt 0.578667 0.872727 +vt 0.300889 0.872727 +vt 0.356445 0.872727 +vt 0.467556 0.872727 +vt 0.634223 0.872727 +vt 0.388889 0.763636 +vt 0.333333 0.763636 +vt 0.296296 0.690909 +vt 0.296296 0.581818 +vt 0.425926 0.581818 +vt 0.666667 0.872727 +vt 0.148148 1.000000 +vt 0.148148 1.000000 +vt 0.148148 1.000000 +vt 0.148148 1.000000 +vt 0.000000 0.709091 +vt 0.000000 0.709091 +vt 0.222222 0.363636 +vt 0.240741 0.890909 +vt 0.240741 0.890909 +vt 0.240741 0.890909 +vt 0.240741 0.890909 +vt 0.222222 0.890909 +vt 0.222222 0.890909 +vt 0.222222 0.890909 +vt 0.222222 0.890909 +vt 0.037037 0.054545 +vt 0.398148 0.036364 +vt 0.398148 0.054545 +vt 0.037037 0.036364 +vt 0.398148 0.018182 +vt 0.037037 0.018182 +vt 0.398148 -0.000000 +vt 0.037037 0.072727 +vt 0.398148 0.072727 +vt 0.027778 0.072727 +vt 0.000000 0.054545 +vt 0.027778 0.054545 +vt 0.027778 0.018182 +vt 0.032371 0.009804 +vt 0.032371 0.044742 +vt 0.027778 0.036364 +vt 0.000000 0.000000 +vt 0.027778 0.000000 +vt 0.000000 0.036364 +vt 0.000000 0.018182 +vt 0.037037 0.054545 +vt 0.398148 0.036364 +vt 0.398148 0.054545 +vt 0.037037 0.036364 +vt 0.398148 0.018182 +vt 0.037037 0.018182 +vt 0.398148 -0.000000 +vt 0.037037 0.072727 +vt 0.398148 0.072727 +vt 0.027778 0.072727 +vt 0.000000 0.054545 +vt 0.027778 0.054545 +vt 0.027778 0.018182 +vt 0.032371 0.009804 +vt 0.032371 0.044742 +vt 0.027778 0.036364 +vt 0.027778 0.000000 +vt 0.000000 0.018182 +vt 0.000000 0.000000 +vt 0.000000 0.036364 +vt 0.037037 0.000000 +vt 0.000000 0.072727 +vt 0.037037 0.000000 +vt 0.000000 0.072727 +vt 0.148148 0.400000 +vt 0.083333 0.418182 +vt 0.074074 0.400000 +vt 0.222222 0.400000 +vt 0.157407 0.418182 +vt 0.138889 0.418182 +vt 0.212963 0.418182 +vt 0.148148 0.381818 +vt 0.222222 0.400000 +vt 0.222222 0.381818 +vt 0.148148 0.400000 +vt 0.212963 0.418182 +vt 0.157407 0.345455 +vt 0.222222 0.363636 +vt 0.212963 0.345455 +vt 0.148148 0.363636 +vt 0.074074 0.381818 +vt 0.074074 0.400000 +vt 0.138889 0.418182 +vt 0.083333 0.345455 +vt 0.138889 0.345455 +vt 0.074074 0.363636 +vt 0.000000 0.381818 +vt 0.000000 0.400000 +vt 0.064815 0.418182 +vt 0.009259 0.345455 +vt 0.064815 0.345455 +vt 0.000000 0.363636 +vt 0.074074 0.381818 +vt 0.009259 0.418182 +vt 0.064815 0.345455 +vt 0.074074 0.363636 +vt 0.138889 0.345455 +vt 0.083333 0.345455 +vt 0.148148 0.363636 +vt 0.222222 0.381818 +vt 0.148148 0.381818 +vt 0.212963 0.345455 +vt 0.157407 0.345455 +vt 0.296296 0.381818 +vt 0.296296 0.400000 +vt 0.231481 0.418182 +vt 0.287037 0.345455 +vt 0.222222 0.363636 +vt 0.231481 0.345455 +vt 0.296296 0.363636 +vt 0.287037 0.418182 +vt 0.231481 0.345455 +vt 0.518518 0.509091 +vt 0.481481 0.072727 +vt 0.518518 0.072727 +vt 0.481481 0.509091 +vt 0.444444 0.072727 +vt 0.444444 0.509091 +vt 0.407407 0.072727 +vt 0.407407 0.509091 +vt 0.370370 0.072727 +vt 0.370370 0.509091 +vt 0.333333 0.072727 +vt 0.333333 0.509091 +vt 0.296296 0.072727 +vt 0.592593 0.509091 +vt 0.555556 0.072727 +vt 0.592593 0.072727 +vt 0.555556 0.509091 +vt 0.074074 0.363636 +vt 0.074074 0.381818 +vt 0.138889 0.345455 +vt 0.083333 0.345455 +vt 0.138889 0.418182 +vt 0.074074 0.400000 +vt 0.083333 0.418182 +vt 0.157407 0.345455 +vt 0.212963 0.418182 +vt 0.148148 0.400000 +vt 0.157407 0.418182 +vt 0.222222 0.400000 +vt 0.296296 0.381818 +vt 0.296296 0.363636 +vt 0.231481 0.345455 +vt 0.287037 0.418182 +vt 0.231481 0.418182 +vt 0.296296 0.400000 +vt 0.222222 0.381818 +vt 0.231481 0.345455 +vt 0.287037 0.345455 +vt 0.231481 0.418182 +vt 0.222222 0.400000 +vt 0.148148 0.381818 +vt 0.222222 0.363636 +vt 0.148148 0.363636 +vt 0.212963 0.345455 +vt 0.157407 0.418182 +vt 0.212963 0.418182 +vt 0.148148 0.400000 +vt 0.074074 0.363636 +vt 0.138889 0.345455 +vt 0.083333 0.418182 +vt 0.138889 0.418182 +vt 0.074074 0.400000 +vt 0.000000 0.381818 +vt 0.074074 0.381818 +vt -0.000000 0.363636 +vt 0.064815 0.345455 +vt 0.009259 0.418182 +vt 0.064815 0.418182 +vt 0.000000 0.400000 +vt 0.009259 0.345455 +vt 0.157407 0.418182 +vt 0.083333 0.418182 +vt 0.064815 0.418182 +vt 0.231481 0.418182 +vt 0.296296 0.509091 +vt 0.212963 0.345455 +vt 0.157407 0.345455 +vt 0.083333 0.345455 +vt 0.064815 0.345455 +vt 0.064815 0.418182 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.8575 -0.5145 +vn -0.8575 0.0000 -0.5145 +vn 0.8575 0.0000 -0.5145 +vn 0.5145 0.8575 0.0000 +vn 0.5145 0.0000 -0.8575 +vn 0.5145 -0.0000 0.8575 +vn 0.0000 0.8575 0.5145 +vn 0.8575 -0.0000 0.5145 +vn -0.8575 -0.0000 0.5145 +vn -0.5145 0.8575 0.0000 +vn -0.5145 -0.0000 0.8575 +vn -0.5145 0.0000 -0.8575 +vn 0.0000 0.7071 -0.7071 +vn 0.5000 0.7071 -0.5000 +vn 0.7071 0.7071 0.0000 +vn 0.5000 0.7071 0.5000 +vn 0.0000 0.7071 0.7071 +vn -0.5000 0.7071 0.5000 +vn -0.7071 0.7071 0.0000 +vn -0.5000 0.7071 -0.5000 +vn 0.6054 0.5167 0.6054 +vn -0.8561 0.5167 0.0000 +vn 0.6054 0.5167 -0.6054 +vn 0.0000 0.5167 0.8561 +vn -0.6054 0.5167 -0.6054 +vn 0.0000 0.5167 -0.8561 +vn 0.8561 0.5167 0.0000 +vn -0.6054 0.5167 0.6054 +vn 0.0000 0.6786 -0.7345 +vn -0.2911 0.9479 -0.1290 +vn 0.8594 -0.1872 -0.4757 +vn 0.0588 0.9916 0.1149 +vn 0.2279 0.9710 0.0718 +vn 0.3421 0.4484 -0.8258 +vn -0.5767 0.1695 -0.7992 +vn 0.3827 -0.0000 -0.9239 +vn 0.1588 0.9851 -0.0658 +vn 0.9239 -0.0000 -0.3827 +vn 0.0658 0.9851 -0.1588 +vn -0.9239 -0.0000 0.3827 +vn -0.3827 -0.0000 0.9239 +vn 0.1588 -0.9851 -0.0658 +vn 0.0658 -0.9851 -0.1588 +vn -0.3827 -0.0000 -0.9239 +vn -0.0658 0.9851 -0.1588 +vn 0.3827 -0.0000 0.9239 +vn -0.0658 -0.9851 -0.1588 +vn -0.9239 -0.0000 -0.3827 +vn -0.1588 0.9851 -0.0658 +vn 0.9239 -0.0000 0.3827 +vn -0.1588 -0.9851 -0.0658 +vn -0.1588 -0.9851 0.0658 +vn -0.0658 -0.9851 0.1588 +vn 0.1588 0.9851 0.0658 +vn 0.0658 -0.9851 0.1588 +vn 0.1588 -0.9851 0.0658 +vn -0.0657 0.9851 -0.1588 +vn 0.0657 0.9851 -0.1588 +vn -0.1588 0.9851 0.0658 +vn -0.0658 0.9851 0.1588 +vn 0.0658 0.9851 0.1588 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 10/10/5 11/11/5 9/9/5 +f 12/12/6 13/13/6 11/11/6 +f 14/14/7 10/15/7 1/16/7 +f 14/17/8 15/18/8 13/13/8 +f 16/19/9 3/3/9 15/20/9 +f 7/21/10 13/22/10 15/23/10 +f 17/24/8 18/25/8 19/26/8 +f 20/27/11 21/28/11 22/29/11 +f 21/30/3 23/31/3 24/32/3 +f 25/33/5 19/26/5 23/31/5 +f 24/34/10 19/26/10 18/35/10 +f 20/36/7 25/33/7 21/37/7 +f 18/38/12 20/39/12 22/40/12 +f 21/41/13 24/42/13 22/43/13 +f 26/44/1 27/45/1 28/46/1 +f 29/47/14 30/48/14 31/49/14 +f 30/50/5 32/51/5 33/52/5 +f 34/53/8 28/46/8 32/51/8 +f 33/54/10 28/46/10 27/55/10 +f 30/56/7 26/44/7 34/53/7 +f 27/57/15 29/58/15 31/59/15 +f 30/60/16 33/61/16 31/62/16 +f 35/63/3 36/64/3 37/65/3 +f 38/66/17 39/67/17 40/68/17 +f 39/69/8 41/70/8 42/71/8 +f 43/72/1 37/65/1 41/70/1 +f 36/73/10 41/70/10 37/65/10 +f 38/74/7 43/72/7 39/75/7 +f 36/76/18 38/77/18 40/78/18 +f 39/79/19 42/80/19 40/81/19 +f 44/82/5 45/83/5 46/84/5 +f 47/85/20 48/86/20 49/87/20 +f 48/88/1 50/89/1 51/90/1 +f 52/91/3 46/84/3 50/89/3 +f 45/92/10 50/89/10 46/84/10 +f 47/93/7 52/91/7 48/94/7 +f 45/95/21 47/96/21 49/97/21 +f 48/98/22 51/99/22 49/100/22 +f 53/101/23 54/102/23 55/103/23 +f 56/104/24 57/105/24 58/106/24 +f 59/107/25 60/108/25 61/109/25 +f 62/110/26 63/111/26 64/112/26 +f 65/113/27 66/114/27 67/115/27 +f 68/116/28 69/117/28 70/118/28 +f 71/119/29 72/120/29 73/121/29 +f 74/122/30 75/123/30 76/124/30 +f 82/125/9 83/126/9 84/127/9 +f 85/128/2 86/129/2 83/126/2 +f 87/130/4 88/131/4 86/129/4 +f 89/132/6 84/127/6 88/133/6 +f 89/134/10 90/135/10 82/136/10 +f 85/128/24 91/137/24 87/130/24 +f 89/138/4 87/130/4 91/137/4 +f 85/128/9 82/139/9 92/140/9 +f 91/137/4 93/141/4 89/142/4 +f 92/140/9 90/135/9 94/143/9 +f 92/140/7 95/144/7 91/137/7 +f 96/145/2 97/146/2 98/147/2 +f 99/148/4 100/149/4 97/146/4 +f 101/150/6 102/151/6 100/149/6 +f 103/152/9 98/147/9 102/153/9 +f 103/154/10 104/155/10 96/156/10 +f 99/148/26 105/157/26 101/150/26 +f 103/158/6 101/150/6 105/157/6 +f 99/148/2 96/159/2 106/160/2 +f 103/161/6 107/162/6 108/163/6 +f 96/156/2 109/164/2 106/160/2 +f 106/160/7 107/162/7 105/157/7 +f 110/165/1 111/166/1 112/167/1 +f 113/168/2 114/169/2 111/166/2 +f 115/170/3 116/171/3 114/169/3 +f 117/172/4 118/173/4 116/171/4 +f 119/174/5 120/175/5 118/173/5 +f 121/176/6 122/177/6 120/175/6 +f 117/172/31 123/178/31 119/174/31 +f 124/179/8 125/180/8 122/177/8 +f 126/181/9 112/167/9 125/182/9 +f 127/183/1 128/184/1 129/185/1 +f 124/179/32 130/186/32 126/187/32 +f 113/168/33 131/188/33 115/170/33 +f 119/174/34 132/189/34 121/176/34 +f 126/181/35 127/190/35 110/165/35 +f 110/165/36 129/191/36 113/168/36 +f 115/170/37 133/192/37 117/172/37 +f 121/176/38 134/193/38 124/179/38 +f 135/194/7 136/195/7 137/196/7 +f 130/197/9 138/198/9 127/183/9 +f 132/199/6 139/200/6 134/201/6 +f 133/202/4 136/203/4 123/204/4 +f 129/185/2 137/205/2 131/206/2 +f 134/201/8 140/207/8 130/208/8 +f 132/199/5 136/203/5 135/209/5 +f 131/206/3 141/210/3 133/202/3 +f 142/211/8 143/212/8 144/213/8 +f 145/214/1 146/215/1 143/216/1 +f 147/217/3 148/218/3 146/219/3 +f 149/220/5 144/221/5 148/222/5 +f 150/223/10 151/224/10 152/225/10 +f 145/226/7 149/227/7 147/228/7 +f 153/229/7 154/230/7 155/231/7 +f 156/232/7 155/233/7 157/234/7 +f 154/230/5 158/235/5 155/231/5 +f 159/236/7 160/237/7 154/238/7 +f 153/239/8 152/240/8 151/241/8 +f 156/242/1 150/243/1 152/244/1 +f 161/245/3 162/246/3 150/247/3 +f 159/248/5 151/249/5 162/250/5 +f 161/251/7 157/252/7 160/253/7 +f 143/212/10 158/254/10 144/213/10 +f 160/237/3 163/255/3 154/238/3 +f 148/218/10 164/256/10 146/219/10 +f 146/215/10 165/257/10 143/216/10 +f 144/221/10 163/258/10 148/222/10 +f 155/233/8 165/259/8 157/234/8 +f 157/252/1 164/260/1 160/253/1 +f 166/261/39 167/262/39 168/263/39 +f 169/264/23 171/265/23 170/266/23 +f 172/267/24 174/268/24 173/269/24 +f 175/270/25 177/271/25 176/272/25 +f 178/273/26 180/274/26 179/275/26 +f 181/276/27 183/277/27 182/278/27 +f 184/279/28 186/280/28 185/281/28 +f 187/282/29 189/283/29 188/284/29 +f 190/285/30 192/286/30 191/287/30 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/10/4 9/9/4 +f 10/10/5 12/12/5 11/11/5 +f 12/12/6 14/17/6 13/13/6 +f 6/288/7 4/289/7 1/16/7 +f 1/16/7 16/290/7 14/14/7 +f 14/14/7 12/291/7 10/15/7 +f 10/15/7 8/292/7 6/288/7 +f 6/288/7 1/16/7 10/15/7 +f 14/17/8 16/293/8 15/18/8 +f 16/19/9 1/1/9 3/3/9 +f 15/23/10 3/294/10 7/21/10 +f 2/295/10 5/296/10 7/21/10 +f 7/21/10 9/297/10 11/298/10 +f 11/298/10 13/22/10 7/21/10 +f 3/294/10 2/295/10 7/21/10 +f 17/24/8 20/299/8 18/25/8 +f 21/30/3 25/33/3 23/31/3 +f 25/33/5 17/24/5 19/26/5 +f 24/34/10 23/31/10 19/26/10 +f 20/36/7 17/24/7 25/33/7 +f 26/44/1 29/300/1 27/45/1 +f 30/50/5 34/53/5 32/51/5 +f 34/53/8 26/44/8 28/46/8 +f 33/54/10 32/51/10 28/46/10 +f 30/56/7 29/301/7 26/44/7 +f 35/63/3 38/302/3 36/64/3 +f 39/69/8 43/72/8 41/70/8 +f 43/72/1 35/63/1 37/65/1 +f 36/73/10 42/303/10 41/70/10 +f 38/74/7 35/63/7 43/72/7 +f 44/82/5 47/304/5 45/83/5 +f 48/88/1 52/91/1 50/89/1 +f 52/91/3 44/82/3 46/84/3 +f 45/92/10 51/305/10 50/89/10 +f 47/93/7 44/82/7 52/91/7 +f 53/101/23 193/306/23 54/102/23 +f 56/104/24 194/307/24 57/105/24 +f 59/107/25 195/308/25 60/108/25 +f 62/110/26 196/309/26 63/111/26 +f 65/113/27 197/310/27 66/114/27 +f 68/116/28 198/311/28 69/117/28 +f 71/119/29 199/312/29 72/120/29 +f 74/122/30 200/313/30 75/123/30 +f 82/125/9 85/128/9 83/126/9 +f 85/128/2 87/130/2 86/129/2 +f 87/130/4 89/314/4 88/131/4 +f 89/132/6 82/125/6 84/127/6 +f 89/134/10 93/315/10 90/135/10 +f 85/128/24 92/140/24 91/137/24 +f 91/137/4 95/144/4 93/141/4 +f 92/140/9 82/136/9 90/135/9 +f 92/140/7 94/143/7 95/144/7 +f 96/145/2 99/148/2 97/146/2 +f 99/148/4 101/150/4 100/149/4 +f 101/150/6 103/316/6 102/151/6 +f 103/152/9 96/145/9 98/147/9 +f 103/154/10 108/317/10 104/155/10 +f 99/148/26 106/160/26 105/157/26 +f 103/161/6 105/157/6 107/162/6 +f 96/156/2 104/155/2 109/164/2 +f 106/160/7 109/164/7 107/162/7 +f 110/165/1 113/168/1 111/166/1 +f 113/168/2 115/170/2 114/169/2 +f 115/170/3 117/172/3 116/171/3 +f 117/172/4 119/174/4 118/173/4 +f 119/174/5 121/176/5 120/175/5 +f 121/176/6 124/179/6 122/177/6 +f 117/172/31 133/318/31 123/178/31 +f 124/179/8 126/187/8 125/180/8 +f 126/181/9 110/165/9 112/167/9 +f 127/183/1 138/198/1 128/184/1 +f 124/179/32 134/319/32 130/186/32 +f 113/168/33 129/320/33 131/188/33 +f 119/174/34 123/321/34 132/189/34 +f 126/181/35 130/322/35 127/190/35 +f 110/165/36 127/323/36 129/191/36 +f 115/170/37 131/324/37 133/192/37 +f 121/176/38 132/325/38 134/193/38 +f 137/196/7 128/326/7 138/327/7 +f 138/327/7 140/328/7 139/329/7 +f 139/329/7 135/194/7 137/196/7 +f 136/195/7 141/330/7 137/196/7 +f 137/196/7 138/327/7 139/329/7 +f 130/197/9 140/331/9 138/198/9 +f 132/199/6 135/209/6 139/200/6 +f 133/202/4 141/210/4 136/203/4 +f 129/185/2 128/184/2 137/205/2 +f 134/201/8 139/200/8 140/207/8 +f 132/199/5 123/204/5 136/203/5 +f 131/206/3 137/205/3 141/210/3 +f 142/211/8 145/332/8 143/212/8 +f 145/214/1 147/333/1 146/215/1 +f 147/217/3 149/334/3 148/218/3 +f 149/220/5 142/335/5 144/221/5 +f 150/223/10 162/336/10 151/224/10 +f 145/226/7 142/337/7 149/227/7 +f 153/229/7 159/248/7 154/230/7 +f 156/232/7 153/239/7 155/233/7 +f 154/230/5 163/258/5 158/235/5 +f 159/236/7 161/245/7 160/237/7 +f 153/239/8 156/232/8 152/240/8 +f 156/242/1 161/251/1 150/243/1 +f 161/245/3 159/236/3 162/246/3 +f 159/248/5 153/229/5 151/249/5 +f 161/251/7 156/242/7 157/252/7 +f 143/212/10 165/259/10 158/254/10 +f 160/237/3 164/256/3 163/255/3 +f 148/218/10 163/255/10 164/256/10 +f 146/215/10 164/260/10 165/257/10 +f 144/221/10 158/235/10 163/258/10 +f 155/233/8 158/254/8 165/259/8 +f 157/252/1 165/257/1 164/260/1 +f 166/261/39 202/338/39 167/262/39 +f 169/264/23 170/266/23 203/339/23 +f 172/267/24 173/269/24 204/340/24 +f 175/270/25 176/272/25 205/341/25 +f 178/273/26 179/275/26 206/342/26 +f 181/276/27 182/278/27 207/343/27 +f 184/279/28 185/281/28 208/344/28 +f 187/282/29 188/284/29 209/345/29 +f 190/285/30 191/287/30 210/346/30 +f 281/347/4 282/348/4 283/349/4 +f 284/350/6 285/351/6 282/348/6 +f 286/352/9 287/353/9 285/351/9 +f 288/354/2 283/349/2 287/355/2 +f 288/356/10 289/357/10 281/358/10 +f 284/350/28 290/359/28 286/352/28 +f 288/360/9 286/352/9 290/359/9 +f 284/350/4 281/361/4 291/362/4 +f 290/359/9 292/363/9 288/364/9 +f 291/362/4 289/357/4 293/365/4 +f 291/362/7 294/366/7 290/359/7 +f 295/367/6 296/368/6 297/369/6 +f 298/370/9 299/371/9 296/368/9 +f 300/372/2 301/373/2 299/371/2 +f 302/374/4 297/369/4 301/375/4 +f 302/376/10 303/377/10 295/378/10 +f 298/370/30 304/379/30 300/372/30 +f 302/380/2 300/372/2 304/379/2 +f 298/370/6 295/381/6 305/382/6 +f 302/383/2 306/384/2 307/385/2 +f 295/378/6 308/386/6 305/382/6 +f 305/382/7 306/384/7 304/379/7 +f 281/347/4 284/350/4 282/348/4 +f 284/350/6 286/352/6 285/351/6 +f 286/352/9 288/387/9 287/353/9 +f 288/354/2 281/347/2 283/349/2 +f 288/356/10 292/388/10 289/357/10 +f 284/350/28 291/362/28 290/359/28 +f 290/359/9 294/366/9 292/363/9 +f 291/362/4 281/358/4 289/357/4 +f 291/362/7 293/365/7 294/366/7 +f 295/367/6 298/370/6 296/368/6 +f 298/370/9 300/372/9 299/371/9 +f 300/372/2 302/389/2 301/373/2 +f 302/374/4 295/367/4 297/369/4 +f 302/376/10 307/390/10 303/377/10 +f 298/370/30 305/382/30 304/379/30 +f 302/383/2 304/379/2 306/384/2 +f 295/378/6 303/377/6 308/386/6 +f 305/382/7 308/386/7 306/384/7 +s 1 +f 77/391/40 78/392/41 79/393/42 +f 80/394/43 81/395/44 77/391/40 +f 77/391/40 81/396/44 78/392/41 +f 80/394/43 201/397/45 81/395/44 +f 211/398/46 212/399/47 213/400/48 +f 214/401/49 215/402/50 212/399/47 +f 216/403/51 217/404/52 215/405/50 +f 218/406/53 213/400/48 217/404/52 +f 219/407/54 214/401/49 211/398/46 +f 220/408/55 216/409/51 214/401/49 +f 221/410/56 218/406/53 216/411/51 +f 222/412/57 211/398/46 218/406/53 +f 223/413/58 220/408/55 219/407/54 +f 224/414/59 221/415/56 220/408/55 +f 225/416/60 222/412/57 221/417/56 +f 226/418/61 219/407/54 222/412/57 +f 227/419/50 224/414/59 223/413/58 +f 79/393/42 225/420/60 224/414/59 +f 78/421/41 226/418/61 225/416/60 +f 228/422/62 223/413/58 226/418/61 +f 227/419/50 77/391/40 79/393/42 +f 81/423/44 228/422/62 78/424/41 +f 229/425/63 227/419/50 228/422/62 +f 230/426/56 77/391/40 231/427/51 +f 201/428/45 229/425/63 81/429/44 +f 229/425/63 230/426/56 231/427/51 +f 232/430/60 80/394/43 230/426/56 +f 233/431/64 201/432/45 80/394/43 +f 234/433/58 235/434/65 201/435/45 +f 236/436/66 230/426/56 235/434/65 +f 213/400/48 233/431/64 232/430/60 +f 212/399/47 234/437/58 233/431/64 +f 215/438/50 236/436/66 234/433/58 +f 217/404/52 232/430/60 236/436/66 +f 237/439/1 238/440/2 239/441/1 +f 240/442/2 241/443/3 238/440/2 +f 242/444/3 243/445/4 241/443/3 +f 244/446/4 245/447/5 243/445/4 +f 246/448/5 247/449/6 245/447/5 +f 248/450/6 249/451/8 247/449/6 +f 250/452/8 251/453/9 249/454/8 +f 252/455/9 239/441/1 251/453/9 +f 168/263/46 253/456/47 254/457/48 +f 253/456/47 255/458/51 256/459/50 +f 255/460/51 257/461/52 256/462/50 +f 257/461/52 168/263/46 254/457/48 +f 202/338/67 255/463/51 167/262/68 +f 258/464/56 259/465/53 255/466/51 +f 260/467/57 168/263/46 259/465/53 +f 261/468/58 202/338/67 166/261/54 +f 262/469/59 258/470/56 202/338/67 +f 263/471/60 260/467/57 258/472/56 +f 264/473/61 166/261/54 260/467/57 +f 265/474/50 262/469/59 261/468/58 +f 262/469/59 266/475/48 263/476/60 +f 266/477/48 264/473/61 263/471/60 +f 267/478/62 261/468/58 264/473/61 +f 268/479/51 269/480/69 265/474/50 +f 270/481/70 266/482/48 269/480/69 +f 271/483/46 267/478/62 266/484/48 +f 272/485/63 265/474/50 267/478/62 +f 268/479/51 273/486/71 270/481/70 +f 273/486/71 271/487/46 270/481/70 +f 274/488/54 272/485/63 271/489/46 +f 275/490/65 268/479/51 272/485/63 +f 276/491/60 273/486/71 277/492/56 +f 278/493/64 274/494/54 273/486/71 +f 279/495/58 275/490/65 274/496/54 +f 280/497/66 277/492/56 275/490/65 +f 254/457/48 278/493/64 276/491/60 +f 253/456/47 279/498/58 278/493/64 +f 279/495/58 257/461/52 280/497/66 +f 257/461/52 276/491/60 280/497/66 +f 211/398/46 214/401/49 212/399/47 +f 214/401/49 216/499/51 215/402/50 +f 216/403/51 218/406/53 217/404/52 +f 218/406/53 211/398/46 213/400/48 +f 219/407/54 220/408/55 214/401/49 +f 220/408/55 221/500/56 216/409/51 +f 221/410/56 222/412/57 218/406/53 +f 222/412/57 219/407/54 211/398/46 +f 223/413/58 224/414/59 220/408/55 +f 224/414/59 225/420/60 221/415/56 +f 225/416/60 226/418/61 222/412/57 +f 226/418/61 223/413/58 219/407/54 +f 227/419/50 79/393/42 224/414/59 +f 79/393/42 78/501/41 225/420/60 +f 78/421/41 228/422/62 226/418/61 +f 228/422/62 227/419/50 223/413/58 +f 227/419/50 231/427/51 77/391/40 +f 81/423/44 229/425/63 228/422/62 +f 229/425/63 231/427/51 227/419/50 +f 230/426/56 80/394/43 77/391/40 +f 201/428/45 235/434/65 229/425/63 +f 229/425/63 235/434/65 230/426/56 +f 232/430/60 233/431/64 80/394/43 +f 233/431/64 234/437/58 201/432/45 +f 234/433/58 236/436/66 235/434/65 +f 236/436/66 232/430/60 230/426/56 +f 213/400/48 212/399/47 233/431/64 +f 212/399/47 215/502/50 234/437/58 +f 215/438/50 217/404/52 236/436/66 +f 217/404/52 213/400/48 232/430/60 +f 237/439/1 240/442/2 238/440/2 +f 240/442/2 242/444/3 241/443/3 +f 242/444/3 244/446/4 243/445/4 +f 244/446/4 246/448/5 245/447/5 +f 246/448/5 248/450/6 247/449/6 +f 248/450/6 250/503/8 249/451/8 +f 250/452/8 252/455/9 251/453/9 +f 252/455/9 237/439/1 239/441/1 +f 168/263/46 167/262/68 253/456/47 +f 253/456/47 167/262/68 255/458/51 +f 255/460/51 259/465/53 257/461/52 +f 257/461/52 259/465/53 168/263/46 +f 202/338/67 258/504/56 255/463/51 +f 258/464/56 260/467/57 259/465/53 +f 260/467/57 166/261/54 168/263/46 +f 261/468/58 262/469/59 202/338/67 +f 262/469/59 263/476/60 258/470/56 +f 263/471/60 264/473/61 260/467/57 +f 264/473/61 261/468/58 166/261/54 +f 265/474/50 269/480/69 262/469/59 +f 262/469/59 269/480/69 266/475/48 +f 266/477/48 267/478/62 264/473/61 +f 267/478/62 265/474/50 261/468/58 +f 268/479/51 270/481/70 269/480/69 +f 270/481/70 271/505/46 266/482/48 +f 271/483/46 272/485/63 267/478/62 +f 272/485/63 268/479/51 265/474/50 +f 268/479/51 277/492/56 273/486/71 +f 273/486/71 274/506/54 271/487/46 +f 274/488/54 275/490/65 272/485/63 +f 275/490/65 277/492/56 268/479/51 +f 276/491/60 278/493/64 273/486/71 +f 278/493/64 279/498/58 274/494/54 +f 279/495/58 280/497/66 275/490/65 +f 280/497/66 276/491/60 277/492/56 +f 254/457/48 253/456/47 278/493/64 +f 253/456/47 256/507/50 279/498/58 +f 279/495/58 256/508/50 257/461/52 +f 257/461/52 254/457/48 276/491/60 +o Mixer +v 0.281250 1.001012 0.000000 +v -0.281250 2.499874 0.000000 +v -0.281250 1.001012 0.000000 +v 0.000000 1.001012 0.281250 +v 0.000000 2.499874 -0.281250 +v 0.000000 1.001012 -0.281250 +v 0.281250 2.499874 0.000000 +v 0.000000 2.499874 0.281250 +vt 0.824074 0.309091 +vt 0.740741 0.745455 +vt 0.740741 0.309091 +vt 0.824074 0.309091 +vt 0.740741 0.745455 +vt 0.740741 0.309091 +vt 0.824074 0.745455 +vt 0.824074 0.745455 +vn 0.0000 -0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 309/509/72 310/510/72 311/511/72 +f 312/512/73 313/513/73 314/514/73 +f 309/509/72 315/515/72 310/510/72 +f 312/512/73 316/516/73 313/513/73 +o Fluid +v 0.000000 2.500000 -0.301419 +v 0.212905 1.000000 -0.213135 +v 0.000000 1.000000 -0.301419 +v 0.212905 2.500000 -0.213135 +v 0.301094 1.000000 0.000000 +v 0.301094 2.500000 0.000000 +v 0.212905 1.000000 0.213135 +v 0.212905 2.500000 0.213135 +v 0.000000 1.000000 0.301419 +v 0.000000 2.500000 0.301419 +v -0.212906 1.000000 0.213135 +v -0.212906 2.500000 0.213135 +v -0.301094 1.000000 0.000000 +v -0.301094 2.500000 0.000000 +v -0.212906 1.000000 -0.213135 +v -0.212906 2.500000 -0.213135 +v 0.000000 2.500000 -0.301419 +v 0.212905 2.500000 -0.213135 +v 0.301094 2.500000 0.000000 +v 0.212905 2.500000 0.213135 +v 0.000000 2.500000 0.301419 +v -0.212906 2.500000 0.213135 +v -0.301094 2.500000 0.000000 +v -0.212906 2.500000 -0.213135 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7074 0.0000 -0.7068 +vn 1.0000 0.0000 0.0000 +vn 0.7074 -0.0000 0.7068 +vn 0.0000 -0.0000 1.0000 +vn -0.7074 -0.0000 0.7068 +vn -1.0000 -0.0000 0.0000 +vn -0.7074 0.0000 -0.7068 +s off +f 339/517/74 337/518/74 333/519/74 +f 335/520/74 334/521/74 333/519/74 +f 333/522/74 340/523/74 339/524/74 +f 339/517/74 338/525/74 337/526/74 +f 337/527/74 336/528/74 335/529/74 +f 335/520/74 333/530/74 337/526/74 +s 1 +f 317/531/75 318/532/76 319/533/75 +f 320/534/76 321/535/77 318/536/76 +f 322/537/77 323/538/78 321/539/77 +f 324/540/78 325/541/79 323/542/78 +f 326/543/79 327/544/80 325/545/79 +f 328/546/80 329/547/81 327/548/80 +f 330/549/81 331/550/82 329/551/81 +f 332/552/82 319/553/75 331/554/82 +f 317/531/75 320/555/76 318/536/76 +f 320/534/76 322/556/77 321/539/77 +f 322/537/77 324/557/78 323/542/78 +f 324/540/78 326/558/79 325/545/79 +f 326/543/79 328/559/80 327/548/80 +f 328/546/80 330/560/81 329/551/81 +f 330/549/81 332/561/82 331/554/82 +f 332/552/82 317/562/75 319/533/75 diff --git a/src/main/resources/assets/hbm/models/turret_cheapo_base.obj b/src/main/resources/assets/hbm/models/turret_cheapo_base.obj deleted file mode 100644 index 842d7ba86..000000000 --- a/src/main/resources/assets/hbm/models/turret_cheapo_base.obj +++ /dev/null @@ -1,333 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_cheapo_base.blend' -# www.blender.org -o Grid.001_Grid.003 -v -0.500000 0.062500 0.500000 -v -0.375000 0.062500 0.500000 -v 0.375000 0.062500 0.500000 -v 0.500000 0.062500 0.500000 -v -0.500000 0.062500 0.375000 -v -0.375000 0.062500 0.375000 -v 0.375000 0.062500 0.375000 -v 0.500000 0.062500 0.375000 -v -0.125000 0.875000 0.125000 -v 0.000000 0.875000 0.125000 -v 0.125000 0.875000 0.125000 -v -0.125000 0.875000 0.000000 -v 0.000000 0.875000 0.000000 -v 0.125000 0.875000 0.000000 -v -0.125000 0.875000 -0.125000 -v 0.000000 0.875000 -0.125000 -v 0.125000 0.875000 -0.125000 -v -0.500000 0.062500 -0.375000 -v -0.375000 0.062500 -0.375000 -v 0.375000 0.062500 -0.375000 -v 0.500000 0.062500 -0.375000 -v -0.500000 0.062500 -0.500000 -v -0.375000 0.062500 -0.500000 -v 0.375000 0.062500 -0.500000 -v 0.500000 0.062500 -0.500000 -v -0.562500 0.062500 0.312500 -v -0.562500 0.062500 0.562500 -v -0.312500 0.062500 0.562500 -v -0.312500 0.062500 0.312500 -v 0.312500 0.062500 0.562500 -v 0.312500 0.062500 0.312500 -v 0.562500 0.062500 0.562500 -v 0.562500 0.062500 0.312500 -v -0.312500 0.062500 -0.312500 -v -0.562500 0.062500 -0.312500 -v 0.562500 0.062500 -0.312500 -v 0.312500 0.062500 -0.312500 -v -0.562500 0.062500 -0.562500 -v -0.312500 0.062500 -0.562500 -v 0.312500 0.062500 -0.562500 -v 0.562500 0.062500 -0.562500 -v -0.562500 0.000000 0.312500 -v -0.562500 0.000000 0.562500 -v -0.312500 0.000000 0.562500 -v -0.312500 0.000000 0.312500 -v 0.312500 0.000000 0.562500 -v 0.312500 0.000000 0.312500 -v 0.562500 0.000000 0.562500 -v 0.562500 0.000000 0.312500 -v -0.312500 0.000000 -0.312500 -v -0.562500 0.000000 -0.312500 -v 0.562500 0.000000 -0.312500 -v 0.312500 0.000000 -0.312500 -v -0.562500 0.000000 -0.562500 -v -0.312500 0.000000 -0.562500 -v 0.312500 0.000000 -0.562500 -v 0.562500 0.000000 -0.562500 -v -0.125000 1.000000 0.125000 -v -0.125000 1.000000 -0.125000 -v 0.125000 1.000000 0.125000 -v 0.125000 1.000000 -0.125000 -vt 0.824881 0.881975 -vt 0.795084 0.911772 -vt 0.795084 0.792586 -vt 0.388946 0.701344 -vt 0.388946 0.743483 -vt 0.304668 0.659206 -vt 0.429963 0.038108 -vt 0.429962 0.500675 -vt 0.375000 0.477643 -vt 0.265076 0.061140 -vt 0.320038 0.038108 -vt 0.320038 0.500675 -vt 0.484925 0.061140 -vt 0.875000 0.477643 -vt 0.875000 0.015075 -vt 0.929962 0.038108 -vt 0.820038 0.500675 -vt 0.820038 0.038108 -vt 0.629790 0.617067 -vt 0.629790 0.574928 -vt 0.714067 0.659205 -vt 0.765076 0.061140 -vt 0.984925 0.061140 -vt 0.984925 0.523708 -vt 0.929962 0.500675 -vt 0.625000 0.477643 -vt 0.570038 0.500675 -vt 0.570038 0.038108 -vt 0.515076 0.523708 -vt 0.515076 0.061140 -vt 0.625000 0.015075 -vt 0.679962 0.038108 -vt 0.734925 0.061140 -vt 0.734925 0.523708 -vt 0.679963 0.500675 -vt 0.884474 0.673045 -vt 0.914270 0.702842 -vt 0.795084 0.702842 -vt 0.375000 0.015075 -vt 0.015076 0.061140 -vt 0.070038 0.038108 -vt 0.070038 0.500675 -vt 0.234925 0.061140 -vt 0.234924 0.523708 -vt 0.179962 0.500675 -vt 0.179962 0.038108 -vt 0.125000 0.477643 -vt 0.125000 0.015075 -vt 0.283599 0.638136 -vt 0.367876 0.553859 -vt 0.795084 0.762789 -vt 0.914270 0.762789 -vt 0.629790 0.743483 -vt 0.608721 0.764552 -vt 0.524443 0.680275 -vt 0.367876 0.764552 -vt 0.283599 0.680275 -vt 0.671929 0.659205 -vt 0.346807 0.659206 -vt 0.388946 0.574928 -vt 0.884474 0.822382 -vt 0.914270 0.792586 -vt 0.914270 0.911772 -vt 0.629790 0.701344 -vt 0.545512 0.659205 -vt 0.388946 0.617067 -vt 0.473223 0.659205 -vt 0.884474 0.881975 -vt 0.431084 0.659205 -vt 0.824881 0.673045 -vt 0.795084 0.583655 -vt 0.824881 0.613452 -vt 0.914270 0.583655 -vt 0.824881 0.822382 -vt 0.884474 0.613452 -vt 0.587651 0.659205 -vt 0.582273 0.794703 -vt 0.701459 0.794703 -vt 0.701459 0.913889 -vt 0.283599 0.794703 -vt 0.402785 0.794703 -vt 0.402785 0.913889 -vt 0.015075 0.822382 -vt 0.134262 0.822382 -vt 0.134262 0.941568 -vt 0.432936 0.794703 -vt 0.552122 0.794703 -vt 0.552122 0.913889 -vt 0.650859 0.553859 -vt 0.735137 0.638136 -vt 0.410015 0.553859 -vt 0.494292 0.638136 -vt 0.765288 0.911772 -vt 0.765288 0.792586 -vt 0.494292 0.680275 -vt 0.410015 0.764552 -vt 0.944067 0.792586 -vt 0.944067 0.911772 -vt 0.765288 0.702842 -vt 0.765288 0.583655 -vt 0.914270 0.941568 -vt 0.795084 0.941568 -vt 0.795084 0.553859 -vt 0.914270 0.553859 -vt 0.524443 0.638136 -vt 0.608721 0.553859 -vt 0.944067 0.583655 -vt 0.944067 0.702842 -vt 0.735137 0.680275 -vt 0.650859 0.764552 -vt 0.914270 0.732638 -vt 0.795084 0.732638 -vt 0.074669 0.732638 -vt 0.193855 0.732638 -vt 0.134262 0.792231 -vt 0.015075 0.732638 -vt 0.015075 0.673045 -vt 0.193855 0.613452 -vt 0.074669 0.613452 -vt 0.134262 0.553859 -vt 0.253448 0.673045 -vt 0.253448 0.732638 -vt 0.265076 0.523708 -vt 0.484924 0.523708 -vt 0.765076 0.523708 -vt 0.015075 0.523708 -vt 0.582273 0.913889 -vt 0.283599 0.913889 -vt 0.015075 0.941568 -vt 0.432936 0.913889 -vt 0.193855 0.792231 -vt 0.074669 0.792231 -vt 0.015075 0.613452 -vt 0.074669 0.553859 -vt 0.193855 0.553859 -vt 0.253448 0.613452 -vn 0.000000 1.000000 0.000000 -vn 0.000000 0.419100 0.908000 -vn 0.000000 -0.419100 -0.908000 -vn 0.908000 -0.419100 0.000000 -vn -0.908000 0.419100 0.000000 -vn 0.000000 0.419100 -0.908000 -vn 0.000000 -0.419100 0.908000 -vn 0.908000 0.419100 0.000000 -vn -0.908000 -0.419100 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 -1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -s off -f 22/1/1 38/2/1 35/3/1 -f 5/4/1 26/5/1 27/6/1 -f 2/7/2 10/8/2 9/9/2 -f 6/10/3 5/11/3 12/12/3 -f 10/8/4 2/7/4 6/13/4 -f 15/14/5 22/15/5 18/16/5 -f 15/14/6 16/17/6 23/18/6 -f 20/19/1 37/20/1 36/21/1 -f 19/22/4 23/18/4 16/17/4 -f 19/23/7 13/24/7 12/25/7 -f 17/26/8 14/27/8 21/28/8 -f 14/27/7 13/29/7 20/30/7 -f 17/26/6 25/31/6 24/32/6 -f 20/33/9 13/34/9 16/35/9 -f 8/36/1 33/37/1 31/38/1 -f 5/11/5 1/39/5 9/9/5 -f 7/40/9 3/41/9 10/42/9 -f 7/43/3 13/44/3 14/45/3 -f 8/46/8 14/45/8 11/47/8 -f 3/41/2 4/48/2 11/47/2 -f 27/6/10 43/49/10 44/50/10 -f 35/3/10 51/51/10 50/52/10 -f 41/53/11 57/54/11 56/55/11 -f 26/5/12 42/56/12 43/57/12 -f 21/58/1 36/21/1 41/53/1 -f 1/59/1 27/6/1 28/60/1 -f 19/61/1 34/62/1 39/63/1 -f 25/64/1 41/53/1 40/65/1 -f 2/66/1 28/60/1 29/67/1 -f 23/68/1 39/63/1 38/2/1 -f 6/69/1 29/67/1 26/5/1 -f 7/70/1 31/38/1 30/71/1 -f 3/72/1 30/71/1 32/73/1 -f 18/74/1 35/3/1 34/62/1 -f 4/75/1 32/73/1 33/37/1 -f 24/76/1 40/65/1 37/20/1 -f 42/77/13 45/78/13 44/79/13 -f 47/80/13 49/81/13 48/82/13 -f 54/83/13 55/84/13 50/85/13 -f 56/86/13 57/87/13 52/88/13 -f 37/20/10 53/89/10 52/90/10 -f 28/60/14 44/91/14 45/92/14 -f 38/2/12 54/93/12 51/94/12 -f 29/67/11 45/95/11 42/96/11 -f 34/62/14 50/97/14 55/98/14 -f 31/38/12 47/99/12 46/100/12 -f 39/63/11 55/101/11 54/102/11 -f 30/71/10 46/103/10 48/104/10 -f 40/65/12 56/105/12 53/106/12 -f 32/73/14 48/107/14 49/108/14 -f 36/21/14 52/109/14 57/110/14 -f 33/37/11 49/111/11 47/112/11 -f 59/113/11 61/114/11 16/115/11 -f 59/113/12 15/116/12 12/117/12 -f 60/118/10 58/119/10 10/120/10 -f 60/118/1 61/114/1 59/113/1 -f 14/121/14 17/122/14 61/114/14 -f 18/74/1 22/1/1 35/3/1 -f 1/59/1 5/4/1 27/6/1 -f 1/39/2 2/7/2 9/9/2 -f 13/123/3 6/10/3 12/12/3 -f 13/124/4 10/8/4 6/13/4 -f 12/25/5 15/14/5 18/16/5 -f 22/15/6 15/14/6 23/18/6 -f 21/58/1 20/19/1 36/21/1 -f 13/125/4 19/22/4 16/17/4 -f 18/16/7 19/23/7 12/25/7 -f 25/31/8 17/26/8 21/28/8 -f 21/28/7 14/27/7 20/30/7 -f 16/35/6 17/26/6 24/32/6 -f 24/32/9 20/33/9 16/35/9 -f 7/70/1 8/36/1 31/38/1 -f 12/12/5 5/11/5 9/9/5 -f 13/126/9 7/40/9 10/42/9 -f 8/46/3 7/43/3 14/45/3 -f 4/48/8 8/46/8 11/47/8 -f 10/42/2 3/41/2 11/47/2 -f 28/60/10 27/6/10 44/50/10 -f 34/62/10 35/3/10 50/52/10 -f 40/65/11 41/53/11 56/55/11 -f 27/6/12 26/5/12 43/57/12 -f 25/64/1 21/58/1 41/53/1 -f 2/66/1 1/59/1 28/60/1 -f 23/68/1 19/61/1 39/63/1 -f 24/76/1 25/64/1 40/65/1 -f 6/69/1 2/66/1 29/67/1 -f 22/1/1 23/68/1 38/2/1 -f 5/4/1 6/69/1 26/5/1 -f 3/72/1 7/70/1 30/71/1 -f 4/75/1 3/72/1 32/73/1 -f 19/61/1 18/74/1 34/62/1 -f 8/36/1 4/75/1 33/37/1 -f 20/19/1 24/76/1 37/20/1 -f 43/127/13 42/77/13 44/79/13 -f 46/128/13 47/80/13 48/82/13 -f 51/129/13 54/83/13 50/85/13 -f 53/130/13 56/86/13 52/88/13 -f 36/21/10 37/20/10 52/90/10 -f 29/67/14 28/60/14 45/92/14 -f 35/3/12 38/2/12 51/94/12 -f 26/5/11 29/67/11 42/96/11 -f 39/63/14 34/62/14 55/98/14 -f 30/71/12 31/38/12 46/100/12 -f 38/2/11 39/63/11 54/102/11 -f 32/73/10 30/71/10 48/104/10 -f 37/20/12 40/65/12 53/106/12 -f 33/37/14 32/73/14 49/108/14 -f 41/53/14 36/21/14 57/110/14 -f 31/38/11 33/37/11 47/112/11 -f 17/131/11 16/115/11 61/114/11 -f 15/132/11 59/113/11 16/115/11 -f 12/117/12 9/133/12 58/119/12 -f 58/119/12 59/113/12 12/117/12 -f 9/134/10 10/120/10 58/119/10 -f 11/135/10 60/118/10 10/120/10 -f 58/119/1 60/118/1 59/113/1 -f 61/114/14 60/118/14 14/121/14 -f 11/136/14 14/121/14 60/118/14 diff --git a/src/main/resources/assets/hbm/models/turret_cheapo_gun.obj b/src/main/resources/assets/hbm/models/turret_cheapo_gun.obj deleted file mode 100644 index b11c7b566..000000000 --- a/src/main/resources/assets/hbm/models/turret_cheapo_gun.obj +++ /dev/null @@ -1,512 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_cheapo_gun.blend' -# www.blender.org -o Cylinder -v -0.009151 -0.034151 1.462500 -v -0.052452 -0.059151 1.462500 -v -0.009151 -0.034151 0.462500 -v -0.052452 -0.059151 0.462500 -v -0.034151 0.009151 1.462500 -v -0.077452 -0.015849 1.462500 -v -0.034151 0.009151 0.462500 -v -0.077452 -0.015849 0.462500 -v 0.034151 0.009151 1.462500 -v 0.077452 -0.015849 1.462500 -v 0.034151 0.009151 0.462500 -v 0.077452 -0.015849 0.462500 -v 0.009151 -0.034151 1.462500 -v 0.052452 -0.059151 1.462500 -v 0.009151 -0.034151 0.462500 -v 0.052452 -0.059151 0.462500 -v -0.025000 0.025000 1.462500 -v -0.025000 0.075000 1.462500 -v -0.025000 0.025000 0.462500 -v -0.025000 0.075000 0.462500 -v 0.025000 0.025000 1.462500 -v 0.025000 0.075000 1.462500 -v 0.025000 0.025000 0.462500 -v 0.025000 0.075000 0.462500 -v 0.000000 0.100000 0.400000 -v 0.000000 0.100000 0.462500 -v 0.070711 0.070711 0.400000 -v 0.070711 0.070711 0.462500 -v 0.100000 -0.000000 0.400000 -v 0.100000 0.000000 0.462500 -v 0.070711 -0.070711 0.400000 -v 0.070711 -0.070711 0.462500 -v -0.000000 -0.100000 0.400000 -v -0.000000 -0.100000 0.462500 -v -0.070711 -0.070711 0.400000 -v -0.070711 -0.070711 0.462500 -v -0.100000 -0.000000 0.400000 -v -0.100000 0.000000 0.462500 -v -0.070711 0.070711 0.400000 -v -0.070711 0.070711 0.462500 -v 0.000000 0.100000 0.700000 -v 0.000000 0.100000 0.762500 -v 0.070711 0.070711 0.700000 -v 0.070711 0.070711 0.762500 -v 0.100000 -0.000000 0.700000 -v 0.100000 0.000000 0.762500 -v 0.070711 -0.070711 0.700000 -v 0.070711 -0.070711 0.762500 -v -0.000000 -0.100000 0.700000 -v -0.000000 -0.100000 0.762500 -v -0.070711 -0.070711 0.700000 -v -0.070711 -0.070711 0.762500 -v -0.100000 -0.000000 0.700000 -v -0.100000 0.000000 0.762500 -v -0.070711 0.070711 0.700000 -v -0.070711 0.070711 0.762500 -v 0.000000 0.100000 0.800000 -v 0.000000 0.100000 0.862500 -v 0.070711 0.070711 0.800000 -v 0.070711 0.070711 0.862500 -v 0.100000 -0.000000 0.800000 -v 0.100000 0.000000 0.862500 -v 0.070711 -0.070711 0.800000 -v 0.070711 -0.070711 0.862500 -v -0.000000 -0.100000 0.800000 -v -0.000000 -0.100000 0.862500 -v -0.070711 -0.070711 0.800000 -v -0.070711 -0.070711 0.862500 -v -0.100000 -0.000000 0.800000 -v -0.100000 0.000000 0.862500 -v -0.070711 0.070711 0.800000 -v -0.070711 0.070711 0.862500 -v 0.000000 0.100000 0.900000 -v 0.000000 0.100000 0.962500 -v 0.070711 0.070711 0.900000 -v 0.070711 0.070711 0.962500 -v 0.100000 -0.000000 0.900000 -v 0.100000 0.000000 0.962500 -v 0.070711 -0.070711 0.900000 -v 0.070711 -0.070711 0.962500 -v -0.000000 -0.100000 0.900000 -v -0.000000 -0.100000 0.962500 -v -0.070711 -0.070711 0.900000 -v -0.070711 -0.070711 0.962500 -v -0.100000 -0.000000 0.900000 -v -0.100000 0.000000 0.962500 -v -0.070711 0.070711 0.900000 -v -0.070711 0.070711 0.962500 -v 0.000000 0.100000 1.100000 -v 0.000000 0.100000 1.412500 -v 0.070711 0.070711 1.100000 -v 0.070711 0.070711 1.412500 -v 0.100000 -0.000000 1.100000 -v 0.100000 0.000000 1.412500 -v 0.070711 -0.070711 1.100000 -v 0.070711 -0.070711 1.412500 -v -0.000000 -0.100000 1.100000 -v -0.000000 -0.100000 1.412500 -v -0.070711 -0.070711 1.100000 -v -0.070711 -0.070711 1.412500 -v -0.100000 -0.000000 1.100000 -v -0.100000 0.000000 1.412500 -v -0.070711 0.070711 1.100000 -v -0.070711 0.070711 1.412500 -vt 0.640052 0.249617 -vt 0.640052 0.280553 -vt 0.021334 0.280552 -vt 0.021334 0.218681 -vt 0.021334 0.187745 -vt 0.640052 0.187745 -vt 0.573646 0.520567 -vt 0.604582 0.520567 -vt 0.604582 0.551503 -vt 0.640052 0.311488 -vt 0.021334 0.311488 -vt 0.640052 0.218681 -vt 0.021334 0.249617 -vt 0.640052 0.083205 -vt 0.640052 0.114141 -vt 0.021334 0.114142 -vt 0.021334 0.052270 -vt 0.021334 0.021334 -vt 0.640052 0.021334 -vt 0.604582 0.667774 -vt 0.604582 0.698710 -vt 0.573646 0.698710 -vt 0.640052 0.145077 -vt 0.021334 0.145077 -vt 0.640052 0.052269 -vt 0.021334 0.083206 -vt 0.640052 0.416028 -vt 0.640052 0.446964 -vt 0.021334 0.446963 -vt 0.021334 0.385092 -vt 0.021334 0.354156 -vt 0.640052 0.354156 -vt 0.573646 0.625107 -vt 0.573646 0.594171 -vt 0.604582 0.594171 -vt 0.640052 0.477900 -vt 0.021334 0.477899 -vt 0.640052 0.385092 -vt 0.021334 0.416028 -vt 0.845395 0.632256 -vt 0.884065 0.632256 -vt 0.884065 0.679611 -vt 0.884065 0.726965 -vt 0.845395 0.726965 -vt 0.884065 0.774320 -vt 0.884064 0.821675 -vt 0.845395 0.821675 -vt 0.884065 0.442838 -vt 0.884065 0.490193 -vt 0.845395 0.490193 -vt 0.884065 0.537547 -vt 0.845395 0.537547 -vt 0.102671 0.758398 -vt 0.136156 0.677559 -vt 0.183511 0.791883 -vt 0.884065 0.584902 -vt 0.845395 0.584902 -vt 0.497494 0.948874 -vt 0.450139 0.948874 -vt 0.416655 0.868035 -vt 0.802727 0.632256 -vt 0.802727 0.679611 -vt 0.764057 0.679611 -vt 0.802727 0.726965 -vt 0.764057 0.726965 -vt 0.802727 0.774320 -vt 0.802727 0.821675 -vt 0.764057 0.821675 -vt 0.802727 0.442838 -vt 0.802727 0.490193 -vt 0.764057 0.490193 -vt 0.802727 0.537547 -vt 0.764057 0.537547 -vt 0.259663 0.758398 -vt 0.293148 0.677559 -vt 0.340502 0.791883 -vt 0.802727 0.584902 -vt 0.764057 0.632256 -vt 0.764057 0.584902 -vt 0.763559 0.978666 -vt 0.716204 0.978666 -vt 0.682720 0.897827 -vt 0.060004 0.709985 -vt 0.060004 0.757340 -vt 0.021334 0.757340 -vt 0.060004 0.804695 -vt 0.021334 0.804695 -vt 0.060004 0.852049 -vt 0.060004 0.899404 -vt 0.021334 0.899404 -vt 0.060004 0.520567 -vt 0.060004 0.567922 -vt 0.021334 0.567922 -vt 0.060004 0.615276 -vt 0.021334 0.615276 -vt 0.416655 0.601406 -vt 0.450139 0.520567 -vt 0.497494 0.634891 -vt 0.021334 0.662631 -vt 0.060004 0.662631 -vt 0.340502 0.948874 -vt 0.293148 0.948875 -vt 0.259663 0.868035 -vt 0.682720 0.632256 -vt 0.682720 0.584902 -vt 0.721389 0.584902 -vt 0.682720 0.537547 -vt 0.721389 0.537547 -vt 0.682720 0.490193 -vt 0.682720 0.442838 -vt 0.721389 0.442838 -vt 0.682720 0.821675 -vt 0.682720 0.774320 -vt 0.721390 0.774320 -vt 0.682720 0.726966 -vt 0.721389 0.726966 -vt 0.259663 0.601406 -vt 0.293148 0.520567 -vt 0.340502 0.634891 -vt 0.721389 0.679611 -vt 0.682720 0.679611 -vt 0.183511 0.948874 -vt 0.136156 0.948875 -vt 0.102671 0.868035 -vt 0.682720 0.210752 -vt 0.682720 0.163398 -vt 0.876069 0.163398 -vt 0.682720 0.116043 -vt 0.876069 0.116043 -vt 0.682720 0.068688 -vt 0.682720 0.021334 -vt 0.876069 0.021334 -vt 0.682720 0.400170 -vt 0.682720 0.352816 -vt 0.876069 0.352816 -vt 0.682720 0.305461 -vt 0.876069 0.305461 -vt 0.102671 0.601406 -vt 0.136156 0.520567 -vt 0.183511 0.634891 -vt 0.682720 0.258107 -vt 0.876069 0.210752 -vt 0.876069 0.258107 -vt 0.497494 0.791883 -vt 0.450139 0.791883 -vt 0.416655 0.711044 -vt 0.573646 0.551503 -vt 0.573646 0.667774 -vt 0.604582 0.625107 -vt 0.845395 0.679611 -vt 0.845395 0.774320 -vt 0.845395 0.442838 -vt 0.216995 0.711044 -vt 0.216995 0.758398 -vt 0.136156 0.791883 -vt 0.102671 0.711044 -vt 0.183511 0.677559 -vt 0.450139 0.834550 -vt 0.530979 0.915390 -vt 0.497494 0.834550 -vt 0.530979 0.868035 -vt 0.416655 0.915390 -vt 0.764057 0.774320 -vt 0.764057 0.442838 -vt 0.373987 0.711044 -vt 0.373987 0.758398 -vt 0.293148 0.791883 -vt 0.259663 0.711044 -vt 0.340502 0.677559 -vt 0.716204 0.864342 -vt 0.797044 0.945181 -vt 0.763559 0.864342 -vt 0.797044 0.897827 -vt 0.682720 0.945182 -vt 0.021334 0.709985 -vt 0.021334 0.852049 -vt 0.021334 0.520567 -vt 0.530979 0.554052 -vt 0.530979 0.601406 -vt 0.450139 0.634891 -vt 0.416655 0.554052 -vt 0.497494 0.520567 -vt 0.293148 0.834551 -vt 0.373987 0.915390 -vt 0.340502 0.834551 -vt 0.373987 0.868035 -vt 0.259663 0.915390 -vt 0.721389 0.632256 -vt 0.721389 0.490193 -vt 0.721390 0.821675 -vt 0.373987 0.554052 -vt 0.373987 0.601407 -vt 0.293148 0.634891 -vt 0.259663 0.554052 -vt 0.340502 0.520567 -vt 0.136156 0.834551 -vt 0.216995 0.915390 -vt 0.183511 0.834551 -vt 0.216995 0.868035 -vt 0.102671 0.915390 -vt 0.876069 0.068688 -vt 0.876069 0.400170 -vt 0.216995 0.554052 -vt 0.216995 0.601407 -vt 0.136156 0.634891 -vt 0.102671 0.554052 -vt 0.183511 0.520567 -vt 0.450139 0.677559 -vt 0.530979 0.758398 -vt 0.497494 0.677559 -vt 0.530979 0.711044 -vt 0.416655 0.758398 -vn 0.500000 -0.866000 0.000000 -vn -0.500000 0.866000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.866000 0.500000 0.000000 -vn -0.866000 -0.500000 0.000000 -vn 0.500000 0.866000 0.000000 -vn -0.500000 -0.866000 0.000000 -vn -0.866000 0.500000 0.000000 -vn 0.866000 -0.500000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 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.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.000000 0.000000 -1.000000 -s off -f 4/1/1 3/2/1 1/3/1 -f 6/4/2 5/5/2 7/6/2 -f 2/7/3 1/8/3 5/9/3 -f 3/2/4 7/10/4 5/11/4 -f 8/12/5 4/1/5 2/13/5 -f 12/14/6 11/15/6 9/16/6 -f 14/17/7 13/18/7 15/19/7 -f 14/20/3 10/21/3 9/22/3 -f 11/15/8 15/23/8 13/24/8 -f 16/25/9 12/14/9 10/26/9 -f 20/27/10 19/28/10 17/29/10 -f 22/30/11 21/31/11 23/32/11 -f 18/33/3 17/34/3 21/35/3 -f 19/28/12 23/36/12 21/37/12 -f 24/38/13 20/27/13 18/39/13 -f 25/40/14 26/41/14 28/42/14 -f 28/42/15 30/43/15 29/44/15 -f 29/44/16 30/43/16 32/45/16 -f 32/45/17 34/46/17 33/47/17 -f 34/48/18 36/49/18 35/50/18 -f 36/49/19 38/51/19 37/52/19 -f 38/53/3 34/54/3 26/55/3 -f 40/56/20 26/41/20 25/40/20 -f 38/51/21 40/56/21 39/57/21 -f 33/58/22 35/59/22 39/60/22 -f 42/61/14 44/62/14 43/63/14 -f 43/63/15 44/62/15 46/64/15 -f 45/65/16 46/64/16 48/66/16 -f 48/66/17 50/67/17 49/68/17 -f 50/69/18 52/70/18 51/71/18 -f 52/70/19 54/72/19 53/73/19 -f 54/74/3 50/75/3 42/76/3 -f 56/77/20 42/61/20 41/78/20 -f 54/72/21 56/77/21 55/79/21 -f 49/80/22 51/81/22 55/82/22 -f 58/83/14 60/84/14 59/85/14 -f 59/85/15 60/84/15 62/86/15 -f 61/87/16 62/86/16 64/88/16 -f 64/88/17 66/89/17 65/90/17 -f 66/91/18 68/92/18 67/93/18 -f 68/92/19 70/94/19 69/95/19 -f 70/96/3 66/97/3 58/98/3 -f 71/99/20 72/100/20 58/83/20 -f 70/94/21 72/100/21 71/99/21 -f 65/101/22 67/102/22 71/103/22 -f 74/104/14 76/105/14 75/106/14 -f 75/106/15 76/105/15 78/107/15 -f 77/108/16 78/107/16 80/109/16 -f 80/109/17 82/110/17 81/111/17 -f 82/112/18 84/113/18 83/114/18 -f 84/113/19 86/115/19 85/116/19 -f 86/117/3 82/118/3 74/119/3 -f 87/120/20 88/121/20 74/104/20 -f 86/115/21 88/121/21 87/120/21 -f 81/122/22 83/123/22 87/124/22 -f 90/125/14 92/126/14 91/127/14 -f 92/126/15 94/128/15 93/129/15 -f 93/129/16 94/128/16 96/130/16 -f 96/130/17 98/131/17 97/132/17 -f 98/133/18 100/134/18 99/135/18 -f 100/134/19 102/136/19 101/137/19 -f 102/138/3 98/139/3 90/140/3 -f 104/141/20 90/125/20 89/142/20 -f 102/136/21 104/141/21 103/143/21 -f 97/144/22 99/145/22 103/146/22 -f 2/13/1 4/1/1 1/3/1 -f 8/12/2 6/4/2 7/6/2 -f 6/147/3 2/7/3 5/9/3 -f 1/3/4 3/2/4 5/11/4 -f 6/4/5 8/12/5 2/13/5 -f 10/26/6 12/14/6 9/16/6 -f 16/25/7 14/17/7 15/19/7 -f 13/148/3 14/20/3 9/22/3 -f 9/16/8 11/15/8 13/24/8 -f 14/17/9 16/25/9 10/26/9 -f 18/39/10 20/27/10 17/29/10 -f 24/38/11 22/30/11 23/32/11 -f 22/149/3 18/33/3 21/35/3 -f 17/29/12 19/28/12 21/37/12 -f 22/30/13 24/38/13 18/39/13 -f 27/150/14 25/40/14 28/42/14 -f 27/150/15 28/42/15 29/44/15 -f 31/151/16 29/44/16 32/45/16 -f 31/151/17 32/45/17 33/47/17 -f 33/152/18 34/48/18 35/50/18 -f 35/50/19 36/49/19 37/52/19 -f 30/153/3 28/154/3 26/55/3 -f 26/55/3 40/155/3 38/53/3 -f 38/53/3 36/156/3 34/54/3 -f 34/54/3 32/157/3 30/153/3 -f 30/153/3 26/55/3 34/54/3 -f 39/57/20 40/56/20 25/40/20 -f 37/52/21 38/51/21 39/57/21 -f 39/60/22 25/158/22 31/159/22 -f 27/160/22 29/161/22 31/159/22 -f 31/159/22 33/58/22 39/60/22 -f 35/59/22 37/162/22 39/60/22 -f 25/158/22 27/160/22 31/159/22 -f 41/78/14 42/61/14 43/63/14 -f 45/65/15 43/63/15 46/64/15 -f 47/163/16 45/65/16 48/66/16 -f 47/163/17 48/66/17 49/68/17 -f 49/164/18 50/69/18 51/71/18 -f 51/71/19 52/70/19 53/73/19 -f 46/165/3 44/166/3 42/76/3 -f 42/76/3 56/167/3 54/74/3 -f 54/74/3 52/168/3 50/75/3 -f 50/75/3 48/169/3 46/165/3 -f 46/165/3 42/76/3 50/75/3 -f 55/79/20 56/77/20 41/78/20 -f 53/73/21 54/72/21 55/79/21 -f 55/82/22 41/170/22 47/171/22 -f 43/172/22 45/173/22 47/171/22 -f 47/171/22 49/80/22 55/82/22 -f 51/81/22 53/174/22 55/82/22 -f 41/170/22 43/172/22 47/171/22 -f 57/175/14 58/83/14 59/85/14 -f 61/87/15 59/85/15 62/86/15 -f 63/176/16 61/87/16 64/88/16 -f 63/176/17 64/88/17 65/90/17 -f 65/177/18 66/91/18 67/93/18 -f 67/93/19 68/92/19 69/95/19 -f 62/178/3 60/179/3 58/98/3 -f 58/98/3 72/180/3 70/96/3 -f 70/96/3 68/181/3 66/97/3 -f 66/97/3 64/182/3 62/178/3 -f 62/178/3 58/98/3 66/97/3 -f 57/175/20 71/99/20 58/83/20 -f 69/95/21 70/94/21 71/99/21 -f 71/103/22 57/183/22 63/184/22 -f 59/185/22 61/186/22 63/184/22 -f 63/184/22 65/101/22 71/103/22 -f 67/102/22 69/187/22 71/103/22 -f 57/183/22 59/185/22 63/184/22 -f 73/188/14 74/104/14 75/106/14 -f 77/108/15 75/106/15 78/107/15 -f 79/189/16 77/108/16 80/109/16 -f 79/189/17 80/109/17 81/111/17 -f 81/190/18 82/112/18 83/114/18 -f 83/114/19 84/113/19 85/116/19 -f 78/191/3 76/192/3 74/119/3 -f 74/119/3 88/193/3 86/117/3 -f 86/117/3 84/194/3 82/118/3 -f 82/118/3 80/195/3 78/191/3 -f 78/191/3 74/119/3 82/118/3 -f 73/188/20 87/120/20 74/104/20 -f 85/116/21 86/115/21 87/120/21 -f 87/124/22 73/196/22 79/197/22 -f 75/198/22 77/199/22 79/197/22 -f 79/197/22 81/122/22 87/124/22 -f 83/123/22 85/200/22 87/124/22 -f 73/196/22 75/198/22 79/197/22 -f 89/142/14 90/125/14 91/127/14 -f 91/127/15 92/126/15 93/129/15 -f 95/201/16 93/129/16 96/130/16 -f 95/201/17 96/130/17 97/132/17 -f 97/202/18 98/133/18 99/135/18 -f 99/135/19 100/134/19 101/137/19 -f 94/203/3 92/204/3 90/140/3 -f 90/140/3 104/205/3 102/138/3 -f 102/138/3 100/206/3 98/139/3 -f 98/139/3 96/207/3 94/203/3 -f 94/203/3 90/140/3 98/139/3 -f 103/143/20 104/141/20 89/142/20 -f 101/137/21 102/136/21 103/143/21 -f 103/146/22 89/208/22 95/209/22 -f 91/210/22 93/211/22 95/209/22 -f 95/209/22 97/144/22 103/146/22 -f 99/145/22 101/212/22 103/146/22 -f 89/208/22 91/210/22 95/209/22 diff --git a/src/main/resources/assets/hbm/models/turret_cheapo_head.obj b/src/main/resources/assets/hbm/models/turret_cheapo_head.obj deleted file mode 100644 index b9b8e240c..000000000 --- a/src/main/resources/assets/hbm/models/turret_cheapo_head.obj +++ /dev/null @@ -1,566 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_cheapo_head.blend' -# www.blender.org -o Cube_Cube.002 -v -0.125000 0.375000 0.125000 -v -0.125000 0.375000 -0.125000 -v 0.125000 0.375000 0.125000 -v 0.125000 0.375000 -0.125000 -v 0.125000 0.125000 0.125000 -v 0.125000 0.125000 -0.125000 -v -0.125000 0.125000 -0.125000 -v -0.125000 0.125000 0.125000 -v 0.000000 0.125000 -0.125000 -v 0.000000 0.125000 0.125000 -v -0.125000 -0.000000 -0.125000 -v -0.000000 0.000000 -0.125000 -v -0.125000 -0.088388 -0.088388 -v -0.000000 -0.088388 -0.088388 -v -0.125000 -0.125000 0.000000 -v 0.000000 -0.125000 0.000000 -v -0.125000 -0.088388 0.088388 -v -0.000000 -0.088388 0.088388 -v -0.125000 0.000000 0.125000 -v -0.000000 0.000000 0.125000 -v 0.000000 0.375000 -0.125000 -v 0.000000 0.375000 -0.500000 -v 0.000000 0.375000 0.125000 -v 0.000000 0.375000 0.375000 -v 0.088388 0.338388 0.125000 -v 0.088388 0.338388 0.375000 -v 0.125000 0.250000 0.125000 -v 0.125000 0.250000 0.375000 -v 0.088388 0.161612 0.125000 -v 0.088388 0.161612 0.375000 -v -0.000000 0.125000 0.125000 -v -0.000000 0.125000 0.375000 -v -0.088388 0.161612 0.125000 -v -0.088388 0.161612 0.375000 -v -0.125000 0.250000 0.125000 -v -0.125000 0.250000 0.375000 -v -0.088388 0.338388 0.125000 -v -0.088388 0.338388 0.375000 -v 0.088388 0.338388 -0.500000 -v 0.088388 0.338388 -0.125000 -v 0.125000 0.250000 -0.500000 -v 0.125000 0.250000 -0.125000 -v 0.088388 0.161612 -0.500000 -v 0.088388 0.161612 -0.125000 -v -0.000000 0.125000 -0.500000 -v -0.000000 0.125000 -0.125000 -v -0.088388 0.161612 -0.500000 -v -0.088388 0.161612 -0.125000 -v -0.125000 0.250000 -0.500000 -v -0.125000 0.250000 -0.125000 -v -0.088388 0.338388 -0.500000 -v -0.088388 0.338388 -0.125000 -v -0.225000 0.225000 -0.500000 -v -0.225000 0.375000 -0.500000 -v -0.225000 0.225000 -0.650000 -v -0.225000 0.375000 -0.650000 -v 0.225000 0.225000 -0.500000 -v 0.225000 0.375000 -0.500000 -v 0.225000 0.225000 -0.650000 -v 0.225000 0.375000 -0.650000 -v -0.090000 0.125000 -0.650000 -v -0.090000 0.125000 -0.500000 -v 0.090000 0.125000 -0.650000 -v 0.090000 0.125000 -0.500000 -v 0.125000 0.100000 0.112500 -v 0.125000 0.300000 0.112500 -v 0.125000 0.100000 -0.012500 -v 0.125000 0.300000 -0.012500 -v 0.475000 0.100000 0.112500 -v 0.475000 0.300000 0.112500 -v 0.475000 0.100000 -0.012500 -v 0.475000 0.300000 -0.012500 -v 0.175000 0.300000 0.087500 -v 0.175000 0.300000 0.012500 -v 0.162500 0.350000 0.087500 -v 0.162500 0.350000 0.012500 -v 0.112500 0.400000 0.087500 -v 0.112500 0.400000 0.012500 -v 0.062500 0.400000 0.087500 -v 0.062500 0.400000 0.012500 -v 0.025000 0.375000 0.087500 -v 0.025000 0.375000 0.012500 -v 0.070711 0.320711 0.375000 -v -0.000000 0.350000 0.375000 -v 0.100000 0.250000 0.375000 -v 0.070711 0.179289 0.375000 -v -0.000000 0.150000 0.375000 -v -0.070711 0.179289 0.375000 -v -0.100000 0.250000 0.375000 -v -0.070711 0.320711 0.375000 -v 0.070711 0.320711 0.400000 -v -0.000000 0.350000 0.400000 -v 0.100000 0.250000 0.400000 -v 0.070711 0.179289 0.400000 -v -0.000000 0.150000 0.400000 -v -0.070711 0.179289 0.400000 -v -0.100000 0.250000 0.400000 -v -0.070711 0.320711 0.400000 -v -0.075000 0.475000 -0.175000 -v -0.075000 0.475000 0.175000 -v -0.039645 0.460355 -0.175000 -v -0.039645 0.460355 0.175000 -v -0.025000 0.425000 -0.175000 -v -0.025000 0.425000 0.175000 -v -0.039645 0.389645 -0.175000 -v -0.039645 0.389645 0.175000 -v -0.075000 0.375000 -0.175000 -v -0.075000 0.375000 0.175000 -v -0.110355 0.389645 -0.175000 -v -0.110355 0.389645 0.175000 -v -0.125000 0.425000 -0.175000 -v -0.125000 0.425000 0.175000 -v -0.110355 0.460355 -0.175000 -v -0.110355 0.460355 0.175000 -vt 0.821962 0.650392 -vt 0.775508 0.650392 -vt 0.775508 0.580710 -vt 0.752281 0.836267 -vt 0.821962 0.836267 -vt 0.801553 0.856676 -vt 0.821962 0.511028 -vt 0.775508 0.511028 -vt 0.775508 0.441347 -vt 0.092938 0.738769 -vt 0.092938 0.788509 -vt 0.023256 0.788509 -vt 0.092938 0.814706 -vt 0.023256 0.814706 -vt 0.092938 0.840903 -vt 0.023256 0.840903 -vt 0.092938 0.890643 -vt 0.023256 0.890643 -vt 0.821962 0.720074 -vt 0.815159 0.769346 -vt 0.782311 0.769346 -vt 0.775508 0.092937 -vt 0.782311 0.043665 -vt 0.815159 0.043665 -vt 0.023256 0.738769 -vt 0.023256 0.669087 -vt 0.092937 0.960325 -vt 0.868474 0.289916 -vt 0.868474 0.236584 -vt 0.938155 0.236584 -vt 0.881349 0.709753 -vt 0.881349 0.656420 -vt 0.927804 0.656420 -vt 0.868474 0.396581 -vt 0.868474 0.343248 -vt 0.938155 0.343248 -vt 0.881349 0.603088 -vt 0.927804 0.603088 -vt 0.868474 0.449913 -vt 0.938155 0.396581 -vt 0.881349 0.549756 -vt 0.927804 0.549756 -vt 0.868474 0.076588 -vt 0.868474 0.023256 -vt 0.938155 0.023256 -vt 0.881349 0.496424 -vt 0.927804 0.496424 -vt 0.868474 0.129920 -vt 0.938155 0.076588 -vt 0.927804 0.923081 -vt 0.881349 0.923081 -vt 0.881349 0.869749 -vt 0.868474 0.183252 -vt 0.938155 0.129920 -vt 0.881349 0.816417 -vt 0.927804 0.816417 -vt 0.868474 0.704419 -vt 0.868474 0.661754 -vt 0.881349 0.763085 -vt 0.927804 0.709753 -vt 0.927804 0.763085 -vt 0.938155 0.289916 -vt 0.938155 0.183252 -vt 0.775508 0.232301 -vt 0.775508 0.162619 -vt 0.821962 0.232301 -vt 0.536236 0.669087 -vt 0.573830 0.707022 -vt 0.562648 0.733675 -vt 0.626139 0.706326 -vt 0.690727 0.732578 -vt 0.627236 0.707263 -vt 0.679546 0.706567 -vt 0.716042 0.669087 -vt 0.821962 0.905949 -vt 0.426702 0.856756 -vt 0.377430 0.877166 -vt 0.426702 0.827893 -vt 0.475975 0.877166 -vt 0.191705 0.669087 -vt 0.252644 0.721342 -vt 0.252084 0.722279 -vt 0.194248 0.702241 -vt 0.139449 0.730026 -vt 0.681292 0.780186 -vt 0.660883 0.829459 -vt 0.632020 0.829459 -vt 0.681292 0.878731 -vt 0.330919 0.730026 -vt 0.293580 0.709473 -vt 0.296123 0.686546 -vt 0.536236 0.780186 -vt 0.585509 0.829459 -vt 0.556646 0.829459 -vt 0.536236 0.878731 -vt 0.821962 0.371665 -vt 0.775508 0.371665 -vt 0.775508 0.301983 -vt 0.274110 0.162619 -vt 0.357728 0.162619 -vt 0.357728 0.190492 -vt 0.023256 0.162619 -vt 0.023256 0.079001 -vt 0.274110 0.079001 -vt 0.728996 0.190492 -vt 0.645378 0.190492 -vt 0.645378 0.162619 -vt 0.274110 0.190492 -vt 0.274110 0.274110 -vt 0.023256 0.274110 -vt 0.451382 0.162619 -vt 0.451382 0.190492 -vt 0.551724 0.162619 -vt 0.551724 0.190492 -vt 0.098512 0.023256 -vt 0.198854 0.023256 -vt 0.198854 0.329856 -vt 0.098512 0.329856 -vt 0.329857 0.511085 -vt 0.218365 0.511085 -vt 0.218365 0.487858 -vt 0.524966 0.511085 -vt 0.524966 0.622576 -vt 0.329857 0.622576 -vt 0.524966 0.487858 -vt 0.636456 0.487858 -vt 0.636456 0.511085 -vt 0.329857 0.487858 -vt 0.329857 0.376367 -vt 0.524966 0.376367 -vt 0.023256 0.511085 -vt 0.023256 0.487858 -vt 0.231864 0.902021 -vt 0.231864 0.888085 -vt 0.260595 0.888085 -vt 0.192446 0.902021 -vt 0.192446 0.888085 -vt 0.164574 0.902021 -vt 0.164574 0.888085 -vt 0.139449 0.902021 -vt 0.139449 0.888085 -vt 0.377430 0.703902 -vt 0.382075 0.703902 -vt 0.382075 0.746567 -vt 0.868474 0.597755 -vt 0.868474 0.555089 -vt 0.868474 0.811084 -vt 0.868474 0.544423 -vt 0.868474 0.501757 -vt 0.868474 0.757752 -vt 0.868474 0.715086 -vt 0.868474 0.917748 -vt 0.868474 0.875082 -vt 0.868474 0.651087 -vt 0.868474 0.608422 -vt 0.868474 0.864416 -vt 0.868474 0.821750 -vt 0.454910 0.673732 -vt 0.485079 0.746567 -vt 0.454910 0.669087 -vt 0.412245 0.673732 -vt 0.489725 0.746567 -vt 0.485080 0.703902 -vt 0.412245 0.781382 -vt 0.412245 0.776736 -vt 0.454910 0.776736 -vt 0.378790 0.749852 -vt 0.408960 0.670447 -vt 0.488364 0.700617 -vt 0.458195 0.780021 -vt 0.224781 0.841573 -vt 0.203448 0.841573 -vt 0.203448 0.776537 -vt 0.182115 0.841573 -vt 0.182115 0.776537 -vt 0.160782 0.841573 -vt 0.160782 0.776537 -vt 0.139449 0.841573 -vt 0.139449 0.776537 -vt 0.310112 0.776537 -vt 0.310112 0.841573 -vt 0.288779 0.841573 -vt 0.267447 0.841573 -vt 0.267447 0.776537 -vt 0.536236 0.940327 -vt 0.572654 0.925242 -vt 0.587738 0.961660 -vt 0.246114 0.841573 -vt 0.224781 0.776537 -vt 0.246114 0.776537 -vt 0.392515 0.923677 -vt 0.428932 0.938762 -vt 0.377430 0.960094 -vt 0.821962 0.580710 -vt 0.821962 0.441347 -vt 0.775508 0.720074 -vt 0.798735 0.789756 -vt 0.821962 0.092937 -vt 0.821962 0.162619 -vt 0.798735 0.023256 -vt 0.092938 0.669087 -vt 0.023256 0.960325 -vt 0.938155 0.449913 -vt 0.927804 0.869749 -vt 0.821962 0.301983 -vt 0.728996 0.162619 -vt 0.023256 0.190492 -vt 0.260595 0.902021 -vt 0.377430 0.746567 -vt 0.868474 0.768418 -vt 0.412245 0.669087 -vt 0.489725 0.703902 -vt 0.454910 0.781382 -vt 0.408960 0.780021 -vt 0.378791 0.700617 -vt 0.458195 0.670448 -vt 0.488364 0.749852 -vt 0.288779 0.776537 -vt 0.572654 0.976744 -vt 0.551321 0.976744 -vt 0.536236 0.961660 -vt 0.551321 0.925242 -vt 0.587738 0.940327 -vt 0.413847 0.975179 -vt 0.392515 0.975179 -vt 0.377430 0.938761 -vt 0.413847 0.923677 -vt 0.428932 0.960094 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 -0.000000 0.000000 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 0.923900 -vn -1.000000 -0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn -0.382700 0.923900 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 -vn 0.382700 -0.923900 0.000000 -vn -0.923900 0.382700 0.000000 -vn 0.000000 -0.942200 -0.335000 -vn 0.000000 -0.978000 -0.208600 -vn 0.000000 1.000000 0.000000 -vn -0.595200 -0.803600 0.000000 -vn 0.595200 -0.803600 0.000000 -vn 0.970100 0.242500 0.000000 -vn 0.707100 0.707100 0.000000 -vn -0.554700 0.832100 0.000000 -vn 0.441700 -0.780900 -0.441700 -s off -f 10/1/1 9/2/1 6/3/1 -f 21/4/2 4/5/2 40/6/2 -f 27/7/3 42/8/3 4/9/3 -f 12/10/4 14/11/4 13/12/4 -f 14/11/5 16/13/5 15/14/5 -f 16/13/6 18/15/6 17/16/6 -f 18/15/7 20/17/7 19/18/7 -f 20/19/3 18/20/3 14/21/3 -f 11/22/8 13/23/8 17/24/8 -f 12/10/2 11/25/2 7/26/2 -f 19/18/9 20/17/9 10/27/9 -f 52/28/10 21/29/10 22/30/10 -f 24/31/11 26/32/11 25/33/11 -f 48/34/12 50/35/12 49/36/12 -f 26/32/13 28/37/13 27/38/13 -f 46/39/14 48/34/14 47/40/14 -f 28/37/15 30/41/15 29/42/15 -f 44/43/16 46/44/16 45/45/16 -f 30/41/16 32/46/16 31/47/16 -f 42/48/15 44/43/15 43/49/15 -f 31/50/14 32/51/14 34/52/14 -f 40/53/13 42/48/13 41/54/13 -f 34/52/12 36/55/12 35/56/12 -f 24/31/9 84/57/9 83/58/9 -f 38/59/10 24/31/10 23/60/10 -f 36/55/17 38/59/17 37/61/17 -f 50/35/17 52/28/17 51/62/17 -f 21/29/11 40/53/11 39/63/11 -f 50/64/8 7/65/8 35/66/8 -f 50/67/2 48/68/2 7/69/2 -f 7/69/2 48/68/2 46/70/2 -f 6/71/18 9/72/18 46/70/18 -f 44/73/2 42/74/2 6/71/2 -f 42/75/2 40/6/2 4/5/2 -f 52/76/2 50/77/2 2/78/2 -f 52/76/2 2/78/2 21/79/2 -f 8/80/19 10/81/19 31/82/19 -f 33/83/9 35/84/9 8/80/9 -f 35/85/9 37/86/9 1/87/9 -f 37/86/9 23/88/9 1/87/9 -f 27/89/9 29/90/9 5/91/9 -f 10/81/9 5/91/9 29/90/9 -f 27/92/9 3/93/9 25/94/9 -f 25/94/9 3/93/9 23/95/9 -f 23/96/20 21/97/20 2/98/20 -f 56/99/8 55/100/8 53/101/8 -f 60/102/2 59/103/2 55/104/2 -f 58/105/3 57/106/3 59/107/3 -f 54/108/9 53/109/9 57/110/9 -f 55/100/21 61/111/21 62/112/21 -f 60/102/20 56/99/20 54/108/20 -f 61/111/1 63/113/1 64/114/1 -f 59/103/2 63/115/2 61/116/2 -f 53/109/9 62/117/9 64/118/9 -f 57/106/22 64/114/22 63/113/22 -f 68/119/8 67/120/8 65/121/8 -f 72/122/2 71/123/2 67/124/2 -f 70/125/3 69/126/3 71/127/3 -f 66/128/9 65/129/9 69/130/9 -f 67/120/1 71/131/1 69/132/1 -f 72/122/20 68/119/20 66/128/20 -f 76/133/23 75/134/23 73/135/23 -f 78/136/24 77/137/24 75/134/24 -f 80/138/20 79/139/20 77/137/20 -f 82/140/25 81/141/25 79/139/25 -f 89/142/17 97/143/17 98/144/17 -f 28/37/9 85/145/9 86/146/9 -f 38/59/9 36/55/9 89/147/9 -f 30/41/9 86/148/9 87/149/9 -f 38/59/9 90/150/9 84/151/9 -f 32/51/9 87/152/9 88/153/9 -f 26/32/9 83/154/9 85/155/9 -f 34/52/9 88/156/9 89/157/9 -f 97/143/9 95/158/9 93/159/9 -f 87/160/14 95/158/14 96/161/14 -f 85/162/15 93/159/15 94/163/15 -f 84/164/11 92/165/11 91/166/11 -f 90/167/10 98/144/10 92/165/10 -f 88/168/12 96/161/12 97/143/12 -f 86/169/16 94/163/16 95/158/16 -f 83/170/13 91/166/13 93/159/13 -f 100/171/11 102/172/11 101/173/11 -f 102/172/13 104/174/13 103/175/13 -f 104/174/15 106/176/15 105/177/15 -f 106/176/16 108/178/16 107/179/16 -f 107/180/14 108/181/14 110/182/14 -f 110/182/12 112/183/12 111/184/12 -f 112/185/9 108/186/9 104/187/9 -f 114/188/10 100/171/10 99/189/10 -f 112/183/17 114/188/17 113/190/17 -f 105/191/2 109/192/2 101/193/2 -f 5/194/1 10/1/1 6/3/1 -f 4/9/3 3/195/3 27/7/3 -f 27/7/3 5/194/3 6/3/3 -f 6/3/3 42/8/3 27/7/3 -f 11/25/4 12/10/4 13/12/4 -f 13/12/5 14/11/5 15/14/5 -f 15/14/6 16/13/6 17/16/6 -f 17/16/7 18/15/7 19/18/7 -f 12/196/3 9/2/3 10/1/3 -f 10/1/3 20/19/3 12/196/3 -f 18/20/3 16/197/3 14/21/3 -f 14/21/3 12/196/3 20/19/3 -f 19/198/8 8/199/8 7/65/8 -f 7/65/8 11/22/8 19/198/8 -f 13/23/8 15/200/8 17/24/8 -f 17/24/8 19/198/8 11/22/8 -f 9/201/2 12/10/2 7/26/2 -f 8/202/9 19/18/9 10/27/9 -f 51/62/10 52/28/10 22/30/10 -f 23/60/11 24/31/11 25/33/11 -f 47/40/12 48/34/12 49/36/12 -f 25/33/13 26/32/13 27/38/13 -f 45/203/14 46/39/14 47/40/14 -f 27/38/15 28/37/15 29/42/15 -f 43/49/16 44/43/16 45/45/16 -f 29/42/16 30/41/16 31/47/16 -f 41/54/15 42/48/15 43/49/15 -f 33/204/14 31/50/14 34/52/14 -f 39/63/13 40/53/13 41/54/13 -f 33/204/12 34/52/12 35/56/12 -f 26/32/9 24/31/9 83/58/9 -f 37/61/10 38/59/10 23/60/10 -f 35/56/17 36/55/17 37/61/17 -f 49/36/17 50/35/17 51/62/17 -f 22/30/11 21/29/11 39/63/11 -f 35/66/8 1/205/8 2/98/8 -f 2/98/8 50/64/8 35/66/8 -f 7/65/8 8/199/8 35/66/8 -f 9/72/1 7/69/1 46/70/1 -f 44/73/2 6/71/2 46/70/2 -f 33/83/9 8/80/9 31/82/9 -f 31/82/26 10/81/26 29/90/26 -f 2/98/20 1/205/20 23/96/20 -f 23/96/20 3/195/20 4/9/20 -f 4/9/20 21/97/20 23/96/20 -f 54/108/8 56/99/8 53/101/8 -f 56/99/2 60/102/2 55/104/2 -f 60/206/3 58/105/3 59/107/3 -f 58/207/9 54/108/9 57/110/9 -f 53/101/21 55/100/21 62/112/21 -f 58/207/20 60/102/20 54/108/20 -f 62/112/1 61/111/1 64/114/1 -f 55/104/2 59/103/2 61/116/2 -f 57/110/9 53/109/9 64/118/9 -f 59/107/22 57/106/22 63/113/22 -f 66/128/8 68/119/8 65/121/8 -f 68/119/2 72/122/2 67/124/2 -f 72/122/3 70/125/3 71/127/3 -f 70/125/9 66/128/9 69/130/9 -f 65/121/1 67/120/1 69/132/1 -f 70/125/20 72/122/20 66/128/20 -f 74/208/23 76/133/23 73/135/23 -f 76/133/24 78/136/24 75/134/24 -f 78/136/20 80/138/20 77/137/20 -f 80/138/25 82/140/25 79/139/25 -f 90/209/17 89/142/17 98/144/17 -f 30/41/9 28/37/9 86/146/9 -f 90/210/9 38/59/9 89/147/9 -f 32/46/9 30/41/9 87/149/9 -f 24/31/9 38/59/9 84/151/9 -f 34/52/9 32/51/9 88/153/9 -f 28/37/9 26/32/9 85/155/9 -f 36/55/9 34/52/9 89/157/9 -f 93/159/9 91/166/9 92/165/9 -f 92/165/9 98/144/9 93/159/9 -f 97/143/9 96/161/9 95/158/9 -f 95/158/9 94/163/9 93/159/9 -f 93/159/9 98/144/9 97/143/9 -f 88/211/14 87/160/14 96/161/14 -f 86/212/15 85/162/15 94/163/15 -f 83/213/11 84/164/11 91/166/11 -f 84/214/10 90/167/10 92/165/10 -f 89/215/12 88/168/12 97/143/12 -f 87/216/16 86/169/16 95/158/16 -f 85/217/13 83/170/13 93/159/13 -f 99/189/11 100/171/11 101/173/11 -f 101/173/13 102/172/13 103/175/13 -f 103/175/15 104/174/15 105/177/15 -f 105/177/16 106/176/16 107/179/16 -f 109/218/14 107/180/14 110/182/14 -f 109/218/12 110/182/12 111/184/12 -f 104/187/9 102/219/9 100/220/9 -f 100/220/9 114/221/9 104/187/9 -f 112/185/9 110/222/9 108/186/9 -f 108/186/9 106/223/9 104/187/9 -f 104/187/9 114/221/9 112/185/9 -f 113/190/10 114/188/10 99/189/10 -f 111/184/17 112/183/17 113/190/17 -f 113/224/2 99/225/2 101/193/2 -f 101/193/2 103/226/2 105/191/2 -f 105/191/2 107/227/2 109/192/2 -f 109/192/2 111/228/2 113/224/2 -f 113/224/2 101/193/2 109/192/2 diff --git a/src/main/resources/assets/hbm/models/turret_cheapo_rotor.obj b/src/main/resources/assets/hbm/models/turret_cheapo_rotor.obj deleted file mode 100644 index 863a0cac0..000000000 --- a/src/main/resources/assets/hbm/models/turret_cheapo_rotor.obj +++ /dev/null @@ -1,218 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_cheapo_rotor.blend' -# www.blender.org -o Grid.002_Grid.004 -v 0.125000 1.125000 0.125000 -v 0.125000 1.125000 -0.125000 -v 0.000000 1.125000 -0.125000 -v 0.000000 1.125000 0.125000 -v -0.000000 1.250000 -0.125000 -v 0.125000 1.250000 -0.125000 -v -0.000000 1.250000 0.125000 -v 0.125000 1.250000 0.125000 -v -0.000000 1.338388 0.088388 -v 0.125000 1.338388 0.088388 -v -0.000000 1.375000 -0.000000 -v 0.125000 1.375000 -0.000000 -v -0.000000 1.338388 -0.088388 -v 0.125000 1.338388 -0.088388 -v -0.156250 1.250000 -0.050000 -v 0.156250 1.250000 -0.050000 -v -0.156250 1.214645 -0.035355 -v 0.156250 1.214645 -0.035355 -v -0.156250 1.200000 0.000000 -v 0.156250 1.200000 0.000000 -v -0.156250 1.214645 0.035355 -v 0.156250 1.214645 0.035355 -v -0.156250 1.250000 0.050000 -v 0.156250 1.250000 0.050000 -v -0.156250 1.285355 0.035355 -v 0.156250 1.285355 0.035355 -v -0.156250 1.300000 -0.000000 -v 0.156250 1.300000 -0.000000 -v -0.156250 1.285355 -0.035355 -v 0.156250 1.285355 -0.035355 -v 0.000000 1.000000 0.125000 -v 0.000000 1.000000 -0.125000 -v 0.125000 1.000000 -0.125000 -v 0.125000 1.000000 0.125000 -v -0.088388 1.000000 0.088388 -v -0.088388 1.125000 0.088388 -v -0.125000 1.000000 -0.000000 -v -0.125000 1.125000 -0.000000 -v -0.088388 1.000000 -0.088388 -v -0.088388 1.125000 -0.088388 -vt 0.258909 0.629669 -vt 0.038488 0.519458 -vt 0.258909 0.519458 -vt 0.961512 0.258909 -vt 0.929232 0.336840 -vt 0.773371 0.336840 -vt 0.664115 0.258909 -vt 0.664115 0.343261 -vt 0.553904 0.343261 -vt 0.664115 0.427613 -vt 0.553904 0.427613 -vt 0.664115 0.596316 -vt 0.664115 0.706527 -vt 0.553905 0.706527 -vt 0.664115 0.511965 -vt 0.553904 0.596316 -vt 0.553904 0.511965 -vt 0.553904 0.148698 -vt 0.664115 0.148698 -vt 0.395472 0.240932 -vt 0.395472 0.274673 -vt 0.119944 0.274673 -vt 0.395472 0.308414 -vt 0.119944 0.308413 -vt 0.395471 0.038488 -vt 0.395471 0.072228 -vt 0.119944 0.072230 -vt 0.395472 0.105969 -vt 0.119944 0.105970 -vt 0.395472 0.139710 -vt 0.119944 0.139711 -vt 0.395472 0.173451 -vt 0.119944 0.173451 -vt 0.476929 0.274673 -vt 0.453071 0.332272 -vt 0.395472 0.207191 -vt 0.119944 0.240932 -vt 0.119944 0.207192 -vt 0.096086 0.332272 -vt 0.038488 0.274673 -vt 0.062346 0.250815 -vt 0.122839 0.816855 -vt 0.207191 0.816855 -vt 0.207191 0.927066 -vt 0.291543 0.816855 -vt 0.291543 0.927066 -vt 0.553904 0.038488 -vt 0.664115 0.038488 -vt 0.664116 0.816738 -vt 0.553905 0.816738 -vt 0.375894 0.816855 -vt 0.375894 0.927066 -vt 0.038488 0.927066 -vt 0.038488 0.816855 -vt 0.741091 0.148698 -vt 0.741091 0.038488 -vt 0.961512 0.038488 -vt 0.741091 0.556306 -vt 0.741091 0.446095 -vt 0.961512 0.556306 -vt 0.226629 0.707600 -vt 0.148698 0.739880 -vt 0.070768 0.707600 -vt 0.226629 0.441527 -vt 0.038488 0.629669 -vt 0.070768 0.441527 -vt 0.148698 0.409247 -vt 0.741091 0.258909 -vt 0.961512 0.148698 -vt 0.851301 0.369120 -vt 0.553904 0.258909 -vt 0.119944 0.038489 -vt 0.419330 0.250814 -vt 0.453071 0.250814 -vt 0.476929 0.308414 -vt 0.419330 0.332272 -vt 0.096086 0.250815 -vt 0.062346 0.332272 -vt 0.038488 0.308414 -vt 0.122839 0.927066 -vt 0.929232 0.634237 -vt 0.851301 0.666517 -vt 0.773371 0.634237 -vt 0.961512 0.446095 -vn -1.000000 -0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.382700 0.923900 -vn 0.000000 0.923900 0.382700 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.382700 -0.923900 -vn 0.000000 0.923900 -0.382700 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 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.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -s off -f 3/1/1 7/2/1 5/3/1 -f 6/4/2 14/5/2 10/6/2 -f 8/7/3 10/8/3 9/9/3 -f 10/8/4 12/10/4 11/11/4 -f 6/12/5 2/13/5 3/14/5 -f 14/15/6 6/12/6 5/16/6 -f 12/10/7 14/15/7 13/17/7 -f 4/18/8 1/19/8 8/7/8 -f 16/20/9 18/21/9 17/22/9 -f 18/21/10 20/23/10 19/24/10 -f 20/25/11 22/26/11 21/27/11 -f 22/26/12 24/28/12 23/29/12 -f 24/28/3 26/30/3 25/31/3 -f 26/30/4 28/32/4 27/33/4 -f 28/34/2 24/35/2 20/23/2 -f 30/36/6 16/20/6 15/37/6 -f 28/32/7 30/36/7 29/38/7 -f 21/39/1 27/40/1 29/41/1 -f 36/42/13 38/43/13 37/44/13 -f 38/43/14 40/45/14 39/46/14 -f 4/18/8 31/47/8 34/48/8 -f 2/13/5 33/49/5 32/50/5 -f 40/45/15 3/51/15 32/52/15 -f 31/53/16 4/54/16 36/42/16 -f 1/55/2 34/56/2 33/57/2 -f 32/58/17 33/59/17 31/60/17 -f 40/61/18 38/62/18 36/63/18 -f 13/64/1 5/3/1 7/2/1 -f 3/1/1 4/65/1 7/2/1 -f 7/2/1 9/66/1 11/67/1 -f 11/67/1 13/64/1 7/2/1 -f 8/68/2 1/55/2 2/69/2 -f 2/69/2 6/4/2 8/68/2 -f 14/5/2 12/70/2 10/6/2 -f 10/6/2 8/68/2 6/4/2 -f 7/71/3 8/7/3 9/9/3 -f 9/9/4 10/8/4 11/11/4 -f 5/16/5 6/12/5 3/14/5 -f 13/17/6 14/15/6 5/16/6 -f 11/11/7 12/10/7 13/17/7 -f 7/71/8 4/18/8 8/7/8 -f 15/37/9 16/20/9 17/22/9 -f 17/22/10 18/21/10 19/24/10 -f 19/72/11 20/25/11 21/27/11 -f 21/27/12 22/26/12 23/29/12 -f 23/29/3 24/28/3 25/31/3 -f 25/31/4 26/30/4 27/33/4 -f 20/23/2 18/21/2 16/73/2 -f 16/73/2 30/74/2 28/34/2 -f 28/34/2 26/75/2 24/35/2 -f 24/35/2 22/76/2 20/23/2 -f 20/23/2 16/73/2 28/34/2 -f 29/38/6 30/36/6 15/37/6 -f 27/33/7 28/32/7 29/38/7 -f 29/41/1 15/77/1 17/22/1 -f 17/22/1 19/24/1 29/41/1 -f 21/39/1 23/78/1 25/79/1 -f 25/79/1 27/40/1 21/39/1 -f 29/41/1 19/24/1 21/39/1 -f 35/80/13 36/42/13 37/44/13 -f 37/44/14 38/43/14 39/46/14 -f 1/19/8 4/18/8 34/48/8 -f 3/14/5 2/13/5 32/50/5 -f 39/46/15 40/45/15 32/52/15 -f 35/80/16 31/53/16 36/42/16 -f 2/69/2 1/55/2 33/57/2 -f 35/81/17 37/82/17 39/83/17 -f 39/83/17 32/58/17 31/60/17 -f 33/59/17 34/84/17 31/60/17 -f 31/60/17 35/81/17 39/83/17 -f 36/63/18 4/65/18 3/1/18 -f 3/1/18 40/61/18 36/63/18 diff --git a/src/main/resources/assets/hbm/models/turret_flamer_gun.obj b/src/main/resources/assets/hbm/models/turret_flamer_gun.obj deleted file mode 100644 index 2e32208e8..000000000 --- a/src/main/resources/assets/hbm/models/turret_flamer_gun.obj +++ /dev/null @@ -1,2091 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_flamer_gun.blend' -# www.blender.org -o Cube.001_Cube -v -0.200000 -0.200000 0.300000 -v -0.200000 0.200000 0.300000 -v -0.200000 -0.200000 -0.300000 -v -0.200000 0.200000 -0.300000 -v 0.200000 -0.200000 0.300000 -v 0.200000 0.200000 0.300000 -v 0.200000 -0.200000 -0.300000 -v 0.200000 0.200000 -0.300000 -v -0.170000 -0.170000 0.300000 -v -0.170000 0.170000 0.300000 -v 0.170000 0.170000 0.300000 -v 0.170000 -0.170000 0.300000 -v -0.170000 -0.170000 0.450000 -v -0.170000 0.170000 0.450000 -v 0.170000 0.170000 0.450000 -v 0.170000 -0.170000 0.450000 -v 0.000000 0.140000 0.700000 -v 0.098995 0.098995 0.700000 -v 0.000000 0.100000 0.450000 -v 0.000000 0.100000 0.700000 -v 0.070711 0.070711 0.450000 -v 0.070711 0.070711 0.700000 -v 0.100000 -0.000000 0.450000 -v 0.100000 0.000000 0.700000 -v 0.070711 -0.070711 0.450000 -v 0.070711 -0.070711 0.700000 -v -0.000000 -0.100000 0.450000 -v -0.000000 -0.100000 0.700000 -v -0.070711 -0.070711 0.450000 -v -0.070711 -0.070711 0.700000 -v -0.100000 -0.000000 0.450000 -v -0.100000 0.000000 0.700000 -v -0.070711 0.070711 0.450000 -v -0.070711 0.070711 0.700000 -v 0.140000 0.000000 0.700000 -v 0.098995 -0.098995 0.700000 -v -0.000000 -0.140000 0.700000 -v -0.098995 -0.098995 0.700000 -v -0.140000 0.000000 0.700000 -v -0.098995 0.098995 0.700000 -v 0.000000 0.140000 1.150000 -v -0.098995 0.098995 1.150000 -v -0.140000 0.000000 1.150000 -v -0.098995 -0.098995 1.150000 -v -0.000000 -0.140000 1.150000 -v 0.098995 -0.098995 1.150000 -v 0.140000 0.000000 1.150000 -v 0.098995 0.098995 1.150000 -v 0.000000 0.100000 1.150000 -v 0.070711 0.070711 1.150000 -v 0.100000 0.000000 1.150000 -v 0.070711 -0.070711 1.150000 -v -0.000000 -0.100000 1.150000 -v -0.070711 -0.070711 1.150000 -v -0.100000 0.000000 1.150000 -v -0.070711 0.070711 1.150000 -v 0.070711 0.070711 1.250000 -v 0.000000 0.100000 1.250000 -v 0.100000 0.000000 1.250000 -v 0.070711 -0.070711 1.250000 -v -0.000000 -0.100000 1.250000 -v -0.070711 -0.070711 1.250000 -v -0.100000 0.000000 1.250000 -v -0.070711 0.070711 1.250000 -v 0.107322 -0.125000 1.200000 -v 0.125000 -0.142678 1.200000 -v -0.375000 -0.000000 -0.100000 -v 0.375000 0.000000 -0.100000 -v -0.375000 -0.070711 -0.070711 -v 0.375000 -0.070711 -0.070711 -v -0.375000 -0.100000 0.000000 -v 0.375000 -0.100000 0.000000 -v -0.375000 -0.070711 0.070711 -v 0.375000 -0.070711 0.070711 -v -0.375000 -0.000000 0.100000 -v 0.375000 0.000000 0.100000 -v -0.375000 0.070711 0.070711 -v 0.375000 0.070711 0.070711 -v -0.375000 0.100000 -0.000000 -v 0.375000 0.100000 -0.000000 -v -0.375000 0.070711 -0.070711 -v 0.375000 0.070711 -0.070711 -v 0.125000 -0.142678 0.450000 -v 0.107322 -0.125000 0.450000 -v 0.142678 -0.125000 1.200000 -v 0.125000 -0.107322 1.200000 -v 0.142678 -0.125000 0.450000 -v 0.125000 -0.107322 0.450000 -v 0.107411 -0.125089 1.258839 -v 0.125089 -0.107411 1.258839 -v 0.112589 -0.094911 1.241161 -v 0.094911 -0.112589 1.241161 -v 0.076161 -0.093839 1.297855 -v 0.076161 -0.093839 1.268856 -v 0.093839 -0.076161 1.268856 -v 0.093839 -0.076161 1.297855 -v 0.058484 -0.076161 1.297855 -v 0.058484 -0.076161 1.268856 -v 0.076161 -0.058484 1.268856 -v 0.076161 -0.058484 1.297855 -v -0.128701 -0.181791 -0.375000 -v -0.153033 -0.165533 -0.375000 -v -0.169291 -0.141201 -0.375000 -v -0.175000 -0.112500 -0.375000 -v -0.120295 -0.181791 -0.354705 -v -0.137500 -0.165533 -0.337500 -v -0.148996 -0.141201 -0.326004 -v -0.153033 -0.112500 -0.321967 -v -0.100000 -0.181791 -0.346299 -v -0.100000 -0.165533 -0.321967 -v -0.100000 -0.141201 -0.305709 -v -0.100000 -0.112500 -0.300000 -v -0.100000 -0.187500 -0.375000 -v -0.079705 -0.181791 -0.354705 -v -0.062500 -0.165533 -0.337500 -v -0.051004 -0.141201 -0.326004 -v -0.046967 -0.112500 -0.321967 -v -0.071299 -0.181791 -0.375000 -v -0.046967 -0.165533 -0.375000 -v -0.030709 -0.141201 -0.375000 -v -0.025000 -0.112500 -0.375000 -v -0.079705 -0.181791 -0.395295 -v -0.062500 -0.165533 -0.412500 -v -0.051004 -0.141201 -0.423996 -v -0.046967 -0.112500 -0.428033 -v -0.100000 -0.181791 -0.403701 -v -0.100000 -0.165533 -0.428033 -v -0.100000 -0.141201 -0.444291 -v -0.100000 -0.112500 -0.450000 -v -0.120295 -0.181791 -0.395295 -v -0.137500 -0.165533 -0.412500 -v -0.148996 -0.141201 -0.423996 -v -0.153033 -0.112500 -0.428033 -v -0.175000 0.112500 -0.375000 -v -0.169291 0.141201 -0.375000 -v -0.153033 0.165533 -0.375000 -v -0.128701 0.181791 -0.375000 -v -0.153033 0.112500 -0.321967 -v -0.148996 0.141201 -0.326004 -v -0.137500 0.165533 -0.337500 -v -0.120295 0.181791 -0.354705 -v -0.100000 0.112500 -0.300000 -v -0.100000 0.141201 -0.305709 -v -0.100000 0.165533 -0.321967 -v -0.100000 0.181791 -0.346299 -v -0.046967 0.112500 -0.321967 -v -0.051004 0.141201 -0.326004 -v -0.062500 0.165533 -0.337500 -v -0.079705 0.181791 -0.354705 -v -0.025000 0.112500 -0.375000 -v -0.030709 0.141201 -0.375000 -v -0.046967 0.165533 -0.375000 -v -0.071299 0.181791 -0.375000 -v -0.046967 0.112500 -0.428033 -v -0.051004 0.141201 -0.423996 -v -0.062500 0.165533 -0.412500 -v -0.079705 0.181791 -0.395295 -v -0.100000 0.112500 -0.450000 -v -0.100000 0.141201 -0.444291 -v -0.100000 0.165533 -0.428033 -v -0.100000 0.181791 -0.403701 -v -0.153033 0.112500 -0.428033 -v -0.148996 0.141201 -0.423996 -v -0.137500 0.165533 -0.412500 -v -0.120295 0.181791 -0.395295 -v 0.071299 -0.181791 -0.375000 -v 0.046967 -0.165533 -0.375000 -v 0.030709 -0.141201 -0.375000 -v 0.025000 -0.112500 -0.375000 -v 0.079705 -0.181791 -0.354705 -v 0.062500 -0.165533 -0.337500 -v 0.051004 -0.141201 -0.326004 -v 0.046967 -0.112500 -0.321967 -v 0.100000 -0.181791 -0.346299 -v 0.100000 -0.165533 -0.321967 -v 0.100000 -0.141201 -0.305709 -v 0.100000 -0.112500 -0.300000 -v 0.100000 -0.187500 -0.375000 -v 0.120295 -0.181791 -0.354705 -v 0.137500 -0.165533 -0.337500 -v 0.148996 -0.141201 -0.326004 -v 0.153033 -0.112500 -0.321967 -v 0.128701 -0.181791 -0.375000 -v 0.153033 -0.165533 -0.375000 -v 0.169291 -0.141201 -0.375000 -v 0.175000 -0.112500 -0.375000 -v 0.120295 -0.181791 -0.395295 -v 0.137500 -0.165533 -0.412500 -v 0.148996 -0.141201 -0.423996 -v 0.153033 -0.112500 -0.428033 -v 0.100000 -0.181791 -0.403701 -v 0.100000 -0.165533 -0.428033 -v 0.100000 -0.141201 -0.444291 -v 0.100000 -0.112500 -0.450000 -v 0.079705 -0.181791 -0.395295 -v 0.062500 -0.165533 -0.412500 -v 0.051004 -0.141201 -0.423996 -v 0.046967 -0.112500 -0.428033 -v 0.025000 0.112500 -0.375000 -v 0.030709 0.141201 -0.375000 -v 0.046967 0.165533 -0.375000 -v 0.071299 0.181791 -0.375000 -v 0.046967 0.112500 -0.321967 -v 0.051004 0.141201 -0.326004 -v 0.062500 0.165533 -0.337500 -v 0.079705 0.181791 -0.354705 -v 0.100000 0.112500 -0.300000 -v 0.100000 0.141201 -0.305709 -v 0.100000 0.165533 -0.321967 -v 0.100000 0.181791 -0.346299 -v 0.153033 0.112500 -0.321967 -v 0.148996 0.141201 -0.326004 -v 0.137500 0.165533 -0.337500 -v 0.120295 0.181791 -0.354705 -v 0.175000 0.112500 -0.375000 -v 0.169291 0.141201 -0.375000 -v 0.153033 0.165533 -0.375000 -v 0.128701 0.181791 -0.375000 -v 0.153033 0.112500 -0.428033 -v 0.148996 0.141201 -0.423996 -v 0.137500 0.165533 -0.412500 -v 0.120295 0.181791 -0.395295 -v 0.100000 0.112500 -0.450000 -v 0.100000 0.141201 -0.444291 -v 0.100000 0.165533 -0.428033 -v 0.100000 0.181791 -0.403701 -v 0.046967 0.112500 -0.428033 -v 0.051004 0.141201 -0.423996 -v 0.062500 0.165533 -0.412500 -v 0.079705 0.181791 -0.395295 -v -0.128701 0.211791 -0.375000 -v -0.120295 0.204025 -0.356250 -v -0.100000 0.200808 -0.348484 -v -0.079705 0.204025 -0.356250 -v -0.071299 0.211791 -0.375000 -v -0.079705 0.219558 -0.393750 -v -0.100000 0.222775 -0.401517 -v -0.120295 0.219558 -0.393750 -v 0.071299 0.211791 -0.375000 -v 0.079705 0.204025 -0.356250 -v 0.100000 0.200808 -0.348484 -v 0.120295 0.204025 -0.356250 -v 0.128701 0.211791 -0.375000 -v 0.120295 0.219558 -0.393750 -v 0.100000 0.222775 -0.401517 -v 0.079705 0.219558 -0.393750 -v -0.128701 0.239508 -0.363520 -v -0.120295 0.225157 -0.349169 -v -0.100000 0.219213 -0.343225 -v -0.079705 0.225157 -0.349169 -v -0.071299 0.239508 -0.363520 -v -0.079705 0.253858 -0.377870 -v -0.100000 0.259802 -0.383814 -v -0.120295 0.253858 -0.377870 -v 0.071299 0.239508 -0.363520 -v 0.079705 0.225157 -0.349169 -v 0.100000 0.219213 -0.343225 -v 0.120295 0.225157 -0.349169 -v 0.128701 0.239508 -0.363520 -v 0.120295 0.253858 -0.377870 -v 0.100000 0.259802 -0.383814 -v 0.079705 0.253858 -0.377870 -v -0.128701 0.260721 -0.342306 -v -0.120295 0.241971 -0.334540 -v -0.100000 0.234204 -0.331323 -v -0.079705 0.241971 -0.334540 -v -0.071299 0.260721 -0.342306 -v -0.079705 0.279471 -0.350073 -v -0.100000 0.287237 -0.353290 -v -0.120295 0.279471 -0.350073 -v 0.071299 0.260721 -0.342306 -v 0.079705 0.241971 -0.334540 -v 0.100000 0.234204 -0.331323 -v 0.120295 0.241971 -0.334540 -v 0.128701 0.260721 -0.342306 -v 0.120295 0.279471 -0.350073 -v 0.100000 0.287237 -0.353290 -v 0.079705 0.279471 -0.350073 -v -0.128701 0.272201 -0.314590 -v -0.120295 0.251906 -0.314590 -v -0.100000 0.243500 -0.314590 -v -0.079705 0.251906 -0.314590 -v -0.071299 0.272201 -0.314590 -v -0.079705 0.292496 -0.314590 -v -0.100000 0.300902 -0.314590 -v -0.120295 0.292496 -0.314590 -v 0.071299 0.272201 -0.314590 -v 0.079705 0.251906 -0.314590 -v 0.100000 0.243500 -0.314590 -v 0.120295 0.251906 -0.314590 -v 0.128701 0.272201 -0.314590 -v 0.120295 0.292496 -0.314590 -v 0.100000 0.300902 -0.314590 -v 0.079705 0.292496 -0.314590 -v -0.128701 0.272201 -0.284590 -v -0.120295 0.253451 -0.292356 -v -0.100000 0.245685 -0.295573 -v -0.079705 0.253451 -0.292356 -v -0.071299 0.272201 -0.284590 -v -0.079705 0.290951 -0.276823 -v -0.100000 0.298718 -0.273607 -v -0.120295 0.290951 -0.276823 -v 0.071299 0.272201 -0.284590 -v 0.079705 0.253451 -0.292356 -v 0.100000 0.245685 -0.295573 -v 0.120295 0.253451 -0.292356 -v 0.128701 0.272201 -0.284590 -v 0.120295 0.290951 -0.276823 -v 0.100000 0.298718 -0.273607 -v 0.079705 0.290951 -0.276823 -v -0.128701 0.260721 -0.256874 -v -0.120295 0.246370 -0.271224 -v -0.100000 0.240426 -0.277168 -v -0.079705 0.246370 -0.271224 -v -0.071299 0.260721 -0.256874 -v -0.079705 0.275071 -0.242523 -v -0.100000 0.281016 -0.236579 -v -0.120295 0.275071 -0.242523 -v 0.071299 0.260721 -0.256874 -v 0.079705 0.246370 -0.271224 -v 0.100000 0.240426 -0.277168 -v 0.120295 0.246370 -0.271224 -v 0.128701 0.260721 -0.256874 -v 0.120295 0.275071 -0.242523 -v 0.100000 0.281016 -0.236579 -v 0.079705 0.275071 -0.242523 -v -0.128701 0.239508 -0.235660 -v -0.120295 0.231741 -0.254410 -v -0.100000 0.228524 -0.262177 -v -0.079705 0.231741 -0.254410 -v -0.071299 0.239508 -0.235660 -v -0.079705 0.247274 -0.216910 -v -0.100000 0.250491 -0.209144 -v -0.120295 0.247274 -0.216910 -v 0.071299 0.239508 -0.235660 -v 0.079705 0.231741 -0.254410 -v 0.100000 0.228524 -0.262177 -v 0.120295 0.231741 -0.254410 -v 0.128701 0.239508 -0.235660 -v 0.120295 0.247274 -0.216910 -v 0.100000 0.250491 -0.209144 -v 0.079705 0.247274 -0.216910 -v -0.128701 0.211791 -0.224180 -v -0.120295 0.211791 -0.244475 -v -0.100000 0.211791 -0.252881 -v -0.079705 0.211791 -0.244475 -v -0.071299 0.211791 -0.224180 -v -0.079705 0.211791 -0.203885 -v -0.100000 0.211791 -0.195479 -v -0.120295 0.211791 -0.203885 -v 0.071299 0.211791 -0.224180 -v 0.079705 0.211791 -0.244475 -v 0.100000 0.211791 -0.252881 -v 0.120295 0.211791 -0.244475 -v 0.128701 0.211791 -0.224180 -v 0.120295 0.211791 -0.203885 -v 0.100000 0.211791 -0.195479 -v 0.079705 0.211791 -0.203885 -v -0.128701 0.191791 -0.224180 -v -0.120295 0.191791 -0.244475 -v -0.100000 0.191791 -0.252881 -v -0.079705 0.191791 -0.244475 -v -0.071299 0.191791 -0.224180 -v -0.079705 0.191791 -0.203885 -v -0.100000 0.191791 -0.195479 -v -0.120295 0.191791 -0.203885 -v 0.071299 0.191791 -0.224180 -v 0.079705 0.191791 -0.244475 -v 0.100000 0.191791 -0.252881 -v 0.120295 0.191791 -0.244475 -v 0.128701 0.191791 -0.224180 -v 0.120295 0.191791 -0.203885 -v 0.100000 0.191791 -0.195479 -v 0.079705 0.191791 -0.203885 -v -0.185000 -0.025000 -0.300000 -v -0.185000 0.025000 -0.300000 -v -0.185000 -0.025000 -0.457500 -v -0.185000 0.025000 -0.457500 -v 0.185000 -0.025000 -0.300000 -v 0.185000 0.025000 -0.300000 -v 0.185000 -0.025000 -0.457500 -v 0.185000 0.025000 -0.457500 -v -0.050000 0.200000 0.250000 -v -0.050000 0.250000 0.150000 -v -0.050000 0.200000 -0.150000 -v -0.050000 0.250000 -0.150000 -v 0.050000 0.200000 0.250000 -v 0.050000 0.250000 0.150000 -v 0.050000 0.200000 -0.150000 -v 0.050000 0.250000 -0.150000 -vt 0.605984 0.310453 -vt 0.605984 0.458218 -vt 0.384336 0.458218 -vt 0.605983 0.162688 -vt 0.753748 0.162688 -vt 0.753749 0.310453 -vt 0.384336 0.162689 -vt 0.384336 0.014924 -vt 0.605983 0.014924 -vt 0.236571 0.310454 -vt 0.247653 0.299371 -vt 0.373254 0.299371 -vt 0.014924 0.310454 -vt 0.014924 0.162689 -vt 0.236571 0.162689 -vt 0.384336 0.310454 -vt 0.586653 0.576878 -vt 0.547471 0.616060 -vt 0.458658 0.527248 -vt 0.247653 0.173771 -vt 0.373254 0.173771 -vt 0.458658 0.704873 -vt 0.369845 0.616060 -vt 0.497840 0.744055 -vt 0.330663 0.655243 -vt 0.419476 0.488066 -vt 0.194811 0.804730 -vt 0.028575 0.804730 -vt 0.028575 0.765147 -vt 0.208463 0.601160 -vt 0.194811 0.606815 -vt 0.194811 0.567232 -vt 0.300816 0.640743 -vt 0.208463 0.640743 -vt 0.208463 0.612470 -vt 0.194811 0.646398 -vt 0.028575 0.646398 -vt 0.028575 0.606815 -vt 0.208463 0.770802 -vt 0.208463 0.799075 -vt 0.300816 0.601160 -vt 0.208463 0.572887 -vt 0.028575 0.567232 -vt 0.208463 0.680326 -vt 0.194811 0.685981 -vt 0.300816 0.561577 -vt 0.208463 0.561577 -vt 0.208463 0.533303 -vt 0.194811 0.765147 -vt 0.028575 0.725564 -vt 0.208463 0.521994 -vt 0.194811 0.527649 -vt 0.194811 0.488066 -vt 0.300816 0.521994 -vt 0.208463 0.493720 -vt 0.028575 0.685981 -vt 0.208463 0.691636 -vt 0.208463 0.719909 -vt 0.194811 0.725564 -vt 0.300816 0.770802 -vt 0.014924 0.640743 -vt 0.014924 0.612469 -vt 0.208463 0.759492 -vt 0.208463 0.731219 -vt 0.300816 0.731219 -vt 0.208463 0.652053 -vt 0.300816 0.652053 -vt 0.300816 0.691636 -vt 0.028575 0.527649 -vt 0.028576 0.488066 -vt 0.014924 0.601160 -vt 0.014924 0.572886 -vt 0.014924 0.561577 -vt 0.014924 0.533303 -vt 0.014924 0.521994 -vt 0.014924 0.493720 -vt 0.014924 0.799075 -vt 0.014924 0.770802 -vt 0.014924 0.759492 -vt 0.014924 0.731219 -vt 0.014924 0.719909 -vt 0.014924 0.691636 -vt 0.014924 0.680326 -vt 0.014924 0.652053 -vt 0.820537 0.370734 -vt 0.783596 0.370734 -vt 0.783596 0.342460 -vt 0.215366 0.882843 -vt 0.235359 0.834577 -vt 0.263633 0.902836 -vt 0.820537 0.427281 -vt 0.783596 0.427281 -vt 0.783596 0.399007 -vt 0.820537 0.229366 -vt 0.820537 0.257639 -vt 0.783596 0.257639 -vt 0.820537 0.314187 -vt 0.783596 0.314187 -vt 0.783596 0.285913 -vt 0.820537 0.342460 -vt 0.820537 0.399007 -vt 0.820537 0.201092 -vt 0.783596 0.229366 -vt 0.820537 0.285913 -vt 0.678228 0.910991 -vt 0.681824 0.919498 -vt 0.658226 0.919498 -vt 0.893559 0.657708 -vt 0.893559 0.685981 -vt 0.616500 0.685981 -vt 0.678228 0.937239 -vt 0.678257 0.946475 -vt 0.661727 0.946526 -vt 0.893559 0.714255 -vt 0.958883 0.937969 -vt 0.958883 0.947204 -vt 0.681824 0.947204 -vt 0.893559 0.488066 -vt 0.893559 0.516340 -vt 0.616500 0.516339 -vt 0.958883 0.919498 -vt 0.958883 0.928733 -vt 0.681824 0.928733 -vt 0.893559 0.544613 -vt 0.616500 0.544613 -vt 0.658226 0.928733 -vt 0.893559 0.572887 -vt 0.616500 0.572887 -vt 0.681824 0.937968 -vt 0.893559 0.601160 -vt 0.616500 0.601160 -vt 0.958883 0.910263 -vt 0.893559 0.629434 -vt 0.616500 0.657708 -vt 0.616500 0.629434 -vt 0.661698 0.937291 -vt 0.657653 0.937950 -vt 0.643538 0.936764 -vt 0.636448 0.928733 -vt 0.627213 0.928733 -vt 0.627213 0.919498 -vt 0.656879 0.947153 -vt 0.642765 0.945967 -vt 0.636448 0.919498 -vt 0.643538 0.911467 -vt 0.616500 0.928733 -vt 0.616500 0.919498 -vt 0.636448 0.939446 -vt 0.627213 0.939446 -vt 0.636448 0.948681 -vt 0.627213 0.948681 -vt 0.627213 0.908785 -vt 0.913932 0.035192 -vt 0.928927 0.035192 -vt 0.931225 0.045755 -vt 0.910827 0.056535 -vt 0.911634 0.045755 -vt 0.917372 0.024944 -vt 0.925487 0.024944 -vt 0.932839 0.045755 -vt 0.952430 0.045755 -vt 0.953237 0.056535 -vt 0.938577 0.024944 -vt 0.946692 0.024944 -vt 0.950132 0.035192 -vt 0.935138 0.035192 -vt 0.784403 0.045755 -vt 0.786701 0.035192 -vt 0.801695 0.035192 -vt 0.803994 0.045755 -vt 0.804801 0.056535 -vt 0.790141 0.024944 -vt 0.798256 0.024944 -vt 0.807906 0.035192 -vt 0.822901 0.035192 -vt 0.825199 0.045755 -vt 0.805608 0.045755 -vt 0.826006 0.056535 -vt 0.811346 0.024944 -vt 0.819461 0.024944 -vt 0.826813 0.045755 -vt 0.846404 0.045755 -vt 0.847211 0.056535 -vt 0.832551 0.024944 -vt 0.840666 0.024944 -vt 0.844106 0.035192 -vt 0.829112 0.035192 -vt 0.848018 0.045755 -vt 0.867609 0.045755 -vt 0.853756 0.024944 -vt 0.861871 0.024944 -vt 0.865311 0.035192 -vt 0.850317 0.035192 -vt 0.871522 0.035192 -vt 0.886516 0.035192 -vt 0.888815 0.045755 -vt 0.869224 0.045755 -vt 0.889622 0.056535 -vt 0.874962 0.024944 -vt 0.883077 0.024944 -vt 0.921430 0.014924 -vt 0.942635 0.014924 -vt 0.794198 0.014924 -vt 0.815404 0.014924 -vt 0.836609 0.014924 -vt 0.857814 0.014924 -vt 0.879019 0.014924 -vt 0.892727 0.035192 -vt 0.907721 0.035192 -vt 0.910020 0.045755 -vt 0.896167 0.024944 -vt 0.900224 0.014924 -vt 0.904282 0.024944 -vt 0.953237 0.139653 -vt 0.932032 0.139653 -vt 0.932032 0.056535 -vt 0.910827 0.139653 -vt 0.890429 0.045755 -vt 0.889622 0.139653 -vt 0.868416 0.139653 -vt 0.868416 0.056535 -vt 0.911634 0.150433 -vt 0.931225 0.150433 -vt 0.928927 0.160997 -vt 0.913932 0.160997 -vt 0.925487 0.171245 -vt 0.932839 0.150433 -vt 0.952430 0.150433 -vt 0.950132 0.160997 -vt 0.935138 0.160997 -vt 0.946692 0.171245 -vt 0.790141 0.171245 -vt 0.786701 0.160997 -vt 0.801695 0.160997 -vt 0.783596 0.139653 -vt 0.804801 0.139653 -vt 0.803994 0.150433 -vt 0.784403 0.150433 -vt 0.826006 0.139653 -vt 0.825199 0.150433 -vt 0.807906 0.160997 -vt 0.805608 0.150433 -vt 0.822901 0.160997 -vt 0.819461 0.171245 -vt 0.829112 0.160997 -vt 0.826813 0.150433 -vt 0.846404 0.150433 -vt 0.844106 0.160997 -vt 0.840666 0.171245 -vt 0.847211 0.139653 -vt 0.850317 0.160997 -vt 0.865311 0.160997 -vt 0.861871 0.171245 -vt 0.867609 0.150433 -vt 0.848018 0.150433 -vt 0.871522 0.160997 -vt 0.886516 0.160997 -vt 0.883077 0.171245 -vt 0.888815 0.150433 -vt 0.869224 0.150433 -vt 0.890429 0.150433 -vt 0.910020 0.150433 -vt 0.907721 0.160997 -vt 0.896167 0.171245 -vt 0.892727 0.160997 -vt 0.783596 0.056535 -vt 0.461000 0.794171 -vt 0.475994 0.794171 -vt 0.478293 0.804735 -vt 0.457894 0.815515 -vt 0.458702 0.804735 -vt 0.464440 0.783923 -vt 0.472555 0.783923 -vt 0.479100 0.815515 -vt 0.479907 0.804735 -vt 0.499498 0.804735 -vt 0.485645 0.783923 -vt 0.493760 0.783923 -vt 0.497199 0.794171 -vt 0.482205 0.794171 -vt 0.331470 0.804734 -vt 0.333769 0.794171 -vt 0.348763 0.794171 -vt 0.351061 0.804734 -vt 0.351868 0.815514 -vt 0.337209 0.783922 -vt 0.345323 0.783922 -vt 0.354974 0.794171 -vt 0.369968 0.794171 -vt 0.372267 0.804734 -vt 0.352676 0.804734 -vt 0.373074 0.815514 -vt 0.358414 0.783923 -vt 0.366529 0.783923 -vt 0.373881 0.804734 -vt 0.393472 0.804734 -vt 0.394279 0.815514 -vt 0.379619 0.783923 -vt 0.387734 0.783923 -vt 0.391173 0.794171 -vt 0.376179 0.794171 -vt 0.395086 0.804734 -vt 0.414677 0.804734 -vt 0.397384 0.794171 -vt 0.400824 0.783923 -vt 0.408939 0.783923 -vt 0.412379 0.794171 -vt 0.418590 0.794171 -vt 0.433584 0.794171 -vt 0.435882 0.804734 -vt 0.416291 0.804734 -vt 0.436689 0.815515 -vt 0.422029 0.783923 -vt 0.430144 0.783923 -vt 0.468497 0.773903 -vt 0.489702 0.773903 -vt 0.341266 0.773903 -vt 0.362471 0.773903 -vt 0.383676 0.773903 -vt 0.404882 0.773903 -vt 0.426087 0.773903 -vt 0.439795 0.794171 -vt 0.454789 0.794171 -vt 0.457087 0.804735 -vt 0.443235 0.783923 -vt 0.447292 0.773903 -vt 0.451349 0.783923 -vt 0.500305 0.815515 -vt 0.500305 0.898633 -vt 0.479099 0.898632 -vt 0.457894 0.898632 -vt 0.437496 0.804734 -vt 0.436689 0.898632 -vt 0.415484 0.898632 -vt 0.415484 0.815515 -vt 0.461000 0.919976 -vt 0.458701 0.909413 -vt 0.478292 0.909413 -vt 0.475994 0.919976 -vt 0.472554 0.930224 -vt 0.479906 0.909413 -vt 0.499497 0.909413 -vt 0.497199 0.919976 -vt 0.482205 0.919976 -vt 0.493759 0.930224 -vt 0.333768 0.919975 -vt 0.348763 0.919975 -vt 0.345323 0.930224 -vt 0.331470 0.909412 -vt 0.330663 0.898632 -vt 0.351868 0.898632 -vt 0.351061 0.909412 -vt 0.373073 0.898632 -vt 0.372266 0.909412 -vt 0.352675 0.909412 -vt 0.369968 0.919975 -vt 0.354974 0.919975 -vt 0.366528 0.930224 -vt 0.373881 0.909412 -vt 0.393472 0.909412 -vt 0.391173 0.919975 -vt 0.376179 0.919975 -vt 0.387733 0.930224 -vt 0.394279 0.898632 -vt 0.400824 0.930224 -vt 0.397384 0.919976 -vt 0.412378 0.919976 -vt 0.395086 0.909412 -vt 0.414677 0.909413 -vt 0.418589 0.919976 -vt 0.433584 0.919976 -vt 0.430144 0.930224 -vt 0.435882 0.909413 -vt 0.416291 0.909413 -vt 0.239640 0.947512 -vt 0.231541 0.947006 -vt 0.232233 0.935945 -vt 0.895743 0.409236 -vt 0.903946 0.408532 -vt 0.903250 0.416617 -vt 0.437496 0.909413 -vt 0.457087 0.909413 -vt 0.454789 0.919976 -vt 0.443234 0.930224 -vt 0.439794 0.919976 -vt 0.330663 0.815514 -vt 0.850384 0.290224 -vt 0.850713 0.282116 -vt 0.864672 0.282464 -vt 0.530152 0.806284 -vt 0.545310 0.806592 -vt 0.544113 0.814618 -vt 0.896225 0.368688 -vt 0.896728 0.360589 -vt 0.904896 0.361625 -vt 0.223442 0.946502 -vt 0.215366 0.945701 -vt 0.216371 0.938702 -vt 0.895568 0.401123 -vt 0.906647 0.400880 -vt 0.895718 0.376787 -vt 0.907286 0.369380 -vt 0.897529 0.352514 -vt 0.904529 0.353518 -vt 0.247748 0.947841 -vt 0.239987 0.933554 -vt 0.255863 0.947841 -vt 0.256082 0.933880 -vt 0.263733 0.936583 -vt 0.248055 0.932683 -vt 0.272089 0.947488 -vt 0.271385 0.939285 -vt 0.279470 0.939980 -vt 0.895389 0.384895 -vt 0.909677 0.377134 -vt 0.224478 0.938334 -vt 0.895389 0.393010 -vt 0.909351 0.393229 -vt 0.263976 0.947663 -vt 0.910548 0.385202 -vt 0.865364 0.368728 -vt 0.854285 0.368971 -vt 0.856986 0.361319 -vt 0.895568 0.306452 -vt 0.906647 0.306209 -vt 0.903946 0.313861 -vt 0.530481 0.798176 -vt 0.544440 0.798523 -vt 0.851220 0.274017 -vt 0.862280 0.274709 -vt 0.851723 0.265918 -vt 0.859891 0.266954 -vt 0.530988 0.790077 -vt 0.542048 0.790769 -vt 0.531491 0.781978 -vt 0.539659 0.783014 -vt 0.852524 0.257843 -vt 0.859524 0.258848 -vt 0.532292 0.773903 -vt 0.539292 0.774907 -vt 0.850737 0.314565 -vt 0.858940 0.313861 -vt 0.858245 0.321946 -vt 0.530505 0.830625 -vt 0.538708 0.829921 -vt 0.538013 0.838006 -vt 0.850562 0.306452 -vt 0.861642 0.306209 -vt 0.530330 0.822512 -vt 0.541410 0.822269 -vt 0.850384 0.298339 -vt 0.864346 0.298558 -vt 0.530152 0.814399 -vt 0.865542 0.290532 -vt 0.543971 0.925322 -vt 0.543170 0.933397 -vt 0.536171 0.932392 -vt 0.937729 0.536715 -vt 0.937226 0.544814 -vt 0.929058 0.543778 -vt 0.895389 0.298339 -vt 0.909351 0.298558 -vt 0.865542 0.376841 -vt 0.851581 0.376622 -vt 0.895389 0.290225 -vt 0.910548 0.290532 -vt 0.865542 0.384955 -vt 0.850384 0.384648 -vt 0.895718 0.282116 -vt 0.909677 0.282464 -vt 0.865214 0.393064 -vt 0.851255 0.392716 -vt 0.896225 0.274017 -vt 0.907285 0.274709 -vt 0.896728 0.265918 -vt 0.904896 0.266954 -vt 0.864707 0.401163 -vt 0.853646 0.400471 -vt 0.864203 0.409262 -vt 0.856036 0.408226 -vt 0.897529 0.257843 -vt 0.904529 0.258847 -vt 0.863402 0.417337 -vt 0.856403 0.416332 -vt 0.895743 0.314565 -vt 0.903250 0.321946 -vt 0.865189 0.360615 -vt 0.857682 0.353234 -vt 0.141976 0.953465 -vt 0.133868 0.953136 -vt 0.134215 0.939178 -vt 0.047305 0.953465 -vt 0.047612 0.938307 -vt 0.055638 0.939504 -vt 0.936424 0.552889 -vt 0.929425 0.551884 -vt 0.544957 0.876674 -vt 0.536754 0.877379 -vt 0.537449 0.869294 -vt 0.938211 0.496167 -vt 0.930008 0.496871 -vt 0.930704 0.488786 -vt 0.545132 0.884787 -vt 0.534052 0.885031 -vt 0.938386 0.504280 -vt 0.927307 0.504523 -vt 0.545310 0.892900 -vt 0.531349 0.892682 -vt 0.938564 0.512393 -vt 0.924603 0.512174 -vt 0.545310 0.901015 -vt 0.530152 0.900708 -vt 0.938564 0.520507 -vt 0.923406 0.520200 -vt 0.544981 0.909123 -vt 0.531023 0.908776 -vt 0.938236 0.528616 -vt 0.924277 0.528268 -vt 0.544475 0.917222 -vt 0.533414 0.916530 -vt 0.535804 0.924285 -vt 0.926668 0.536023 -vt 0.890928 0.227737 -vt 0.890701 0.213775 -vt 0.898435 0.216234 -vt 0.914375 0.760316 -vt 0.903295 0.760559 -vt 0.905997 0.752908 -vt 0.039197 0.953136 -vt 0.039544 0.939178 -vt 0.125769 0.952630 -vt 0.126461 0.941569 -vt 0.117670 0.952126 -vt 0.118706 0.943958 -vt 0.031098 0.952630 -vt 0.031790 0.941569 -vt 0.022999 0.952126 -vt 0.024035 0.943959 -vt 0.109594 0.951325 -vt 0.110599 0.944326 -vt 0.014924 0.951325 -vt 0.015928 0.944326 -vt 0.166317 0.953112 -vt 0.165613 0.944909 -vt 0.173698 0.945604 -vt 0.071646 0.953112 -vt 0.070942 0.944909 -vt 0.079027 0.945604 -vt 0.158204 0.953287 -vt 0.157961 0.942207 -vt 0.063533 0.953287 -vt 0.063290 0.942207 -vt 0.150091 0.953465 -vt 0.150309 0.939504 -vt 0.055420 0.953465 -vt 0.142283 0.938307 -vt 0.387411 0.961410 -vt 0.395487 0.962211 -vt 0.394482 0.969211 -vt 0.859256 0.219236 -vt 0.851165 0.219862 -vt 0.850928 0.212795 -vt 0.914553 0.768429 -vt 0.900591 0.768211 -vt 0.882818 0.227996 -vt 0.882641 0.212835 -vt 0.914553 0.776544 -vt 0.899395 0.776237 -vt 0.874703 0.227926 -vt 0.874605 0.213963 -vt 0.914224 0.784652 -vt 0.900265 0.784305 -vt 0.866592 0.227678 -vt 0.866931 0.216601 -vt 0.858481 0.227433 -vt 0.913718 0.792751 -vt 0.902657 0.792059 -vt 0.913214 0.800850 -vt 0.905047 0.799814 -vt 0.850384 0.226890 -vt 0.912413 0.808926 -vt 0.905414 0.807921 -vt 0.907135 0.226866 -vt 0.906169 0.218690 -vt 0.914272 0.219127 -vt 0.914200 0.752203 -vt 0.906692 0.744823 -vt 0.899032 0.227300 -vt 0.457715 0.975230 -vt 0.449607 0.974901 -vt 0.449955 0.960942 -vt 0.931776 0.853931 -vt 0.923668 0.853602 -vt 0.924016 0.839643 -vt 0.907324 0.211686 -vt 0.905194 0.203734 -vt 0.913275 0.203002 -vt 0.338764 0.960425 -vt 0.339468 0.968628 -vt 0.331383 0.967932 -vt 0.899367 0.213280 -vt 0.897187 0.202414 -vt 0.346877 0.960250 -vt 0.347120 0.971329 -vt 0.891411 0.214876 -vt 0.889180 0.201092 -vt 0.354990 0.960071 -vt 0.354772 0.974033 -vt 0.883421 0.216297 -vt 0.881068 0.201320 -vt 0.363105 0.960071 -vt 0.362798 0.975230 -vt 0.875381 0.217394 -vt 0.873278 0.203590 -vt 0.371213 0.960400 -vt 0.370866 0.974359 -vt 0.867318 0.218314 -vt 0.866062 0.207303 -vt 0.858845 0.211013 -vt 0.379312 0.960907 -vt 0.378620 0.971968 -vt 0.386375 0.969578 -vt 0.264056 0.985076 -vt 0.255941 0.985076 -vt 0.255941 0.977688 -vt 0.899073 0.454572 -vt 0.899073 0.447184 -vt 0.907188 0.447184 -vt 0.915569 0.853096 -vt 0.916261 0.842035 -vt 0.907470 0.852592 -vt 0.908506 0.844424 -vt 0.441508 0.974394 -vt 0.442200 0.963334 -vt 0.433409 0.973891 -vt 0.434445 0.965723 -vt 0.899395 0.851791 -vt 0.900399 0.844792 -vt 0.425334 0.973090 -vt 0.426338 0.966090 -vt 0.956117 0.853578 -vt 0.955413 0.845375 -vt 0.963498 0.846070 -vt 0.482056 0.974876 -vt 0.481352 0.966674 -vt 0.489437 0.967369 -vt 0.948004 0.853753 -vt 0.947761 0.842673 -vt 0.473943 0.975052 -vt 0.473700 0.963972 -vt 0.939891 0.853931 -vt 0.940110 0.839970 -vt 0.465830 0.975230 -vt 0.466049 0.961268 -vt 0.932084 0.838773 -vt 0.458023 0.960071 -vt 0.890959 0.454573 -vt 0.890959 0.447184 -vt 0.247826 0.985076 -vt 0.247826 0.977688 -vt 0.882844 0.454573 -vt 0.882844 0.447184 -vt 0.239711 0.985076 -vt 0.239711 0.977688 -vt 0.874729 0.454573 -vt 0.874729 0.447184 -vt 0.231596 0.985076 -vt 0.231596 0.977688 -vt 0.223481 0.985076 -vt 0.223481 0.977688 -vt 0.866614 0.454573 -vt 0.866614 0.447184 -vt 0.858499 0.454573 -vt 0.858499 0.447184 -vt 0.215366 0.985076 -vt 0.215366 0.977688 -vt 0.850384 0.454573 -vt 0.850384 0.447184 -vt 0.272171 0.985076 -vt 0.272171 0.977688 -vt 0.280285 0.977688 -vt 0.907188 0.454572 -vt 0.915303 0.447184 -vt 0.264056 0.977688 -vt 0.674682 0.802285 -vt 0.674682 0.820755 -vt 0.616500 0.820755 -vt 0.811365 0.802285 -vt 0.811365 0.820755 -vt 0.869548 0.802285 -vt 0.869547 0.820755 -vt 0.811365 0.878938 -vt 0.674682 0.744102 -vt 0.056225 0.889989 -vt 0.167049 0.889989 -vt 0.167049 0.908460 -vt 0.167049 0.853048 -vt 0.185519 0.853048 -vt 0.185519 0.889989 -vt 0.056225 0.853048 -vt 0.019284 0.834577 -vt 0.167049 0.834577 -vt 0.014924 0.889989 -vt 0.014924 0.853048 -vt 0.497840 0.488066 -vt 0.586653 0.655243 -vt 0.419476 0.744055 -vt 0.330663 0.576878 -vt 0.300816 0.612470 -vt 0.300816 0.572887 -vt 0.300816 0.533304 -vt 0.300816 0.493721 -vt 0.300816 0.799075 -vt 0.300816 0.759492 -vt 0.300816 0.680326 -vt 0.300816 0.719909 -vt 0.283625 0.854570 -vt 0.283625 0.882843 -vt 0.235359 0.902836 -vt 0.215366 0.854570 -vt 0.263633 0.834577 -vt 0.783596 0.201092 -vt 0.661698 0.910940 -vt 0.616500 0.714255 -vt 0.616500 0.488066 -vt 0.681825 0.910262 -vt 0.657653 0.910280 -vt 0.636448 0.908785 -vt 0.917372 0.171245 -vt 0.938577 0.171245 -vt 0.798256 0.171245 -vt 0.811346 0.171245 -vt 0.832551 0.171245 -vt 0.853756 0.171245 -vt 0.874962 0.171245 -vt 0.904282 0.171245 -vt 0.464439 0.930224 -vt 0.485644 0.930224 -vt 0.337208 0.930224 -vt 0.358413 0.930224 -vt 0.379619 0.930224 -vt 0.408939 0.930224 -vt 0.422029 0.930224 -vt 0.896216 0.417337 -vt 0.451349 0.930224 -vt 0.280190 0.947015 -vt 0.851210 0.322666 -vt 0.530978 0.838726 -vt 0.896216 0.322666 -vt 0.864716 0.352514 -vt 0.544484 0.868573 -vt 0.937738 0.488066 -vt 0.174418 0.952639 -vt 0.079747 0.952638 -vt 0.915217 0.226135 -vt 0.913726 0.744102 -vt 0.915217 0.209802 -vt 0.330663 0.960898 -vt 0.964218 0.853105 -vt 0.490157 0.974403 -vt 0.280285 0.985076 -vt 0.915303 0.454572 -vt 0.616500 0.802285 -vt 0.674682 0.878938 -vt 0.811365 0.744102 -vt 0.019284 0.908460 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 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.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.707100 -0.707100 -0.000000 -vn 0.000000 -0.382700 -0.923900 -vn -0.650400 0.650400 -0.392200 -vn 0.000000 -0.923900 -0.382700 -vn -0.707100 0.707100 0.000000 -vn 0.000000 -0.923900 0.382700 -vn 0.707100 -0.707100 0.000000 -vn 0.000000 -0.382700 0.923900 -vn 0.651300 -0.651300 0.389400 -vn -0.000000 0.382700 0.923900 -vn 0.707100 0.707100 0.000000 -vn -0.000000 0.923900 0.382700 -vn -0.000000 0.382700 -0.923900 -vn -0.000000 0.923900 -0.382700 -vn -0.510700 0.510700 -0.691600 -vn 0.468000 -0.468000 0.749700 -vn -0.786200 -0.525300 0.325600 -vn -0.908700 -0.180700 0.376400 -vn -0.541400 -0.810300 0.224300 -vn -0.376400 -0.180700 0.908700 -vn -0.224300 -0.810300 0.541400 -vn -0.325600 -0.525300 0.786200 -vn 0.325600 -0.525300 0.786200 -vn 0.376400 -0.180700 0.908700 -vn 0.224300 -0.810300 0.541400 -vn 0.786200 -0.525300 0.325600 -vn 0.908700 -0.180700 0.376400 -vn 0.541400 -0.810300 0.224300 -vn 0.908700 -0.180700 -0.376400 -vn 0.541400 -0.810300 -0.224300 -vn 0.786200 -0.525300 -0.325600 -vn 0.376400 -0.180700 -0.908700 -vn 0.224300 -0.810300 -0.541400 -vn 0.325600 -0.525300 -0.786200 -vn -0.325600 -0.525300 -0.786200 -vn -0.376400 -0.180700 -0.908700 -vn -0.224300 -0.810300 -0.541400 -vn -0.194500 -0.977600 0.080500 -vn -0.080500 -0.977600 0.194500 -vn 0.080500 -0.977600 0.194500 -vn 0.194500 -0.977600 0.080500 -vn 0.194500 -0.977600 -0.080500 -vn 0.080500 -0.977600 -0.194500 -vn -0.080500 -0.977600 -0.194500 -vn -0.786200 -0.525300 -0.325600 -vn -0.194500 -0.977600 -0.080500 -vn -0.382700 0.000000 0.923900 -vn -0.923900 0.000000 0.382700 -vn -0.908700 -0.180700 -0.376400 -vn -0.541400 -0.810300 -0.224300 -vn -0.923900 0.000000 -0.382700 -vn -0.382700 0.000000 -0.923900 -vn -0.786200 0.525300 0.325600 -vn -0.541400 0.810300 0.224300 -vn -0.908700 0.180700 0.376400 -vn -0.325600 0.525300 0.786200 -vn -0.224300 0.810300 0.541400 -vn -0.376400 0.180700 0.908700 -vn 0.224300 0.810300 0.541400 -vn 0.376400 0.180700 0.908700 -vn 0.325600 0.525300 0.786200 -vn 0.908700 0.180700 0.376400 -vn 0.786200 0.525300 0.325600 -vn 0.541400 0.810300 0.224300 -vn 0.786200 0.525300 -0.325600 -vn 0.541400 0.810300 -0.224300 -vn 0.908700 0.180700 -0.376400 -vn 0.224300 0.810300 -0.541400 -vn 0.376400 0.180700 -0.908700 -vn 0.325600 0.525300 -0.786200 -vn -0.224300 0.810300 -0.541400 -vn -0.376400 0.180700 -0.908700 -vn -0.325600 0.525300 -0.786200 -vn -0.786200 0.525300 -0.325600 -vn -0.541400 0.810300 -0.224300 -vn -0.908700 0.180700 -0.376400 -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.347600 0.065000 0.935400 -vn -0.382400 0.388200 -0.838500 -vn 0.363800 0.401800 -0.840400 -vn -0.923600 0.026600 0.382500 -vn -0.380500 0.105500 0.918700 -vn 0.912500 0.000000 0.409100 -vn -0.382400 0.037800 -0.923200 -vn 0.914900 0.016500 -0.403400 -vn 0.363800 0.049600 -0.930200 -vn 0.912500 -0.289300 0.289300 -vn -0.923900 0.146400 -0.353600 -vn -0.923600 -0.121800 0.363600 -vn -0.380500 -0.254100 0.889200 -vn 0.347600 -0.297900 0.889000 -vn 0.912500 -0.156600 0.378000 -vn 0.914900 0.169600 -0.366300 -vn -0.380500 -0.808400 0.449100 -vn -0.923600 -0.343300 0.171000 -vn 0.914900 0.296900 -0.273500 -vn 0.363800 0.692800 -0.622700 -vn -0.382400 0.679500 -0.626100 -vn -0.923900 0.270600 -0.270600 -vn -0.923600 -0.251700 0.289300 -vn -0.380500 -0.575000 0.724300 -vn 0.347600 -0.615500 0.707400 -vn -0.382400 0.923200 0.037800 -vn 0.363800 0.930200 0.049600 -vn 0.347600 -0.839300 0.418000 -vn 0.912500 -0.378000 0.156600 -vn 0.914900 0.379000 -0.139100 -vn 0.363800 0.878300 -0.310100 -vn -0.382400 0.867400 -0.318400 -vn -0.923900 0.353600 -0.146400 -vn 0.914900 0.366300 0.169600 -vn 0.912500 -0.378000 -0.156600 -vn -0.923600 -0.382500 0.026600 -vn -0.380500 -0.918700 0.105500 -vn 0.347600 -0.935400 0.065000 -vn 0.912500 -0.409100 0.000000 -vn 0.914900 0.403400 0.016500 -vn -0.380500 -0.724300 -0.575000 -vn 0.363800 0.840400 0.401800 -vn -0.382400 0.838500 0.388200 -vn -0.923900 0.353600 0.146400 -vn -0.923600 -0.363600 -0.121800 -vn -0.380500 -0.889200 -0.254100 -vn 0.347600 -0.889000 -0.297900 -vn -0.382400 0.318400 0.867400 -vn 0.347600 -0.707400 -0.615500 -vn 0.912500 -0.289300 -0.289300 -vn 0.914900 0.273500 0.296900 -vn 0.363800 0.622700 0.692800 -vn -0.382400 0.626100 0.679500 -vn -0.923900 0.270600 0.270600 -vn -0.923600 -0.289300 -0.251700 -vn -0.923900 0.146400 0.353600 -vn -0.923600 -0.171000 -0.343300 -vn -0.380500 -0.449100 -0.808400 -vn 0.347600 -0.418000 -0.839300 -vn 0.912500 -0.156600 -0.378000 -vn 0.914900 0.139100 0.379000 -vn 0.363800 0.310100 0.878300 -vn 0.000000 0.894400 0.447200 -vn -0.914900 0.016500 -0.403400 -vn 0.380500 0.105500 0.918700 -vn -0.363800 0.401800 -0.840400 -vn 0.382400 0.388200 -0.838500 -vn -0.912500 0.000000 0.409100 -vn -0.347600 0.065000 0.935400 -vn 0.923600 0.026600 0.382500 -vn -0.363800 0.049600 -0.930200 -vn 0.382400 0.037800 -0.923200 -vn 0.923600 -0.251700 0.289300 -vn -0.914900 0.169600 -0.366300 -vn -0.912500 -0.156600 0.378000 -vn -0.347600 -0.297900 0.889000 -vn 0.380500 -0.254100 0.889200 -vn 0.923600 -0.121800 0.363600 -vn 0.923900 0.146400 -0.353600 -vn -0.347600 -0.839300 0.418000 -vn -0.912500 -0.378000 0.156600 -vn 0.923900 0.270600 -0.270600 -vn 0.382400 0.679500 -0.626100 -vn -0.363800 0.692800 -0.622700 -vn -0.914900 0.296900 -0.273500 -vn -0.912500 -0.289300 0.289300 -vn -0.347600 -0.615500 0.707400 -vn 0.380500 -0.575000 0.724300 -vn -0.363800 0.930200 0.049600 -vn 0.382400 0.923200 0.037800 -vn 0.380500 -0.808400 0.449100 -vn 0.923600 -0.343300 0.171000 -vn 0.923900 0.353600 -0.146400 -vn 0.382400 0.867400 -0.318400 -vn -0.363800 0.878300 -0.310100 -vn -0.914900 0.379000 -0.139100 -vn 0.923900 0.353600 0.146400 -vn 0.923600 -0.363600 -0.121800 -vn -0.914900 0.403400 0.016500 -vn -0.912500 -0.409100 0.000000 -vn -0.347600 -0.935400 0.065000 -vn 0.380500 -0.918700 0.105500 -vn 0.923600 -0.382500 0.026600 -vn -0.347600 -0.707400 -0.615400 -vn 0.382400 0.838500 0.388200 -vn -0.363800 0.840400 0.401800 -vn -0.914900 0.366300 0.169600 -vn -0.912500 -0.378000 -0.156600 -vn -0.347600 -0.889000 -0.297900 -vn 0.380500 -0.889200 -0.254100 -vn -0.363800 0.310100 0.878300 -vn 0.380500 -0.724300 -0.575000 -vn 0.923600 -0.289300 -0.251700 -vn 0.923900 0.270600 0.270600 -vn 0.382400 0.626100 0.679500 -vn -0.363800 0.622700 0.692800 -vn -0.914900 0.273500 0.296900 -vn -0.912500 -0.289300 -0.289300 -vn -0.914900 0.139100 0.379000 -vn -0.912500 -0.156600 -0.378000 -vn -0.347600 -0.418000 -0.839300 -vn 0.380500 -0.449100 -0.808400 -vn 0.923600 -0.171000 -0.343300 -vn 0.923900 0.146400 0.353600 -vn 0.382400 0.318400 0.867400 -s off -f 4/1/1 3/2/1 1/3/1 -f 8/4/2 7/5/2 3/6/2 -f 6/7/3 5/8/3 7/9/3 -f 1/10/4 9/11/4 10/12/4 -f 3/13/5 7/14/5 5/15/5 -f 8/4/6 4/1/6 2/16/6 -f 11/17/3 15/18/3 16/19/3 -f 5/15/4 12/20/4 9/11/4 -f 2/16/4 10/12/4 11/21/4 -f 6/7/4 11/21/4 12/20/4 -f 14/22/4 13/23/4 16/19/4 -f 10/24/6 14/22/6 15/18/6 -f 9/25/1 13/23/1 14/22/1 -f 12/26/5 16/19/5 13/23/5 -f 37/27/7 45/28/7 44/29/7 -f 22/30/2 18/31/2 35/32/2 -f 19/33/8 20/34/8 22/35/8 -f 17/36/8 41/37/8 48/38/8 -f 30/39/2 28/40/2 37/27/2 -f 21/41/9 22/30/9 24/42/9 -f 18/31/9 48/38/9 47/43/9 -f 34/44/2 40/45/2 17/36/2 -f 23/46/10 24/47/10 26/48/10 -f 38/49/11 44/29/11 43/50/11 -f 26/51/2 36/52/2 37/53/2 -f 25/54/12 26/51/12 28/55/12 -f 40/45/13 42/56/13 41/37/13 -f 34/57/2 32/58/2 39/59/2 -f 28/40/7 30/39/7 29/60/7 -f 41/37/4 49/61/4 50/62/4 -f 24/47/2 35/32/2 36/52/2 -f 30/63/11 32/64/11 31/65/11 -f 22/35/2 20/34/2 17/36/2 -f 34/44/13 20/66/13 19/67/13 -f 32/58/14 34/57/14 33/68/14 -f 39/59/14 43/50/14 42/56/14 -f 30/63/2 38/49/2 39/59/2 -f 35/32/10 47/43/10 46/69/10 -f 36/52/12 46/69/12 45/70/12 -f 50/71/4 51/72/4 47/43/4 -f 51/73/4 52/74/4 46/69/4 -f 52/75/4 53/76/4 45/70/4 -f 45/28/4 53/77/4 54/78/4 -f 54/79/4 55/80/4 43/50/4 -f 55/81/4 56/82/4 42/56/4 -f 56/83/4 49/84/4 41/37/4 -f 55/85/14 63/86/14 64/87/14 -f 55/88/4 53/89/4 49/90/4 -f 53/91/7 61/92/7 62/93/7 -f 52/94/10 51/95/10 59/96/10 -f 49/97/8 58/98/8 57/99/8 -f 56/100/13 64/87/13 58/98/13 -f 54/101/11 62/93/11 63/86/11 -f 53/102/12 52/94/12 60/103/12 -f 51/95/9 50/104/9 57/99/9 -f 65/105/15 66/106/15 89/107/15 -f 68/108/16 70/109/16 69/110/16 -f 86/111/17 65/112/17 92/113/17 -f 69/110/18 70/109/18 72/114/18 -f 88/115/19 84/116/19 65/117/19 -f 72/118/20 74/119/20 73/120/20 -f 83/121/21 87/122/21 85/123/21 -f 74/119/22 76/124/22 75/125/22 -f 85/123/23 90/126/23 89/107/23 -f 76/124/24 78/127/24 77/128/24 -f 86/129/25 85/123/25 87/122/25 -f 78/127/26 80/130/26 79/131/26 -f 84/132/15 83/121/15 66/106/15 -f 82/133/27 68/108/27 67/134/27 -f 80/130/28 82/133/28 81/135/28 -f 86/111/25 91/136/25 90/126/25 -f 90/126/25 91/137/25 95/138/25 -f 96/139/4 100/140/4 97/141/4 -f 92/142/29 94/143/29 95/138/29 -f 90/126/30 96/139/30 93/144/30 -f 89/107/15 93/144/15 94/145/15 -f 100/140/19 99/146/19 98/147/19 -f 96/139/25 95/148/25 99/149/25 -f 95/148/2 94/150/2 98/151/2 -f 93/144/15 97/141/15 98/152/15 -f 102/153/31 106/154/31 107/155/31 -f 104/156/32 103/157/32 107/155/32 -f 102/153/33 101/158/33 105/159/33 -f 107/160/34 111/161/34 112/162/34 -f 105/163/35 109/164/35 110/165/35 -f 106/166/36 110/165/36 111/161/36 -f 111/167/37 110/168/37 115/169/37 -f 111/167/38 116/170/38 117/171/38 -f 109/172/39 114/173/39 115/169/39 -f 115/174/40 119/175/40 120/176/40 -f 116/177/41 120/176/41 121/178/41 -f 114/179/42 118/180/42 119/175/42 -f 120/181/43 124/182/43 125/183/43 -f 118/184/44 122/185/44 123/186/44 -f 119/187/45 123/186/45 124/182/45 -f 125/183/46 124/188/46 128/189/46 -f 122/190/47 126/191/47 127/192/47 -f 124/188/48 123/193/48 127/192/48 -f 127/194/49 131/195/49 132/196/49 -f 128/197/50 132/196/50 133/198/50 -f 126/199/51 130/200/51 131/195/51 -f 101/158/52 113/201/52 105/159/52 -f 105/163/53 113/202/53 109/164/53 -f 109/172/54 113/203/54 114/173/54 -f 114/179/55 113/204/55 118/180/55 -f 118/184/56 113/205/56 122/185/56 -f 122/190/57 113/206/57 126/191/57 -f 126/199/58 113/207/58 130/200/58 -f 131/208/59 102/209/59 103/210/59 -f 130/211/60 113/212/60 101/213/60 -f 112/162/61 142/214/61 138/215/61 -f 108/216/62 138/215/62 134/217/62 -f 132/218/63 103/210/63 104/156/63 -f 131/208/64 130/211/64 101/213/64 -f 162/219/65 133/198/65 104/156/65 -f 162/219/66 158/220/66 129/221/66 -f 135/222/67 139/223/67 140/224/67 -f 136/225/68 140/224/68 141/226/68 -f 135/222/69 134/217/69 138/215/69 -f 139/227/70 143/228/70 144/229/70 -f 140/230/71 144/229/71 145/231/71 -f 139/227/72 138/215/72 142/214/72 -f 145/232/73 144/233/73 148/234/73 -f 142/235/74 146/236/74 147/237/74 -f 144/233/75 143/238/75 147/237/75 -f 146/236/76 150/239/76 151/240/76 -f 148/241/77 147/242/77 151/240/77 -f 148/241/78 152/243/78 153/244/78 -f 152/245/79 151/246/79 155/247/79 -f 152/245/80 156/248/80 157/249/80 -f 150/239/81 154/250/81 155/247/81 -f 156/251/82 160/252/82 161/253/82 -f 154/250/83 158/220/83 159/254/83 -f 156/251/84 155/255/84 159/254/84 -f 160/256/85 164/257/85 165/258/85 -f 158/220/86 162/219/86 163/259/86 -f 159/260/87 163/259/87 164/257/87 -f 163/261/88 135/262/88 136/263/88 -f 165/264/89 164/265/89 136/263/89 -f 162/219/90 134/217/90 135/262/90 -f 129/221/91 158/220/91 154/250/91 -f 125/183/92 154/250/92 150/239/92 -f 150/239/93 146/236/93 117/171/93 -f 146/236/94 142/235/94 112/266/94 -f 167/267/31 171/268/31 172/269/31 -f 169/270/32 168/271/32 172/269/32 -f 167/267/33 166/272/33 170/273/33 -f 173/274/34 172/275/34 176/276/34 -f 170/277/35 174/278/35 175/279/35 -f 171/280/36 175/279/36 176/276/36 -f 176/281/37 175/282/37 180/283/37 -f 176/281/38 181/284/38 182/285/38 -f 174/286/39 179/287/39 180/283/39 -f 180/288/40 184/289/40 185/290/40 -f 181/291/41 185/290/41 186/292/41 -f 179/293/42 183/294/42 184/289/42 -f 185/295/43 189/296/43 190/297/43 -f 183/298/44 187/299/44 188/300/44 -f 184/301/45 188/300/45 189/296/45 -f 190/297/46 189/302/46 193/303/46 -f 188/304/47 187/305/47 191/306/47 -f 189/302/48 188/304/48 192/307/48 -f 192/308/49 196/309/49 197/310/49 -f 193/311/50 197/310/50 198/312/50 -f 191/313/51 195/314/51 196/309/51 -f 166/272/52 178/315/52 170/273/52 -f 170/277/53 178/316/53 174/278/53 -f 174/286/54 178/317/54 179/287/54 -f 179/293/55 178/318/55 183/294/55 -f 183/298/56 178/319/56 187/299/56 -f 187/305/57 178/320/57 191/306/57 -f 191/313/58 178/321/58 195/314/58 -f 196/322/59 167/323/59 168/324/59 -f 195/325/60 178/326/60 166/327/60 -f 177/328/61 207/329/61 203/330/61 -f 173/274/62 203/330/62 199/331/62 -f 198/312/63 197/332/63 168/324/63 -f 196/322/64 195/325/64 166/327/64 -f 227/333/65 198/312/65 169/270/65 -f 227/333/66 223/334/66 194/335/66 -f 201/336/67 200/337/67 204/338/67 -f 201/336/68 205/339/68 206/340/68 -f 199/331/69 203/330/69 204/338/69 -f 204/341/70 208/342/70 209/343/70 -f 205/344/71 209/343/71 210/345/71 -f 203/330/72 207/329/72 208/342/72 -f 209/346/73 213/347/73 214/348/73 -f 208/349/74 207/350/74 211/351/74 -f 209/346/75 208/349/75 212/352/75 -f 211/351/76 215/353/76 216/354/76 -f 212/355/77 216/354/77 217/356/77 -f 213/357/78 217/356/78 218/358/78 -f 216/359/79 220/360/79 221/361/79 -f 217/362/80 221/361/80 222/363/80 -f 215/353/81 219/364/81 220/360/81 -f 222/365/82 221/366/82 225/367/82 -f 220/368/83 219/364/83 223/334/83 -f 221/366/84 220/368/84 224/369/84 -f 225/370/85 229/371/85 230/372/85 -f 223/334/86 227/333/86 228/373/86 -f 224/374/87 228/373/87 229/371/87 -f 165/375/65 137/376/65 231/377/65 -f 214/378/95 242/379/95 241/380/95 -f 228/381/88 200/382/88 201/383/88 -f 230/384/89 229/385/89 201/383/89 -f 227/333/90 199/331/90 200/382/90 -f 194/335/91 223/334/91 219/364/91 -f 190/297/92 219/364/92 215/353/92 -f 215/353/93 211/351/93 182/285/93 -f 211/351/94 207/350/94 177/386/94 -f 237/387/96 238/388/96 254/389/96 -f 245/390/97 261/391/97 260/392/97 -f 202/393/98 206/394/98 240/395/98 -f 141/396/99 145/397/99 233/398/99 -f 218/399/100 243/400/100 242/379/100 -f 230/401/65 202/393/65 239/402/65 -f 206/394/99 210/403/99 241/404/99 -f 161/405/101 165/375/101 238/406/101 -f 157/407/102 236/408/102 235/409/102 -f 161/405/103 237/410/103 236/408/103 -f 149/411/95 234/412/95 233/413/95 -f 226/414/101 230/401/101 246/415/101 -f 137/376/98 141/396/98 232/416/98 -f 222/417/102 244/418/102 243/400/102 -f 153/419/100 235/409/100 234/412/100 -f 226/414/103 245/420/103 244/418/103 -f 259/421/104 275/422/104 274/423/104 -f 251/424/104 267/425/104 266/426/104 -f 245/390/96 246/427/96 262/428/96 -f 238/388/105 231/429/105 247/430/105 -f 231/429/106 232/431/106 248/432/106 -f 246/427/105 239/433/105 255/434/105 -f 239/433/106 240/435/106 256/436/106 -f 232/431/107 233/437/107 249/438/107 -f 240/435/107 241/439/107 257/440/107 -f 234/441/108 250/442/108 249/443/108 -f 242/444/108 258/445/108 257/446/108 -f 235/447/109 251/448/109 250/442/109 -f 243/449/109 259/450/109 258/445/109 -f 236/451/110 252/452/110 251/448/110 -f 244/453/110 260/392/110 259/450/110 -f 237/387/97 253/454/97 252/452/97 -f 264/455/111 265/456/111 281/457/111 -f 271/458/112 272/459/112 288/460/112 -f 252/461/113 268/462/113 267/425/113 -f 260/463/113 276/464/113 275/422/113 -f 253/465/114 269/466/114 268/462/114 -f 261/467/114 277/468/114 276/464/114 -f 253/465/115 254/469/115 270/470/115 -f 261/467/115 262/471/115 278/472/115 -f 254/469/116 247/473/116 263/474/116 -f 247/473/117 248/475/117 264/476/117 -f 262/471/116 255/477/116 271/478/116 -f 255/477/117 256/479/117 272/480/117 -f 248/475/118 249/481/118 265/482/118 -f 256/479/118 257/483/118 273/484/118 -f 250/485/119 266/426/119 265/486/119 -f 258/487/119 274/423/119 273/488/119 -f 285/489/120 286/490/120 302/491/120 -f 293/492/121 309/493/121 308/494/121 -f 272/459/111 273/495/111 289/496/111 -f 266/497/122 282/498/122 281/499/122 -f 274/500/122 290/501/122 289/502/122 -f 267/503/123 283/504/123 282/498/123 -f 275/505/123 291/506/123 290/501/123 -f 268/507/124 284/508/124 283/504/124 -f 276/509/124 292/510/124 291/506/124 -f 269/511/125 285/512/125 284/508/125 -f 277/513/125 293/514/125 292/510/125 -f 269/511/126 270/515/126 286/516/126 -f 277/513/126 278/517/126 294/518/126 -f 270/515/127 263/519/127 279/520/127 -f 263/519/112 264/455/112 280/521/112 -f 278/517/127 271/458/127 287/522/127 -f 300/523/128 316/524/128 315/525/128 -f 307/526/129 323/527/129 322/528/129 -f 293/492/120 294/529/120 310/530/120 -f 286/490/14 279/531/14 295/532/14 -f 279/531/130 280/533/130 296/534/130 -f 294/529/14 287/535/14 303/536/14 -f 287/535/130 288/537/130 304/538/130 -f 280/533/131 281/539/131 297/540/131 -f 288/537/131 289/541/131 305/542/131 -f 282/543/132 298/544/132 297/545/132 -f 290/546/132 306/547/132 305/548/132 -f 283/549/133 299/550/133 298/544/133 -f 291/551/133 307/552/133 306/547/133 -f 284/553/134 300/554/134 299/550/134 -f 292/555/134 308/494/134 307/552/134 -f 285/489/121 301/556/121 300/554/121 -f 320/557/135 321/558/135 337/559/135 -f 312/560/135 313/561/135 329/562/135 -f 308/563/128 324/564/128 323/527/128 -f 301/565/136 317/566/136 316/524/136 -f 309/567/136 325/568/136 324/564/136 -f 301/565/137 302/569/137 318/570/137 -f 309/567/137 310/571/137 326/572/137 -f 302/569/138 295/573/138 311/574/138 -f 295/573/139 296/575/139 312/560/139 -f 310/571/138 303/576/138 319/577/138 -f 303/576/139 304/578/139 320/579/139 -f 296/575/140 297/580/140 313/561/140 -f 304/578/140 305/581/140 321/582/140 -f 298/583/141 314/584/141 313/585/141 -f 306/586/141 322/528/141 321/587/141 -f 299/588/129 315/525/129 314/584/129 -f 341/589/142 342/590/142 358/591/142 -f 333/592/142 334/593/142 350/594/142 -f 314/595/143 330/596/143 329/597/143 -f 322/598/143 338/599/143 337/600/143 -f 315/601/144 331/602/144 330/596/144 -f 323/603/144 339/604/144 338/599/144 -f 316/605/145 332/606/145 331/602/145 -f 324/607/145 340/608/145 339/604/145 -f 317/609/146 333/610/146 332/606/146 -f 325/611/146 341/612/146 340/608/146 -f 317/609/147 318/613/147 334/614/147 -f 325/611/147 326/615/147 342/616/147 -f 318/613/148 311/617/148 327/618/148 -f 311/617/149 312/560/149 328/619/149 -f 326/615/148 319/620/148 335/621/148 -f 319/620/149 320/557/149 336/622/149 -f 347/623/93 348/624/93 364/625/93 -f 355/626/92 371/627/92 370/628/92 -f 334/593/150 327/629/150 343/630/150 -f 327/629/151 328/631/151 344/632/151 -f 342/590/150 335/633/150 351/634/150 -f 335/633/151 336/635/151 352/636/151 -f 328/631/152 329/637/152 345/638/152 -f 336/635/152 337/639/152 353/640/152 -f 330/641/153 346/642/153 345/643/153 -f 338/644/153 354/645/153 353/646/153 -f 331/647/154 347/648/154 346/642/154 -f 339/649/154 355/650/154 354/645/154 -f 332/651/155 348/652/155 347/648/155 -f 340/653/155 356/654/155 355/650/155 -f 333/592/156 349/655/156 348/652/156 -f 341/589/156 357/656/156 356/654/156 -f 355/626/93 356/657/93 372/658/93 -f 348/624/94 349/659/94 365/660/94 -f 356/657/94 357/661/94 373/662/94 -f 350/663/61 366/664/61 365/660/61 -f 358/665/61 374/666/61 373/662/61 -f 343/667/62 359/668/62 366/664/62 -f 343/667/65 344/669/65 360/670/65 -f 358/665/62 351/671/62 367/672/62 -f 352/673/65 368/674/65 367/672/65 -f 344/669/66 345/675/66 361/676/66 -f 352/673/66 353/677/66 369/678/66 -f 346/679/91 362/680/91 361/681/91 -f 354/682/91 370/628/91 369/683/91 -f 346/679/92 347/623/92 363/684/92 -f 378/685/1 377/686/1 375/687/1 -f 382/688/2 381/689/2 377/686/2 -f 380/690/3 379/691/3 381/689/3 -f 377/686/5 381/689/5 379/692/5 -f 382/688/6 378/685/6 376/693/6 -f 384/694/1 386/695/1 385/696/1 -f 390/697/2 389/698/2 385/699/2 -f 388/700/3 387/701/3 389/702/3 -f 384/694/157 383/703/157 387/704/157 -f 390/697/6 386/695/6 384/694/6 -f 2/16/1 4/1/1 1/3/1 -f 4/1/2 8/4/2 3/6/2 -f 8/4/3 6/7/3 7/9/3 -f 2/16/4 1/10/4 10/12/4 -f 1/10/5 3/13/5 5/15/5 -f 6/7/6 8/4/6 2/16/6 -f 12/705/3 11/17/3 16/19/3 -f 1/10/4 5/15/4 9/11/4 -f 6/7/4 2/16/4 11/21/4 -f 5/15/4 6/7/4 12/20/4 -f 15/18/4 14/22/4 16/19/4 -f 11/706/6 10/24/6 15/18/6 -f 10/707/1 9/25/1 14/22/1 -f 9/708/5 12/26/5 13/23/5 -f 38/49/7 37/27/7 44/29/7 -f 24/42/2 22/30/2 35/32/2 -f 21/709/8 19/33/8 22/35/8 -f 18/31/8 17/36/8 48/38/8 -f 38/49/2 30/39/2 37/27/2 -f 23/710/9 21/41/9 24/42/9 -f 35/32/9 18/31/9 47/43/9 -f 20/66/2 34/44/2 17/36/2 -f 25/711/10 23/46/10 26/48/10 -f 39/59/11 38/49/11 43/50/11 -f 28/55/2 26/51/2 37/53/2 -f 27/712/12 25/54/12 28/55/12 -f 17/36/13 40/45/13 41/37/13 -f 40/45/2 34/57/2 39/59/2 -f 27/713/7 28/40/7 29/60/7 -f 48/38/4 41/37/4 50/62/4 -f 26/48/2 24/47/2 36/52/2 -f 29/714/11 30/63/11 31/65/11 -f 18/31/2 22/35/2 17/36/2 -f 33/715/13 34/44/13 19/67/13 -f 31/716/14 32/58/14 33/68/14 -f 40/45/14 39/59/14 42/56/14 -f 32/64/2 30/63/2 39/59/2 -f 36/52/10 35/32/10 46/69/10 -f 37/53/12 36/52/12 45/70/12 -f 48/38/4 50/71/4 47/43/4 -f 47/43/4 51/73/4 46/69/4 -f 46/69/4 52/75/4 45/70/4 -f 44/29/4 45/28/4 54/78/4 -f 44/29/4 54/79/4 43/50/4 -f 43/50/4 55/81/4 42/56/4 -f 42/56/4 56/83/4 41/37/4 -f 56/100/14 55/85/14 64/87/14 -f 51/717/4 50/718/4 49/90/4 -f 49/90/4 56/719/4 55/88/4 -f 55/88/4 54/720/4 53/89/4 -f 53/89/4 52/721/4 51/717/4 -f 51/717/4 49/90/4 53/89/4 -f 54/101/7 53/91/7 62/93/7 -f 60/103/10 52/94/10 59/96/10 -f 50/104/8 49/97/8 57/99/8 -f 49/97/13 56/100/13 58/98/13 -f 55/85/11 54/101/11 63/86/11 -f 61/722/12 53/102/12 60/103/12 -f 59/96/9 51/95/9 57/99/9 -f 92/723/15 65/105/15 89/107/15 -f 67/134/16 68/108/16 69/110/16 -f 91/136/17 86/111/17 92/113/17 -f 71/724/18 69/110/18 72/114/18 -f 86/129/19 88/115/19 65/117/19 -f 71/725/20 72/118/20 73/120/20 -f 66/106/21 83/121/21 85/123/21 -f 73/120/22 74/119/22 75/125/22 -f 66/106/23 85/123/23 89/107/23 -f 75/125/24 76/124/24 77/128/24 -f 88/115/25 86/129/25 87/122/25 -f 77/128/26 78/127/26 79/131/26 -f 65/726/15 84/132/15 66/106/15 -f 81/135/27 82/133/27 67/134/27 -f 79/131/28 80/130/28 81/135/28 -f 85/123/25 86/111/25 90/126/25 -f 96/139/25 90/126/25 95/138/25 -f 93/144/4 96/139/4 97/141/4 -f 91/137/29 92/142/29 95/138/29 -f 89/107/30 90/126/30 93/144/30 -f 92/727/15 89/107/15 94/145/15 -f 97/141/19 100/140/19 98/147/19 -f 100/140/25 96/139/25 99/149/25 -f 99/149/2 95/148/2 98/151/2 -f 94/728/15 93/144/15 98/152/15 -f 103/157/31 102/153/31 107/155/31 -f 108/216/32 104/156/32 107/155/32 -f 106/154/33 102/153/33 105/159/33 -f 108/216/34 107/160/34 112/162/34 -f 106/166/35 105/163/35 110/165/35 -f 107/160/36 106/166/36 111/161/36 -f 116/170/37 111/167/37 115/169/37 -f 112/266/38 111/167/38 117/171/38 -f 110/168/39 109/172/39 115/169/39 -f 116/177/40 115/174/40 120/176/40 -f 117/171/41 116/177/41 121/178/41 -f 115/174/42 114/179/42 119/175/42 -f 121/178/43 120/181/43 125/183/43 -f 119/187/44 118/184/44 123/186/44 -f 120/181/45 119/187/45 124/182/45 -f 129/221/46 125/183/46 128/189/46 -f 123/193/47 122/190/47 127/192/47 -f 128/189/48 124/188/48 127/192/48 -f 128/197/49 127/194/49 132/196/49 -f 129/221/50 128/197/50 133/198/50 -f 127/194/51 126/199/51 131/195/51 -f 132/218/59 131/208/59 103/210/59 -f 108/216/61 112/162/61 138/215/61 -f 104/156/62 108/216/62 134/217/62 -f 133/198/63 132/218/63 104/156/63 -f 102/209/64 131/208/64 101/213/64 -f 134/217/65 162/219/65 104/156/65 -f 133/198/66 162/219/66 129/221/66 -f 136/225/67 135/222/67 140/224/67 -f 137/729/68 136/225/68 141/226/68 -f 139/223/69 135/222/69 138/215/69 -f 140/230/70 139/227/70 144/229/70 -f 141/730/71 140/230/71 145/231/71 -f 143/228/72 139/227/72 142/214/72 -f 149/731/73 145/232/73 148/234/73 -f 143/238/74 142/235/74 147/237/74 -f 148/234/75 144/233/75 147/237/75 -f 147/242/76 146/236/76 151/240/76 -f 152/243/77 148/241/77 151/240/77 -f 149/732/78 148/241/78 153/244/78 -f 156/248/79 152/245/79 155/247/79 -f 153/733/80 152/245/80 157/249/80 -f 151/246/81 150/239/81 155/247/81 -f 157/734/82 156/251/82 161/253/82 -f 155/255/83 154/250/83 159/254/83 -f 160/252/84 156/251/84 159/254/84 -f 161/735/85 160/256/85 165/258/85 -f 159/260/86 158/220/86 163/259/86 -f 160/256/87 159/260/87 164/257/87 -f 164/265/88 163/261/88 136/263/88 -f 137/736/89 165/264/89 136/263/89 -f 163/261/90 162/219/90 135/262/90 -f 125/183/91 129/221/91 154/250/91 -f 121/178/92 125/183/92 150/239/92 -f 121/178/93 150/239/93 117/171/93 -f 117/171/94 146/236/94 112/266/94 -f 168/271/31 167/267/31 172/269/31 -f 173/274/32 169/270/32 172/269/32 -f 171/268/33 167/267/33 170/273/33 -f 177/328/34 173/274/34 176/276/34 -f 171/280/35 170/277/35 175/279/35 -f 172/275/36 171/280/36 176/276/36 -f 181/284/37 176/281/37 180/283/37 -f 177/386/38 176/281/38 182/285/38 -f 175/282/39 174/286/39 180/283/39 -f 181/291/40 180/288/40 185/290/40 -f 182/285/41 181/291/41 186/292/41 -f 180/288/42 179/293/42 184/289/42 -f 186/292/43 185/295/43 190/297/43 -f 184/301/44 183/298/44 188/300/44 -f 185/295/45 184/301/45 189/296/45 -f 194/335/46 190/297/46 193/303/46 -f 192/307/47 188/304/47 191/306/47 -f 193/303/48 189/302/48 192/307/48 -f 193/311/49 192/308/49 197/310/49 -f 194/335/50 193/311/50 198/312/50 -f 192/308/51 191/313/51 196/309/51 -f 197/332/59 196/322/59 168/324/59 -f 173/274/61 177/328/61 203/330/61 -f 169/270/62 173/274/62 199/331/62 -f 169/270/63 198/312/63 168/324/63 -f 167/323/64 196/322/64 166/327/64 -f 199/331/65 227/333/65 169/270/65 -f 198/312/66 227/333/66 194/335/66 -f 205/339/67 201/336/67 204/338/67 -f 202/737/68 201/336/68 206/340/68 -f 200/337/69 199/331/69 204/338/69 -f 205/344/70 204/341/70 209/343/70 -f 206/738/71 205/344/71 210/345/71 -f 204/341/72 203/330/72 208/342/72 -f 210/739/73 209/346/73 214/348/73 -f 212/352/74 208/349/74 211/351/74 -f 213/347/75 209/346/75 212/352/75 -f 212/355/76 211/351/76 216/354/76 -f 213/357/77 212/355/77 217/356/77 -f 214/740/78 213/357/78 218/358/78 -f 217/362/79 216/359/79 221/361/79 -f 218/741/80 217/362/80 222/363/80 -f 216/359/81 215/353/81 220/360/81 -f 226/742/82 222/365/82 225/367/82 -f 224/369/83 220/368/83 223/334/83 -f 225/367/84 221/366/84 224/369/84 -f 226/743/85 225/370/85 230/372/85 -f 224/374/86 223/334/86 228/373/86 -f 225/370/87 224/374/87 229/371/87 -f 238/406/158 165/375/158 231/377/158 -f 210/744/159 214/378/159 241/380/159 -f 229/385/88 228/381/88 201/383/88 -f 202/745/89 230/384/89 201/383/89 -f 228/381/90 227/333/90 200/382/90 -f 190/297/91 194/335/91 219/364/91 -f 186/292/92 190/297/92 215/353/92 -f 186/292/93 215/353/93 182/285/93 -f 182/285/94 211/351/94 177/386/94 -f 253/454/160 237/387/160 254/389/160 -f 244/453/161 245/390/161 260/392/161 -f 239/402/162 202/393/162 240/395/162 -f 232/416/163 141/396/163 233/398/163 -f 214/378/164 218/399/164 242/379/164 -f 246/415/158 230/401/158 239/402/158 -f 240/395/163 206/394/163 241/404/163 -f 237/410/165 161/405/165 238/406/165 -f 153/419/92 157/407/92 235/409/92 -f 157/407/166 161/405/166 236/408/166 -f 145/746/159 149/411/159 233/413/159 -f 245/420/165 226/414/165 246/415/165 -f 231/377/162 137/376/162 232/416/162 -f 218/399/92 222/417/92 243/400/92 -f 149/411/164 153/419/164 234/412/164 -f 222/417/166 226/414/166 244/418/166 -f 258/487/167 259/421/167 274/423/167 -f 250/485/167 251/424/167 266/426/167 -f 261/391/160 245/390/160 262/428/160 -f 254/389/168 238/388/168 247/430/168 -f 247/430/169 231/429/169 248/432/169 -f 262/428/168 246/427/168 255/434/168 -f 255/434/169 239/433/169 256/436/169 -f 248/432/170 232/431/170 249/438/170 -f 256/436/170 240/435/170 257/440/170 -f 233/747/171 234/441/171 249/443/171 -f 241/748/171 242/444/171 257/446/171 -f 234/441/172 235/447/172 250/442/172 -f 242/444/172 243/449/172 258/445/172 -f 235/447/173 236/451/173 251/448/173 -f 243/449/173 244/453/173 259/450/173 -f 236/451/161 237/387/161 252/452/161 -f 280/521/174 264/455/174 281/457/174 -f 287/522/175 271/458/175 288/460/175 -f 251/424/176 252/461/176 267/425/176 -f 259/421/176 260/463/176 275/422/176 -f 252/461/177 253/465/177 268/462/177 -f 260/463/177 261/467/177 276/464/177 -f 269/466/178 253/465/178 270/470/178 -f 277/468/178 261/467/178 278/472/178 -f 270/470/179 254/469/179 263/474/179 -f 263/474/180 247/473/180 264/476/180 -f 278/472/179 262/471/179 271/478/179 -f 271/478/180 255/477/180 272/480/180 -f 264/476/181 248/475/181 265/482/181 -f 272/480/181 256/479/181 273/484/181 -f 249/749/182 250/485/182 265/486/182 -f 257/750/182 258/487/182 273/488/182 -f 301/556/183 285/489/183 302/491/183 -f 292/555/184 293/492/184 308/494/184 -f 288/460/174 272/459/174 289/496/174 -f 265/751/185 266/497/185 281/499/185 -f 273/752/185 274/500/185 289/502/185 -f 266/497/186 267/503/186 282/498/186 -f 274/500/186 275/505/186 290/501/186 -f 267/503/187 268/507/187 283/504/187 -f 275/505/187 276/509/187 291/506/187 -f 268/507/188 269/511/188 284/508/188 -f 276/509/188 277/513/188 292/510/188 -f 285/512/189 269/511/189 286/516/189 -f 293/514/189 277/513/189 294/518/189 -f 286/516/190 270/515/190 279/520/190 -f 279/520/175 263/519/175 280/521/175 -f 294/518/190 278/517/190 287/522/190 -f 299/588/191 300/523/191 315/525/191 -f 306/586/192 307/526/192 322/528/192 -f 309/493/183 293/492/183 310/530/183 -f 302/491/193 286/490/193 295/532/193 -f 295/532/194 279/531/194 296/534/194 -f 310/530/193 294/529/193 303/536/193 -f 303/536/194 287/535/194 304/538/194 -f 296/534/195 280/533/195 297/540/195 -f 304/538/195 288/537/195 305/542/195 -f 281/753/196 282/543/196 297/545/196 -f 289/754/196 290/546/196 305/548/196 -f 282/543/197 283/549/197 298/544/197 -f 290/546/197 291/551/197 306/547/197 -f 283/549/9 284/553/9 299/550/9 -f 291/551/9 292/555/9 307/552/9 -f 284/553/184 285/489/184 300/554/184 -f 336/622/198 320/557/198 337/559/198 -f 328/619/198 312/560/198 329/562/198 -f 307/526/191 308/563/191 323/527/191 -f 300/523/199 301/565/199 316/524/199 -f 308/563/199 309/567/199 324/564/199 -f 317/566/200 301/565/200 318/570/200 -f 325/568/200 309/567/200 326/572/200 -f 318/570/201 302/569/201 311/574/201 -f 311/574/202 295/573/202 312/560/202 -f 326/572/201 310/571/201 319/577/201 -f 319/577/202 303/576/202 320/579/202 -f 312/560/203 296/575/203 313/561/203 -f 320/579/203 304/578/203 321/582/203 -f 297/755/204 298/583/204 313/585/204 -f 305/756/204 306/586/204 321/587/204 -f 298/583/192 299/588/192 314/584/192 -f 357/656/205 341/589/205 358/591/205 -f 349/655/205 333/592/205 350/594/205 -f 313/757/206 314/595/206 329/597/206 -f 321/758/206 322/598/206 337/600/206 -f 314/595/207 315/601/207 330/596/207 -f 322/598/207 323/603/207 338/599/207 -f 315/601/208 316/605/208 331/602/208 -f 323/603/208 324/607/208 339/604/208 -f 316/605/209 317/609/209 332/606/209 -f 324/607/209 325/611/209 340/608/209 -f 333/610/210 317/609/210 334/614/210 -f 341/612/210 325/611/210 342/616/210 -f 334/614/211 318/613/211 327/618/211 -f 327/618/212 311/617/212 328/619/212 -f 342/616/211 326/615/211 335/621/211 -f 335/621/212 319/620/212 336/622/212 -f 363/684/93 347/623/93 364/625/93 -f 354/682/92 355/626/92 370/628/92 -f 350/594/213 334/593/213 343/630/213 -f 343/630/214 327/629/214 344/632/214 -f 358/591/213 342/590/213 351/634/213 -f 351/634/214 335/633/214 352/636/214 -f 344/632/215 328/631/215 345/638/215 -f 352/636/215 336/635/215 353/640/215 -f 329/759/216 330/641/216 345/643/216 -f 337/760/216 338/644/216 353/646/216 -f 330/641/217 331/647/217 346/642/217 -f 338/644/217 339/649/217 354/645/217 -f 331/647/218 332/651/218 347/648/218 -f 339/649/218 340/653/218 355/650/218 -f 332/651/219 333/592/219 348/652/219 -f 340/653/219 341/589/219 356/654/219 -f 371/627/93 355/626/93 372/658/93 -f 364/625/94 348/624/94 365/660/94 -f 372/658/94 356/657/94 373/662/94 -f 349/659/61 350/663/61 365/660/61 -f 357/661/61 358/665/61 373/662/61 -f 350/663/62 343/667/62 366/664/62 -f 359/668/65 343/667/65 360/670/65 -f 374/666/62 358/665/62 367/672/62 -f 351/671/65 352/673/65 367/672/65 -f 360/670/66 344/669/66 361/676/66 -f 368/674/66 352/673/66 369/678/66 -f 345/761/91 346/679/91 361/681/91 -f 353/762/91 354/682/91 369/683/91 -f 362/680/92 346/679/92 363/684/92 -f 376/763/1 378/685/1 375/687/1 -f 378/685/2 382/688/2 377/686/2 -f 382/688/3 380/690/3 381/689/3 -f 375/764/5 377/686/5 379/692/5 -f 380/765/6 382/688/6 376/693/6 -f 383/766/1 384/694/1 385/696/1 -f 386/695/2 390/697/2 385/699/2 -f 390/697/3 388/700/3 389/702/3 -f 388/700/157 384/694/157 387/704/157 -f 388/700/6 390/697/6 384/694/6 diff --git a/src/main/resources/assets/hbm/models/turret_heavy_base.obj b/src/main/resources/assets/hbm/models/turret_heavy_base.obj deleted file mode 100644 index a90b51be6..000000000 --- a/src/main/resources/assets/hbm/models/turret_heavy_base.obj +++ /dev/null @@ -1,218 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_heavy_base.blend' -# www.blender.org -o Cube_Cube.001 -v -0.500000 0.000000 0.250000 -v 0.250000 0.000000 -0.500000 -v -0.500000 0.000000 -0.250000 -v 0.250000 0.000000 0.500000 -v 0.500000 0.000000 0.250000 -v -0.250000 0.000000 -0.500000 -v 0.500000 0.000000 -0.250000 -v -0.250000 0.000000 0.500000 -v -0.500000 0.125000 -0.250000 -v -0.500000 0.125000 0.250000 -v -0.250000 0.125000 0.500000 -v 0.250000 0.125000 0.500000 -v 0.250000 0.125000 -0.500000 -v -0.250000 0.125000 -0.500000 -v 0.500000 0.125000 0.250000 -v 0.500000 0.125000 -0.250000 -v -0.000000 0.125000 -0.425000 -v -0.000000 0.250000 -0.425000 -v 0.212500 0.125000 -0.368061 -v 0.212500 0.250000 -0.368061 -v 0.368061 0.125000 -0.212500 -v 0.368061 0.250000 -0.212500 -v 0.425000 0.125000 0.000000 -v 0.425000 0.250000 0.000000 -v 0.368061 0.125000 0.212500 -v 0.368061 0.250000 0.212500 -v 0.212500 0.125000 0.368061 -v 0.212500 0.250000 0.368061 -v 0.000000 0.125000 0.425000 -v 0.000000 0.250000 0.425000 -v -0.212500 0.125000 0.368061 -v -0.212500 0.250000 0.368061 -v -0.368061 0.125000 0.212500 -v -0.368061 0.250000 0.212500 -v -0.425000 0.125000 0.000000 -v -0.425000 0.250000 0.000000 -v -0.368061 0.125000 -0.212500 -v -0.368061 0.250000 -0.212500 -v -0.212500 0.125000 -0.368061 -v -0.212500 0.250000 -0.368061 -vt 0.698520 0.032316 -vt 0.963791 0.164951 -vt 0.831156 0.430222 -vt 0.172997 0.501253 -vt 0.172997 0.454359 -vt 0.360572 0.454359 -vt 0.032316 0.172997 -vt 0.079210 0.172997 -vt 0.079210 0.360572 -vt 0.487518 0.139838 -vt 0.454359 0.172997 -vt 0.360572 0.079210 -vt 0.046051 0.393730 -vt 0.501253 0.360572 -vt 0.454359 0.360572 -vt 0.360572 0.032316 -vt 0.172997 0.079210 -vt 0.393731 0.487518 -vt 0.139839 0.046051 -vt 0.191950 0.920790 -vt 0.274481 0.920790 -vt 0.274481 0.967684 -vt 0.345955 0.879524 -vt 0.369402 0.920135 -vt 0.387221 0.808050 -vt 0.427832 0.831497 -vt 0.387221 0.725519 -vt 0.434115 0.725519 -vt 0.345955 0.654045 -vt 0.386567 0.630598 -vt 0.274481 0.612779 -vt 0.297928 0.572168 -vt 0.191950 0.612779 -vt 0.191950 0.565885 -vt 0.120476 0.654045 -vt 0.097029 0.613433 -vt 0.079210 0.725519 -vt 0.038599 0.702072 -vt 0.079210 0.808050 -vt 0.032316 0.808050 -vt 0.120475 0.879524 -vt 0.168503 0.961401 -vt 0.079864 0.902971 -vt 0.346504 0.404862 -vt 0.266784 0.426223 -vt 0.187065 0.404862 -vt 0.128707 0.346503 -vt 0.107346 0.266784 -vt 0.128707 0.187065 -vt 0.187065 0.128707 -vt 0.404862 0.346504 -vt 0.426223 0.266784 -vt 0.404862 0.187065 -vt 0.346504 0.128707 -vt 0.266785 0.107346 -vt 0.698520 0.430222 -vt 0.565885 0.297587 -vt 0.565885 0.164951 -vt 0.831156 0.032316 -vt 0.963791 0.297587 -vt 0.360572 0.501253 -vt 0.032316 0.360572 -vt 0.393731 0.046051 -vt 0.139838 0.487518 -vt 0.501253 0.172997 -vt 0.172997 0.032316 -vt 0.487518 0.393731 -vt 0.046051 0.139838 -vt 0.191950 0.967684 -vt 0.297928 0.961401 -vt 0.386567 0.902971 -vt 0.434115 0.808050 -vt 0.427832 0.702072 -vt 0.369402 0.613433 -vt 0.274481 0.565885 -vt 0.168503 0.572168 -vt 0.079864 0.630598 -vt 0.032316 0.725519 -vt 0.097029 0.920135 -vt 0.038599 0.831497 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.707100 0.000000 0.707100 -vn -0.707100 0.000000 -0.707100 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.707100 0.000000 -0.707100 -vn -0.707100 0.000000 0.707100 -vn 0.258800 0.000000 -0.965900 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn 0.000000 1.000000 0.000000 -vn -0.258800 0.000000 -0.965900 -s off -f 2/1/1 5/2/1 8/3/1 -f 6/4/2 14/5/2 13/6/2 -f 1/7/3 10/8/3 9/9/3 -f 5/10/4 15/11/4 12/12/4 -f 3/13/5 9/9/5 14/5/5 -f 7/14/6 16/15/6 15/11/6 -f 4/16/7 12/12/7 11/17/7 -f 2/18/8 13/6/8 16/15/8 -f 8/19/9 11/17/9 10/8/9 -f 18/20/10 20/21/10 19/22/10 -f 20/21/8 22/23/8 21/24/8 -f 22/23/11 24/25/11 23/26/11 -f 24/25/12 26/27/12 25/28/12 -f 26/27/4 28/29/4 27/30/4 -f 28/29/13 30/31/13 29/32/13 -f 30/31/14 32/33/14 31/34/14 -f 32/33/9 34/35/9 33/36/9 -f 34/35/15 36/37/15 35/38/15 -f 36/37/16 38/39/16 37/40/16 -f 38/39/17 30/31/17 22/23/17 -f 40/41/18 18/20/18 17/42/18 -f 38/39/5 40/41/5 39/43/5 -f 16/15/17 13/6/17 19/44/17 -f 19/44/17 13/6/17 17/45/17 -f 13/6/17 14/5/17 17/45/17 -f 17/45/17 14/5/17 39/46/17 -f 9/9/17 37/47/17 39/46/17 -f 37/47/17 9/9/17 35/48/17 -f 9/9/17 10/8/17 35/48/17 -f 35/48/17 10/8/17 33/49/17 -f 11/17/17 31/50/17 33/49/17 -f 21/51/17 23/52/17 16/15/17 -f 15/11/17 25/53/17 27/54/17 -f 25/53/17 15/11/17 23/52/17 -f 15/11/17 16/15/17 23/52/17 -f 27/54/17 29/55/17 12/12/17 -f 31/50/17 11/17/17 29/55/17 -f 11/17/17 12/12/17 29/55/17 -f 8/3/1 1/56/1 3/57/1 -f 3/57/1 6/58/1 2/1/1 -f 2/1/1 7/59/1 5/2/1 -f 5/2/1 4/60/1 8/3/1 -f 8/3/1 3/57/1 2/1/1 -f 2/61/2 6/4/2 13/6/2 -f 3/62/3 1/7/3 9/9/3 -f 4/63/4 5/10/4 12/12/4 -f 6/64/5 3/13/5 14/5/5 -f 5/65/6 7/14/6 15/11/6 -f 8/66/7 4/16/7 11/17/7 -f 7/67/8 2/18/8 16/15/8 -f 1/68/9 8/19/9 10/8/9 -f 17/69/10 18/20/10 19/22/10 -f 19/70/8 20/21/8 21/24/8 -f 21/71/11 22/23/11 23/26/11 -f 23/72/12 24/25/12 25/28/12 -f 25/73/4 26/27/4 27/30/4 -f 27/74/13 28/29/13 29/32/13 -f 29/75/14 30/31/14 31/34/14 -f 31/76/9 32/33/9 33/36/9 -f 33/77/15 34/35/15 35/38/15 -f 35/78/16 36/37/16 37/40/16 -f 22/23/17 20/21/17 18/20/17 -f 18/20/17 40/41/17 22/23/17 -f 38/39/17 36/37/17 30/31/17 -f 34/35/17 32/33/17 30/31/17 -f 30/31/17 28/29/17 22/23/17 -f 26/27/17 24/25/17 22/23/17 -f 22/23/17 40/41/17 38/39/17 -f 36/37/17 34/35/17 30/31/17 -f 28/29/17 26/27/17 22/23/17 -f 39/79/18 40/41/18 17/42/18 -f 37/80/5 38/39/5 39/43/5 -f 21/51/17 16/15/17 19/44/17 -f 14/5/17 9/9/17 39/46/17 -f 10/8/17 11/17/17 33/49/17 -f 12/12/17 15/11/17 27/54/17 diff --git a/src/main/resources/assets/hbm/models/turret_heavy_gun.obj b/src/main/resources/assets/hbm/models/turret_heavy_gun.obj deleted file mode 100644 index b4eafcede..000000000 --- a/src/main/resources/assets/hbm/models/turret_heavy_gun.obj +++ /dev/null @@ -1,479 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_heavy_gun.blend' -# www.blender.org -o Cylinder.001 -v 0.000000 0.100000 0.500000 -v 0.000000 0.100000 1.750000 -v 0.070711 0.070711 0.500000 -v 0.070711 0.070711 1.750000 -v 0.100000 -0.000000 0.500000 -v 0.100000 0.000000 1.750000 -v 0.070711 -0.070711 0.500000 -v 0.070711 -0.070711 1.750000 -v -0.000000 -0.100000 0.500000 -v -0.000000 -0.100000 1.750000 -v -0.070711 -0.070711 0.500000 -v -0.070711 -0.070711 1.750000 -v -0.100000 -0.000000 0.500000 -v -0.100000 0.000000 1.750000 -v -0.070711 0.070711 0.500000 -v -0.070711 0.070711 1.750000 -v -0.200000 -0.250000 0.250000 -v -0.200000 0.250000 0.250000 -v -0.200000 -0.100000 -0.750000 -v -0.200000 0.200000 -0.750000 -v 0.200000 -0.250000 0.250000 -v 0.200000 0.250000 0.250000 -v 0.200000 -0.100000 -0.750000 -v 0.200000 0.200000 -0.750000 -v -0.200000 0.250000 -0.250000 -v -0.200000 -0.250000 -0.250000 -v 0.200000 0.250000 -0.250000 -v 0.200000 -0.250000 -0.250000 -v 0.000000 0.150000 0.500000 -v 0.106066 0.106066 0.500000 -v 0.150000 -0.000000 0.500000 -v 0.106066 -0.106066 0.500000 -v -0.000000 -0.150000 0.500000 -v -0.106066 -0.106066 0.500000 -v -0.150000 -0.000000 0.500000 -v -0.106066 0.106066 0.500000 -v 0.106066 0.106066 0.250000 -v 0.150000 -0.000000 0.250000 -v 0.000000 0.150000 0.250000 -v 0.106066 -0.106066 0.250000 -v -0.000000 -0.150000 0.250000 -v -0.106066 -0.106066 0.250000 -v -0.150000 -0.000000 0.250000 -v -0.106066 0.106066 0.250000 -v -0.074375 -0.131250 2.250000 -v -0.148750 0.131250 2.250000 -v -0.074375 -0.131250 1.750000 -v -0.148750 0.131250 1.750000 -v 0.074375 -0.131250 2.250000 -v 0.148750 0.131250 2.250000 -v 0.074375 -0.131250 1.750000 -v 0.148750 0.131250 1.750000 -v 0.000000 0.075000 1.750000 -v 0.000000 0.075000 2.250000 -v 0.053033 0.053033 1.750000 -v 0.053033 0.053033 2.250000 -v 0.075000 -0.000000 1.750000 -v 0.075000 0.000000 2.250000 -v 0.053033 -0.053033 1.750000 -v 0.053033 -0.053033 2.250000 -v -0.000000 -0.075000 1.750000 -v -0.000000 -0.075000 2.250000 -v -0.053033 -0.053033 1.750000 -v -0.053033 -0.053033 2.250000 -v -0.075000 -0.000000 1.750000 -v -0.075000 0.000000 2.250000 -v -0.053033 0.053033 1.750000 -v -0.053033 0.053033 2.250000 -v -0.375000 0.000000 -0.100000 -v 0.375000 0.000000 -0.100000 -v -0.375000 -0.070711 -0.070711 -v 0.375000 -0.070711 -0.070711 -v -0.375000 -0.100000 0.000000 -v 0.375000 -0.100000 0.000000 -v -0.375000 -0.070711 0.070711 -v 0.375000 -0.070711 0.070711 -v -0.375000 0.000000 0.100000 -v 0.375000 0.000000 0.100000 -v -0.375000 0.070711 0.070711 -v 0.375000 0.070711 0.070711 -v -0.375000 0.100000 -0.000000 -v 0.375000 0.100000 -0.000000 -v -0.375000 0.070711 -0.070711 -v 0.375000 0.070711 -0.070711 -v -0.250000 -0.250000 -0.400000 -v -0.250000 0.150000 -0.400000 -v -0.250000 -0.250000 -0.500000 -v -0.250000 0.150000 -0.500000 -v 0.250000 -0.250000 -0.400000 -v 0.250000 0.150000 -0.400000 -v 0.250000 -0.250000 -0.500000 -v 0.250000 0.150000 -0.500000 -v -0.075000 0.200000 0.100000 -v -0.075000 0.319533 0.098137 -v -0.075000 0.200000 -0.400000 -v -0.075000 0.380467 -0.398137 -v 0.075000 0.200000 0.100000 -v 0.075000 0.319533 0.098137 -v 0.075000 0.200000 -0.400000 -v 0.075000 0.380467 -0.398137 -v -0.075000 0.438402 0.110854 -v -0.075000 0.559362 -0.374294 -v 0.075000 0.559362 -0.374294 -v 0.075000 0.438402 0.110854 -v -0.075000 0.554834 0.137964 -v -0.075000 0.734018 -0.328826 -v 0.075000 0.734018 -0.328826 -v 0.075000 0.554834 0.137964 -vt 0.433336 0.891529 -vt 0.433336 0.871043 -vt 0.767919 0.871043 -vt 0.433336 0.850557 -vt 0.767919 0.850557 -vt 0.433336 0.830070 -vt 0.767919 0.830070 -vt 0.433336 0.809584 -vt 0.767919 0.809584 -vt 0.433337 0.973475 -vt 0.433337 0.952988 -vt 0.767919 0.952988 -vt 0.433336 0.932502 -vt 0.767919 0.932502 -vt 0.433336 0.912016 -vt 0.767919 0.891529 -vt 0.767919 0.912015 -vt 0.880596 0.024656 -vt 0.892961 0.019535 -vt 0.892961 0.050264 -vt 0.880596 0.198789 -vt 0.880596 0.178303 -vt 0.892961 0.173182 -vt 0.260434 0.695260 -vt 0.260434 0.775560 -vt 0.153367 0.775559 -vt 0.892961 0.111723 -vt 0.959877 0.111723 -vt 0.959877 0.142452 -vt 0.153368 0.426926 -vt 0.153368 0.293093 -vt 0.260434 0.293093 -vt 0.153368 0.019535 -vt 0.260434 0.019535 -vt 0.260434 0.159260 -vt 0.153367 0.695260 -vt 0.153368 0.560759 -vt 0.260434 0.560759 -vt 0.153368 0.159260 -vt 0.260434 0.426926 -vt 0.394267 0.560759 -vt 0.059684 0.694592 -vt 0.019535 0.560759 -vt 0.880596 0.106601 -vt 0.880596 0.086115 -vt 0.892961 0.080993 -vt 0.880596 0.239762 -vt 0.892961 0.234640 -vt 0.892961 0.265370 -vt 0.880596 0.168060 -vt 0.880596 0.147574 -vt 0.892961 0.142452 -vt 0.880596 0.116844 -vt 0.880596 0.055386 -vt 0.880596 0.209033 -vt 0.892961 0.203911 -vt 0.959877 0.173182 -vt 0.959877 0.234640 -vt 0.959877 0.265370 -vt 0.959877 0.050264 -vt 0.959877 0.080993 -vt 0.959877 0.203911 -vt 0.959877 0.019535 -vt 0.637432 0.148299 -vt 0.567169 0.168207 -vt 0.530686 0.039442 -vt 0.637432 0.227930 -vt 0.567169 0.208022 -vt 0.600948 0.356694 -vt 0.530686 0.336786 -vt 0.433336 0.208022 -vt 0.771265 0.148299 -vt 0.806396 0.208189 -vt 0.771265 0.227929 -vt 0.792201 0.202309 -vt 0.393186 0.829994 -vt 0.259353 0.829994 -vt 0.259353 0.814629 -vt 0.786321 0.188114 -vt 0.792201 0.173919 -vt 0.393186 0.845358 -vt 0.259353 0.845358 -vt 0.806396 0.168039 -vt 0.393186 0.860723 -vt 0.259353 0.860723 -vt 0.820591 0.202309 -vt 0.841527 0.208022 -vt 0.393186 0.876088 -vt 0.259353 0.876088 -vt 0.826471 0.188114 -vt 0.393186 0.891452 -vt 0.259353 0.891453 -vt 0.841527 0.168206 -vt 0.393186 0.906817 -vt 0.259353 0.906817 -vt 0.820591 0.173919 -vt 0.393186 0.922182 -vt 0.393186 0.937547 -vt 0.259353 0.937547 -vt 0.259353 0.922182 -vt 0.220284 0.937547 -vt 0.220284 0.958033 -vt 0.019535 0.958033 -vt 0.220284 0.978519 -vt 0.019535 0.978519 -vt 0.220284 0.814629 -vt 0.220284 0.835115 -vt 0.019535 0.835115 -vt 0.220284 0.855602 -vt 0.019535 0.855602 -vt 0.220284 0.876088 -vt 0.019535 0.876088 -vt 0.220284 0.896574 -vt 0.019535 0.896574 -vt 0.220284 0.917060 -vt 0.019535 0.937547 -vt 0.019535 0.917060 -vt 0.819866 0.422530 -vt 0.819866 0.529596 -vt 0.793099 0.529596 -vt 0.953699 0.422530 -vt 0.953699 0.529596 -vt 0.980465 0.422530 -vt 0.980465 0.529596 -vt 0.819866 0.663429 -vt 0.819866 0.556363 -vt 0.953699 0.556363 -vt 0.819866 0.395763 -vt 0.676377 0.687137 -vt 0.708754 0.557280 -vt 0.754030 0.574125 -vt 0.573608 0.444071 -vt 0.573608 0.395763 -vt 0.613758 0.395763 -vt 0.510989 0.687137 -vt 0.481298 0.699069 -vt 0.433336 0.574125 -vt 0.613758 0.738516 -vt 0.613758 0.770515 -vt 0.573608 0.770515 -vt 0.613758 0.444071 -vt 0.613758 0.492378 -vt 0.573608 0.492378 -vt 0.573608 0.706517 -vt 0.573608 0.674519 -vt 0.613758 0.674519 -vt 0.478612 0.557280 -vt 0.525602 0.546078 -vt 0.541913 0.678913 -vt 0.645454 0.678913 -vt 0.573608 0.738516 -vt 0.613758 0.706517 -vt 0.573608 0.540686 -vt 0.613758 0.540686 -vt 0.661764 0.546078 -vt 0.767919 0.973474 -vt 0.880596 0.045142 -vt 0.354117 0.694592 -vt 0.273817 0.694592 -vt 0.394267 0.426926 -vt 0.019535 0.426926 -vt 0.139984 0.694592 -vt 0.880596 0.260248 -vt 0.880596 0.137331 -vt 0.880596 0.075872 -vt 0.880596 0.229519 -vt 0.600948 0.019535 -vt 0.433336 0.168207 -vt 0.393186 0.814629 -vt 0.019535 0.814629 -vt 0.793099 0.422530 -vt 0.953699 0.663429 -vt 0.953699 0.395763 -vt 0.706068 0.699069 -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.382700 0.923900 -0.000000 -vn -0.923900 0.382700 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -0.957800 -0.287300 -vn 0.000000 0.995000 -0.099500 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.962100 -0.272600 0.000000 -vn 0.962100 -0.272600 0.000000 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 0.923900 -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.010300 -0.999900 -vn 0.000000 0.015600 0.999900 -vn 0.000000 0.132100 -0.991200 -vn 0.000000 -0.226800 0.973900 -vn 0.000000 -0.106400 0.994300 -vn 0.000000 0.933600 0.358400 -vn 0.000000 0.251900 -0.967700 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/2/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 10/10/5 12/11/5 11/12/5 -f 12/11/6 14/13/6 13/14/6 -f 16/15/7 2/1/7 1/16/7 -f 14/13/8 16/15/8 15/17/8 -f 9/18/9 33/19/9 32/20/9 -f 13/21/9 15/22/9 36/23/9 -f 24/24/10 23/25/10 19/26/10 -f 30/27/1 37/28/1 39/29/1 -f 18/30/9 17/31/9 21/32/9 -f 19/33/11 23/34/11 28/35/11 -f 24/24/12 20/36/12 25/37/12 -f 27/38/13 25/37/13 18/30/13 -f 26/39/14 28/35/14 21/32/14 -f 27/38/15 22/40/15 28/41/15 -f 25/37/16 19/42/16 26/43/16 -f 3/44/9 5/45/9 31/46/9 -f 11/47/9 34/48/9 33/49/9 -f 15/50/9 1/51/9 29/52/9 -f 3/53/9 30/27/9 29/52/9 -f 7/54/9 32/20/9 31/46/9 -f 13/55/9 35/56/9 34/48/9 -f 35/56/8 36/23/8 44/57/8 -f 34/48/5 42/58/5 41/59/5 -f 32/20/3 40/60/3 38/61/3 -f 31/46/2 38/61/2 37/28/2 -f 29/52/7 39/29/7 44/57/7 -f 34/48/6 35/56/6 43/62/6 -f 33/19/4 41/63/4 40/60/4 -f 48/64/17 47/65/17 45/66/17 -f 52/67/10 51/68/10 47/65/10 -f 50/69/18 49/70/18 51/68/18 -f 47/65/14 51/68/14 49/71/14 -f 52/67/13 48/64/13 46/72/13 -f 58/73/9 50/74/9 56/75/9 -f 55/76/5 56/77/5 54/78/5 -f 54/79/9 46/72/9 68/80/9 -f 57/81/6 58/82/6 56/77/6 -f 68/80/9 46/72/9 66/83/9 -f 59/84/8 60/85/8 58/82/8 -f 58/73/9 60/86/9 49/87/9 -f 61/88/7 62/89/7 60/85/7 -f 60/86/9 62/90/9 49/87/9 -f 63/91/1 64/92/1 62/89/1 -f 50/74/9 46/72/9 54/79/9 -f 45/93/9 49/87/9 62/90/9 -f 65/94/2 66/95/2 64/92/2 -f 62/90/9 64/96/9 45/93/9 -f 67/97/4 53/98/4 54/99/4 -f 67/97/3 68/100/3 66/95/3 -f 56/75/9 50/74/9 54/79/9 -f 45/93/9 64/96/9 66/83/9 -f 70/101/19 72/102/19 71/103/19 -f 72/102/20 74/104/20 73/105/20 -f 74/106/21 76/107/21 75/108/21 -f 76/107/22 78/109/22 77/110/22 -f 78/109/23 80/111/23 79/112/23 -f 80/111/24 82/113/24 81/114/24 -f 84/115/25 70/101/25 69/116/25 -f 82/113/26 84/115/26 83/117/26 -f 88/118/16 87/119/16 85/120/16 -f 92/121/10 91/122/10 87/119/10 -f 90/123/15 89/124/15 91/122/15 -f 86/125/9 85/126/9 89/127/9 -f 87/119/14 91/122/14 89/127/14 -f 92/121/13 88/118/13 86/128/13 -f 94/129/16 96/130/16 95/131/16 -f 100/132/27 99/133/27 95/134/27 -f 98/135/15 97/136/15 99/137/15 -f 94/138/28 93/139/28 97/140/28 -f 96/141/29 102/142/29 103/143/29 -f 104/144/30 108/145/30 105/146/30 -f 100/147/15 103/148/15 104/149/15 -f 96/130/16 94/129/16 101/150/16 -f 98/151/31 104/144/31 101/152/31 -f 107/153/32 106/154/32 105/146/32 -f 102/142/33 106/154/33 107/153/33 -f 103/148/15 107/153/15 108/145/15 -f 102/155/16 101/150/16 105/146/16 -f 1/16/1 2/1/1 3/3/1 -f 3/3/2 4/2/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 9/156/5 10/10/5 11/12/5 -f 11/12/6 12/11/6 13/14/6 -f 15/17/7 16/15/7 1/16/7 -f 13/14/8 14/13/8 15/17/8 -f 7/157/9 9/18/9 32/20/9 -f 35/56/9 13/21/9 36/23/9 -f 20/36/10 24/24/10 19/26/10 -f 29/52/1 30/27/1 39/29/1 -f 22/40/9 18/30/9 21/32/9 -f 26/39/11 19/33/11 28/35/11 -f 27/38/12 24/24/12 25/37/12 -f 22/40/13 27/38/13 18/30/13 -f 17/31/14 26/39/14 21/32/14 -f 28/41/15 23/158/15 27/38/15 -f 24/159/15 27/38/15 23/158/15 -f 22/40/15 21/160/15 28/41/15 -f 26/43/16 17/161/16 18/30/16 -f 18/30/16 25/37/16 26/43/16 -f 20/162/16 19/42/16 25/37/16 -f 30/27/9 3/44/9 31/46/9 -f 9/163/9 11/47/9 33/49/9 -f 36/23/9 15/50/9 29/52/9 -f 1/164/9 3/53/9 29/52/9 -f 5/165/9 7/54/9 31/46/9 -f 11/166/9 13/55/9 34/48/9 -f 43/62/8 35/56/8 44/57/8 -f 33/49/5 34/48/5 41/59/5 -f 31/46/3 32/20/3 38/61/3 -f 30/27/2 31/46/2 37/28/2 -f 36/23/7 29/52/7 44/57/7 -f 42/58/6 34/48/6 43/62/6 -f 32/20/4 33/19/4 40/60/4 -f 46/167/17 48/64/17 45/66/17 -f 48/64/10 52/67/10 47/65/10 -f 52/67/18 50/69/18 51/68/18 -f 45/168/14 47/65/14 49/71/14 -f 50/74/13 52/67/13 46/72/13 -f 53/169/5 55/76/5 54/78/5 -f 55/76/6 57/81/6 56/77/6 -f 57/81/8 59/84/8 58/82/8 -f 50/74/9 58/73/9 49/87/9 -f 59/84/7 61/88/7 60/85/7 -f 61/88/1 63/91/1 62/89/1 -f 63/91/2 65/94/2 64/92/2 -f 68/100/4 67/97/4 54/99/4 -f 65/94/3 67/97/3 66/95/3 -f 46/72/9 45/93/9 66/83/9 -f 69/116/19 70/101/19 71/103/19 -f 71/103/20 72/102/20 73/105/20 -f 73/170/21 74/106/21 75/108/21 -f 75/108/22 76/107/22 77/110/22 -f 77/110/23 78/109/23 79/112/23 -f 79/112/24 80/111/24 81/114/24 -f 83/117/25 84/115/25 69/116/25 -f 81/114/26 82/113/26 83/117/26 -f 86/171/16 88/118/16 85/120/16 -f 88/118/10 92/121/10 87/119/10 -f 92/121/15 90/123/15 91/122/15 -f 90/172/9 86/125/9 89/127/9 -f 85/126/14 87/119/14 89/127/14 -f 90/173/13 92/121/13 86/128/13 -f 93/174/16 94/129/16 95/131/16 -f 96/141/27 100/132/27 95/134/27 -f 100/147/15 98/135/15 99/137/15 -f 98/151/28 94/138/28 97/140/28 -f 100/132/29 96/141/29 103/143/29 -f 101/152/30 104/144/30 105/146/30 -f 98/135/15 100/147/15 104/149/15 -f 102/155/16 96/130/16 101/150/16 -f 94/138/31 98/151/31 101/152/31 -f 108/145/32 107/153/32 105/146/32 -f 103/143/33 102/142/33 107/153/33 -f 104/149/15 103/148/15 108/145/15 -f 106/154/16 102/155/16 105/146/16 diff --git a/src/main/resources/assets/hbm/models/turret_heavy_rotor.obj b/src/main/resources/assets/hbm/models/turret_heavy_rotor.obj deleted file mode 100644 index 307fc5a6f..000000000 --- a/src/main/resources/assets/hbm/models/turret_heavy_rotor.obj +++ /dev/null @@ -1,275 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_heavy_rotor.blend' -# www.blender.org -o Cylinder -v -0.282588 1.117500 -0.222228 -v -0.282588 0.250000 -0.222229 -v 0.332588 0.250000 -0.222228 -v 0.332588 1.117500 -0.222228 -v 0.369552 0.250000 -0.153073 -v 0.369552 1.192500 -0.153073 -v 0.392314 0.250000 -0.078036 -v 0.392314 1.237500 -0.078036 -v 0.400000 0.250000 -0.000000 -v 0.400000 1.250000 -0.000000 -v 0.392314 0.250000 0.078036 -v 0.392314 1.237500 0.078036 -v 0.369552 0.250000 0.153073 -v 0.369552 1.192500 0.153073 -v 0.332588 0.250000 0.222228 -v 0.332588 1.117500 0.222228 -v -0.319552 1.192500 0.153073 -v -0.319552 0.250000 0.153073 -v -0.282588 1.117500 0.222228 -v -0.282588 0.250000 0.222228 -v 0.282588 1.117500 0.222228 -v 0.282588 0.250000 0.222228 -v 0.319552 1.192500 0.153073 -v 0.319552 0.250000 0.153073 -v 0.342314 1.237500 0.078036 -v 0.342314 0.250000 0.078036 -v 0.350000 1.250000 -0.000000 -v 0.350000 0.250000 -0.000000 -v 0.342314 1.237500 -0.078036 -v 0.342314 0.250000 -0.078036 -v 0.319552 1.192500 -0.153073 -v 0.319552 0.250000 -0.153073 -v 0.282588 1.117500 -0.222228 -v 0.282588 0.250000 -0.222228 -v -0.332588 0.250000 0.222228 -v -0.332588 1.117500 0.222228 -v -0.369552 0.250000 0.153073 -v -0.369552 1.192500 0.153073 -v -0.392314 0.250000 0.078036 -v -0.392314 1.237500 0.078036 -v -0.400000 0.250000 -0.000000 -v -0.400000 1.250000 -0.000000 -v -0.392314 0.250000 -0.078037 -v -0.392314 1.237500 -0.078037 -v -0.369552 0.250000 -0.153074 -v -0.369552 1.192500 -0.153074 -v -0.332588 0.250000 -0.222229 -v -0.332588 1.117500 -0.222228 -v -0.319552 1.192500 -0.153074 -v -0.319552 0.250000 -0.153074 -v -0.342314 1.237500 -0.078037 -v -0.342314 0.250000 -0.078037 -v -0.350000 1.250000 -0.000000 -v -0.350000 0.250000 -0.000000 -v -0.342314 1.237500 0.078036 -v -0.342314 0.250000 0.078036 -v -0.700000 0.507596 0.386824 -v -0.200000 0.507596 0.386824 -v -0.700000 1.342404 0.213176 -v -0.200000 1.492404 0.213176 -v 0.200000 0.507596 0.386824 -v 0.700000 0.507596 0.386824 -v 0.200000 1.492404 0.213176 -v 0.700000 1.342404 0.213176 -vt 0.471550 0.978182 -vt 0.442112 0.981045 -vt 0.442112 0.962420 -vt 0.412674 0.978182 -vt 0.412674 0.959558 -vt 0.752477 0.642507 -vt 0.780414 0.671715 -vt 0.429349 0.671715 -vt 0.797175 0.700923 -vt 0.429349 0.700923 -vt 0.801831 0.730131 -vt 0.429349 0.730131 -vt 0.797175 0.759339 -vt 0.429349 0.759339 -vt 0.780413 0.788547 -vt 0.429349 0.788547 -vt 0.752477 0.817754 -vt 0.018956 0.516973 -vt 0.018956 0.487765 -vt 0.386782 0.487765 -vt 0.391438 0.516973 -vt 0.386782 0.546181 -vt 0.018956 0.546180 -vt 0.370020 0.575389 -vt 0.018955 0.575388 -vt 0.342084 0.604596 -vt 0.018955 0.671715 -vt 0.018955 0.642508 -vt 0.342084 0.642507 -vt 0.018955 0.700923 -vt 0.370020 0.671715 -vt 0.018956 0.730131 -vt 0.386782 0.700923 -vt 0.391438 0.730131 -vt 0.386782 0.759339 -vt 0.018956 0.759339 -vt 0.370020 0.788547 -vt 0.018956 0.788546 -vt 0.342084 0.817754 -vt 0.752477 0.429349 -vt 0.780414 0.458557 -vt 0.429349 0.458557 -vt 0.797175 0.487765 -vt 0.429349 0.487765 -vt 0.801831 0.516972 -vt 0.429349 0.516973 -vt 0.797175 0.546180 -vt 0.429349 0.546181 -vt 0.780413 0.575388 -vt 0.429349 0.575389 -vt 0.752478 0.604596 -vt 0.380083 0.969703 -vt 0.380083 0.951079 -vt 0.342084 0.955935 -vt 0.342084 0.937311 -vt 0.018955 0.937311 -vt 0.018955 0.458557 -vt 0.018955 0.429349 -vt 0.342084 0.429349 -vt 0.370020 0.458557 -vt 0.471550 0.959558 -vt 0.504140 0.951079 -vt 0.504140 0.969703 -vt 0.542140 0.937311 -vt 0.542140 0.955935 -vt 0.865269 0.937310 -vt 0.542140 0.899399 -vt 0.542140 0.880775 -vt 0.865269 0.880774 -vt 0.504141 0.885631 -vt 0.504141 0.867006 -vt 0.471550 0.877152 -vt 0.471550 0.858528 -vt 0.442112 0.874289 -vt 0.442112 0.855665 -vt 0.412674 0.877152 -vt 0.412674 0.858528 -vt 0.380084 0.885631 -vt 0.380084 0.867007 -vt 0.342084 0.899399 -vt 0.342084 0.880775 -vt 0.018955 0.899399 -vt 0.205197 0.018955 -vt 0.205493 0.391438 -vt 0.018955 0.336563 -vt 0.243700 0.018955 -vt 0.429942 0.018955 -vt 0.429942 0.336563 -vt 0.429349 0.642507 -vt 0.429349 0.817754 -vt 0.018955 0.604596 -vt 0.018955 0.817754 -vt 0.429349 0.429349 -vt 0.429349 0.604596 -vt 0.018955 0.955935 -vt 0.865269 0.955935 -vt 0.865269 0.899399 -vt 0.018955 0.880775 -vt 0.018955 0.018955 -vt 0.243404 0.391438 -vn 0.000000 0.987400 0.158200 -vn 0.000000 0.987400 -0.158200 -vn 0.881900 -0.000000 -0.471400 -vn 0.956900 0.000000 -0.290300 -vn 0.995200 0.000000 -0.098000 -vn 0.995200 0.000000 0.098000 -vn 0.956900 0.000000 0.290300 -vn 0.881900 -0.000000 0.471400 -vn -0.881900 -0.000000 -0.471400 -vn -0.956900 0.000000 -0.290300 -vn -0.995200 0.000000 -0.098000 -vn -0.995200 0.000000 0.098000 -vn -0.956900 0.000000 0.290300 -vn -0.881900 -0.000000 0.471400 -vn 0.000000 0.857600 -0.514300 -vn 0.000000 0.677900 -0.735200 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.857600 0.514300 -vn 0.000000 0.677900 0.735200 -vn 0.000000 -0.000000 1.000000 -vn -0.052000 0.173400 0.983500 -vn 0.000000 0.203700 0.979000 -vn 0.052000 0.173400 0.983500 -s off -f 12/1/1 10/2/1 27/3/1 -f 8/4/2 29/5/2 27/3/2 -f 4/6/3 6/7/3 5/8/3 -f 6/7/4 8/9/4 7/10/4 -f 8/9/5 10/11/5 9/12/5 -f 9/12/6 10/11/6 12/13/6 -f 11/14/7 12/13/7 14/15/7 -f 13/16/8 14/15/8 16/17/8 -f 54/18/6 52/19/6 51/20/6 -f 54/18/5 53/21/5 55/22/5 -f 56/23/4 55/22/4 17/24/4 -f 18/25/3 17/24/3 19/26/3 -f 24/27/9 22/28/9 21/29/9 -f 26/30/10 24/27/10 23/31/10 -f 28/32/11 26/30/11 25/33/11 -f 28/32/12 27/34/12 29/35/12 -f 30/36/13 29/35/13 31/37/13 -f 32/38/14 31/37/14 33/39/14 -f 36/40/14 38/41/14 37/42/14 -f 38/41/13 40/43/13 39/44/13 -f 40/43/12 42/45/12 41/46/12 -f 41/46/11 42/45/11 44/47/11 -f 43/48/10 44/47/10 46/49/10 -f 45/50/9 46/49/9 48/51/9 -f 6/52/15 31/53/15 29/5/15 -f 4/54/16 33/55/16 31/53/16 -f 34/56/17 33/55/17 4/54/17 -f 50/57/8 2/58/8 1/59/8 -f 52/19/7 50/57/7 49/60/7 -f 25/61/18 23/62/18 14/63/18 -f 23/62/19 21/64/19 16/65/19 -f 16/65/20 21/64/20 22/66/20 -f 19/67/20 36/68/20 35/69/20 -f 17/70/19 38/71/19 36/68/19 -f 55/72/18 40/73/18 38/71/18 -f 53/74/1 42/75/1 40/73/1 -f 53/74/2 51/76/2 44/77/2 -f 51/76/15 49/78/15 46/79/15 -f 49/78/16 1/80/16 48/81/16 -f 48/81/17 1/80/17 2/82/17 -f 58/83/21 60/84/21 59/85/21 -f 61/86/22 62/87/22 64/88/22 -f 25/61/1 12/1/1 27/3/1 -f 10/2/2 8/4/2 27/3/2 -f 3/89/3 4/6/3 5/8/3 -f 5/8/4 6/7/4 7/10/4 -f 7/10/5 8/9/5 9/12/5 -f 11/14/6 9/12/6 12/13/6 -f 13/16/7 11/14/7 14/15/7 -f 15/90/8 13/16/8 16/17/8 -f 53/21/6 54/18/6 51/20/6 -f 56/23/5 54/18/5 55/22/5 -f 18/25/4 56/23/4 17/24/4 -f 20/91/3 18/25/3 19/26/3 -f 23/31/9 24/27/9 21/29/9 -f 25/33/10 26/30/10 23/31/10 -f 27/34/11 28/32/11 25/33/11 -f 30/36/12 28/32/12 29/35/12 -f 32/38/13 30/36/13 31/37/13 -f 34/92/14 32/38/14 33/39/14 -f 35/93/14 36/40/14 37/42/14 -f 37/42/13 38/41/13 39/44/13 -f 39/44/12 40/43/12 41/46/12 -f 43/48/11 41/46/11 44/47/11 -f 45/50/10 43/48/10 46/49/10 -f 47/94/9 45/50/9 48/51/9 -f 8/4/15 6/52/15 29/5/15 -f 6/52/16 4/54/16 31/53/16 -f 3/95/17 34/56/17 4/54/17 -f 49/60/8 50/57/8 1/59/8 -f 51/20/7 52/19/7 49/60/7 -f 12/1/18 25/61/18 14/63/18 -f 14/63/19 23/62/19 16/65/19 -f 15/96/20 16/65/20 22/66/20 -f 20/97/20 19/67/20 35/69/20 -f 19/67/19 17/70/19 36/68/19 -f 17/70/18 55/72/18 38/71/18 -f 55/72/1 53/74/1 40/73/1 -f 42/75/2 53/74/2 44/77/2 -f 44/77/15 51/76/15 46/79/15 -f 46/79/16 49/78/16 48/81/16 -f 47/98/17 48/81/17 2/82/17 -f 57/99/22 58/83/22 59/85/22 -f 63/100/23 61/86/23 64/88/23 diff --git a/src/main/resources/assets/hbm/models/turret_light_gun.obj b/src/main/resources/assets/hbm/models/turret_light_gun.obj deleted file mode 100644 index a8504b499..000000000 --- a/src/main/resources/assets/hbm/models/turret_light_gun.obj +++ /dev/null @@ -1,581 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_light_gun.blend' -# www.blender.org -o Cylinder.001 -v 0.150000 0.200000 -0.650000 -v 0.150000 -0.100000 -0.650000 -v 0.150000 0.200000 0.150000 -v 0.150000 -0.200000 0.150000 -v -0.150000 0.200000 -0.650000 -v -0.150000 -0.100000 -0.650000 -v -0.150000 0.200000 0.150000 -v -0.150000 -0.200000 0.150000 -v -0.090000 -0.120000 0.150000 -v 0.090000 -0.120000 0.150000 -v 0.090000 0.170000 0.150000 -v -0.090000 0.170000 0.150000 -v -0.090000 -0.070000 0.650000 -v 0.090000 -0.070000 0.650000 -v 0.090000 0.170000 0.650000 -v -0.090000 0.170000 0.650000 -v 0.000000 0.125000 0.650000 -v 0.000000 0.125000 1.650000 -v 0.017678 0.117678 0.650000 -v 0.017678 0.117678 1.650000 -v 0.025000 0.100000 0.650000 -v 0.025000 0.100000 1.650000 -v 0.017678 0.082322 0.650000 -v 0.017678 0.082322 1.650000 -v -0.000000 0.075000 0.650000 -v -0.000000 0.075000 1.650000 -v -0.017678 0.082322 0.650000 -v -0.017678 0.082322 1.650000 -v -0.025000 0.100000 0.650000 -v -0.025000 0.100000 1.650000 -v -0.017678 0.117678 0.650000 -v -0.017678 0.117678 1.650000 -v 0.000000 0.065000 0.650000 -v 0.000000 0.065000 1.200000 -v 0.010607 0.060607 0.650000 -v 0.010607 0.060607 1.200000 -v 0.015000 0.050000 0.650000 -v 0.015000 0.050000 1.200000 -v 0.010607 0.039393 0.650000 -v 0.010607 0.039393 1.200000 -v -0.000000 0.035000 0.650000 -v -0.000000 0.035000 1.200000 -v -0.010607 0.039393 0.650000 -v -0.010607 0.039393 1.200000 -v -0.015000 0.050000 0.650000 -v -0.015000 0.050000 1.200000 -v -0.010607 0.060607 0.650000 -v -0.010607 0.060607 1.200000 -v -0.200000 -0.150000 0.500000 -v -0.200000 0.050000 0.500000 -v -0.200000 -0.150000 0.200000 -v -0.200000 0.050000 0.200000 -v -0.100000 -0.150000 0.500000 -v -0.100000 0.050000 0.500000 -v -0.100000 -0.150000 0.200000 -v -0.100000 0.050000 0.200000 -v -0.145000 0.050000 0.360000 -v -0.145000 0.050000 0.240000 -v -0.105000 0.050000 0.240000 -v -0.105000 0.050000 0.360000 -v -0.144754 0.083129 0.360000 -v -0.144754 0.083129 0.240000 -v -0.105246 0.076871 0.240000 -v -0.105246 0.076871 0.360000 -v -0.139328 0.115811 0.360000 -v -0.139328 0.115811 0.240000 -v -0.101286 0.103450 0.240000 -v -0.101286 0.103450 0.360000 -v -0.128857 0.147242 0.360000 -v -0.128857 0.147242 0.240000 -v -0.093216 0.129083 0.240000 -v -0.093216 0.129083 0.360000 -v -0.113597 0.176648 0.360000 -v -0.113597 0.176648 0.240000 -v -0.081236 0.153137 0.240000 -v -0.081236 0.153137 0.360000 -v -0.087918 0.207434 0.360000 -v -0.087918 0.207434 0.240000 -v -0.071648 0.170892 0.240000 -v -0.071648 0.170892 0.360000 -v -0.052028 0.221362 0.360000 -v -0.052028 0.221362 0.240000 -v -0.052726 0.181368 0.240000 -v -0.052726 0.181368 0.360000 -v -0.012081 0.217985 0.360000 -v -0.012081 0.217985 0.240000 -v -0.032682 0.183698 0.240000 -v -0.032682 0.183698 0.360000 -v 0.019914 0.196574 0.360000 -v 0.019914 0.196574 0.240000 -v -0.013247 0.174207 0.240000 -v -0.013247 0.174207 0.360000 -v 0.039863 0.163648 0.360000 -v 0.039863 0.163648 0.240000 -v 0.000356 0.157391 0.240000 -v 0.000356 0.157391 0.360000 -v -0.200000 -0.150000 -0.475000 -v -0.200000 0.150000 -0.475000 -v -0.200000 -0.150000 -0.525000 -v -0.200000 0.150000 -0.525000 -v 0.200000 -0.150000 -0.475000 -v 0.200000 0.150000 -0.475000 -v 0.200000 -0.150000 -0.525000 -v 0.200000 0.150000 -0.525000 -v -0.050000 -0.025000 -0.200000 -v -0.050000 0.225000 -0.200000 -v -0.050000 -0.025000 -0.700000 -v -0.050000 0.225000 -0.700000 -v 0.050000 -0.025000 -0.200000 -v 0.050000 0.225000 -0.200000 -v 0.050000 -0.025000 -0.700000 -v 0.050000 0.225000 -0.700000 -v -0.375000 0.000000 -0.100000 -v 0.375000 0.000000 -0.100000 -v -0.375000 -0.070711 -0.070711 -v 0.375000 -0.070711 -0.070711 -v -0.375000 -0.100000 0.000000 -v 0.375000 -0.100000 0.000000 -v -0.375000 -0.070711 0.070711 -v 0.375000 -0.070711 0.070711 -v -0.375000 0.000000 0.100000 -v 0.375000 0.000000 0.100000 -v -0.375000 0.070711 0.070711 -v 0.375000 0.070711 0.070711 -v -0.375000 0.100000 -0.000000 -v 0.375000 0.100000 -0.000000 -v -0.375000 0.070711 -0.070711 -v 0.375000 0.070711 -0.070711 -vt 0.409216 0.148396 -vt 0.409216 0.246203 -vt 0.148396 0.246203 -vt 0.507024 0.246204 -vt 0.507024 0.148396 -vt 0.769874 0.148396 -vt 0.148396 0.148396 -vt 0.138615 0.167957 -vt 0.044067 0.167957 -vt 0.148396 0.017985 -vt 0.409216 0.050588 -vt 0.409216 0.344011 -vt 0.260057 0.412584 -vt 0.260057 0.575597 -vt 0.181811 0.575597 -vt 0.138615 0.226642 -vt 0.017985 0.148395 -vt 0.044067 0.226642 -vt 0.017985 0.246203 -vt 0.260057 0.634281 -vt 0.181811 0.634281 -vt 0.017985 0.575597 -vt 0.260057 0.797294 -vt 0.165510 0.797294 -vt 0.423070 0.634281 -vt 0.017986 0.858219 -vt 0.017986 0.851981 -vt 0.344029 0.851991 -vt 0.017986 0.845742 -vt 0.344029 0.845753 -vt 0.017986 0.839503 -vt 0.344029 0.839516 -vt 0.017986 0.833265 -vt 0.344030 0.833279 -vt 0.017985 0.883174 -vt 0.017985 0.876935 -vt 0.344029 0.876939 -vt 0.017985 0.870696 -vt 0.344029 0.870702 -vt 0.468077 0.897383 -vt 0.468077 0.893640 -vt 0.647390 0.893639 -vt 0.017986 0.864458 -vt 0.344029 0.858228 -vt 0.344029 0.864465 -vt 0.468077 0.889897 -vt 0.647390 0.889896 -vt 0.468077 0.886154 -vt 0.647389 0.886153 -vt 0.468077 0.882411 -vt 0.647389 0.882410 -vt 0.468077 0.912355 -vt 0.468077 0.908612 -vt 0.647390 0.908611 -vt 0.468077 0.904869 -vt 0.468077 0.901126 -vt 0.647390 0.897382 -vt 0.647390 0.901125 -vt 0.465430 0.879764 -vt 0.465430 0.888801 -vt 0.902544 0.741978 -vt 0.902544 0.807183 -vt 0.804736 0.807183 -vt 0.902544 0.709376 -vt 0.967748 0.709375 -vt 0.967748 0.741978 -vt 0.804736 0.709375 -vt 0.804736 0.644170 -vt 0.902544 0.644171 -vt 0.804736 0.741978 -vt 0.739530 0.741978 -vt 0.739530 0.709375 -vt 0.902544 0.839786 -vt 0.804736 0.839786 -vt 0.889503 0.724047 -vt 0.740128 0.942905 -vt 0.739889 0.929866 -vt 0.748650 0.929785 -vt 0.889503 0.711006 -vt 0.850380 0.711006 -vt 0.850380 0.724047 -vt 0.750328 0.890466 -vt 0.759089 0.890386 -vt 0.759447 0.929507 -vt 0.739530 0.877703 -vt 0.750331 0.877784 -vt 0.748291 0.890664 -vt 0.739530 0.890744 -vt 0.750925 0.942626 -vt 0.751933 0.981737 -vt 0.761723 0.942348 -vt 0.772520 0.942070 -vt 0.773528 0.981180 -vt 0.762731 0.981458 -vt 0.750686 0.929588 -vt 0.750328 0.877425 -vt 0.761129 0.877505 -vt 0.772281 0.929031 -vt 0.781042 0.928951 -vt 0.761484 0.929309 -vt 0.770245 0.929229 -vt 0.761125 0.877147 -vt 0.771926 0.877227 -vt 0.769886 0.890108 -vt 0.761125 0.890188 -vt 0.790639 0.890232 -vt 0.797118 0.891373 -vt 0.790333 0.929903 -vt 0.771923 0.876869 -vt 0.782724 0.876949 -vt 0.780684 0.889829 -vt 0.771923 0.889910 -vt 0.783318 0.941792 -vt 0.784326 0.980902 -vt 0.796384 0.941455 -vt 0.796683 0.928418 -vt 0.803692 0.929189 -vt 0.797391 0.980565 -vt 0.783854 0.928762 -vt 0.794586 0.877802 -vt 0.806751 0.882582 -vt 0.820199 0.877142 -vt 0.832364 0.881922 -vt 0.822731 0.890713 -vt 0.803510 0.876739 -vt 0.815687 0.879785 -vt 0.807975 0.890301 -vt 0.800965 0.889530 -vt 0.808931 0.941132 -vt 0.809939 0.980242 -vt 0.826578 0.888870 -vt 0.833588 0.889642 -vt 0.829305 0.928530 -vt 0.816252 0.889572 -vt 0.815946 0.929243 -vt 0.821997 0.940795 -vt 0.823005 0.979905 -vt 0.809467 0.928102 -vt 0.834544 0.940472 -vt 0.834843 0.927434 -vt 0.841852 0.928206 -vt 0.835552 0.979582 -vt 0.822296 0.927758 -vt 0.829123 0.876079 -vt 0.841300 0.879125 -vt 0.805844 0.229902 -vt 0.805844 0.132094 -vt 0.822146 0.132094 -vt 0.841671 0.875756 -vt 0.853847 0.878802 -vt 0.846135 0.889318 -vt 0.839126 0.888546 -vt 0.847091 0.940149 -vt 0.848099 0.979259 -vt 0.952556 0.017985 -vt 0.952556 0.115793 -vt 0.822146 0.115793 -vt 0.952556 0.229902 -vt 0.952556 0.132094 -vt 0.968857 0.132094 -vt 0.822146 0.229902 -vt 0.952556 0.246203 -vt 0.822146 0.246203 -vt 0.703560 0.494090 -vt 0.703560 0.412584 -vt 0.866573 0.412584 -vt 0.703560 0.526693 -vt 0.622054 0.526693 -vt 0.622054 0.494090 -vt 0.866573 0.526693 -vt 0.866573 0.608199 -vt 0.703560 0.608199 -vt 0.866573 0.494090 -vt 0.948079 0.494090 -vt 0.948079 0.526693 -vt 0.459041 0.526693 -vt 0.703560 0.793888 -vt 0.703560 0.818841 -vt 0.459041 0.818841 -vt 0.703560 0.843794 -vt 0.459041 0.843794 -vt 0.703560 0.644170 -vt 0.703560 0.669123 -vt 0.459041 0.669123 -vt 0.703560 0.694076 -vt 0.459041 0.694076 -vt 0.703560 0.719029 -vt 0.459041 0.719029 -vt 0.703560 0.743982 -vt 0.459041 0.743982 -vt 0.703560 0.768935 -vt 0.459041 0.793888 -vt 0.459041 0.768935 -vt 0.769874 0.246204 -vt 0.148395 0.376613 -vt 0.165510 0.412584 -vt 0.017985 0.634281 -vt 0.423070 0.575597 -vt 0.344029 0.883176 -vt 0.647390 0.912354 -vt 0.647390 0.904868 -vt 0.461687 0.888801 -vt 0.459041 0.886154 -vt 0.459041 0.882411 -vt 0.461687 0.879765 -vt 0.741136 0.982015 -vt 0.822146 0.017985 -vt 0.968857 0.229902 -vt 0.459041 0.494090 -vt 0.459041 0.644170 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.992300 -0.124000 -vn -0.000000 0.000000 1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 -0.995000 0.099500 -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.382700 0.923900 -0.000000 -vn -0.923900 0.382700 -0.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.989100 -0.147400 0.000000 -vn 1.000000 0.009200 0.000000 -vn -1.000000 0.007400 0.000000 -vn -0.948700 0.316100 0.000000 -vn -0.986500 0.163800 0.000000 -vn 0.953800 -0.300300 0.000000 -vn 0.879900 -0.475200 0.000000 -vn 0.895100 -0.445800 0.000000 -vn -0.887600 0.460600 0.000000 -vn -0.767900 0.640500 0.000000 -vn 0.484400 -0.874900 0.000000 -vn -0.361800 0.932300 0.000000 -vn -0.438800 -0.898600 0.000000 -vn 0.115500 -0.993300 0.000000 -vn 0.084200 0.996400 0.000000 -vn 0.556200 0.831100 0.000000 -vn -0.777500 -0.628900 0.000000 -vn 0.855300 0.518200 0.000000 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 0.923900 -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.556100 0.831100 0.000000 -s off -f 1/1/1 5/2/1 7/3/1 -f 6/4/2 2/5/2 4/6/2 -f 3/7/3 11/8/3 10/9/3 -f 3/7/4 4/10/4 2/11/4 -f 1/1/5 2/5/5 6/4/5 -f 7/3/6 5/2/6 6/12/6 -f 11/13/4 15/14/4 14/15/4 -f 7/3/3 12/16/3 11/8/3 -f 4/17/3 10/9/3 9/18/3 -f 7/3/3 8/19/3 9/18/3 -f 16/20/3 13/21/3 14/15/3 -f 10/22/7 14/15/7 13/21/7 -f 12/23/6 9/24/6 13/21/6 -f 12/25/1 16/20/1 15/14/1 -f 18/26/8 20/27/8 19/28/8 -f 20/27/9 22/29/9 21/30/9 -f 22/29/10 24/31/10 23/32/10 -f 24/31/11 26/33/11 25/34/11 -f 26/35/12 28/36/12 27/37/12 -f 28/36/13 30/38/13 29/39/13 -f 34/40/8 36/41/8 35/42/8 -f 32/43/14 18/26/14 17/44/14 -f 30/38/15 32/43/15 31/45/15 -f 36/41/9 38/46/9 37/47/9 -f 38/46/10 40/48/10 39/49/10 -f 40/48/11 42/50/11 41/51/11 -f 42/52/12 44/53/12 43/54/12 -f 43/54/13 44/53/13 46/55/13 -f 48/56/14 34/40/14 33/57/14 -f 46/55/15 48/56/15 47/58/15 -f 44/59/3 42/50/3 38/60/3 -f 52/61/6 51/62/6 49/63/6 -f 56/64/5 55/65/5 51/66/5 -f 54/67/4 53/68/4 55/69/4 -f 50/70/3 49/71/3 53/72/3 -f 51/62/16 55/73/16 53/74/16 -f 56/64/1 52/61/1 58/75/1 -f 57/76/3 60/77/3 64/78/3 -f 56/64/1 59/79/1 60/80/1 -f 52/61/1 50/70/1 57/81/1 -f 54/67/1 60/80/1 57/81/1 -f 63/82/17 67/83/17 68/84/17 -f 58/85/5 62/86/5 63/87/5 -f 59/88/18 63/87/18 64/78/18 -f 57/76/19 61/89/19 62/90/19 -f 65/91/20 69/92/20 70/93/20 -f 61/89/21 65/91/21 66/94/21 -f 61/89/3 64/95/3 68/84/3 -f 62/96/5 66/97/5 67/83/5 -f 69/92/3 72/98/3 76/99/3 -f 65/91/3 68/100/3 72/101/3 -f 66/102/5 70/103/5 71/104/5 -f 67/105/22 71/104/22 72/101/22 -f 75/106/23 79/107/23 80/108/23 -f 70/109/5 74/110/5 75/111/5 -f 71/112/24 75/111/24 76/99/24 -f 69/92/25 73/113/25 74/114/25 -f 77/115/3 80/116/3 84/117/3 -f 73/113/26 77/115/26 78/118/26 -f 73/113/3 76/119/3 80/108/3 -f 74/120/5 78/121/5 79/107/5 -f 82/122/5 86/123/5 87/124/5 -f 78/125/5 82/126/5 83/127/5 -f 79/128/27 83/127/27 84/117/27 -f 77/115/28 81/129/28 82/130/28 -f 87/131/29 91/132/29 92/133/29 -f 83/134/30 87/124/30 88/135/30 -f 81/129/31 85/136/31 86/137/31 -f 81/129/3 84/138/3 88/135/3 -f 89/139/3 92/140/3 96/141/3 -f 85/136/32 89/139/32 90/142/32 -f 85/136/3 88/143/3 92/133/3 -f 86/144/5 90/145/5 91/132/5 -f 100/146/6 99/147/6 97/148/6 -f 90/149/5 94/150/5 95/151/5 -f 91/152/33 95/151/33 96/141/33 -f 89/139/34 93/153/34 94/154/34 -f 104/155/5 103/156/5 99/157/5 -f 102/158/4 101/159/4 103/160/4 -f 98/161/3 97/148/3 101/159/3 -f 99/157/16 103/156/16 101/159/16 -f 104/162/1 100/163/1 98/161/1 -f 108/164/6 107/165/6 105/166/6 -f 112/167/5 111/168/5 107/169/5 -f 110/170/4 109/171/4 111/172/4 -f 106/173/3 105/174/3 109/175/3 -f 107/169/16 111/168/16 109/176/16 -f 112/167/1 108/164/1 106/173/1 -f 114/177/35 116/178/35 115/179/35 -f 116/178/36 118/180/36 117/181/36 -f 118/182/37 120/183/37 119/184/37 -f 120/183/38 122/185/38 121/186/38 -f 122/185/39 124/187/39 123/188/39 -f 124/187/40 126/189/40 125/190/40 -f 128/191/41 114/177/41 113/192/41 -f 126/189/42 128/191/42 127/193/42 -f 3/7/1 1/1/1 7/3/1 -f 8/194/2 6/4/2 4/6/2 -f 4/17/3 3/7/3 10/9/3 -f 1/1/4 3/7/4 2/11/4 -f 5/2/5 1/1/5 6/4/5 -f 8/195/6 7/3/6 6/12/6 -f 10/196/4 11/13/4 14/15/4 -f 3/7/3 7/3/3 11/8/3 -f 8/19/3 4/17/3 9/18/3 -f 12/16/3 7/3/3 9/18/3 -f 15/14/3 16/20/3 14/15/3 -f 9/197/7 10/22/7 13/21/7 -f 16/20/6 12/23/6 13/21/6 -f 11/198/1 12/25/1 15/14/1 -f 17/44/8 18/26/8 19/28/8 -f 19/28/9 20/27/9 21/30/9 -f 21/30/10 22/29/10 23/32/10 -f 23/32/11 24/31/11 25/34/11 -f 25/199/12 26/35/12 27/37/12 -f 27/37/13 28/36/13 29/39/13 -f 33/57/8 34/40/8 35/42/8 -f 31/45/14 32/43/14 17/44/14 -f 29/39/15 30/38/15 31/45/15 -f 35/42/9 36/41/9 37/47/9 -f 37/47/10 38/46/10 39/49/10 -f 39/49/11 40/48/11 41/51/11 -f 41/200/12 42/52/12 43/54/12 -f 45/201/13 43/54/13 46/55/13 -f 47/58/14 48/56/14 33/57/14 -f 45/201/15 46/55/15 47/58/15 -f 38/60/3 36/202/3 34/203/3 -f 34/203/3 48/204/3 38/60/3 -f 46/205/3 44/59/3 38/60/3 -f 42/50/3 40/48/3 38/60/3 -f 38/60/3 48/204/3 46/205/3 -f 50/70/6 52/61/6 49/63/6 -f 52/61/5 56/64/5 51/66/5 -f 56/64/4 54/67/4 55/69/4 -f 54/67/3 50/70/3 53/72/3 -f 49/63/16 51/62/16 53/74/16 -f 59/79/1 56/64/1 58/75/1 -f 61/89/3 57/76/3 64/78/3 -f 54/67/1 56/64/1 60/80/1 -f 58/75/1 52/61/1 57/81/1 -f 50/70/1 54/67/1 57/81/1 -f 64/95/17 63/82/17 68/84/17 -f 59/88/5 58/85/5 63/87/5 -f 60/77/18 59/88/18 64/78/18 -f 58/206/19 57/76/19 62/90/19 -f 66/94/20 65/91/20 70/93/20 -f 62/90/21 61/89/21 66/94/21 -f 65/91/3 61/89/3 68/84/3 -f 63/82/5 62/96/5 67/83/5 -f 73/113/3 69/92/3 76/99/3 -f 69/92/3 65/91/3 72/101/3 -f 67/105/5 66/102/5 71/104/5 -f 68/100/22 67/105/22 72/101/22 -f 76/119/23 75/106/23 80/108/23 -f 71/112/5 70/109/5 75/111/5 -f 72/98/24 71/112/24 76/99/24 -f 70/93/25 69/92/25 74/114/25 -f 81/129/3 77/115/3 84/117/3 -f 74/114/26 73/113/26 78/118/26 -f 77/115/3 73/113/3 80/108/3 -f 75/106/5 74/120/5 79/107/5 -f 83/134/5 82/122/5 87/124/5 -f 79/128/5 78/125/5 83/127/5 -f 80/116/27 79/128/27 84/117/27 -f 78/118/28 77/115/28 82/130/28 -f 88/143/29 87/131/29 92/133/29 -f 84/138/30 83/134/30 88/135/30 -f 82/130/31 81/129/31 86/137/31 -f 85/136/3 81/129/3 88/135/3 -f 93/153/3 89/139/3 96/141/3 -f 86/137/43 85/136/43 90/142/43 -f 89/139/3 85/136/3 92/133/3 -f 87/131/5 86/144/5 91/132/5 -f 98/161/6 100/146/6 97/148/6 -f 91/152/5 90/149/5 95/151/5 -f 92/140/33 91/152/33 96/141/33 -f 90/142/34 89/139/34 94/154/34 -f 100/207/5 104/155/5 99/157/5 -f 104/208/4 102/158/4 103/160/4 -f 102/158/3 98/161/3 101/159/3 -f 97/148/16 99/157/16 101/159/16 -f 102/158/1 104/162/1 98/161/1 -f 106/173/6 108/164/6 105/166/6 -f 108/164/5 112/167/5 107/169/5 -f 112/167/4 110/170/4 111/172/4 -f 110/170/3 106/173/3 109/175/3 -f 105/209/16 107/169/16 109/176/16 -f 110/170/1 112/167/1 106/173/1 -f 113/192/35 114/177/35 115/179/35 -f 115/179/36 116/178/36 117/181/36 -f 117/210/37 118/182/37 119/184/37 -f 119/184/38 120/183/38 121/186/38 -f 121/186/39 122/185/39 123/188/39 -f 123/188/40 124/187/40 125/190/40 -f 127/193/41 128/191/41 113/192/41 -f 125/190/42 126/189/42 127/193/42 diff --git a/src/main/resources/assets/hbm/models/turret_rocket_gun.obj b/src/main/resources/assets/hbm/models/turret_rocket_gun.obj deleted file mode 100644 index b50e0c05a..000000000 --- a/src/main/resources/assets/hbm/models/turret_rocket_gun.obj +++ /dev/null @@ -1,554 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_rocket_gun.blend' -# www.blender.org -o Cylinder.001 -v 0.130000 0.200000 -0.500000 -v 0.130000 -0.200000 -0.500000 -v 0.130000 0.200000 1.250000 -v 0.130000 -0.200000 1.250000 -v -0.130000 0.200000 -0.500000 -v -0.130000 -0.200000 -0.500000 -v -0.130000 0.200000 1.250000 -v -0.130000 -0.200000 1.250000 -v 0.200000 0.130000 -0.500000 -v 0.200000 -0.130000 -0.500000 -v 0.200000 0.130000 1.250000 -v 0.200000 -0.130000 1.250000 -v -0.200000 0.130000 -0.500000 -v -0.200000 -0.130000 -0.500000 -v -0.200000 0.130000 1.250000 -v -0.200000 -0.130000 1.250000 -v -0.075000 -0.012500 0.250000 -v -0.075000 -0.012500 1.250000 -v -0.030806 -0.030806 0.250000 -v -0.030806 -0.030806 1.250000 -v -0.012500 -0.075000 0.250000 -v -0.012500 -0.075000 1.250000 -v -0.030806 -0.119194 0.250000 -v -0.030806 -0.119194 1.250000 -v -0.075000 -0.137500 0.250000 -v -0.075000 -0.137500 1.250000 -v -0.119194 -0.119194 0.250000 -v -0.119194 -0.119194 1.250000 -v -0.137500 -0.075000 0.250000 -v -0.137500 -0.075000 1.250000 -v -0.119194 -0.030806 0.250000 -v -0.119194 -0.030806 1.250000 -v 0.075000 -0.012500 0.250000 -v 0.075000 -0.012500 1.250000 -v 0.119194 -0.030806 0.250000 -v 0.119194 -0.030806 1.250000 -v 0.137500 -0.075000 0.250000 -v 0.137500 -0.075000 1.250000 -v 0.119194 -0.119194 0.250000 -v 0.119194 -0.119194 1.250000 -v 0.075000 -0.137500 0.250000 -v 0.075000 -0.137500 1.250000 -v 0.030806 -0.119194 0.250000 -v 0.030806 -0.119194 1.250000 -v 0.012500 -0.075000 0.250000 -v 0.012500 -0.075000 1.250000 -v 0.030806 -0.030806 0.250000 -v 0.030806 -0.030806 1.250000 -v -0.075000 0.137500 0.250000 -v -0.075000 0.137500 1.250000 -v -0.030806 0.119194 0.250000 -v -0.030806 0.119194 1.250000 -v -0.012500 0.075000 0.250000 -v -0.012500 0.075000 1.250000 -v -0.030806 0.030806 0.250000 -v -0.030806 0.030806 1.250000 -v -0.075000 0.012500 0.250000 -v -0.075000 0.012500 1.250000 -v -0.119194 0.030806 0.250000 -v -0.119194 0.030806 1.250000 -v -0.137500 0.075000 0.250000 -v -0.137500 0.075000 1.250000 -v -0.119194 0.119194 0.250000 -v -0.119194 0.119194 1.250000 -v 0.075000 0.137500 0.250000 -v 0.075000 0.137500 1.250000 -v 0.119194 0.119194 0.250000 -v 0.119194 0.119194 1.250000 -v 0.137500 0.075000 0.250000 -v 0.137500 0.075000 1.250000 -v 0.119194 0.030806 0.250000 -v 0.119194 0.030806 1.250000 -v 0.075000 0.012500 0.250000 -v 0.075000 0.012500 1.250000 -v 0.030806 0.030806 0.250000 -v 0.030806 0.030806 1.250000 -v 0.012500 0.075000 0.250000 -v 0.012500 0.075000 1.250000 -v 0.030806 0.119194 0.250000 -v 0.030806 0.119194 1.250000 -v -0.100000 -0.200000 -0.500000 -v -0.100000 0.125000 -0.500000 -v -0.060000 0.050000 -0.800000 -v 0.100000 -0.200000 -0.500000 -v 0.100000 0.125000 -0.500000 -v 0.060000 0.050000 -0.800000 -v -0.100000 -0.250000 -0.500000 -v 0.100000 -0.250000 -0.500000 -v -0.060000 -0.250000 -0.800000 -v 0.060000 -0.250000 -0.800000 -v 0.180000 0.400000 0.131250 -v 0.180000 0.400000 -0.131250 -v -0.375000 0.000000 -0.100000 -v 0.375000 0.000000 -0.100000 -v -0.375000 -0.070711 -0.070711 -v 0.375000 -0.070711 -0.070711 -v -0.375000 -0.100000 0.000000 -v 0.375000 -0.100000 0.000000 -v -0.375000 -0.070711 0.070711 -v 0.375000 -0.070711 0.070711 -v -0.375000 0.000000 0.100000 -v 0.375000 0.000000 0.100000 -v -0.375000 0.070711 0.070711 -v 0.375000 0.070711 0.070711 -v -0.375000 0.100000 -0.000000 -v 0.375000 0.100000 -0.000000 -v -0.375000 0.070711 -0.070711 -v 0.375000 0.070711 -0.070711 -v -0.005000 0.400000 -0.131250 -v -0.005000 0.400000 0.131250 -v 0.250000 0.330000 -0.131250 -v 0.250000 -0.080000 -0.131250 -v 0.250000 0.330000 0.131250 -v 0.250000 -0.080000 0.131250 -vt 0.546756 0.160984 -vt 0.546756 0.238616 -vt 0.024234 0.238615 -vt 0.546756 0.053793 -vt 0.024235 0.053793 -vt 0.024235 0.024234 -vt 0.024235 0.131425 -vt 0.546756 0.131425 -vt 0.546756 0.268174 -vt 0.024234 0.268174 -vt 0.024234 0.345806 -vt 0.546756 0.345806 -vt 0.546756 0.375365 -vt 0.587914 0.572912 -vt 0.289294 0.572912 -vt 0.289295 0.558627 -vt 0.587914 0.587197 -vt 0.289294 0.587196 -vt 0.587914 0.601481 -vt 0.289294 0.601481 -vt 0.587914 0.615766 -vt 0.289294 0.615765 -vt 0.587914 0.515774 -vt 0.289295 0.515773 -vt 0.289295 0.501489 -vt 0.587914 0.530058 -vt 0.289295 0.530058 -vt 0.587914 0.558627 -vt 0.289295 0.544342 -vt 0.587914 0.544343 -vt 0.598015 0.625867 -vt 0.598015 0.591380 -vt 0.612299 0.591381 -vt 0.895198 0.268504 -vt 0.596579 0.268503 -vt 0.596579 0.254219 -vt 0.895198 0.282788 -vt 0.596579 0.282788 -vt 0.895198 0.297073 -vt 0.596579 0.297072 -vt 0.895198 0.311358 -vt 0.596579 0.311357 -vt 0.895198 0.211365 -vt 0.596579 0.211365 -vt 0.596579 0.197081 -vt 0.895198 0.225650 -vt 0.596579 0.225650 -vt 0.895198 0.254219 -vt 0.596579 0.239934 -vt 0.895198 0.239934 -vt 0.905299 0.321458 -vt 0.905299 0.286972 -vt 0.919584 0.286972 -vt 0.895199 0.095657 -vt 0.596579 0.095657 -vt 0.596579 0.081372 -vt 0.895198 0.109942 -vt 0.596579 0.109941 -vt 0.895198 0.124227 -vt 0.596579 0.124226 -vt 0.895198 0.138511 -vt 0.596579 0.138510 -vt 0.895199 0.038519 -vt 0.596579 0.038519 -vt 0.596579 0.024234 -vt 0.895199 0.052804 -vt 0.596579 0.052803 -vt 0.895199 0.081373 -vt 0.596579 0.067088 -vt 0.895199 0.067088 -vt 0.905299 0.148612 -vt 0.905299 0.114126 -vt 0.919584 0.114126 -vt 0.587914 0.745758 -vt 0.289294 0.745758 -vt 0.289294 0.731473 -vt 0.587914 0.760043 -vt 0.289294 0.760042 -vt 0.587914 0.774328 -vt 0.289294 0.774327 -vt 0.587914 0.788612 -vt 0.289294 0.788611 -vt 0.587914 0.688620 -vt 0.289295 0.688620 -vt 0.289295 0.674335 -vt 0.587914 0.702904 -vt 0.289295 0.702904 -vt 0.587914 0.731474 -vt 0.289295 0.717189 -vt 0.587914 0.717189 -vt 0.598014 0.798713 -vt 0.598015 0.764227 -vt 0.612299 0.764227 -vt 0.740550 0.815492 -vt 0.727353 0.820958 -vt 0.722074 0.815679 -vt 0.759026 0.789285 -vt 0.753560 0.802482 -vt 0.740550 0.789472 -vt 0.759026 0.815679 -vt 0.753747 0.820958 -vt 0.727540 0.802482 -vt 0.722074 0.789285 -vt 0.727353 0.784006 -vt 0.721886 0.770809 -vt 0.772223 0.783818 -vt 0.753747 0.784006 -vt 0.772223 0.821146 -vt 0.759214 0.834155 -vt 0.785421 0.815679 -vt 0.755331 0.872163 -vt 0.753747 0.847353 -vt 0.790887 0.802482 -vt 0.810231 0.817263 -vt 0.810231 0.787701 -vt 0.785421 0.789285 -vt 0.759214 0.770809 -vt 0.753747 0.757611 -vt 0.740550 0.752145 -vt 0.755331 0.732800 -vt 0.725769 0.732800 -vt 0.727353 0.757611 -vt 0.721886 0.834155 -vt 0.708877 0.821146 -vt 0.727353 0.847353 -vt 0.740550 0.852819 -vt 0.725769 0.872163 -vt 0.670869 0.817263 -vt 0.695679 0.815679 -vt 0.690213 0.802482 -vt 0.670869 0.787701 -vt 0.695679 0.789285 -vt 0.708877 0.783818 -vt 0.114613 0.695591 -vt 0.114613 0.606006 -vt 0.150447 0.606006 -vt 0.024234 0.375364 -vt 0.546756 0.453020 -vt 0.024234 0.452996 -vt 0.150447 0.695591 -vt 0.162392 0.787934 -vt 0.024234 0.920865 -vt 0.046406 0.911363 -vt 0.088637 0.953594 -vt 0.102668 0.516420 -vt 0.162392 0.501489 -vt 0.162392 0.516420 -vt 0.024234 0.620937 -vt 0.024234 0.606006 -vt 0.240826 0.620937 -vt 0.894833 0.638621 -vt 0.894833 0.661476 -vt 0.670869 0.661477 -vt 0.894833 0.684332 -vt 0.670869 0.684332 -vt 0.894833 0.501489 -vt 0.894833 0.524344 -vt 0.670869 0.524344 -vt 0.894833 0.547200 -vt 0.670869 0.547200 -vt 0.894833 0.570055 -vt 0.670869 0.570055 -vt 0.858700 0.855234 -vt 0.858700 0.732800 -vt 0.937087 0.732801 -vt 0.894833 0.592910 -vt 0.670869 0.592910 -vt 0.937087 0.855234 -vt 0.937087 0.884796 -vt 0.894833 0.615766 -vt 0.670869 0.638621 -vt 0.670869 0.615766 -vt 0.937087 0.940041 -vt 0.858700 0.940041 -vt 0.024234 0.891303 -vt 0.079135 0.836403 -vt 0.163597 0.920865 -vt 0.108697 0.975766 -vt 0.024235 0.160983 -vt 0.546756 0.024235 -vt 0.587914 0.501489 -vt 0.622400 0.601481 -vt 0.622400 0.615766 -vt 0.612299 0.625867 -vt 0.895198 0.197081 -vt 0.929685 0.297073 -vt 0.929685 0.311358 -vt 0.919584 0.321458 -vt 0.895199 0.024234 -vt 0.929685 0.124227 -vt 0.929685 0.138511 -vt 0.919584 0.148612 -vt 0.587914 0.674335 -vt 0.622400 0.774328 -vt 0.622400 0.788612 -vt 0.612299 0.798713 -vt 0.548110 0.452986 -vt 0.102668 0.787934 -vt 0.079135 0.975766 -vt 0.102668 0.501489 -vt 0.024234 0.717988 -vt 0.240826 0.606006 -vt 0.240826 0.717988 -vt 0.670869 0.501489 -vt 0.858700 0.884796 -vt 0.108697 0.836403 -vt 0.115031 0.842738 -vt 0.157262 0.884969 -vt 0.163597 0.891303 -vn 0.000000 1.000000 0.000000 -vn 0.707100 -0.707100 0.000000 -vn 0.707100 0.707100 0.000000 -vn -0.707100 0.707100 0.000000 -vn 1.000000 0.000000 0.000000 -vn -0.707100 -0.707100 0.000000 -vn -1.000000 0.000000 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.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.000000 0.000000 1.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 0.970100 -0.242500 -vn 0.991200 0.000000 -0.132200 -vn -0.991200 0.000000 -0.132200 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 0.923900 -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 -s off -f 1/1/1 5/2/1 7/3/1 -f 10/4/2 12/5/2 4/6/2 -f 11/7/3 9/8/3 1/1/3 -f 13/9/4 15/10/4 7/3/4 -f 11/7/5 12/5/5 10/4/5 -f 16/11/6 14/12/6 6/13/6 -f 13/9/7 14/12/7 16/11/7 -f 19/14/8 20/15/8 18/16/8 -f 21/17/9 22/18/9 20/15/9 -f 23/19/10 24/20/10 22/18/10 -f 25/21/11 26/22/11 24/20/11 -f 27/23/12 28/24/12 26/25/12 -f 29/26/13 30/27/13 28/24/13 -f 17/28/14 18/16/14 32/29/14 -f 31/30/15 32/29/15 30/27/15 -f 27/31/16 21/32/16 19/33/16 -f 35/34/8 36/35/8 34/36/8 -f 37/37/9 38/38/9 36/35/9 -f 39/39/10 40/40/10 38/38/10 -f 41/41/11 42/42/11 40/40/11 -f 43/43/12 44/44/12 42/45/12 -f 45/46/13 46/47/13 44/44/13 -f 33/48/14 34/36/14 48/49/14 -f 47/50/15 48/49/15 46/47/15 -f 43/51/16 37/52/16 35/53/16 -f 51/54/8 52/55/8 50/56/8 -f 53/57/9 54/58/9 52/55/9 -f 55/59/10 56/60/10 54/58/10 -f 57/61/11 58/62/11 56/60/11 -f 59/63/12 60/64/12 58/65/12 -f 61/66/13 62/67/13 60/64/13 -f 49/68/14 50/56/14 64/69/14 -f 63/70/15 64/69/15 62/67/15 -f 59/71/16 53/72/16 51/73/16 -f 67/74/8 68/75/8 66/76/8 -f 69/77/9 70/78/9 68/75/9 -f 71/79/10 72/80/10 70/78/10 -f 73/81/11 74/82/11 72/80/11 -f 75/83/12 76/84/12 74/85/12 -f 77/86/13 78/87/13 76/84/13 -f 65/88/14 66/76/14 80/89/14 -f 79/90/15 80/89/15 78/87/15 -f 75/91/16 69/92/16 67/93/16 -f 56/94/16 58/95/16 18/96/16 -f 74/97/16 76/98/16 48/99/16 -f 76/98/16 78/100/16 54/101/16 -f 56/94/16 20/102/16 48/99/16 -f 22/103/16 46/104/16 48/99/16 -f 44/105/16 46/104/16 22/103/16 -f 72/106/16 74/97/16 34/107/16 -f 54/101/16 78/100/16 80/108/16 -f 52/109/16 80/108/16 66/110/16 -f 7/111/16 50/112/16 66/110/16 -f 66/110/16 68/113/16 3/114/16 -f 3/114/16 68/113/16 11/115/16 -f 68/113/16 70/116/16 11/115/16 -f 70/116/16 72/106/16 36/117/16 -f 11/115/16 70/116/16 38/118/16 -f 38/118/16 40/119/16 12/120/16 -f 12/120/16 40/119/16 4/121/16 -f 40/119/16 42/122/16 4/121/16 -f 58/95/16 60/123/16 32/124/16 -f 32/124/16 60/123/16 62/125/16 -f 50/112/16 7/111/16 64/126/16 -f 7/111/16 15/127/16 64/126/16 -f 64/126/16 15/127/16 62/125/16 -f 15/127/16 16/128/16 30/129/16 -f 30/129/16 16/128/16 28/130/16 -f 16/128/16 8/131/16 28/130/16 -f 28/130/16 8/131/16 26/132/16 -f 42/122/16 44/105/16 24/133/16 -f 42/122/16 26/132/16 8/131/16 -f 86/134/17 90/135/17 89/136/17 -f 8/137/18 84/138/18 4/139/18 -f 86/134/19 83/140/19 82/141/19 -f 1/142/17 85/143/17 82/144/17 -f 89/136/18 90/135/18 88/145/18 -f 81/146/16 87/147/16 88/145/16 -f 84/148/20 88/149/20 90/135/20 -f 83/140/21 89/136/21 81/150/21 -f 94/151/22 96/152/22 95/153/22 -f 96/152/23 98/154/23 97/155/23 -f 98/156/24 100/157/24 99/158/24 -f 100/157/25 102/159/25 101/160/25 -f 102/159/26 104/161/26 103/162/26 -f 113/163/5 114/164/5 112/165/5 -f 104/161/27 106/166/27 105/167/27 -f 113/163/3 111/168/3 92/169/3 -f 108/170/28 94/151/28 93/171/28 -f 106/166/29 108/170/29 107/172/29 -f 92/169/1 109/173/1 110/174/1 -f 85/143/17 9/175/17 10/176/17 -f 82/144/17 14/177/17 13/178/17 -f 3/179/1 1/1/1 7/3/1 -f 2/180/2 10/4/2 4/6/2 -f 3/179/3 11/7/3 1/1/3 -f 5/2/4 13/9/4 7/3/4 -f 9/8/5 11/7/5 10/4/5 -f 8/137/6 16/11/6 6/13/6 -f 15/10/7 13/9/7 16/11/7 -f 17/28/8 19/14/8 18/16/8 -f 19/14/9 21/17/9 20/15/9 -f 21/17/10 23/19/10 22/18/10 -f 23/19/11 25/21/11 24/20/11 -f 25/181/12 27/23/12 26/25/12 -f 27/23/13 29/26/13 28/24/13 -f 31/30/14 17/28/14 32/29/14 -f 29/26/15 31/30/15 30/27/15 -f 19/33/16 17/182/16 27/31/16 -f 31/183/16 29/184/16 27/31/16 -f 27/31/16 25/21/16 23/19/16 -f 23/19/16 21/32/16 27/31/16 -f 17/182/16 31/183/16 27/31/16 -f 33/48/8 35/34/8 34/36/8 -f 35/34/9 37/37/9 36/35/9 -f 37/37/10 39/39/10 38/38/10 -f 39/39/11 41/41/11 40/40/11 -f 41/185/12 43/43/12 42/45/12 -f 43/43/13 45/46/13 44/44/13 -f 47/50/14 33/48/14 48/49/14 -f 45/46/15 47/50/15 46/47/15 -f 35/53/16 33/186/16 43/51/16 -f 47/187/16 45/188/16 43/51/16 -f 43/51/16 41/41/16 39/39/16 -f 39/39/16 37/52/16 43/51/16 -f 33/186/16 47/187/16 43/51/16 -f 49/68/8 51/54/8 50/56/8 -f 51/54/9 53/57/9 52/55/9 -f 53/57/10 55/59/10 54/58/10 -f 55/59/11 57/61/11 56/60/11 -f 57/189/12 59/63/12 58/65/12 -f 59/63/13 61/66/13 60/64/13 -f 63/70/14 49/68/14 64/69/14 -f 61/66/15 63/70/15 62/67/15 -f 51/73/16 49/190/16 59/71/16 -f 63/191/16 61/192/16 59/71/16 -f 59/71/16 57/61/16 55/59/16 -f 55/59/16 53/72/16 59/71/16 -f 49/190/16 63/191/16 59/71/16 -f 65/88/8 67/74/8 66/76/8 -f 67/74/9 69/77/9 68/75/9 -f 69/77/10 71/79/10 70/78/10 -f 71/79/11 73/81/11 72/80/11 -f 73/193/12 75/83/12 74/85/12 -f 75/83/13 77/86/13 76/84/13 -f 79/90/14 65/88/14 80/89/14 -f 77/86/15 79/90/15 78/87/15 -f 67/93/16 65/194/16 75/91/16 -f 79/195/16 77/196/16 75/91/16 -f 75/91/16 73/81/16 71/79/16 -f 71/79/16 69/92/16 75/91/16 -f 65/194/16 79/195/16 75/91/16 -f 20/102/16 56/94/16 18/96/16 -f 34/107/16 74/97/16 48/99/16 -f 56/94/16 76/98/16 54/101/16 -f 76/98/16 56/94/16 48/99/16 -f 20/102/16 22/103/16 48/99/16 -f 24/133/16 44/105/16 22/103/16 -f 36/117/16 72/106/16 34/107/16 -f 52/109/16 54/101/16 80/108/16 -f 50/112/16 52/109/16 66/110/16 -f 3/114/16 7/111/16 66/110/16 -f 38/118/16 70/116/16 36/117/16 -f 12/120/16 11/115/16 38/118/16 -f 18/96/16 58/95/16 32/124/16 -f 30/129/16 32/124/16 62/125/16 -f 62/125/16 15/127/16 30/129/16 -f 26/132/16 42/122/16 24/133/16 -f 4/121/16 42/122/16 8/131/16 -f 83/140/17 86/134/17 89/136/17 -f 2/138/18 4/139/18 84/138/18 -f 8/137/18 6/13/18 81/197/18 -f 81/197/18 84/138/18 8/137/18 -f 85/198/19 86/134/19 82/141/19 -f 5/199/17 1/142/17 82/144/17 -f 87/147/18 89/136/18 88/145/18 -f 84/200/16 81/146/16 88/145/16 -f 90/135/20 86/134/20 84/148/20 -f 85/201/20 84/148/20 86/134/20 -f 87/202/21 81/150/21 89/136/21 -f 82/203/21 83/140/21 81/150/21 -f 93/171/22 94/151/22 95/153/22 -f 95/153/23 96/152/23 97/155/23 -f 97/204/24 98/156/24 99/158/24 -f 99/158/25 100/157/25 101/160/25 -f 101/160/26 102/159/26 103/162/26 -f 111/168/5 113/163/5 112/165/5 -f 103/162/27 104/161/27 105/167/27 -f 91/205/3 113/163/3 92/169/3 -f 107/172/28 108/170/28 93/171/28 -f 105/167/29 106/166/29 107/172/29 -f 91/205/1 92/169/1 110/174/1 -f 10/176/17 2/206/17 84/207/17 -f 84/207/17 85/143/17 10/176/17 -f 1/142/17 9/175/17 85/143/17 -f 13/178/17 5/199/17 82/144/17 -f 82/144/17 81/208/17 14/177/17 -f 6/209/17 14/177/17 81/208/17 diff --git a/src/main/resources/assets/hbm/models/turret_spitfire_base.obj b/src/main/resources/assets/hbm/models/turret_spitfire_base.obj deleted file mode 100644 index 43f87177e..000000000 --- a/src/main/resources/assets/hbm/models/turret_spitfire_base.obj +++ /dev/null @@ -1,94 +0,0 @@ -# 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 -vt 0.735344 0.677457 -vt 0.561566 0.677457 -vt 0.561566 0.649076 -vt 0.387788 0.677457 -vt 0.387788 0.649076 -vt 0.214009 0.677457 -vt 0.214009 0.649076 -vt 0.040231 0.677457 -vt 0.040231 0.649076 -vt 0.040231 0.540232 -vt 0.214009 0.540232 -vt 0.214009 0.568613 -vt 0.387787 0.540232 -vt 0.387787 0.568613 -vt 0.040231 0.163111 -vt 0.459769 0.163111 -vt 0.459769 0.336889 -vt 0.561565 0.540231 -vt 0.735344 0.540231 -vt 0.735344 0.568613 -vt 0.561565 0.568613 -vt 0.836889 0.459769 -vt 0.540231 0.336889 -vt 0.663111 0.040231 -vt 0.735344 0.649076 -vt 0.040231 0.568613 -vt 0.336889 0.459769 -vt 0.163111 0.459769 -vt 0.040231 0.336889 -vt 0.163111 0.040231 -vt 0.336889 0.040231 -vt 0.836889 0.040231 -vt 0.959769 0.163111 -vt 0.959769 0.336889 -vt 0.663111 0.459769 -vt 0.540231 0.163111 -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/1 4/2/1 3/3/1 -f 4/2/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 10/10/5 12/11/5 11/12/5 -f 12/11/6 14/13/6 13/14/6 -f 14/15/7 8/16/7 6/17/7 -f 16/18/8 2/19/8 1/20/8 -f 14/13/9 16/18/9 15/21/9 -f 7/22/10 11/23/10 15/24/10 -f 1/25/1 2/1/1 3/3/1 -f 3/3/2 4/2/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 9/26/5 10/10/5 11/12/5 -f 11/12/6 12/11/6 13/14/6 -f 6/17/7 4/27/7 2/28/7 -f 2/28/7 16/29/7 6/17/7 -f 14/15/7 12/30/7 10/31/7 -f 10/31/7 8/16/7 14/15/7 -f 6/17/7 16/29/7 14/15/7 -f 15/21/8 16/18/8 1/20/8 -f 13/14/9 14/13/9 15/21/9 -f 15/24/10 1/32/10 3/33/10 -f 3/33/10 5/34/10 15/24/10 -f 7/22/10 9/35/10 11/23/10 -f 11/23/10 13/36/10 15/24/10 -f 15/24/10 5/34/10 7/22/10 diff --git a/src/main/resources/assets/hbm/models/turret_spitfire_gun.obj b/src/main/resources/assets/hbm/models/turret_spitfire_gun.obj deleted file mode 100644 index c627f8eda..000000000 --- a/src/main/resources/assets/hbm/models/turret_spitfire_gun.obj +++ /dev/null @@ -1,1105 +0,0 @@ -# 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 -v 0.152188 -0.129410 3.232963 -v 0.152706 0.129409 3.232963 -v 0.151137 -0.000000 3.250000 -v -0.151336 -0.129410 3.232963 -v -0.151015 -0.000000 3.250000 -v -0.148109 0.129409 3.232963 -vt 0.864157 0.514072 -vt 0.837312 0.499844 -vt 0.837312 0.414475 -vt 0.513339 0.238965 -vt 0.513339 0.352789 -vt 0.399514 0.352789 -vt 0.427970 0.381245 -vt 0.427970 0.551981 -vt 0.399514 0.011317 -vt 0.513339 0.011317 -vt 0.352808 0.402233 -vt 0.352802 0.419909 -vt 0.011329 0.419791 -vt 0.352795 0.437585 -vt 0.011323 0.437467 -vt 0.352789 0.455261 -vt 0.011317 0.455143 -vt 0.352862 0.243149 -vt 0.352856 0.260825 -vt 0.011384 0.260708 -vt 0.570119 0.740411 -vt 0.570119 0.706264 -vt 0.740855 0.706264 -vt 0.352850 0.278501 -vt 0.011378 0.278384 -vt 0.535972 0.649352 -vt 0.570119 0.649352 -vt 0.352844 0.296177 -vt 0.011371 0.296060 -vt 0.740855 0.615204 -vt 0.740855 0.649352 -vt 0.352838 0.313853 -vt 0.011365 0.313736 -vt 0.352832 0.331529 -vt 0.011359 0.331411 -vt 0.484883 0.381245 -vt 0.352826 0.349205 -vt 0.011353 0.349087 -vt 0.399514 0.580437 -vt 0.484882 0.551981 -vt 0.352820 0.366881 -vt 0.011347 0.366763 -vt 0.775003 0.706264 -vt 0.352814 0.384557 -vt 0.011335 0.402115 -vt 0.011341 0.384439 -vt 0.513339 0.580437 -vt 0.035409 0.115858 -vt 0.035409 0.089723 -vt 0.376881 0.089722 -vt 0.035409 0.063587 -vt 0.376881 0.063587 -vt 0.035409 0.037452 -vt 0.376881 0.037452 -vt 0.035409 0.011317 -vt 0.376881 0.011317 -vt 0.376881 0.220399 -vt 0.035409 0.220398 -vt 0.035409 0.194263 -vt 0.376881 0.194264 -vt 0.035409 0.168128 -vt 0.011317 0.034185 -vt 0.035409 0.141993 -vt 0.376881 0.115858 -vt 0.376881 0.168128 -vt 0.826448 0.089722 -vt 0.541887 0.089723 -vt 0.541887 0.070122 -vt 0.011317 0.164861 -vt 0.011317 0.145260 -vt 0.011317 0.086456 -vt 0.011317 0.217132 -vt 0.011317 0.197530 -vt 0.011317 0.138726 -vt 0.011317 0.119125 -vt 0.011317 0.112591 -vt 0.011317 0.092989 -vt 0.011317 0.060321 -vt 0.011317 0.190996 -vt 0.011317 0.171395 -vt 0.541887 0.128926 -vt 0.535972 0.126476 -vt 0.535972 0.111775 -vt 0.826448 0.109324 -vt 0.541887 0.109324 -vt 0.826448 0.148527 -vt 0.541887 0.148527 -vt 0.826448 0.030918 -vt 0.541887 0.030919 -vt 0.541887 0.011318 -vt 0.826448 0.070121 -vt 0.541887 0.050521 -vt 0.826448 0.128925 -vt 0.826448 0.168128 -vt 0.541887 0.168128 -vt 0.826448 0.050520 -vt 0.466613 0.689464 -vt 0.466613 0.704165 -vt 0.011317 0.704165 -vt 0.535972 0.165678 -vt 0.535972 0.150977 -vt 0.535972 0.048070 -vt 0.535972 0.033369 -vt 0.535972 0.087273 -vt 0.535972 0.072572 -vt 0.535972 0.106874 -vt 0.535972 0.092173 -vt 0.535972 0.146077 -vt 0.535972 0.131376 -vt 0.535972 0.028469 -vt 0.535972 0.067672 -vt 0.735493 0.549322 -vt 0.750194 0.549322 -vt 0.760590 0.574419 -vt 0.466613 0.718866 -vt 0.011317 0.718866 -vt 0.466613 0.674763 -vt 0.011317 0.689464 -vt 0.466613 0.777670 -vt 0.466613 0.792371 -vt 0.011317 0.792371 -vt 0.466613 0.762969 -vt 0.011317 0.777670 -vt 0.466613 0.733567 -vt 0.466613 0.748268 -vt 0.011317 0.748268 -vt 0.011317 0.733567 -vt 0.011317 0.762969 -vt 0.830909 0.486896 -vt 0.830909 0.457017 -vt 0.737716 0.526689 -vt 0.751944 0.499844 -vt 0.851540 0.387630 -vt 0.751944 0.414475 -vt 0.725098 0.400247 -vt 0.535997 0.519951 -vt 0.672586 0.519998 -vt 0.672561 0.592561 -vt 0.758346 0.457017 -vt 0.758346 0.486896 -vt 0.271028 0.860976 -vt 0.271028 0.840289 -vt 0.384852 0.840289 -vt 0.271028 0.815005 -vt 0.271028 0.881664 -vt 0.384852 0.860976 -vt 0.271028 0.906948 -vt 0.384852 0.881664 -vt 0.702440 0.592571 -vt 0.536032 0.417509 -vt 0.672621 0.417556 -vt 0.672596 0.490119 -vt 0.536043 0.387630 -vt 0.672632 0.387677 -vt 0.536007 0.490072 -vt 0.433767 0.891752 -vt 0.384852 0.906948 -vt 0.501956 0.762425 -vt 0.513339 0.762425 -vt 0.513339 0.853484 -vt 0.501956 0.705513 -vt 0.513339 0.705513 -vt 0.501956 0.659983 -vt 0.501956 0.603071 -vt 0.513339 0.603071 -vt 0.501956 0.853484 -vt 0.513339 0.910396 -vt 0.513339 0.659983 -vt 0.513339 0.944543 -vt 0.501956 0.944543 -vt 0.501956 0.910396 -vt 0.797636 0.706264 -vt 0.797636 0.672116 -vt 0.843166 0.672116 -vt 0.797636 0.615204 -vt 0.849082 0.102376 -vt 0.883229 0.056846 -vt 0.883229 0.102376 -vt 0.883229 0.011317 -vt 0.940141 0.011317 -vt 0.756953 0.781265 -vt 0.756953 0.866633 -vt 0.552069 0.866633 -vt 0.552069 0.781265 -vt 0.540687 0.763044 -vt 0.773050 0.767037 -vt 0.768335 0.884854 -vt 0.535972 0.880861 -vt 0.027414 0.918593 -vt 0.027414 0.833225 -vt 0.232297 0.833225 -vt 0.232297 0.918593 -vt 0.243680 0.936814 -vt 0.011317 0.932821 -vt 0.016031 0.815005 -vt 0.248394 0.818997 -vt 0.956990 0.190761 -vt 0.837170 0.220476 -vt 0.786254 0.190762 -vt 0.837244 0.250190 -vt 0.786254 0.250190 -vt 0.837243 0.272823 -vt 0.837905 0.302537 -vt 0.786254 0.302537 -vt 0.956990 0.332251 -vt 0.786254 0.332251 -vt 0.684679 0.960065 -vt 0.692379 0.952364 -vt 0.714817 0.967103 -vt 0.576570 0.933857 -vt 0.566509 0.938025 -vt 0.551419 0.915822 -vt 0.535972 0.364997 -vt 0.535972 0.343217 -vt 0.763620 0.343217 -vt 0.668344 0.986352 -vt 0.673789 0.960065 -vt 0.562342 0.948085 -vt 0.535972 0.943056 -vt 0.535972 0.321438 -vt 0.763620 0.321438 -vt 0.714817 0.926737 -vt 0.692379 0.941475 -vt 0.684679 0.933775 -vt 0.535972 0.953115 -vt 0.566509 0.958146 -vt 0.535972 0.299659 -vt 0.763620 0.299659 -vt 0.666089 0.952364 -vt 0.576570 0.962313 -vt 0.571541 0.988683 -vt 0.535972 0.277880 -vt 0.763620 0.277879 -vt 0.586631 0.958146 -vt 0.590798 0.948085 -vt 0.617168 0.953115 -vt 0.581599 0.988683 -vt 0.535972 0.256100 -vt 0.763620 0.256100 -vt 0.586631 0.938025 -vt 0.608833 0.922934 -vt 0.535972 0.234321 -vt 0.763620 0.234320 -vt 0.886790 0.387630 -vt 0.943703 0.387630 -vt 0.943703 0.403965 -vt 0.535972 0.212542 -vt 0.535972 0.190762 -vt 0.763620 0.190761 -vt 0.763620 0.212541 -vt 0.718666 0.936030 -vt 0.581599 0.907487 -vt 0.017889 0.652129 -vt 0.011317 0.649407 -vt 0.011317 0.633072 -vt 0.659051 0.982503 -vt 0.666089 0.941475 -vt 0.639801 0.957809 -vt 0.673789 0.933775 -vt 0.643651 0.926737 -vt 0.668344 0.907487 -vt 0.017889 0.565012 -vt 0.017889 0.543232 -vt 0.359362 0.543232 -vt 0.017889 0.521453 -vt 0.011317 0.540510 -vt 0.886790 0.469302 -vt 0.943703 0.469302 -vt 0.943703 0.485637 -vt 0.359362 0.521453 -vt 0.017889 0.499673 -vt 0.011317 0.496951 -vt 0.011317 0.480616 -vt 0.886790 0.403965 -vt 0.943703 0.420299 -vt 0.017889 0.608570 -vt 0.011317 0.605848 -vt 0.011317 0.589513 -vt 0.886790 0.436634 -vt 0.886790 0.420299 -vt 0.017889 0.477894 -vt 0.359363 0.477895 -vt 0.011317 0.518730 -vt 0.011317 0.502396 -vt 0.399514 0.630956 -vt 0.411065 0.603071 -vt 0.438949 0.614621 -vt 0.017889 0.630350 -vt 0.359363 0.630349 -vt 0.886790 0.485637 -vt 0.943703 0.501971 -vt 0.011317 0.627627 -vt 0.011317 0.611293 -vt 0.359362 0.608570 -vt 0.017889 0.586791 -vt 0.359362 0.565012 -vt 0.911329 0.630605 -vt 0.963909 0.630605 -vt 0.963909 0.652384 -vt 0.359362 0.586791 -vt 0.011317 0.584068 -vt 0.011317 0.567734 -vt 0.886790 0.452968 -vt 0.943703 0.452968 -vt 0.011317 0.562289 -vt 0.943703 0.436634 -vt 0.886790 0.501971 -vt 0.943703 0.518306 -vt 0.874918 0.906220 -vt 0.874918 0.848181 -vt 0.931830 0.848181 -vt 0.852595 0.910685 -vt 0.852595 0.852646 -vt 0.795683 0.910685 -vt 0.795683 0.852646 -vt 0.931830 0.906220 -vt 0.954153 0.852646 -vt 0.874918 0.821083 -vt 0.874918 0.763044 -vt 0.931830 0.763044 -vt 0.852595 0.825548 -vt 0.852595 0.767509 -vt 0.795683 0.825548 -vt 0.795683 0.767509 -vt 0.931830 0.821083 -vt 0.954153 0.767509 -vt 0.906385 0.302537 -vt 0.906028 0.272823 -vt 0.956990 0.272823 -vt 0.906267 0.220476 -vt 0.956990 0.220476 -vt 0.956990 0.250190 -vt 0.854850 0.289035 -vt 0.848183 0.272823 -vt 0.871287 0.296180 -vt 0.887044 0.289565 -vt 0.895287 0.272823 -vt 0.895287 0.250190 -vt 0.906028 0.250190 -vt 0.888119 0.233442 -vt 0.871427 0.226756 -vt 0.855080 0.234214 -vt 0.848183 0.250190 -vt 0.864157 0.400247 -vt 0.399514 0.238965 -vt 0.011390 0.243032 -vt 0.740855 0.740411 -vt 0.535972 0.706264 -vt 0.570119 0.615204 -vt 0.775003 0.649352 -vt 0.011317 0.014584 -vt 0.376881 0.141993 -vt 0.011317 0.066854 -vt 0.011317 0.040719 -vt 0.826448 0.011317 -vt 0.535972 0.013768 -vt 0.535972 0.052971 -vt 0.750194 0.584814 -vt 0.735493 0.584814 -vt 0.725098 0.574419 -vt 0.725098 0.559718 -vt 0.760590 0.559718 -vt 0.011317 0.674762 -vt 0.851540 0.526689 -vt 0.737716 0.387630 -vt 0.725098 0.514072 -vt 0.535972 0.592514 -vt 0.384852 0.815005 -vt 0.702465 0.520008 -vt 0.399179 0.866740 -vt 0.419440 0.870919 -vt 0.888695 0.615204 -vt 0.888695 0.672116 -vt 0.940141 0.102376 -vt 0.768335 0.763044 -vt 0.773050 0.880861 -vt 0.540687 0.884854 -vt 0.535972 0.767037 -vt 0.016031 0.936814 -vt 0.011317 0.818997 -vt 0.243680 0.815005 -vt 0.248395 0.932821 -vt 0.786254 0.220476 -vt 0.786254 0.272823 -vt 0.956990 0.302537 -vt 0.699416 0.982503 -vt 0.571541 0.907487 -vt 0.763620 0.364997 -vt 0.690123 0.986352 -vt 0.544307 0.922934 -vt 0.699417 0.911337 -vt 0.544307 0.973236 -vt 0.551419 0.980349 -vt 0.608833 0.973236 -vt 0.601721 0.980349 -vt 0.617168 0.943056 -vt 0.718666 0.957809 -vt 0.601721 0.915822 -vt 0.643651 0.967102 -vt 0.639801 0.936030 -vt 0.659051 0.911337 -vt 0.690123 0.907487 -vt 0.011317 0.524175 -vt 0.359362 0.499674 -vt 0.438949 0.630956 -vt 0.427399 0.642506 -vt 0.411065 0.642506 -vt 0.399514 0.614621 -vt 0.427399 0.603071 -vt 0.359363 0.652128 -vt 0.948508 0.667784 -vt 0.926729 0.667784 -vt 0.911329 0.652384 -vt 0.926729 0.615204 -vt 0.948508 0.615204 -vt 0.011317 0.545955 -vt 0.886790 0.518306 -vt 0.954153 0.910685 -vt 0.954153 0.825548 -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/1 92/2/1 91/3/1 -f 2/4/2 1/5/2 5/6/2 -f 5/6/3 36/7/3 35/8/3 -f 8/9/4 4/10/4 2/4/4 -f 12/11/5 14/12/5 13/13/5 -f 14/12/6 16/14/6 15/15/6 -f 16/14/7 18/16/7 17/17/7 -f 18/18/8 20/19/8 19/20/8 -f 36/21/9 38/22/9 39/23/9 -f 20/19/10 22/24/10 21/25/10 -f 9/26/2 37/27/2 38/22/2 -f 22/24/11 24/28/11 23/29/11 -f 10/30/12 40/31/12 37/27/12 -f 24/28/13 26/32/13 25/33/13 -f 40/31/3 39/23/3 38/22/3 -f 26/32/14 28/34/14 27/35/14 -f 1/5/3 9/36/3 36/7/3 -f 28/34/15 30/37/15 29/38/15 -f 7/39/3 35/8/3 10/40/3 -f 30/37/16 32/41/16 31/42/16 -f 35/43/17 39/23/17 40/31/17 -f 34/44/18 12/11/18 11/45/18 -f 32/41/19 34/44/19 33/46/19 -f 3/47/3 10/40/3 9/36/3 -f 42/48/20 44/49/20 43/50/20 -f 44/49/21 46/51/21 45/52/21 -f 46/51/22 48/53/22 47/54/22 -f 48/53/23 50/55/23 49/56/23 -f 49/57/24 50/58/24 52/59/24 -f 51/60/25 52/59/25 54/61/25 -f 50/55/26 48/53/26 60/62/26 -f 56/63/27 42/48/27 41/64/27 -f 53/65/28 54/61/28 56/63/28 -f 58/66/20 66/67/20 65/68/20 -f 54/61/29 63/69/29 64/70/29 -f 46/51/30 44/49/30 57/71/30 -f 50/58/31 61/72/31 62/73/31 -f 56/63/32 64/74/32 58/75/32 -f 42/48/33 58/76/33 57/77/33 -f 48/53/34 46/51/34 59/78/34 -f 52/59/35 62/79/35 63/80/35 -f 71/81/2 79/82/2 80/83/2 -f 64/84/27 72/85/27 66/67/27 -f 62/86/25 70/87/25 71/81/25 -f 60/88/23 68/89/23 69/90/23 -f 57/91/21 65/68/21 67/92/21 -f 63/93/28 71/81/28 72/85/28 -f 61/94/24 69/95/24 70/87/24 -f 59/96/22 67/92/22 68/89/22 -f 86/97/21 87/98/21 79/99/21 -f 69/95/2 77/100/2 78/101/2 -f 67/92/2 75/102/2 76/103/2 -f 66/67/2 74/104/2 73/105/2 -f 72/85/2 80/106/2 74/107/2 -f 70/87/2 78/108/2 79/109/2 -f 69/90/2 68/89/2 76/110/2 -f 67/92/2 65/68/2 73/111/2 -f 86/112/2 85/113/2 83/114/2 -f 87/98/22 88/115/22 80/116/22 -f 85/117/20 86/97/20 78/118/20 -f 84/119/27 85/120/27 77/121/27 -f 83/122/28 84/119/28 76/123/28 -f 82/124/24 81/125/24 73/126/24 -f 88/115/23 82/124/23 74/127/23 -f 81/125/25 83/122/25 75/128/25 -f 92/2/17 96/129/17 95/130/17 -f 3/131/36 90/132/36 92/2/36 -f 8/133/37 91/3/37 89/134/37 -f 4/135/38 89/134/38 90/132/38 -f 94/136/3 108/137/3 110/138/3 -f 90/132/17 89/134/17 93/139/17 -f 90/132/17 94/140/17 96/129/17 -f 91/3/17 95/130/17 93/139/17 -f 98/141/39 100/142/39 99/143/39 -f 99/143/40 100/142/40 102/144/40 -f 106/145/41 98/141/41 97/146/41 -f 104/147/42 106/145/42 105/148/42 -f 109/149/17 110/138/17 108/137/17 -f 95/150/4 109/151/4 107/152/4 -f 96/153/9 110/154/9 109/151/9 -f 93/155/12 107/152/12 108/137/12 -f 101/156/17 103/157/17 105/148/17 -f 114/158/12 113/159/12 111/160/12 -f 118/161/17 117/162/17 113/159/17 -f 120/163/43 122/164/43 121/165/43 -f 112/166/2 111/160/2 115/167/2 -f 118/161/9 120/163/9 119/168/9 -f 121/169/2 122/170/2 116/171/2 -f 121/172/3 115/173/3 119/174/3 -f 119/174/3 115/173/3 111/175/3 -f 122/176/4 120/177/4 116/178/4 -f 120/177/4 118/179/4 114/180/4 -f 124/181/12 125/182/12 126/183/12 -f 124/181/44 123/184/44 2/185/44 -f 125/182/45 124/181/45 4/186/45 -f 126/183/46 125/182/46 3/187/46 -f 123/184/47 126/183/47 1/188/47 -f 128/189/9 129/190/9 130/191/9 -f 128/189/48 127/192/48 8/193/48 -f 129/190/49 128/189/49 6/194/49 -f 130/191/50 129/190/50 5/195/50 -f 127/192/51 130/191/51 7/196/51 -f 132/197/52 232/198/52 131/199/52 -f 232/198/53 233/200/53 135/201/53 -f 233/202/54 234/203/54 137/204/54 -f 234/203/55 140/205/55 139/206/55 -f 176/207/56 175/208/56 155/209/56 -f 170/210/57 169/211/57 162/212/57 -f 152/213/20 154/214/20 153/215/20 -f 159/216/58 177/217/58 176/207/58 -f 169/211/59 168/218/59 164/219/59 -f 154/214/21 156/220/21 155/221/21 -f 153/222/60 174/223/60 173/224/60 -f 164/225/61 168/218/61 167/226/61 -f 156/220/22 158/227/22 157/228/22 -f 176/207/17 178/229/17 174/223/17 -f 167/226/62 149/230/62 152/231/62 -f 158/227/23 160/232/23 159/233/23 -f 150/234/63 172/235/63 156/236/63 -f 152/237/64 149/230/64 150/234/64 -f 160/232/24 162/238/24 161/239/24 -f 172/235/65 171/240/65 158/241/65 -f 168/218/2 170/210/2 149/230/2 -f 162/238/25 164/242/25 163/243/25 -f 201/244/20 209/245/20 208/246/20 -f 166/247/27 152/248/27 151/249/27 -f 164/242/28 166/247/28 165/250/28 -f 175/208/66 174/223/66 153/251/66 -f 171/240/67 170/210/67 160/252/67 -f 192/253/2 201/254/2 202/255/2 -f 178/229/68 177/217/68 159/256/68 -f 179/257/69 178/229/69 161/258/69 -f 180/259/70 179/257/70 163/260/70 -f 173/224/71 180/259/71 165/261/71 -f 184/262/20 186/263/20 185/264/20 -f 188/265/2 186/263/2 181/266/2 -f 181/267/25 212/268/25 211/269/25 -f 186/263/21 188/265/21 187/270/21 -f 190/271/2 200/272/2 201/273/2 -f 202/274/21 208/246/21 207/275/21 -f 187/270/22 188/265/22 190/271/22 -f 196/276/2 203/277/2 204/278/2 -f 204/279/22 203/280/22 207/275/22 -f 190/271/23 192/281/23 191/282/23 -f 188/265/2 199/283/2 200/284/2 -f 207/285/2 209/286/2 211/287/2 -f 192/253/24 194/288/24 193/289/24 -f 199/290/28 211/269/28 210/291/28 -f 194/288/2 202/292/2 203/293/2 -f 194/288/25 196/276/25 195/294/25 -f 198/295/27 184/262/27 183/296/27 -f 189/297/17 195/298/17 197/299/17 -f 196/276/28 198/295/28 197/300/28 -f 198/295/2 204/301/2 182/302/2 -f 182/303/24 205/304/24 212/268/24 -f 186/263/2 184/262/2 182/305/2 -f 204/279/23 206/306/23 205/304/23 -f 200/307/27 210/291/27 209/308/27 -f 216/309/72 215/310/72 213/311/72 -f 216/309/17 220/312/17 219/313/17 -f 218/314/73 217/315/73 219/313/73 -f 214/316/2 213/311/2 217/317/2 -f 224/318/72 223/319/72 221/320/72 -f 224/318/17 228/321/17 227/322/17 -f 226/323/73 225/324/73 227/322/73 -f 222/325/2 221/320/2 225/326/2 -f 230/327/54 231/328/54 136/329/54 -f 229/330/53 134/331/53 136/332/53 -f 144/333/54 234/203/54 147/334/54 -f 233/202/54 147/334/54 234/203/54 -f 145/335/54 234/203/54 144/333/54 -f 230/327/54 234/203/54 145/335/54 -f 146/336/54 230/327/54 145/335/54 -f 146/336/54 148/337/54 230/327/54 -f 231/328/54 230/327/54 148/337/54 -f 148/338/53 229/330/53 231/339/53 -f 141/340/53 229/330/53 148/338/53 -f 142/341/53 229/330/53 141/340/53 -f 229/330/53 142/341/53 232/198/53 -f 143/342/53 232/198/53 142/341/53 -f 143/342/53 147/343/53 232/198/53 -f 233/200/53 232/198/53 147/343/53 -f 8/344/1 7/1/1 91/3/1 -f 6/345/2 2/4/2 5/6/2 -f 7/39/3 5/6/3 35/8/3 -f 6/345/4 8/9/4 2/4/4 -f 11/45/5 12/11/5 13/13/5 -f 13/13/6 14/12/6 15/15/6 -f 15/15/7 16/14/7 17/17/7 -f 17/346/8 18/18/8 19/20/8 -f 35/347/9 36/21/9 39/23/9 -f 19/20/10 20/19/10 21/25/10 -f 36/348/2 9/26/2 38/22/2 -f 21/25/11 22/24/11 23/29/11 -f 9/349/12 10/30/12 37/27/12 -f 23/29/13 24/28/13 25/33/13 -f 37/27/3 40/31/3 38/22/3 -f 25/33/14 26/32/14 27/35/14 -f 5/6/3 1/5/3 36/7/3 -f 27/35/15 28/34/15 29/38/15 -f 3/47/3 7/39/3 10/40/3 -f 29/38/16 30/37/16 31/42/16 -f 10/350/17 35/43/17 40/31/17 -f 33/46/18 34/44/18 11/45/18 -f 31/42/19 32/41/19 33/46/19 -f 1/5/3 3/47/3 9/36/3 -f 41/64/20 42/48/20 43/50/20 -f 43/50/21 44/49/21 45/52/21 -f 45/52/22 46/51/22 47/54/22 -f 47/54/23 48/53/23 49/56/23 -f 51/60/24 49/57/24 52/59/24 -f 53/65/25 51/60/25 54/61/25 -f 61/351/26 50/55/26 60/62/26 -f 55/352/27 56/63/27 41/64/27 -f 55/352/28 53/65/28 56/63/28 -f 57/91/20 58/66/20 65/68/20 -f 56/63/29 54/61/29 64/70/29 -f 59/353/30 46/51/30 57/71/30 -f 52/59/31 50/58/31 62/73/31 -f 42/48/32 56/63/32 58/75/32 -f 44/49/33 42/48/33 57/77/33 -f 60/354/34 48/53/34 59/78/34 -f 54/61/35 52/59/35 63/80/35 -f 72/85/2 71/81/2 80/83/2 -f 58/66/27 64/84/27 66/67/27 -f 63/93/25 62/86/25 71/81/25 -f 61/355/23 60/88/23 69/90/23 -f 59/96/21 57/91/21 67/92/21 -f 64/84/28 63/93/28 72/85/28 -f 62/86/24 61/94/24 70/87/24 -f 60/88/22 59/96/22 68/89/22 -f 78/118/21 86/97/21 79/99/21 -f 70/87/2 69/95/2 78/101/2 -f 68/89/2 67/92/2 76/103/2 -f 65/68/2 66/67/2 73/105/2 -f 66/67/2 72/85/2 74/107/2 -f 71/81/2 70/87/2 79/109/2 -f 77/356/2 69/90/2 76/110/2 -f 75/357/2 67/92/2 73/111/2 -f 83/114/2 81/358/2 82/359/2 -f 82/359/2 88/360/2 83/114/2 -f 87/361/2 86/112/2 83/114/2 -f 85/113/2 84/362/2 83/114/2 -f 83/114/2 88/360/2 87/361/2 -f 79/99/22 87/98/22 80/116/22 -f 77/363/20 85/117/20 78/118/20 -f 76/123/27 84/119/27 77/121/27 -f 75/128/28 83/122/28 76/123/28 -f 74/127/24 82/124/24 73/126/24 -f 80/116/23 88/115/23 74/127/23 -f 73/126/25 81/125/25 75/128/25 -f 91/3/17 92/2/17 95/130/17 -f 7/364/36 3/131/36 92/2/36 -f 4/365/37 8/133/37 89/134/37 -f 3/366/38 4/135/38 90/132/38 -f 96/367/3 94/136/3 110/138/3 -f 94/140/17 90/132/17 93/139/17 -f 92/2/17 90/132/17 96/129/17 -f 89/134/17 91/3/17 93/139/17 -f 97/146/39 98/141/39 99/143/39 -f 101/368/40 99/143/40 102/144/40 -f 105/148/41 106/145/41 97/146/41 -f 103/157/42 104/147/42 105/148/42 -f 107/369/17 109/149/17 108/137/17 -f 93/155/4 95/150/4 107/152/4 -f 95/150/9 96/153/9 109/151/9 -f 94/136/12 93/155/12 108/137/12 -f 105/148/17 97/370/17 99/371/17 -f 99/371/17 101/156/17 105/148/17 -f 112/166/12 114/158/12 111/160/12 -f 114/158/17 118/161/17 113/159/17 -f 119/168/43 120/163/43 121/165/43 -f 116/171/2 112/166/2 115/167/2 -f 117/162/9 118/161/9 119/168/9 -f 115/167/2 121/169/2 116/171/2 -f 111/175/3 113/372/3 119/174/3 -f 117/373/3 119/174/3 113/372/3 -f 114/180/4 112/374/4 120/177/4 -f 116/178/4 120/177/4 112/374/4 -f 123/184/12 124/181/12 126/183/12 -f 4/375/44 124/181/44 2/185/44 -f 3/376/45 125/182/45 4/186/45 -f 1/377/46 126/183/46 3/187/46 -f 2/378/47 123/184/47 1/188/47 -f 127/192/9 128/189/9 130/191/9 -f 6/379/48 128/189/48 8/193/48 -f 5/380/49 129/190/49 6/194/49 -f 7/381/50 130/191/50 5/195/50 -f 8/382/51 127/192/51 7/196/51 -f 133/383/52 131/199/52 232/198/52 -f 132/197/52 134/331/52 229/330/52 -f 229/330/52 232/198/52 132/197/52 -f 133/383/53 232/198/53 135/201/53 -f 135/384/54 233/202/54 137/204/54 -f 139/206/55 137/204/55 234/203/55 -f 234/203/55 230/327/55 140/205/55 -f 138/385/55 140/205/55 230/327/55 -f 157/386/56 176/207/56 155/209/56 -f 160/387/57 170/210/57 162/212/57 -f 151/388/20 152/213/20 153/215/20 -f 157/389/58 159/216/58 176/207/58 -f 162/390/59 169/211/59 164/219/59 -f 153/215/21 154/214/21 155/221/21 -f 151/391/60 153/222/60 173/224/60 -f 166/392/61 164/225/61 167/226/61 -f 155/221/22 156/220/22 157/228/22 -f 180/259/17 173/224/17 174/223/17 -f 174/223/17 175/208/17 176/207/17 -f 176/207/17 177/217/17 178/229/17 -f 178/229/17 179/257/17 180/259/17 -f 180/259/17 174/223/17 178/229/17 -f 166/393/62 167/226/62 152/231/62 -f 157/228/23 158/227/23 159/233/23 -f 154/394/63 150/234/63 156/236/63 -f 154/395/64 152/237/64 150/234/64 -f 159/233/24 160/232/24 161/239/24 -f 156/396/65 172/235/65 158/241/65 -f 172/235/2 150/234/2 149/230/2 -f 149/230/2 167/226/2 168/218/2 -f 168/218/2 169/211/2 170/210/2 -f 170/210/2 171/240/2 172/235/2 -f 172/235/2 149/230/2 170/210/2 -f 161/239/25 162/238/25 163/243/25 -f 202/274/20 201/244/20 208/246/20 -f 165/250/27 166/247/27 151/249/27 -f 163/243/28 164/242/28 165/250/28 -f 155/397/66 175/208/66 153/251/66 -f 158/398/67 171/240/67 160/252/67 -f 194/288/2 192/253/2 202/255/2 -f 161/399/68 178/229/68 159/256/68 -f 163/400/69 179/257/69 161/258/69 -f 165/401/70 180/259/70 163/260/70 -f 151/402/71 173/224/71 165/261/71 -f 183/296/20 184/262/20 185/264/20 -f 199/403/2 188/265/2 181/266/2 -f 199/290/25 181/267/25 211/269/25 -f 185/264/21 186/263/21 187/270/21 -f 192/281/2 190/271/2 201/273/2 -f 203/280/21 202/274/21 207/275/21 -f 189/404/22 187/270/22 190/271/22 -f 198/295/2 196/276/2 204/278/2 -f 206/306/22 204/279/22 207/275/22 -f 189/404/23 190/271/23 191/282/23 -f 190/271/2 188/265/2 200/284/2 -f 211/287/2 212/405/2 207/285/2 -f 205/406/2 206/407/2 207/285/2 -f 207/285/2 208/408/2 209/286/2 -f 209/286/2 210/409/2 211/287/2 -f 212/405/2 205/406/2 207/285/2 -f 191/410/24 192/253/24 193/289/24 -f 200/307/28 199/290/28 210/291/28 -f 196/276/2 194/288/2 203/293/2 -f 193/289/25 194/288/25 195/294/25 -f 197/300/27 198/295/27 183/296/27 -f 197/299/17 183/411/17 185/412/17 -f 185/412/17 187/413/17 197/299/17 -f 189/297/17 191/414/17 193/415/17 -f 193/415/17 195/298/17 189/297/17 -f 197/299/17 187/413/17 189/297/17 -f 195/294/28 196/276/28 197/300/28 -f 184/262/2 198/295/2 182/302/2 -f 181/267/24 182/303/24 212/268/24 -f 181/416/2 186/263/2 182/305/2 -f 182/303/23 204/279/23 205/304/23 -f 201/417/27 200/307/27 209/308/27 -f 214/316/72 216/309/72 213/311/72 -f 215/310/17 216/309/17 219/313/17 -f 220/312/73 218/314/73 219/313/73 -f 218/418/2 214/316/2 217/317/2 -f 222/325/72 224/318/72 221/320/72 -f 223/319/17 224/318/17 227/322/17 -f 228/321/73 226/323/73 227/322/73 -f 226/419/2 222/325/2 225/326/2 -f 138/385/54 230/327/54 136/329/54 -f 231/339/53 229/330/53 136/332/53 diff --git a/src/main/resources/assets/hbm/models/turret_spitfire_rotor.obj b/src/main/resources/assets/hbm/models/turret_spitfire_rotor.obj deleted file mode 100644 index 7c315afb0..000000000 --- a/src/main/resources/assets/hbm/models/turret_spitfire_rotor.obj +++ /dev/null @@ -1,468 +0,0 @@ -# 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.500000 0.650000 0.625000 -vt 0.934617 0.376312 -vt 0.855934 0.393798 -vt 0.838448 0.315114 -vt 0.691617 0.711333 -vt 0.611014 0.671031 -vt 0.772220 0.711333 -vt 0.305324 0.501217 -vt 0.466530 0.501217 -vt 0.466530 0.531443 -vt 0.565404 0.581820 -vt 0.525102 0.581820 -vt 0.525102 0.501217 -vt 0.426229 0.210643 -vt 0.265022 0.250945 -vt 0.265022 0.009135 -vt 0.305324 0.911922 -vt 0.305324 0.932073 -vt 0.265022 0.932073 -vt 0.466530 0.911922 -vt 0.466530 0.932073 -vt 0.627737 0.911922 -vt 0.627737 0.932073 -vt 0.788943 0.911922 -vt 0.788943 0.932073 -vt 0.829244 0.911922 -vt 0.829244 0.932073 -vt 0.587435 0.049437 -vt 0.587435 0.210643 -vt 0.466530 0.732951 -vt 0.305324 0.732951 -vt 0.305324 0.571745 -vt 0.246664 0.300452 -vt 0.207569 0.300496 -vt 0.207445 0.189919 -vt 0.525102 0.776413 -vt 0.525102 0.695810 -vt 0.565404 0.695810 -vt 0.772220 0.872540 -vt 0.691617 0.791936 -vt 0.535749 0.368957 -vt 0.421759 0.482947 -vt 0.421759 0.368957 -vt 0.246752 0.378642 -vt 0.207657 0.378686 -vt 0.364763 0.425952 -vt 0.279271 0.397454 -vt 0.364763 0.311961 -vt 0.207264 0.028727 -vt 0.246359 0.028683 -vt 0.265022 0.383205 -vt 0.956474 0.288886 -vt 0.952103 0.454996 -vt 0.246337 0.009135 -vt 0.009135 0.009135 -vt 0.204732 0.501489 -vt 0.164431 0.501489 -vt 0.164431 0.420886 -vt 0.050884 0.319118 -vt 0.009135 0.319118 -vt 0.009135 0.201036 -vt 0.164431 0.696082 -vt 0.164431 0.615479 -vt 0.204732 0.615479 -vt 0.794735 0.489967 -vt 0.807213 0.170341 -vt 0.646007 0.170342 -vt 0.726610 0.089738 -vt 0.050884 0.402616 -vt 0.009135 0.402616 -vt 0.646007 0.089738 -vt 0.605705 0.009135 -vt 0.009135 0.830061 -vt 0.170342 0.830061 -vt 0.170342 0.860287 -vt 0.009135 0.028902 -vt 0.050884 0.028902 -vt 0.794735 0.304185 -vt 0.952103 0.269215 -vt 0.305324 0.531443 -vt 0.239123 0.799636 -vt 0.239123 0.862761 -vt 0.223003 0.862761 -vt 0.239123 0.736511 -vt 0.223003 0.799636 -vt 0.239123 0.673386 -vt 0.223003 0.736511 -vt 0.223003 0.673386 -vt 0.223003 0.610261 -vt 0.239123 0.547136 -vt 0.239123 0.610260 -vt 0.239123 0.484011 -vt 0.223003 0.547136 -vt 0.223003 0.484011 -vt 0.223003 0.420886 -vt 0.990865 0.323923 -vt 0.974744 0.323923 -vt 0.974744 0.269215 -vt 0.990865 0.378632 -vt 0.974744 0.378632 -vt 0.990865 0.433340 -vt 0.974744 0.433340 -vt 0.990865 0.488048 -vt 0.974744 0.488048 -vt 0.990865 0.542757 -vt 0.974744 0.542757 -vt 0.990865 0.597465 -vt 0.974744 0.597465 -vt 0.990865 0.652173 -vt 0.974744 0.652173 -vt 0.990865 0.706882 -vt 0.974744 0.706882 -vt 0.164431 0.714352 -vt 0.180551 0.714352 -vt 0.180551 0.746594 -vt 0.079960 0.773363 -vt 0.102758 0.750564 -vt 0.146161 0.783869 -vt 0.069453 0.707161 -vt 0.048517 0.656617 -vt 0.041531 0.723282 -vt 0.009135 0.602377 -vt 0.041376 0.602377 -vt 0.017375 0.539792 -vt 0.048517 0.548137 -vt 0.069453 0.497593 -vt 0.102757 0.454190 -vt 0.041531 0.481472 -vt 0.079959 0.431392 -vt 0.146160 0.420886 -vt 0.731644 0.606959 -vt 0.688206 0.652761 -vt 0.667908 0.627712 -vt 0.705555 0.588016 -vt 0.731644 0.539929 -vt 0.761748 0.551474 -vt 0.744399 0.486729 -vt 0.774793 0.426986 -vt 0.776465 0.490089 -vt 0.756846 0.366466 -vt 0.742950 0.432039 -vt 0.727396 0.379589 -vt 0.698796 0.332951 -vt 0.723846 0.312653 -vt 0.659101 0.295305 -vt 0.611014 0.269215 -vt 0.678044 0.269215 -vt 0.265022 0.822437 -vt 0.426229 0.822437 -vt 0.426229 0.893652 -vt 0.696384 0.009135 -vt 0.611014 0.761710 -vt 0.611014 0.701258 -vt 0.426229 0.751221 -vt 0.565404 0.501217 -vt 0.426229 0.009135 -vt 0.426229 0.049437 -vt 0.426229 0.250945 -vt 0.265022 0.911922 -vt 0.466530 0.571745 -vt 0.246540 0.189875 -vt 0.565404 0.776413 -vt 0.852824 0.791936 -vt 0.852824 0.872540 -vt 0.592744 0.425952 -vt 0.535749 0.482947 -vt 0.379012 0.269215 -vt 0.393261 0.283464 -vt 0.204732 0.420886 -vt 0.050884 0.201036 -vt 0.204732 0.696082 -vt 0.890904 0.551165 -vt 0.812220 0.568650 -vt 0.807213 0.250945 -vt 0.726610 0.250945 -vt 0.009135 0.860287 -vt 0.799106 0.323856 -vt 0.506832 0.571745 -vt 0.265022 0.571745 -vt 0.265022 0.531443 -vt 0.506832 0.531443 -vt 0.239123 0.420886 -vt 0.990865 0.269215 -vt 0.164431 0.746594 -vt 0.130040 0.811791 -vt 0.017375 0.664962 -vt 0.265022 0.893652 -vt 0.635931 0.009135 -vt 0.726610 0.009135 -vt 0.611014 0.791936 -vt 0.265022 0.751221 -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 -s off -f 39/1/1 41/2/1 45/3/1 -f 23/4/1 6/5/1 24/6/1 -f 85/7/2 83/8/2 29/9/2 -f 25/10/3 28/11/3 31/12/3 -f 13/13/4 5/14/4 1/15/4 -f 10/16/3 9/17/3 3/18/3 -f 12/19/1 11/20/1 9/17/1 -f 16/21/3 15/22/3 11/20/3 -f 14/23/5 13/24/5 15/22/5 -f 14/23/3 8/25/3 7/26/3 -f 11/27/4 15/28/4 13/13/4 -f 16/29/2 12/30/2 10/31/2 -f 20/32/6 17/33/6 24/34/6 -f 22/35/3 21/36/3 18/37/3 -f 18/38/1 25/39/1 24/6/1 -f 21/40/5 27/41/5 28/42/5 -f 25/10/7 18/37/7 21/36/7 -f 22/43/2 19/44/2 17/33/2 -f 26/45/5 27/41/5 30/46/5 -f 31/47/5 28/42/5 26/45/5 -f 24/34/8 6/48/8 30/49/8 -f 31/47/5 30/46/5 5/50/5 -f 39/1/1 32/51/1 40/52/1 -f 5/53/9 6/48/9 1/54/9 -f 41/55/3 44/56/3 47/57/3 -f 36/58/6 33/59/6 40/60/6 -f 38/61/3 37/62/3 34/63/3 -f 34/64/1 41/2/1 40/52/1 -f 37/65/5 43/66/5 44/67/5 -f 41/55/7 34/63/7 37/62/7 -f 38/68/2 35/69/2 33/59/2 -f 42/70/5 43/66/5 46/71/5 -f 46/72/2 6/73/2 82/74/2 -f 40/60/8 32/75/8 46/76/8 -f 45/3/1 3/77/1 1/78/1 -f 47/79/2 29/9/2 10/31/2 -f 57/80/10 56/81/10 51/82/10 -f 58/83/11 57/80/11 50/84/11 -f 59/85/12 58/83/12 49/86/12 -f 59/85/13 48/87/13 63/88/13 -f 53/89/14 52/90/14 63/88/14 -f 54/91/15 53/89/15 62/92/15 -f 54/91/16 61/93/16 60/94/16 -f 69/95/17 78/96/17 77/97/17 -f 70/98/18 79/99/18 78/96/18 -f 71/100/19 80/101/19 79/99/19 -f 72/102/20 81/103/20 80/101/20 -f 64/104/21 73/105/21 81/103/21 -f 65/106/22 74/107/22 73/105/22 -f 66/108/23 75/109/23 74/107/23 -f 67/110/24 76/111/24 75/109/24 -f 76/112/6 67/113/6 51/114/6 -f 57/115/1 75/116/1 76/117/1 -f 74/118/1 75/116/1 57/115/1 -f 73/119/1 74/118/1 58/120/1 -f 52/121/1 81/122/1 73/119/1 -f 53/123/1 80/124/1 81/122/1 -f 79/125/1 80/124/1 53/123/1 -f 78/126/1 79/125/1 54/127/1 -f 78/126/1 55/128/1 77/129/1 -f 50/130/5 51/131/5 67/132/5 -f 50/130/5 66/133/5 65/134/5 -f 49/135/5 65/134/5 64/136/5 -f 63/137/5 48/138/5 64/136/5 -f 62/139/5 63/137/5 72/140/5 -f 62/139/5 71/141/5 70/142/5 -f 61/143/5 70/142/5 69/144/5 -f 69/144/5 68/145/5 60/146/5 -f 87/147/25 86/148/25 83/149/25 -f 85/150/5 44/67/5 42/70/5 -f 83/151/1 82/152/1 23/4/1 -f 82/153/26 86/148/26 87/147/26 -f 32/51/1 39/1/1 45/3/1 -f 47/79/2 85/7/2 29/9/2 -f 29/154/3 25/10/3 31/12/3 -f 1/15/4 3/155/4 9/156/4 -f 9/156/4 13/13/4 1/15/4 -f 7/157/4 5/14/4 13/13/4 -f 4/158/3 10/16/3 3/18/3 -f 10/16/1 12/19/1 9/17/1 -f 12/19/3 16/21/3 11/20/3 -f 16/21/5 14/23/5 15/22/5 -f 13/24/3 14/23/3 7/26/3 -f 9/156/4 11/27/4 13/13/4 -f 14/159/2 16/29/2 10/31/2 -f 27/160/6 20/32/6 24/34/6 -f 19/161/3 22/35/3 18/37/3 -f 24/6/1 17/162/1 18/38/1 -f 19/163/1 18/38/1 17/162/1 -f 25/39/1 23/4/1 24/6/1 -f 26/45/5 28/42/5 27/41/5 -f 21/40/5 22/164/5 20/165/5 -f 20/165/5 27/41/5 21/40/5 -f 28/11/7 25/10/7 21/36/7 -f 20/32/2 22/43/2 17/33/2 -f 30/46/5 31/47/5 26/45/5 -f 27/160/8 24/34/8 30/49/8 -f 5/50/5 7/166/5 31/47/5 -f 8/167/5 31/47/5 7/166/5 -f 32/75/9 1/54/9 46/76/9 -f 5/53/9 30/49/9 6/48/9 -f 6/48/9 46/76/9 1/54/9 -f 45/168/3 41/55/3 47/57/3 -f 43/169/6 36/58/6 40/60/6 -f 35/170/3 38/61/3 34/63/3 -f 40/52/1 33/171/1 34/64/1 -f 35/172/1 34/64/1 33/171/1 -f 41/2/1 39/1/1 40/52/1 -f 42/70/5 44/67/5 43/66/5 -f 37/65/5 38/173/5 36/174/5 -f 36/174/5 43/66/5 37/65/5 -f 44/56/7 41/55/7 37/62/7 -f 36/58/2 38/68/2 33/59/2 -f 84/175/2 46/72/2 82/74/2 -f 43/169/8 40/60/8 46/76/8 -f 1/78/1 32/51/1 45/3/1 -f 45/3/1 4/176/1 3/77/1 -f 8/177/2 14/159/2 29/9/2 -f 10/31/2 4/178/2 45/179/2 -f 45/179/2 47/79/2 10/31/2 -f 29/9/2 31/180/2 8/177/2 -f 14/159/2 10/31/2 29/9/2 -f 50/84/10 57/80/10 51/82/10 -f 49/86/11 58/83/11 50/84/11 -f 48/87/12 59/85/12 49/86/12 -f 52/90/13 59/85/13 63/88/13 -f 62/92/14 53/89/14 63/88/14 -f 61/93/15 54/91/15 62/92/15 -f 55/181/16 54/91/16 60/94/16 -f 68/182/17 69/95/17 77/97/17 -f 69/95/18 70/98/18 78/96/18 -f 70/98/19 71/100/19 79/99/19 -f 71/100/20 72/102/20 80/101/20 -f 72/102/21 64/104/21 81/103/21 -f 64/104/22 65/106/22 73/105/22 -f 65/106/23 66/108/23 74/107/23 -f 66/108/24 67/110/24 75/109/24 -f 56/183/6 76/112/6 51/114/6 -f 56/184/1 57/115/1 76/117/1 -f 58/120/1 74/118/1 57/115/1 -f 59/185/1 73/119/1 58/120/1 -f 59/185/1 52/121/1 73/119/1 -f 52/121/1 53/123/1 81/122/1 -f 54/127/1 79/125/1 53/123/1 -f 55/128/1 78/126/1 54/127/1 -f 66/133/5 50/130/5 67/132/5 -f 49/135/5 50/130/5 65/134/5 -f 48/138/5 49/135/5 64/136/5 -f 72/140/5 63/137/5 64/136/5 -f 71/141/5 62/139/5 72/140/5 -f 61/143/5 62/139/5 70/142/5 -f 60/146/5 61/143/5 69/144/5 -f 85/186/25 87/147/25 83/149/25 -f 42/70/5 46/71/5 84/187/5 -f 84/187/5 85/150/5 42/70/5 -f 47/188/5 44/67/5 85/150/5 -f 23/4/1 25/39/1 83/151/1 -f 29/189/1 83/151/1 25/39/1 -f 82/152/1 6/5/1 23/4/1 -f 84/190/26 82/153/26 87/147/26 -l 2 32 diff --git a/src/main/resources/assets/hbm/models/turret_tau_gun.obj b/src/main/resources/assets/hbm/models/turret_tau_gun.obj deleted file mode 100644 index 098555a9b..000000000 --- a/src/main/resources/assets/hbm/models/turret_tau_gun.obj +++ /dev/null @@ -1,628 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'turret_tau_gun.blend' -# www.blender.org -o Cube.001_Cube -v 0.200000 0.200000 -0.400000 -v 0.200000 -0.075000 -0.400000 -v 0.200000 0.200000 0.400000 -v 0.200000 -0.200000 0.400000 -v -0.200000 0.200000 -0.400000 -v -0.200000 -0.075000 -0.400000 -v -0.200000 0.200000 0.400000 -v -0.200000 -0.200000 0.400000 -v 0.000000 0.112500 0.400000 -v 0.000000 0.150000 0.900000 -v 0.097428 0.056250 0.400000 -v 0.129904 0.075000 0.900000 -v 0.097428 -0.056250 0.400000 -v 0.129904 -0.075000 0.900000 -v -0.000000 -0.112500 0.400000 -v -0.000000 -0.150000 0.900000 -v -0.097428 -0.056250 0.400000 -v -0.129904 -0.075000 0.900000 -v -0.097428 0.056250 0.400000 -v -0.129904 0.075000 0.900000 -v 0.000000 0.150000 0.650000 -v 0.129904 0.075000 0.650000 -v 0.129904 0.075000 0.900000 -v 0.000000 0.150000 0.900000 -v 0.129904 -0.075000 0.650000 -v 0.129904 -0.075000 0.900000 -v -0.000000 -0.150000 0.650000 -v -0.000000 -0.150000 0.900000 -v -0.129904 -0.075000 0.650000 -v -0.129904 -0.075000 0.900000 -v -0.129904 0.075000 0.650000 -v -0.129904 0.075000 0.900000 -v 0.012990 0.142500 0.675000 -v 0.012990 0.142500 0.875000 -v 0.116913 0.082500 0.875000 -v 0.116913 0.082500 0.675000 -v 0.129904 0.060000 0.675000 -v 0.129904 0.060000 0.875000 -v 0.129904 -0.060000 0.875000 -v 0.129904 -0.060000 0.675000 -v 0.116913 -0.082500 0.675000 -v 0.116913 -0.082500 0.875000 -v 0.012990 -0.142500 0.875000 -v 0.012990 -0.142500 0.675000 -v -0.012990 -0.142500 0.675000 -v -0.012990 -0.142500 0.875000 -v -0.116913 -0.082500 0.875000 -v -0.116913 -0.082500 0.675000 -v -0.116913 0.082500 0.675000 -v -0.116913 0.082500 0.875000 -v -0.012990 0.142500 0.875000 -v -0.012990 0.142500 0.675000 -v -0.129904 -0.060000 0.675000 -v -0.129904 -0.060000 0.875000 -v -0.129904 0.060000 0.875000 -v -0.129904 0.060000 0.675000 -v 0.000490 0.120849 0.675000 -v 0.000490 0.120849 0.875000 -v 0.104413 0.060849 0.875000 -v 0.104413 0.060849 0.675000 -v 0.104904 0.060000 0.675000 -v 0.104904 0.060000 0.875000 -v 0.104904 -0.060000 0.875000 -v 0.104904 -0.060000 0.675000 -v 0.104413 -0.060849 0.675000 -v 0.104413 -0.060849 0.875000 -v 0.000490 -0.120849 0.875000 -v 0.000490 -0.120849 0.675000 -v -0.000490 -0.120849 0.675000 -v -0.000490 -0.120849 0.875000 -v -0.104413 -0.060849 0.875000 -v -0.104413 -0.060849 0.675000 -v -0.104413 0.060849 0.675000 -v -0.104413 0.060849 0.875000 -v -0.000490 0.120849 0.875000 -v -0.000490 0.120849 0.675000 -v -0.104904 -0.060000 0.675000 -v -0.104904 -0.060000 0.875000 -v -0.104904 0.060000 0.875000 -v -0.104904 0.060000 0.675000 -v 0.000000 0.025000 0.900000 -v 0.000000 0.025000 1.400000 -v 0.021651 0.012500 0.900000 -v 0.021651 0.012500 1.400000 -v 0.021651 -0.012500 0.900000 -v 0.021651 -0.012500 1.400000 -v -0.000000 -0.025000 0.900000 -v -0.000000 -0.025000 1.400000 -v -0.021651 -0.012500 0.900000 -v -0.021651 -0.012500 1.400000 -v -0.021651 0.012500 0.900000 -v -0.021651 0.012500 1.400000 -v -0.050000 -0.086603 1.300000 -v -0.100000 0.000000 1.050000 -v -0.070711 -0.000000 0.979289 -v 0.000000 -0.000000 0.950000 -v 0.050000 -0.086603 1.300000 -v -0.050000 0.086603 1.050000 -v -0.035355 0.061237 0.979289 -v 0.100000 0.000000 1.300000 -v 0.050000 0.086603 1.050000 -v 0.035355 0.061237 0.979289 -v 0.050000 0.086603 1.300000 -v 0.100000 0.000000 1.050000 -v 0.070711 -0.000000 0.979289 -v -0.050000 0.086603 1.300000 -v 0.050000 -0.086603 1.050000 -v 0.035355 -0.061237 0.979289 -v -0.100000 0.000000 1.300000 -v -0.050000 -0.086603 1.050000 -v -0.035355 -0.061237 0.979289 -v -0.125000 0.250000 0.050000 -v -0.125000 -0.050000 0.050000 -v -0.375000 -0.000000 -0.100000 -v 0.375000 0.000000 -0.100000 -v -0.375000 -0.070711 -0.070711 -v 0.375000 -0.070711 -0.070711 -v -0.375000 -0.100000 0.000000 -v 0.375000 -0.100000 0.000000 -v -0.375000 -0.070711 0.070711 -v 0.375000 -0.070711 0.070711 -v -0.375000 -0.000000 0.100000 -v 0.375000 0.000000 0.100000 -v -0.375000 0.070711 0.070711 -v 0.375000 0.070711 0.070711 -v -0.375000 0.100000 -0.000000 -v 0.375000 0.100000 -0.000000 -v -0.375000 0.070711 -0.070711 -v 0.375000 0.070711 -0.070711 -v -0.125000 -0.050000 -0.450000 -v -0.125000 0.250000 -0.450000 -v 0.125000 -0.050000 0.050000 -v 0.125000 0.250000 0.050000 -v 0.125000 -0.050000 -0.450000 -v 0.125000 0.250000 -0.450000 -vt 0.671849 0.152564 -vt 0.671849 0.281602 -vt 0.413772 0.281603 -vt 0.023526 0.281603 -vt 0.023526 0.152564 -vt 0.284734 0.152564 -vt 0.284734 0.281603 -vt 0.413772 0.152564 -vt 0.413772 0.023526 -vt 0.671849 0.063850 -vt 0.760563 0.152564 -vt 0.760563 0.281602 -vt 0.671849 0.370316 -vt 0.828328 0.500121 -vt 0.746833 0.506182 -vt 0.746833 0.457692 -vt 0.828329 0.597100 -vt 0.746834 0.603161 -vt 0.746833 0.554672 -vt 0.625537 0.677453 -vt 0.587672 0.704803 -vt 0.586731 0.704392 -vt 0.828329 0.742568 -vt 0.746834 0.748630 -vt 0.746834 0.700140 -vt 0.665077 0.748220 -vt 0.627212 0.775570 -vt 0.828329 0.694079 -vt 0.746834 0.651651 -vt 0.828329 0.645589 -vt 0.665139 0.700704 -vt 0.625415 0.676385 -vt 0.828328 0.512243 -vt 0.828328 0.548610 -vt 0.666018 0.700141 -vt 0.587610 0.752319 -vt 0.586731 0.752882 -vt 0.666018 0.748630 -vt 0.627334 0.776637 -vt 0.674099 0.598312 -vt 0.738752 0.598312 -vt 0.674099 0.559521 -vt 0.666017 0.603161 -vt 0.738752 0.559521 -vt 0.674099 0.549823 -vt 0.738752 0.549823 -vt 0.666017 0.506182 -vt 0.674099 0.511031 -vt 0.738752 0.511031 -vt 0.674099 0.501333 -vt 0.738752 0.501333 -vt 0.674099 0.462541 -vt 0.738752 0.462541 -vt 0.674100 0.743781 -vt 0.738753 0.743781 -vt 0.674099 0.704990 -vt 0.738752 0.704989 -vt 0.674099 0.646802 -vt 0.738752 0.646802 -vt 0.674099 0.608010 -vt 0.738752 0.608010 -vt 0.674099 0.695292 -vt 0.738752 0.695291 -vt 0.674099 0.656500 -vt 0.738752 0.656500 -vt 0.594796 0.870465 -vt 0.594796 0.831754 -vt 0.659315 0.831754 -vt 0.659315 0.870465 -vt 0.659315 0.878530 -vt 0.586731 0.831754 -vt 0.594796 0.823689 -vt 0.667380 0.831754 -vt 0.815679 0.278652 -vt 0.815679 0.239940 -vt 0.880199 0.239940 -vt 0.880199 0.278652 -vt 0.880199 0.286717 -vt 0.807615 0.278652 -vt 0.815679 0.231875 -vt 0.888264 0.278652 -vt 0.722496 0.870465 -vt 0.722496 0.831754 -vt 0.787015 0.831754 -vt 0.787015 0.870465 -vt 0.787015 0.878530 -vt 0.714431 0.870465 -vt 0.722496 0.823689 -vt 0.795080 0.831754 -vt 0.850197 0.870465 -vt 0.850197 0.831754 -vt 0.914716 0.831754 -vt 0.914716 0.870465 -vt 0.914716 0.878530 -vt 0.842132 0.870465 -vt 0.850197 0.823689 -vt 0.922781 0.870465 -vt 0.815679 0.380544 -vt 0.815679 0.341833 -vt 0.880199 0.341833 -vt 0.880199 0.380544 -vt 0.880199 0.388609 -vt 0.807615 0.380544 -vt 0.815679 0.333768 -vt 0.888264 0.380544 -vt 0.922157 0.530276 -vt 0.883446 0.530276 -vt 0.883446 0.465757 -vt 0.922157 0.465757 -vt 0.930222 0.465757 -vt 0.922157 0.538341 -vt 0.875381 0.530276 -vt 0.883446 0.457692 -vt 0.326493 0.807178 -vt 0.326493 0.799113 -vt 0.487791 0.799112 -vt 0.326493 0.791048 -vt 0.487791 0.791048 -vt 0.326493 0.782983 -vt 0.487791 0.782983 -vt 0.326493 0.831372 -vt 0.326493 0.823308 -vt 0.487791 0.823307 -vt 0.312524 0.791048 -vt 0.326493 0.815243 -vt 0.487791 0.807177 -vt 0.487791 0.815242 -vt 0.888263 0.088045 -vt 0.888263 0.055785 -vt 0.912498 0.060510 -vt 0.888263 0.023526 -vt 0.912498 0.028250 -vt 0.875381 0.585393 -vt 0.907640 0.585393 -vt 0.902916 0.609627 -vt 0.888264 0.184824 -vt 0.888264 0.152564 -vt 0.912498 0.157288 -vt 0.888263 0.120305 -vt 0.912498 0.125029 -vt 0.934396 0.071915 -vt 0.912498 0.083321 -vt 0.934396 0.039656 -vt 0.912498 0.051061 -vt 0.807615 0.088045 -vt 0.807615 0.055785 -vt 0.807615 0.023526 -vt 0.891510 0.631525 -vt 0.880105 0.609627 -vt 0.807615 0.120305 -vt 0.934396 0.168694 -vt 0.912498 0.180099 -vt 0.807615 0.184824 -vt 0.807615 0.152564 -vt 0.934396 0.136434 -vt 0.912498 0.147840 -vt 0.912498 0.115580 -vt 0.934396 0.104175 -vt 0.912498 0.092769 -vt 0.265472 0.927093 -vt 0.265472 0.951784 -vt 0.023526 0.951784 -vt 0.265473 0.976474 -vt 0.023526 0.976474 -vt 0.281602 0.635120 -vt 0.281602 0.554471 -vt 0.442900 0.554471 -vt 0.265472 0.778951 -vt 0.265472 0.803641 -vt 0.023526 0.803641 -vt 0.184824 0.554471 -vt 0.184824 0.635120 -vt 0.023526 0.635120 -vt 0.265472 0.828332 -vt 0.023526 0.828331 -vt 0.539679 0.554471 -vt 0.539679 0.635120 -vt 0.265472 0.853022 -vt 0.023526 0.853022 -vt 0.442900 0.635120 -vt 0.442900 0.731899 -vt 0.281602 0.731899 -vt 0.265472 0.877712 -vt 0.023526 0.877712 -vt 0.265472 0.902403 -vt 0.023526 0.927093 -vt 0.023526 0.902403 -vt 0.281602 0.457692 -vt 0.442900 0.457692 -vt 0.413772 0.410641 -vt 0.828328 0.463754 -vt 0.828328 0.560733 -vt 0.828329 0.706201 -vt 0.828329 0.657711 -vt 0.828329 0.609222 -vt 0.666017 0.554672 -vt 0.666017 0.457692 -vt 0.666018 0.651651 -vt 0.594796 0.878530 -vt 0.586731 0.870465 -vt 0.659315 0.823689 -vt 0.667380 0.870465 -vt 0.815679 0.286717 -vt 0.807615 0.239940 -vt 0.880199 0.231875 -vt 0.888264 0.239940 -vt 0.722496 0.878530 -vt 0.714431 0.831754 -vt 0.787015 0.823689 -vt 0.795080 0.870465 -vt 0.850197 0.878530 -vt 0.842132 0.831754 -vt 0.914716 0.823689 -vt 0.922781 0.831754 -vt 0.815679 0.388609 -vt 0.807615 0.341833 -vt 0.880199 0.333768 -vt 0.888263 0.341833 -vt 0.930222 0.530276 -vt 0.883446 0.538341 -vt 0.875381 0.465757 -vt 0.922157 0.457692 -vt 0.487791 0.831372 -vt 0.319508 0.795080 -vt 0.312524 0.782983 -vt 0.319508 0.778950 -vt 0.023526 0.778950 -vt 0.023526 0.554471 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.988000 -0.154400 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.495800 -0.858800 -0.128800 -vn 0.495800 0.858800 -0.128800 -vn -0.495800 -0.858800 -0.128800 -vn -0.991700 0.000000 -0.128800 -vn -0.495800 0.858800 -0.128800 -vn 0.991700 -0.000000 -0.128800 -vn 0.500000 0.866000 0.000000 -vn 0.500000 -0.866000 0.000000 -vn -0.500000 -0.866000 0.000000 -vn -0.500000 0.866000 0.000000 -vn 0.866000 -0.500000 0.000000 -vn -0.866000 0.500000 0.000000 -vn -0.000000 -1.000000 0.000000 -vn -0.866000 -0.500000 0.000000 -vn 0.866000 0.500000 0.000000 -vn -0.815200 0.470600 -0.337700 -vn 0.000000 0.941300 -0.337700 -vn 0.815200 0.470600 -0.337700 -vn 0.815200 -0.470600 -0.337700 -vn 0.000000 -0.941300 -0.337700 -vn -0.373700 0.215700 -0.902100 -vn 0.000000 0.431500 -0.902100 -vn 0.373700 0.215700 -0.902100 -vn 0.373700 -0.215700 -0.902100 -vn 0.000000 -0.431500 -0.902100 -vn -0.815200 -0.470600 -0.337700 -vn -0.373700 -0.215700 -0.902100 -vn 0.000000 -0.382700 -0.923900 -vn 0.000000 -0.923900 -0.382700 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.382700 0.923900 -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 -s off -f 1/1/1 5/2/1 7/3/1 -f 6/4/2 2/5/2 4/6/2 -f 7/3/3 8/7/3 4/6/3 -f 3/8/4 4/9/4 2/10/4 -f 1/1/5 2/11/5 6/12/5 -f 7/3/6 5/2/6 6/13/6 -f 13/14/7 25/15/7 27/16/7 -f 9/17/8 21/18/8 22/19/8 -f 20/20/3 10/21/3 24/22/3 -f 15/23/9 27/24/9 29/25/9 -f 10/21/3 16/26/3 14/27/3 -f 17/28/10 29/25/10 31/29/10 -f 19/30/11 31/29/11 21/18/11 -f 18/31/3 20/20/3 32/32/3 -f 13/33/12 11/34/12 22/19/12 -f 16/26/3 18/31/3 30/35/3 -f 10/21/3 12/36/3 23/37/3 -f 14/27/3 16/26/3 28/38/3 -f 12/36/3 14/27/3 26/39/3 -f 34/40/13 33/41/13 21/18/13 -f 35/42/13 34/40/13 24/43/13 -f 22/19/13 36/44/13 35/42/13 -f 33/41/13 36/44/13 22/19/13 -f 38/45/4 37/46/4 22/19/4 -f 26/47/4 39/48/4 38/45/4 -f 25/15/4 40/49/4 39/48/4 -f 37/46/4 40/49/4 25/15/4 -f 42/50/14 41/51/14 25/15/14 -f 43/52/14 42/50/14 26/47/14 -f 27/16/14 44/53/14 43/52/14 -f 41/51/14 44/53/14 27/16/14 -f 46/54/15 45/55/15 27/24/15 -f 47/56/15 46/54/15 28/38/15 -f 29/25/15 48/57/15 47/56/15 -f 45/55/15 48/57/15 29/25/15 -f 50/58/16 49/59/16 31/29/16 -f 24/43/16 51/60/16 50/58/16 -f 21/18/16 52/61/16 51/60/16 -f 49/59/16 52/61/16 21/18/16 -f 54/62/6 53/63/6 29/25/6 -f 55/64/6 54/62/6 30/35/6 -f 31/29/6 56/65/6 55/64/6 -f 53/63/6 56/65/6 31/29/6 -f 58/66/13 59/67/13 60/68/13 -f 58/66/17 57/69/17 33/70/17 -f 35/71/5 59/67/5 58/66/5 -f 60/68/18 59/67/18 35/72/18 -f 57/69/3 60/68/3 36/73/3 -f 62/74/4 63/75/4 64/76/4 -f 62/74/19 61/77/19 37/78/19 -f 63/75/5 62/74/5 38/79/5 -f 64/76/1 63/75/1 39/80/1 -f 37/81/3 61/77/3 64/76/3 -f 66/82/14 67/83/14 68/84/14 -f 66/82/20 65/85/20 41/86/20 -f 67/83/5 66/82/5 42/87/5 -f 68/84/21 67/83/21 43/88/21 -f 65/85/3 68/84/3 44/89/3 -f 70/90/15 71/91/15 72/92/15 -f 70/90/18 69/93/18 45/94/18 -f 71/91/5 70/90/5 46/95/5 -f 72/92/17 71/91/17 47/96/17 -f 45/97/3 69/93/3 72/92/3 -f 74/98/16 75/99/16 76/100/16 -f 74/98/21 73/101/21 49/102/21 -f 75/99/5 74/98/5 50/103/5 -f 76/100/20 75/99/20 51/104/20 -f 49/105/3 73/101/3 76/100/3 -f 78/106/6 79/107/6 80/108/6 -f 78/106/1 77/109/1 53/110/1 -f 79/107/5 78/106/5 54/111/5 -f 80/108/19 79/107/19 55/112/19 -f 77/109/3 80/108/3 56/113/3 -f 82/114/13 84/115/13 83/116/13 -f 84/115/4 86/117/4 85/118/4 -f 86/117/14 88/119/14 87/120/14 -f 88/121/15 90/122/15 89/123/15 -f 82/124/3 88/119/3 86/117/3 -f 92/125/16 82/114/16 81/126/16 -f 90/122/6 92/125/6 91/127/6 -f 94/128/22 98/129/22 99/130/22 -f 98/129/23 101/131/23 102/132/23 -f 101/133/24 104/134/24 105/135/24 -f 104/136/25 107/137/25 108/138/25 -f 107/137/26 110/139/26 111/140/26 -f 96/141/27 95/142/27 99/130/27 -f 96/143/28 99/144/28 102/132/28 -f 94/128/18 109/145/18 106/146/18 -f 106/146/1 103/147/1 101/131/1 -f 96/148/29 102/149/29 105/135/29 -f 94/128/20 110/139/20 93/150/20 -f 96/151/30 105/152/30 108/138/30 -f 104/136/17 100/153/17 97/154/17 -f 96/155/31 108/156/31 111/140/31 -f 111/157/32 110/139/32 94/128/32 -f 110/139/19 107/137/19 97/154/19 -f 96/158/33 111/157/33 95/159/33 -f 115/160/34 117/161/34 116/162/34 -f 117/161/35 119/163/35 118/164/35 -f 135/165/1 131/166/1 112/167/1 -f 119/168/36 121/169/36 120/170/36 -f 130/171/19 134/172/19 132/173/19 -f 121/169/37 123/174/37 122/175/37 -f 112/167/3 113/176/3 132/177/3 -f 123/174/38 125/178/38 124/179/38 -f 133/180/4 132/181/4 134/182/4 -f 125/178/39 127/183/39 126/184/39 -f 135/165/5 134/172/5 130/171/5 -f 129/185/40 115/160/40 114/186/40 -f 127/183/41 129/185/41 128/187/41 -f 131/166/6 130/188/6 113/189/6 -f 3/8/1 1/1/1 7/3/1 -f 8/7/2 6/4/2 4/6/2 -f 3/8/3 7/3/3 4/6/3 -f 1/1/4 3/8/4 2/10/4 -f 5/2/5 1/1/5 6/12/5 -f 8/190/6 7/3/6 6/13/6 -f 15/191/7 13/14/7 27/16/7 -f 11/192/8 9/17/8 22/19/8 -f 32/32/3 20/20/3 24/22/3 -f 17/193/9 15/23/9 29/25/9 -f 14/27/3 12/36/3 10/21/3 -f 10/21/3 20/20/3 18/31/3 -f 18/31/3 16/26/3 10/21/3 -f 19/194/10 17/28/10 31/29/10 -f 9/195/11 19/30/11 21/18/11 -f 30/35/3 18/31/3 32/32/3 -f 25/15/12 13/33/12 22/19/12 -f 28/38/3 16/26/3 30/35/3 -f 24/22/3 10/21/3 23/37/3 -f 26/39/3 14/27/3 28/38/3 -f 23/37/3 12/36/3 26/39/3 -f 24/43/13 34/40/13 21/18/13 -f 23/196/13 35/42/13 24/43/13 -f 23/196/13 22/19/13 35/42/13 -f 21/18/13 33/41/13 22/19/13 -f 23/196/4 38/45/4 22/19/4 -f 23/196/4 26/47/4 38/45/4 -f 26/47/4 25/15/4 39/48/4 -f 22/19/4 37/46/4 25/15/4 -f 26/47/14 42/50/14 25/15/14 -f 28/197/14 43/52/14 26/47/14 -f 28/197/14 27/16/14 43/52/14 -f 25/15/14 41/51/14 27/16/14 -f 28/38/15 46/54/15 27/24/15 -f 30/35/15 47/56/15 28/38/15 -f 30/35/15 29/25/15 47/56/15 -f 27/24/15 45/55/15 29/25/15 -f 32/198/16 50/58/16 31/29/16 -f 32/198/16 24/43/16 50/58/16 -f 24/43/16 21/18/16 51/60/16 -f 31/29/16 49/59/16 21/18/16 -f 30/35/6 54/62/6 29/25/6 -f 32/198/6 55/64/6 30/35/6 -f 32/198/6 31/29/6 55/64/6 -f 29/25/6 53/63/6 31/29/6 -f 57/69/13 58/66/13 60/68/13 -f 34/199/17 58/66/17 33/70/17 -f 34/200/5 35/71/5 58/66/5 -f 36/201/18 60/68/18 35/72/18 -f 33/202/3 57/69/3 36/73/3 -f 61/77/4 62/74/4 64/76/4 -f 38/203/19 62/74/19 37/78/19 -f 39/204/5 63/75/5 38/79/5 -f 40/205/1 64/76/1 39/80/1 -f 40/206/3 37/81/3 64/76/3 -f 65/85/14 66/82/14 68/84/14 -f 42/207/20 66/82/20 41/86/20 -f 43/208/5 67/83/5 42/87/5 -f 44/209/21 68/84/21 43/88/21 -f 41/210/3 65/85/3 44/89/3 -f 69/93/15 70/90/15 72/92/15 -f 46/211/18 70/90/18 45/94/18 -f 47/212/5 71/91/5 46/95/5 -f 48/213/17 72/92/17 47/96/17 -f 48/214/3 45/97/3 72/92/3 -f 73/101/16 74/98/16 76/100/16 -f 50/215/21 74/98/21 49/102/21 -f 51/216/5 75/99/5 50/103/5 -f 52/217/20 76/100/20 51/104/20 -f 52/218/3 49/105/3 76/100/3 -f 77/109/6 78/106/6 80/108/6 -f 54/219/1 78/106/1 53/110/1 -f 55/220/5 79/107/5 54/111/5 -f 56/221/19 80/108/19 55/112/19 -f 53/222/3 77/109/3 56/113/3 -f 81/126/13 82/114/13 83/116/13 -f 83/116/4 84/115/4 85/118/4 -f 85/118/14 86/117/14 87/120/14 -f 87/223/15 88/121/15 89/123/15 -f 86/117/3 84/224/3 82/124/3 -f 82/124/3 92/225/3 90/226/3 -f 90/226/3 88/119/3 82/124/3 -f 91/127/16 92/125/16 81/126/16 -f 89/123/6 90/122/6 91/127/6 -f 95/142/22 94/128/22 99/130/22 -f 99/144/23 98/129/23 102/132/23 -f 102/149/24 101/133/24 105/135/24 -f 105/152/25 104/136/25 108/138/25 -f 108/156/26 107/137/26 111/140/26 -f 98/129/18 94/128/18 106/146/18 -f 98/129/1 106/146/1 101/131/1 -f 109/145/20 94/128/20 93/150/20 -f 107/137/17 104/136/17 97/154/17 -f 95/159/32 111/157/32 94/128/32 -f 93/150/19 110/139/19 97/154/19 -f 114/186/34 115/160/34 116/162/34 -f 116/162/35 117/161/35 118/164/35 -f 133/180/1 135/165/1 112/167/1 -f 118/227/36 119/168/36 120/170/36 -f 113/228/19 130/171/19 132/173/19 -f 120/170/37 121/169/37 122/175/37 -f 133/180/3 112/167/3 132/177/3 -f 122/175/38 123/174/38 124/179/38 -f 135/165/4 133/180/4 134/182/4 -f 124/179/39 125/178/39 126/184/39 -f 131/166/5 135/165/5 130/171/5 -f 128/187/40 129/185/40 114/186/40 -f 126/184/41 127/183/41 128/187/41 -f 112/167/6 131/166/6 113/189/6 diff --git a/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj b/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj new file mode 100644 index 000000000..24cf1ae35 --- /dev/null +++ b/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj @@ -0,0 +1,2533 @@ +# Blender v2.79 (sub 0) OBJ File: 'turret_sentry.blend' +# www.blender.org +o Pivot +v 0.125000 1.000000 0.125000 +v 0.000000 1.125000 0.125000 +v 0.125000 1.000000 -0.125000 +v 0.000000 1.125000 -0.125000 +v 0.125000 1.250000 -0.125000 +v 0.125000 1.338388 -0.088388 +v 0.125000 1.375000 0.000000 +v 0.125000 1.338388 0.088388 +v 0.125000 1.250000 0.125000 +v 0.000000 1.375000 0.000000 +v 0.000000 1.338388 -0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.338388 0.088388 +v 0.000000 1.250000 0.125000 +v -0.125000 1.000000 0.125000 +v -0.125000 1.000000 -0.125000 +v -0.125000 1.125000 -0.125000 +v -0.125000 1.125000 0.125000 +v 0.156250 1.250000 -0.062500 +v 0.156250 1.294194 -0.044194 +v 0.156250 1.312500 0.000000 +v 0.156250 1.294194 0.044194 +v 0.156250 1.250000 0.062500 +v 0.156250 1.205806 0.044194 +v 0.156250 1.187500 -0.000000 +v 0.156250 1.205806 -0.044194 +v -0.156250 1.250000 -0.062500 +v -0.156250 1.294194 -0.044194 +v -0.156250 1.312500 0.000000 +v -0.156250 1.294194 0.044194 +v -0.156250 1.250000 0.062500 +v -0.156250 1.205806 0.044194 +v -0.156250 1.187500 -0.000000 +v -0.156250 1.205806 -0.044194 +v 0.125000 1.125000 -0.125000 +v 0.125000 1.125000 0.125000 +v 0.132583 0.875000 -0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v -0.132583 0.875000 0.132583 +v -0.187500 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v 0.132583 1.000000 -0.132583 +v 0.187500 1.000000 -0.000000 +v 0.132583 1.000000 0.132583 +v 0.000000 1.000000 0.187500 +v -0.132583 1.000000 0.132583 +v -0.187500 1.000000 0.000000 +v -0.132583 1.000000 -0.132583 +v 0.000000 1.000000 -0.187500 +v -0.156250 1.205806 -0.044194 +v -0.156250 1.187500 -0.000000 +v -0.156250 1.205806 0.044194 +v -0.156250 1.250000 0.062500 +v -0.156250 1.294194 0.044194 +v -0.156250 1.312500 0.000000 +v -0.156250 1.294194 -0.044194 +v -0.156250 1.250000 -0.062500 +v 0.156250 1.205806 -0.044194 +v 0.156250 1.187500 -0.000000 +v 0.156250 1.205806 0.044194 +v 0.156250 1.250000 0.062500 +v 0.156250 1.294194 0.044194 +v 0.156250 1.312500 0.000000 +v 0.156250 1.294194 -0.044194 +v 0.156250 1.250000 -0.062500 +v 0.132583 0.875000 -0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v -0.132583 0.875000 0.132583 +v -0.187500 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v 0.132583 1.000000 -0.132583 +v 0.187500 1.000000 -0.000000 +v 0.132583 1.000000 0.132583 +v 0.000000 1.000000 0.187500 +v -0.132583 1.000000 0.132583 +v -0.187500 1.000000 0.000000 +v -0.132583 1.000000 -0.132583 +v 0.000000 1.000000 -0.187500 +v 0.125000 1.125000 0.125000 +v 0.125000 1.125000 -0.125000 +v 0.000000 1.250000 0.125000 +v 0.000000 1.338388 0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.338388 -0.088388 +v 0.000000 1.375000 0.000000 +v 0.125000 1.250000 0.125000 +v 0.125000 1.338388 0.088388 +v 0.125000 1.375000 0.000000 +v 0.125000 1.338388 -0.088388 +v 0.125000 1.250000 -0.125000 +v 0.000000 1.125000 -0.125000 +v 0.000000 1.125000 0.125000 +vt 0.325674 0.214932 +vt 0.333122 0.249997 +vt 0.282262 0.249997 +vt 0.230769 0.250000 +vt 0.205128 0.350000 +vt 0.205128 0.250000 +vt 0.256410 0.350000 +vt 0.256410 0.250000 +vt 0.078644 0.525000 +vt 0.089744 0.503355 +vt 0.100843 0.525000 +vt 0.168387 0.525000 +vt 0.179487 0.503355 +vt 0.190587 0.525000 +vt 0.205128 0.150000 +vt 0.230769 0.200000 +vt 0.410256 0.250000 +vt 0.384615 0.200000 +vt 0.410256 0.150000 +vt 0.282256 0.049881 +vt 0.333183 0.000227 +vt 0.333183 0.049881 +vt 0.075924 0.725000 +vt 0.038462 0.798051 +vt 0.000999 0.725000 +vt 0.038462 0.851949 +vt 0.075924 0.925000 +vt 0.038462 0.998051 +vt 0.333122 0.299586 +vt 0.282262 0.299586 +vt 0.289710 0.214932 +vt 0.307692 0.200408 +vt 0.230769 0.350000 +vt 0.097592 0.540305 +vt 0.089744 0.546645 +vt 0.081895 0.540305 +vt 0.081895 0.509695 +vt 0.097592 0.509695 +vt 0.179487 0.546645 +vt 0.171638 0.540305 +vt 0.171638 0.509695 +vt 0.187336 0.509695 +vt 0.187336 0.540305 +vt 0.230769 0.150000 +vt 0.384615 0.250000 +vt 0.384615 0.150000 +vt 0.333183 0.099536 +vt 0.325725 0.134647 +vt 0.307719 0.149191 +vt 0.289714 0.134647 +vt 0.282256 0.099536 +vt 0.282256 0.000227 +vt 0.011972 0.673345 +vt 0.038462 0.651949 +vt 0.064951 0.673345 +vt 0.064951 0.776655 +vt 0.011972 0.776655 +vt 0.011972 0.976655 +vt 0.000999 0.925000 +vt 0.011972 0.873345 +vt 0.064951 0.873345 +vt 0.064951 0.976655 +vt 0.384615 0.150000 +vt 0.358974 0.200000 +vt 0.358974 0.150000 +vt 0.256410 0.150000 +vt 0.230769 0.200000 +vt 0.230769 0.150000 +vt 0.333333 0.150000 +vt 0.307692 0.200000 +vt 0.282051 0.150000 +vt 0.307692 0.150000 +vt 0.333333 0.200000 +vt 0.282051 0.200000 +vt 0.166667 0.625000 +vt 0.102564 0.600000 +vt 0.166667 0.600000 +vt 0.166667 0.575000 +vt 0.102564 0.550000 +vt 0.166667 0.550000 +vt 0.166667 0.525000 +vt 0.102564 0.500000 +vt 0.166667 0.500000 +vt 0.166667 0.675000 +vt 0.102564 0.650000 +vt 0.166667 0.650000 +vt 0.102564 0.625000 +vt 0.102564 0.575000 +vt 0.102564 0.525000 +vt 0.166667 0.700000 +vt 0.102564 0.675000 +vt 0.025641 0.850000 +vt 0.051282 0.800000 +vt 0.051282 0.850000 +vt 0.076923 0.850000 +vt 0.102564 0.800000 +vt 0.102564 0.850000 +vt 0.128205 0.850000 +vt 0.153846 0.800000 +vt 0.153846 0.850000 +vt 0.179487 0.850000 +vt 0.205128 0.800000 +vt 0.205128 0.850000 +vt 0.000000 0.850000 +vt 0.025641 0.800000 +vt 0.076923 0.800000 +vt 0.128205 0.800000 +vt 0.179487 0.800000 +vt 0.384615 0.200000 +vt 0.256410 0.200000 +vt 0.102564 0.700000 +vt 0.000000 0.800000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.1951 -0.9808 +vn 0.0000 0.1951 0.9808 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 11/1/1 12/2/1 14/3/1 +f 18/4/1 16/5/1 15/6/1 +f 4/7/2 18/4/2 2/8/2 +f 23/9/3 25/10/3 19/11/3 +f 27/12/1 33/13/1 31/14/1 +f 1/15/4 2/16/4 15/6/4 +f 16/17/5 4/18/5 3/19/5 +f 36/20/3 3/21/3 35/22/3 +f 38/23/6 40/24/6 42/25/6 +f 48/26/2 46/27/2 52/28/2 +f 12/2/1 4/29/1 2/30/1 +f 2/30/1 14/3/1 12/2/1 +f 14/3/1 13/31/1 11/1/1 +f 13/31/1 10/32/1 11/1/1 +f 18/4/1 17/33/1 16/5/1 +f 4/7/2 17/33/2 18/4/2 +f 19/11/3 20/34/3 21/35/3 +f 21/35/3 22/36/3 23/9/3 +f 23/9/3 24/37/3 25/10/3 +f 25/10/3 26/38/3 19/11/3 +f 19/11/3 21/35/3 23/9/3 +f 29/39/1 28/40/1 27/12/1 +f 27/12/1 34/41/1 33/13/1 +f 33/13/1 32/42/1 31/14/1 +f 31/14/1 30/43/1 29/39/1 +f 29/39/1 27/12/1 31/14/1 +f 36/44/4 2/16/4 1/15/4 +f 2/16/4 18/4/4 15/6/4 +f 17/45/5 4/18/5 16/17/5 +f 4/18/5 35/46/5 3/19/5 +f 5/47/3 6/48/3 7/49/3 +f 7/49/3 8/50/3 9/51/3 +f 36/20/3 1/52/3 3/21/3 +f 7/49/3 9/51/3 5/47/3 +f 9/51/3 36/20/3 5/47/3 +f 35/22/3 5/47/3 36/20/3 +f 42/25/6 44/53/6 43/54/6 +f 43/54/6 37/55/6 38/23/6 +f 38/23/6 39/56/6 40/24/6 +f 40/24/6 41/57/6 42/25/6 +f 42/25/6 43/54/6 38/23/6 +f 52/28/2 51/58/2 50/59/2 +f 50/59/2 49/60/2 48/26/2 +f 48/26/2 47/61/2 46/27/2 +f 46/27/2 45/62/2 52/28/2 +f 52/28/2 50/59/2 48/26/2 +s 1 +f 86/63/5 89/64/7 96/65/7 +f 92/66/8 98/67/4 85/68/4 +f 89/64/7 95/69/9 96/65/7 +f 91/70/2 93/71/10 94/72/2 +f 90/73/9 94/72/2 95/69/9 +f 88/74/10 92/66/8 93/71/10 +f 67/75/9 58/76/2 66/77/2 +f 65/78/10 56/79/4 64/80/4 +f 63/81/11 54/82/6 62/83/6 +f 61/84/12 60/85/5 68/86/5 +f 68/86/5 59/87/9 67/75/9 +f 66/77/2 57/88/10 65/78/10 +f 64/80/4 55/89/11 63/81/11 +f 62/90/6 53/91/12 61/84/12 +f 83/92/13 74/93/1 82/94/1 +f 81/95/14 72/96/4 80/97/4 +f 79/98/15 70/99/3 78/100/3 +f 77/101/16 75/102/5 84/103/5 +f 84/104/5 76/105/13 83/92/13 +f 82/94/1 73/106/14 81/95/14 +f 80/97/4 71/107/15 79/98/15 +f 78/100/3 69/108/16 77/101/16 +f 86/63/5 97/109/5 89/64/7 +f 92/66/8 87/110/8 98/67/4 +f 89/64/7 90/73/9 95/69/9 +f 91/70/2 88/74/10 93/71/10 +f 90/73/9 91/70/2 94/72/2 +f 88/74/10 87/110/8 92/66/8 +f 67/75/9 59/87/9 58/76/2 +f 65/78/10 57/88/10 56/79/4 +f 63/81/11 55/89/11 54/82/6 +f 61/84/12 53/91/12 60/85/5 +f 68/86/5 60/85/5 59/87/9 +f 66/77/2 58/76/2 57/88/10 +f 64/80/4 56/79/4 55/89/11 +f 62/90/6 54/111/6 53/91/12 +f 83/92/13 76/105/13 74/93/1 +f 81/95/14 73/106/14 72/96/4 +f 79/98/15 71/107/15 70/99/3 +f 77/101/16 69/108/16 75/102/5 +f 84/104/5 75/112/5 76/105/13 +f 82/94/1 74/93/1 73/106/14 +f 80/97/4 72/96/4 71/107/15 +f 78/100/3 70/99/3 69/108/16 +o Body +v 0.250000 1.375000 -0.250000 +v 0.250000 1.375000 0.250000 +v -0.250000 1.375000 0.250000 +v -0.250000 1.375000 -0.250000 +v 0.250000 1.625000 -0.250000 +v 0.250000 1.625000 0.250000 +v -0.250000 1.625000 0.250000 +v -0.250000 1.625000 -0.250000 +v 0.000000 1.625000 -0.250000 +v -0.088388 1.588388 -0.250000 +v -0.125000 1.500000 -0.250000 +v -0.088388 1.411612 -0.250000 +v 0.000000 1.375000 -0.250000 +v 0.088388 1.411612 -0.250000 +v 0.125000 1.500000 -0.250000 +v 0.088388 1.588388 -0.250000 +v 0.000000 1.625000 -0.500000 +v -0.088388 1.588388 -0.500000 +v -0.125000 1.500000 -0.500000 +v -0.088388 1.411612 -0.500000 +v 0.000000 1.375000 -0.500000 +v 0.088388 1.411612 -0.500000 +v 0.125000 1.500000 -0.500000 +v 0.088388 1.588388 -0.500000 +v 0.125000 1.375000 -0.500000 +v -0.125000 1.375000 -0.500000 +v -0.125000 1.375000 0.125000 +v 0.125000 1.625000 -0.500000 +v -0.125000 1.625000 -0.500000 +v 0.000000 1.250000 0.125000 +v 0.250000 1.375000 -0.625000 +v -0.250000 1.375000 -0.625000 +v -0.250000 1.625000 -0.625000 +v 0.250000 1.625000 -0.625000 +v 0.000000 1.250000 -0.125000 +v 0.250000 1.375000 -0.750000 +v -0.250000 1.375000 -0.750000 +v -0.250000 1.625000 -0.750000 +v 0.250000 1.625000 -0.750000 +v 0.000000 1.161612 0.088388 +v 0.000000 1.125000 -0.000000 +v 0.000000 1.161612 -0.088388 +v -0.125000 1.250000 -0.125000 +v -0.125000 1.375000 -0.125000 +v 0.000000 1.375000 0.125000 +v 0.000000 1.375000 -0.125000 +v -0.125000 1.250000 0.125000 +v -0.125000 1.161612 0.088388 +v -0.125000 1.125000 -0.000000 +v -0.125000 1.161612 -0.088388 +v -0.125000 1.687500 -0.125000 +v -0.187500 1.687500 -0.125000 +v -0.187500 1.812500 -0.125000 +v -0.125000 1.812500 -0.125000 +v -0.125000 1.687500 -0.062500 +v -0.187500 1.687500 -0.062500 +v -0.187500 1.875000 -0.062500 +v -0.125000 1.875000 -0.062500 +v -0.125000 1.875000 -0.687500 +v -0.125000 1.812500 -0.625000 +v -0.187500 1.812500 -0.625000 +v -0.187500 1.875000 -0.687500 +v -0.187500 1.625000 -0.687500 +v -0.125000 1.625000 -0.687500 +v -0.125000 1.625000 -0.625000 +v -0.187500 1.625000 -0.625000 +v 0.125000 1.750000 0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.750000 0.250000 +v -0.125000 1.750000 -0.250000 +v -0.187500 1.562500 0.250000 +v -0.062500 1.437500 0.250000 +v -0.187500 1.437500 0.250000 +v -0.062500 1.562500 0.250000 +v 0.000000 1.625000 0.500000 +v 0.000000 1.375000 0.500000 +v -0.187500 1.437500 0.312500 +v 0.062500 1.562500 0.250000 +v -0.187500 1.562500 0.312500 +v 0.187500 1.562500 0.312500 +v 0.062500 1.437500 0.250000 +v 0.187500 1.437500 0.312500 +v -0.062500 1.437500 0.437500 +v 0.187500 1.437500 0.250000 +v -0.062500 1.562500 0.437500 +v 0.062500 1.562500 0.437500 +v 0.187500 1.562500 0.250000 +v 0.062500 1.437500 0.437500 +v -0.250000 1.437500 0.125000 +v -0.250000 1.562500 0.125000 +v -0.250000 1.437500 -0.125000 +v -0.250000 1.562500 -0.125000 +v -0.375000 1.437500 -0.125000 +v -0.375000 1.437500 0.125000 +v -0.375000 1.562500 0.125000 +v -0.375000 1.562500 -0.125000 +v -0.375000 1.562500 -0.187500 +v -0.375000 1.562500 0.187500 +v -0.330806 1.544194 -0.187500 +v -0.330806 1.544194 0.187500 +v -0.312500 1.500000 -0.187500 +v -0.312500 1.500000 0.187500 +v -0.330806 1.455806 -0.187500 +v -0.330806 1.455806 0.187500 +v -0.375000 1.437500 -0.187500 +v -0.375000 1.437500 0.187500 +v -0.419194 1.455806 -0.187500 +v -0.419194 1.455806 0.187500 +v -0.437500 1.500000 -0.187500 +v -0.437500 1.500000 0.187500 +v -0.419194 1.544194 -0.187500 +v -0.419194 1.544194 0.187500 +v -0.125000 1.562500 0.500000 +v -0.169194 1.544194 0.500000 +v -0.187500 1.500000 0.500000 +v -0.169194 1.455806 0.500000 +v -0.125000 1.437500 0.500000 +v -0.080806 1.455806 0.500000 +v -0.062500 1.500000 0.500000 +v -0.080806 1.544194 0.500000 +v -0.419194 1.544194 0.187500 +v -0.419194 1.544194 -0.187500 +v -0.437500 1.500000 0.187500 +v -0.437500 1.500000 -0.187500 +v -0.419194 1.455806 0.187500 +v -0.419194 1.455806 -0.187500 +v -0.375000 1.437500 0.187500 +v -0.375000 1.437500 -0.187500 +v 0.169194 1.544194 0.500000 +v 0.187500 1.500000 0.500000 +v 0.169194 1.455806 0.500000 +v 0.125000 1.437500 0.500000 +v 0.080806 1.455806 0.500000 +v 0.062500 1.500000 0.500000 +v 0.080806 1.544194 0.500000 +v 0.125000 1.562500 0.500000 +v -0.330806 1.455806 0.187500 +v -0.330806 1.455806 -0.187500 +v -0.312500 1.500000 0.187500 +v -0.312500 1.500000 -0.187500 +v -0.330806 1.544194 0.187500 +v -0.330806 1.544194 -0.187500 +v -0.375000 1.562500 0.187500 +v -0.375000 1.562500 -0.187500 +v -0.125000 1.161612 -0.088388 +v -0.125000 1.125000 -0.000000 +v -0.125000 1.161612 0.088388 +v -0.125000 1.250000 0.125000 +v 0.000000 1.375000 -0.125000 +v 0.000000 1.375000 0.125000 +v -0.125000 1.375000 -0.125000 +v -0.125000 1.250000 -0.125000 +v 0.000000 1.161612 -0.088388 +v 0.000000 1.125000 -0.000000 +v 0.000000 1.161612 0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.250000 0.125000 +v -0.125000 1.375000 0.125000 +v -0.125000 1.562500 0.250000 +v -0.169194 1.544194 0.250000 +v -0.187500 1.500000 0.250000 +v -0.169194 1.455806 0.250000 +v -0.125000 1.437500 0.250000 +v -0.080806 1.455806 0.250000 +v -0.062500 1.500000 0.250000 +v -0.080806 1.544194 0.250000 +v -0.125000 1.562500 0.500000 +v -0.169194 1.544194 0.500000 +v -0.187500 1.500000 0.500000 +v -0.169194 1.455806 0.500000 +v -0.125000 1.437500 0.500000 +v -0.080806 1.455806 0.500000 +v -0.062500 1.500000 0.500000 +v -0.080806 1.544194 0.500000 +v 0.169194 1.544194 0.500000 +v 0.187500 1.500000 0.500000 +v 0.169194 1.455806 0.500000 +v 0.125000 1.437500 0.500000 +v 0.080806 1.455806 0.500000 +v 0.062500 1.500000 0.500000 +v 0.080806 1.544194 0.500000 +v 0.125000 1.562500 0.500000 +v 0.169194 1.544194 0.250000 +v 0.187500 1.500000 0.250000 +v 0.169194 1.455806 0.250000 +v 0.125000 1.437500 0.250000 +v 0.080806 1.455806 0.250000 +v 0.062500 1.500000 0.250000 +v 0.080806 1.544194 0.250000 +v 0.125000 1.562500 0.250000 +vt 0.692308 0.300000 +vt 0.769231 0.350000 +vt 0.666667 0.450000 +vt 0.615385 0.100000 +vt 0.666667 0.300000 +vt 0.615385 0.300000 +vt 0.820513 0.300000 +vt 0.769231 0.100000 +vt 0.820513 0.100000 +vt 0.641026 0.725000 +vt 0.653846 0.675000 +vt 0.653846 0.725000 +vt 0.615385 0.625000 +vt 0.628205 0.400000 +vt 0.628205 0.650000 +vt 0.564103 0.200000 +vt 0.512821 0.100000 +vt 0.564103 0.100000 +vt 0.512821 0.200000 +vt 0.487179 0.100000 +vt 0.333156 0.350167 +vt 0.307681 0.399844 +vt 0.282206 0.350167 +vt 0.589744 0.200000 +vt 0.589744 -0.000000 +vt 0.487179 0.400000 +vt 0.589744 0.300000 +vt 0.589744 0.400000 +vt 0.487179 0.200000 +vt 0.461538 0.100000 +vt 0.589744 0.100000 +vt 0.615385 0.200000 +vt 0.487179 0.300000 +vt 0.325650 0.464995 +vt 0.333092 0.500029 +vt 0.282276 0.500029 +vt 0.628205 0.725000 +vt 0.615385 0.675000 +vt 0.666667 0.650000 +vt 0.769231 0.450000 +vt 0.769231 0.650000 +vt 0.666667 0.675000 +vt 0.666667 0.425000 +vt 0.653846 0.625000 +vt 0.653846 0.425000 +vt 0.641026 0.300000 +vt 0.653846 0.375000 +vt 0.641026 0.400000 +vt 0.628205 0.300000 +vt 0.615385 0.375000 +vt 0.615385 0.300000 +vt 0.666667 0.300000 +vt 0.653846 0.300000 +vt 0.641026 0.650000 +vt 0.743590 0.100000 +vt 0.743590 0.300000 +vt 0.769231 0.300000 +vt 0.666667 0.100000 +vt 0.820513 -0.000000 +vt 0.807692 0.075000 +vt 0.807692 0.025000 +vt 0.166667 0.625000 +vt 0.179487 0.675000 +vt 0.166667 0.675000 +vt 0.628205 0.075000 +vt 0.653846 0.075000 +vt 0.782051 0.075000 +vt 0.769231 -0.000000 +vt 0.782051 0.025000 +vt 0.615385 -0.000000 +vt 0.628205 0.025000 +vt 0.666667 -0.000000 +vt 0.179487 0.700000 +vt 0.205128 0.675000 +vt 0.205128 0.750000 +vt 0.205128 0.625000 +vt 0.243590 0.675000 +vt 0.717949 0.750000 +vt 0.179487 0.625000 +vt 0.653846 0.025000 +vt 0.179487 0.600000 +vt 0.320513 0.675000 +vt 0.307692 0.625000 +vt 0.320513 0.625000 +vt 0.307692 0.675000 +vt 0.282051 0.625000 +vt 0.243590 0.675000 +vt 0.243590 0.625000 +vt 0.307692 0.600000 +vt 0.282051 0.675000 +vt 0.307692 0.700000 +vt 0.282051 0.750000 +vt 0.692308 0.100000 +vt 0.717949 -0.000000 +vt 0.384615 0.450000 +vt 0.410256 0.400000 +vt 0.410256 0.450000 +vt 0.461538 0.450000 +vt 0.487179 0.400000 +vt 0.487179 0.450000 +vt 0.461538 0.400000 +vt 0.538462 0.400000 +vt 0.538462 0.450000 +vt 0.437618 0.475000 +vt 0.448718 0.453355 +vt 0.459817 0.475000 +vt 0.357254 0.475000 +vt 0.354003 0.490305 +vt 0.338305 0.459695 +vt 0.474359 0.550649 +vt 0.486846 0.574999 +vt 0.474359 0.599350 +vt 0.474359 0.550649 +vt 0.486846 0.574999 +vt 0.474359 0.599350 +vt 0.666667 0.350000 +vt 0.615385 0.425000 +vt 0.282206 0.300490 +vt 0.333156 0.300490 +vt 0.325695 0.385294 +vt 0.289667 0.385294 +vt 0.487179 0.050000 +vt 0.487179 -0.000000 +vt 0.589744 0.050000 +vt 0.461538 0.200000 +vt 0.615385 0.100000 +vt 0.589744 0.250000 +vt 0.487179 0.250000 +vt 0.333092 0.549575 +vt 0.282276 0.549575 +vt 0.289718 0.464995 +vt 0.307684 0.450484 +vt 0.615385 0.725000 +vt 0.666667 0.725000 +vt 0.666667 0.625000 +vt 0.666667 0.375000 +vt 0.243590 0.625000 +vt 0.205128 0.550000 +vt 0.282051 0.550000 +vt 0.384615 0.400000 +vt 0.456566 0.490305 +vt 0.448718 0.496645 +vt 0.440869 0.490305 +vt 0.440869 0.459695 +vt 0.456566 0.459695 +vt 0.346154 0.496645 +vt 0.338305 0.490305 +vt 0.335054 0.475000 +vt 0.346154 0.453355 +vt 0.354003 0.459695 +vt 0.465529 0.592218 +vt 0.461872 0.574999 +vt 0.465529 0.557781 +vt 0.483189 0.557781 +vt 0.483189 0.592218 +vt 0.465529 0.592218 +vt 0.461872 0.574999 +vt 0.465529 0.557781 +vt 0.483189 0.557781 +vt 0.483189 0.592218 +vt 0.461538 0.100000 +vt 0.410256 0.150000 +vt 0.410256 0.100000 +vt 0.461538 -0.000000 +vt 0.410256 0.050000 +vt 0.410256 -0.000000 +vt 0.461538 0.300000 +vt 0.410256 0.350000 +vt 0.410256 0.300000 +vt 0.461538 0.200000 +vt 0.410256 0.250000 +vt 0.410256 0.200000 +vt 0.461538 0.150000 +vt 0.461538 0.050000 +vt 0.461538 0.350000 +vt 0.410256 0.400000 +vt 0.461538 0.250000 +vt 0.435897 0.525000 +vt 0.358974 0.550000 +vt 0.358974 0.525000 +vt 0.435897 0.500000 +vt 0.358974 0.500000 +vt 0.435897 0.475000 +vt 0.358974 0.475000 +vt 0.435897 0.450000 +vt 0.358974 0.450000 +vt 0.435897 0.625000 +vt 0.358974 0.650000 +vt 0.358974 0.625000 +vt 0.435897 0.600000 +vt 0.358974 0.600000 +vt 0.435897 0.575000 +vt 0.358974 0.575000 +vt 0.435897 0.550000 +vt 0.538462 0.450000 +vt 0.525641 0.550000 +vt 0.525641 0.450000 +vt 0.564103 0.450000 +vt 0.551282 0.550000 +vt 0.551282 0.450000 +vt 0.487179 0.450000 +vt 0.474359 0.550000 +vt 0.474359 0.450000 +vt 0.512821 0.450000 +vt 0.500000 0.550000 +vt 0.500000 0.450000 +vt 0.512821 0.550000 +vt 0.538462 0.550000 +vt 0.461538 0.550000 +vt 0.461538 0.450000 +vt 0.487179 0.550000 +vt 0.256410 0.450000 +vt 0.230769 0.400000 +vt 0.256410 0.400000 +vt 0.358974 0.400000 +vt 0.384615 0.450000 +vt 0.358974 0.450000 +vt 0.282051 0.400000 +vt 0.333333 0.400000 +vt 0.307692 0.450000 +vt 0.307692 0.400000 +vt 0.282051 0.450000 +vt 0.333333 0.450000 +vt 0.538462 0.450000 +vt 0.525641 0.550000 +vt 0.525641 0.450000 +vt 0.564103 0.450000 +vt 0.551282 0.550000 +vt 0.551282 0.450000 +vt 0.487179 0.450000 +vt 0.474359 0.550000 +vt 0.474359 0.450000 +vt 0.512821 0.450000 +vt 0.500000 0.550000 +vt 0.500000 0.450000 +vt 0.512821 0.550000 +vt 0.538462 0.550000 +vt 0.461538 0.550000 +vt 0.461538 0.450000 +vt 0.487179 0.550000 +vt 0.461538 0.400000 +vt 0.435897 0.650000 +vt 0.564103 0.550000 +vt 0.230769 0.450000 +vt 0.384615 0.400000 +vt 0.564103 0.550000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.5774 0.5774 0.5774 +vn 0.5774 0.5774 0.5774 +vn 0.0000 0.8944 0.4472 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -0.1951 -0.9808 +vn 0.0000 -0.1951 0.9808 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +s off +f 168/113/17 103/114/17 102/115/17 +f 101/116/18 106/117/18 102/118/18 +f 99/119/19 104/120/19 100/121/19 +f 154/122/18 151/123/18 150/124/18 +f 152/125/19 157/126/19 156/127/19 +f 126/128/20 124/129/20 123/130/20 +f 127/131/21 130/132/21 124/129/21 +f 128/133/19 139/134/19 133/135/19 +f 123/130/22 132/136/22 126/128/22 +f 124/129/23 134/137/23 123/130/23 +f 135/138/17 137/139/17 134/140/17 +f 131/141/18 135/142/18 130/132/18 +f 129/143/19 137/144/19 132/136/19 +f 126/128/24 136/145/24 127/131/24 +f 146/146/18 145/147/18 141/148/18 +f 153/149/19 152/150/19 156/127/19 +f 101/151/23 99/152/23 100/153/23 +f 152/154/17 150/124/17 151/123/17 +f 158/155/23 151/156/23 159/157/23 +f 161/158/18 159/159/18 160/160/18 +f 161/158/17 157/126/17 162/161/17 +f 162/161/19 158/162/19 163/163/19 +f 163/164/20 159/159/20 164/165/20 +f 155/166/20 153/149/20 156/127/20 +f 160/160/24 156/127/24 157/126/24 +f 168/113/24 165/167/24 166/168/24 +f 103/169/25 165/167/25 104/120/25 +f 155/166/18 159/157/18 151/156/18 +f 105/170/26 168/113/26 106/117/26 +f 174/171/22 180/172/22 186/173/22 +f 175/174/19 169/175/19 177/176/19 +f 104/120/22 180/172/22 100/121/22 +f 105/170/21 175/177/21 177/178/21 +f 178/179/22 173/180/22 184/181/22 +f 175/177/21 174/182/21 181/183/21 +f 177/178/21 173/184/21 105/170/21 +f 177/185/23 172/186/23 183/187/23 +f 170/188/18 183/189/18 172/186/18 +f 100/153/23 174/190/23 101/151/23 +f 171/191/20 172/186/20 169/175/20 +f 174/182/21 183/192/21 181/183/21 +f 175/193/24 170/188/24 171/191/24 +f 178/194/18 182/195/18 180/196/18 +f 185/197/20 179/198/20 182/195/20 +f 179/198/19 184/199/19 186/200/19 +f 179/198/24 180/201/24 182/195/24 +f 176/202/23 178/203/23 184/204/23 +f 173/180/22 186/173/22 184/181/22 +f 105/170/27 173/184/27 167/205/27 +f 104/120/28 165/167/28 173/180/28 +f 167/205/29 173/206/29 165/167/29 +f 189/207/17 194/208/17 190/209/17 +f 188/210/20 192/211/20 187/212/20 +f 190/209/24 193/213/24 188/210/24 +f 187/212/23 191/214/23 189/215/23 +f 208/216/20 204/217/20 200/218/20 +f 207/219/17 209/220/17 201/221/17 +f 215/222/20 217/223/20 211/224/20 +f 230/225/20 228/226/20 234/227/20 +f 102/115/17 106/228/17 168/113/17 +f 168/113/17 166/168/17 103/114/17 +f 103/114/17 99/152/17 102/115/17 +f 101/116/18 105/170/18 106/117/18 +f 99/119/19 103/169/19 104/120/19 +f 154/122/18 155/166/18 151/123/18 +f 152/125/19 158/229/19 157/126/19 +f 126/128/20 127/131/20 124/129/20 +f 127/131/21 131/141/21 130/132/21 +f 144/230/19 143/231/19 128/133/19 +f 128/133/19 138/232/19 139/134/19 +f 139/134/19 140/233/19 133/135/19 +f 133/135/19 144/230/19 128/133/19 +f 123/130/22 129/143/22 132/136/22 +f 124/129/23 130/234/23 135/235/23 +f 135/235/23 134/137/23 124/129/23 +f 134/137/23 129/236/23 123/130/23 +f 135/138/17 136/145/17 137/139/17 +f 131/141/18 136/237/18 135/142/18 +f 129/143/19 134/238/19 137/144/19 +f 126/128/24 132/239/24 137/139/24 +f 137/139/24 136/145/24 126/128/24 +f 136/145/24 131/240/24 127/131/24 +f 145/147/18 125/241/18 142/242/18 +f 142/242/18 141/148/18 145/147/18 +f 141/148/18 148/243/18 146/146/18 +f 148/243/18 147/244/18 146/146/18 +f 153/149/19 149/245/19 152/150/19 +f 101/151/23 102/115/23 99/152/23 +f 152/154/17 149/246/17 150/124/17 +f 158/155/23 152/247/23 151/156/23 +f 161/158/18 164/165/18 159/159/18 +f 161/158/17 160/160/17 157/126/17 +f 162/161/19 157/126/19 158/162/19 +f 163/164/20 158/248/20 159/159/20 +f 155/166/20 154/122/20 153/149/20 +f 160/160/24 155/166/24 156/127/24 +f 168/113/24 167/205/24 165/167/24 +f 103/169/25 166/168/25 165/167/25 +f 155/166/18 160/160/18 159/157/18 +f 105/170/26 167/205/26 168/113/26 +f 174/171/22 100/121/22 180/172/22 +f 175/174/19 171/191/19 169/175/19 +f 104/120/22 178/179/22 180/172/22 +f 105/170/21 101/116/21 175/177/21 +f 178/179/22 104/120/22 173/180/22 +f 175/177/21 101/116/21 174/182/21 +f 177/178/21 183/192/21 173/184/21 +f 177/185/23 169/175/23 172/186/23 +f 170/188/18 181/249/18 183/189/18 +f 171/191/20 170/188/20 172/186/20 +f 174/182/21 173/184/21 183/192/21 +f 175/193/24 181/250/24 170/188/24 +f 178/194/18 185/197/18 182/195/18 +f 185/197/20 176/202/20 179/198/20 +f 179/198/19 176/202/19 184/199/19 +f 179/198/24 186/251/24 180/201/24 +f 176/202/23 185/197/23 178/203/23 +f 173/180/22 174/171/22 186/173/22 +f 189/207/17 191/252/17 194/208/17 +f 188/210/20 193/213/20 192/211/20 +f 190/209/24 194/208/24 193/213/24 +f 187/212/23 192/211/23 191/214/23 +f 200/218/20 198/253/20 196/254/20 +f 196/254/20 210/255/20 208/216/20 +f 208/216/20 206/256/20 204/217/20 +f 204/217/20 202/257/20 200/218/20 +f 200/218/20 196/254/20 208/216/20 +f 209/220/17 195/258/17 197/259/17 +f 197/259/17 199/260/17 209/220/17 +f 199/260/17 201/221/17 209/220/17 +f 201/221/17 203/261/17 205/262/17 +f 205/262/17 207/219/17 201/221/17 +f 211/224/20 212/263/20 213/264/20 +f 213/264/20 214/265/20 215/222/20 +f 215/222/20 216/266/20 217/223/20 +f 217/223/20 218/267/20 211/224/20 +f 211/224/20 213/264/20 215/222/20 +f 234/227/20 233/268/20 232/269/20 +f 232/269/20 231/270/20 230/225/20 +f 230/225/20 229/271/20 228/226/20 +f 228/226/20 227/272/20 234/227/20 +f 234/227/20 232/269/20 230/225/20 +s 1 +f 121/273/19 114/274/25 113/275/19 +f 119/276/23 112/277/30 111/278/23 +f 117/279/18 110/280/31 109/281/18 +f 115/282/24 108/283/26 107/284/24 +f 122/285/25 107/284/24 114/274/25 +f 120/286/30 113/275/19 112/277/30 +f 118/287/31 111/288/23 110/280/31 +f 116/289/26 109/281/18 108/283/26 +f 219/290/26 242/291/24 220/292/26 +f 221/293/18 220/292/26 222/294/18 +f 223/295/31 222/294/18 224/296/31 +f 225/297/23 224/296/31 226/298/23 +f 235/299/30 226/300/23 236/301/30 +f 237/302/19 236/301/30 238/303/19 +f 239/304/25 238/303/19 240/305/25 +f 241/306/24 240/305/25 242/291/24 +f 259/307/18 266/308/26 258/309/26 +f 261/310/23 268/311/31 260/312/31 +f 263/313/19 270/314/30 262/315/30 +f 257/316/24 272/317/25 264/318/25 +f 258/309/26 265/319/24 257/316/24 +f 260/312/31 267/320/18 259/307/18 +f 262/315/30 269/321/23 261/322/23 +f 264/318/25 271/323/19 263/313/19 +f 250/324/32 247/325/17 254/326/32 +f 255/327/33 256/328/20 246/329/33 +f 251/330/34 250/324/32 254/326/32 +f 253/331/35 244/332/23 252/333/23 +f 252/333/23 243/334/34 251/330/34 +f 255/327/33 245/335/35 253/331/35 +f 286/336/18 279/337/26 287/338/26 +f 284/339/23 277/340/31 285/341/31 +f 282/342/19 275/343/30 283/344/30 +f 288/345/24 273/346/25 281/347/25 +f 287/338/26 280/348/24 288/345/24 +f 285/341/31 278/349/18 286/336/18 +f 283/344/30 276/350/23 284/351/23 +f 281/347/25 274/352/19 282/342/19 +f 121/273/19 122/285/25 114/274/25 +f 119/276/23 120/286/30 112/277/30 +f 117/279/18 118/287/31 110/280/31 +f 115/282/24 116/289/26 108/283/26 +f 122/285/25 115/282/24 107/284/24 +f 120/286/30 121/273/19 113/275/19 +f 118/287/31 119/353/23 111/288/23 +f 116/289/26 117/279/18 109/281/18 +f 219/290/26 241/306/24 242/291/24 +f 221/293/18 219/290/26 220/292/26 +f 223/295/31 221/293/18 222/294/18 +f 225/297/23 223/295/31 224/296/31 +f 235/299/30 225/354/23 226/300/23 +f 237/302/19 235/299/30 236/301/30 +f 239/304/25 237/302/19 238/303/19 +f 241/306/24 239/304/25 240/305/25 +f 259/307/18 267/320/18 266/308/26 +f 261/310/23 269/355/23 268/311/31 +f 263/313/19 271/323/19 270/314/30 +f 257/316/24 265/319/24 272/317/25 +f 258/309/26 266/308/26 265/319/24 +f 260/312/31 268/311/31 267/320/18 +f 262/315/30 270/314/30 269/321/23 +f 264/318/25 272/317/25 271/323/19 +f 250/324/32 249/356/17 247/325/17 +f 255/327/33 248/357/20 256/328/20 +f 251/330/34 243/334/34 250/324/32 +f 253/331/35 245/335/35 244/332/23 +f 252/333/23 244/332/23 243/334/34 +f 255/327/33 246/329/33 245/335/35 +f 286/336/18 278/349/18 279/337/26 +f 284/339/23 276/358/23 277/340/31 +f 282/342/19 274/352/19 275/343/30 +f 288/345/24 280/348/24 273/346/25 +f 287/338/26 279/337/26 280/348/24 +f 285/341/31 277/340/31 278/349/18 +f 283/344/30 275/343/30 276/350/23 +f 281/347/25 273/346/25 274/352/19 +o Drum +v 0.536937 1.474437 -0.187500 +v 0.437500 1.515625 -0.187500 +v 0.437500 1.562500 -0.187500 +v 0.437500 1.562500 0.187500 +v 0.570082 1.507582 -0.187500 +v 0.570082 1.507582 0.187500 +v 0.625000 1.375000 -0.187500 +v 0.625000 1.375000 0.187500 +v 0.570082 1.242417 -0.187500 +v 0.570082 1.242417 0.187500 +v 0.437500 1.187500 -0.187500 +v 0.437500 1.187500 0.187500 +v 0.304917 1.242417 -0.187500 +v 0.304917 1.242417 0.187500 +v 0.250000 1.375000 -0.187500 +v 0.250000 1.375000 0.187500 +v 0.304917 1.507582 -0.187500 +v 0.304917 1.507582 0.187500 +v 0.578125 1.375000 -0.187500 +v 0.536937 1.275563 -0.187500 +v 0.437500 1.234375 -0.187500 +v 0.338063 1.275563 -0.187500 +v 0.296875 1.375000 -0.187500 +v 0.338063 1.474437 -0.187500 +v 0.437500 1.468750 -0.187500 +v 0.503791 1.441291 -0.187500 +v 0.531250 1.375000 -0.187500 +v 0.503791 1.308709 -0.187500 +v 0.437500 1.281250 -0.187500 +v 0.371209 1.308709 -0.187500 +v 0.343750 1.375000 -0.187500 +v 0.371209 1.441291 -0.187500 +v 0.536937 1.474437 0.187500 +v 0.437500 1.515625 0.187500 +v 0.578125 1.375000 0.187500 +v 0.536937 1.275563 0.187500 +v 0.437500 1.234375 0.187500 +v 0.338063 1.275563 0.187500 +v 0.296875 1.375000 0.187500 +v 0.338063 1.474437 0.187500 +v 0.437500 1.468750 0.187500 +v 0.503791 1.441291 0.187500 +v 0.531250 1.375000 0.187500 +v 0.503791 1.308709 0.187500 +v 0.437500 1.281250 0.187500 +v 0.371209 1.308709 0.187500 +v 0.343750 1.375000 0.187500 +v 0.371209 1.441291 0.187500 +v 0.371209 1.441291 0.177500 +v 0.437500 1.468750 0.177500 +v 0.343750 1.375000 0.177500 +v 0.338063 1.474437 0.177500 +v 0.437500 1.515625 0.177500 +v 0.296875 1.375000 0.177500 +v 0.371209 1.308709 0.177500 +v 0.338063 1.275563 0.177500 +v 0.437500 1.281250 0.177500 +v 0.437500 1.234375 0.177500 +v 0.503791 1.308709 0.177500 +v 0.536937 1.275563 0.177500 +v 0.531250 1.375000 0.177500 +v 0.578125 1.375000 0.177500 +v 0.503791 1.441291 0.177500 +v 0.536937 1.474437 0.177500 +v 0.371209 1.441291 -0.177500 +v 0.437500 1.468750 -0.177500 +v 0.343750 1.375000 -0.177500 +v 0.338063 1.474437 -0.177500 +v 0.437500 1.515625 -0.177500 +v 0.296875 1.375000 -0.177500 +v 0.371209 1.308709 -0.177500 +v 0.338063 1.275563 -0.177500 +v 0.437500 1.281250 -0.177500 +v 0.437500 1.234375 -0.177500 +v 0.503791 1.308709 -0.177500 +v 0.536937 1.275563 -0.177500 +v 0.531250 1.375000 -0.177500 +v 0.578125 1.375000 -0.177500 +v 0.503791 1.441291 -0.177500 +v 0.536937 1.474437 -0.177500 +v 0.437500 1.500000 0.156250 +v 0.437500 1.500000 -0.156250 +v 0.312500 1.562500 0.156250 +v 0.312500 1.562500 -0.156250 +v 0.312500 1.500000 0.156250 +v 0.312500 1.500000 -0.156250 +v 0.250000 1.562500 0.156250 +v 0.250000 1.562500 -0.156250 +v 0.250000 1.500000 0.156250 +v 0.250000 1.500000 -0.156250 +v 0.536937 1.474437 -0.187500 +v 0.437500 1.515625 -0.187500 +v 0.437500 1.562500 -0.187500 +v 0.437500 1.562500 0.187500 +v 0.570082 1.507582 -0.187500 +v 0.570082 1.507582 0.187500 +v 0.625000 1.375000 -0.187500 +v 0.625000 1.375000 0.187500 +v 0.570082 1.242417 -0.187500 +v 0.570082 1.242417 0.187500 +v 0.437500 1.187500 -0.187500 +v 0.437500 1.187500 0.187500 +v 0.304917 1.242417 -0.187500 +v 0.304917 1.242417 0.187500 +v 0.250000 1.375000 -0.187500 +v 0.250000 1.375000 0.187500 +v 0.304917 1.507582 -0.187500 +v 0.304917 1.507582 0.187500 +v 0.578125 1.375000 -0.187500 +v 0.536937 1.275563 -0.187500 +v 0.437500 1.234375 -0.187500 +v 0.338063 1.275563 -0.187500 +v 0.296875 1.375000 -0.187500 +v 0.338063 1.474437 -0.187500 +v 0.437500 1.468750 -0.187500 +v 0.503791 1.441291 -0.187500 +v 0.531250 1.375000 -0.187500 +v 0.503791 1.308709 -0.187500 +v 0.437500 1.281250 -0.187500 +v 0.371209 1.308709 -0.187500 +v 0.343750 1.375000 -0.187500 +v 0.371209 1.441291 -0.187500 +v 0.536937 1.474437 0.187500 +v 0.437500 1.515625 0.187500 +v 0.578125 1.375000 0.187500 +v 0.536937 1.275563 0.187500 +v 0.437500 1.234375 0.187500 +v 0.338063 1.275563 0.187500 +v 0.296875 1.375000 0.187500 +v 0.338063 1.474437 0.187500 +v 0.437500 1.468750 0.187500 +v 0.503791 1.441291 0.187500 +v 0.531250 1.375000 0.187500 +v 0.503791 1.308709 0.187500 +v 0.437500 1.281250 0.187500 +v 0.371209 1.308709 0.187500 +v 0.343750 1.375000 0.187500 +v 0.371209 1.441291 0.187500 +v 0.371209 1.441291 0.177500 +v 0.437500 1.468750 0.177500 +v 0.343750 1.375000 0.177500 +v 0.338063 1.474437 0.177500 +v 0.437500 1.515625 0.177500 +v 0.296875 1.375000 0.177500 +v 0.371209 1.308709 0.177500 +v 0.338063 1.275563 0.177500 +v 0.437500 1.281250 0.177500 +v 0.437500 1.234375 0.177500 +v 0.503791 1.308709 0.177500 +v 0.536937 1.275563 0.177500 +v 0.531250 1.375000 0.177500 +v 0.578125 1.375000 0.177500 +v 0.503791 1.441291 0.177500 +v 0.536937 1.474437 0.177500 +v 0.371209 1.441291 -0.177500 +v 0.437500 1.468750 -0.177500 +v 0.343750 1.375000 -0.177500 +v 0.338063 1.474437 -0.177500 +v 0.437500 1.515625 -0.177500 +v 0.296875 1.375000 -0.177500 +v 0.371209 1.308709 -0.177500 +v 0.338063 1.275563 -0.177500 +v 0.437500 1.281250 -0.177500 +v 0.437500 1.234375 -0.177500 +v 0.503791 1.308709 -0.177500 +v 0.536937 1.275563 -0.177500 +v 0.531250 1.375000 -0.177500 +v 0.578125 1.375000 -0.177500 +v 0.503791 1.441291 -0.177500 +v 0.536937 1.474437 -0.177500 +vt 0.860168 0.512500 +vt 0.878205 0.477327 +vt 0.896242 0.512500 +vt 0.961538 0.050000 +vt 0.948718 0.100000 +vt 0.948718 0.050000 +vt 0.961538 0.000000 +vt 0.948718 0.000000 +vt 0.961538 0.400000 +vt 0.948718 0.350000 +vt 0.961538 0.350000 +vt 0.948718 0.300000 +vt 0.961538 0.300000 +vt 0.948718 0.250000 +vt 0.961538 0.250000 +vt 0.961538 0.100000 +vt 0.948718 0.150000 +vt 0.961538 0.200000 +vt 0.948718 0.200000 +vt 0.839743 0.477327 +vt 0.857781 0.512500 +vt 0.839743 0.547673 +vt 0.871795 0.150000 +vt 0.858974 0.200000 +vt 0.858974 0.150000 +vt 0.858974 0.100000 +vt 0.871795 0.100000 +vt 0.858974 0.050000 +vt 0.871795 0.050000 +vt 0.858974 0.000000 +vt 0.871795 -0.000000 +vt 0.871795 0.400000 +vt 0.858974 0.350000 +vt 0.871795 0.350000 +vt 0.871795 0.300000 +vt 0.858974 0.300000 +vt 0.858974 0.250000 +vt 0.871795 0.250000 +vt 0.871795 0.200000 +vt 0.833333 0.150000 +vt 0.846154 0.200000 +vt 0.833333 0.175000 +vt 0.833333 0.100000 +vt 0.846154 0.150000 +vt 0.833333 0.125000 +vt 0.846154 0.050000 +vt 0.833333 0.075000 +vt 0.833333 0.050000 +vt 0.846154 0.000000 +vt 0.833333 0.025000 +vt 0.833333 0.000000 +vt 0.833333 0.350000 +vt 0.846154 0.400000 +vt 0.833333 0.375000 +vt 0.833333 0.300000 +vt 0.846154 0.350000 +vt 0.833333 0.325000 +vt 0.846154 0.250000 +vt 0.833333 0.275000 +vt 0.833333 0.250000 +vt 0.833333 0.225000 +vt 0.833333 0.200000 +vt 0.987179 0.075000 +vt 0.974359 0.050000 +vt 0.987179 0.050000 +vt 0.987179 0.100000 +vt 0.974359 0.150000 +vt 0.974359 0.100000 +vt 0.987179 0.350000 +vt 0.974359 0.400000 +vt 0.974359 0.350000 +vt 0.987179 0.300000 +vt 0.974359 0.300000 +vt 0.987179 0.275000 +vt 0.974359 0.250000 +vt 0.987179 0.250000 +vt 0.987179 0.225000 +vt 0.974359 0.200000 +vt 0.987179 0.200000 +vt 0.987179 0.025000 +vt 0.974359 0.000000 +vt 0.987179 -0.000000 +vt 0.987179 0.150000 +vt 0.897436 0.400000 +vt 0.833333 0.450000 +vt 0.833333 0.400000 +vt 0.820513 0.450000 +vt 0.897436 0.450000 +vt 0.910256 0.450000 +vt 0.820513 0.475000 +vt 0.974359 0.450000 +vt 0.910256 0.475000 +vt 0.897436 0.475000 +vt 0.833333 0.475000 +vt 0.890959 0.537371 +vt 0.878205 0.547673 +vt 0.865451 0.537371 +vt 0.865451 0.487629 +vt 0.890959 0.487629 +vt 0.948718 0.400000 +vt 0.961538 0.150000 +vt 0.826989 0.537371 +vt 0.821706 0.512500 +vt 0.826989 0.487629 +vt 0.852498 0.487629 +vt 0.852498 0.537371 +vt 0.858974 0.400000 +vt 0.846154 0.100000 +vt 0.846154 0.300000 +vt 0.987179 0.125000 +vt 0.987179 0.375000 +vt 0.987179 0.325000 +vt 0.987179 0.175000 +vt 0.974359 0.475000 +vt 0.961538 0.000000 +vt 0.974359 0.050000 +vt 0.961538 0.050000 +vt 0.961538 0.250000 +vt 0.974359 0.300000 +vt 0.961538 0.300000 +vt 0.871795 0.200000 +vt 0.948718 0.150000 +vt 0.948718 0.200000 +vt 0.871795 0.150000 +vt 0.948718 0.100000 +vt 1.000000 0.175000 +vt 0.987179 0.150000 +vt 1.000000 0.150000 +vt 0.871795 0.100000 +vt 0.948718 0.050000 +vt 1.000000 0.025000 +vt 0.987179 -0.000000 +vt 1.000000 -0.000000 +vt 0.871795 0.050000 +vt 0.948718 0.000000 +vt 0.961538 0.200000 +vt 0.974359 0.250000 +vt 0.871795 0.400000 +vt 0.948718 0.350000 +vt 0.948718 0.400000 +vt 0.974359 0.100000 +vt 0.961538 0.100000 +vt 0.871795 0.350000 +vt 0.948718 0.300000 +vt 0.871795 0.300000 +vt 0.948718 0.250000 +vt 0.974359 0.350000 +vt 0.961538 0.350000 +vt 1.000000 0.275000 +vt 0.987179 0.250000 +vt 1.000000 0.250000 +vt 0.871795 0.250000 +vt 0.858974 0.200000 +vt 0.846154 0.150000 +vt 0.858974 0.150000 +vt 0.820513 0.200000 +vt 0.833333 0.225000 +vt 0.820513 0.225000 +vt 0.858974 0.400000 +vt 0.846154 0.350000 +vt 0.858974 0.350000 +vt 0.820513 0.150000 +vt 0.833333 0.175000 +vt 0.820513 0.175000 +vt 0.820513 0.350000 +vt 0.833333 0.375000 +vt 0.820513 0.375000 +vt 0.846154 0.100000 +vt 0.858974 0.100000 +vt 0.846154 0.300000 +vt 0.858974 0.300000 +vt 0.820513 0.100000 +vt 0.833333 0.125000 +vt 0.820513 0.125000 +vt 0.820513 0.000000 +vt 0.833333 0.025000 +vt 0.820513 0.025000 +vt 0.820513 0.250000 +vt 0.833333 0.275000 +vt 0.820513 0.275000 +vt 0.858974 0.050000 +vt 0.846154 0.000000 +vt 0.858974 0.000000 +vt 0.858974 0.250000 +vt 0.846154 0.200000 +vt 0.820513 0.050000 +vt 0.833333 0.075000 +vt 0.820513 0.075000 +vt 0.846154 0.250000 +vt 0.846154 0.050000 +vt 0.820513 0.300000 +vt 0.833333 0.325000 +vt 0.820513 0.325000 +vt 0.961538 0.150000 +vt 0.974359 0.200000 +vt 1.000000 0.375000 +vt 0.987179 0.350000 +vt 1.000000 0.350000 +vt 1.000000 0.125000 +vt 0.987179 0.100000 +vt 1.000000 0.100000 +vt 1.000000 0.225000 +vt 0.987179 0.200000 +vt 1.000000 0.200000 +vt 0.974359 0.400000 +vt 0.961538 0.400000 +vt 0.974359 0.150000 +vt 1.000000 0.325000 +vt 0.987179 0.300000 +vt 1.000000 0.300000 +vt 1.000000 0.075000 +vt 0.987179 0.050000 +vt 1.000000 0.050000 +vt 0.974359 0.000000 +vt 0.987179 0.175000 +vt 0.987179 0.025000 +vt 0.871795 -0.000000 +vt 0.987179 0.275000 +vt 0.833333 0.200000 +vt 0.846154 0.400000 +vt 0.833333 0.150000 +vt 0.833333 0.350000 +vt 0.833333 0.100000 +vt 0.833333 0.000000 +vt 0.833333 0.250000 +vt 0.833333 0.050000 +vt 0.833333 0.300000 +vt 0.987179 0.375000 +vt 0.987179 0.125000 +vt 0.987179 0.225000 +vt 0.987179 0.325000 +vt 0.987179 0.075000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.4472 0.8944 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 315/359/36 317/360/36 319/361/36 +f 308/362/36 295/363/36 297/364/36 +f 309/365/36 297/364/36 299/366/36 +f 309/367/36 301/368/36 310/369/36 +f 310/369/36 303/370/36 311/371/36 +f 311/371/36 305/372/36 312/373/36 +f 307/374/36 293/375/36 295/363/36 +f 290/376/36 305/372/36 291/377/36 +f 293/375/36 290/376/36 291/377/36 +f 333/378/37 331/379/37 329/380/37 +f 294/381/37 322/382/37 321/383/37 +f 294/381/37 323/384/37 296/385/37 +f 296/385/37 324/386/37 298/387/37 +f 298/387/37 325/388/37 300/389/37 +f 300/390/37 326/391/37 302/392/37 +f 304/393/37 326/391/37 327/394/37 +f 304/393/37 328/395/37 306/396/37 +f 306/396/37 322/382/37 292/397/37 +f 351/398/37 341/399/37 338/400/37 +f 349/401/37 352/402/37 351/403/37 +f 348/404/37 349/405/37 347/406/37 +f 346/407/37 347/408/37 345/409/37 +f 343/410/37 346/411/37 345/412/37 +f 339/413/37 344/414/37 343/415/37 +f 340/416/37 339/417/37 337/418/37 +f 341/399/37 337/419/37 338/420/37 +f 365/421/36 364/422/36 363/423/36 +f 365/424/36 368/425/36 366/426/36 +f 359/427/36 362/428/36 360/429/36 +f 355/430/36 360/429/36 358/431/36 +f 355/432/36 356/433/36 353/434/36 +f 353/435/36 357/436/36 354/437/36 +f 363/438/36 362/439/36 361/440/36 +f 367/441/36 357/436/36 368/425/36 +f 370/442/38 371/443/38 369/444/38 +f 369/444/37 371/443/37 373/445/37 +f 372/446/36 370/442/36 374/447/36 +f 371/443/37 377/448/37 373/445/37 +f 373/449/39 378/450/39 374/447/39 +f 374/447/36 376/451/36 372/446/36 +f 372/446/40 375/452/40 371/443/40 +f 319/361/36 320/453/36 313/454/36 +f 313/454/36 314/455/36 315/359/36 +f 315/359/36 316/456/36 317/360/36 +f 317/360/36 318/457/36 319/361/36 +f 319/361/36 313/454/36 315/359/36 +f 308/362/36 307/374/36 295/363/36 +f 309/365/36 308/362/36 297/364/36 +f 309/367/36 299/458/36 301/368/36 +f 310/369/36 301/368/36 303/370/36 +f 311/371/36 303/370/36 305/372/36 +f 307/374/36 289/459/36 293/375/36 +f 290/376/36 312/373/36 305/372/36 +f 293/375/36 289/459/36 290/376/36 +f 329/380/37 336/460/37 335/461/37 +f 335/461/37 334/462/37 333/378/37 +f 333/378/37 332/463/37 331/379/37 +f 331/379/37 330/464/37 329/380/37 +f 329/380/37 335/461/37 333/378/37 +f 294/381/37 292/397/37 322/382/37 +f 294/381/37 321/383/37 323/384/37 +f 296/385/37 323/384/37 324/386/37 +f 298/387/37 324/386/37 325/388/37 +f 300/390/37 325/465/37 326/391/37 +f 304/393/37 302/392/37 326/391/37 +f 304/393/37 327/394/37 328/395/37 +f 306/396/37 328/395/37 322/382/37 +f 351/398/37 352/402/37 341/399/37 +f 349/401/37 350/466/37 352/402/37 +f 348/404/37 350/466/37 349/405/37 +f 346/407/37 348/404/37 347/408/37 +f 343/410/37 344/414/37 346/411/37 +f 339/413/37 342/467/37 344/414/37 +f 340/416/37 342/467/37 339/417/37 +f 341/399/37 340/416/37 337/419/37 +f 365/421/36 366/426/36 364/422/36 +f 365/424/36 367/468/36 368/425/36 +f 359/427/36 361/469/36 362/428/36 +f 355/430/36 359/470/36 360/429/36 +f 355/432/36 358/431/36 356/433/36 +f 353/435/36 356/433/36 357/436/36 +f 363/438/36 364/422/36 362/439/36 +f 367/441/36 354/471/36 357/436/36 +f 370/442/38 372/446/38 371/443/38 +f 371/443/37 375/452/37 377/448/37 +f 373/449/39 377/472/39 378/450/39 +f 374/447/36 378/450/36 376/451/36 +f 372/446/40 376/451/40 375/452/40 +s 1 +f 399/473/40 454/474/41 398/475/41 +f 402/476/42 448/477/43 401/478/43 +f 382/479/40 383/480/44 381/481/40 +f 384/482/44 385/483/43 383/480/44 +f 403/484/40 457/485/44 404/486/44 +f 386/487/43 387/488/42 385/483/43 +f 406/489/42 451/490/39 407/491/39 +f 388/492/42 389/493/39 387/488/42 +f 380/494/39 446/495/42 402/476/42 +f 390/496/39 391/497/45 389/498/39 +f 398/475/41 456/499/46 397/500/46 +f 392/501/45 393/502/46 391/497/45 +f 394/503/46 395/504/41 393/502/46 +f 401/478/43 450/505/44 400/506/44 +f 409/507/46 443/508/41 410/509/41 +f 396/510/41 381/481/40 395/504/41 +f 412/511/39 442/512/45 411/513/45 +f 419/514/40 427/515/41 426/516/41 +f 415/517/40 434/518/44 416/519/44 +f 420/520/44 428/521/40 419/522/40 +f 424/523/45 435/524/39 423/525/39 +f 411/513/45 440/526/46 413/527/46 +f 416/519/44 432/528/43 417/529/43 +f 421/530/43 441/531/44 420/532/44 +f 423/533/39 437/534/42 422/535/42 +f 426/536/41 429/537/46 425/538/46 +f 414/539/41 436/540/40 415/541/40 +f 418/542/42 431/543/39 412/511/39 +f 422/544/42 439/545/43 421/546/43 +f 417/529/43 430/547/42 418/542/42 +f 413/527/46 438/548/41 414/539/41 +f 425/549/46 433/550/45 424/551/45 +f 379/552/45 447/553/39 380/494/39 +f 407/554/39 449/555/45 408/556/45 +f 404/557/44 455/558/43 405/559/43 +f 410/560/41 444/561/40 403/562/40 +f 400/506/44 452/563/40 399/564/40 +f 397/500/46 458/565/45 379/552/45 +f 408/566/45 445/567/46 409/568/46 +f 405/569/43 453/570/42 406/571/42 +f 399/473/40 452/572/40 454/474/41 +f 402/476/42 446/495/42 448/477/43 +f 382/479/40 384/482/44 383/480/44 +f 384/482/44 386/487/43 385/483/43 +f 403/484/40 444/573/40 457/485/44 +f 386/487/43 388/492/42 387/488/42 +f 406/489/42 453/574/42 451/490/39 +f 388/492/42 390/575/39 389/493/39 +f 380/494/39 447/553/39 446/495/42 +f 390/496/39 392/501/45 391/497/45 +f 398/475/41 454/474/41 456/499/46 +f 392/501/45 394/503/46 393/502/46 +f 394/503/46 396/510/41 395/504/41 +f 401/478/43 448/477/43 450/505/44 +f 409/507/46 445/576/46 443/508/41 +f 396/510/41 382/479/40 381/481/40 +f 412/511/39 431/543/39 442/512/45 +f 419/514/40 428/577/40 427/515/41 +f 415/517/40 436/578/40 434/518/44 +f 420/520/44 441/579/44 428/521/40 +f 424/523/45 433/580/45 435/524/39 +f 411/513/45 442/512/45 440/526/46 +f 416/519/44 434/518/44 432/528/43 +f 421/530/43 439/581/43 441/531/44 +f 423/533/39 435/582/39 437/534/42 +f 426/536/41 427/583/41 429/537/46 +f 414/539/41 438/548/41 436/540/40 +f 418/542/42 430/547/42 431/543/39 +f 422/544/42 437/584/42 439/545/43 +f 417/529/43 432/528/43 430/547/42 +f 413/527/46 440/526/46 438/548/41 +f 425/549/46 429/585/46 433/550/45 +f 379/552/45 458/565/45 447/553/39 +f 407/554/39 451/586/39 449/555/45 +f 404/557/44 457/587/44 455/558/43 +f 410/560/41 443/588/41 444/561/40 +f 400/506/44 450/505/44 452/563/40 +f 397/500/46 456/499/46 458/565/45 +f 408/566/45 449/589/45 445/567/46 +f 405/569/43 455/590/43 453/570/42 +o BarrelR +v -0.125000 1.546875 1.000000 +v -0.158146 1.533146 1.000000 +v -0.171875 1.500000 1.000000 +v -0.158146 1.466854 1.000000 +v -0.125000 1.453125 1.000000 +v -0.091854 1.466854 1.000000 +v -0.078125 1.500000 1.000000 +v -0.091854 1.533146 1.000000 +v -0.125000 1.562500 1.000000 +v -0.169194 1.544194 1.000000 +v -0.187500 1.500000 1.000000 +v -0.169194 1.455806 1.000000 +v -0.125000 1.437500 1.000000 +v -0.080806 1.455806 1.000000 +v -0.062500 1.500000 1.000000 +v -0.080806 1.544194 1.000000 +v -0.125000 1.562500 1.250000 +v -0.169194 1.544194 1.250000 +v -0.187500 1.500000 1.250000 +v -0.169194 1.455806 1.250000 +v -0.125000 1.437500 1.250000 +v -0.080806 1.455806 1.250000 +v -0.062500 1.500000 1.250000 +v -0.080806 1.544194 1.250000 +v -0.125000 1.531250 1.250000 +v -0.147097 1.522097 1.250000 +v -0.156250 1.500000 1.250000 +v -0.147097 1.477903 1.250000 +v -0.125000 1.468750 1.250000 +v -0.102903 1.477903 1.250000 +v -0.093750 1.500000 1.250000 +v -0.102903 1.522097 1.250000 +v -0.125000 1.531250 1.000000 +v -0.147097 1.522097 1.000000 +v -0.156250 1.500000 1.000000 +v -0.147097 1.477903 1.000000 +v -0.125000 1.468750 1.000000 +v -0.102903 1.477903 1.000000 +v -0.093750 1.500000 1.000000 +v -0.102903 1.522097 1.000000 +v -0.125000 1.546875 0.500000 +v -0.158146 1.533146 0.500000 +v -0.171875 1.500000 0.500000 +v -0.158146 1.466854 0.500000 +v -0.125000 1.453125 0.500000 +v -0.091854 1.466854 0.500000 +v -0.078125 1.500000 0.500000 +v -0.091854 1.533146 0.500000 +v -0.125000 1.546875 1.000000 +v -0.158146 1.533146 1.000000 +v -0.171875 1.500000 1.000000 +v -0.158146 1.466854 1.000000 +v -0.125000 1.453125 1.000000 +v -0.091854 1.466854 1.000000 +v -0.078125 1.500000 1.000000 +v -0.091854 1.533146 1.000000 +v -0.125000 1.562500 1.000000 +v -0.169194 1.544194 1.000000 +v -0.187500 1.500000 1.000000 +v -0.169194 1.455806 1.000000 +v -0.125000 1.437500 1.000000 +v -0.080806 1.455806 1.000000 +v -0.062500 1.500000 1.000000 +v -0.080806 1.544194 1.000000 +v -0.125000 1.562500 1.250000 +v -0.169194 1.544194 1.250000 +v -0.187500 1.500000 1.250000 +v -0.169194 1.455806 1.250000 +v -0.125000 1.437500 1.250000 +v -0.080806 1.455806 1.250000 +v -0.062500 1.500000 1.250000 +v -0.080806 1.544194 1.250000 +v -0.125000 1.531250 1.250000 +v -0.147097 1.522097 1.250000 +v -0.156250 1.500000 1.250000 +v -0.147097 1.477903 1.250000 +v -0.125000 1.468750 1.250000 +v -0.102903 1.477903 1.250000 +v -0.093750 1.500000 1.250000 +v -0.102903 1.522097 1.250000 +v -0.125000 1.531250 1.000000 +v -0.147097 1.522097 1.000000 +v -0.156250 1.500000 1.000000 +v -0.147097 1.477903 1.000000 +v -0.125000 1.468750 1.000000 +v -0.102903 1.477903 1.000000 +v -0.093750 1.500000 1.000000 +v -0.102903 1.522097 1.000000 +vt 0.551282 0.750000 +vt 0.564103 0.775000 +vt 0.551282 0.775000 +vt 0.538462 0.775000 +vt 0.538462 0.750000 +vt 0.525641 0.750000 +vt 0.525641 0.775000 +vt 0.512821 0.775000 +vt 0.512821 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.775000 +vt 0.487179 0.775000 +vt 0.487179 0.750000 +vt 0.576923 0.750000 +vt 0.589744 0.775000 +vt 0.576923 0.775000 +vt 0.564103 0.750000 +vt 0.512821 0.875000 +vt 0.525641 0.900000 +vt 0.512821 0.900000 +vt 0.487179 0.875000 +vt 0.500000 0.900000 +vt 0.487179 0.900000 +vt 0.564103 0.875000 +vt 0.576923 0.900000 +vt 0.564103 0.900000 +vt 0.538462 0.875000 +vt 0.551282 0.900000 +vt 0.538462 0.900000 +vt 0.525641 0.875000 +vt 0.500000 0.875000 +vt 0.589744 0.875000 +vt 0.576923 0.875000 +vt 0.551282 0.875000 +vt 0.480769 0.601677 +vt 0.486319 0.612500 +vt 0.480769 0.623322 +vt 0.589744 0.750000 +vt 0.589744 0.900000 +vt 0.476845 0.620152 +vt 0.475219 0.612500 +vt 0.476845 0.604847 +vt 0.484694 0.604847 +vt 0.484694 0.620152 +vt 0.589744 0.900000 +vt 0.576923 1.000000 +vt 0.576923 0.900000 +vt 0.512821 0.900000 +vt 0.500000 1.000000 +vt 0.500000 0.900000 +vt 0.538462 0.900000 +vt 0.525641 1.000000 +vt 0.525641 0.900000 +vt 0.551282 0.900000 +vt 0.538462 1.000000 +vt 0.564103 1.000000 +vt 0.564103 0.900000 +vt 0.487179 1.000000 +vt 0.487179 0.900000 +vt 0.512821 1.000000 +vt 0.551282 1.000000 +vt 0.576923 0.775000 +vt 0.564103 0.875000 +vt 0.564103 0.775000 +vt 0.500000 0.775000 +vt 0.487179 0.875000 +vt 0.487179 0.775000 +vt 0.525641 0.775000 +vt 0.512821 0.875000 +vt 0.512821 0.775000 +vt 0.551282 0.875000 +vt 0.551282 0.775000 +vt 0.589744 0.775000 +vt 0.576923 0.875000 +vt 0.500000 0.875000 +vt 0.538462 0.775000 +vt 0.525641 0.875000 +vt 0.538462 0.875000 +vt 0.500000 0.550000 +vt 0.487179 0.750000 +vt 0.487179 0.550000 +vt 0.525641 0.550000 +vt 0.512821 0.750000 +vt 0.512821 0.550000 +vt 0.564103 0.550000 +vt 0.551282 0.750000 +vt 0.551282 0.550000 +vt 0.589744 0.550000 +vt 0.576923 0.750000 +vt 0.576923 0.550000 +vt 0.500000 0.750000 +vt 0.538462 0.550000 +vt 0.525641 0.750000 +vt 0.538462 0.750000 +vt 0.564103 0.750000 +vt 0.589744 1.000000 +vt 0.589744 0.875000 +vt 0.589744 0.750000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 460/591/47 469/592/47 468/593/47 +f 460/591/47 467/594/47 459/595/47 +f 466/596/47 467/594/47 474/597/47 +f 466/596/47 473/598/47 465/599/47 +f 464/600/47 473/598/47 472/601/47 +f 464/600/47 471/602/47 463/603/47 +f 462/604/47 471/605/47 470/606/47 +f 462/604/47 469/592/47 461/607/47 +f 481/608/48 490/609/48 489/610/48 +f 479/611/48 488/612/48 487/613/48 +f 477/614/48 486/615/48 485/616/48 +f 475/617/48 484/618/48 483/619/48 +f 475/617/48 490/609/48 482/620/48 +f 481/608/48 488/612/48 480/621/48 +f 479/622/48 486/615/48 478/623/48 +f 477/614/48 484/618/48 476/624/48 +f 495/625/48 497/626/48 491/627/48 +f 460/591/47 461/607/47 469/592/47 +f 460/591/47 468/593/47 467/594/47 +f 466/596/47 459/595/47 467/594/47 +f 466/596/47 474/597/47 473/598/47 +f 464/600/47 465/599/47 473/598/47 +f 464/600/47 472/601/47 471/602/47 +f 462/604/47 463/628/47 471/605/47 +f 462/604/47 470/606/47 469/592/47 +f 481/608/48 482/620/48 490/609/48 +f 479/611/48 480/621/48 488/612/48 +f 477/614/48 478/623/48 486/615/48 +f 475/617/48 476/624/48 484/618/48 +f 475/617/48 483/619/48 490/609/48 +f 481/608/48 489/610/48 488/612/48 +f 479/622/48 487/629/48 486/615/48 +f 477/614/48 485/616/48 484/618/48 +f 491/627/48 492/630/48 493/631/48 +f 493/631/48 494/632/48 495/625/48 +f 495/625/48 496/633/48 497/626/48 +f 497/626/48 498/634/48 491/627/48 +f 491/627/48 493/631/48 495/625/48 +s 1 +f 535/635/49 542/636/50 534/637/50 +f 537/638/51 544/639/52 536/640/52 +f 531/641/53 546/642/54 538/643/54 +f 532/644/55 539/645/53 531/641/53 +f 534/637/50 541/646/56 533/647/56 +f 536/640/52 543/648/49 535/649/49 +f 538/643/54 545/650/51 537/638/51 +f 533/647/56 540/651/55 532/644/55 +f 518/652/54 525/653/51 517/654/51 +f 520/655/55 527/656/53 519/657/53 +f 522/658/50 529/659/56 521/660/56 +f 517/654/51 524/661/52 516/662/52 +f 519/663/53 526/664/54 518/652/54 +f 521/660/56 528/665/55 520/655/55 +f 515/666/49 530/667/50 522/658/50 +f 516/662/52 523/668/49 515/666/49 +f 504/669/55 511/670/53 503/671/53 +f 506/672/50 513/673/56 505/674/56 +f 501/675/51 508/676/52 500/677/52 +f 503/678/53 510/679/54 502/680/54 +f 505/674/56 512/681/55 504/669/55 +f 499/682/49 514/683/50 506/672/50 +f 500/677/52 507/684/49 499/682/49 +f 502/680/54 509/685/51 501/675/51 +f 535/635/49 543/686/49 542/636/50 +f 537/638/51 545/650/51 544/639/52 +f 531/641/53 539/645/53 546/642/54 +f 532/644/55 540/651/55 539/645/53 +f 534/637/50 542/636/50 541/646/56 +f 536/640/52 544/639/52 543/648/49 +f 538/643/54 546/642/54 545/650/51 +f 533/647/56 541/646/56 540/651/55 +f 518/652/54 526/664/54 525/653/51 +f 520/655/55 528/665/55 527/656/53 +f 522/658/50 530/667/50 529/659/56 +f 517/654/51 525/653/51 524/661/52 +f 519/663/53 527/687/53 526/664/54 +f 521/660/56 529/659/56 528/665/55 +f 515/666/49 523/668/49 530/667/50 +f 516/662/52 524/661/52 523/668/49 +f 504/669/55 512/681/55 511/670/53 +f 506/672/50 514/683/50 513/673/56 +f 501/675/51 509/685/51 508/676/52 +f 503/678/53 511/688/53 510/679/54 +f 505/674/56 513/673/56 512/681/55 +f 499/682/49 507/684/49 514/683/50 +f 500/677/52 508/676/52 507/684/49 +f 502/680/54 510/679/54 509/685/51 +o BarrelL +v 0.147097 1.522097 1.000000 +v 0.156250 1.500000 1.000000 +v 0.147097 1.477903 1.000000 +v 0.125000 1.468750 1.000000 +v 0.102903 1.477903 1.000000 +v 0.093750 1.500000 1.000000 +v 0.102903 1.522097 1.000000 +v 0.125000 1.531250 1.000000 +v 0.147097 1.522097 1.250000 +v 0.156250 1.500000 1.250000 +v 0.147097 1.477903 1.250000 +v 0.125000 1.468750 1.250000 +v 0.102903 1.477903 1.250000 +v 0.093750 1.500000 1.250000 +v 0.102903 1.522097 1.250000 +v 0.125000 1.531250 1.250000 +v 0.169194 1.544194 1.250000 +v 0.187500 1.500000 1.250000 +v 0.169194 1.455806 1.250000 +v 0.125000 1.437500 1.250000 +v 0.080806 1.455806 1.250000 +v 0.062500 1.500000 1.250000 +v 0.080806 1.544194 1.250000 +v 0.125000 1.562500 1.250000 +v 0.169194 1.544194 1.000000 +v 0.187500 1.500000 1.000000 +v 0.169194 1.455806 1.000000 +v 0.125000 1.437500 1.000000 +v 0.080806 1.455806 1.000000 +v 0.062500 1.500000 1.000000 +v 0.080806 1.544194 1.000000 +v 0.125000 1.562500 1.000000 +v 0.158146 1.533146 1.000000 +v 0.171875 1.500000 1.000000 +v 0.158146 1.466854 1.000000 +v 0.125000 1.453125 1.000000 +v 0.091854 1.466854 1.000000 +v 0.078125 1.500000 1.000000 +v 0.091854 1.533146 1.000000 +v 0.125000 1.546875 1.000000 +v 0.147097 1.522097 1.000000 +v 0.156250 1.500000 1.000000 +v 0.147097 1.477903 1.000000 +v 0.125000 1.468750 1.000000 +v 0.102903 1.477903 1.000000 +v 0.093750 1.500000 1.000000 +v 0.102903 1.522097 1.000000 +v 0.125000 1.531250 1.000000 +v 0.147097 1.522097 1.250000 +v 0.156250 1.500000 1.250000 +v 0.147097 1.477903 1.250000 +v 0.125000 1.468750 1.250000 +v 0.102903 1.477903 1.250000 +v 0.093750 1.500000 1.250000 +v 0.102903 1.522097 1.250000 +v 0.125000 1.531250 1.250000 +v 0.169194 1.544194 1.250000 +v 0.187500 1.500000 1.250000 +v 0.169194 1.455806 1.250000 +v 0.125000 1.437500 1.250000 +v 0.080806 1.455806 1.250000 +v 0.062500 1.500000 1.250000 +v 0.080806 1.544194 1.250000 +v 0.125000 1.562500 1.250000 +v 0.169194 1.544194 1.000000 +v 0.187500 1.500000 1.000000 +v 0.169194 1.455806 1.000000 +v 0.125000 1.437500 1.000000 +v 0.080806 1.455806 1.000000 +v 0.062500 1.500000 1.000000 +v 0.080806 1.544194 1.000000 +v 0.125000 1.562500 1.000000 +v 0.158146 1.533146 1.000000 +v 0.171875 1.500000 1.000000 +v 0.158146 1.466854 1.000000 +v 0.125000 1.453125 1.000000 +v 0.091854 1.466854 1.000000 +v 0.078125 1.500000 1.000000 +v 0.091854 1.533146 1.000000 +v 0.125000 1.546875 1.000000 +v 0.158146 1.533146 0.500000 +v 0.171875 1.500000 0.500000 +v 0.158146 1.466854 0.500000 +v 0.125000 1.453125 0.500000 +v 0.091854 1.466854 0.500000 +v 0.078125 1.500000 0.500000 +v 0.091854 1.533146 0.500000 +v 0.125000 1.546875 0.500000 +vt 0.480769 0.601677 +vt 0.486319 0.612500 +vt 0.480769 0.623322 +vt 0.564103 0.875000 +vt 0.551282 0.900000 +vt 0.551282 0.875000 +vt 0.589744 0.875000 +vt 0.576923 0.900000 +vt 0.576923 0.875000 +vt 0.512821 0.875000 +vt 0.500000 0.900000 +vt 0.500000 0.875000 +vt 0.538462 0.875000 +vt 0.525641 0.900000 +vt 0.525641 0.875000 +vt 0.538462 0.900000 +vt 0.564103 0.900000 +vt 0.487179 0.875000 +vt 0.487179 0.900000 +vt 0.512821 0.900000 +vt 0.576923 0.750000 +vt 0.564103 0.775000 +vt 0.564103 0.750000 +vt 0.589744 0.775000 +vt 0.576923 0.775000 +vt 0.500000 0.750000 +vt 0.487179 0.775000 +vt 0.487179 0.750000 +vt 0.512821 0.775000 +vt 0.500000 0.775000 +vt 0.525641 0.750000 +vt 0.512821 0.750000 +vt 0.538462 0.750000 +vt 0.525641 0.775000 +vt 0.551282 0.750000 +vt 0.538462 0.775000 +vt 0.551282 0.775000 +vt 0.476845 0.620152 +vt 0.475219 0.612500 +vt 0.476845 0.604847 +vt 0.484694 0.604847 +vt 0.484694 0.620152 +vt 0.589744 0.900000 +vt 0.589744 0.750000 +vt 0.564103 0.900000 +vt 0.551282 1.000000 +vt 0.551282 0.900000 +vt 0.525641 0.900000 +vt 0.512821 1.000000 +vt 0.512821 0.900000 +vt 0.500000 0.900000 +vt 0.487179 1.000000 +vt 0.487179 0.900000 +vt 0.576923 0.900000 +vt 0.564103 1.000000 +vt 0.538462 1.000000 +vt 0.538462 0.900000 +vt 0.525641 1.000000 +vt 0.500000 1.000000 +vt 0.589744 0.900000 +vt 0.576923 1.000000 +vt 0.576923 0.775000 +vt 0.564103 0.875000 +vt 0.564103 0.775000 +vt 0.500000 0.775000 +vt 0.487179 0.875000 +vt 0.487179 0.775000 +vt 0.525641 0.775000 +vt 0.512821 0.875000 +vt 0.512821 0.775000 +vt 0.551282 0.875000 +vt 0.551282 0.775000 +vt 0.589744 0.775000 +vt 0.576923 0.875000 +vt 0.500000 0.875000 +vt 0.538462 0.775000 +vt 0.525641 0.875000 +vt 0.538462 0.875000 +vt 0.500000 0.550000 +vt 0.487179 0.750000 +vt 0.487179 0.550000 +vt 0.525641 0.550000 +vt 0.512821 0.750000 +vt 0.512821 0.550000 +vt 0.564103 0.550000 +vt 0.551282 0.750000 +vt 0.551282 0.550000 +vt 0.589744 0.550000 +vt 0.576923 0.750000 +vt 0.576923 0.550000 +vt 0.500000 0.750000 +vt 0.538462 0.550000 +vt 0.525641 0.750000 +vt 0.538462 0.750000 +vt 0.564103 0.750000 +vt 0.589744 1.000000 +vt 0.589744 0.875000 +vt 0.589744 0.750000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 550/689/57 548/690/57 554/691/57 +f 568/692/57 561/693/57 569/694/57 +f 566/695/57 559/696/57 567/697/57 +f 564/698/57 557/699/57 565/700/57 +f 570/701/57 555/702/57 563/703/57 +f 570/701/57 561/693/57 562/704/57 +f 568/692/57 559/696/57 560/705/57 +f 566/706/57 557/699/57 558/707/57 +f 564/698/57 555/702/57 556/708/57 +f 583/709/58 576/710/58 584/711/58 +f 583/709/58 574/712/58 575/713/58 +f 581/714/58 574/715/58 582/716/58 +f 581/714/58 572/717/58 573/718/58 +f 579/719/58 572/717/58 580/720/58 +f 586/721/58 571/722/58 579/719/58 +f 585/723/58 578/724/58 586/721/58 +f 585/723/58 576/710/58 577/725/58 +f 554/691/57 553/726/57 552/727/57 +f 552/727/57 551/728/57 550/689/57 +f 550/689/57 549/729/57 548/690/57 +f 548/690/57 547/730/57 554/691/57 +f 554/691/57 552/727/57 550/689/57 +f 568/692/57 560/705/57 561/693/57 +f 566/695/57 558/731/57 559/696/57 +f 564/698/57 556/708/57 557/699/57 +f 570/701/57 562/704/57 555/702/57 +f 570/701/57 569/694/57 561/693/57 +f 568/692/57 567/697/57 559/696/57 +f 566/706/57 565/700/57 557/699/57 +f 564/698/57 563/703/57 555/702/57 +f 583/709/58 575/713/58 576/710/58 +f 583/709/58 582/732/58 574/712/58 +f 581/714/58 573/718/58 574/715/58 +f 581/714/58 580/720/58 572/717/58 +f 579/719/58 571/722/58 572/717/58 +f 586/721/58 578/724/58 571/722/58 +f 585/723/58 577/725/58 578/724/58 +f 585/723/58 584/711/58 576/710/58 +s 1 +f 600/733/59 593/734/60 601/735/60 +f 595/736/61 588/737/62 596/738/62 +f 597/739/63 590/740/64 598/741/64 +f 599/742/65 592/743/59 600/733/59 +f 601/735/60 594/744/66 602/745/66 +f 602/745/66 587/746/61 595/736/61 +f 596/738/62 589/747/63 597/739/63 +f 598/748/64 591/749/65 599/742/65 +f 615/750/61 608/751/62 616/752/62 +f 613/753/60 606/754/66 614/755/66 +f 611/756/65 604/757/59 612/758/59 +f 616/752/62 609/759/63 617/760/63 +f 614/761/66 607/762/61 615/750/61 +f 612/758/59 605/763/60 613/753/60 +f 618/764/64 603/765/65 611/756/65 +f 617/760/63 610/766/64 618/764/64 +f 629/767/60 622/768/66 630/769/66 +f 627/770/65 620/771/59 628/772/59 +f 632/773/62 625/774/63 633/775/63 +f 630/776/66 623/777/61 631/778/61 +f 628/772/59 621/779/60 629/767/60 +f 634/780/64 619/781/65 627/770/65 +f 633/775/63 626/782/64 634/780/64 +f 631/778/61 624/783/62 632/773/62 +f 600/733/59 592/743/59 593/734/60 +f 595/736/61 587/746/61 588/737/62 +f 597/739/63 589/747/63 590/740/64 +f 599/742/65 591/749/65 592/743/59 +f 601/735/60 593/734/60 594/744/66 +f 602/745/66 594/744/66 587/746/61 +f 596/738/62 588/737/62 589/747/63 +f 598/748/64 590/784/64 591/749/65 +f 615/750/61 607/762/61 608/751/62 +f 613/753/60 605/763/60 606/754/66 +f 611/756/65 603/765/65 604/757/59 +f 616/752/62 608/751/62 609/759/63 +f 614/761/66 606/785/66 607/762/61 +f 612/758/59 604/757/59 605/763/60 +f 618/764/64 610/766/64 603/765/65 +f 617/760/63 609/759/63 610/766/64 +f 629/767/60 621/779/60 622/768/66 +f 627/770/65 619/781/65 620/771/59 +f 632/773/62 624/783/62 625/774/63 +f 630/776/66 622/786/66 623/777/61 +f 628/772/59 620/771/59 621/779/60 +f 634/780/64 626/782/64 619/781/65 +f 633/775/63 625/774/63 626/782/64 +f 631/778/61 623/777/61 624/783/62 +o Base +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.250000 +v -0.500000 0.000000 0.250000 +v -0.250000 0.000000 0.500000 +v 0.250000 0.000000 0.500000 +v 0.500000 0.000000 0.250000 +v 0.500000 0.000000 -0.250000 +v 0.250000 0.000000 -0.500000 +v -0.250000 0.000000 -0.500000 +v -0.250000 0.000000 0.250000 +v -0.250000 0.000000 -0.250000 +v 0.250000 0.000000 0.250000 +v 0.250000 0.000000 -0.250000 +v -0.500000 0.125000 0.250000 +v -0.500000 0.125000 0.500000 +v 0.250000 0.125000 0.500000 +v 0.500000 0.125000 0.500000 +v 0.500000 0.125000 -0.250000 +v 0.500000 0.125000 -0.500000 +v -0.250000 0.125000 -0.500000 +v -0.500000 0.125000 -0.500000 +v -0.500000 0.125000 -0.250000 +v -0.250000 0.125000 0.500000 +v 0.500000 0.125000 0.250000 +v 0.250000 0.125000 -0.500000 +v -0.250000 0.125000 -0.250000 +v -0.250000 0.125000 0.250000 +v 0.250000 0.125000 -0.250000 +v 0.250000 0.125000 0.250000 +v -0.437500 0.125000 0.312500 +v -0.437500 0.125000 0.437500 +v 0.312500 0.125000 0.437500 +v 0.437500 0.125000 0.437500 +v 0.437500 0.125000 -0.312500 +v 0.437500 0.125000 -0.437500 +v -0.312500 0.125000 -0.437500 +v -0.437500 0.125000 -0.437500 +v -0.437500 0.125000 -0.312500 +v -0.312500 0.125000 0.437500 +v 0.437500 0.125000 0.312500 +v 0.312500 0.125000 -0.437500 +v -0.312500 0.125000 -0.312500 +v -0.312500 0.125000 0.312500 +v 0.312500 0.125000 -0.312500 +v 0.312500 0.125000 0.312500 +v -0.125000 0.875000 0.000000 +v -0.125000 0.875000 0.125000 +v 0.000000 0.875000 0.125000 +v 0.125000 0.875000 0.125000 +v 0.125000 0.875000 -0.125000 +v 0.000000 0.875000 -0.125000 +v -0.125000 0.875000 -0.125000 +v 0.125000 0.875000 0.000000 +v 0.000000 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v -0.187500 0.875000 0.000000 +v -0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v 0.132583 0.875000 0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 -0.132583 +v -0.132583 0.750000 -0.132583 +v 0.000000 0.750000 -0.187500 +v -0.187500 0.750000 0.000000 +v -0.132583 0.750000 0.132583 +v 0.000000 0.750000 0.187500 +v 0.132583 0.750000 0.132583 +v 0.187500 0.750000 -0.000000 +v 0.132583 0.750000 -0.132583 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v -0.187500 0.875000 0.000000 +v -0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v 0.132583 0.875000 0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 -0.132583 +v -0.132583 0.750000 -0.132583 +v 0.000000 0.750000 -0.187500 +v -0.187500 0.750000 0.000000 +v -0.132583 0.750000 0.132583 +v 0.000000 0.750000 0.187500 +v 0.132583 0.750000 0.132583 +v 0.187500 0.750000 -0.000000 +v 0.132583 0.750000 -0.132583 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.250000 +vt 0.064103 0.225000 +vt 0.076923 0.250000 +vt 0.025641 0.150000 +vt 0.038462 0.225000 +vt 0.025641 0.250000 +vt 0.076923 0.250000 +vt 0.064103 0.175000 +vt 0.076923 0.150000 +vt 0.076923 0.250000 +vt 0.064103 0.175000 +vt 0.076923 0.150000 +vt -0.000000 0.150000 +vt -0.000000 0.250000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt -0.000000 0.150000 +vt 0.025641 0.250000 +vt -0.000000 0.250000 +vt -0.000000 0.150000 +vt -0.000000 0.250000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt 0.025641 0.150000 +vt 0.025641 0.150000 +vt 0.102564 0.250000 +vt 0.076923 0.150000 +vt 0.102564 0.150000 +vt 0.025641 0.300000 +vt 0.076923 0.250000 +vt 0.076923 0.300000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt -0.000000 0.150000 +vt 0.025641 0.250000 +vt -0.000000 0.250000 +vt 0.102564 0.250000 +vt 0.076923 0.150000 +vt 0.102564 0.150000 +vt 0.025641 0.150000 +vt 0.102564 0.250000 +vt 0.102564 0.150000 +vt 0.102564 0.250000 +vt 0.102564 0.150000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.128205 0.300000 +vt 0.179487 -0.000000 +vt 0.153846 0.300000 +vt 0.153846 0.000000 +vt 0.102564 -0.000000 +vt 0.038462 0.225000 +vt 0.038462 0.225000 +vt 0.064103 0.225000 +vt 0.038462 0.175000 +vt 0.038462 0.175000 +vt 0.064103 0.175000 +vt 0.064103 0.225000 +vt 0.064103 0.225000 +vt 0.038462 0.225000 +vt 0.038462 0.175000 +vt 0.064103 0.175000 +vt 0.038462 0.175000 +vt 0.102564 -0.000000 +vt 0.128205 0.300000 +vt 0.102564 0.300000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.128205 0.300000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.128205 -0.000000 +vt 0.128205 0.300000 +vt 0.102564 -0.000000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.153846 0.000000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.153846 0.000000 +vt 0.102564 -0.000000 +vt 0.153846 0.000000 +vt 0.038462 0.501949 +vt 0.075924 0.575000 +vt 0.038462 0.648051 +vt 0.075924 0.375000 +vt 0.038462 0.448051 +vt 0.000999 0.375000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.205128 0.300000 +vt 0.011972 0.626655 +vt 0.000999 0.575000 +vt 0.011972 0.523345 +vt 0.064951 0.523345 +vt 0.064951 0.626655 +vt 0.011972 0.323345 +vt 0.038462 0.301949 +vt 0.064951 0.323345 +vt 0.064951 0.426655 +vt 0.011972 0.426655 +vt 0.153846 0.500000 +vt 0.179487 0.450000 +vt 0.179487 0.500000 +vt 0.102564 0.500000 +vt 0.128205 0.450000 +vt 0.128205 0.500000 +vt 0.051282 0.500000 +vt 0.076923 0.450000 +vt 0.076923 0.500000 +vt 0.000000 0.500000 +vt 0.025641 0.450000 +vt 0.025641 0.500000 +vt 0.205128 0.450000 +vt 0.205128 0.500000 +vt 0.153846 0.450000 +vt 0.102564 0.450000 +vt 0.051282 0.450000 +vt 0.000000 0.450000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9231 -0.3846 0.0000 +vn -0.9231 0.3846 0.0000 +vn 0.0000 0.3846 -0.9231 +vn 0.0000 -0.3846 -0.9231 +vn 0.0000 0.3846 0.9231 +vn 0.0000 -0.3846 0.9231 +vn 0.9231 0.3846 0.0000 +vn -0.9231 -0.3846 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 645/787/67 644/788/67 650/789/67 +f 637/790/67 648/791/67 639/792/67 +f 640/793/67 641/794/67 635/795/67 +f 649/796/67 636/797/67 642/798/67 +f 658/799/68 673/800/68 657/801/68 +f 665/802/68 678/803/68 662/804/68 +f 656/805/68 671/806/68 655/807/68 +f 664/808/68 676/809/68 660/810/68 +f 650/811/69 662/804/69 645/812/69 +f 637/813/70 657/801/70 646/814/70 +f 642/815/69 666/816/69 649/817/69 +f 639/818/69 658/799/69 637/819/69 +f 640/820/70 664/808/70 647/821/70 +f 641/794/71 652/822/71 635/795/71 +f 648/791/71 659/823/71 639/792/71 +f 643/824/72 654/825/72 636/826/72 +f 649/827/70 661/828/70 643/829/70 +f 645/830/70 656/805/70 638/831/70 +f 635/832/69 651/833/69 640/834/69 +f 644/788/71 665/802/71 650/789/71 +f 646/835/72 663/836/72 648/837/72 +f 636/797/71 653/838/71 642/798/71 +f 647/839/72 660/810/72 641/840/72 +f 638/841/72 655/807/72 644/842/72 +f 680/843/73 685/844/73 676/845/73 +f 667/846/74 684/847/74 683/848/74 +f 678/849/75 687/850/75 672/851/75 +f 683/848/76 680/852/76 667/846/76 +f 653/838/68 682/853/68 666/816/68 +f 659/823/68 674/854/68 658/799/68 +f 651/833/68 680/855/68 664/808/68 +f 660/810/68 668/856/68 652/822/68 +f 663/836/68 675/857/68 659/823/68 +f 661/828/68 670/858/68 654/825/68 +f 666/816/68 677/859/68 661/828/68 +f 662/804/68 672/860/68 656/805/68 +f 652/822/68 667/861/68 651/833/68 +f 655/807/68 681/862/68 665/802/68 +f 657/801/68 679/863/68 663/836/68 +f 654/825/68 669/864/68 653/838/68 +f 679/865/73 688/866/73 691/867/73 +f 669/868/77 686/869/77 685/870/77 +f 679/871/78 683/872/78 675/873/78 +f 687/850/79 671/874/79 672/851/79 +f 690/875/78 681/876/78 671/874/78 +f 673/877/75 689/878/75 688/866/75 +f 682/879/76 690/880/76 677/881/76 +f 675/873/74 689/878/74 674/882/74 +f 681/883/80 688/884/80 678/849/80 +f 676/845/77 684/847/77 668/885/77 +f 685/870/80 682/886/80 669/868/80 +f 677/881/79 686/869/79 670/887/79 +f 696/888/68 698/889/68 692/890/68 +f 706/891/67 704/892/67 702/893/67 +f 645/787/67 638/894/67 644/788/67 +f 637/790/67 646/895/67 648/791/67 +f 640/793/67 647/896/67 641/794/67 +f 649/796/67 643/897/67 636/797/67 +f 658/799/68 674/854/68 673/800/68 +f 665/802/68 681/862/68 678/803/68 +f 656/805/68 672/860/68 671/806/68 +f 664/808/68 680/855/68 676/809/68 +f 650/811/69 665/802/69 662/804/69 +f 637/813/70 658/799/70 657/801/70 +f 642/815/69 653/838/69 666/816/69 +f 639/818/69 659/823/69 658/799/69 +f 640/820/70 651/833/70 664/808/70 +f 641/794/71 660/810/71 652/822/71 +f 648/791/71 663/836/71 659/823/71 +f 643/824/72 661/828/72 654/825/72 +f 649/827/70 666/816/70 661/828/70 +f 645/830/70 662/804/70 656/805/70 +f 635/832/69 652/822/69 651/833/69 +f 644/788/71 655/807/71 665/802/71 +f 646/835/72 657/801/72 663/836/72 +f 636/797/71 654/825/71 653/838/71 +f 647/839/72 664/808/72 660/810/72 +f 638/841/72 656/805/72 655/807/72 +f 680/843/73 691/898/73 685/844/73 +f 667/846/74 668/885/74 684/847/74 +f 678/849/75 688/884/75 687/850/75 +f 683/848/76 691/867/76 680/852/76 +f 653/838/68 669/864/68 682/853/68 +f 659/823/68 675/857/68 674/854/68 +f 651/833/68 667/861/68 680/855/68 +f 660/810/68 676/809/68 668/856/68 +f 663/836/68 679/863/68 675/857/68 +f 661/828/68 677/859/68 670/858/68 +f 666/816/68 682/853/68 677/859/68 +f 662/804/68 678/803/68 672/860/68 +f 652/822/68 668/856/68 667/861/68 +f 655/807/68 671/806/68 681/862/68 +f 657/801/68 673/800/68 679/863/68 +f 654/825/68 670/858/68 669/864/68 +f 679/865/73 673/877/73 688/866/73 +f 669/868/77 670/887/77 686/869/77 +f 679/871/78 691/898/78 683/872/78 +f 687/850/79 690/875/79 671/874/79 +f 690/875/78 691/867/78 681/876/78 +f 673/877/75 674/882/75 689/878/75 +f 682/879/76 691/898/76 690/880/76 +f 675/873/74 683/872/74 689/878/74 +f 681/883/80 691/898/80 688/884/80 +f 676/845/77 685/844/77 684/847/77 +f 685/870/80 691/867/80 682/886/80 +f 677/881/79 690/880/79 686/869/79 +f 692/890/68 693/899/68 694/900/68 +f 694/900/68 695/901/68 696/888/68 +f 696/888/68 697/902/68 698/889/68 +f 698/889/68 699/903/68 692/890/68 +f 692/890/68 694/900/68 696/888/68 +f 702/893/67 700/904/67 701/905/67 +f 701/905/67 707/906/67 706/891/67 +f 706/891/67 705/907/67 704/892/67 +f 704/892/67 703/908/67 702/893/67 +f 702/893/67 701/905/67 706/891/67 +s 1 +f 714/909/72 723/910/81 715/911/81 +f 712/912/71 721/913/82 713/914/82 +f 710/915/69 719/916/83 711/917/83 +f 708/918/70 716/919/84 709/920/84 +f 715/911/81 717/921/70 708/922/70 +f 713/914/82 722/923/72 714/909/72 +f 711/917/83 720/924/71 712/912/71 +f 709/920/84 718/925/69 710/915/69 +f 714/909/72 722/923/72 723/910/81 +f 712/912/71 720/924/71 721/913/82 +f 710/915/69 718/925/69 719/916/83 +f 708/918/70 717/926/70 716/919/84 +f 715/911/81 723/910/81 717/921/70 +f 713/914/82 721/913/82 722/923/72 +f 711/917/83 719/916/83 720/924/71 +f 709/920/84 716/919/84 718/925/69 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 66ac89908..08ec96c69 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -180,6 +180,8 @@ "turret.richard_fire": {"category": "block", "sounds": [{"name": "turret/richard_fire", "stream": false}]}, "turret.howard_fire": {"category": "block", "sounds": [{"name": "turret/howard_fire", "stream": false}]}, "turret.howard_reload": {"category": "block", "sounds": [{"name": "turret/howard_reload", "stream": false}]}, + "turret.sentry_fire": {"category": "block", "sounds": [{"name": "turret/sentry_fire", "stream": false}]}, + "turret.sentry_lockon": {"category": "block", "sounds": [{"name": "turret/sentry_lockon", "stream": false}]}, "turret.mortarWhistle": {"category": "block", "sounds": [{"name": "weapon/mortarWhistle", "stream": false}]}, "entity.chopperFlyingLoop": {"category": "hostile", "sounds": [{"name": "entity/chopperFlyingLoop", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/music/jungleDrums.ogg b/src/main/resources/assets/hbm/sounds/music/jungleDrums.ogg deleted file mode 100644 index 527670bf2..000000000 Binary files a/src/main/resources/assets/hbm/sounds/music/jungleDrums.ogg and /dev/null differ diff --git a/src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg b/src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg new file mode 100644 index 000000000..d94087211 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/turret/sentry_lockon.ogg b/src/main/resources/assets/hbm/sounds/turret/sentry_lockon.ogg new file mode 100644 index 000000000..afe2b97f6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/turret/sentry_lockon.ogg differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_arm.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_arm.png deleted file mode 100644 index bfaffafe9..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_arm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_arm_1.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_arm_1.png deleted file mode 100644 index a8252459b..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_arm_1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_chest.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_chest.png deleted file mode 100644 index db7a73fdf..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_chest.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_chest_1.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_chest_1.png deleted file mode 100644 index 3ac98df7f..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_chest_1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet.png deleted file mode 100644 index 3a6d6eaad..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet_1.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet_1.png deleted file mode 100644 index 60111df35..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_helmet_1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_leg.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_leg.png deleted file mode 100644 index 4e35c9c40..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_leg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/dnt_leg_1.png b/src/main/resources/assets/hbm/textures/armor/base/dnt_leg_1.png deleted file mode 100644 index 813b33471..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/dnt_leg_1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/rpa_arm.png b/src/main/resources/assets/hbm/textures/armor/base/rpa_arm.png deleted file mode 100644 index 191bdc0ab..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/rpa_arm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/rpa_chest.png b/src/main/resources/assets/hbm/textures/armor/base/rpa_chest.png deleted file mode 100644 index 3511c43a6..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/rpa_chest.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/rpa_helmet.png b/src/main/resources/assets/hbm/textures/armor/base/rpa_helmet.png deleted file mode 100644 index 436c4c652..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/rpa_helmet.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/base/rpa_leg.png b/src/main/resources/assets/hbm/textures/armor/base/rpa_leg.png deleted file mode 100644 index d7ddbbcb7..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/base/rpa_leg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_coke.coal.png b/src/main/resources/assets/hbm/textures/blocks/block_coke.coal.png new file mode 100644 index 000000000..e8796d8c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_coke.coal.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_coke.lignite.png b/src/main/resources/assets/hbm/textures/blocks/block_coke.lignite.png new file mode 100644 index 000000000..0977b1ca3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_coke.lignite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_coke.petroleum.png b/src/main/resources/assets/hbm/textures/blocks/block_coke.petroleum.png new file mode 100644 index 000000000..eedbdbe38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_coke.petroleum.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/toaster.png b/src/main/resources/assets/hbm/textures/blocks/toaster.png new file mode 100644 index 000000000..03835ffdf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/toaster.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/toaster_iron.png b/src/main/resources/assets/hbm/textures/blocks/toaster_iron.png new file mode 100644 index 000000000..4bf6ec53c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/toaster_iron.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/toaster_steel.png b/src/main/resources/assets/hbm/textures/blocks/toaster_steel.png new file mode 100644 index 000000000..c3fd30076 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/toaster_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/toaster_wood.png b/src/main/resources/assets/hbm/textures/blocks/toaster_wood.png new file mode 100644 index 000000000..fda413984 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/toaster_wood.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/bHoleSwirl.png b/src/main/resources/assets/hbm/textures/entity/bHoleSwirl.png deleted file mode 100644 index 614940c3f..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/bHoleSwirl.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/bholeBase.png b/src/main/resources/assets/hbm/textures/entity/bholeBase.png deleted file mode 100644 index fa4118bb0..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/bholeBase.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png b/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png deleted file mode 100644 index eef976334..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/ItemStorage.png b/src/main/resources/assets/hbm/textures/gui/ItemStorage.png deleted file mode 100644 index a35c94459..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/ItemStorage.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/UraniumEnrichment.png b/src/main/resources/assets/hbm/textures/gui/UraniumEnrichment.png deleted file mode 100644 index 8e9e917a8..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/UraniumEnrichment.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids.png b/src/main/resources/assets/hbm/textures/gui/fluids.png deleted file mode 100644 index cbf76299d..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids1.png b/src/main/resources/assets/hbm/textures/gui/fluids1.png deleted file mode 100755 index b0aa1850e..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids2.png b/src/main/resources/assets/hbm/textures/gui/fluids2.png deleted file mode 100755 index dd9d3e67c..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/fluids2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_planner_alt.png b/src/main/resources/assets/hbm/textures/gui/gui_planner_alt.png deleted file mode 100644 index 5fc1db986..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_planner_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png index 5b0e8764a..784cb025b 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_mining_drill.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png index ae0884951..55f245233 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png new file mode 100644 index 000000000..65143bb3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_friendly.png b/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_friendly.png index 549f5dffb..0fe96d925 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_friendly.png and b/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_friendly.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_sentry.png b/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_sentry.png new file mode 100644 index 000000000..93d9e4cbf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_sentry.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png new file mode 100644 index 000000000..f010e6675 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45.png b/src/main/resources/assets/hbm/textures/items/ammo_45.png new file mode 100644 index 000000000..cf405752f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_45.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png new file mode 100644 index 000000000..43cf97448 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45_du.png b/src/main/resources/assets/hbm/textures/items/ammo_45_du.png new file mode 100644 index 000000000..f46671ea3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_45_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm.png index c0853664a..a8f597739 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm.png and b/src/main/resources/assets/hbm/textures/items/ammo_5mm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png new file mode 100644 index 000000000..3a511466b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png index 6199867e9..4c6d8c99a 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png and b/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png index 3e5de3d14..e508b69e0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png and b/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png index 9ee89e1e5..065481ff2 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png and b/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png index 6b0002f7f..f270f4bb3 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png and b/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762.png b/src/main/resources/assets/hbm/textures/items/ammo_762.png new file mode 100644 index 000000000..e1b2e9726 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png new file mode 100644 index 000000000..0b55a7515 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_du.png b/src/main/resources/assets/hbm/textures/items/ammo_762_du.png new file mode 100644 index 000000000..3443e8b11 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_k.png b/src/main/resources/assets/hbm/textures/items/ammo_762_k.png new file mode 100644 index 000000000..c1206a564 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762_k.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png new file mode 100644 index 000000000..6db355757 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png b/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png new file mode 100644 index 000000000..818aa8c8c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna.png b/src/main/resources/assets/hbm/textures/items/ammo_luna.png new file mode 100644 index 000000000..7b826c3eb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_luna.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png new file mode 100644 index 000000000..822eb02b1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png new file mode 100644 index 000000000..3d15da550 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_45.png b/src/main/resources/assets/hbm/textures/items/assembly_45.png new file mode 100644 index 000000000..d64ceb33b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/assembly_45.png differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_762.png b/src/main/resources/assets/hbm/textures/items/assembly_762.png new file mode 100644 index 000000000..775fe97c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/assembly_762.png differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png b/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png index 9883cc8c8..7797ca9f1 100644 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png and b/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_luna.png b/src/main/resources/assets/hbm/textures/items/assembly_luna.png new file mode 100644 index 000000000..d0935642e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/assembly_luna.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ballistic_gauntlet.png b/src/main/resources/assets/hbm/textures/items/ballistic_gauntlet.png new file mode 100644 index 000000000..c6c961f7f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ballistic_gauntlet.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_fireext.png b/src/main/resources/assets/hbm/textures/items/gun_fireext.png new file mode 100644 index 000000000..c7dac1a3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_fireext.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_bedrock.png b/src/main/resources/assets/hbm/textures/items/ore_bedrock.png new file mode 100644 index 000000000..6fc0af69a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_bedrock.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_centrifuged.png b/src/main/resources/assets/hbm/textures/items/ore_centrifuged.png new file mode 100644 index 000000000..b21dd9335 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_centrifuged.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_cleaned.png b/src/main/resources/assets/hbm/textures/items/ore_cleaned.png new file mode 100644 index 000000000..de2bf3f41 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_cleaned.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_cluster_bg.png b/src/main/resources/assets/hbm/textures/items/ore_cluster_bg.png deleted file mode 100644 index 5611489a9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ore_cluster_bg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_cluster_fg.png b/src/main/resources/assets/hbm/textures/items/ore_cluster_fg.png deleted file mode 100644 index 50e732064..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ore_cluster_fg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite.png b/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite.png deleted file mode 100644 index 635bc7b32..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite_alt.png b/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite_alt.png deleted file mode 100644 index 3a68d2046..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ore_cluster_tikite_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_enriched.png b/src/main/resources/assets/hbm/textures/items/ore_enriched.png new file mode 100644 index 000000000..a5fc01a52 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_enriched.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_overlay.png b/src/main/resources/assets/hbm/textures/items/ore_overlay.png new file mode 100644 index 000000000..7dcd3d22f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_overlay.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_purified.png b/src/main/resources/assets/hbm/textures/items/ore_purified.png new file mode 100644 index 000000000..c93d537ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_purified.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_separated.png b/src/main/resources/assets/hbm/textures/items/ore_separated.png new file mode 100644 index 000000000..2a0954e1c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_separated.png differ diff --git a/src/main/resources/assets/hbm/textures/items/quesadilla.png b/src/main/resources/assets/hbm/textures/items/quesadilla.png new file mode 100644 index 000000000..53413b4d0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/quesadilla.png differ diff --git a/src/main/resources/assets/hbm/textures/items/singularity_micro.png b/src/main/resources/assets/hbm/textures/items/singularity_micro.png new file mode 100644 index 000000000..b1c9e4765 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/singularity_micro.png differ diff --git a/src/main/resources/assets/hbm/textures/items/source.png b/src/main/resources/assets/hbm/textures/items/source.png deleted file mode 100644 index ec7b591f5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/source.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/source.png.mcmeta b/src/main/resources/assets/hbm/textures/items/source.png.mcmeta deleted file mode 100644 index 02b390a2a..000000000 --- a/src/main/resources/assets/hbm/textures/items/source.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - - } -} diff --git a/src/main/resources/assets/hbm/textures/misc/scope_44.png b/src/main/resources/assets/hbm/textures/misc/scope_44.png new file mode 100644 index 000000000..dc53998bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/scope_44.png differ diff --git a/src/main/resources/assets/hbm/textures/misc/scope_basic.png b/src/main/resources/assets/hbm/textures/misc/scope_basic.png new file mode 100644 index 000000000..4a9fa9eef Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/scope_basic.png differ diff --git a/src/main/resources/assets/hbm/textures/models/brimstone.png b/src/main/resources/assets/hbm/textures/models/brimstone.png deleted file mode 100644 index 45fa84d7d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/brimstone.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png b/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png index d6816b7dc..2b70a04d6 100644 Binary files a/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png and b/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png differ diff --git a/src/main/resources/assets/hbm/textures/models/chemplant_spinner_new.png b/src/main/resources/assets/hbm/textures/models/chemplant_spinner_new.png index 9efb9e554..7a53703b3 100644 Binary files a/src/main/resources/assets/hbm/textures/models/chemplant_spinner_new.png and b/src/main/resources/assets/hbm/textures/models/chemplant_spinner_new.png differ diff --git a/src/main/resources/assets/hbm/textures/models/explosion/balefire.png b/src/main/resources/assets/hbm/textures/models/explosion/balefire.png index e554239c8..0ac005e45 100644 Binary files a/src/main/resources/assets/hbm/textures/models/explosion/balefire.png and b/src/main/resources/assets/hbm/textures/models/explosion/balefire.png differ diff --git a/src/main/resources/assets/hbm/textures/models/explosion/dust.png b/src/main/resources/assets/hbm/textures/models/explosion/dust.png deleted file mode 100644 index 99b0a2951..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/explosion/dust.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/explosion/fireball.png b/src/main/resources/assets/hbm/textures/models/explosion/fireball.png index 8146c06fc..f3be1a1bd 100644 Binary files a/src/main/resources/assets/hbm/textures/models/explosion/fireball.png and b/src/main/resources/assets/hbm/textures/models/explosion/fireball.png differ diff --git a/src/main/resources/assets/hbm/textures/models/explosion/tomblast.png b/src/main/resources/assets/hbm/textures/models/explosion/tomblast.png index 83fa0fc72..f4e0e5819 100644 Binary files a/src/main/resources/assets/hbm/textures/models/explosion/tomblast.png and b/src/main/resources/assets/hbm/textures/models/explosion/tomblast.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/cobblestone.png b/src/main/resources/assets/hbm/textures/models/machines/cobblestone.png new file mode 100755 index 000000000..da3498c5c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/cobblestone.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/gravel.png b/src/main/resources/assets/hbm/textures/models/machines/gravel.png new file mode 100755 index 000000000..388e5c55e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/gravel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/hatch.png b/src/main/resources/assets/hbm/textures/models/machines/hatch.png deleted file mode 100644 index f077b5ead..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/machines/hatch.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png b/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png index 36223f0f0..b3ff80669 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png and b/src/main/resources/assets/hbm/textures/models/machines/mining_drill.png differ diff --git a/src/main/resources/assets/hbm/textures/models/misc/poster_cat.png b/src/main/resources/assets/hbm/textures/models/misc/poster_cat.png index 591134e84..ae2ed69e4 100644 Binary files a/src/main/resources/assets/hbm/textures/models/misc/poster_cat.png and b/src/main/resources/assets/hbm/textures/models/misc/poster_cat.png differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_cheapo_base.png b/src/main/resources/assets/hbm/textures/models/turret_cheapo_base.png deleted file mode 100644 index 3b907d465..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_cheapo_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_cheapo_gun.png b/src/main/resources/assets/hbm/textures/models/turret_cheapo_gun.png deleted file mode 100644 index b13b40cca..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_cheapo_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_cheapo_head.png b/src/main/resources/assets/hbm/textures/models/turret_cheapo_head.png deleted file mode 100644 index 06a39f837..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_cheapo_head.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_cheapo_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_cheapo_rotor.png deleted file mode 100644 index a7272d99d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_cheapo_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_flamer_gun.png b/src/main/resources/assets/hbm/textures/models/turret_flamer_gun.png deleted file mode 100755 index ee190b35b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_flamer_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_flamer_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_flamer_rotor.png deleted file mode 100644 index 0e642f1fc..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_flamer_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_heavy_base.png b/src/main/resources/assets/hbm/textures/models/turret_heavy_base.png deleted file mode 100755 index 6e015981f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_heavy_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_heavy_gun.png b/src/main/resources/assets/hbm/textures/models/turret_heavy_gun.png deleted file mode 100755 index fd3587069..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_heavy_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_heavy_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_heavy_rotor.png deleted file mode 100644 index f220c7ee0..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_heavy_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_light_gun.png b/src/main/resources/assets/hbm/textures/models/turret_light_gun.png deleted file mode 100755 index b1758fb02..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_light_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_light_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_light_rotor.png deleted file mode 100644 index 2ddc070ef..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_light_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_rocket_gun.png b/src/main/resources/assets/hbm/textures/models/turret_rocket_gun.png deleted file mode 100755 index a36e57598..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_rocket_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_rocket_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_rocket_rotor.png deleted file mode 100644 index 1dde1f912..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_rocket_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_rotor.png deleted file mode 100755 index 3345895e3..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_tau_gun.png b/src/main/resources/assets/hbm/textures/models/turret_tau_gun.png deleted file mode 100755 index 468451f85..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_tau_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turret_tau_rotor.png b/src/main/resources/assets/hbm/textures/models/turret_tau_rotor.png deleted file mode 100644 index 42665f77b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turret_tau_rotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/base.png b/src/main/resources/assets/hbm/textures/models/turrets/base/base.png deleted file mode 100644 index 1f10a5a3d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/brandon.png b/src/main/resources/assets/hbm/textures/models/turrets/base/brandon.png deleted file mode 100644 index d01dbc044..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/brandon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/brandon_drum.png b/src/main/resources/assets/hbm/textures/models/turrets/base/brandon_drum.png deleted file mode 100644 index df132ec20..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/brandon_drum.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/carriage.png b/src/main/resources/assets/hbm/textures/models/turrets/base/carriage.png deleted file mode 100644 index 69597ed4e..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/carriage.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/carriage_ciws.png b/src/main/resources/assets/hbm/textures/models/turrets/base/carriage_ciws.png deleted file mode 100644 index 70042ba00..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/carriage_ciws.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov.png b/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov.png deleted file mode 100644 index 78e98e532..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov_barrels.png b/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov_barrels.png deleted file mode 100644 index 61d27c3c9..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/chekhov_barrels.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_barrels.png b/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_barrels.png deleted file mode 100644 index fbd02a217..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_barrels.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_body.png b/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_body.png deleted file mode 100644 index f5973d66c..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/ciws_body.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/fritz.png b/src/main/resources/assets/hbm/textures/models/turrets/base/fritz.png deleted file mode 100644 index 59399e0b7..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/fritz.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/jeremy.png b/src/main/resources/assets/hbm/textures/models/turrets/base/jeremy.png deleted file mode 100644 index 105cf5875..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/jeremy.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/maxwell.png b/src/main/resources/assets/hbm/textures/models/turrets/base/maxwell.png deleted file mode 100644 index 7900e2b73..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/maxwell.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/base/tauon.png b/src/main/resources/assets/hbm/textures/models/turrets/base/tauon.png deleted file mode 100644 index e88089c3b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/base/tauon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/howard.png b/src/main/resources/assets/hbm/textures/models/turrets/howard.png index 44f4817df..3e40888c2 100644 Binary files a/src/main/resources/assets/hbm/textures/models/turrets/howard.png and b/src/main/resources/assets/hbm/textures/models/turrets/howard.png differ diff --git a/src/main/resources/assets/hbm/textures/models/turrets/sentry.png b/src/main/resources/assets/hbm/textures/models/turrets/sentry.png new file mode 100644 index 000000000..5d1f5015d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/turrets/sentry.png differ diff --git a/src/main/resources/assets/hbm/textures/particle/casings.png b/src/main/resources/assets/hbm/textures/particle/casings.png new file mode 100644 index 000000000..764aa5b81 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/casings.png differ diff --git a/src/main/resources/assets/hbm/textures/particle/casings_base.png b/src/main/resources/assets/hbm/textures/particle/casings_base.png new file mode 100644 index 000000000..650a41de0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/casings_base.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info old mode 100755 new mode 100644 index 2b8ec8ebf..3017b800a --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,11 +3,11 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4445", + "version":"${version}", "mcversion": "1.7.10", "url": "", "updateUrl": "", - "credits": "HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms), Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting), UFFR (fork with all sorts of features), Pu-238 (Tom impact effects), Bismarck (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines, weapons), Vær (fibrosis, gas centrifuges, ZIRNOX, CP-1 parts, starter guide), Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Aionoso (GUI textures), impbk2002 (project settings), OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (improved satellite loot system), Silly541 (config for safe ME drives), Voxelstice (OpenComputers integration), Pvndols (thorium fuel recipe)", + "credits": "${credits}", "logoFile": "", "screenshots": [], "dependencies": []