diff --git a/changelog b/changelog index 51b49850a..64f839ba2 100644 --- a/changelog +++ b/changelog @@ -1,42 +1,26 @@ -## Added -* Arc furnace - * A large version of the arc furnace that can do several types of recipe - * Solid mode smelts items like a furnace, however to work the recipe needs an ingredient or result that is oredicted as either an ore, block, ingot or plate - * Liquid mode smelts items like a crucible would, effectively liquiefying metals. Non-castable materials are voided - * Both modes have arc furnace exclusive recipes (smelting sand/quartz/fiberglass into silicon) - * Can be upgraded only with regular speed upgrades -* Soldering station - * Works similar to arc welders - * Used to assemble circuits from parts -* New circuits - * The old circuits will be phased out, the items remain but can be recycled - * Circuits use an entirely new approach for crafting, instead of upgrading tiers constantly, all circuits are made from common parts - * Circuits can be automated entirely with only autocrafters, presses and the soldering station, no assembler or chemplant required - * Legacy circuits can be recycled in any anvil, yielding the roughly equivalent new circuit - ## Changed -* Updated russian and italian localization -* Nerfed conventional explosives (dynamite, TNT, semtex, C4) in order to not outclass small nukes -* Plastic explosive blocks no longer drop and blocks -* Sellafite diamond ore now shreds into diamond gravel -* ICF vessel blocks now use half as much fullerite as before -* ICF capacitor and turbocharger blocks are now quite a bit cheaper -* MEP is no longer self-igniting -* The foundry storage basin now holds 4 blocks worth of material instead of 1 -* The small arc furnace is being retired and is no longer craftable. However, it will still function, and it can use any type of electrode without depleting it -* Wires now use the autogen system and are oredicted with the "wireFine" prefix (equivalent to GT fine wires, 1/8 of an ingot) -* Removed the assembler recipes for wires -* Increased the maximum durability for all stamps -* All upgrades now use the soldering station for their recipes, except for overdrive -* Overdrive upgrade recipes have been rebalanced +* Updated boxducts + * All boxducts are now way cleaner, only having bolts on intersections, with straight parts only having very light seams + * Intersections now have unique textures for each size + * Copper boxducts now have a much nicer color gradient + * Exhaust pipes now have a more rusted appearance +* Added an alternate recipe for blank upgrades using integrated circuits and polymer instead of analog circuits +* Update the soyuz and orbital module recipes + * Simplified the recipes, fewer microcrafting parts + * Both now use low-density elements which are made from aluminium/titanium, fiberglass and hard plastic + * Both now make use of more advanced electronics, although in smaller numbers +* Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites +* Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body +* Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar) +* CTRL + ALT view now shows the item's internal name and domain +* Adjusted Mekanism compat + * Decreased crafting complexity and time for the digiminer assembler recipe + * Replaced recipes for the wind turbine and atomic disassembler + * Added a config option for toggling Mekanism compat +* Added recipe caching to the combinator funnel, meaning it no longer has to iterate over the entire recipe list all the time for compression/automation, this should improve performance by a fair bit +* Diodes now use silicon nuggets instead of nether quartz +* Aluminium wire's coloring is now consistent with the ingot ## Fixed -* Fixed missing localization for meteorite ores and the new crucible materials -* Removed the starmetal crystallization recipe, despite starmetal ore no longer existing -* Fixed the ICF structure block detection being incorrect, omitting some parts -* Fixed armor mods adding health showing only half as much as they actually do -* Fixed RBMK fuel xenon burn function being described wrong -* When converting ComparableStacks to ItemStacks, there is now a check that replaces null items with the nothing placeholder, fixing crashes caused by incorrect recipe configuration -* Fixed item icon lighting in the anvil's search field -* Fixed custom machine NEI handlers (again) -* Fixed FEL making sounds when turned on but not actually active +* Fixed crash caused by PRISM updating unloaded worlds +* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 8e5f10ced..0219489fa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4977 +mod_build_number=5000 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 3f0888859..cdc618f51 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -19,8 +19,8 @@ import net.minecraft.world.World; public class Nodespace { /** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */ - public static HashMap worlds = new HashMap(); - public static Set activePowerNets = new HashSet(); + public static HashMap worlds = new HashMap<>(); + public static Set activePowerNets = new HashSet<>(); public static PowerNode getNode(World world, int x, int y, int z) { NodeWorld nodeWorld = worlds.get(world); @@ -49,6 +49,9 @@ public class Nodespace { for(World world : MinecraftServer.getServer().worldServers) { NodeWorld nodes = worlds.get(world); + + if(nodes == null) + continue; for(Entry entry : nodes.nodes.entrySet()) { PowerNode node = entry.getValue(); @@ -120,7 +123,7 @@ public class Nodespace { /** Contains a map showing where each node is, a node is every spot that a cable exists at. * Instead of the old proxy system, things like substation now create multiple nodes at their connection points */ - public static HashMap nodes = new HashMap(); + public HashMap nodes = new HashMap<>(); /** Adds a node at all its positions to the nodespace */ public void pushNode(PowerNode node) { diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index e588f34db..7488f693f 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -61,11 +61,6 @@ public class ModBlocks { public static Block ore_schrabidium; public static Block ore_beryllium; public static Block ore_australium; - public static Block ore_weidanium; - public static Block ore_reiium; - public static Block ore_unobtainium; - public static Block ore_daffergon; - public static Block ore_verticium; public static Block ore_rare; public static Block ore_cobalt; public static Block ore_cinnebar; @@ -360,6 +355,7 @@ public class ModBlocks { public static Block brick_compound_stairs; public static Block brick_asbestos_stairs; public static Block brick_fire_stairs; + public static Block asphalt_stairs; public static Block cmb_brick; public static Block cmb_brick_reinforced; @@ -453,8 +449,6 @@ public class ModBlocks { public static Block sand_uranium; public static Block sand_polonium; public static Block sand_quartz; - public static Block sand_gold; - public static Block sand_gold198; public static Block ash_digamma; public static Block glass_boron; public static Block glass_lead; @@ -984,6 +978,7 @@ public class ModBlocks { public static Block machine_electrolyser; public static Block machine_excavator; + public static Block machine_ore_slopper; public static Block machine_autosaw; public static Block machine_mining_laser; @@ -1328,11 +1323,6 @@ public class ModBlocks { basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles"); ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium"); - ore_weidanium = new BlockGeneric(Material.rock).setBlockName("ore_weidanium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_weidanium"); - ore_reiium = new BlockGeneric(Material.rock).setBlockName("ore_reiium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_reiium"); - ore_unobtainium = new BlockGeneric(Material.rock).setBlockName("ore_unobtainium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_unobtainium"); - ore_daffergon = new BlockGeneric(Material.rock).setBlockName("ore_daffergon").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_daffergon"); - ore_verticium = new BlockGeneric(Material.rock).setBlockName("ore_verticium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_verticium"); ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt"); ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); @@ -1529,8 +1519,8 @@ public class ModBlocks { brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); - concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); - concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); + concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); + concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); concrete_brick_slab = new BlockMultiSlab(null, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_slab").setCreativeTab(MainRegistry.blockTab); concrete_brick_double_slab = new BlockMultiSlab(concrete_brick_slab, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_double_slab").setCreativeTab(MainRegistry.blockTab); brick_slab = new BlockMultiSlab(null, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_slab").setCreativeTab(MainRegistry.blockTab); @@ -1553,9 +1543,10 @@ public class ModBlocks { brick_compound_stairs = new BlockGenericStairs(brick_compound, 0).setBlockName("brick_compound_stairs").setCreativeTab(MainRegistry.blockTab); brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab); - + asphalt_stairs = new BlockSpeedyStairs(asphalt, 0, 1.5).setBlockName("asphalt_stairs").setCreativeTab(MainRegistry.blockTab); + vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); - + tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab"); tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked"); tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken"); @@ -1642,8 +1633,6 @@ public class ModBlocks { sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium"); sand_polonium = new BlockFalling(Material.sand).setBlockName("sand_polonium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_polonium"); sand_quartz = new BlockFalling(Material.sand).setBlockName("sand_quartz").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_quartz"); - sand_gold = new BlockGoldSand(Material.sand).setBlockName("sand_gold").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold"); - sand_gold198 = new BlockGoldSand(Material.sand).setBlockName("sand_gold198").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold"); glass_boron = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_boron", Material.glass).setBlockName("glass_boron").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); glass_lead = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_lead", Material.glass).setBlockName("glass_lead").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); glass_uranium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_uranium", Material.glass).setBlockName("glass_uranium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); @@ -2196,6 +2185,7 @@ public class ModBlocks { machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); 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"); @@ -2396,11 +2386,6 @@ public class ModBlocks { //Rare Minerals GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_weidanium, ItemOreBlock.class, ore_weidanium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_reiium, ItemOreBlock.class, ore_reiium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_unobtainium, ItemOreBlock.class, ore_unobtainium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_daffergon, ItemOreBlock.class, ore_daffergon.getUnlocalizedName()); - GameRegistry.registerBlock(ore_verticium, ItemOreBlock.class, ore_verticium.getUnlocalizedName()); GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName()); GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName()); @@ -2707,6 +2692,7 @@ public class ModBlocks { GameRegistry.registerBlock(brick_asbestos_stairs, brick_asbestos_stairs.getUnlocalizedName()); GameRegistry.registerBlock(brick_fire_stairs, brick_fire_stairs.getUnlocalizedName()); GameRegistry.registerBlock(ducrete_stairs, ducrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(asphalt_stairs, asphalt_stairs.getUnlocalizedName()); //CMB Building Elements GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName()); @@ -2931,7 +2917,7 @@ public class ModBlocks { GameRegistry.registerBlock(hev_battery, hev_battery.getUnlocalizedName()); //Chainlink Fence - GameRegistry.registerBlock(fence_metal, fence_metal.getUnlocalizedName()); + GameRegistry.registerBlock(fence_metal, ItemBlockBase.class, fence_metal.getUnlocalizedName()); //Sands, Glass GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName()); @@ -2940,8 +2926,6 @@ public class ModBlocks { GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName()); GameRegistry.registerBlock(sand_polonium, sand_polonium.getUnlocalizedName()); GameRegistry.registerBlock(sand_quartz, sand_quartz.getUnlocalizedName()); - GameRegistry.registerBlock(sand_gold, sand_gold.getUnlocalizedName()); - GameRegistry.registerBlock(sand_gold198, sand_gold198.getUnlocalizedName()); GameRegistry.registerBlock(glass_boron, glass_boron.getUnlocalizedName()); GameRegistry.registerBlock(glass_lead, glass_lead.getUnlocalizedName()); GameRegistry.registerBlock(glass_uranium, glass_uranium.getUnlocalizedName()); @@ -3276,6 +3260,7 @@ public class ModBlocks { register(machine_coker); register(machine_autosaw); register(machine_excavator); + register(machine_ore_slopper); register(machine_mining_laser); register(barricade); register(machine_turbofan); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java index 6419fe459..4ce9a4bc3 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java @@ -18,7 +18,7 @@ import com.hbm.tileentity.bomb.TileEntityCharge; import api.hbm.block.IFuckingExplode; import api.hbm.block.IToolable; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/blocks/bomb/DetCord.java b/src/main/java/com/hbm/blocks/bomb/DetCord.java index 326a0c801..2a02ed0cc 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetCord.java +++ b/src/main/java/com/hbm/blocks/bomb/DetCord.java @@ -2,7 +2,7 @@ package com.hbm.blocks.bomb; import com.hbm.entity.item.EntityTNTPrimedBase; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/bomb/DetMiner.java b/src/main/java/com/hbm/blocks/bomb/DetMiner.java index f8b0ffcaa..4ec679353 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetMiner.java +++ b/src/main/java/com/hbm/blocks/bomb/DetMiner.java @@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.interfaces.IBomb; import api.hbm.block.IFuckingExplode; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java index f1b92756b..84ccebc63 100644 --- a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java +++ b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java @@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java index 929d2281a..5e0e6ced3 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java @@ -30,6 +30,8 @@ public class BlockConcreteColoredExt extends BlockEnumMulti { INDIGO, PURPLE, PINK, - HAZARD + HAZARD, + SAND, + BRONZE } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java b/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java deleted file mode 100644 index d8da15f8e..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hbm.blocks.generic; - -import com.hbm.blocks.ModBlocks; -import com.hbm.extprop.HbmLivingProps; -import com.hbm.extprop.HbmLivingProps.ContaminationEffect; - -import net.minecraft.block.BlockFalling; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class BlockGoldSand extends BlockFalling { - - public BlockGoldSand(Material mat) { - super(mat); - } - - @Override - public void onEntityWalking(World world, int x, int y, int z, Entity entity) { - - if(entity instanceof EntityLivingBase) { - entity.attackEntityFrom(DamageSource.inFire, 2F); - - if(this == ModBlocks.sand_gold198) { - HbmLivingProps.addCont((EntityLivingBase)entity, new ContaminationEffect(5F, 300, false)); - } - } - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index 735c8a89f..892f9f929 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -14,6 +14,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; @@ -31,8 +32,6 @@ public class BlockGrate extends Block implements ITooltipProvider { public BlockGrate(Material material) { super(material); - - //this.maxY = 0.999D; } @Override @@ -65,16 +64,23 @@ public class BlockGrate extends Block implements ITooltipProvider { return false; } + public float getY(int meta) { + if(meta == 9) return -0.125F; + return meta * 0.125F; + } + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); - this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); + float fy = getY(meta); + this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); - this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); + float fy = getY(meta); + this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } @@ -96,6 +102,50 @@ public class BlockGrate extends Block implements ITooltipProvider { return (int)Math.floor(hY * 8D); } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + if(player.isSneaking()) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta == 0) { + // Check that the block below can fit a grate above it + Block block = world.getBlock(x, y - 1, z); + AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z); + if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.maxY - (double)y < -0.05)) { + world.setBlockMetadataWithNotify(x, y, z, 9, 3); + } + } else if(meta == 7) { + Block block = world.getBlock(x, y + 1, z); + AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z); + if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.minY - (double)(y + 1) > 0.05)) { + world.setBlockMetadataWithNotify(x, y, z, 8, 3); + } + } + } + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock) { + if(world.isRemote) return; + + int meta = world.getBlockMetadata(x, y, z); + + boolean breakIt = false; + + if(meta == 9) { + AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); + breakIt = !(otherBB == null || otherBB.maxY - (double)y < -0.05); + } else if(meta == 8) { + AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); + breakIt = !(otherBB == null || otherBB.minY - (double)(y + 1) > 0.05); + } + + if(breakIt) { + dropBlockAsItem(world, x, y, z, 0, 0); + world.setBlockToAir(x, y, z); + } + } + @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { if(this != ModBlocks.steel_grate_wide || !(entity instanceof EntityItem || entity instanceof EntityXPOrb)) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java index 753832e36..ffcea711d 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java @@ -2,112 +2,139 @@ package com.hbm.blocks.generic; import java.util.List; +import com.hbm.blocks.IBlockMulti; + import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockFence; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockMetalFence extends BlockFence { - - public BlockMetalFence(Material p_i45406_2_) { - super("", p_i45406_2_); +public class BlockMetalFence extends BlockFence implements IBlockMulti { + + public IIcon postIcon; + + public BlockMetalFence(Material mat) { + super("", mat); } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); @Override - public int getRenderType(){ + public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister p_149651_1_) - { - this.blockIcon = p_149651_1_.registerIcon(this.getTextureName()); - } - - public void addCollisionBoxesToList(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_) - { - boolean flag = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ - 1); - boolean flag1 = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ + 1); - boolean flag2 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ - 1, p_149743_3_, p_149743_4_); - boolean flag3 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ + 1, p_149743_3_, p_149743_4_); - float f = 0.375F; - float f1 = 0.625F; - float f2 = 0.375F; - float f3 = 0.625F; + @Override + public int damageDropped(int meta) { + return rectify(meta); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta == 0 ? this.blockIcon : this.postIcon; + } - if (flag) - { - f2 = 0.0F; - } + public String getUnlocalizedName(ItemStack stack) { + return stack.getItemDamage() == 1 ? getUnlocalizedName() + "_post" : getUnlocalizedName(); + } - if (flag1) - { - f3 = 1.0F; - } + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(this.getTextureName()); + this.postIcon = iconRegister.registerIcon(this.getTextureName() + "_post"); + } - if (flag || flag1) - { - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_); - } + @Override + public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) { + boolean flag = this.canConnectFenceTo(world, x, y, z - 1); + boolean flag1 = this.canConnectFenceTo(world, x, y, z + 1); + boolean flag2 = this.canConnectFenceTo(world, x - 1, y, z); + boolean flag3 = this.canConnectFenceTo(world, x + 1, y, z); + float f = 0.375F; + float f1 = 0.625F; + float f2 = 0.375F; + float f3 = 0.625F; - f2 = 0.375F; - f3 = 0.625F; + if(flag) { + f2 = 0.0F; + } - if (flag2) - { - f = 0.0F; - } + if(flag1) { + f3 = 1.0F; + } - if (flag3) - { - f1 = 1.0F; - } + if(flag || flag1) { + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + addCol(world, x, y, z, aabb, list, entity); + } - if (flag2 || flag3 || !flag && !flag1) - { - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_); - } + f2 = 0.375F; + f3 = 0.625F; - if (flag) - { - f2 = 0.0F; - } + if(flag2) { + f = 0.0F; + } - if (flag1) - { - f3 = 1.0F; - } + if(flag3) { + f1 = 1.0F; + } - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - } - - public void addCol(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_) - { - AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_); + if(flag2 || flag3 || !flag && !flag1) { + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + addCol(world, x, y, z, aabb, list, entity); + } - if (axisalignedbb1 != null && p_149743_5_.intersectsWith(axisalignedbb1)) - { - p_149743_6_.add(axisalignedbb1); - } - } + if(flag) { + f2 = 0.0F; + } + + if(flag1) { + f3 = 1.0F; + } + + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + } + + private void addCol(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) { + AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(world, x, y, z); + + if(axisalignedbb1 != null && aabb.intersectsWith(axisalignedbb1)) { + list.add(axisalignedbb1); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public int getSubCount() { + return 2; + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java index 0772eb07c..bcc38242d 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.hbm.blocks.IStepTickReceiver; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -13,12 +14,13 @@ import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; 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 BlockMultiSlab extends BlockSlab { +public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver { public static List recipeGen = new ArrayList(); @@ -100,4 +102,18 @@ public class BlockMultiSlab extends BlockSlab { Block block = slabMaterials[meta]; return block.getBlockHardness(world, x, y, z); //relies on block not assuming that they are at that position } + + @Override + public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { + int meta = world.getBlockMetadata(x, y, z); + meta = (meta & 7) % slabMaterials.length; + Block block = slabMaterials[meta]; + if(!world.isRemote || !(block instanceof BlockSpeedy)) + return; + + if(player.moveForward != 0 || player.moveStrafing != 0) { + player.motionX *= 1.5; + player.motionZ *= 1.5; + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java new file mode 100644 index 000000000..2a9bfb8d8 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.IStepTickReceiver; +import com.hbm.blocks.ITooltipProvider; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockSpeedyStairs extends BlockGenericStairs implements IStepTickReceiver, ITooltipProvider { + + double speed; + + public BlockSpeedyStairs(Block block, int meta, double speed) { + super(block, meta); + this.speed = speed; + } + + @Override + public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { + + if(!world.isRemote) + return; + + if(player.moveForward != 0 || player.moveStrafing != 0) { + player.motionX *= speed; + player.motionZ *= speed; + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%"); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java index 17895777c..bf0d4baf9 100644 --- a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java @@ -9,7 +9,7 @@ import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.handler.radiation.ChunkRadiationManager; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/machine/FoundryBasin.java b/src/main/java/com/hbm/blocks/machine/FoundryBasin.java index 59014be8e..d3d014d45 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryBasin.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryBasin.java @@ -67,6 +67,12 @@ public class FoundryBasin extends FoundryCastingBase { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java index ae43ea2d9..8866bfd0f 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java @@ -82,6 +82,12 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryMold.java b/src/main/java/com/hbm/blocks/machine/FoundryMold.java index 1c3182d49..03712d0a2 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryMold.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryMold.java @@ -66,6 +66,11 @@ public class FoundryMold extends FoundryCastingBase { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1D, y + 0.5D, z + 1D); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java index d62f01cb0..dfa51cf3b 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java @@ -96,6 +96,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor, } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index 5abb1e502..8e06209ca 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -10,7 +10,9 @@ import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; @@ -20,8 +22,10 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -146,7 +150,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP player.addExhaustion(0.025F); } - public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, INBTPacketReceiver, IPersistentNBT { + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, IBufPacketReceiver, IPersistentNBT { public long power; protected long maxPower; @@ -190,20 +194,31 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); } - this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("rec", powerReceived); - data.setLong("sent", powerSent); - INBTPacketReceiver.networkPack(this, data, 15); + this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord + opp.offsetY, zCoord + opp.offsetZ, opp); + + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); this.powerSent = 0; this.powerReceived = 0; } } + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(power); + buf.writeLong(maxPower); + buf.writeLong(powerReceived); + buf.writeLong(powerSent); + } + + @Override + public void deserialize(ByteBuf buf) { + power = buf.readLong(); + maxPower = buf.readLong(); + powerReceived = buf.readLong(); + powerSent = buf.readLong(); + } + @Override public long transferPower(long power) { if(power + this.getPower() <= this.getMaxPower()) { @@ -224,14 +239,6 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.setPower(this.getPower() - power); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.powerReceived = nbt.getLong("rec"); - this.powerSent = nbt.getLong("sent"); - } - @Override public long getPower() { return power; diff --git a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java index 25ea1b062..25012acf8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -27,34 +26,23 @@ public class MachineCrystallizer extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - - if(meta >= 12) - return new TileEntityMachineCrystallizer(); - - if(meta >= 8 && meta <= 11) - return new TileEntityProxyInventory(); - - if(meta == 7) - return new TileEntityProxyCombo(false, true, true); - + if(meta >= 12) return new TileEntityMachineCrystallizer(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @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) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { + } else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntityMachineCrystallizer entity = (TileEntityMachineCrystallizer) world.getTileEntity(pos[0], pos[1], pos[2]); - if(entity != null) - { + if(entity != null) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } return true; @@ -65,7 +53,7 @@ public class MachineCrystallizer extends BlockDummyable { @Override public int[] getDimensions() { - return new int[] { 6, 0, 1, 1, 1, 1 }; + return new int[] { 5, 0, 1, 1, 1, 1 }; } @Override @@ -76,20 +64,10 @@ public class MachineCrystallizer extends BlockDummyable { protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); - this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - this.makeExtra(world, x + dir.offsetX * o + 1, y + 5, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o - 1, y + 5, z + dir.offsetZ * o); - } - - if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o + 1); - this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o - 1); - } + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o - 1); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 1); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java new file mode 100644 index 000000000..42691c524 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java @@ -0,0 +1,37 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineOreSlopper extends BlockDummyable { + + public MachineOreSlopper() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineOreSlopper(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 3, 3, 1, 1}; + } + + @Override + public int getOffset() { + return 3; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 48dfd23e2..41f6767ed 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -94,7 +94,7 @@ public class Watz extends BlockDummyable { if(i >= 12 && drop) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48))); - for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt))); + for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt, 64))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1))); diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index 980bdfb32..67da0e324 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.handler.CompatHandler; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.INBTPacketReceiver; @@ -14,8 +15,13 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import api.hbm.energymk2.PowerNetMK2; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -98,7 +104,8 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, return IBlockMultiPass.getRenderType(); } - public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver { + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { private long deltaTick = 0; private long deltaSecond = 0; @@ -134,5 +141,22 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + + @Override + public String getComponentName() { + return "ntm_power_gauge"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord}; + } } } diff --git a/src/main/java/com/hbm/blocks/network/CraneGrabber.java b/src/main/java/com/hbm/blocks/network/CraneGrabber.java index fcda1d05a..b88a707ca 100644 --- a/src/main/java/com/hbm/blocks/network/CraneGrabber.java +++ b/src/main/java/com/hbm/blocks/network/CraneGrabber.java @@ -42,7 +42,7 @@ public class CraneGrabber extends BlockCraneBase { this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down_turn_right"); } - @Override + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { this.dropContents(world, x, y, z, block, meta, 9, 11); super.breakBlock(world, x, y, z, block, meta); diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index f05d3733a..fb759fb93 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -35,7 +35,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @SideOnly(Side.CLIENT) public IIcon[] iconCurveTR; @SideOnly(Side.CLIENT) public IIcon[] iconCurveBL; @SideOnly(Side.CLIENT) public IIcon[] iconCurveBR; - @SideOnly(Side.CLIENT) public IIcon[] iconJunction; + @SideOnly(Side.CLIENT) public IIcon[][] iconJunction; private static final String[] materials = new String[] { "silver", "copper", "white" }; @@ -55,7 +55,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve iconCurveTR = new IIcon[count]; iconCurveBL = new IIcon[count]; iconCurveBR = new IIcon[count]; - iconJunction = new IIcon[count]; + iconJunction = new IIcon[count][5]; for(int i = 0; i < count; i++) { iconStraight[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_straight"); @@ -64,7 +64,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve iconCurveTR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tr"); iconCurveBL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_bl"); iconCurveBR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_br"); - iconJunction[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction"); + for(int j = 0; j < 5; j++) iconJunction[i][j] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction_" + j); } } @@ -83,7 +83,8 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - int m = rectify(world.getBlockMetadata(x, y, z)); + int meta = world.getBlockMetadata(x, y, z); + int m = rectify(meta); if((mask & 0b001111) == 0 && mask > 0) { return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m]; @@ -112,10 +113,10 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m]; if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m]; - return iconJunction[m]; + return iconJunction[m][meta / 3]; } - return iconJunction[m]; + return iconJunction[m][meta / 3]; } @SideOnly(Side.CLIENT) @@ -220,6 +221,12 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java index 42a24fe85..41a081993 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -46,7 +46,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { iconCurveTR = new IIcon[1]; iconCurveBL = new IIcon[1]; iconCurveBR = new IIcon[1]; - iconJunction = new IIcon[1]; + iconJunction = new IIcon[1][5]; iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight"); iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end"); @@ -54,7 +54,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr"); iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl"); iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br"); - iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction"); + for(int i = 0; i < 5; i++) iconJunction[0][i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction_" + i); } public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 9c17a38c0..613337412 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -8,6 +8,7 @@ import java.util.Locale; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; @@ -108,7 +109,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL } @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 8bf891a05..e482398c9 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -183,6 +183,12 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java index 049bc565b..4ebd140fd 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java @@ -91,7 +91,7 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi ForgeDirection dir = ForgeDirection.getOrientation(meta); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && !b.hasComparatorInputOverride() && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + if(!canBlockStay(world, x, y, z, dir, b)) { this.dropBlockAsItem(world, x, y, z, meta, 0); world.setBlockToAir(x, y, z); } @@ -104,7 +104,11 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi ForgeDirection dir = ForgeDirection.getOrientation(side); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + return canBlockStay(world, x, y, z, dir, b); + } + + public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) { + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || b.canProvidePower() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); } @Override diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java index a78aafc4a..086031285 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java @@ -8,18 +8,22 @@ import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.inventory.gui.GUICounterTorch; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.Compat; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; public class RadioTorchCounter extends RadioTorchBase { @@ -38,6 +42,13 @@ public class RadioTorchCounter extends RadioTorchBase { return new TileEntityRadioTorchCounter(); } + @Override + public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) { + if(b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z))) return true; + TileEntity te = Compat.getTileStandard(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + return te instanceof IInventory; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerCounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 75c61aed1..321d349e1 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -35,6 +35,7 @@ public class GeneralConfig { public static boolean enableGuideBook = true; public static boolean enableSteamParticles = true; public static boolean enableSoundExtension = true; + public static boolean enableMekanismChanges = true; public static int hintPos = 0; public static boolean enableExpensiveMode = false; @@ -101,8 +102,9 @@ public class GeneralConfig { enableFluidContainerCompat = config.get(CATEGORY_GENERAL, "1.35_enableFluidContainerCompat", true, "If enabled, fluid containers will be oredicted and interchangable in recipes with other mods' containers, as well as TrainCraft's diesel being considered a valid diesel canister.").getBoolean(true); enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true); enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true); - enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true); - enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true); + enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles", true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true); + enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension", true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true); + enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index 83cf7a10d..0129c534f 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -1,5 +1,8 @@ package com.hbm.config; +import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM; +import com.hbm.handler.radiation.ChunkRadiationManager; + import net.minecraftforge.common.config.Configuration; public class RadiationConfig { @@ -14,6 +17,7 @@ public class RadiationConfig { public static boolean enableContamination = true; public static boolean enableChunkRads = true; + public static boolean enablePRISM = false; public static boolean disableAsbestos = false; public static boolean disableCoal = false; @@ -47,6 +51,8 @@ public class RadiationConfig { enableContamination = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_00_enableContamination", "Toggles player contamination (and negative effects from radiation poisoning)", true); enableChunkRads = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_01_enableChunkRads", "Toggles the world radiation system (chunk radiation only, some blocks use an AoE!)", true); + enablePRISM = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_99_enablePRISM", "Enables the new 3D resistance-aware PRISM radiation system", false); + if(enablePRISM) ChunkRadiationManager.proxy = new ChunkRadiationHandlerPRISM(); fogCh = CommonConfig.setDef(fogCh, 20); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 26025c419..6321aebff 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -32,9 +32,6 @@ public class MineralRecipes { add1To9Pair(ModItems.dust, ModItems.dust_tiny); add1To9Pair(ModItems.powder_coal, ModItems.powder_coal_tiny); add1To9Pair(ModItems.ingot_mercury, ModItems.nugget_mercury); - - add1To9Pair(ModBlocks.sand_gold, ModItems.powder_gold); - add1To9Pair(ModBlocks.sand_gold198, ModItems.powder_au198); add1To9Pair(ModBlocks.block_aluminium, ModItems.ingot_aluminium); add1To9Pair(ModBlocks.block_graphite, ModItems.ingot_graphite); @@ -457,7 +454,7 @@ public class MineralRecipes { add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_IRON), new ItemStack(ModItems.powder_iron)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_COPPER), new ItemStack(ModItems.powder_copper)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LITHIUM), new ItemStack(ModItems.powder_lithium)); - add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.powder_quartz)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.nugget_silicon, 3)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LEAD), new ItemStack(ModItems.powder_lead)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_TITANIUM), new ItemStack(ModItems.powder_titanium)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_ALUMINIUM), new ItemStack(ModItems.powder_aluminium)); diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 20eb1a2f1..7b08746dd 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -4,8 +4,12 @@ import static com.hbm.inventory.OreDictManager.*; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; +import com.hbm.items.machine.ItemScraps; import com.hbm.main.CraftingManager; import net.minecraft.init.Blocks; @@ -53,9 +57,11 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.ingot_mercury, ModItems.ingot_mercury, COAL.dust() }); //Metal powders - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_steel, 1), new Object[] { IRON.dust(), COAL.dust() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MINGRADE, MaterialShapes.INGOT.q(2))), new Object[] { CU.dust(), REDSTONE.dust() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MAGTUNG, MaterialShapes.INGOT.q(1))), new Object[] { W.dust(), SA326.nugget() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_TCALLOY, MaterialShapes.INGOT.q(1))), new Object[] { STEEL.dust(), TC99.nugget() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(1))), new Object[] { IRON.dust(), COAL.dust() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(4))), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), IRON.dust(), COAL.dust(), COAL.dust(), COAL.dust(), COAL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 1), new Object[] { new ItemStack(Items.coal, 1, 1), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND }); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 0367c6a04..8de9de124 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -127,7 +127,6 @@ public class SmeltingRecipes { GameRegistry.addSmelting(new ItemStack(ModBlocks.gravel_diamond), new ItemStack(Items.diamond), 3.0F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_uranium), new ItemStack(ModBlocks.glass_uranium), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_polonium), new ItemStack(ModBlocks.glass_polonium), 0.75F); - GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_quartz), new ItemStack(ModBlocks.glass_quartz), 0.75F); GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite), new ItemStack(ModBlocks.glass_trinitite), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite_red), new ItemStack(ModBlocks.glass_trinitite), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_boron), new ItemStack(ModBlocks.glass_boron), 0.25F); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 9b9f95a4d..28652267a 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -131,6 +131,7 @@ public class ToolRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ore_density_scanner, 1), new Object[] { "VVV", "CSC", "GGG", " S ", 'V', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), 'G', GOLD.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', W.bolt(), 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 083042da0..8f80a819a 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -74,7 +74,6 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', AL.shell(), 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 }); @@ -139,7 +138,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); @@ -286,7 +285,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 7), new Object[] { "DSD", "SCS", "DSD", 'D', P_WHITE.ingot(), 'S', new ItemStack(ModItems.ammo_arty, 1, 5), 'C', ModBlocks.det_cord }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 3), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 0) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 6), new Object[] { "DSD", "SCS", "DSD", 'D', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 3), 'C', ModBlocks.det_cord }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), ModItems.ducttape }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 8), new Object[] { " I ", " S ", "CCC", 'C', ModItems.cordite, 'I', ModItems.sphere_steel, 'S', CU.shell() }); //DGK Belts @@ -348,7 +347,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_mirv, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_smart, 'C', ModItems.grenade_generic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_breach, 1), new Object[] { "G", "G", "P", 'G', ModItems.grenade_smart, 'P', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_burst, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_breach, 'C', ModItems.grenade_generic }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 28832b449..6654eb051 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -126,8 +126,6 @@ public class EntityMappings { addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000); addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000); addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250); - addEntity(EntityCarrier.class, "entity_missile_carrier", 1000); - addEntity(EntityBooster.class, "entity_missile_booster", 1000); addEntity(EntityModBeam.class, "entity_beam_bang", 1000); addEntity(EntityMissileBHole.class, "entity_missile_blackhole", 1000); addEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 1000); diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index 58ee212b4..8d1f1a01a 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -2,6 +2,7 @@ package com.hbm.entity.item; import com.hbm.entity.logic.IChunkLoader; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; @@ -73,7 +74,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, nbt.setTag("Items", nbttaglist); if(fluid != null) { - nbt.setString("fluidType", fluid.type.getName()); + nbt.setInteger("fluidType", fluid.type.getID()); nbt.setInteger("fluidAmount", fluid.fill); } @@ -98,7 +99,13 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, } if(nbt.hasKey("fluidType")) { - this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); + FluidType type = Fluids.fromNameCompat(nbt.getString("fluidType")); + if(type != Fluids.NONE) { + nbt.removeTag(nbt.getString("fluidType")); + } else + type = Fluids.fromID(nbt.getInteger("fluidType")); + + this.fluid = new FluidStack(type, nbt.getInteger("fluidAmount")); } this.dataWatcher.updateObject(11, nbt.getByte("load")); diff --git a/src/main/java/com/hbm/entity/missile/EntityBooster.java b/src/main/java/com/hbm/entity/missile/EntityBooster.java deleted file mode 100644 index 5ddb30ae8..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityBooster.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hbm.entity.missile; - -import com.hbm.entity.particle.EntityTSmokeFX; -import com.hbm.explosion.ExplosionLarge; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.init.Blocks; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityBooster extends EntityThrowable { - - public EntityBooster(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - } - - @Override - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - - this.motionY -= 0.015; - - if(motionY < -1.5F) - motionY = -1.5F; - - this.rotation(); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - if(!this.worldObj.isRemote) - { - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 10F, true, false, true); - } - this.setDead(); - } - - if(!worldObj.isRemote) { - for(int i = 0; i < 2; i++) { - EntityTSmokeFX fx1 = new EntityTSmokeFX(worldObj); - fx1.posY = posY - 0.25D; - fx1.posX = posX + rand.nextGaussian() * 0.25D; - fx1.posZ = posZ + rand.nextGaussian() * 0.25D; - fx1.motionY = -0.2D; - - worldObj.spawnEntityInWorld(fx1); - } - } - - this.motionX *= 0.995; - this.motionZ *= 0.995; - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityCarrier.java b/src/main/java/com/hbm/entity/missile/EntityCarrier.java deleted file mode 100644 index 89ec901d8..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityCarrier.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.hbm.entity.missile; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ISatChip; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.saveddata.satellites.Satellite; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityCarrier extends EntityThrowable { - - double acceleration = 0.00D; - - private ItemStack payload; - - public EntityCarrier(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - this.setSize(3.0F, 26.0F); - } - - @Override - public void onUpdate() { - - //this.setDead(); - - if(motionY < 3.0D) { - acceleration += 0.0005D; - motionY += acceleration; - } - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - - if(!worldObj.isRemote) { - for(int i = 0; i < 10; i++) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "gasfire"); - data.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - } - - if(this.dataWatcher.getWatchableObjectInt(8) == 1) - for(int i = 0; i < 2; i++) { - NBTTagCompound d1 = new NBTTagCompound(); - d1.setString("type", "gasfire"); - d1.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d1, posX + rand.nextGaussian() * 0.75D + 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d2 = new NBTTagCompound(); - d2.setString("type", "gasfire"); - d2.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d2, posX + rand.nextGaussian() * 0.75D - 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d3 = new NBTTagCompound(); - d3.setString("type", "gasfire"); - d3.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d3, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D + 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d4 = new NBTTagCompound(); - d4.setString("type", "gasfire"); - d4.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d4, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D - 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - } - - - if(this.ticksExisted < 20) { - ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 13 + rand.nextInt(3), 4 + rand.nextGaussian() * 2); - } - } - - if(this.posY > 300 && this.dataWatcher.getWatchableObjectInt(8) == 1) - this.disengageBoosters(); - //this.setDead(); - - if(this.posY > 600) { - deployPayload(); - } - } - - private void deployPayload() { - - if(payload != null) { - - if(payload.getItem() == ModItems.flame_pony) { - ExplosionLarge.spawnTracers(worldObj, posX, posY, posZ, 25); - for(Object p : worldObj.playerEntities) - ((EntityPlayer)p).triggerAchievement(MainRegistry.achSpace); - } - - if(payload.getItem() == ModItems.sat_foeq) { - for(Object p : worldObj.playerEntities) - ((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ); - } - - if(payload.getItem() instanceof ISatChip) { - - int freq = ISatChip.getFreqS(payload); - - Satellite.orbit(worldObj, Satellite.getIDFromItem(payload.getItem()), freq, posX, posY, posZ); - } - } - - this.setDead(); - } - - @Override - protected void entityInit() { - this.dataWatcher.addObject(8, 1); - } - - public void setPayload(ItemStack stack) { - this.payload = stack.copy(); - } - - private void disengageBoosters() { - this.dataWatcher.updateObject(8, 0); - - if(!worldObj.isRemote) { - EntityBooster boost1 = new EntityBooster(worldObj); - boost1.posX = posX + 1.5D; - boost1.posY = posY; - boost1.posZ = posZ; - boost1.motionX = 0.45D + rand.nextDouble() * 0.2D; - boost1.motionY = motionY; - boost1.motionZ = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost1); - - EntityBooster boost2 = new EntityBooster(worldObj); - boost2.posX = posX - 1.5D; - boost2.posY = posY; - boost2.posZ = posZ; - boost2.motionX = -0.45D - rand.nextDouble() * 0.2D; - boost2.motionY = motionY; - boost2.motionZ = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost2); - - EntityBooster boost3 = new EntityBooster(worldObj); - boost3.posX = posX; - boost3.posY = posY; - boost3.posZ = posZ + 1.5D; - boost3.motionZ = 0.45D + rand.nextDouble() * 0.2D; - boost3.motionY = motionY; - boost3.motionX = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost3); - - EntityBooster boost4 = new EntityBooster(worldObj); - boost4.posX = posX; - boost4.posY = posY; - boost4.posZ = posZ - 1.5D; - boost4.motionZ = -0.45D - rand.nextDouble() * 0.2D; - boost4.motionY = motionY; - boost4.motionX = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost4); - } - } - - @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } -} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index 17923d69e..811d7944f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -99,7 +99,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { this.worldObj.spawnEntityInWorld(cloud); } } - @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_schrabidium, 1); } + @Override public ItemStack getDebrisRareDrop() { return null; } @Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_schrabidium); } } diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 650f88da8..64adc7913 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -130,7 +130,7 @@ public class ExplosionLarge { if(debris.get(i) != null) { int k = rand.nextInt(debris.get(i).stackSize + 1); for(int j = 0; j < k; j++) { - EntityItem item = new EntityItem(world, x, y, z, new ItemStack(debris.get(i).getItem())); + EntityItem item = new EntityItem(world, x, y, z, debris.get(i).copy()); item.motionX = (motionX + rand.nextGaussian() * deviation) * 0.85; item.motionY = (motionY + rand.nextGaussian() * deviation) * 0.85; item.motionZ = (motionZ + rand.nextGaussian() * deviation) * 0.85; diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index 07d7fd20a..552acfe33 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -2,20 +2,34 @@ package com.hbm.handler; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.tileentity.TileEntityProxyCombo; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; + +import java.lang.reflect.Array; /** * General handler for OpenComputers compatibility. - *

- * Mostly just functions used across many TEs. + * @author BallOfEnergy (Microwave) */ public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { if(type == Fluids.STEAM) {return new Object[] {0};} else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} return new Object[] {3}; } + public static FluidType intToSteamType(int arg) { switch(arg) { default: @@ -28,4 +42,80 @@ public class CompatHandler { return Fluids.ULTRAHOTSTEAM; } } + + /** + * This is an interface made specifically for adding OC compatibility to NTM machines. The {@link li.cil.oc.api.network.SimpleComponent} interface must also be implemented in the TE. + *
+ * This interface is not required to be defined as an optional interface, though the {@link li.cil.oc.api.network.SimpleComponent} interface must be declared as an optional interface. + *
+ * Pseudo multiblocks will automatically receive compatibility with their ports by proxying their `methods()` and `invoke()` functions. This is the only time they need to be defined. + * + **/ + @Optional.InterfaceList({ + @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"), + }) + @SimpleComponent.SkipInjection // make sure OC doesn't inject this shit into the interface and crash + public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral { + + /** + * Must be overridden in the implemented TE, or it will default to "ntm_null". + *
+ * Dictates the component name exposed to the computer. + * @return String + */ + @Override + default String getComponentName() { + return "ntm_null"; + } + + /** + * Tells OC which sides of the block cables should connect to. + * @param side Side to check + * @return If the side should be able to connect. + */ + @Override + default boolean canConnectNode(ForgeDirection side) { + return true; + } + + /** + * Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array. + * @return Additional text to add in the form of lang entries (ex: "analyze.basic2"). + */ + default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};} + + @Override + default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic3").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.name", this.getComponentName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + String[] extraInfo = getExtraInfo(); + for (String info : extraInfo) { + if(!info.equals("")) + player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + } + TileEntity te = (TileEntity) this; + if(Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo || this.getComponentName().equals("ntm_null")) + player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + return null; + } + + /** + * Standard methods array from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. + * @return Array of methods to expose to the computer. + */ + @Override + default String[] methods() {return new String[0];} + + /** + * Standard invoke function from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. + * @return Data to the computer as a return from the function. + */ + @Override + default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;} + } } diff --git a/src/main/java/com/hbm/handler/ToolAbility.java b/src/main/java/com/hbm/handler/ToolAbility.java index f142c5626..2a03e79a4 100644 --- a/src/main/java/com/hbm/handler/ToolAbility.java +++ b/src/main/java/com/hbm/handler/ToolAbility.java @@ -441,7 +441,7 @@ public abstract class ToolAbility { block = Blocks.redstone_ore; ItemStack stack = new ItemStack(block, 1, meta); - CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE); if(result != null) { world.setBlockToAir(x, y, z); diff --git a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java index 875e14f46..9230bb11c 100644 --- a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java +++ b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java @@ -40,7 +40,7 @@ public class IMCCrystallizer extends IMCHandler { time = 600; if(acid.type == Fluids.NONE) - acid = new FluidStack(Fluids.ACID, 500); + acid = new FluidStack(Fluids.PEROXIDE, 500); CrystallizerRecipe recipe = new CrystallizerRecipe(out, time); recipe.acidAmount = acid.fill; diff --git a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java index 51b0a6b6f..bdc9a3954 100644 --- a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java @@ -120,7 +120,7 @@ public class CyclotronRecipeHandler extends TemplateRecipeHandler implements ICo guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(83 - 3 + 16 - 52, 5 + 18 + 1, 24, 18), "cyclotronProcessing")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(47, 15, 36, 36), "cyclotronProcessing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(48 - 5, 27 - 11, 34, 34), "cyclotronProcessing")); guiGui.add(GUIMachineCyclotron.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 776755b75..df241808f 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.handler.imc.ICompatNHNEI; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.util.InventoryUtil; @@ -243,9 +244,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen if(outputId.equals(getKey())) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); } @@ -257,10 +262,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public void loadCraftingRecipes(ItemStack result) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + match: for(ItemStack[] array : outs) { for(ItemStack stack : array) { @@ -285,10 +293,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public void loadUsageRecipes(ItemStack ingredient) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + match: for(ItemStack[] array : ins) { for(ItemStack stack : array) { diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index b4904425f..5627d1109 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -207,13 +207,12 @@ public class PollutionHandler { int P = PollutionType.POISON.ordinal(); /* CALCULATION */ - if(data.pollution[S] > 15) { + if(data.pollution[S] > 10) { pollutionForNeightbors[S] = (float) (data.pollution[S] * 0.05F); data.pollution[S] *= 0.8F; - } else { - data.pollution[S] *= 0.99F; } + data.pollution[S] *= 0.99F; data.pollution[H] *= 0.9995F; if(data.pollution[P] > 10) { diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java index a1b85d242..ed64bfc90 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java @@ -3,6 +3,8 @@ package com.hbm.handler.radiation; import java.util.HashMap; import java.util.Map.Entry; +import com.hbm.interfaces.Untested; + import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; @@ -19,7 +21,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { private HashMap perWorld = new HashMap(); - @Override + @Override @Untested public float getRadiation(World world, int x, int y, int z) { ThreeDimRadiationPerWorld radWorld = perWorld.get(world); @@ -28,7 +30,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { int yReg = MathHelper.clamp_int(y >> 4, 0, 15); - Float rad = radWorld.radiation.get(coords)[yReg]; + Float rad = radWorld.radiation.get(coords)[yReg]; // this will crash if the coord pair isn't nullchecked return rad == null ? 0F : rad; } @@ -66,7 +68,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { setRadiation(world, x, y, z, Math.max(getRadiation(world, x, y, z) - rad, 0)); } - @Override + @Override @Untested //will most definitely crash, for this to work i need to figure out what it even was i wanted to do in the first place public void updateSystem() { for(Entry entry : perWorld.entrySet()) { @@ -96,7 +98,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { if(buff.containsKey(newCoord)) { int newY = MathHelper.clamp_int(y + j, 0, 15); - Float[] vals = radiation.get(newCoord); + Float[] vals = radiation.get(newCoord); // ????????? but radiation was cleared! float newRad = vals[newY] + chunk.getValue()[newY] * percent; vals[newY] = Math.max(0F, newRad * 0.999F - 0.05F); } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java new file mode 100644 index 000000000..861d029db --- /dev/null +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -0,0 +1,419 @@ +package com.hbm.handler.radiation; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; + +import com.hbm.lib.Library; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.world.ChunkDataEvent; +import net.minecraftforge.event.world.ChunkEvent; +import net.minecraftforge.event.world.WorldEvent; + +/** + * The PRISM system aims to make a semi-realistic containment system with simplified and variable resistance values. + * The general basis for this system is the simplified 3D system with its 16x16x16 regions, but in addition to those + * sub-chunks, each sub-chunk has several arrays of resistance values (three arrays, one for each axis) where each + * value represents the resistance of one "slice" of the sub-chunk. This allows resistances to be handled differently + * depending on the direction the radiation is coming from, and depending on the sub-chunk's localized block resistance + * density. While not as accurate as the pocket-based system from 1.12, it does a better job at simulating resistances + * of various block types instead of a binary sealing/not sealing system. For example it is therefore possible to + * safely store radioactive waste in a cave, shielded by many layers of rock and dirt, without needing extra concrete. + * The system's name stems from the "gradient"-like handling of the resistance values per axis, multiple color + * gradients make a rainbow, and rainbows come from prisms. Just like a prism, sub-chunks too handle the radiation + * going through them differently depending on the angle of approach. + * ___ + * /\ \ + * / \ \ + * / \ \ + * / \ \ + * /________\__\ + * + * @author hbm + * + */ +public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { + + public ConcurrentHashMap perWorld = new ConcurrentHashMap(); + public static int cycles = 0; + + public static final float MAX_RADIATION = 1_000_000; + private static final String NBT_KEY_CHUNK_RADIATION = "hfr_prism_radiation_"; + private static final String NBT_KEY_CHUNK_RESISTANCE = "hfr_prism_resistance_"; + private static final String NBT_KEY_CHUNK_EXISTS = "hfr_prism_exists_"; + + @Override + public float getRadiation(World world, int x, int y, int z) { + + RadPerWorld system = perWorld.get(world); + + if(system != null) { + ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); + int yReg = MathHelper.clamp_int(y >> 4, 0, 15); + SubChunk[] subChunks = system.radiation.get(coords); + if(subChunks != null) { + SubChunk rad = subChunks[yReg]; + if(rad != null) return rad.radiation; + } + } + + return 0; + } + + @Override + public void setRadiation(World world, int x, int y, int z, float rad) { + + if(Float.isNaN(rad)) rad = 0; + + RadPerWorld system = perWorld.get(world); + + if(system != null) { + ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); + int yReg = MathHelper.clamp_int(y >> 4, 0, 15); + SubChunk[] subChunks = system.radiation.get(coords); + if(subChunks == null) { + subChunks = new SubChunk[16]; + system.radiation.put(coords, subChunks); + } + if(subChunks[yReg] == null) subChunks[yReg] = new SubChunk().rebuild(world, x, y, z); + subChunks[yReg].radiation = MathHelper.clamp_float(rad, 0, MAX_RADIATION); + world.getChunkFromBlockCoords(x, z).isModified = true; + } + } + + @Override + public void incrementRad(World world, int x, int y, int z, float rad) { + setRadiation(world, x, y, z, getRadiation(world, x, y, z) + rad); + } + + @Override + public void decrementRad(World world, int x, int y, int z, float rad) { + setRadiation(world, x, y, z, getRadiation(world, x, y, z) - rad); + } + + @Override + public void receiveWorldLoad(WorldEvent.Load event) { + if(!event.world.isRemote) perWorld.put(event.world, new RadPerWorld()); + } + + @Override + public void receiveWorldUnload(WorldEvent.Unload event) { + if(!event.world.isRemote) perWorld.remove(event.world); + } + + @Override + public void receiveChunkLoad(ChunkDataEvent.Load event) { + + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + + if(radWorld != null) { + SubChunk[] chunk = new SubChunk[16]; + + for(int i = 0; i < 16; i++) { + if(!event.getData().getBoolean(NBT_KEY_CHUNK_EXISTS + i)) { + chunk[i] = new SubChunk().rebuild(event.world, event.getChunk().xPosition << 4, i << 4, event.getChunk().zPosition << 4); + continue; + } + SubChunk sub = new SubChunk(); + chunk[i] = sub; + sub.radiation = event.getData().getFloat(NBT_KEY_CHUNK_RADIATION + i); + for(int j = 0; j < 16; j++) sub.xResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i); + for(int j = 0; j < 16; j++) sub.yResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i); + for(int j = 0; j < 16; j++) sub.zResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i); + } + + radWorld.radiation.put(event.getChunk().getChunkCoordIntPair(), chunk); + } + } + } + + @Override + public void receiveChunkSave(ChunkDataEvent.Save event) { + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + if(radWorld != null) { + SubChunk[] chunk = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair()); + if(chunk != null) { + for(int i = 0; i < 16; i++) { + SubChunk sub = chunk[i]; + if(sub != null) { + float rad = sub.radiation; + event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]); + event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true); + } + } + } + } + } + } + + @Override + public void receiveChunkUnload(ChunkEvent.Unload event) { + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + if(radWorld != null) { + radWorld.radiation.remove(event.getChunk().getChunkCoordIntPair()); + } + } + } + + public static final HashMap newAdditions = new HashMap(); + + @Override + public void updateSystem() { + + cycles++; + + for(WorldServer world : DimensionManager.getWorlds()) { //only updates loaded worlds + + RadPerWorld system = perWorld.get(world); + if(system == null) continue; + + int rebuildAllowance = 25; + + //it would be way to expensive to replace the sub-chunks entirely like with the old system + //(that only used floats anyway...) so instead we shift the radiation into the prev value + for(Entry chunk : system.radiation.entrySet()) { + ChunkCoordIntPair coord = chunk.getKey(); + + for(int i = 0; i < 16; i++) { + + SubChunk sub = chunk.getValue()[i]; + + boolean hasTriedRebuild = false; + + if(sub != null) { + sub.prevRadiation = sub.radiation; + sub.radiation = 0; + + //process some chunks that need extra rebuilding + if(rebuildAllowance > 0 && sub.needsRebuild) { + sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4); + if(!sub.needsRebuild) { + rebuildAllowance--; + hasTriedRebuild = true; + } + } + + if(!hasTriedRebuild && Math.abs(coord.chunkXPos * coord.chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) { + + Chunk c = world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos); + ExtendedBlockStorage[] xbs = c.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[i]; + int checksum = 0; + + if(subChunk != null) { + for(int iX = 0; iX < 16; iX++) for(int iY = 0; iY < 16; iY ++) for(int iZ = 0; iZ < 16; iZ ++) checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; + } + + if(checksum != sub.checksum) { + sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4); + } + } + } + } + } + + //has to support additions while iterating + Iterator> it = system.radiation.entrySet().iterator(); + while(it.hasNext()) { + Entry chunk = it.next(); + if(this.getPrevChunkRadiation(chunk.getValue()) <= 0) continue; + for(int i = 0; i < 16; i++) { + + SubChunk sub = chunk.getValue()[i]; + + if(sub != null) { + if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation) || Float.isInfinite(sub.prevRadiation)) continue; + float radSpread = 0; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(world, sub, i, chunk.getKey(), chunk.getValue(), system.radiation, dir); + sub.radiation += (sub.prevRadiation - radSpread) * 0.95F; + sub.radiation -= 1F; + sub.radiation = MathHelper.clamp_float(sub.radiation, 0, MAX_RADIATION); + } + } + } + + system.radiation.putAll(newAdditions); + newAdditions.clear(); + + /* + //reap chunks with no radiation at all + system.radiation.entrySet().removeIf(x -> getTotalChunkRadiation(x.getValue()) <= 0F); + */ //is this even a good idea? by reaping unused chunks we still lose our cached resistance values + } + } + + /** Returns the amount of radiation spread */ + private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, ConcurrentHashMap map, ForgeDirection dir) { + + float spread = 0.1F; + float amount = source.prevRadiation * spread; + + if(amount <= 1F) return 0; + + if(dir.offsetY != 0) { + if(dir == Library.POS_Y && y == 15) return amount; // out of world + if(dir == Library.NEG_Y && y == 0) return amount; // out of world + if(chunk[y + dir.offsetY] == null) chunk[y + dir.offsetY] = new SubChunk().rebuild(world, origin.chunkXPos << 4, (y + dir.offsetY) << 4, origin.chunkZPos << 4); + SubChunk to = chunk[y + dir.offsetY]; + return spreadRadiationTo(source, to, amount, dir); + } else { + ChunkCoordIntPair newPos = new ChunkCoordIntPair(origin.chunkXPos + dir.offsetX, origin.chunkZPos + dir.offsetZ); + if(!world.getChunkProvider().chunkExists(newPos.chunkXPos, newPos.chunkZPos)) return amount; + SubChunk[] newChunk = map.get(newPos); + if(newChunk == null) { + newChunk = new SubChunk[16]; + newAdditions.put(newPos, newChunk); + } + if(newChunk[y] == null) newChunk[y] = new SubChunk().rebuild(world, newPos.chunkXPos << 4, y << 4, newPos.chunkZPos << 4); + SubChunk to = newChunk[y]; + return spreadRadiationTo(source, to, amount, dir); + } + } + + private static float spreadRadiationTo(SubChunk from, SubChunk to, float amount, ForgeDirection movement) { + float resistance = from.getResistanceValue(movement.getOpposite()) + to.getResistanceValue(movement); + double fun = Math.pow(Math.E, -resistance / 10_000D); + float toMove = (float) Math.min(amount * fun, amount); + to.radiation += toMove; + return toMove; + } + + //private static float getTotalChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.radiation; return rad; } + private static float getPrevChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.prevRadiation; return rad; } + + @Override + public void clearSystem(World world) { + RadPerWorld system = perWorld.get(world); + if(system != null) system.radiation.clear(); + } + + public static class RadPerWorld { + public ConcurrentHashMap radiation = new ConcurrentHashMap(); + } + + public static class SubChunk { + + public float prevRadiation; + public float radiation; + public float[] xResist = new float[16]; + public float[] yResist = new float[16]; + public float[] zResist = new float[16]; + public boolean needsRebuild = false; + public int checksum = 0; + + @Deprecated public void updateBlock(World world, int x, int y, int z) { + int cX = x >> 4; + int cY = MathHelper.clamp_int(y >> 4, 0, 15); + int cZ = z >> 4; + + if(!world.getChunkProvider().chunkExists(cX, cZ)) return; + + int tX = cX << 4; + int tY = cY << 4; + int tZ = cX << 4; + + int sX = MathHelper.clamp_int(x - tX, 0, 15); + int sY = MathHelper.clamp_int(y - tY, 0, 15); + int sZ = MathHelper.clamp_int(z - tZ, 0, 15); + + Chunk chunk = world.getChunkFromChunkCoords(cX, cZ); + ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[cY]; + + xResist[sX] = yResist[sY] = zResist[sZ] = 0; + + for(int iX = 0; iX < 16; iX++) { + for(int iY = 0; iY < 16; iY ++) { + for(int iZ = 0; iZ < 16; iZ ++) { + + if(iX == sX || iY == sY || iZ == sZ) { //only redo the three affected slices by this position change + + Block b = subChunk.getBlockByExtId(iX, iY, iZ); + if(b.getMaterial() == Material.air) continue; + float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100); + if(iX == sX) xResist[iX] += resistance; + if(iY == sY) yResist[iY] += resistance; + if(iZ == sZ) zResist[iZ] += resistance; + } + } + } + } + } + + public SubChunk rebuild(World world, int x, int y, int z) { + needsRebuild = true; + int cX = x >> 4; + int cY = MathHelper.clamp_int(y >> 4, 0, 15); + int cZ = z >> 4; + + if(!world.getChunkProvider().chunkExists(cX, cZ)) return this; //if the chunk isn't actually loaded, quit (but needsRebuild is still set!) + + int tX = cX << 4; + int tY = cY << 4; + int tZ = cX << 4; + + for(int i = 0; i < 16; i++) xResist[i] = yResist[i] = zResist[i] = 0; + + Chunk chunk = world.getChunkFromChunkCoords(cX, cZ); + ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[cY]; + checksum = 0; + + if(subChunk != null) { + for(int iX = 0; iX < 16; iX++) { + for(int iY = 0; iY < 16; iY ++) { + for(int iZ = 0; iZ < 16; iZ ++) { + + Block b = subChunk.getBlockByExtId(iX, iY, iZ); + if(b.getMaterial() == Material.air) continue; + float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100); + xResist[iX] += resistance; + yResist[iY] += resistance; + zResist[iZ] += resistance; + checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; // the "good enough" approach + } + } + } + } + + needsRebuild = false; + return this; + } + + public float getResistanceValue(ForgeDirection movement) { + if(movement == Library.POS_X) return getResistanceFromArray(xResist, true); + if(movement == Library.NEG_X) return getResistanceFromArray(xResist, false); + if(movement == Library.POS_Y) return getResistanceFromArray(yResist, true); + if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, false); + if(movement == Library.POS_Z) return getResistanceFromArray(zResist, true); + if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, false); + return 0; + } + + private float getResistanceFromArray(float[] resist, boolean reverse) { + float res = 0F; + for(int i = 1; i < 16; i++) { + int index = reverse ? 15 - i : i; + res += resist[index] / 15F * i; + } + return res; + } + } +} diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java index f1063672a..9cc989370 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java @@ -12,7 +12,7 @@ import net.minecraftforge.event.world.WorldEvent; public class ChunkRadiationManager { - public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple(); + public static ChunkRadiationHandler proxy = new ChunkRadiationHandlerSimple(); @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 93efb26d3..0653efe8c 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -216,7 +216,6 @@ public class HazardRegistry { HazardSystem.register(ancient_scrap, makeData(RADIATION, 150F)); HazardSystem.register(block_corium, makeData(RADIATION, 150F)); HazardSystem.register(block_corium_cobble, makeData(RADIATION, 150F)); - HazardSystem.register(sand_gold198, makeData(RADIATION, au198 * block * powder_mult)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 0), makeData(RADIATION, 0.5F)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 1), makeData(RADIATION, 1F)); diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java index ed6c84c69..177d32218 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java @@ -26,7 +26,7 @@ public class HazardTypeRadiation extends HazardTypeBase { boolean reacher = false; - if(target instanceof EntityPlayer && !GeneralConfig.enable528) + if(target instanceof EntityPlayer) reacher = ((EntityPlayer) target).inventory.hasItem(ModItems.reacher); level *= stack.stackSize; diff --git a/src/main/java/com/hbm/interfaces/ICustomWarhead.java b/src/main/java/com/hbm/interfaces/ICustomWarhead.java index 656425cd1..479ad891c 100644 --- a/src/main/java/com/hbm/interfaces/ICustomWarhead.java +++ b/src/main/java/com/hbm/interfaces/ICustomWarhead.java @@ -4,6 +4,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Arrays; import org.apache.logging.log4j.Level; @@ -17,7 +18,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; -import scala.actors.threadpool.Arrays; /** * Interface for customizable warheads or other explosive devices * @author UFFR diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 0f20e1db2..c4035c989 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -445,11 +445,11 @@ public class OreDictManager { * RARE METALS */ AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium); - REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium) .ore(ore_reiium); - WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium) .ore(ore_weidanium); - UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium) .ore(ore_unobtainium); - VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium) .ore(ore_verticium); - DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon) .ore(ore_daffergon); + REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium); + WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium); + UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium); + VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium); + DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon); /* * RARE EARTHS @@ -625,6 +625,16 @@ public class OreDictManager { OreDictionary.registerOre("container1000lubricant", bdcl); OreDictionary.registerOre("itemSilicon", billet_silicon); + //Legacy wires + OreDictionary.registerOre(AL.wireFine(), wire_aluminium); + OreDictionary.registerOre(CU.wireFine(), wire_copper); + OreDictionary.registerOre(MINGRADE.wireFine(), wire_red_copper); + OreDictionary.registerOre(GOLD.wireFine(), wire_gold); + OreDictionary.registerOre(W.wireFine(), wire_tungsten); + OreDictionary.registerOre(ALLOY.wireFine(), wire_advanced_alloy); + OreDictionary.registerOre(MAGTUNG.wireFine(), wire_magnetized_tungsten); + OreDictionary.registerOre(SA326.wireFine(), wire_schrabidium); + MaterialShapes.registerCompatShapes(); compensateMojangSpaghettiBullshit(); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java index 2bd005ded..c1e144430 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotPattern; import com.hbm.inventory.SlotUpgrade; import com.hbm.items.ModItems; import com.hbm.tileentity.network.TileEntityCraneGrabber; @@ -22,7 +23,7 @@ public class ContainerCraneGrabber extends ContainerBase { //filter for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(grabber, j + i * 3, 40 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new SlotPattern(grabber, j + i * 3, 40 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index d445788e7..942f3cfcb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -1,9 +1,12 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotNonRetarded; +import com.hbm.inventory.recipes.ArcFurnaceRecipes; +import com.hbm.inventory.recipes.ArcFurnaceRecipes.ArcFurnaceRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; +import com.hbm.util.InventoryUtil; import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; @@ -56,13 +59,13 @@ public class ContainerMachineArcFurnaceLarge extends Container { } else { if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { - if(!this.mergeItemStack(stack, 3, 4, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 3, 4, false)) return null; } else if(rStack.getItem() == ModItems.arc_electrode) { - if(!this.mergeItemStack(stack, 4, 5, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 4, 5, false)) return null; } else if(rStack.getItem() instanceof ItemMachineUpgrade) { - if(!this.mergeItemStack(stack, 0, 3, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 0, 3, false)) return null; } else { - if(!this.mergeItemStack(stack, 5, 25, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 5, 25, false)) return null; } } @@ -86,10 +89,22 @@ public class ContainerMachineArcFurnaceLarge extends Container { public SlotArcFurnace(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } + + @Override + public boolean isItemValid(ItemStack stack) { + TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory; + if(furnace.liquidMode) return true; + ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, furnace.liquidMode); + if(recipe != null && recipe.solidOutput != null) { + return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= furnace.getMaxInputSize(); + } + return false; + } @Override public int getSlotStackLimit() { - return this.getHasStack() ? this.getStack().stackSize : 1; + TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory; + return this.getHasStack() ? furnace.getMaxInputSize() : 1; } } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java index 7251c9623..784f5275e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java @@ -1,10 +1,7 @@ package com.hbm.inventory.container; -import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.inventory.SlotTakeOnly; import com.hbm.inventory.SlotUpgrade; -import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCyclotron; @@ -25,42 +22,34 @@ public class ContainerMachineCyclotron extends Container { cyclotron = tile; //Input - this.addSlotToContainer(new Slot(tile, 0, 17, 18)); - this.addSlotToContainer(new Slot(tile, 1, 17, 36)); - this.addSlotToContainer(new Slot(tile, 2, 17, 54)); + this.addSlotToContainer(new Slot(tile, 0, 11, 18)); + this.addSlotToContainer(new Slot(tile, 1, 11, 36)); + this.addSlotToContainer(new Slot(tile, 2, 11, 54)); //Targets - this.addSlotToContainer(new Slot(tile, 3, 107, 18)); - this.addSlotToContainer(new Slot(tile, 4, 107, 36)); - this.addSlotToContainer(new Slot(tile, 5, 107, 54)); + this.addSlotToContainer(new Slot(tile, 3, 101, 18)); + this.addSlotToContainer(new Slot(tile, 4, 101, 36)); + this.addSlotToContainer(new Slot(tile, 5, 101, 54)); //Output - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 143, 18)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 143, 36)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 143, 54)); - //AMAT In - this.addSlotToContainer(new Slot(tile, 9, 143, 90)); - //AMAT Out - this.addSlotToContainer(new SlotTakeOnly(tile, 10, 143, 108)); - //Coolant In - this.addSlotToContainer(new Slot(tile, 11, 62, 72)); - //Coolant Out - this.addSlotToContainer(new SlotTakeOnly(tile, 12, 62, 90)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 131, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 131, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 131, 54)); //Battery - this.addSlotToContainer(new Slot(tile, 13, 62, 108)); + this.addSlotToContainer(new Slot(tile, 9, 168, 83)); //Upgrades - this.addSlotToContainer(new SlotUpgrade(tile, 14, 17, 90)); - this.addSlotToContainer(new SlotUpgrade(tile, 15, 17, 108)); + this.addSlotToContainer(new SlotUpgrade(tile, 10, 60, 81)); + this.addSlotToContainer(new SlotUpgrade(tile, 11, 78, 81)); 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 + 56)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 15 + j * 18, 133 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + this.addSlotToContainer(new Slot(invPlayer, i, 15 + i * 18, 191)); } } @@ -82,20 +71,12 @@ public class ContainerMachineCyclotron extends Container { } else { if(stack.getItem() instanceof IBatteryItem || stack.getItem() == ModItems.battery_creative) { - if(!this.mergeItemStack(stack, 13, 14, true)) - return null; - - } else if(FluidContainerRegistry.getFluidContent(stack, Fluids.COOLANT) > 0) { - if(!this.mergeItemStack(stack, 11, 12, true)) - return null; - - } else if(FluidContainerRegistry.getFullContainer(stack, Fluids.AMAT) != null) { if(!this.mergeItemStack(stack, 9, 10, true)) return null; } else if(stack.getItem() instanceof ItemMachineUpgrade) { - if(!this.mergeItemStack(stack, 14, 15, true)) - if(!this.mergeItemStack(stack, 15, 16, true)) + if(!this.mergeItemStack(stack, 10, 11, true)) + if(!this.mergeItemStack(stack, 11, 12, true)) return null; } else { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java b/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java index abb9cba02..d1ce587b2 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java @@ -2,6 +2,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotNonRetarded; import com.hbm.inventory.SlotUpgrade; import com.hbm.inventory.recipes.SolderingRecipes; import com.hbm.items.ModItems; @@ -24,7 +25,7 @@ public class ContainerMachineSolderingStation extends Container { solderer = tile; //Inputs - for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new Slot(tile, i * 3 + j, 17 + j * 18, 18 + i * 18)); + for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new SlotNonRetarded(tile, i * 3 + j, 17 + j * 18, 18 + i * 18)); //Output this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 6, 107, 27)); //Battery diff --git a/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java b/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java new file mode 100644 index 000000000..1b74dc8f8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java @@ -0,0 +1,50 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerOreSlopper extends Container { + + public TileEntityMachineOreSlopper slopper; + + public ContainerOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) { + this.slopper = slopper; + + //Battery + this.addSlotToContainer(new Slot(slopper, 0, 8, 72)); + //Fluid ID + this.addSlotToContainer(new Slot(slopper, 1, 26, 72)); + //Input + this.addSlotToContainer(new Slot(slopper, 2, 71, 27)); + //Outputs + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 3, 134, 18)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 4, 152, 18)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 5, 134, 36)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 6, 152, 36)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54)); + //Upgrades + this.addSlotToContainer(new Slot(slopper, 0, 62, 72)); + this.addSlotToContainer(new Slot(slopper, 0, 80, 72)); + + 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 boolean canInteractWith(EntityPlayer player) { + return slopper.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 10e776c4c..97e4d45d1 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.google.common.collect.HashBiMap; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -83,7 +84,7 @@ public class Fluids { public static FluidType SCHRABIDIC; public static FluidType AMAT; public static FluidType ASCHRAB; - public static FluidType ACID; + public static FluidType PEROXIDE; public static FluidType WATZ; public static FluidType CRYOGEL; public static FluidType HYDROGEN; @@ -174,6 +175,13 @@ public class Fluids { public static FluidType THORIUM_SALT_DEPLETED; public static FluidType FULLERENE; public static FluidType STELLAR_FLUX; + public static FluidType VITRIOL; + public static FluidType SLOP; + + /* Lagacy names for compatibility purposes */ + @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently + + public static final HashBiMap renameMapping = HashBiMap.create(); public static List customFluids = new ArrayList(); @@ -265,7 +273,7 @@ public class Fluids { SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID); AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); - ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); + PEROXIDE = new FluidType("PEROXIDE", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS, new FT_Polluting().release(PollutionType.POISON, POISON_EXTREME)); CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS); HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addContainers(new CD_Gastank(0x4286f4, 0xffffff)).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP); @@ -369,7 +377,9 @@ public class Fluids { HOTCRACKOIL_DS = new FluidType("HOTCRACKOIL_DS", 0x3A1A28, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS, P_OIL); NAPHTHA_DS = new FluidType("NAPHTHA_DS", 0x63614E, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(LIQUID, VISCOUS, P_FUEL); LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL); - STELLAR_FLUX = new FluidType(139, "STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + VITRIOL = new FluidType("VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + SLOP = new FluidType(141, "SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -483,8 +493,9 @@ public class Fluids { metaOrder.add(SALIENT); metaOrder.add(SEEDSLURRY); metaOrder.add(COLLOID); + metaOrder.add(VITRIOL); metaOrder.add(IONGEL); - metaOrder.add(ACID); + metaOrder.add(PEROXIDE); metaOrder.add(SULFURIC_ACID); metaOrder.add(NITRIC_ACID); metaOrder.add(SOLVENT); @@ -539,6 +550,14 @@ public class Fluids { metaOrder.add(PHEROMONE); metaOrder.add(PHEROMONE_M); + //ANY INTERNAL RENAMING MUST BE REFLECTED HERE - DON'T FORGET TO CHANGE: LANG FILES + TYPE'S STRING ID + NAME OF TANK/GUI TEXTURE FILES! + // V + + renameMapping.put("ACID", PEROXIDE); + + // LEGACY + ACID = PEROXIDE; + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false))); @@ -869,6 +888,34 @@ public class Fluids { return fluid; } + /** for old worlds with types saved as name, do not use otherwise */ + public static FluidType fromNameCompat(String name) { + if(renameMapping.containsKey(name)) { + FluidType fluid = renameMapping.get(name); + + if(fluid == null) //null safety never killed nobody + fluid = Fluids.NONE; + + return fluid; + } + + return fromName(name); + } + + /** basically the inverse of the above method */ + public static String toNameCompat(FluidType type) { + if(renameMapping.containsValue(type)) { + String name = renameMapping.inverse().get(type); + + if(name == null) //ditto + name = Fluids.NONE.getName(); + + return name; + } + + return type.getName(); + } + public static FluidType[] getAll() { return getInOrder(false); } diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 4fa6180d8..641769b1c 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -250,10 +250,10 @@ public class FluidTank { maxX += i; maxY += height; - minV = 0; + minV = 0D; maxV = height / 16D; - minU = 0D; - maxU = width / 16D; + minU = 1D; + maxU = 1D - i / 16D; } Tessellator tessellator = Tessellator.instance; @@ -301,7 +301,7 @@ public class FluidTank { fluid = MathHelper.clamp_int(fluid, 0, max); - type = Fluids.fromName(nbt.getString(s + "_type")); //compat + type = Fluids.fromNameCompat(nbt.getString(s + "_type")); //compat if(type == Fluids.NONE) type = Fluids.fromID(nbt.getInteger(s + "_type")); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java index ae993fb9a..a008911e0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -47,10 +47,10 @@ public class GUIMachineArcWelder extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int p = (int) (welder.power * 52 / welder.maxPower); + int p = (int) (welder.power * 52 / Math.max(welder.maxPower, 1)); drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); - int i = welder.progress * 33 / welder.processTime; + int i = welder.progress * 33 / Math.max(welder.processTime, 1); drawTexturedModalRect(guiLeft + 72, guiTop + 37, 192, 0, i, 14); if(welder.power >= welder.consumption) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java index c0ad1c777..5f5cfc339 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java @@ -4,13 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineCyclotron; import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; @@ -24,25 +21,26 @@ public class GUIMachineCyclotron extends GuiInfoContainer { super(new ContainerMachineCyclotron(invPlayer, tile)); cyclotron = tile; - this.xSize = 176; - this.ySize = 222; + this.xSize = 190; + this.ySize = 215; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 72, 7, 52, cyclotron.power, cyclotron.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 168, guiTop + 18, 16, 63, cyclotron.power, cyclotron.maxPower); - cyclotron.coolant.renderTankInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 72, 7, 52); - cyclotron.amat.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 90, 7, 34); + cyclotron.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 81, 34, 7); + cyclotron.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 90, 34, 7); + cyclotron.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 81, 34, 16); 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.power"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 21, guiTop + 75, 8, 8, mouseX, mouseY, upgradeText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 49, guiTop + 85, 8, 8, mouseX, mouseY, upgradeText); } @Override @@ -50,38 +48,28 @@ public class GUIMachineCyclotron extends GuiInfoContainer { String name = this.cyclotron.hasCustomInventoryName() ? this.cyclotron.getInventoryName() : I18n.format(this.cyclotron.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); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 15, this.ySize - 96 + 2, 4210752); } @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(cyclotron.xCoord, cyclotron.yCoord, cyclotron.zCoord, 0, 0)); - } - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + 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 k = (int) cyclotron.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 80, guiTop + 124 - k, 212, 52 - k, 7, k); - - int l = cyclotron.getProgressScaled(36); - drawTexturedModalRect(guiLeft + 52, guiTop + 26, 176, 0, l, 36); - - if(cyclotron.isOn) - drawTexturedModalRect(guiLeft + 97, guiTop + 107, 219, 0, 18, 18); - - this.drawInfoPanel(guiLeft + 21, guiTop + 75, 8, 8, 8); - - cyclotron.coolant.renderTank(guiLeft + 53, guiTop + 124, this.zLevel, 7, 52); - cyclotron.amat.renderTank(guiLeft + 134, guiTop + 124, this.zLevel, 7, 34); + int k = (int) cyclotron.getPowerScaled(63); + drawTexturedModalRect(guiLeft + 168, guiTop + 80 - k, 190, 62 - k, 16, k); + + int l = cyclotron.getProgressScaled(34); + drawTexturedModalRect(guiLeft + 48, guiTop + 27, 206, 0, l, 34); + + if(l > 0) + drawTexturedModalRect(guiLeft + 172, guiTop + 4, 190, 63, 9, 12); + + this.drawInfoPanel(guiLeft + 49, guiTop + 85, 8, 8, 8); + + cyclotron.tanks[0].renderTank(guiLeft + 11, guiTop + 88, this.zLevel, 34, 7, 1); + cyclotron.tanks[1].renderTank(guiLeft + 11, guiTop + 97, this.zLevel, 34, 7, 1); + cyclotron.tanks[2].renderTank(guiLeft + 107, guiTop + 97, this.zLevel, 34, 16, 1); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java index f86174285..1a3a3f363 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java @@ -46,11 +46,11 @@ public class GUIMachineSolderingStation extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - int p = (int) (solderer.power * 52 / solderer.maxPower); + + int p = (int) (solderer.power * 52 / Math.max(solderer.maxPower, 1)); drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); - - int i = solderer.progress * 33 / solderer.processTime; + + int i = solderer.progress * 33 / Math.max(solderer.processTime, 1); drawTexturedModalRect(guiLeft + 72, guiTop + 28, 192, 0, i, 14); if(solderer.power >= solderer.consumption) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index e691bffc9..310bc7db0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -202,7 +202,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { public void displayStartup() { - if(numberToDisplay < 888888 && turbinegas.counter < 60) { //48 frames needed to complete + if(numberToDisplay < 8888888 && turbinegas.counter < 60) { //48 frames needed to complete digitNumber++; if(digitNumber == 9) { @@ -220,23 +220,23 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { protected void drawPowerMeterDisplay(int number) { //display code - int firstDigitX = 66; + int firstDigitX = 65; int firstDigitY = 62; - int[] digit = new int[6]; + int[] digit = new int[7]; - for(int i = 5; i >= 0; i--) { //creates an array of digits that represent the numbers + for(int i = 6; i >= 0; i--) { //creates an array of digits that represent the numbers digit[i] = (int) (number % 10); number = number / 10; - drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11); + drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11); } int uselessZeros = 0; - for(int i = 0; i < 5; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057 + for(int i = 0; i < 6; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057 if(digit[i] == 0) uselessZeros++; @@ -246,7 +246,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { for(int i = 0; i < uselessZeros; i++) { //turns off the useless zeros - drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 244, 0, 5, 11); + drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 244, 0, 5, 11); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java b/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java new file mode 100644 index 000000000..26f4937fc --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerOreSlopper; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIOreSlopper extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_ore_slopper.png"); + private TileEntityMachineOreSlopper slopper; + + public GUIOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) { + super(new ContainerOreSlopper(player, slopper)); + this.slopper = slopper; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.slopper.hasCustomInventoryName() ? this.slopper.getInventoryName() : I18n.format(this.slopper.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); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index d60c3bece..db21f4194 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -65,7 +65,7 @@ public class GUIPWR extends GuiInfoContainer { this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacityBase) + " TU" }); this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" }); - this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%"); + this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - (Math.round(controller.rodLevel * 100)/100)) + "%"); if(controller.typeLoaded != -1 && controller.amountLoaded > 0) { ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded); diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 722b59878..64b9f36bd 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -88,7 +88,7 @@ public class GUISILEX extends GuiInfoContainer { if(silex.tank.getFill() > 0) { - if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { + if(silex.tank.getTankType() == Fluids.PEROXIDE || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 118, 54, 9); } else { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 109, 54, 9); @@ -102,7 +102,7 @@ public class GUISILEX extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 26, guiTop + 124 - f, 176, 109 - f, 16, f); int i = silex.getFluidScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.ACID ? 43 : 50, i, 7); + drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.PEROXIDE ? 43 : 50, i, 7); } private void drawWave(int x, int y, int height, int width, float resolution, float freq, int color, float thickness, float mult) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java index 0165aa62d..a4e9fe0e7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java @@ -11,6 +11,7 @@ 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.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -54,10 +55,16 @@ public class GUIScreenPreview extends GuiScreen { this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18); GL11.glPopMatrix(); + String nameString = Item.itemRegistry.getNameForObject(preview.getItem()) + ", " + preview.getItemDamage(); String zoomString = "Zoom: " + zoom; String scaleString = "Windows Scale: " + res.getScaleFactor(); - this.fontRendererObj.drawString(zoomString, this.width - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height - 20, 0xff0000); - this.fontRendererObj.drawString(scaleString, this.width - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height - 10, 0xff0000); + + GL11.glPushMatrix(); + GL11.glScaled(0.5, 0.5, 1); + this.fontRendererObj.drawString(zoomString, this.width * 2 - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height * 2 - 35, 0xff0000); + this.fontRendererObj.drawString(scaleString, this.width * 2 - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height * 2 - 25, 0xff0000); + this.fontRendererObj.drawString(nameString, this.width * 2 - this.fontRendererObj.getStringWidth(nameString) - 2, this.height * 2 - 15, 0xff0000); + GL11.glPopMatrix(); } public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index db3c9c869..e99642cfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -12,6 +12,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -24,7 +25,11 @@ import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemScraps; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.oredict.OreDictionary; @@ -37,11 +42,35 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public void registerDefaults() { recipes.put(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1)))); + recipes.put(new ComparableStack(Items.flint), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); recipes.put(new OreDictStack(QUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); recipes.put(new OreDictStack(QUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); recipes.put(new OreDictStack(QUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12)))); recipes.put(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); recipes.put(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + recipes.put(new OreDictStack(ASBESTOS.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + recipes.put(new OreDictStack(ASBESTOS.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + + recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz))); + recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3)))); + + for(BedrockOreType type : BedrockOreType.values()) { + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 3))); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(5)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2)))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5)))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(1)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(1)))); + + int i3 = MaterialShapes.INGOT.q(3); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3))); + } // Autogen for simple single type items for(NTMMaterial material : Mats.orderedList) { @@ -143,7 +172,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public static HashMap getFluidRecipes() { HashMap recipes = new HashMap(); for(Entry recipe : ArcFurnaceRecipes.recipes.entrySet()) { - if(recipe.getValue().fluidOutput != null) { + if(recipe.getValue().fluidOutput != null && recipe.getValue().fluidOutput.length > 0) { Object[] out = new Object[recipe.getValue().fluidOutput.length]; for(int i = 0; i < out.length; i++) out[i] = ItemScraps.create(recipe.getValue().fluidOutput[i], true); recipes.put(recipe.getKey().copy(), out); @@ -236,6 +265,13 @@ public class ArcFurnaceRecipes extends SerializableRecipe { return this; } + public ArcFurnaceRecipe fluidNull(MaterialStack... outputs) { + List mat = new ArrayList(); + for(MaterialStack stack : outputs) if(stack != null) mat.add(stack); + if(!mat.isEmpty()) this.fluidOutput = mat.toArray(new MaterialStack[0]); + return this; + } + public ArcFurnaceRecipe solid(ItemStack output) { this.solidOutput = output; return this; diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 611997149..7bc108bfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -37,6 +38,10 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 5_000L, + new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); + recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 10_000L, + new OreDictStack(TI.plate(), 2), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); //Dense Wires recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, @@ -68,6 +73,8 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(CDALLOY.plateCast(), 2))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000), new OreDictStack(W.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CMB.id), 1_200, 10_000_000L, new FluidStack(Fluids.REFORMGAS, 1_000), + new OreDictStack(CMB.plateCast(), 2))); //pre-DFC recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), new OreDictStack(OSMIRIDIUM.plateCast(), 2))); @@ -103,6 +110,12 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bf1370413..3ede78d79 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -93,27 +93,17 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.warhead_buster_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModBlocks.det_cord, 8), },100); makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200); - makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(MINGRADE.wireFine(), 6), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED) },300); - makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED) },500); + makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(TI.plateCast(), 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER) },300); + makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plateCast(), 12), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.man_core, 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(LI.ingot(), 8), new OreDictStack(Fluids.DEUTERIUM.getDict(1_000), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED) },500); makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()) }, 600); makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32) },1200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel) },600); - makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new OreDictStack(CU.plateCast(), 12), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); - makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 6), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(MINGRADE.wireFine(), 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(CU.plateCast(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450); - makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) },1000); - makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200); - makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); - makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new OreDictStack(CMB.ingot(), 22), new OreDictStack(MAGTUNG.wireFine(), 4), },300); makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150); makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350); makeRecipe(new ComparableStack(ModItems.chopper_tail, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(CMB.ingot(), 5), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.chopper_blades, 2), },200); makeRecipe(new ComparableStack(ModItems.chopper_wing, 1), new AStack[] {new OreDictStack(CMB.plate(), 6), new OreDictStack(CMB.ingot(), 3), new OreDictStack(MAGTUNG.wireFine(), 2), },150); makeRecipe(new ComparableStack(ModItems.chopper_blades, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(STEEL.plate(), 2), new OreDictStack(CMB.ingot(), 2), },200); - makeRecipe(new ComparableStack(ModItems.crt_display, 8), new AStack[] {new OreDictStack(AL.dust(), 2), new ComparableStack(Blocks.glass_pane, 2), new OreDictStack(W.wireFine(), 4), new OreDictStack(STEEL.shell(), 1) }, 100); makeRecipe(new ComparableStack(ModItems.tritium_deuterium_cake, 1), new AStack[] {new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.cell_tritium, 2), new OreDictStack(LI.ingot(), 4), },150); makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50); makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50); @@ -131,7 +121,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.cmb_brick_reinforced, 8), new AStack[] {new ComparableStack(ModBlocks.block_magnetized_tungsten, 4), new ComparableStack(ModBlocks.brick_concrete, 4), new ComparableStack(ModBlocks.cmb_brick, 1), new OreDictStack(STEEL.plate(), 4), },200); makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(AL.wireFine(), 4), new OreDictStack(REDSTONE.dust(), 2), new ComparableStack(ModBlocks.steel_roof, 5), },50); makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100); - makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.VACUUM_TUBE.ordinal()), }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new OreDictStack(STEEL.shell(), 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60); @@ -141,14 +131,14 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new OreDictStack(SA326.wireFine(), 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250); + makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.VACUUM_TUBE.ordinal()) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()) }, 100); - makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), new ComparableStack(ModItems.plate_polymer, 8), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC.ordinal()), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG) },350); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC) }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), new ComparableStack(ModItems.plate_polymer, 8), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC), },200); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4), },150); makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); @@ -164,20 +154,20 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); - makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), new OreDictStack("dyeGray", 6), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(AL.wireFine(), 6), new OreDictStack("dyeBlue", 4), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(CU.wireFine(), 6), new OreDictStack("dyeYellow", 6), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new OreDictStack(AL.plate(), 3), new ComparableStack(ModItems.circuit, 10, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 18), new OreDictStack("dyeLightGray", 12), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 24), new OreDictStack(W.wireFine(), 12), new OreDictStack("dyeBlack", 6), },600); - makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 16), },500); - makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 8), new OreDictStack("dyeWhite", 4), },400); - makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 10), new OreDictStack(STEEL.pipe(), 16), new OreDictStack("dyeGray", 4), },400); - makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new OreDictStack(STEEL.pipe(), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack("dyeBlack", 12), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_fstbmb, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new OreDictStack(GOLD.wireFine(), 12), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack("dyeGray", 6), },600, ModItems.journal_pip, ModItems.journal_bj); - makeRecipe(new ComparableStack(ModBlocks.nuke_custom, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(GOLD.wireFine(), 12), new OreDictStack("dyeGray", 4), },300); - makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.levitation_unit, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(GOLD.wireFine(), 6), },250); - makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(ModItems.coil_gold, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(ModItems.coil_gold, 4), },250); + makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack("dyeGray", 8), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlue", 4), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack("dyeYellow", 6), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeLightGray", 16), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeBlack", 8), },600); + makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED) },500); + makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeWhite", 4), },400); + makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeGray", 8), },400); + makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlack", 8), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_fstbmb, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 8), },600, ModItems.journal_pip, ModItems.journal_bj); + makeRecipe(new ComparableStack(ModBlocks.nuke_custom, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 4), },300); + makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.levitation_unit, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), },250); + makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); + makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); @@ -265,12 +255,109 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ADVANCED), },500); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), },400); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), }, 60, ModItems.journal_bj); - makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.ADVANCED), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new OreDictStack(TI.shell(), 32), new OreDictStack(STEEL.shell(), 18), new OreDictStack(FIBER.ingot(), 64), },600); - makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new OreDictStack(ANY_RUBBER.ingot(), 32), new OreDictStack(AL.shell(), 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600, ModItems.journal_bj); makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); + + makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] { + new OreDictStack(TI.shell(), 32), + new OreDictStack(RUBBER.ingot(), 64), + new ComparableStack(ModItems.rocket_fuel, 64), + new ComparableStack(ModItems.thruster_small, 12), + new ComparableStack(ModItems.thruster_medium, 12), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), + new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE) + },600); + makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] { + new OreDictStack(AL.shell(), 4), + new OreDictStack(RUBBER.ingot(), 16), + new ComparableStack(ModItems.rocket_fuel, 16), + new ComparableStack(ModItems.thruster_small, 3), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE) + },600, ModItems.journal_bj); + + makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] { + new OreDictStack(RUBBER.ingot(), 12), + new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.thruster_large, 1), + new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.photo_panel, 24), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },500); + makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), + new ComparableStack(ModBlocks.glass_quartz, 8), + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 8), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.magnetron, 8), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal()) + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 12), + new ComparableStack(ModItems.magnetron, 12), + new ComparableStack(ModItems.coil_gold, 16), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()) + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 6), + new OreDictStack(CU.plateCast(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), + new ComparableStack(ModItems.crystal_diamond, 8), + new ComparableStack(ModBlocks.glass_quartz, 8) + },450); + makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] { + new OreDictStack(STEEL.plateCast(), 6), + new OreDictStack(STAR.ingot(), 12), + new OreDictStack(ANY_PLASTIC.ingot(), 48), + new ComparableStack(ModItems.crystal_xen, 1), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) + },1000); + makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] { + new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.plate_desh, 8), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), + new ComparableStack(ModItems.photo_panel, 16), + new ComparableStack(ModItems.thruster_nuclear, 1), + new ComparableStack(ModItems.ingot_uranium_fuel, 6), + new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), + new ComparableStack(ModItems.magnetron, 3), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },1200); + makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] { + new OreDictStack(BIGMT.plate(), 24), + new ComparableStack(ModItems.motor_desh, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModItems.centrifuge_element, 4), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },600); + makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] { + new ComparableStack(ModItems.ingot_meteorite, 4), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },600); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] { new ComparableStack(ModItems.upgrade_speed_3, 1), @@ -511,30 +598,26 @@ public class AssemblerRecipes extends SerializableRecipe { }, 200); 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.casing_50, 5), + new OreDictStack(STEEL.plate(), 4), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), new ComparableStack(ModItems.cordite, 3), new OreDictStack(U238.ingot(), 1) }, 60); 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.casing_50, 5), - new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 3), + new OreDictStack(STEEL.plate(), 4), + new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), new ComparableStack(ModItems.cordite, 3), new OreDictStack(P_WHITE.ingot(), 3) }, 60); 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.casing_50, 5), - new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 5), - new ComparableStack(ModItems.cordite, 5), - new OreDictStack(REDSTONE.dust(), 3) + new OreDictStack(STEEL.plate(), 4), + new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 5), + new ComparableStack(ModItems.cordite, 5) }, 60); makeRecipe(new ComparableStack(ModItems.spawn_worm, 1), new AStack[] { @@ -738,7 +821,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 32), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 12), - new OreDictStack(Fluids.ACID.getDict(1_000), 12), + new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC) }, 100); makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_MINI_NUKE), new AStack[] { @@ -771,7 +854,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 24), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 16), - new OreDictStack(Fluids.ACID.getDict(1_000), 16), + new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), }, 100); @@ -1122,8 +1205,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 16), - !exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp()), - new ComparableStack(ModItems.tank_steel, 3), + !exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), new ComparableStack(ModItems.catalyst_clay, 12), @@ -1133,10 +1215,10 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 12), new OreDictStack(ANY_TAR.any(), 8), + new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.catalyst_clay, 4), - new ComparableStack(ModItems.coil_tungsten, 8), - new ComparableStack(ModItems.tank_steel, 2) + new ComparableStack(ModItems.coil_tungsten, 8) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] { @@ -1146,8 +1228,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.catalyst_clay, 4), - new ComparableStack(ModItems.coil_copper, 4), - new ComparableStack(ModItems.tank_steel, 2) + new ComparableStack(ModItems.coil_copper, 4) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { @@ -1188,26 +1269,21 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.silo_hatch, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)}, 200); makeRecipe(new ComparableStack(ModBlocks.silo_hatch_large, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)}, 200); - if(Loader.isModLoaded("Mekanism")) { + if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) { Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); if(mb != null) { makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] { - new OreDictStack(DURA.ingot(), 16), - new OreDictStack(DESH.ingot(), 16), - new OreDictStack(STEEL.plateWelded(), 32), - new OreDictStack(CU.plateWelded(), 24), - new ComparableStack(ModItems.pipes_steel, 8), + new OreDictStack(BIGMT.plateCast(), 16), + new OreDictStack(CU.plateWelded(), 12), + new OreDictStack("alloyUltimate", 32), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), - new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id), - new ComparableStack(ModBlocks.fusion_conductor, 12), - new ComparableStack(ModBlocks.capacitor_tantalium, 53), - new ComparableStack(ModItems.crystal_redstone, 16), - new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModItems.motor_bismuth, 4) - }, 15 * 60 * 20); + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD), + new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id), + new ComparableStack(ModItems.motor_bismuth, 3) + }, 1200); } } diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 5896e1a7e..a3aaea30c 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.special.ItemByproduct.EnumByproduct; import com.hbm.main.MainRegistry; import com.hbm.util.ItemStackUtil; @@ -509,6 +512,40 @@ public class CentrifugeRecipes extends SerializableRecipe { ItemStackUtil.carefulCopy(by3) }); } + for(BedrockOreType type : BedrockOreType.values()) { + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 2), ItemBedrockOreNew.extract(type.byproductAcid2, 2), ItemBedrockOreNew.extract(type.byproductAcid3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 2), ItemBedrockOreNew.extract(type.byproductSolvent2, 2), ItemBedrockOreNew.extract(type.byproductSolvent3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1, 2), ItemBedrockOreNew.extract(type.byproductRad2, 2), ItemBedrockOreNew.extract(type.byproductRad3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + } + List quartz = OreDictionary.getOres("crystalCertusQuartz"); if(quartz != null && !quartz.isEmpty()) { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5eef05234..ddc9b2e7a 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -64,11 +64,13 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.NITAN, 1000))); recipes.add(new ChemRecipe(40, "PEROXIDE", 50) .inputFluids(new FluidStack(Fluids.WATER, 1000)) - .outputFluids(new FluidStack(Fluids.ACID, 800))); + .outputFluids(new FluidStack(Fluids.PEROXIDE, 800))); recipes.add(new ChemRecipe(90, "SULFURIC_ACID", 50) .inputItems(new OreDictStack(S.dust())) - .inputFluids(new FluidStack(Fluids.ACID, 800)) - .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500))); + .inputFluids( + new FluidStack(Fluids.PEROXIDE, 800), + new FluidStack(Fluids.WATER, 1_000)) + .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 2_000))); recipes.add(new ChemRecipe(92, "NITRIC_ACID", 50) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500)) @@ -142,7 +144,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems( new OreDictStack(U.billet(), 2), //12 nuggets: the numbers do match up :) new OreDictStack(S.dust(), 2)) - .inputFluids(new FluidStack(Fluids.ACID, 500)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 500)) .outputItems(new ItemStack(ModItems.powder_yellowcake))); recipes.add(new ChemRecipe(47, "UF6", 100) .inputItems( @@ -161,7 +163,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems( new OreDictStack(SA326.dust()), new OreDictStack(S.dust(), 2)) - .inputFluids(new FluidStack(Fluids.ACID, 2000)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 2000)) .outputFluids(new FluidStack(Fluids.SAS3, 1000))); recipes.add(new ChemRecipe(53, "CORDITE", 40) .inputItems( @@ -236,7 +238,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems(new ComparableStack(ModItems.pellet_charged)) .inputFluids( new FluidStack(Fluids.SAS3, 8000), - new FluidStack(Fluids.ACID, 6000)) + new FluidStack(Fluids.PEROXIDE, 6000)) .outputFluids(new FluidStack(Fluids.SCHRABIDIC, 16000))); recipes.add(new ChemRecipe(64, "SCHRABIDATE", 150) .inputItems(new OreDictStack(IRON.dust())) @@ -247,7 +249,7 @@ public class ChemplantRecipes extends SerializableRecipe { new OreDictStack(COLTAN.dust(), 2), new OreDictStack(COAL.dust())) .inputFluids( - new FluidStack(Fluids.ACID, 250), + new FluidStack(Fluids.PEROXIDE, 250), new FluidStack(Fluids.HYDROGEN, 500)) .outputItems( new ItemStack(ModItems.powder_coltan), @@ -265,7 +267,7 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(67, "COLTAN_CRYSTAL", 80) .inputFluids( new FluidStack(Fluids.PAIN, 1000), - new FluidStack(Fluids.ACID, 500)) + new FluidStack(Fluids.PEROXIDE, 500)) .outputItems( new ItemStack(ModItems.gem_tantalium), new ItemStack(ModItems.dust, 3)) @@ -328,8 +330,8 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.powder_paleogenite), new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) - .inputFluids(new FluidStack(Fluids.ACID, 1000, 5)) - .outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0))); + .inputFluids(new FluidStack(Fluids.PEROXIDE, 1000, 5)) + .outputFluids(new FluidStack(Fluids.DEATH, 1000, 0))); //one bucket of ethanol equals 275_000 TU using the diesel baseline0 //the coal baseline is 400_000 per piece //if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU @@ -342,7 +344,7 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(Items.dye, 2, 3)) .inputFluids( new FluidStack(Fluids.LUBRICANT, 400), - new FluidStack(Fluids.ACID, 400)) + new FluidStack(Fluids.PEROXIDE, 400)) .outputItems(new ItemStack(ModItems.chocolate, 4))); recipes.add(new ChemRecipe(77, "CO2", 60) .inputFluids(new FluidStack(Fluids.GAS, 1000)) diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 1fe93cf7e..e512e8529 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -24,6 +24,9 @@ import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.util.Tuple.Pair; import net.minecraft.init.Blocks; @@ -63,6 +66,14 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null)); + + for(BedrockOreType type : BedrockOreType.values()) { + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + } } public static Pair getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 903d07e1f..354d26770 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -108,6 +108,10 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3)) .outputs(new MaterialStack(Mats.MAT_CMB, i))); + recipes.add(new CrucibleRecipe(16, "crucible.magtung", 3, new ItemStack(ModItems.ingot_magnetized_tungsten)) + .inputs(new MaterialStack(Mats.MAT_TUNGSTEN, i), new MaterialStack(Mats.MAT_SCHRABIDIUM, n * 1)) + .outputs(new MaterialStack(Mats.MAT_MAGTUNG, i))); + registerMoldsForNEI(); } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 8a14ed96f..2c5867d72 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; @@ -82,8 +85,9 @@ public class CrystallizerRecipes extends SerializableRecipe { 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)); - - registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + + registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); 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); @@ -132,6 +136,59 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_deepcleaned, 1, i), oreTime), organic); registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf); } + + int bedrock = 200; + int washing = 100; + for(BedrockOreType type : BedrockOreType.values()) { + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + FluidStack primary = new FluidStack(Fluids.HYDROGEN, 250); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + + FluidStack secondary = new FluidStack(Fluids.CHLORINE, 250); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000)); + } FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; for(FluidStack dye : dyes) { @@ -226,7 +283,7 @@ public class CrystallizerRecipes extends SerializableRecipe { } public static void registerRecipe(Object input, CrystallizerRecipe recipe) { - registerRecipe(input, recipe, new FluidStack(Fluids.ACID, 500)); + registerRecipe(input, recipe, new FluidStack(Fluids.PEROXIDE, 500)); } public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java index 2e240f391..8932941c2 100644 --- a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java @@ -21,6 +21,9 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.machine.ItemScraps; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.util.ItemStackUtil; import net.minecraft.item.ItemStack; @@ -128,6 +131,33 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe { new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)), new ItemStack(ModItems.powder_copper, 4), new ItemStack(ModItems.powder_lithium_tiny, 3))); + + for(BedrockOreType type : BedrockOreType.values()) { + + MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(7)); + MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(4)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe( + f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + f1 != null ? f1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + f0 == null ? ItemBedrockOreNew.extract(type.primary1, 7) : new ItemStack(ModItems.dust), + f1 == null ? ItemBedrockOreNew.extract(type.primary2, 4) : new ItemStack(ModItems.dust))); + + MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(4)); + MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(7)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe( + s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + s1 != null ? s1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + s0 == null ? ItemBedrockOreNew.extract(type.primary1, 4) : new ItemStack(ModItems.dust), + s1 == null ? ItemBedrockOreNew.extract(type.primary2, 7) : new ItemStack(ModItems.dust))); + + MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)); + MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe( + c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)), + c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)), + c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust), + c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust))); + } } public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 9f66d91c8..2c3486d83 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -55,10 +55,10 @@ public class MixerRecipes extends SerializableRecipe { new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_CRACK, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)), new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_DS, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)), new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_COKER, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); - register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.PEROXIDE, 800)).setSolid(new OreDictStack(S.dust()))); register(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); - register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.PEROXIDE, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); register(Fluids.LUBRICANT, diff --git a/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java index 81ee58e0d..079d3d82c 100644 --- a/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java @@ -47,7 +47,7 @@ public class RadiolysisRecipes { } public static void registerRadiolysis() { - radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.ACID), new FluidStack(20, Fluids.HYDROGEN))); + radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.PEROXIDE), new FluidStack(20, Fluids.HYDROGEN))); //automatically add cracking recipes to the radiolysis recipe list //we want the numbers and types to stay consistent anyway and this will save us a lot of headache later on diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index f9a436189..32260e21b 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -207,6 +207,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModItems.can_empty, new ItemStack(ModItems.powder_aluminium, 2)); ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32)); ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix)); + ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); List logs = OreDictionary.getOres("logWood"); List planks = OreDictionary.getOres("plankWood"); @@ -215,13 +216,6 @@ public class ShredderRecipes extends SerializableRecipe { for(ItemStack log : logs) ShredderRecipes.setRecipe(log, new ItemStack(ModItems.powder_sawdust, 4)); for(ItemStack plank : planks) ShredderRecipes.setRecipe(plank, new ItemStack(ModItems.powder_sawdust, 1)); for(ItemStack sapling : saplings) ShredderRecipes.setRecipe(sapling, new ItemStack(Items.stick, 1)); - - List silicon = OreDictionary.getOres("itemSilicon"); - if(!silicon.isEmpty()) { - ShredderRecipes.setRecipe(Blocks.sand, silicon.get(0).copy()); - } else { - ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); - } for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); @@ -289,7 +283,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); - ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32)); + ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 16)); /* Sellafite scrapping */ ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel)); diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index bd2847d0e..a8a2ee289 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -8,7 +8,9 @@ import java.util.List; import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -29,6 +31,12 @@ public class SolderingRecipes extends SerializableRecipe { @Override public void registerDefaults() { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; + + /* + * CIRCUITS + */ + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 100, 100, new AStack[] { new ComparableStack(ModItems.circuit, 3, EnumCircuitType.VACUUM_TUBE), @@ -51,7 +59,7 @@ public class SolderingRecipes extends SerializableRecipe { recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), 300, 1_000, new FluidStack(Fluids.SULFURIC_ACID, 1_000), new AStack[] { - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 8, EnumCircuitType.PCB), @@ -61,7 +69,7 @@ public class SolderingRecipes extends SerializableRecipe { )); recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal()), 200, 300, - new FluidStack(Fluids.ACID, 250), + new FluidStack(Fluids.PEROXIDE, 250), new AStack[] { new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { @@ -74,14 +82,42 @@ public class SolderingRecipes extends SerializableRecipe { new FluidStack(Fluids.SOLVENT, 1_000), new AStack[] { new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), - new ComparableStack(ModItems.circuit, 24, EnumCircuitType.CAPACITOR)}, + new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 24, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 12, EnumCircuitType.PCB), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)}, + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2)}, new AStack[] { new OreDictStack(PB.wireFine(), 12)} )); + + /* + * COMPUTERS + */ + + // a very, very vague guess on what the recipes should be. testing still needed, upgrade requirements are likely to change. maybe inclusion of caesium? + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000, + new AStack[] { + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.upgrade_speed_1)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 16)} + )); + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000, + new AStack[] { + new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID), + new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.upgrade_speed_3)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 24)} + )); /* * UPGRADES @@ -136,17 +172,19 @@ public class SolderingRecipes extends SerializableRecipe { } public static void addFirstUpgrade(Item lower, Item higher) { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; recipes.add(new SolderingRecipe(new ItemStack(higher), 300, 10_000, - new AStack[] {new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)}, + new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 4 : 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 2 : 4, EnumCircuitType.CAPACITOR)}, new AStack[] {new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)}, new AStack[] {} )); } public static void addSecondUpgrade(Item lower, Item higher) { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; recipes.add(new SolderingRecipe(new ItemStack(higher), 400, 25_000, new FluidStack(Fluids.SOLVENT, 500), - new AStack[] {new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)}, + new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 6 : 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CAPACITOR)}, new AStack[] {new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4)}, new AStack[] {} )); @@ -201,12 +239,45 @@ public class SolderingRecipes extends SerializableRecipe { @Override public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] toppings = this.readAStackArray(obj.get("toppings").getAsJsonArray()); + AStack[] pcb = this.readAStackArray(obj.get("pcb").getAsJsonArray()); + AStack[] solder = this.readAStackArray(obj.get("solder").getAsJsonArray()); + FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null; + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + int duration = obj.get("duration").getAsInt(); + long consumption = obj.get("consumption").getAsLong(); + recipes.add(new SolderingRecipe(output, duration, consumption, fluid, toppings, pcb, solder)); } @Override public void writeRecipe(Object obj, JsonWriter writer) throws IOException { + SolderingRecipe recipe = (SolderingRecipe) obj; + writer.name("toppings").beginArray(); + for(AStack aStack : recipe.toppings) this.writeAStack(aStack, writer); + writer.endArray(); + + writer.name("pcb").beginArray(); + for(AStack aStack : recipe.pcb) this.writeAStack(aStack, writer); + writer.endArray(); + + writer.name("solder").beginArray(); + for(AStack aStack : recipe.solder) this.writeAStack(aStack, writer); + writer.endArray(); + + if(recipe.fluid != null) { + writer.name("fluid"); + this.writeFluidStack(recipe.fluid, writer); + } + + writer.name("output"); + this.writeItemStack(recipe.output, writer); + + writer.name("duration").value(recipe.duration); + writer.name("consumption").value(recipe.consumption); } public static HashSet toppings = new HashSet(); 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 0eaeeb747..a556e80a4 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -148,15 +148,13 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_schrabidium))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BIGMT.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_saturnite))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DURA.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_dura_steel))).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALUMINIUM.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_COPPER.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(W.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_TUNGSTEN.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MINGRADE.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MINGRADE.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(ALLOY.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALLOY.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GOLD.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_GOLD.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_SCHRABIDIUM.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MAGTUNG.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MAGTUNG.id))).setTier(4)); + for(NTMMaterial mat : Mats.orderedList) { + if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(OreNames.INGOT + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); + } + } constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(COAL.dust()), new AnvilOutput(new ItemStack(Items.coal))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(NETHERQUARTZ.dust()), new AnvilOutput(new ItemStack(Items.quartz))).setTier(3)); @@ -441,10 +439,9 @@ public class AnvilRecipes { new AStack[] { new ComparableStack(ModItems.deuterium_filter, 2), new OreDictStack(STEEL.shell(), 5), - new ComparableStack(ModBlocks.concrete_smooth, 8), - new ComparableStack(ModBlocks.concrete_asbestos, 4), - new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.pipe(), 12), + new ComparableStack(ModBlocks.concrete_asbestos, 8), + new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8), }, new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4)); @@ -818,8 +815,11 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.crt_display, 1)), new AnvilOutput(new ItemStack(ModItems.scrap, 3)), new AnvilOutput(new ItemStack(ModItems.wire_fine, 4, Mats.MAT_COPPER.id)), - new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.25F), - new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal())) + new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal())), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.75F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 0.1F) } ).setTier(2)); @@ -879,7 +879,7 @@ public class AnvilRecipes { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 4)), new AnvilOutput(new ItemStack(ModItems.wire_fine, 1, Mats.MAT_COPPER.id)), - new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F), new AnvilOutput(new ItemStack(ModItems.ingot_polymer, 1), 0.25F), } ).setTier(2)); diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index cfc8072df..8e4592d72 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -75,4 +75,8 @@ public class ItemEnums { public static enum EnumPages { PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8 } + + public static enum EnumSecretType { + CANISTER, CONTROLLER + } } diff --git a/src/main/java/com/hbm/items/ItemGenericPart.java b/src/main/java/com/hbm/items/ItemGenericPart.java index 67e129cfd..f77155547 100644 --- a/src/main/java/com/hbm/items/ItemGenericPart.java +++ b/src/main/java/com/hbm/items/ItemGenericPart.java @@ -12,7 +12,8 @@ public class ItemGenericPart extends ItemEnumMulti { public static enum EnumPartType { PISTON_PNEUMATIC("piston_pneumatic"), PISTON_HYDRAULIC("piston_hydraulic"), - PISTON_ELECTRIC("piston_electric"); + PISTON_ELECTRIC("piston_electric"), + LDE("low_density_element"); private String texName; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0d379ae56..f58d01323 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -213,6 +213,8 @@ public class ModItems { public static Item ore_seared; //public static Item ore_radcleaned; public static Item ore_enriched; //final stage + public static Item bedrock_ore_base; + public static Item bedrock_ore; public static Item billet_uranium; public static Item billet_u233; @@ -347,6 +349,7 @@ public class ModItems { public static Item thruster_nuclear; public static Item safety_fuse; public static Item part_generic; + public static Item item_secret; public static Item chemical_dye; public static Item crayon; @@ -675,7 +678,6 @@ public class ModItems { public static Item dysfunctional_reactor; public static Item blade_titanium; public static Item turbine_titanium; - public static Item generator_front; public static Item blade_tungsten; public static Item turbine_tungsten; public static Item pellet_coal; @@ -702,7 +704,6 @@ public class ModItems { public static Item warhead_buster_medium; public static Item warhead_buster_large; public static Item warhead_nuclear; - public static Item warhead_mirvlet; public static Item warhead_mirv; public static Item warhead_volcano; @@ -1086,7 +1087,7 @@ public class ModItems { public static Item waste_u233; public static Item waste_u235; public static Item waste_schrabidium; - public static Item waste_zfb_mox; //TODO: remind me to smite these useless waste items and condense em like the rbmk waste + public static Item waste_zfb_mox; public static Item waste_plate_u233; public static Item waste_plate_u235; @@ -1262,6 +1263,7 @@ public class ModItems { public static Item geiger_counter; public static Item digamma_diagnostic; public static Item pollution_detector; + public static Item ore_density_scanner; public static Item survey_scanner; public static Item mirror_tool; public static Item rbmk_tool; @@ -2590,7 +2592,7 @@ public class ModItems { ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex"); ingot_c4 = new Item().setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4"); ingot_phosphorus = new Item().setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus"); - wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_advanced_alloy"); + wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_advanced_alloy"); coil_advanced_alloy = new Item().setUnlocalizedName("coil_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_alloy"); coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_torus"); ingot_magnetized_tungsten = new Item().setUnlocalizedName("ingot_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_magnetized_tungsten"); @@ -2615,6 +2617,7 @@ public class ModItems { thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic"); + item_secret = new ItemEnumMulti(EnumSecretType.class, true, true).setUnlocalizedName("item_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":item_secret"); chemical_dye = new ItemChemicalDye().setUnlocalizedName("chemical_dye").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chemical_dye"); crayon = new ItemCrayon().setUnlocalizedName("crayon").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crayon"); @@ -2720,6 +2723,8 @@ public class ModItems { ore_seared = new ItemBedrockOre().setUnlocalizedName("ore_seared").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_seared"); //ore_radcleaned = new ItemBedrockOre().setUnlocalizedName("ore_radcleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_radcleaned"); ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched"); + bedrock_ore_base = new ItemBedrockOreBase().setUnlocalizedName("bedrock_ore_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new"); + bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new"); 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"); @@ -2797,8 +2802,8 @@ public class ModItems { nugget_actinium = new Item().setUnlocalizedName("nugget_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_actinium"); plate_titanium = new Item().setUnlocalizedName("plate_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_titanium"); plate_aluminium = new Item().setUnlocalizedName("plate_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_aluminium"); - wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_red_copper"); - wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_tungsten"); + wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_red_copper"); + wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_tungsten"); neutron_reflector = new Item().setUnlocalizedName("neutron_reflector").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":neutron_reflector"); nugget_lead = new Item().setUnlocalizedName("nugget_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_lead"); ingot_bismuth = new ItemCustomLore().setUnlocalizedName("ingot_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth"); @@ -2993,24 +2998,18 @@ public class ModItems { motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh"); motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth"); centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element"); - //centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower"); reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core"); rtg_unit = new Item().setUnlocalizedName("rtg_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rtg_unit"); - //thermo_unit_empty = new Item().setUnlocalizedName("thermo_unit_empty").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_empty"); - //thermo_unit_endo= new Item().setUnlocalizedName("thermo_unit_endo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_endo"); - //thermo_unit_exo = new Item().setUnlocalizedName("thermo_unit_exo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_exo"); levitation_unit = new Item().setUnlocalizedName("levitation_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":levitation_unit"); - wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_aluminium"); - wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_copper"); - wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_gold"); - wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_schrabidium"); + wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_aluminium"); + wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_copper"); + wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_gold"); + wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_schrabidium"); wire_magnetized_tungsten = new Item().setUnlocalizedName("wire_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_magnetized_tungsten"); coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten"); coil_gold = new Item().setUnlocalizedName("coil_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold"); coil_gold_torus = new Item().setUnlocalizedName("coil_gold_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold_torus"); - //magnet_dee = new Item().setUnlocalizedName("magnet_dee").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_dee"); magnet_circular = new Item().setUnlocalizedName("magnet_circular").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_circular"); - //cyclotron_tower = new Item().setUnlocalizedName("cyclotron_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cyclotron_tower"); pellet_coal = new Item().setUnlocalizedName("pellet_coal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellet_coal"); component_limiter = new Item().setUnlocalizedName("component_limiter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_limiter"); component_emitter = new Item().setUnlocalizedName("component_emitter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_emitter"); @@ -3036,7 +3035,6 @@ public class ModItems { dysfunctional_reactor = new Item().setUnlocalizedName("dysfunctional_reactor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":dysfunctional_reactor"); blade_titanium = new Item().setUnlocalizedName("blade_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_titanium"); turbine_titanium = new Item().setUnlocalizedName("turbine_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_titanium"); - generator_front = new Item().setUnlocalizedName("generator_front").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":generator_front"); blade_tungsten = new Item().setUnlocalizedName("blade_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_tungsten"); turbine_tungsten = new Item().setUnlocalizedName("turbine_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_tungsten"); @@ -3057,7 +3055,6 @@ public class ModItems { warhead_buster_medium = new Item().setUnlocalizedName("warhead_buster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_medium"); warhead_buster_large = new Item().setUnlocalizedName("warhead_buster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_large"); warhead_nuclear = new Item().setUnlocalizedName("warhead_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_nuclear"); - warhead_mirvlet = new Item().setUnlocalizedName("warhead_mirvlet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":warhead_mirvlet"); warhead_mirv = new Item().setUnlocalizedName("warhead_mirv").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_mirv"); warhead_volcano = new Item().setUnlocalizedName("warhead_volcano").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_volcano"); @@ -3094,28 +3091,28 @@ public class ModItems { entanglement_kit = new ItemCustomLore().setUnlocalizedName("entanglement_kit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":entanglement_kit"); circuit = new ItemCircuit().setUnlocalizedName("circuit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit"); - circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_raw"); - circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_aluminium"); - circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_copper"); - circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_red_copper"); - circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_gold"); - circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_schrabidium"); - circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw"); - circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth"); - circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw"); - circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic"); - circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw"); - circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium"); + circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_raw"); + circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_aluminium"); + circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_copper"); + circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_red_copper"); + circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_gold"); + circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_schrabidium"); + circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw"); + circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth"); + circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw"); + circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic"); + circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw"); + circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium"); crt_display = new Item().setUnlocalizedName("crt_display").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crt_display"); circuit_star_piece = (ItemEnumMulti) new ItemEnumMulti(ScrapType.class, true, true).setUnlocalizedName("circuit_star_piece").setCreativeTab(null); circuit_star_component = (ItemEnumMulti) new ItemCircuitStarComponent().setUnlocalizedName("circuit_star_component").setCreativeTab(null); circuit_star = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_star").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_star"); - circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1"); - circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2"); - circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3"); - circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4"); - circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5"); - circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6"); + circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1"); + circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2"); + circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3"); + circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4"); + circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5"); + circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6"); mechanism_revolver_1 = new Item().setUnlocalizedName("mechanism_revolver_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_1"); mechanism_revolver_2 = new Item().setUnlocalizedName("mechanism_revolver_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_3"); mechanism_rifle_1 = new Item().setUnlocalizedName("mechanism_rifle_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_2"); @@ -3282,7 +3279,12 @@ public class ModItems { plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); - wire_fine = new ItemAutogen(MaterialShapes.WIRE).setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); + wire_fine = new ItemAutogen(MaterialShapes.WIRE) + .aot(Mats.MAT_ALUMINIUM, "wire_aluminium").aot(Mats.MAT_COPPER, "wire_copper") + .aot(Mats.MAT_MINGRADE, "wire_red_copper").aot(Mats.MAT_GOLD, "wire_gold") + .aot(Mats.MAT_TUNGSTEN, "wire_tungsten").aot(Mats.MAT_ALLOY, "wire_advanced_alloy") + .aot(Mats.MAT_CARBON, "wire_carbon").aot(Mats.MAT_SCHRABIDIUM, "wire_schrabidium") + .aot(Mats.MAT_MAGTUNG, "wire_magnetized_tungsten").setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); @@ -4603,6 +4605,7 @@ public class ModItems { geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter"); digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic"); pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector"); + ore_density_scanner = new ItemOreDensityScanner().setUnlocalizedName("ore_density_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ore_density_scanner"); survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner"); mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); @@ -5940,9 +5943,10 @@ public class ModItems { GameRegistry.registerItem(ore_nitrocrystalline, ore_nitrocrystalline.getUnlocalizedName()); GameRegistry.registerItem(ore_deepcleaned, ore_deepcleaned.getUnlocalizedName()); GameRegistry.registerItem(ore_seared, ore_seared.getUnlocalizedName()); - //GameRegistry.registerItem(ore_radcleaned, ore_radcleaned.getUnlocalizedName()); GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName()); GameRegistry.registerItem(ore_byproduct, ore_byproduct.getUnlocalizedName()); + GameRegistry.registerItem(bedrock_ore_base, bedrock_ore_base.getUnlocalizedName()); + GameRegistry.registerItem(bedrock_ore, bedrock_ore.getUnlocalizedName()); //Crystals GameRegistry.registerItem(crystal_coal, crystal_coal.getUnlocalizedName()); @@ -6154,6 +6158,7 @@ public class ModItems { GameRegistry.registerItem(chemical_dye, chemical_dye.getUnlocalizedName()); GameRegistry.registerItem(crayon, crayon.getUnlocalizedName()); GameRegistry.registerItem(part_generic, part_generic.getUnlocalizedName()); + GameRegistry.registerItem(item_secret, item_secret.getUnlocalizedName()); GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName()); GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName()); GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName()); @@ -6183,7 +6188,6 @@ public class ModItems { GameRegistry.registerItem(turbine_titanium, turbine_titanium.getUnlocalizedName()); GameRegistry.registerItem(turbine_tungsten, turbine_tungsten.getUnlocalizedName()); GameRegistry.registerItem(flywheel_beryllium, flywheel_beryllium.getUnlocalizedName()); - GameRegistry.registerItem(generator_front, generator_front.getUnlocalizedName()); GameRegistry.registerItem(toothpicks, toothpicks.getUnlocalizedName()); GameRegistry.registerItem(ducttape, ducttape.getUnlocalizedName()); GameRegistry.registerItem(catalyst_clay, catalyst_clay.getUnlocalizedName()); @@ -6201,7 +6205,6 @@ public class ModItems { GameRegistry.registerItem(warhead_buster_medium, warhead_buster_medium.getUnlocalizedName()); GameRegistry.registerItem(warhead_buster_large, warhead_buster_large.getUnlocalizedName()); GameRegistry.registerItem(warhead_nuclear, warhead_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(warhead_mirvlet, warhead_mirvlet.getUnlocalizedName()); GameRegistry.registerItem(warhead_mirv, warhead_mirv.getUnlocalizedName()); GameRegistry.registerItem(warhead_volcano, warhead_volcano.getUnlocalizedName()); GameRegistry.registerItem(fuel_tank_small, fuel_tank_small.getUnlocalizedName()); @@ -6846,6 +6849,7 @@ public class ModItems { GameRegistry.registerItem(linker, linker.getUnlocalizedName()); GameRegistry.registerItem(reactor_sensor, reactor_sensor.getUnlocalizedName()); GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName()); + GameRegistry.registerItem(ore_density_scanner, ore_density_scanner.getUnlocalizedName()); GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName()); GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index e04959cff..d4976b1ab 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -6,6 +6,7 @@ import com.hbm.blocks.BlockMulti; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.generic.BlockMetalFence; import com.hbm.tileentity.IPersistentNBT; import cpw.mods.fml.relauncher.Side; @@ -42,6 +43,8 @@ public class ItemBlockBase extends ItemBlock { if(field_150939_a instanceof BlockMulti) { return ((BlockMulti)field_150939_a).getUnlocalizedName(stack); + } else if(field_150939_a instanceof BlockMetalFence) { + return ((BlockMetalFence)field_150939_a).getUnlocalizedName(stack); // I considered reworking IBlockMulti instead but there are like a bajillion implementers } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/items/machine/ItemArcElectrode.java b/src/main/java/com/hbm/items/machine/ItemArcElectrode.java index 5df1e4729..70aa58ac6 100644 --- a/src/main/java/com/hbm/items/machine/ItemArcElectrode.java +++ b/src/main/java/com/hbm/items/machine/ItemArcElectrode.java @@ -47,9 +47,9 @@ public class ItemArcElectrode extends ItemEnumMulti { public static enum EnumElectrodeType { GRAPHITE( 10), - LANTHANIUM( 50), - DESH( 250), - SATURNITE( 500); + LANTHANIUM( 100), + DESH( 500), + SATURNITE( 1500); public int durability; diff --git a/src/main/java/com/hbm/items/machine/ItemCircuit.java b/src/main/java/com/hbm/items/machine/ItemCircuit.java index 368af5647..845ff4b81 100644 --- a/src/main/java/com/hbm/items/machine/ItemCircuit.java +++ b/src/main/java/com/hbm/items/machine/ItemCircuit.java @@ -4,7 +4,11 @@ import java.util.List; import com.hbm.items.ItemEnumMulti; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class ItemCircuit extends ItemEnumMulti { @@ -13,6 +17,26 @@ public class ItemCircuit extends ItemEnumMulti { super(EnumCircuitType.class, true, true); } + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + list.add(new ItemStack(item, 1, EnumCircuitType.VACUUM_TUBE.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_TANTALIUM.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.PCB.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.SILICON.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CHIP.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_BISMOID.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.ANALOG.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.BASIC.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.ADVANCED.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.BISMOID.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_CHASSIS.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal())); + } + public static enum EnumCircuitType { VACUUM_TUBE, CAPACITOR, @@ -26,6 +50,9 @@ public class ItemCircuit extends ItemEnumMulti { ADVANCED, CAPACITOR_BOARD, BISMOID, + CONTROLLER_CHASSIS, + CONTROLLER, + CONTROLLER_ADVANCED, } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 75c56fee4..81b8fb0b8 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -45,7 +45,7 @@ public class ItemMold extends Item { registerMold(new MoldShape( 1, S, "billet", MaterialShapes.BILLET)); registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT)); registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE)); - registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE)); + registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE, 8)); registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE)); registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE)); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java new file mode 100644 index 000000000..a20220d8e --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java @@ -0,0 +1,57 @@ +package com.hbm.items.special; + +import java.util.List; +import java.util.Random; + +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.items.tool.ItemOreDensityScanner; + +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.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; +import net.minecraft.world.gen.NoiseGeneratorPerlin; + +public class ItemBedrockOreBase extends Item { + + public static double getOreAmount(ItemStack stack, BedrockOreType type) { + if(!stack.hasTagCompound()) return 0; + NBTTagCompound data = stack.getTagCompound(); + return data.getDouble(type.suffix); + } + + public static void setOreAmount(ItemStack stack, int x, int z) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + NBTTagCompound data = stack.getTagCompound(); + + for(BedrockOreType type : BedrockOreType.values()) { + data.setDouble(type.suffix, getOreLevel(x, z, type)); + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + for(BedrockOreType type : BedrockOreType.values()) { + double amount = this.getOreAmount(stack, type); + String typeName = StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name"); + list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.translateDensity(amount) + EnumChatFormatting.RESET + ")"); + } + } + + private static NoiseGeneratorPerlin[] ores = new NoiseGeneratorPerlin[BedrockOreType.values().length]; + private static NoiseGeneratorPerlin level; + + public static double getOreLevel(int x, int z, BedrockOreType type) { + + if(level == null) level = new NoiseGeneratorPerlin(new Random(2114043), 4); + if(ores[type.ordinal()] == null) ores[type.ordinal()] = new NoiseGeneratorPerlin(new Random(2082127 + type.ordinal()), 4); + + double scale = 0.01D; + + return MathHelper.clamp_double(Math.abs(level.func_151601_a(x * scale, z * scale) * ores[type.ordinal()].func_151601_a(x * scale, z * scale)) * 0.05, 0, 2); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java new file mode 100644 index 000000000..ec26b1d4e --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -0,0 +1,261 @@ +package com.hbm.items.special; + +import static com.hbm.inventory.OreDictManager.*; +import static com.hbm.items.special.ItemBedrockOreNew.ProcessingTrait.*; + +import java.util.List; +import java.util.Locale; + +import com.hbm.items.ModItems; +import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; +import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; +import com.hbm.items.ItemEnums.EnumChunkType; +import com.hbm.lib.RefStrings; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraftforge.oredict.OreDictionary; + +public class ItemBedrockOreNew extends Item { + + public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length]; + public IIcon[] overlays = new IIcon[ProcessingTrait.values().length]; + + public ItemBedrockOreNew() { + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + + + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i]; + for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j]; + String placeholderName = RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix + "-" + (i * BedrockOreType.values().length + j); + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, type.light, type.dark)); + map.setTextureEntry(placeholderName, mutableIcon); + this.icons[i * BedrockOreType.values().length + j] = mutableIcon; + } + } + } + + for(int i = 0; i < overlays.length; i++) { + ProcessingTrait trait = ProcessingTrait.values()[i]; + overlays[i] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_overlay." + trait.name().toLowerCase(Locale.US)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + + for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j]; + for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i]; + list.add(this.make(grade, type)); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { + return true; + } + + @Override + public int getRenderPasses(int metadata) { + return 1 + this.getGrade(metadata).traits.length; + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + if(pass == 0) return this.getIconFromDamage(meta); + return this.overlays[this.getGrade(meta).traits[pass - 1].ordinal()]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + int icon = this.getGrade(meta).ordinal() * BedrockOreType.values().length + this.getType(meta).ordinal(); + return icons[Math.abs(icon % icons.length)]; + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + int meta = stack.getItemDamage(); + String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name"); + return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + for(ProcessingTrait trait : this.getGrade(stack.getItemDamage()).traits) { + list.add(I18nUtil.resolveKey(this.getUnlocalizedNameInefficiently(stack) + ".trait." + trait.name().toLowerCase(Locale.US))); + } + } + + public static enum BedrockOreType { + // primary sulfuric solvent radsolvent + LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), + HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), + RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, EnumChunkType.RARE, B, LA, NB, ND, B, ZR, CO, ND, ZR), + ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), + NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), + CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); + //sediment + + public int light; + public int dark; + public String suffix; + public Object primary1, primary2; + public Object byproductAcid1, byproductAcid2, byproductAcid3; + public Object byproductSolvent1, byproductSolvent2, byproductSolvent3; + public Object byproductRad1, byproductRad2, byproductRad3; + + private BedrockOreType(int light, int dark, String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) { + this.light = light; + this.dark = dark; + this.suffix = suffix; + this.primary1 = p1; this.primary2 = p2; + this.byproductAcid1 = bA1; this.byproductAcid2 = bA2; this.byproductAcid3 = bA3; + this.byproductSolvent1 = bS1; this.byproductSolvent2 = bS2; this.byproductSolvent3 = bS3; + this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3; + } + } + + public static MaterialStack toFluid(Object o, int amount) { + if(o instanceof DictFrame) { + NTMMaterial mat = Mats.matByName.get(((DictFrame) o).mats[0]); + if(mat != null && mat.smeltable == SmeltingBehavior.SMELTABLE) { + return new MaterialStack(mat, amount); + } + } + return null; + } + + public static ItemStack extract(Object o) { + return extract(o, 1); + } + + public static ItemStack extract(Object o, int amount) { + if(o instanceof EnumChunkType) return new ItemStack(ModItems.chunk_ore, amount, ((EnumChunkType) o).ordinal()); + if(o instanceof DictFrame) { + DictFrame frame = (DictFrame) o; + List gems = OreDictionary.getOres(frame.gem(), false); if(!gems.isEmpty()) return fromList(gems, amount); + List dusts = OreDictionary.getOres(frame.dust(), false); if(!dusts.isEmpty()) return fromList(dusts, amount); + List crystals = OreDictionary.getOres(frame.crystal(), false); if(!crystals.isEmpty()) return fromList(crystals, amount); + List billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount); + List ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount); + } + return new ItemStack(ModItems.nothing); + } + + private static ItemStack fromList(List list, int amount) { + ItemStack first = list.get(0).copy(); + first.stackSize = amount; + return first; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + if(pass != 0) return 0xFFFFFF; + BedrockOreGrade grade = this.getGrade(stack.getItemDamage()); + return grade.tint; + } + + public static final int none = 0xFFFFFF; + public static final int roasted = 0xCFCFCF; + public static final int arc = 0xC3A2A2; + public static final int washed = 0xDBE2CB; + + public static enum ProcessingTrait { + ROASTED, + ARC, + WASHED, + CENTRIFUGED, + SULFURIC, + SOLVENT, + RAD + } + + public static enum BedrockOreGrade { + BASE(none, "base"), //from the slopper + BASE_ROASTED(roasted, "base", ROASTED), //optional combination oven step, yields vitriol + BASE_WASHED(washed, "base", WASHED), //primitive-ass acidizer with water + PRIMARY(none, "primary", CENTRIFUGED), //centrifuging for more primary + PRIMARY_ROASTED(roasted, "primary", ROASTED), //optional comboven + PRIMARY_SULFURIC(0xFFFFD3, "primary", SULFURIC), //sulfuric acid + PRIMARY_NOSULFURIC(0xD3D4FF, "primary", CENTRIFUGED, SULFURIC), //from centrifuging, sulfuric byproduct removed + PRIMARY_SOLVENT(0xD3F0FF, "primary", SOLVENT), //solvent + PRIMARY_NOSOLVENT(0xFFDED3, "primary", CENTRIFUGED, SOLVENT), //solvent byproduct removed + PRIMARY_RAD(0xECFFD3, "primary", RAD), //radsolvent + PRIMARY_NORAD(0xEBD3FF, "primary", CENTRIFUGED, RAD), //radsolvent byproduct removed + PRIMARY_FIRST(0xFFD3D4, "primary", CENTRIFUGED), //higher first material yield + PRIMARY_SECOND(0xD3FFEB, "primary", CENTRIFUGED), //higher second material yield + CRUMBS(none, "crumbs", CENTRIFUGED), //endpoint for primary, recycling + + SULFURIC_BYPRODUCT(none, "sulfuric", CENTRIFUGED, SULFURIC), //from centrifuging + SULFURIC_ROASTED(roasted, "sulfuric", ROASTED, SULFURIC), //comboven again + SULFURIC_ARC(arc, "sulfuric", ARC, SULFURIC), //alternate step + SULFURIC_WASHED(washed, "sulfuric", WASHED, SULFURIC), //sulfuric endpoint + + SOLVENT_BYPRODUCT(none, "solvent", CENTRIFUGED, SOLVENT), //from centrifuging + SOLVENT_ROASTED(roasted, "solvent", ROASTED, SOLVENT), //comboven again + SOLVENT_ARC(arc, "solvent", ARC, SOLVENT), //alternate step + SOLVENT_WASHED(washed, "solvent", WASHED, SOLVENT), //solvent endpoint + + RAD_BYPRODUCT(none, "rad", CENTRIFUGED, RAD), //from centrifuging + RAD_ROASTED(roasted, "rad", ROASTED, RAD), //comboven again + RAD_ARC(arc, "rad", ARC, RAD), //alternate step + RAD_WASHED(washed, "rad", WASHED, RAD); //rad endpoint + + public int tint; + public String prefix; + public ProcessingTrait[] traits; + + private BedrockOreGrade(int tint, String prefix, ProcessingTrait... traits) { + this.tint = tint; + this.prefix = prefix; + this.traits = traits; + } + } + + public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) { + return make(grade, type, 1); + } + + public static ItemStack make(BedrockOreGrade grade, BedrockOreType type, int amount) { + return new ItemStack(ModItems.bedrock_ore, amount, grade.ordinal() << 4 | type.ordinal()); + } + + public BedrockOreGrade getGrade(int meta) { + return EnumUtil.grabEnumSafely(BedrockOreGrade.class, meta >> 4); + } + + public BedrockOreType getType(int meta) { + return EnumUtil.grabEnumSafely(BedrockOreType.class, meta & 15); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemOreBlock.java b/src/main/java/com/hbm/items/special/ItemOreBlock.java index 9b0596fa4..b58585514 100644 --- a/src/main/java/com/hbm/items/special/ItemOreBlock.java +++ b/src/main/java/com/hbm/items/special/ItemOreBlock.java @@ -30,36 +30,6 @@ public class ItemOreBlock extends ItemBlock { list.add("Deposit location: X:-400; Z:-400"); list.add("Estimated quantity: 490"); } - - if(this.field_150939_a == ModBlocks.ore_weidanium) { - list.add("Weidanium ore"); - list.add("Deposit location: X:0; Z:300"); - list.add("Estimated quantity: 2800"); - } - - if(this.field_150939_a == ModBlocks.ore_reiium) { - list.add("Reiium ore"); - list.add("Deposit location: X:0; Z:0"); - list.add("Estimated quantity: 2800"); - } - - if(this.field_150939_a == ModBlocks.ore_unobtainium) { - list.add("Unobtainium ore"); - list.add("Deposit location: X:200; Z:200"); - list.add("Estimated quantity: 12480"); - } - - if(this.field_150939_a == ModBlocks.ore_daffergon) { - list.add("Daffergon ore"); - list.add("Deposit location: X:400; Z:-200"); - list.add("Estimated quantity: 14980"); - } - - if(this.field_150939_a == ModBlocks.ore_verticium) { - list.add("Verticium ore"); - list.add("Deposit location: X:-300; Z:200"); - list.add("Estimated quantity: 4680"); - } } } diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index a3aafa9df..e690582c0 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -69,7 +69,17 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - return stack.stackTagCompound.getInteger(type.getName()); + //just in case + String name = Fluids.toNameCompat(type); + if(stack.stackTagCompound.hasKey(name)) { + int fill = stack.stackTagCompound.getInteger(name); + stack.stackTagCompound.removeTag(name); + stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill); + + return fill; + } + + return stack.stackTagCompound.getInteger(Integer.toString(type.getID())); } public int getMaxFill(FluidType type) { @@ -85,7 +95,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - stack.stackTagCompound.setInteger(type.getName(), fill); + stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill); } public void initNBT(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java new file mode 100644 index 000000000..ffe5b17f0 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java @@ -0,0 +1,42 @@ +package com.hbm.items.tool; + +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +public class ItemOreDensityScanner extends Item { + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + + if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 5 != 0) return; + + EntityPlayerMP player = (EntityPlayerMP) entity; + + for(BedrockOreType type : BedrockOreType.values()) { + double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket( + StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (level * 100) / 100D) + " (" + translateDensity(level) + EnumChatFormatting.RESET + ")", + 777 + type.ordinal(), 4000), player); + } + } + + public static String translateDensity(double density) { + if(density <= 0.1) return EnumChatFormatting.DARK_RED + "Very poor"; + if(density <= 0.35) return EnumChatFormatting.RED + "Poor"; + if(density <= 0.75) return EnumChatFormatting.GOLD + "Low"; + if(density >= 1.9) return EnumChatFormatting.AQUA + "Excellent"; + if(density >= 1.65) return EnumChatFormatting.BLUE + "Very high"; + if(density >= 1.25) return EnumChatFormatting.GREEN + "High"; + return EnumChatFormatting.YELLOW + "Moderate"; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemPipette.java b/src/main/java/com/hbm/items/tool/ItemPipette.java index 7f9d37a8a..2ac303116 100644 --- a/src/main/java/com/hbm/items/tool/ItemPipette.java +++ b/src/main/java/com/hbm/items/tool/ItemPipette.java @@ -143,7 +143,7 @@ public class ItemPipette extends Item implements IFillableItem { public boolean willFizzle(FluidType type) { if (this != ModItems.pipette) return false; - return type.isCorrosive() && type != Fluids.ACID; + return type.isCorrosive() && type != Fluids.PEROXIDE; } @Override diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 2bdcf4112..1a5c1bf6d 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 (4977)"; + public static final String VERSION = "1.0.27 BETA (5000)"; //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 4718a6332..ee1339949 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -302,6 +302,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDiesel.class, new RenderDieselGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExcavator.class, new RenderExcavator()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOreSlopper.class, new RenderOreSlopper()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMixer.class, new RenderMixer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHephaestus.class, new RenderHephaestus()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); @@ -734,8 +735,6 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityCarrier.class, new RenderCarrierMissile()); - RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 90194bca4..a349a3ac8 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -114,6 +114,8 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), new Object[] { "G", "W", "I", 'G', KEY_ANYPANE, 'W', CARBON.wireFine(), 'I', ModItems.plate_polymer }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', NB.nugget(), 'W', AL.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', NB.nugget(), 'W', CU.wireFine() }); + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR, 2), new Object[] { "IAI", "W W", 'I', ModItems.plate_polymer, 'A', AL.dust(), 'W', AL.wireFine() }); + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR, 2), new Object[] { "IAI", "W W", 'I', ModItems.plate_polymer, 'A', AL.dust(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR_TANTALIUM), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', TA.nugget(), 'W', AL.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR_TANTALIUM), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', TA.nugget(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB), new Object[] { "I", "P", 'I', ModItems.plate_polymer, 'P', CU.plate() }); @@ -122,7 +124,10 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), new Object[] { "I", "S", "W", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', GOLD.wireFine() }); - + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); + + addRecipeAuto(new ItemStack(ModItems.crt_display, 4), new Object[] { " A ", "SGS", " T ", 'A', AL.dust(), 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'T', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + addRecipeAuto(new ItemStack(ModItems.cell_empty, 6), new Object[] { " S ", "G G", " S ", 'S', STEEL.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.cell_deuterium, 8), new Object[] { "DDD", "DTD", "DDD", 'D', ModItems.cell_empty, 'T', ModItems.mike_deut }); addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', STEEL.plate(), 'T', W.ingot(), 'G', KEY_ANYPANE }); @@ -249,7 +254,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() }); addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated }); - addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', SI.nugget(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', MINGRADE.wireFine(), 'T', ModItems.coil_tungsten }); addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', MINGRADE.wireFine() }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); @@ -283,7 +288,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', ModItems.motor, 'W', Blocks.crafting_table }); + addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); @@ -303,7 +308,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); - addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "ICI", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -410,6 +416,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PURPLE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PURPLE, '2', KEY_PURPLE }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PINK.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PINK, '2', KEY_RED }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.HAZARD.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_BLACK }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.SAND.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_GRAY }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.BRONZE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_ORANGE, '2', KEY_BROWN }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile }); @@ -442,7 +450,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', STEEL.wireFine(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_poison, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', ModItems.powder_poison }); - addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_acid, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()) }); + addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_acid, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()) }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_wither, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(Items.skull, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_ultradeath, 4), new Object[] { "BCB", "CIC", "BCB", 'B', ModBlocks.barbed_wire, 'C', ModItems.powder_yellowcake, 'I', ModItems.nuclear_waste }); @@ -520,7 +528,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.flame_war), 1), new Object[] { "WHW", "CTP", "WOW", 'W', Item.getItemFromBlock(Blocks.planks), 'T', Item.getItemFromBlock(Blocks.tnt), 'H', ModItems.flame_pony, 'C', ModItems.flame_conspiracy, 'P', ModItems.flame_politics, 'O', ModItems.flame_opinion }); addRecipeAuto(new ItemStack(ModBlocks.det_cord, 4), new Object[] { " P ", "PGP", " P ", 'P', Items.paper, 'G', Items.gunpowder }); addRecipeAuto(new ItemStack(ModBlocks.det_charge, 1), new Object[] { "PDP", "DTD", "PDP", 'P', STEEL.plate(), 'D', ModBlocks.det_cord, 'T', ANY_PLASTICEXPLOSIVE.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.det_nuke, 1), new Object[] { "PDP", "DCD", "PDP", 'P', ModItems.plate_desh, 'D', ModBlocks.det_charge, 'C', ModItems.man_core }); + addRecipeAuto(new ItemStack(ModBlocks.det_nuke, 1), new Object[] { "PFP", "DCD", "PFP", 'P', DESH.plateCast(), 'D', ModBlocks.det_charge, 'C', ModItems.man_core, 'F', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER) }); addRecipeAuto(new ItemStack(ModBlocks.det_miner, 4), new Object[] { "FFF", "ITI", "ITI", 'F', Items.flint, 'I', IRON.plate(), 'T', ModItems.ball_dynamite }); addRecipeAuto(new ItemStack(ModBlocks.det_miner, 12), new Object[] { "FFF", "ITI", "ITI", 'F', Items.flint, 'I', STEEL.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.emp_bomb, 1), new Object[] { "LML", "LCL", "LML", 'L', PB.plate(), 'M', ModItems.magnetron, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); @@ -648,11 +656,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip }); addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() }); - addRecipeAuto(new ItemStack(ModItems.sat_mapper), new Object[] { "H", "B", 'H', ModItems.sat_head_mapper, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_scanner), new Object[] { "H", "B", 'H', ModItems.sat_head_scanner, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_radar), new Object[] { "H", "B", 'H', ModItems.sat_head_radar, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_laser), new Object[] { "H", "B", 'H', ModItems.sat_head_laser, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_resonator), new Object[] { "H", "B", 'H', ModItems.sat_head_resonator, 'B', ModItems.sat_base }); addShapelessAuto(new ItemStack(ModItems.sat_mapper), new Object[] { ModBlocks.sat_mapper }); addShapelessAuto(new ItemStack(ModItems.sat_scanner), new Object[] { ModBlocks.sat_scanner }); addShapelessAuto(new ItemStack(ModItems.sat_radar), new Object[] { ModBlocks.sat_radar }); @@ -660,12 +663,6 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.sat_resonator), new Object[] { ModBlocks.sat_resonator }); addShapelessAuto(new ItemStack(ModItems.sat_foeq), new Object[] { ModBlocks.sat_foeq }); addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger }); - addShapelessAuto(new ItemStack(ModBlocks.sat_mapper), new Object[] { ModItems.sat_mapper }); - addShapelessAuto(new ItemStack(ModBlocks.sat_scanner), new Object[] { ModItems.sat_scanner }); - addShapelessAuto(new ItemStack(ModBlocks.sat_radar), new Object[] { ModItems.sat_radar }); - addShapelessAuto(new ItemStack(ModBlocks.sat_laser), new Object[] { ModItems.sat_laser }); - addShapelessAuto(new ItemStack(ModBlocks.sat_resonator), new Object[] { ModItems.sat_resonator }); - addShapelessAuto(new ItemStack(ModBlocks.sat_foeq), new Object[] { ModItems.sat_foeq }); addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_advanced_alloy, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) }); @@ -740,6 +737,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.obj_tester, 1), new Object[] { "P", "I", "S", 'P', ModItems.polaroid, 'I', ModItems.flame_pony, 'S', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.fence_metal, 6), new Object[] { "BIB", "BIB", 'B', Blocks.iron_bars, 'I', Items.iron_ingot }); + addShapelessAuto(new ItemStack(ModBlocks.fence_metal, 1, 1), new Object[] { new ItemStack(ModBlocks.fence_metal, 1, 0) }); + addShapelessAuto(new ItemStack(ModBlocks.fence_metal, 1, 0), new Object[] { new ItemStack(ModBlocks.fence_metal, 1, 1) }); addShapelessAuto(new ItemStack(ModBlocks.waste_trinitite), new Object[] { new ItemStack(Blocks.sand, 1, 0), ModItems.trinitite }); addShapelessAuto(new ItemStack(ModBlocks.waste_trinitite_red), new Object[] { new ItemStack(Blocks.sand, 1, 1), ModItems.trinitite }); @@ -796,7 +795,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_smelter, 1), new Object[] { "PHP", "CUC", "DTD", 'P', CU.plate(), 'H', Blocks.hopper, 'C', ModItems.coil_tungsten, 'U', ModItems.upgrade_template, 'D', ModItems.coil_copper, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_shredder, 1), new Object[] { "PHP", "CUC", "DTD", 'P', ModItems.motor, 'H', Blocks.hopper, 'C', ModItems.blades_advanced_alloy, 'U', ModItems.upgrade_smelter, 'D', TI.plate(), 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer }); - addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.ACID.getID()), 'H', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); + addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.PEROXIDE.getID()), 'H', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"GNG", "RUR", "GMG", 'R', RUBBER.ingot(), 'M', ModItems.motor, 'G', ModItems.coil_gold, 'N', NB.ingot(), 'U', ModItems.upgrade_template}); @@ -999,7 +998,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint_request, 4), new Object[] { "G", "T", "C", 'G', KEY_BLUE, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); - addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); @@ -1175,21 +1173,32 @@ public class CraftingManager { public static void crumple() { - if(Loader.isModLoaded("Mekanism")) { + List targets = new ArrayList(); + + if(GeneralConfig.enableMekanismChanges) { + + if(Loader.isModLoaded("Mekanism")) { + Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + targets.add(new ItemStack(mb, 1, 4)); // digiminer + targets.add(new ItemStack(disassembler)); // atomic disassembler + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block mb = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + targets.add(new ItemStack(mb, 1, 6)); // wind turbine + } List toDestroy = new ArrayList(); - Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); - ItemStack digiminer = new ItemStack(mb, 1, 4); - for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) { if(o instanceof IRecipe) { IRecipe rec = (IRecipe)o; ItemStack stack = rec.getRecipeOutput(); - if(stack != null && stack.getItem() == digiminer.getItem() && stack.getItemDamage() == digiminer.getItemDamage()) { - toDestroy.add(rec); + for(ItemStack target : targets) { + if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); } } } @@ -1197,6 +1206,18 @@ public class CraftingManager { if(toDestroy.size() > 0) { net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy); } + + if(Loader.isModLoaded("Mekanism")) { + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + + if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + + if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + } } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index de8468791..b5d663e6e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1330,6 +1330,15 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.machine_generator"); ignoreMappings.add("hbm:item.v1"); ignoreMappings.add("hbm:item.arc_electrode_desh"); + ignoreMappings.add("hbm:tile.sand_gold"); + ignoreMappings.add("hbm:tile.sand_gold198"); + ignoreMappings.add("hbm:tile.ore_weidanium"); + ignoreMappings.add("hbm:tile.ore_reiium"); + ignoreMappings.add("hbm:tile.ore_unobtainium"); + ignoreMappings.add("hbm:tile.ore_daffergon"); + ignoreMappings.add("hbm:tile.ore_verticium"); + ignoreMappings.add("hbm:item.warhead_mirvlet"); + ignoreMappings.add("hbm:item.generator_front"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 72e7d7739..f3a2293ad 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -7,10 +7,12 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; +import java.util.UUID; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; +import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.blocks.IStepTickReceiver; import com.hbm.blocks.ModBlocks; @@ -49,6 +51,8 @@ import com.hbm.items.armor.ItemArmorMod; import com.hbm.items.armor.ItemModRevive; import com.hbm.items.armor.ItemModShackles; import com.hbm.items.food.ItemConserve.EnumFoodType; +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.HbmCollection; @@ -87,6 +91,8 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityCaveSpider; import net.minecraft.entity.monster.EntityCreeper; @@ -117,6 +123,7 @@ import net.minecraft.util.EntityDamageSource; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.FoodStats; import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; @@ -848,6 +855,8 @@ public class ModEventHandler { ((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleFall((EntityPlayer)e); } + private static final UUID fopSpeed = UUID.fromString("e5a8c95d-c7a0-4ecf-8126-76fb8c949389"); + @SubscribeEvent public void onWingFlop(TickEvent.PlayerTickEvent event) { @@ -878,9 +887,8 @@ public class ModEventHandler { player.fallDistance = 0; } } else if(props.enableBackpack && !player.isSneaking()) { - - if(player.motionY < -0.2) - player.motionY += 0.075D; + if(player.motionY < -0.2) player.motionY += 0.075D; + if(player.fallDistance > 0) player.fallDistance = 0; } } @@ -968,6 +976,17 @@ public class ModEventHandler { } } } + + if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) { + + Multimap multimap = HashMultimap.create(); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(fopSpeed, "FOP SPEED", 0.5, 1)); + player.getAttributeMap().removeAttributeModifiers(multimap); + + if(player.isSprinting()) { + player.getAttributeMap().applyAttributeModifiers(multimap); + } + } } } @@ -1061,34 +1080,62 @@ public class ModEventHandler { /// SYNC END /// } - //TODO: rewrite this so it doesn't look like shit if(player.worldObj.isRemote && event.phase == event.phase.START && !player.isInvisible() && !player.isSneaking()) { - if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft)) { - - int i = player.ticksExisted * 3; - - Vec3 vec = Vec3.createVectorHelper(3, 0, 0); - - vec.rotateAroundY((float) (i * Math.PI / 180D)); - - for(int k = 0; k < 5; k++) { - - vec.rotateAroundY((float) (1F * Math.PI / 180D)); - //player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + player.worldObj.rand.nextDouble() * 0.05, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); - } - } - if(player.getUniqueID().toString().equals(ShadyUtil.Pu_238)) { Vec3 vec = Vec3.createVectorHelper(3 * rand.nextDouble(), 0, 0); - vec.rotateAroundZ((float) (rand.nextDouble() * Math.PI)); vec.rotateAroundY((float) (rand.nextDouble() * Math.PI * 2)); - player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); } } + + // OREDBG + /*if(!event.player.worldObj.isRemote) { + for(BedrockOreType type : BedrockOreType.values()) { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type) * 100) / 100D), 777 + type.ordinal()), (EntityPlayerMP) player); + } + }*/ + + // PRISMDBG + /*if(!event.player.worldObj.isRemote) { + ChunkRadiationHandlerPRISM prism = (ChunkRadiationHandlerPRISM) ChunkRadiationManager.proxy; + + RadPerWorld perWorld = prism.perWorld.get(player.worldObj); + + if(perWorld != null) { + SubChunk[] chunk = perWorld.radiation.get(new ChunkCoordIntPair(((int) Math.floor(player.posX)) >> 4, ((int) Math.floor(player.posZ)) >> 4)); + + if(chunk != null) { + + int y = ((int) Math.floor(player.posY)) >> 4; + + if(y >= 0 && y <= 15) { + SubChunk sub = chunk[y]; + + if(sub != null) { + float xSum = 0, ySum = 0, zSum = 0; + for(int i = 0; i < 16; i++) { + xSum += sub.xResist[i]; ySum += sub.yResist[i]; zSum += sub.zResist[i]; + } + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 1), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 2), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "" + sub.checksum + " - " + ((int) sub.radiation) + "RAD/s - " + sub.needsRebuild + + " - " + (int) xSum+ " - " + (int) ySum + " - " + (int) zSum, 3), (EntityPlayerMP) player); + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "SUB IS NULL", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "OUTSIDE OF WORLD", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "CHUNK IS NULL", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "PERWORLD IS NULL", 1), (EntityPlayerMP) player); + } + }*/ } @SubscribeEvent diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index f29158539..e9a5a6bfd 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -577,12 +577,10 @@ public class ModEventHandlerClient { } if(player.getCurrentArmor(2) == null && !player.isPotionActive(Potion.invisibility)) { - if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) - RenderAccessoryUtility.renderWings(event, 2); - if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) - RenderAccessoryUtility.renderWings(event, 3); - if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) - RenderAccessoryUtility.renderAxePack(event); + if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) RenderAccessoryUtility.renderWings(event, 2); + if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) RenderAccessoryUtility.renderWings(event, 3); + if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) RenderAccessoryUtility.renderAxePack(event); + if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) RenderAccessoryUtility.renderFaggot(event); } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index f40158fe1..a2b9b5215 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -36,7 +36,8 @@ public class NEIConfig implements IConfigureNEI { //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); API.hideItem(ItemBattery.getFullBattery(ModItems.memory)); - + + API.hideItem(new ItemStack(ModItems.item_secret)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6ada576fc..4df4c2649 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -17,11 +17,6 @@ import net.minecraftforge.client.model.IModelCustom; public class ResourceManager { - //public static final Shader test_shader = ShaderManager.loadShader(new ResourceLocation(RefStrings.MODID, "shaders/test_shader")); - - //God - public static final IModelCustom error = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/error.obj")); - ////Obj TEs //Turrets @@ -179,12 +174,13 @@ public class ResourceManager { //Mining Drill public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asVBO(); + public static final IModelCustom ore_slopper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ore_slopper.obj")).asVBO(); //Laser Miner public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")).asVBO(); //Crystallizer - public static final IModelCustom crystallizer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/crystallizer.obj")).asVBO(); + public static final IModelCustom crystallizer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/acidizer.obj")).asVBO(); //Cyclotron public static final IModelCustom cyclotron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cyclotron.obj")).asVBO(); @@ -246,7 +242,6 @@ public class ResourceManager { //Radar public static final IModelCustom radar_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj"), false).asVBO(); - public static final IModelCustom radar_head = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj"), false).asVBO(); public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj"), false).asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj"), false).asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj"), false).asVBO(); @@ -581,9 +576,8 @@ public class ResourceManager { public static final ResourceLocation autosaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/autosaw.png"); //Mining Drill - public static final ResourceLocation drill_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mining_drill.png"); - public static final ResourceLocation drill_bolt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png"); public static final ResourceLocation mining_drill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_drill.png"); + public static final ResourceLocation ore_slopper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ore_slopper.png"); //Laser Miner public static final ResourceLocation mining_laser_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_base.png"); @@ -591,9 +585,7 @@ public class ResourceManager { public static final ResourceLocation mining_laser_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_laser.png"); //Crystallizer - public static final ResourceLocation crystallizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer.png"); - public static final ResourceLocation crystallizer_spinner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer_spinner.png"); - public static final ResourceLocation crystallizer_window_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer_window.png"); + public static final ResourceLocation crystallizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/acidizer.png"); //Cyclotron public static final ResourceLocation cyclotron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron.png"); @@ -798,7 +790,6 @@ public class ResourceManager { public static final IModelCustom shimmer_sledge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_sledge.obj")); public static final IModelCustom shimmer_axe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_axe.obj")); public static final IModelCustom stopsign = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/stopsign.obj")); - public static final IModelCustom pch = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/pch.obj")); public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj")); 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); @@ -873,6 +864,7 @@ public class ResourceManager { public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")); public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")); public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj")); + public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj")); public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); @@ -1037,6 +1029,7 @@ public class ResourceManager { public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png"); public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png"); public static final ResourceLocation wings_pheo = new ResourceLocation(RefStrings.MODID, "textures/armor/axepack.png"); + public static final ResourceLocation tail_peep = new ResourceLocation(RefStrings.MODID, "textures/armor/tail_peep.png"); public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png"); public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png"); @@ -1076,8 +1069,6 @@ public class ResourceManager { public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asVBO(); public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asVBO(); public static final IModelCustom missileShuttle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileShuttle.obj")); - public static final IModelCustom missileCarrier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileCarrier.obj")); - public static final IModelCustom missileBooster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileBooster.obj")); public static final IModelCustom minerRocket = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/minerRocket.obj")); public static final IModelCustom soyuz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz.obj")).asVBO(); public static final IModelCustom soyuz_lander = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_lander.obj")).asVBO(); diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 097bc6859..279a2c1e9 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -2,8 +2,10 @@ package com.hbm.module; import java.util.List; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; +import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -151,4 +153,16 @@ public class ModulePatternMatcher { } } } + + public void serialize(ByteBuf buf) { + for(int i = 0; i < modes.length; i++) { + BufferUtil.writeString(buf, modes[i]); + } + } + + public void deserialize(ByteBuf buf) { + for(int i = 0; i < modes.length; i++) { + modes[i] = BufferUtil.readString(buf); + } + } } diff --git a/src/main/java/com/hbm/render/block/RenderFence.java b/src/main/java/com/hbm/render/block/RenderFence.java index f86d128cc..5dd5a9012 100644 --- a/src/main/java/com/hbm/render/block/RenderFence.java +++ b/src/main/java/com/hbm/render/block/RenderFence.java @@ -5,7 +5,6 @@ import com.hbm.blocks.generic.BlockMetalFence; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; -import net.minecraft.block.BlockFence; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; @@ -19,58 +18,55 @@ public class RenderFence implements ISimpleBlockRenderingHandler { @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - BlockFence fence = (BlockFence) ModBlocks.fence_metal; + BlockMetalFence fence = (BlockMetalFence) ModBlocks.fence_metal; + int meta = world.getBlockMetadata(x, y, z); + + boolean xNeg = fence.canConnectFenceTo(world, x - 1, y, z); + boolean xPos = fence.canConnectFenceTo(world, x + 1, y, z); + boolean zNeg = fence.canConnectFenceTo(world, x, y, z - 1); + boolean zPos = fence.canConnectFenceTo(world, x, y, z + 1); + + boolean hasX = xNeg || xPos; + boolean hasZ = zNeg || zPos; - float f = 0.375F; - float f1 = 0.625F; - renderer.setRenderBounds((double)f, 0.0D, (double)f, (double)f1, 1.0D, (double)f1); - renderer.renderStandardBlock(fence, x, y, z); - boolean flag1 = false; - boolean flag2 = false; + boolean straightX = !hasZ && xNeg && xPos; + boolean straightZ = !hasX && zNeg && zPos; + boolean showPost = meta == 1 || (!straightX && !straightZ); - if (fence.canConnectFenceTo(world, x - 1, y, z) || fence.canConnectFenceTo(world, x + 1, y, z)) - { - flag1 = true; - } + if (!hasX && !hasZ) { + hasX = true; + } - if (fence.canConnectFenceTo(world, x, y, z - 1) || fence.canConnectFenceTo(world, x, y, z + 1)) - { - flag2 = true; - } + float f = 0.4375F; + float f1 = 0.5625F; + float f4 = xNeg ? 0.0F : f; + float f5 = xPos ? 1.0F : f1; + float f6 = zNeg ? 0.0F : f; + float f7 = zPos ? 1.0F : f1; + renderer.field_152631_f = true; - boolean flag3 = fence.canConnectFenceTo(world, x - 1, y, z); - boolean flag4 = fence.canConnectFenceTo(world, x + 1, y, z); - boolean flag5 = fence.canConnectFenceTo(world, x, y, z - 1); - boolean flag6 = fence.canConnectFenceTo(world, x, y, z + 1); + if (hasX) { + renderer.setRenderBounds((double)f4, (double)0, (double)0.5, (double)f5, (double)1, (double)0.5); + renderer.renderStandardBlock(fence, x, y, z); + } - if (!flag1 && !flag2) - { - flag1 = true; - } + if (hasZ) { + renderer.setRenderBounds((double)0.5, (double)0, (double)f6, (double)0.5, (double)1, (double)f7); + renderer.renderStandardBlock(fence, x, y, z); + } - f = 0.4375F; - f1 = 0.5625F; - float f4 = flag3 ? 0.0F : f; - float f5 = flag4 ? 1.0F : f1; - float f6 = flag5 ? 0.0F : f; - float f7 = flag6 ? 1.0F : f1; - renderer.field_152631_f = true; + if(showPost) { + f = 0.375F; + f1 = 0.625F; + renderer.setOverrideBlockTexture(fence.postIcon); + renderer.setRenderBounds((double)f, 0.0D, (double)f, (double)f1, 1.0D, (double)f1); + renderer.renderStandardBlock(fence, x, y, z); + renderer.clearOverrideBlockTexture(); + } - if (flag1) - { - renderer.setRenderBounds((double)f4, (double)0, (double)0.5, (double)f5, (double)1, (double)0.5); - renderer.renderStandardBlock(fence, x, y, z); - } - - if (flag2) - { - renderer.setRenderBounds((double)0.5, (double)0, (double)f6, (double)0.5, (double)1, (double)f7); - renderer.renderStandardBlock(fence, x, y, z); - } - - renderer.field_152631_f = false; - fence.setBlockBoundsBasedOnState(world, x, y, z); - return true; + renderer.field_152631_f = false; + fence.setBlockBoundsBasedOnState(world, x, y, z); + return true; } @Override diff --git a/src/main/java/com/hbm/render/block/RenderGrate.java b/src/main/java/com/hbm/render/block/RenderGrate.java index cf8eb161a..ca5f37aa6 100644 --- a/src/main/java/com/hbm/render/block/RenderGrate.java +++ b/src/main/java/com/hbm/render/block/RenderGrate.java @@ -22,7 +22,16 @@ public class RenderGrate implements ISimpleBlockRenderingHandler { tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); tessellator.setColorOpaque_F(1, 1, 1); - renderer.setRenderBounds(0.0D, meta * 0.125D, 0D, 1D, meta * 0.125D + 0.125D, 1D); + float fy = ((BlockGrate)block).getY(meta); + if(fy < 0) { + fy++; + y--; + } else if(fy >= 1) { + fy--; + y++; + } + + renderer.setRenderBounds(0.0D, fy, 0D, 1D, fy + 0.125D, 1D); renderer.renderStandardBlock(block, x, y, z); return true; } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java b/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java deleted file mode 100644 index c586ec6d5..000000000 --- a/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.render.entity.rocket; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderBoosterMissile extends Render { - - public RenderBoosterMissile() { } - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glScalef(2F, 2F, 2F); - - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return ResourceManager.missileBooster_tex; - } -} diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java b/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java deleted file mode 100644 index ad6391fe6..000000000 --- a/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.render.entity.rocket; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderCarrierMissile extends Render { - - public RenderCarrierMissile() { } - - @Override - public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glScalef(1.0F, 1.0F, 1.0F); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - - if(rocket.getDataWatcher().getWatchableObjectInt(8) == 1) { - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return ResourceManager.missileCarrier_tex; - } -} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 41d42e7c2..bcee704d8 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -93,22 +93,6 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.epress_head_tex); ResourceManager.epress_head.renderAll(); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_crystallizer), new ItemRenderBase() { - public void renderNonInv() { - GL11.glScaled(0.5, 0.5, 0.5); - } - public void renderInventory() { - GL11.glTranslated(0, -4, 0); - GL11.glScaled(1.75, 1.75, 1.75); - } - public void renderCommon() { - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.crystallizer_tex); ResourceManager.crystallizer.renderPart("Body"); - bindTexture(ResourceManager.crystallizer_window_tex); ResourceManager.crystallizer.renderPart("Windows"); - bindTexture(ResourceManager.crystallizer_spinner_tex); ResourceManager.crystallizer.renderPart("Spinner"); - GL11.glShadeModel(GL11.GL_FLAT); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -4, 0); diff --git a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java index 08bbe24d0..9985a4c4c 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java @@ -167,24 +167,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { renderers.put(new ComparableStack(ModItems.missile_doomsday), generateStandard(ResourceManager.missileDoomsday_tex, ResourceManager.missileNuclear)); renderers.put(new ComparableStack(ModItems.missile_doomsday_rusted), generateStandard(ResourceManager.missileDoomsdayRusted_tex, ResourceManager.missileNuclear)); - renderers.put(new ComparableStack(ModItems.missile_carrier), x -> { - GL11.glScalef(2F, 2F, 2F); - x.bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - x.bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - }); - renderers.put(new ComparableStack(ModItems.missile_shuttle), generateStandard(ResourceManager.missileShuttle_tex, ResourceManager.missileShuttle)); } } diff --git a/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java b/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java new file mode 100644 index 000000000..5a8cb8370 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java @@ -0,0 +1,26 @@ +package com.hbm.render.model; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; + +public class ModelArmorTailPeep extends ModelArmorBase { + + ModelRendererObj tail; + + public ModelArmorTailPeep() { + super(0); + tail = new ModelRendererObj(ResourceManager.armor_tail, "FaggyAssFuckingTailThing"); + } + + @Override + public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, entity); + body.copyTo(tail); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tail_peep); + tail.render(par7); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java index 75015f4b6..158eb34bd 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java @@ -2,46 +2,82 @@ 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.machine.TileEntityMachineCrystallizer; +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 RenderCrystallizer extends TileEntitySpecialRenderer { +public class RenderCrystallizer extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float inter) { - - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + switch(te.getBlockMetadata() - 10) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - TileEntityMachineCrystallizer crys = (TileEntityMachineCrystallizer)te; + + TileEntityMachineCrystallizer crys = (TileEntityMachineCrystallizer) te; GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.crystallizer_tex); - ResourceManager.crystallizer.renderPart("Body"); - bindTexture(ResourceManager.crystallizer_window_tex); - ResourceManager.crystallizer.renderPart("Windows"); - - GL11.glPushMatrix(); - GL11.glRotatef(crys.prevAngle + (crys.angle - crys.prevAngle) * inter, 0, 1, 0); - bindTexture(ResourceManager.crystallizer_spinner_tex); - ResourceManager.crystallizer.renderPart("Spinner"); - GL11.glPopMatrix(); - + bindTexture(ResourceManager.crystallizer_tex); + ResourceManager.crystallizer.renderPart("Body"); + + GL11.glPushMatrix(); + GL11.glRotatef(crys.prevAngle + (crys.angle - crys.prevAngle) * inter, 0, 1, 0); + ResourceManager.crystallizer.renderPart("Spinner"); + GL11.glPopMatrix(); + + if(crys.prevAngle != crys.angle) { + GL11.glEnable(GL11.GL_BLEND); + GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + bindTexture(crys.tank.getTankType().getTexture()); + ResourceManager.crystallizer.renderPart("Fluid"); + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_BLEND); + } + GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_crystallizer); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderNonInv() { + GL11.glScaled(0.5, 0.5, 0.5); + } + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(2, 2, 2); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.crystallizer_tex); + ResourceManager.crystallizer.renderPart("Body"); + ResourceManager.crystallizer.renderPart("Spinner"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java b/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java new file mode 100644 index 000000000..6db111b7f --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java @@ -0,0 +1,95 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraftforge.client.IItemRenderer; + +public class RenderOreSlopper 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.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.ore_slopper_tex); + ResourceManager.ore_slopper.renderPart("Base"); + ResourceManager.ore_slopper.renderPart("Slider"); + + GL11.glPushMatrix(); + double extend = Math.sin(((tile.getWorldObj().getTotalWorldTime() + interp) * 0.1 % (Math.PI * 2))) * 0.625+ 0.625; + GL11.glTranslated(0, -MathHelper.clamp_double(extend - 0.25, 0, 1.25), 0); + ResourceManager.ore_slopper.renderPart("Hydraulics"); + GL11.glTranslated(0, -MathHelper.clamp_double(extend, 0, 1.25), 0); + ResourceManager.ore_slopper.renderPart("Bucket"); + GL11.glPopMatrix(); + + double speed = 10; + + GL11.glPushMatrix(); + GL11.glTranslated(0.375, 2.75, 0); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * speed, 0, 0, 1); + GL11.glTranslated(-0.375, -2.75, 0); + ResourceManager.ore_slopper.renderPart("BladesLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-0.375, 2.75, 0); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -speed, 0, 0, 1); + GL11.glTranslated(0.375, -2.75, 0); + ResourceManager.ore_slopper.renderPart("BladesRight"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.875, -1); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -25, 1, 0, 0); + GL11.glTranslated(0, -1.875, 1); + ResourceManager.ore_slopper.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ore_slopper); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(3.75, 3.75, 3.75); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(-90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.ore_slopper_tex); + ResourceManager.ore_slopper.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index d6311b241..e6bcf7f06 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -23,8 +23,6 @@ import net.minecraft.util.ResourceLocation; public class RendererObjTester extends TileEntitySpecialRenderer { - //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - private static ResourceLocation extra = new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png"); @Override diff --git a/src/main/java/com/hbm/render/util/ErrorPronter.java b/src/main/java/com/hbm/render/util/ErrorPronter.java deleted file mode 100644 index 421e83c08..000000000 --- a/src/main/java/com/hbm/render/util/ErrorPronter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.render.util; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; - -public class ErrorPronter { - - public static void prontError() { - - GL11.glDisable(GL11.GL_CULL_FACE); - - GL11.glScaled(2, 2, 2); - - GL11.glColor3d(Math.sin(System.currentTimeMillis() % 1000 / 1000D * Math.PI) * 0.5 + 0.5, 0.0, 0.0); - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.universal_bright); - ResourceManager.error.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); - } - -} diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 2087547de..943faf575 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -2,6 +2,7 @@ package com.hbm.render.util; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.render.model.ModelArmorTailPeep; import com.hbm.render.model.ModelArmorWings; import com.hbm.render.model.ModelArmorWingsPheo; import com.hbm.util.ShadyUtil; @@ -184,4 +185,26 @@ public class RenderAccessoryUtility { axePackModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); } + + private static ModelBiped tailModel; + public static void renderFaggot(RenderPlayerEvent.SetArmorModel event) { + + if(tailModel == null) + tailModel = new ModelArmorTailPeep(); + + RenderPlayer renderer = event.renderer; + ModelBiped model = renderer.modelArmor; + EntityPlayer player = event.entityPlayer; + + tailModel.isSneak = model.isSneak; + + float interp = event.partialRenderTick; + float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp; + float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp; + float yaw = yawHead - yawOffset; + float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset); + float pitch = player.rotationPitch; + + tailModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); + } } diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 90a348e1c..0fd4f7dab 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -26,6 +26,5 @@ public interface IUpgradeInfoProvider { public static final String KEY_DELAY = "upgrade.delay"; public static final String KEY_EFFICIENCY = "upgrade.efficiency"; public static final String KEY_FORTUNE = "upgrade.fortune"; - public static final String KEY_OVERHEAT_CHANCE = "upgrade.overheatChance"; public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 7fe9db0f3..f550af4b8 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -2,6 +2,7 @@ package com.hbm.tileentity; import api.hbm.block.ICrucibleAcceptor; +import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.fluid.FluidType; @@ -10,6 +11,10 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.tile.IHeatSource; import com.hbm.inventory.material.Mats; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -18,7 +23,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor { +@Optional.InterfaceList({ + @Optional.Interface(iface = "com.hbm.handler.CompatHandler.OCComponent", modid = "opencomputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers") +}) +public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor, SimpleComponent, OCComponent { TileEntity tile; boolean inventory; @@ -537,4 +546,39 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy } return null; } + + @Override // please work + public String getComponentName() { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).getComponentName(); + return OCComponent.super.getComponentName(); + } + + @Override + public boolean canConnectNode(ForgeDirection side) { //thank you vaer + if(this.getTile() instanceof OCComponent) + return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side); + return OCComponent.super.canConnectNode(null); + } + + @Override + public String[] getExtraInfo() { + if(this.getTile() instanceof OCComponent) + return new String[] {"analyze.dummy"}; + return OCComponent.super.getExtraInfo(); + } + + @Override + public String[] methods() { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).methods(); + return OCComponent.super.methods(); + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).invoke(method, context, args); + return OCComponent.super.invoke(null, null, null); + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 3266a973f..9567f3bff 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -472,7 +472,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case HYDROGEN: tanks[0].setTankType(Fluids.HYDROGEN); @@ -483,7 +483,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I break; case BALEFIRE: tanks[0].setTankType(Fluids.BALEFIRE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; default: break; } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index d73ed90bf..7624b53d5 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -4,6 +4,12 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; +import com.hbm.handler.CompatHandler; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -49,7 +55,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); @@ -284,11 +291,11 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl switch(missile.fuel) { case ETHANOL_PEROXIDE: tanks[0].setTankType(Fluids.ETHANOL); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case KEROSENE_PEROXIDE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case KEROSENE_LOXY: tanks[0].setTankType(Fluids.KEROSENE); @@ -462,4 +469,87 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl /** Any extra conditions for launching in addition to the missile being valid and fueled */ public abstract boolean isReadyForLaunch(); public abstract double getLaunchOffset(); + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "ntm_launch_pad"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + this.tanks[0].getFill(), this.tanks[0].getMaxFill(), this.tanks[0].getTankType().getUnlocalizedName(), + this.tanks[1].getFill(), this.tanks[1].getMaxFill(), this.tanks[1].getTankType().getUnlocalizedName() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] canLaunch(Context context, Arguments args) { + return new Object[] {canLaunch()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTier(Context context, Arguments args) { + if(!isMissileValid()) + return new Object[] {}; + ItemMissile missile = (ItemMissile) slots[0].getItem(); + if(missile.tier == ItemMissile.MissileTier.TIER0) + return new Object[] {0}; + if(missile.tier == ItemMissile.MissileTier.TIER1) + return new Object[] {1}; + if(missile.tier == ItemMissile.MissileTier.TIER2) + return new Object[] {2}; + if(missile.tier == ItemMissile.MissileTier.TIER3) + return new Object[] {3}; + if(missile.tier == ItemMissile.MissileTier.TIER4) + return new Object[] {4}; + return new Object[] {5}; // unknown tier + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + if(canLaunch()) { + return new Object[] {sendCommandPosition(args.checkInteger(0), -1 /*unused anyway*/, args.checkInteger(1))}; + } + return new Object[] {false}; + } + + @Override + public String[] methods() { + return new String[] { + "getEnergyInfo", + "getFluid", + "canLaunch", + "getTier", + "launch" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("canLaunch"): + return canLaunch(context, args); + case ("getTier"): + return getTier(context, args); + case ("launch"): + return launch(context, args); + } + throw new NoSuchMethodException(); +} + } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 3259452ce..b193f0cb1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.bomb; import java.util.List; import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.handler.CompatHandler; import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -53,7 +54,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver, CompatHandler.OCComponent { private ItemStack slots[]; @@ -467,7 +468,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case HYDROGEN: tanks[0].setTankType(Fluids.HYDROGEN); @@ -478,7 +479,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide break; case BALEFIRE: tanks[0].setTankType(Fluids.BALEFIRE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; default: break; } @@ -649,7 +650,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide // do some opencomputer stuff @Override public String getComponentName() { - return "large_launch_pad"; + return "ntm_custom_launch_pad"; } @Callback @@ -661,7 +662,11 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Callback @Optional.Method(modid = "OpenComputers") public Object[] getContents(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid}; + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(), + tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(), + solid, maxSolid + }; } @Callback @@ -682,13 +687,6 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide } else return new Object[] {false}; - // Not sure if i should have this - /* - if(xCoord2 == xCoord && zCoord2 == zCoord) { - xCoord2 += 1; - } - */ - return new Object[] {xCoord2, zCoord2}; } return new Object[] {false, "Designator not found"}; @@ -716,6 +714,35 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return new Object[] {false}; } + public String[] methods() { + return new String[] { + "getEnergyInfo", + "getContents", + "getLaunchInfo", + "getCoords", + "setCoords", + "launch" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("getContents"): + return getContents(context, args); + case ("getLaunchInfo"): + return getLaunchInfo(context, args); + case ("getCoords"): + return getCoords(context, args); + case ("setCoords"): + return setCoords(context, args); + case ("launch"): + return launch(context, args); + } + throw new NoSuchMethodException(); +} + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerLaunchTable(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 5ae5bc423..874064a5c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -41,7 +41,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 100000000000L; @@ -345,7 +345,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) @@ -358,7 +358,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @@ -367,6 +367,29 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "setType", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return getFluid(context, args); + case ("getType"): + return getType(context, args); + case ("setType"): + return setType(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 13c6a2036..a30090384 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -257,7 +257,7 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide return 1.7F; if(type == Fluids.OXYGEN) return 1.2F; - if(type == Fluids.ACID) + if(type == Fluids.PEROXIDE) return 1.4F; if(type == Fluids.XENON) return 1.5F; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index ff1278e52..1bab38cd8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -5,6 +5,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -37,7 +38,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 1000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index e5862e2ab..20891cbe3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreInjector; import com.hbm.inventory.fluid.FluidType; @@ -27,7 +28,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider, CompatHandler.OCComponent { public FluidTank[] tanks; public static final int range = 15; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 54ca9de4c..b2fe65851 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreReceiver; import com.hbm.inventory.fluid.FluidType; @@ -32,7 +33,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public long joules; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 50564fb48..a21677995 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerCoreStabilizer; import com.hbm.inventory.gui.GUICoreStabilizer; import com.hbm.items.ModItems; @@ -28,7 +29,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 2500000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 23cdbd0ab..1fb87fc69 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -30,6 +30,7 @@ import api.hbm.tile.IHeatSource; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -220,38 +221,47 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro this.wasteStack.removeIf(x -> x.amount <= 0); /* sync */ - NBTTagCompound data = new NBTTagCompound(); - int[] rec = new int[recipeStack.size() * 2]; - int[] was = new int[wasteStack.size() * 2]; - for(int i = 0; i < recipeStack.size(); i++) { MaterialStack sta = recipeStack.get(i); rec[i * 2] = sta.material.id; rec[i * 2 + 1] = sta.amount; } - for(int i = 0; i < wasteStack.size(); i++) { MaterialStack sta = wasteStack.get(i); was[i * 2] = sta.material.id; was[i * 2 + 1] = sta.amount; } - data.setIntArray("rec", rec); - data.setIntArray("was", was); - data.setInteger("progress", progress); - data.setInteger("heat", heat); - this.networkPack(data, 25); + this.networkPackNT(25); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.recipeStack.clear(); - this.wasteStack.clear(); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(progress); + buf.writeInt(heat); - int[] rec = nbt.getIntArray("rec"); - for(int i = 0; i < rec.length / 2; i++) { - recipeStack.add(new MaterialStack(Mats.matById.get(rec[i * 2]), rec[i * 2 + 1])); + buf.writeShort(recipeStack.size()); + for(MaterialStack sta : recipeStack) { + buf.writeInt(sta.material.id); + buf.writeInt(sta.amount); } - int[] was = nbt.getIntArray("was"); - for(int i = 0; i < was.length / 2; i++) { - wasteStack.add(new MaterialStack(Mats.matById.get(was[i * 2]), was[i * 2 + 1])); + buf.writeShort(wasteStack.size()); + for(MaterialStack sta : wasteStack) { + buf.writeInt(sta.material.id); + buf.writeInt(sta.amount); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readInt(); + heat = buf.readInt(); + + recipeStack.clear(); + wasteStack.clear(); + + int mats = buf.readShort(); + for(int i = 0; i < mats; i++) { + recipeStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); } - this.progress = nbt.getInteger("progress"); - this.heat = nbt.getInteger("heat"); + mats = buf.readShort(); + for(int i = 0; i < mats; i++) { + wasteStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index e48dfd33a..5867f36d2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -16,6 +16,7 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; @@ -23,6 +24,7 @@ import com.hbm.util.ContaminationUtil.HazardType; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; @@ -176,13 +178,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setString("mode", mode.toString()); - data.setBoolean("isOn", isOn); - data.setBoolean("valid", missingValidSilex); - data.setInteger("distance", distance); - this.networkPack(data, 250); + this.networkPackNT(250); } else { if(power > powerReq * Math.pow(2, mode.ordinal()) && isOn && !(mode == EnumWavelengths.NULL) && distance - 3 > 0) { @@ -224,16 +220,25 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei return false; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.mode = EnumWavelengths.valueOf(nbt.getString("mode")); - this.isOn = nbt.getBoolean("isOn"); - this.distance = nbt.getInteger("distance"); - this.missingValidSilex = nbt.getBoolean("valid"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + BufferUtil.writeString(buf, mode.toString()); + buf.writeBoolean(isOn); + buf.writeBoolean(missingValidSilex); + buf.writeInt(distance); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + mode = EnumWavelengths.valueOf(BufferUtil.readString(buf)); + isOn = buf.readBoolean(); + missingValidSilex = buf.readBoolean(); + distance = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index c52d0270d..9f49f439e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -17,6 +17,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -121,14 +122,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i this.burnHeat = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("maxBurnTime", this.maxBurnTime); - data.setInteger("burnTime", this.burnTime); - data.setInteger("burnHeat", this.burnHeat); - data.setInteger("heatEnergy", this.heatEnergy); - data.setInteger("playersUsing", this.playersUsing); - data.setBoolean("wasOn", this.wasOn); - this.networkPack(data, 50); + this.networkPackNT(50); } else { this.prevDoorAngle = this.doorAngle; float swingSpeed = (doorAngle / 10F) + 3; @@ -151,6 +145,28 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(maxBurnTime); + buf.writeInt(burnTime); + buf.writeInt(burnHeat); + buf.writeInt(heatEnergy); + buf.writeInt(playersUsing); + buf.writeBoolean(wasOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + maxBurnTime = buf.readInt(); + burnTime = buf.readInt(); + burnHeat = buf.readInt(); + heatEnergy = buf.readInt(); + playersUsing = buf.readInt(); + wasOn = buf.readBoolean(); + } + public static EnumAshType getAshFromFuel(ItemStack stack) { List names = ItemStackUtil.getOreDictNames(stack); @@ -181,18 +197,6 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i public boolean isItemValidForSlot(int i, ItemStack itemStack) { return getModule().getBurnTime(itemStack) > 0; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.burnHeat = nbt.getInteger("burnHeat"); - this.heatEnergy = nbt.getInteger("heatEnergy"); - this.playersUsing = nbt.getInteger("playersUsing"); - this.wasOn = nbt.getBoolean("wasOn"); - } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 81fb4c1c3..2ef8e189e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -18,6 +18,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -128,12 +129,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp this.progress = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("wasOn", this.wasOn); - data.setInteger("heat", this.heat); - data.setInteger("progress", this.progress); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); } else { if(this.wasOn && worldObj.rand.nextInt(15) == 0) { @@ -142,6 +138,24 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(wasOn); + buf.writeInt(heat); + buf.writeInt(progress); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + wasOn = buf.readBoolean(); + heat = buf.readInt(); + progress = buf.readInt(); + tank.deserialize(buf); + } + public boolean canSmelt() { if(slots[0] == null) return false; Pair pair = CombinationRecipes.getOutput(slots[0]); @@ -165,16 +179,6 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp return true; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.wasOn = nbt.getBoolean("wasOn"); - this.heat = nbt.getInteger("heat"); - this.progress = nbt.getInteger("progress"); - this.tank.readFromNBT(nbt, "t"); - } protected void tryPullHeat() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index a53e7614d..314e91614 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ContaminationUtil; @@ -17,7 +18,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC { +public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { int timer = 0; int ticker = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 814711f6d..f044f3fad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,15 +1,19 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IEnergyReceiverMK2; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyReceiverMK2, IBufPacketReceiver { public long power; @@ -26,15 +30,18 @@ public class TileEntityHadronPower extends TileEntityLoadedBase implements IEner this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - INBTPacketReceiver.networkPack(this, data, 15); + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); + public void serialize(ByteBuf buf) { + buf.writeLong(power); + } + + @Override + public void deserialize(ByteBuf buf) { + power = buf.readLong(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index c68190025..0d19a14bc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -16,6 +16,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -94,23 +95,28 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem if(shouldCool) this.heatEnergy = Math.max(this.heatEnergy - Math.max(this.heatEnergy / 1000, 1), 0); - NBTTagCompound data = new NBTTagCompound(); - tank.writeToNBT(data, "tank"); - data.setBoolean("isOn", isOn); - data.setInteger("h", heatEnergy); - data.setByte("s", (byte) this.setting); - this.networkPack(data, 25); + this.networkPackNT(25); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + tank.serialize(buf); - tank.readFromNBT(nbt, "tank"); - isOn = nbt.getBoolean("isOn"); - heatEnergy = nbt.getInteger("h"); - setting = nbt.getByte("s"); + buf.writeBoolean(isOn); + buf.writeInt(heatEnergy); + buf.writeByte((byte) this.setting); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tank.deserialize(buf); + + isOn = buf.readBoolean(); + heatEnergy = buf.readInt(); + setting = buf.readByte(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index c4e930c6d..524671911 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerICF; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -19,10 +20,15 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,7 +38,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public long laser; public long maxLaser; @@ -284,4 +291,86 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.consumption); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, this.output); } + + //OC stuff + + @Override + public String getComponentName() { + return "ntm_icf_reactor"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {this.heat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeatingRate(Context context, Arguments args) { + return new Object[] {this.heatup}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxHeat(Context context, Arguments args) { + return new Object[] {maxHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {this.laser}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(), + tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(), + tanks[2].getFill(), tanks[2].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPelletStats(Context context, Arguments args) { + return new Object[] { + ItemICFPellet.getDepletion(slots[5]), + ItemICFPellet.getMaxDepletion(slots[5]), + ItemICFPellet.getFusingDifficulty(slots[5]), + ItemICFPellet.getType(slots[5], true).name(), + ItemICFPellet.getType(slots[5], false).name() + }; + } + + public String[] methods() { + return new String[] { + "getHeat", + "getHeatingRate", + "getMaxHeat", + "getPower", + "getFluid", + "getPelletStats" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case ("getHeat"): + return getHeat(context, args); + case ("getHeatingRate"): + return getHeatingRate(context, args); + case ("getMaxHeat"): + return getMaxHeat(context, args); + case ("getPower"): + return getPower(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("getPelletStats"): + return getPelletStats(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java index 60df455b8..9c6eef7ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java @@ -153,6 +153,11 @@ public class TileEntityICFPress extends TileEntityMachineBase implements IFluidS public int[] getAccessibleSlotsFromSide(int side) { return side == 0 || side == 1 ? topBottom : sides; } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot == 1; + } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 22fb2665d..90ac75709 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -8,6 +8,7 @@ import com.hbm.blocks.machine.MachineITER; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.container.ContainerITER; @@ -33,9 +34,14 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -46,7 +52,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public long power; public static final long maxPower = 10000000; @@ -659,4 +666,93 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece data.setDouble("consumption", output * 10); data.setDouble("outputmb", output); } + + + @Override + public String getComponentName() { + return "ntm_fusion"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isActive(Context context, Arguments args) { + return new Object[] {isOn}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setActive(Context context, Arguments args) { + isOn = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + plasma.getFill(), plasma.getMaxFill(), plasma.getTankType().getUnlocalizedName() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPlasmaTemp(Context context, Arguments args) { + return new Object[] {plasma.getTankType().temperature}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxTemp(Context context, Arguments args) { + if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) + return new Object[] {((ItemFusionShield) slots[3].getItem()).maxTemp}; + return new Object[] {"N/A"}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getBlanketDamage(Context context, Arguments args) { + if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) + return new Object[]{ItemFusionShield.getShieldDamage(slots[3]), ((ItemFusionShield)slots[3].getItem()).maxDamage}; + return new Object[] {"N/A", "N/A"}; + } + + public String[] methods() { + return new String[] { + "getEnergyInfo", + "isActive", + "setActive", + "getFluid", + "getPlasmaTemp", + "getMaxTemp", + "getBlanketDamage" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("isActive"): + return isActive(context, args); + case ("setActive"): + return setActive(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("getPlasmaTemp"): + return getPlasmaTemp(context, args); + case ("getMaxTemp"): + return getMaxTemp(context, args); + case ("getBlanketDamage"): + return getBlanketDamage(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index dcf646ac9..15a73a357 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -56,6 +56,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public boolean isProgressing; public boolean hasMaterial; public int delay; + public int upgrade; public float lid; public float prevLid; @@ -71,7 +72,11 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public static final byte ELECTRODE_USED = 2; public static final byte ELECTRODE_DEPLETED = 3; - public static final int maxLiquid = MaterialShapes.BLOCK.q(24); + public int getMaxInputSize() { + return upgrade == 0 ? 1 : upgrade == 1 ? 4 : upgrade == 2 ? 8 : 16; + } + + public static final int maxLiquid = MaterialShapes.BLOCK.q(128); public List liquids = new ArrayList(); public TileEntityMachineArcFurnaceLarge() { @@ -95,6 +100,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public void updateEntity() { + UpgradeManager.eval(slots, 4, 4); + this.upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 3, power, maxPower); @@ -107,13 +115,11 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl boolean ingredients = this.hasIngredients(); boolean electrodes = this.hasElectrodes(); - UpgradeManager.eval(slots, 4, 4); - int upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int consumption = (int) (1_000 * Math.pow(5, upgrade)); if(ingredients && electrodes && delay <= 0 && this.liquids.isEmpty()) { if(lid > 0) { - lid -= 1F/60F; + lid -= 1F / (60F / (upgrade * 0.5 + 1)); if(lid < 0) lid = 0; this.progress = 0; } else { @@ -126,8 +132,8 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(this.progress >= 1F) { this.process(); this.progress = 0; - this.delay = 120; - PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 15F); + this.delay = (int) (120 / (upgrade * 0.5 + 1)); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 10F); } } } @@ -135,7 +141,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(this.delay > 0) delay--; this.progress = 0; if(lid < 1 && this.electrodes[0] != 0 && this.electrodes[1] != 0 && this.electrodes[2] != 0) { - lid += 1F/60F; + lid += 1F / (60F / (upgrade * 0.5 + 1)); if(lid > 1) lid = 1; } } @@ -147,12 +153,12 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(!hasMaterial) hasMaterial = this.hasIngredients(); - if(!this.liquids.isEmpty() && this.lid >= 1F) { + if(!this.liquids.isEmpty() && this.lid > 0F) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + dir.offsetZ * 2.875D, 6, true, this.liquids, MaterialShapes.INGOT.q(1, 2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + dir.offsetZ * 2.875D, 6, true, this.liquids, MaterialShapes.INGOT.q(1), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); @@ -193,7 +199,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } - if((lid == 1 || lid == 0) && lid != prevLid) { + if((lid == 1 || lid == 0) && lid != prevLid && !(this.prevLid == 0 && this.lid == 1)) { MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", this.getVolume(1), 1F); } @@ -211,7 +217,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } - if(this.lid != this.prevLid && this.lid > this.prevLid && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { + if(this.lid != this.prevLid && this.lid > this.prevLid && !(this.prevLid == 0 && this.lid == 1) && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 0.01F); @@ -227,6 +233,33 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl data.setFloat("strafe", 0.05F); for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); } + + if(this.lid != this.prevLid && this.lid < this.prevLid && this.lid > 0.5F && this.hasMaterial && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { + /*NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "tower"); + data.setFloat("lift", 0.01F); + data.setFloat("base", 0.5F); + data.setFloat("max", 2F); + data.setInteger("life", 50 + worldObj.rand.nextInt(20)); + data.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.25); + data.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.25); + data.setDouble("posY", yCoord + 4); + data.setBoolean("noWind", true); + data.setFloat("alphaMod", prevLid / lid); + data.setInteger("color", 0x808080); + data.setFloat("strafe", 0.15F); + MainRegistry.proxy.effectNT(data);*/ + + if(worldObj.rand.nextInt(5) == 0) { + NBTTagCompound flame = new NBTTagCompound(); + flame.setString("type", "rbmkflame"); + flame.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); + flame.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); + flame.setDouble("posY", yCoord + 2.75); + flame.setInteger("maxAge", 50); + for(int i = 0; i < 2; i++) MainRegistry.proxy.effectNT(flame); + } + } } } @@ -253,17 +286,24 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(recipe == null) continue; if(!liquidMode && recipe.solidOutput != null) { + int amount = slots[i].stackSize; slots[i] = recipe.solidOutput.copy(); + slots[i].stackSize *= amount; } if(liquidMode && recipe.fluidOutput != null) { - int liquid = this.getStackAmount(liquids); - int toAdd = this.getStackAmount(recipe.fluidOutput); - if(liquid + toAdd <= this.maxLiquid) { - slots[i] = null; - for(MaterialStack stack : recipe.fluidOutput) { - this.addToStack(stack); + while(slots[i] != null && slots[i].stackSize > 0) { + int liquid = this.getStackAmount(liquids); + int toAdd = this.getStackAmount(recipe.fluidOutput); + + if(liquid + toAdd <= this.maxLiquid) { + this.decrStackSize(i, 1); + for(MaterialStack stack : recipe.fluidOutput) { + this.addToStack(stack); + } + } else { + break; } } } @@ -303,17 +343,37 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public boolean canInsertItem(int slot, ItemStack stack, int side) { - return this.isItemValidForSlot(slot, stack) && stack.stackSize <= 1 && this.lid > 0; + if(lid <= 0) return false; + if(slot < 3) return stack.getItem() == ModItems.arc_electrode; + if(slot > 4) { + ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode); + if(recipe == null) return false; + if(liquidMode) { + if(recipe.fluidOutput == null) return false; + int sta = slots[slot] != null ? slots[slot].stackSize : 0; + sta += stack.stackSize; + return sta <= getMaxInputSize(); + } else { + if(recipe.solidOutput == null) return false; + int sta = slots[slot] != null ? slots[slot].stackSize : 0; + sta += stack.stackSize; + return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= getMaxInputSize(); + } + } + return false; } @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot < 3) return stack.getItem() == ModItems.arc_electrode; if(slot > 4) { - if(slots[slot] != null) return false; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode); if(recipe == null) return false; - return liquidMode ? recipe.fluidOutput != null : recipe.solidOutput != null; + if(liquidMode) { + return recipe.fluidOutput != null; + } else { + return recipe.solidOutput != null; + } } return false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 1f899b27c..6a3132006 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -29,6 +29,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -135,21 +136,48 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements this.maxPower = Math.max(intendedMaxPower, power); - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("consumption", consumption); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - if(recipe != null) { - data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); - data.setInteger("displayMeta", recipe.output.getItemDamage()); - } - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeLong(maxPower); + buf.writeLong(consumption); + buf.writeInt(progress); + buf.writeInt(processTime); + + tank.serialize(buf); + + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); + + if(recipe != null) { + buf.writeBoolean(true); + buf.writeInt(Item.getIdFromItem(recipe.output.getItem())); + buf.writeInt(recipe.output.getItemDamage()); + } else + buf.writeBoolean(false); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + maxPower = buf.readLong(); + consumption = buf.readLong(); + progress = buf.readInt(); + processTime = buf.readInt(); + + tank.deserialize(buf); + + if(buf.readBoolean()) { + this.display = new ItemStack(Item.getItemById(buf.readInt()), 1, buf.readInt()); + } else + this.display = null; + } + public boolean canProcess(ArcWelderRecipe recipe) { if(this.power < this.consumption) return false; @@ -204,25 +232,6 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite()) }; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.consumption = nbt.getLong("consumption"); - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - - if(nbt.hasKey("display")) { - this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); - } else { - this.display = null; - } - - this.tank.readFromNBT(nbt, "t"); - } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 89a674740..c16320387 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -6,12 +6,9 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineAssembler; import com.hbm.inventory.gui.GUIMachineAssembler; -import com.hbm.inventory.recipes.AssemblerRecipes; -import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -23,6 +20,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -105,19 +103,13 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i speed /= (overLevel + 1); consumption *= (overLevel + 1); - int rec = -1; + /*int rec = -1; if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null) { ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]); rec = AssemblerRecipes.recipeList.indexOf(comp); - } + }*/ - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - data.setInteger("recipe", rec); - this.networkPack(data, 150); + this.networkPackNT(150); } else { float volume = this.getVolume(2F); @@ -142,16 +134,31 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); + } - this.power = nbt.getLong("power"); - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - this.recipe = nbt.getInteger("recipe"); + buf.writeBoolean(isProgressing); + buf.writeInt(recipe); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + + isProgressing = buf.readBoolean(); + recipe = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index a44f0e996..948022a43 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -20,6 +20,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -93,16 +94,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); + this.networkPackNT(150); } else { @@ -114,7 +106,33 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); + } + buf.writeBoolean(isProgressing); + water.serialize(buf); + steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + isProgressing = buf.readBoolean(); + water.deserialize(buf); + steam.deserialize(buf); + } + @Override public void networkUnpack(NBTTagCompound nbt) { super.networkUnpack(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index 9f1834c63..a15e82e8c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -8,11 +8,13 @@ import com.hbm.inventory.gui.GUIAutocrafter; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -193,33 +195,38 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - for(int i = 0; i < 9; i++) { - if(modes[i] != null) { - data.setString("mode" + i, modes[i]); - } - } - data.setInteger("count", this.recipeCount); - data.setInteger("rec", this.recipeIndex); - this.networkPack(data, 15); + this.networkPackNT(15); } } @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < 9; i++) { + if(modes[i] != null) { + buf.writeBoolean(true); + BufferUtil.writeString(buf, modes[i]); + } else + buf.writeBoolean(false); + } - this.power = data.getLong("power"); + buf.writeInt(recipeCount); + buf.writeInt(recipeIndex); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); modes = new String[9]; for(int i = 0; i < 9; i++) { - if(data.hasKey("mode" + i)) { - modes[i] = data.getString("mode" + i); - } + if(buf.readBoolean()) modes[i] = BufferUtil.readString(buf); } - this.recipeCount = data.getInteger("count"); - this.recipeIndex = data.getInteger("rec"); + + recipeCount = buf.readInt(); + recipeIndex = buf.readInt(); } public void updateTemplateGrid() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index a8e271bf5..ed7993281 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -22,6 +22,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -198,11 +199,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement progress = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isProgressing", isProgressing); - this.networkPack(data, 50); + this.networkPackNT(50); } else { if(isProgressing) { @@ -234,14 +231,21 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } } } - + @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.isProgressing = data.getBoolean("isProgressing"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeBoolean(isProgressing); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + isProgressing = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 4fbfdfab9..53c90a9c0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -21,6 +21,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -101,19 +102,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp this.speed = 1; } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); - } - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); + this.networkPackNT(150); } else { float maxSpeed = 30F; @@ -156,21 +145,39 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); } - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); + + buf.writeBoolean(isProgressing); + + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); + + water.serialize(buf); + steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + + isProgressing = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); + + water.deserialize(buf); + steam.deserialize(buf); } private int getWaterRequired() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 0e1efc401..5febdcbe3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -29,6 +29,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -152,17 +153,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements process(); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); - } - - this.networkPack(data, 150); + this.networkPackNT(150); } else { if(isProgressing && this.worldObj.getTotalWorldTime() % 3 == 0) { @@ -197,26 +188,36 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeInt(maxProgress); + buf.writeBoolean(isProgressing); + + for(int i = 0; i < tanks.length; i++) + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + maxProgress = buf.readInt(); + isProgressing = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) + tanks[i].deserialize(buf); + } @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.maxProgress = nbt.getInteger("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); - } - } - @Override public void onChunkUnload() { @@ -501,7 +502,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public long getMaxPower() { - return this.maxPower; + return maxPower; } @Override @@ -588,12 +589,12 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemplant)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(KEY_CONSUMPTION, "+" + (level * 300) + "%")); } if(type == UpgradeType.POWER) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(KEY_DELAY, "+" + (level * 5) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 3ead60a33..96e400b49 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.machine; import java.util.List; -import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.UpgradeManager; @@ -15,6 +14,7 @@ import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -27,6 +27,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -45,6 +46,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public static final int demand = 1000; public short progress; public short duration = 600; + public boolean isOn; public float angle; public float prevAngle; @@ -53,7 +55,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public TileEntityMachineCrystallizer() { super(8); - tank = new FluidTank(Fluids.ACID, 8000); + tank = new FluidTank(Fluids.PEROXIDE, 8000); } @Override @@ -66,6 +68,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(!worldObj.isRemote) { + this.isOn = false; + this.updateConnections(); power = Library.chargeTEFromItems(slots, 1, power, maxPower); @@ -80,6 +84,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme progress++; power -= getPowerRequired(); + isOn = true; if(progress > getDuration()) { progress = 0; @@ -93,29 +98,28 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("progress", progress); - data.setShort("duration", getDuration()); - data.setLong("power", power); - tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } else { prevAngle = angle; - if(progress > 0) { + if(isOn) { angle += 5F * this.getCycleCount(); if(angle >= 360) { angle -= 360; prevAngle -= 360; } + + if(worldObj.rand.nextInt(20) == 0 && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 6, zCoord + 0.5) < 50) { + worldObj.spawnParticle("cloud", xCoord + worldObj.rand.nextDouble(), yCoord + 6.5D, zCoord + worldObj.rand.nextDouble(), 0.0, 0.1, 0.0); + } } } ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 6.875, zCoord + 1).offset(dir.offsetX * 0.75 + rot.offsetX * 1.25, 0, dir.offsetZ * 0.75 + rot.offsetZ * 1.25)); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 6, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5)); for(EntityPlayer player : players) { HbmPlayerProps props = HbmPlayerProps.getData(player); @@ -133,34 +137,36 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme protected DirPos[] getConPos() { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - - return new DirPos[] { - new DirPos(xCoord + 2, yCoord + 5, zCoord, Library.POS_X), - new DirPos(xCoord - 2, yCoord + 5, zCoord, Library.NEG_X) - }; - } - - if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - - return new DirPos[] { - new DirPos(xCoord, yCoord + 5, zCoord + 2, Library.POS_Z), - new DirPos(xCoord, yCoord + 5, zCoord - 2, Library.NEG_Z) - }; - } - - return new DirPos[0]; + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord + 2, yCoord, zCoord - 1, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord + 1, Library.NEG_X), + new DirPos(xCoord - 2, yCoord, zCoord - 1, Library.NEG_X), + new DirPos(xCoord + 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord - 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z) + }; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getShort("progress"); - this.duration = data.getShort("duration"); - this.tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(progress); + buf.writeShort(getDuration()); + buf.writeLong(power); + buf.writeBoolean(isOn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readShort(); + duration = buf.readShort(); + power = buf.readLong(); + isOn = buf.readBoolean(); + tank.deserialize(buf); } private void processItem() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 87660cb63..effd7bf2e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -4,18 +4,10 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityBlackHole; -import com.hbm.entity.logic.EntityBalefire; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionThermo; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineCyclotron; @@ -24,8 +16,6 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; @@ -38,9 +28,9 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -52,30 +42,26 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000000; - public int consumption = 1_000_000; - - public boolean isOn; - - private int age; - private int countdown; + public static int consumption = 1_000_000; private byte plugs; public int progress; public static final int duration = 690; - public FluidTank coolant; - public FluidTank amat; + public FluidTank[] tanks; public TileEntityMachineCyclotron() { - super(16); - - coolant = new FluidTank(Fluids.COOLANT, 32000, 0); - amat = new FluidTank(Fluids.AMAT, 8000, 1); + super(12); + + this.tanks = new FluidTank[3]; + this.tanks[0] = new FluidTank(Fluids.WATER, 32000); + this.tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 32000); + this.tanks[2] = new FluidTank(Fluids.AMAT, 8000); } @Override @@ -90,72 +76,22 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.updateConnections(); - age++; - if(age >= 20) - { - age = 0; - } + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); - if(age == 9 || age == 19) - fillFluidInit(amat.getTankType()); - - this.power = Library.chargeTEFromItems(slots, 13, power, maxPower); - this.coolant.loadTank(11, 12, slots); - this.amat.unloadTank(9, 10, slots); + UpgradeManager.eval(slots, 10, 11); - if(isOn) { + if(canProcess()) { + progress += getSpeed(); + power -= getConsumption(); - int defConsumption = consumption - 100_000 * getConsumption(); + int convert = getCoolantConsumption(); + tanks[0].setFill(tanks[0].getFill() - convert); + tanks[1].setFill(tanks[1].getFill() + convert); - if(canProcess() && power >= defConsumption) { - - progress += this.getSpeed(); - power -= defConsumption; - - if(progress >= duration) { - process(); - progress = 0; - this.markDirty(); - } - - int safety = this.getSafety(); - - if(coolant.getFill() > 0) { - - countdown = 0; - - if(worldObj.rand.nextInt(3 * safety) == 0) - coolant.setFill(coolant.getFill() - 1); - - } else if(worldObj.rand.nextInt(safety) == 0) { - - countdown++; - - int chance = 7 - Math.min((int) Math.ceil(countdown / 200D), 6); - - if(worldObj.rand.nextInt(chance) == 0) - ExplosionLarge.spawnTracers(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 1); - - if(countdown > 1000) { - ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25); - ExplosionThermo.scorchLight(worldObj, xCoord, yCoord, zCoord, 7); - - if(countdown % 4 == 0) - ExplosionLarge.spawnBurst(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 18, 1); - - } else if(countdown > 600) { - ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 10); - } - - if(countdown == 1140) - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:block.shutdown", 10.0F, 1.0F); - - if(countdown > 1200) - explode(); - } - - } else { + if(progress >= duration) { + process(); progress = 0; + this.markDirty(); } } else { @@ -163,29 +99,46 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isOn", isOn); - data.setByte("plugs", plugs); - this.networkPack(data, 25); - - coolant.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - amat.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.networkPackNT(25); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeByte(plugs); + + for(int i = 0; i < 3; i++) + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + plugs = buf.readByte(); + + for(int i = 0; i < 3; i++) + tanks[i].deserialize(buf); + } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.trySubscribe(coolant.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } private void sendFluid() { - for(DirPos pos : getConPos()) { - this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(int i = 1; i < 3; i++) { + if(tanks[i].getFill() > 0) { + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } } } @@ -202,62 +155,19 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.plugs = data.getByte("plugs"); - } - - public void handleButtonPacket(int value, int meta) { - - this.isOn = !this.isOn; - } - - private void explode() { - - ExplosionLarge.explodeFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25, true, false, true); - - int rand = worldObj.rand.nextInt(10); - - if(rand < 2) { - - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)(BombConfig.fatmanRadius * 1.5), xCoord + 0.5, yCoord + 1.5, zCoord + 0.5)); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250)); - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - } else if(rand < 4) { - - EntityBalefire bf = new EntityBalefire(worldObj); - bf.posX = xCoord + 0.5; - bf.posY = yCoord + 1.5; - bf.posZ = zCoord + 0.5; - bf.destructionRange = (int)(BombConfig.fatmanRadius * 1.5); - worldObj.spawnEntityInWorld(bf); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250)); - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - } else if(rand < 5) { - - EntityBlackHole bl = new EntityBlackHole(worldObj, 1.5F + worldObj.rand.nextFloat()); - bl.posX = xCoord + 0.5F; - bl.posY = yCoord + 1.5F; - bl.posZ = zCoord + 0.5F; - worldObj.spawnEntityInWorld(bl); - } - } - public boolean canProcess() { + if(power < getConsumption()) + return false; + + int convert = getCoolantConsumption(); + + if(tanks[0].getFill() < convert) + return false; + + if(tanks[1].getFill() + convert > tanks[1].getMaxFill()) + return false; + for(int i = 0; i < 3; i++) { Object[] res = CyclotronRecipes.getOutput(slots[i + 3], slots[i]); @@ -300,7 +210,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.decrStackSize(i + 3, 1); slots[i + 6] = out; - this.amat.setFill(this.amat.getFill() + (Integer)res[1]); + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); continue; } @@ -311,72 +221,28 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.decrStackSize(i + 3, 1); slots[i + 6].stackSize++; - this.amat.setFill(this.amat.getFill() + (Integer)res[1]); + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); } } - if(this.amat.getFill() > this.amat.getMaxFill()) - this.amat.setFill(this.amat.getMaxFill()); + if(this.tanks[2].getFill() > this.tanks[2].getMaxFill()) + this.tanks[2].setFill(this.tanks[2].getMaxFill()); } public int getSpeed() { - - int speed = 1; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_speed_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_speed_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_speed_3) - speed += 3; - } - } - - return Math.min(speed, 4); + return Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) + 1; } public int getConsumption() { + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int speed = 0; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_power_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_power_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_power_3) - speed += 3; - } - } - - return Math.min(speed, 3); + return consumption - 100_000 * efficiency; } - public int getSafety() { - - int speed = 1; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_effect_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_effect_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_effect_3) - speed += 3; - } - } - - return Math.min(speed, 4); + public int getCoolantConsumption() { + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + //half a small tower's worth + return 500 / (efficiency + 1) * getSpeed(); } public long getPowerScaled(long i) { @@ -386,56 +252,6 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public int getProgressScaled(int i) { return (progress * i) / duration; } - - @Override - public void setFillForSync(int fill, int index) { - - if(index == 0) - coolant.setFill(fill); - else if(index == 1) - amat.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == Fluids.COOLANT) - coolant.setFill(fill); - else if(type == Fluids.AMAT) - amat.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index == 0) - coolant.setTankType(type); - else if(index == 1) - amat.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == Fluids.COOLANT) - return coolant.getFill(); - else if(type == Fluids.AMAT) - return amat.getFill(); - - return 0; - } - - @Override public void fillFluidInit(FluidType type) { } - @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { } - @Override public boolean getTact() { return false; } - @Override public List getFluidList(FluidType type) { return null; } - @Override public void clearFluidList(FluidType type) { } - - @Override - public int getMaxFluidFill(FluidType type) { - - if(type == Fluids.COOLANT) - return coolant.getMaxFill(); - - return 0; - } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -452,11 +268,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - coolant.readFromNBT(nbt, "coolant"); - amat.readFromNBT(nbt, "amat"); + for(int i = 0; i < 3; i++) + tanks[i].readFromNBT(nbt, "t" + i); - this.isOn = nbt.getBoolean("isOn"); - this.countdown = nbt.getInteger("countdown"); this.progress = nbt.getInteger("progress"); this.power = nbt.getLong("power"); this.plugs = nbt.getByte("plugs"); @@ -466,11 +280,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - coolant.writeToNBT(nbt, "coolant"); - amat.writeToNBT(nbt, "amat"); + for(int i = 0; i < 3; i++) + tanks[i].writeToNBT(nbt, "t" + i); - nbt.setBoolean("isOn", isOn); - nbt.setInteger("countdown", countdown); nbt.setInteger("progress", progress); nbt.setLong("power", power); nbt.setByte("plugs", plugs); @@ -522,17 +334,17 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { amat }; + return new FluidTank[] { tanks[1], tanks[2] }; } @Override public FluidTank[] getReceivingTanks() { - return new FluidTank[] { coolant }; + return new FluidTank[] { tanks[0] }; } @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { amat, coolant }; + return tanks; } @Override @@ -598,13 +410,13 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_cyclotron)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.POWER) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 10) + "%")); } if(type == UpgradeType.EFFECT) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_OVERHEAT_CHANCE, "-" + (100 - 100 / (level + 1)) + "%")); } } @@ -618,7 +430,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public void provideExtraInfo(NBTTagCompound data) { - data.setBoolean(CompatEnergyControl.B_ACTIVE, this.isOn && this.progress > 0); - data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? consumption - 100_000 * getConsumption() : 0); + data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); + data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 4636da4e2..26c2630f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -4,6 +4,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineElectricFurnace; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerElectricFurnace; import com.hbm.inventory.gui.GUIMachineElectricFurnace; @@ -18,6 +20,7 @@ import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -195,6 +198,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl progress++; power -= consumption; + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); if(this.progress >= maxProgress) { this.progress = 0; @@ -215,12 +220,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl markDirty = true; MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("MaxProgress", this.maxProgress); - data.setInteger("progress", this.progress); - this.networkPack(data, 50); + + this.networkPackNT(50); if(markDirty) { @@ -228,22 +229,29 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(maxProgress); + buf.writeInt(progress); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + maxProgress = buf.readInt(); + progress = buf.readInt(); + } + private void updateConnections() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxProgress = nbt.getInteger("MaxProgress"); - this.progress = nbt.getInteger("progress"); - - } - @Override public void setPower(long i) { power = i; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 2dbbcb63b..2f9414039 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -22,6 +22,7 @@ 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.items.special.ItemBedrockOreBase; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; @@ -40,6 +41,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.item.EntityItem; @@ -150,18 +152,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.targetDepth = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("d", enableDrill); - data.setBoolean("c", enableCrusher); - data.setBoolean("w", enableWalling); - data.setBoolean("v", enableVeinMiner); - 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); + this.networkPackNT(150); } else { @@ -214,19 +205,34 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(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.operational = nbt.getBoolean("o"); - this.targetDepth = nbt.getInteger("t"); - this.chuteTimer = nbt.getInteger("g"); - this.power = nbt.getLong("p"); - this.tank.readFromNBT(nbt, "tank"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(enableDrill); + buf.writeBoolean(enableCrusher); + buf.writeBoolean(enableWalling); + buf.writeBoolean(enableVeinMiner); + buf.writeBoolean(enableSilkTouch); + buf.writeBoolean(operational); + buf.writeInt(targetDepth); + buf.writeInt(chuteTimer); + buf.writeLong(power); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + enableDrill = buf.readBoolean(); + enableCrusher = buf.readBoolean(); + enableWalling = buf.readBoolean(); + enableVeinMiner = buf.readBoolean(); + enableSilkTouch = buf.readBoolean(); + operational = buf.readBoolean(); + targetDepth = buf.readInt(); + chuteTimer = buf.readInt(); + power = buf.readLong(); + tank.deserialize(buf); } protected int getY() { @@ -321,6 +327,10 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements ItemStack stack = ore.resource.copy(); List stacks = new ArrayList(); stacks.add(stack); + + if(stack.getItem() == ModItems.bedrock_ore_base) { + ItemBedrockOreBase.setOreAmount(stack, pos.getX(), pos.getZ()); + } ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java index 3b7a8f6fd..23ec51164 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -1,6 +1,9 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; + import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.inventory.gui.GUIFunnel; import com.hbm.tileentity.IGUIProvider; @@ -96,24 +99,37 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot > 8) return false; + if(slots[slot] != null) return true; //if the slot is already occupied, return true because then the same type merging skips the validity check return this.getFrom9(stack) != null || this.getFrom4(stack) != null; } protected InventoryCraftingAuto craftingInventory = new InventoryCraftingAuto(3, 3); + + //hashmap lookups are way faster than iterating over the entire ass crafting list all the fucking time + public static final HashMap from4Cache = new HashMap(); + public static final HashMap from9Cache = new HashMap(); public ItemStack getFrom4(ItemStack ingredient) { + ComparableStack singular = new ComparableStack(ingredient).makeSingular(); + if(from4Cache.containsKey(singular)) return from4Cache.get(singular); this.craftingInventory.clear(); this.craftingInventory.setInventorySlotContents(0, ingredient.copy()); this.craftingInventory.setInventorySlotContents(1, ingredient.copy()); this.craftingInventory.setInventorySlotContents(3, ingredient.copy()); this.craftingInventory.setInventorySlotContents(4, ingredient.copy()); - return getMatch(this.craftingInventory); + ItemStack match = getMatch(this.craftingInventory); + from4Cache.put(singular, match != null ? match.copy() : null); + return match; } public ItemStack getFrom9(ItemStack ingredient) { + ComparableStack singular = new ComparableStack(ingredient).makeSingular(); + if(from9Cache.containsKey(singular)) return from9Cache.get(singular); this.craftingInventory.clear(); for(int i = 0; i < 9; i++) this.craftingInventory.setInventorySlotContents(i, ingredient.copy()); - return getMatch(this.craftingInventory); + ItemStack match = getMatch(this.craftingInventory); + from9Cache.put(singular, match != null ? match.copy() : null); + return match; } public ItemStack getMatch(InventoryCrafting grid) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index cf0ad2b1c..b3179241c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -15,6 +15,7 @@ import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -25,6 +26,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -168,19 +170,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I return false; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.isProgressing = data.getBoolean("isProgressing"); - this.inputTank.setTankType(PseudoFluidType.types.get(data.getString("inputType"))); - this.outputTank.setTankType(PseudoFluidType.types.get(data.getString("outputType"))); - this.inputTank.setFill(data.getInteger("inputFill")); - this.outputTank.setFill(data.getInteger("outputFill")); - this.tank.readFromNBT(data, "t"); - } - @Override public void updateEntity() { @@ -234,21 +223,42 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isProgressing", isProgressing); - data.setInteger("inputFill", inputTank.getFill()); - data.setInteger("outputFill", outputTank.getFill()); - data.setString("inputType", inputTank.getTankType().name); - data.setString("outputType", outputTank.getTankType().name); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeBoolean(isProgressing); + //pseudofluids can be refactored another day + buf.writeInt(inputTank.getFill()); + buf.writeInt(outputTank.getFill()); + BufferUtil.writeString(buf, inputTank.getTankType().name); //cough cough + BufferUtil.writeString(buf, outputTank.getTankType().name); + + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + isProgressing = buf.readBoolean(); + + inputTank.setFill(buf.readInt()); + outputTank.setFill(buf.readInt()); + inputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); + outputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); + + tank.deserialize(buf); + } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 508e4d3a0..81c97679d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -44,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 100000000; @@ -365,7 +365,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @@ -374,6 +374,29 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "setType", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return getFluid(context, args); + case ("getType"): + return getType(context, args); + case ("setType"): + return setType(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 018855a6b..6f97159d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -266,7 +266,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(stack != null && stack.getItem() != null) { if(hasCrystallizer()) { - CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE); if(result == null) result = CrystallizerRecipes.getOutput(stack, Fluids.SULFURIC_ACID); if(result != null) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 34e2b1498..e9751c820 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -25,6 +25,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -121,7 +122,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB for(int i = 0; i < 3; i++) { tanks[i].writeToNBT(data, i + ""); } - this.networkPack(data, 50); + this.networkPackNT(50); } else { @@ -137,6 +138,30 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(processTime); + buf.writeInt(progress); + buf.writeInt(recipeIndex); + buf.writeBoolean(wasOn); + + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + processTime = buf.readInt(); + progress = buf.readInt(); + recipeIndex = buf.readInt(); + wasOn = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); + } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java new file mode 100644 index 000000000..dccefcab4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -0,0 +1,205 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.container.ContainerOreSlopper; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIOreSlopper; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +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.world.World; + +public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IGUIProvider { + + public long power; + public static final long maxPower = 1_000_000; + + public static final int waterUsedBase = 1_000; + public int waterUsed = waterUsedBase; + public static final long consumptionBase = 200; + public long consumption = consumptionBase; + + public float progress; + public boolean processing; + + public SlopperAnimation animation = SlopperAnimation.LOWERING; + public float slider; + public float prevSlider; + public float bucket; + public float prevBucket; + public int delay; + + public static FluidTank[] tanks; + public double[] ores = new double[BedrockOreType.values().length]; + + public TileEntityMachineOreSlopper() { + super(11); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.WATER, 16_000); + tanks[1] = new FluidTank(Fluids.SLOP, 16_000); + } + + @Override + public String getName() { + return "container.machineOreSlopper"; + } + + public static enum SlopperAnimation { + LOWERING, LIFTING, MOVE_SHREDDER, DUMPING, MOVE_BUCKET + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + tanks[0].setType(1, slots); + FluidType conversion = this.getFluidOutput(tanks[0].getTankType()); + if(conversion != null) tanks[1].setTankType(conversion); + + this.processing = false; + + if(canSlop()) { + this.power -= this.consumption; + this.progress += 1F/200F; + this.processing = true; + boolean markDirty = false; + + while(progress >= 1F && canSlop()) { + progress -= 1F; + + for(BedrockOreType type : BedrockOreType.values()) { + ores[type.ordinal()] += ItemBedrockOreBase.getOreAmount(slots[2], type); + } + + this.decrStackSize(2, 1); + this.tanks[0].setFill(this.tanks[0].getFill() - waterUsed); + this.tanks[1].setFill(this.tanks[1].getFill() + waterUsed); + markDirty = true; + } + + if(markDirty) this.markDirty(); + + } else { + this.progress = 0; + } + + for(BedrockOreType type : BedrockOreType.values()) { + ItemStack output = ItemBedrockOreNew.make(BedrockOreGrade.BASE, type); + outer: while(ores[type.ordinal()] >= 1) { + for(int i = 3; i <= 8; i++) if(slots[i] != null && slots[i].getItem() == output.getItem() && slots[i].getItemDamage() == output.getItemDamage() && slots[i].stackSize < output.getMaxStackSize()) { + slots[i].stackSize++; ores[type.ordinal()] -= 1F; continue outer; + } + for(int i = 3; i <= 8; i++) if(slots[i] == null) { + slots[i] = output; ores[type.ordinal()] -= 1F; continue outer; + } + } + } + + } else { + + this.prevSlider = this.slider; + this.prevBucket = this.bucket; + + if(this.processing) { + + if(delay > 0) { + delay--; + return; + } + + switch(animation) { + case LOWERING: + this.bucket += 1F/40F; + if(bucket >= 1F) { + bucket = 1F; + animation = SlopperAnimation.LIFTING; + delay = 20; + } + break; + case LIFTING: + this.bucket -= 1F/40F; + if(bucket <= 0) { + bucket = 0F; + animation = SlopperAnimation.MOVE_SHREDDER; + delay = 10; + } + break; + case MOVE_SHREDDER: + this.slider += 1/60F; + if(slider >= 1F) { + slider = 1F; + animation = SlopperAnimation.DUMPING; + delay = 60; + } + break; + case DUMPING: + animation = SlopperAnimation.MOVE_BUCKET; + break; + case MOVE_BUCKET: + this.slider -= 1/60F; + if(slider <= 0F) { + animation = SlopperAnimation.LOWERING; + delay = 10; + } + break; + } + } + } + } + + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeFloat(progress); + buf.writeBoolean(processing); + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readFloat(); + this.processing = buf.readBoolean(); + } + + public boolean canSlop() { + if(this.getFluidOutput(tanks[0].getTankType()) == null) return false; + if(tanks[0].getFill() < waterUsed) return false; + if(tanks[1].getFill() + waterUsed > tanks[1].getMaxFill()) return false; + if(power < consumption) return false; + + return slots[2] != null && slots[2].getItem() == ModItems.bedrock_ore_base; + } + + public FluidType getFluidOutput(FluidType input) { + if(input == Fluids.WATER) return Fluids.SLOP; + return null; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerOreSlopper(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIOreSlopper(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index e4f255b8a..99e87371a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -8,6 +8,7 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.extprop.HbmLivingProps; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; @@ -37,11 +38,16 @@ import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -60,7 +66,8 @@ import net.minecraft.world.WorldServer; * Now with SmЯt™ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver, SimpleComponent, CompatHandler.OCComponent { public boolean scanMissiles = true; public boolean scanShells = true; @@ -592,4 +599,127 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return null; }); } + + //OC compat! + + @Override + public String getComponentName() { + return "ntm_radar"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getSettings(Context context, Arguments args) { + return new Object[] {scanMissiles, scanShells, scanPlayers, smartMode}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getRange(Context context, Arguments args) { + return new Object[] {this.getRange()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setSettings(Context context, Arguments args) { + this.scanMissiles = args.checkBoolean(0); + this.scanShells = args.checkBoolean(1); + this.scanPlayers = args.checkBoolean(2); + this.smartMode = args.checkBoolean(3); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isJammed(Context context, Arguments args) { + return new Object[] {this.jammed}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAmount(Context context, Arguments args) { + return new Object[] {entries.size()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isIndexPlayer(Context context, Arguments args) { + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); + return new Object[] {e.blipLevel == IRadarDetectableNT.PLAYER}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getIndexType(Context context, Arguments args) { + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); + return new Object[] {e.blipLevel}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEntityAtIndex(Context context, Arguments args) { + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); + int type = e.blipLevel; + if(e.blipLevel == IRadarDetectableNT.PLAYER) { + return new Object[]{true, e.posX, e.posY, e.posZ, type, e.unlocalizedName}; + } + return new Object[]{false, e.posX, e.posY, e.posZ, type}; + } + + public String[] methods() { + return new String[] { + "getSettings", + "getRange", + "setSettings", + "getEnergyInfo", + "isJammed", + "getAmount", + "isIndexPlayer", + "getIndexType", + "getEntityAtIndex" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getSettings"): + return getSettings(context, args); + case ("getRange"): + return getRange(context, args); + case ("setSettings"): + return setSettings(context, args); + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("isJammed"): + return isJammed(context, args); + case ("getAmount"): + return getAmount(context, args); + case ("isIndexPlayer"): + return isIndexPlayer(context, args); + case ("getIndexType"): + return getIndexType(context, args); + case ("getEntityAtIndex"): + return getEntityAtIndex(context, args); + } + throw new NoSuchMethodException(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 4c42a1ce5..c216f9da9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineReactorBreeding; import com.hbm.inventory.gui.GUIMachineReactorBreeding; import com.hbm.inventory.recipes.BreederRecipes; @@ -30,7 +31,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public int flux; public float progress; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 0dd93775e..3d0e34caf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -255,6 +255,28 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp this.tank.readFromNBT(nbt, "t"); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + nbt.setInteger("progress", progress); + nbt.setInteger("processTime", processTime); + tank.writeToNBT(nbt, "t"); + } @Override public long getPower() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 9221bcb5d..a5e337448 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -39,7 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { private ItemStack slots[]; @@ -347,7 +347,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 28895add2..71c7266ae 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.HashMap; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; @@ -41,7 +42,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 1000000L; @@ -70,7 +71,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement fuelMaxCons.put(Fluids.GAS, 50D); // natgas doesn't burn well so it burns faster to compensate fuelMaxCons.put(Fluids.SYNGAS, 10D); // syngas just fucks fuelMaxCons.put(Fluids.OXYHYDROGEN, 100D); // oxyhydrogen is terrible so it needs to burn a ton for the bare minimum - fuelMaxCons.put(Fluids.REFORMGAS, 2.5D); // halved because it's too powerful + fuelMaxCons.put(Fluids.REFORMGAS, 5D); // fuck it we ball // default to 5 if not in list } @@ -99,6 +100,19 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } } + if(autoMode) { //power production depending on power requirement + + //scales the slider proportionally to the power gauge + int powerSliderTarget = 60 - (int) (60 * power / maxPower); + + if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position + powerSliderPos++; + } + else if(powerSliderTarget < powerSliderPos) { + powerSliderPos--; + } + } + switch(state) { //what to do when turbine offline, starting up and online case 0: shutdown(); @@ -115,19 +129,6 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement break; } - if(autoMode) { //power production depending on power requirement - - //scales the slider proportionally to the power gauge - int powerSliderTarget = 60 - (int) (60 * power / maxPower); - - if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position - powerSliderPos++; - } - else if(powerSliderTarget < powerSliderPos) { - powerSliderPos--; - } - } - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -605,14 +606,14 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Optional.Method(modid = "OpenComputers") public Object[] setThrottle(Context context, Arguments args) { throttle = args.checkInteger(0); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setAuto(Context context, Arguments args) { autoMode = args.checkBoolean(0); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @@ -620,20 +621,19 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement public Object[] start(Context context, Arguments args) { stopIfNotReady(); startup(); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] stop(Context context, Arguments args) { shutdown(); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {throttle, state, tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), @@ -641,6 +641,64 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement tanks[3].getFill(), tanks[3].getMaxFill()}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "getPower", + "getThrottle", + "getState", + "getAuto", + "setThrottle", + "setAuto", + "start", + "stop", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill() + }; + case ("getType"): + return new Object[] {tanks[0].getTankType().getName()}; + case ("getPower"): + return new Object[] {power}; + case ("getThrottle"): + return new Object[] {throttle}; + case ("getState"): + return new Object[] {state}; + case ("getAuto"): + return new Object[] {autoMode}; + case ("setThrottle"): + throttle = args.checkInteger(0); + return new Object[] {}; + case ("setAuto"): + autoMode = args.checkBoolean(0); + return new Object[] {}; + case ("start"): + stopIfNotReady(); + startup(); + return new Object[] {}; + case ("stop"): + shutdown(); + return new Object[] {}; + case ("getInfo"): + return new Object[] {throttle, state, + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill()}; + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbineGas(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 72306abf9..46de4e4e1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -24,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -126,15 +127,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.power += this.powerGen; if(this.power > this.maxPower) this.power = this.maxPower; - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("burnTime", burnTime); - data.setInteger("powerGen", powerGen); - data.setInteger("maxBurnTime", maxBurnTime); - data.setBoolean("isOn", isOn); - data.setBoolean("liquidBurn", liquidBurn); - tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } else { if(powerGen > 0) { @@ -145,6 +138,32 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(burnTime); + buf.writeInt(powerGen); + buf.writeInt(maxBurnTime); + buf.writeBoolean(isOn); + buf.writeBoolean(liquidBurn); + + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + burnTime = buf.readInt(); + powerGen = buf.readInt(); + maxBurnTime = buf.readInt(); + isOn = buf.readBoolean(); + liquidBurn = buf.readBoolean(); + + tank.deserialize(buf); + } + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -153,20 +172,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()) }; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.powerGen = nbt.getInteger("powerGen"); - this.burnTime = nbt.getInteger("burnTime"); - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.isOn = nbt.getBoolean("isOn"); - this.liquidBurn = nbt.getBoolean("liquidBurn"); - tank.readFromNBT(nbt, "t"); - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 781adaa14..b00c2e1d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.inventory.gui.GUIMicrowave; import com.hbm.lib.Library; @@ -17,16 +18,18 @@ import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent { +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public long power; public static final long maxPower = 50000; @@ -131,11 +134,9 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg ItemStack stack = FurnaceRecipes.smelting().getSmeltingResult(slots[0]); - if(slots[1] == null) - return true; - - if(!stack.isItemEqual(slots[1])) - return false; + if(!(slots[0].getItem() instanceof ItemFood) && !(stack.getItem() instanceof ItemFood)) return false; + if(slots[1] == null) return true; + if(!stack.isItemEqual(slots[1])) return false; return stack.stackSize + slots[1].stackSize <= stack.getMaxStackSize(); } @@ -229,6 +230,19 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg return new Object[] {"This is a testing device for everything OC."}; } + @Callback(direct = true, getter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableget(Context context, Arguments args) { + return new Object[] {speed, "test of the `getter` callback function"}; + } + + @Callback(direct = true, setter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableset(Context context, Arguments args) { + speed = MathHelper.clamp_int(args.checkInteger(0), 0, 5); + return new Object[] {"test of the `setter` callback function"}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index ffebeb03c..ac2e162c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerPWR; import com.hbm.inventory.fluid.Fluids; @@ -43,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver { +public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver, CompatHandler.OCComponent { public FluidTank[] tanks; public int coreHeat; @@ -53,8 +54,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public static final int hullHeatCapacityBase = 10_000_000; public double flux; - public int rodLevel = 100; - public int rodTarget = 100; + public double rodLevel = 100; + public double rodTarget = 100; public int typeLoaded; public int amountLoaded; @@ -202,7 +203,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.decrStackSize(0, 1); this.markChanged(); } - + double diff = this.rodLevel - this.rodTarget; + if(diff < 1 && diff > -1) this.rodLevel = this.rodTarget; if(this.rodTarget > this.rodLevel) this.rodLevel++; if(this.rodTarget < this.rodLevel) this.rodLevel--; @@ -280,8 +282,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG data.setDouble("progress", progress); data.setInteger("typeLoaded", typeLoaded); data.setInteger("amountLoaded", amountLoaded); - data.setInteger("rodLevel", rodLevel); - data.setInteger("rodTarget", rodTarget); + data.setDouble("rodLevel", rodLevel); + data.setDouble("rodTarget", rodTarget); data.setInteger("coreHeatCapacity", coreHeatCapacity); this.networkPack(data, 150); } else { @@ -395,7 +397,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG progress = nbt.getDouble("progress"); typeLoaded = nbt.getInteger("typeLoaded"); amountLoaded = nbt.getInteger("amountLoaded"); - rodLevel = nbt.getInteger("rodLevel"); + rodLevel = nbt.getDouble("rodLevel"); rodTarget = nbt.getInteger("rodTarget"); coreHeatCapacity = nbt.getInteger("coreHeatCapacity"); } @@ -454,8 +456,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.coreHeat = nbt.getInteger("coreHeat"); this.hullHeat = nbt.getInteger("hullHeat"); this.flux = nbt.getDouble("flux"); - this.rodLevel = nbt.getInteger("rodLevel"); - this.rodTarget = nbt.getInteger("rodTarget"); + this.rodLevel = nbt.getDouble("rodLevel"); + this.rodTarget = nbt.getDouble("rodTarget"); this.typeLoaded = nbt.getInteger("typeLoaded"); this.amountLoaded = nbt.getInteger("amountLoaded"); this.progress = nbt.getDouble("progress"); @@ -499,8 +501,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG nbt.setInteger("coreHeat", coreHeat); nbt.setInteger("hullHeat", hullHeat); nbt.setDouble("flux", flux); - nbt.setInteger("rodLevel", rodLevel); - nbt.setInteger("rodTarget", rodTarget); + nbt.setDouble("rodLevel", rodLevel); + nbt.setDouble("rodTarget", rodTarget); nbt.setInteger("typeLoaded", typeLoaded); nbt.setInteger("amountLoaded", amountLoaded); nbt.setDouble("progress", progress); @@ -588,7 +590,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { - rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100); + rodTarget = MathHelper.clamp_double(args.checkDouble(0), 0, 100); this.markChanged(); return new Object[] {true}; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 7169ce7f4..51b1229fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerReactorControl; import com.hbm.inventory.gui.GUIReactorControl; @@ -29,7 +30,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { +public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public TileEntityReactorControl() { super(1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index fb5b31782..6eb557ec7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -41,7 +42,7 @@ import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) //TODO: fix reactor control; -public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { @SideOnly(Side.CLIENT) public double lastLevel; @@ -430,6 +431,32 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return new Object[] {heat, level, targetLevel, totalFlux}; } + public String[] methods() { + return new String[] { + "getTemp", + "getLevel", + "getTargetLevel", + "getFlux", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getTemp"): + return getTemp(context, args); + case ("getLevel"): + return getLevel(context, args); + case ("getTargetLevel"): + return getTargetLevel(context, args); + case ("getFlux"): + return getFlux(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 91286049a..f753be765 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -10,6 +10,7 @@ import com.hbm.config.MobConfig; import com.hbm.entity.projectile.EntityZirnoxDebris; import com.hbm.entity.projectile.EntityZirnoxDebris.DebrisType; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.handler.CompatHandler; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; @@ -52,7 +53,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public int heat; public static final int maxHeat = 100000; @@ -600,6 +601,41 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return new Object[] {}; } + public String[] methods() { + return new String[] { + "getTemp", + "getPressure", + "getWater", + "getSteam", + "getCarbonDioxide", + "isActive", + "getInfo", + "setActive" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getTemp"): + return getTemp(context, args); + case ("getPressure"): + return getPressure(context, args); + case ("getWater"): + return getWater(context, args); + case ("getSteam"): + return getSteam(context, args); + case ("getCarbonDioxide"): + return getCarbonDioxide(context, args); + case ("isActive"): + return isActive(context, args); + case ("getInfo"): + return getInfo(context, args); + case ("setActive"): + return setActive(context, args); + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerReactorZirnox(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index ffaf2871f..21acbc542 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -15,6 +15,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.InventoryUtil; import com.hbm.util.WeightedRandomObject; @@ -23,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -53,7 +55,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce public TileEntitySILEX() { super(11); - tank = new FluidTank(Fluids.ACID, 16000, 0); + tank = new FluidTank(Fluids.PEROXIDE, 16000, 0); } @Override @@ -84,38 +86,42 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(currentFill <= 0) { current = null; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("fill", currentFill); - data.setInteger("progress", progress); - data.setString("mode", mode.toString()); - - if(this.current != null) { - data.setInteger("item", Item.getIdFromItem(this.current.item)); - data.setInteger("meta", this.current.meta); - } - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - this.networkPack(data, 50); + + this.networkPackNT(50); this.mode = EnumWavelengths.NULL; } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.currentFill = nbt.getInteger("fill"); - this.progress = nbt.getInteger("progress"); - this.mode = EnumWavelengths.valueOf(nbt.getString("mode")); - - if(this.currentFill > 0) { - this.current = new ComparableStack(Item.getItemById(nbt.getInteger("item")), 1, nbt.getInteger("meta")); - - } else { - this.current = null; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(currentFill); + buf.writeInt(progress); + BufferUtil.writeString(buf, mode.toString()); + + tank.serialize(buf); + + if(this.current != null) { + buf.writeInt(Item.getIdFromItem(this.current.item)); + buf.writeInt(this.current.meta); } } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + currentFill = buf.readInt(); + progress = buf.readInt(); + mode = EnumWavelengths.valueOf(BufferUtil.readString(buf)); + + tank.deserialize(buf); + + if(currentFill > 0) { + current = new ComparableStack(Item.getItemById(buf.readInt()), 1, buf.readInt()); + } else + current = null; + } public void handleButtonPacket(int value, int meta) { @@ -188,7 +194,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(loadDelay > 20) loadDelay = 0; - if(loadDelay == 0 && slots[0] != null && tank.getTankType() == Fluids.ACID && (this.current == null || this.current.equals(new ComparableStack(slots[0]).makeSingular()))) { + if(loadDelay == 0 && slots[0] != null && tank.getTankType() == Fluids.PEROXIDE && (this.current == null || this.current.equals(new ComparableStack(slots[0]).makeSingular()))) { SILEXRecipe recipe = SILEXRecipes.getOutput(slots[0]); if(recipe == null) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index d13fea7ff..bcba180ec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -269,9 +269,9 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS public int getFuelRequired() { if(mode == 1) - return 20000 + getDist(); + return Math.min(5000 + getDist(), 128_000); - return 128000; + return 128_000; } public int getDist() { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index a00c4ecfb..9052dd9fc 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -5,19 +5,23 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.FractionRecipes; import com.hbm.lib.Library; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; @@ -64,20 +68,21 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme fractionate(); this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < 3; i++) - tanks[i].writeToNBT(data, "tank" + i); - - INBTPacketReceiver.networkPack(this, data, 50); + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } @Override - public void networkUnpack(NBTTagCompound nbt) { + public void serialize(ByteBuf buf) { for(int i = 0; i < 3; i++) - tanks[i].readFromNBT(nbt, "tank" + i); + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + for(int i = 0; i < 3; i++) + tanks[i].deserialize(buf); } private void updateConnections() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 37e97639f..3f0beb44b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.CompatHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.packet.NBTPacket; @@ -28,7 +29,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent { +public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { public int centerX; public int centerY; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 164ce4192..05e4e4e59 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -33,12 +33,13 @@ 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; import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { +public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public FluidTank feed; public FluidTank steam; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 158f30152..b83799464 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -7,6 +7,7 @@ import java.util.Locale; import java.util.Set; import java.util.LinkedHashMap; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIRBMKConsole; @@ -36,7 +37,7 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { +public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { private int targetX; private int targetY; 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 e06d7ff1a..b89ed8e36 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,9 +11,10 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { +public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent { @SideOnly(Side.CLIENT) public double lastLevel; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index 1afb0cc8d..92ec4377e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -16,6 +16,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -136,9 +137,19 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { - return new Object[] {this.color}; + return new Object[] {this.color.ordinal()}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setColor(Context context, Arguments args) { + int colorI = args.checkInteger(0); + colorI = MathHelper.clamp_int(colorI, 0, 4); + this.color = RBMKColor.values()[colorI]; + return new Object[] {true}; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKControl(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 715eba42f..b457f74d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardReceiver; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -16,11 +17,12 @@ import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent { +public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, CompatHandler.OCComponent { private FluidTank tank; private int lastCooled; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index f74401c8c..440f761d4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.container.ContainerRBMKHeater; @@ -28,12 +29,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent { +public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent, CompatHandler.OCComponent { public FluidTank feed; public FluidTank steam; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 1b74e6e92..c5a152cc3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerRBMKOutgasser; import com.hbm.inventory.fluid.Fluids; @@ -26,9 +27,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent { +public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent, CompatHandler.OCComponent { public FluidTank gas; public double progress; @@ -241,7 +243,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasType(Context context, Arguments args) { - return new Object[] {gas.getTankType().getID()}; + return new Object[] {gas.getTankType().getName()}; } @Callback(direct = true) 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 2b6d0c9b5..d1d23badc 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.container.ContainerRBMKRod; import com.hbm.inventory.gui.GUIRBMKRod; @@ -33,7 +34,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { //amount of "neutron energy" buffered for the next tick to use for the reaction public double fluxFast; 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 bca156c87..dc7e5ec20 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage; import api.hbm.fluid.*; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidContainerRegistry; @@ -22,6 +23,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -43,7 +45,7 @@ import java.util.List; import java.util.Set; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent { public FluidTank tank; public short mode = 0; @@ -108,7 +110,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); this.sendingBrake = true; tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); @@ -121,11 +122,23 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc checkFluidInteraction(); } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("mode", mode); - this.networkPack(data, 50); + this.networkPackNT(50); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(mode); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + mode = buf.readShort(); + tank.deserialize(buf); + } protected DirPos[] getConPos() { return new DirPos[] { @@ -140,8 +153,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { - Set nets = new HashSet(); - Set consumers = new HashSet(); + Set nets = new HashSet<>(); + Set consumers = new HashSet<>(); FluidType type = tank.getTankType(); int pressure = tank.getPressure(); @@ -166,13 +179,13 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc consumers.remove(that); if(fill > 0 && send) { - List con = new ArrayList(); + List con = new ArrayList<>(); con.addAll(consumers); con.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()); if(PipeNet.trackingInstances == null) { - PipeNet.trackingInstances = new ArrayList(); + PipeNet.trackingInstances = new ArrayList<>(); } PipeNet.trackingInstances.clear(); @@ -265,12 +278,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - mode = data.getShort("mode"); - } @Override public void setFillForSync(int fill, int index) { @@ -421,4 +428,24 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } + + @Override + public String[] methods() { + return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "getFluidStored": + return getFluidStored(context, args); + case "getMaxStored": + return getMaxStored(context, args); + case "getTypeStored": + return getTypeStored(context, args); + case "getInfo": + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 84e40e47b..64ea7037d 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -9,6 +9,7 @@ import api.hbm.energymk2.Nodespace.PowerNode; import api.hbm.tile.IInfoProviderEC; import com.hbm.blocks.machine.MachineBattery; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; import com.hbm.lib.Library; @@ -34,7 +35,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long[] log = new long[20]; public long delta = 0; @@ -184,7 +185,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); if(mode == mode_output || mode == mode_buffer) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN); } else { if(node != null && node.hasValidNet()) node.net.removeProvider(this); } 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 73e3e47e2..f963cb359 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -5,6 +5,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -34,6 +35,7 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -54,7 +56,7 @@ import java.util.List; import java.util.Random; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, OCComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; public short mode = 0; @@ -161,11 +163,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.unloadTank(4, 5, slots); - NBTTagCompound data = new NBTTagCompound(); - data.setShort("mode", mode); - data.setBoolean("hasExploded", hasExploded); - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 150); + this.networkPackNT(150); } ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); @@ -177,6 +175,22 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements props.isOnLadder = true; } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(mode); + buf.writeBoolean(hasExploded); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + mode = buf.readShort(); + hasExploded = buf.readBoolean(); + tank.deserialize(buf); + } /** called when the tank breaks due to hazardous materials or external force, can be used to quickly void part of the tank or spawn a mushroom cloud */ public void explode() { @@ -269,12 +283,6 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound data) { - this.mode = data.getShort("mode"); - this.hasExploded = data.getBoolean("hasExploded"); - this.tank.readFromNBT(data, "t"); - } - public void handleButtonPacket(int value, int meta) { mode = (short) ((mode + 1) % modes); this.markChanged(); @@ -462,7 +470,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements return this.hasExploded; } - List repair = new ArrayList(); + List repair = new ArrayList<>(); @Override public List getRepairMaterials() { @@ -507,4 +515,24 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } + + @Override + public String[] methods() { + return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "getFluidStored": + return getFluidStored(context, args); + case "getMaxStored": + return getMaxStored(context, args); + case "getTypeStored": + return getTypeStored(context, args); + case "getInfo": + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index a41c62ce2..32242267d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -35,9 +35,9 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn @Untested @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { - - if(recursionBrake) - return 0; + + if(this.tileEntityInvalid) return 0; + if(recursionBrake) return 0; if(simulate) return maxReceive; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index b2b2b3e66..12e7c3948 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -11,6 +11,7 @@ import com.hbm.tileentity.IFilterable; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -156,13 +157,24 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isWhitelist", isWhitelist); - this.matcher.writeToNBT(data); - this.networkPack(data, 15); + + this.networkPackNT(15); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(isWhitelist); + this.matcher.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + isWhitelist = buf.readBoolean(); + this.matcher.deserialize(buf); + } public static int[] masquerade(ISidedInventory sided, int side) { @@ -173,14 +185,6 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU return sided.getAccessibleSlotsFromSide(side); } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.isWhitelist = nbt.getBoolean("isWhitelist"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); - } - public boolean matchesFilter(ItemStack stack) { for(int i = 0; i < 9; i++) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index f14fb0f99..08a4cfa19 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -3,9 +3,13 @@ package com.hbm.tileentity.network; import java.util.List; import com.hbm.entity.item.EntityDeliveryDrone; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.util.fauxpointtwelve.BlockPos; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -13,7 +17,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketReceiver, IDroneLinkable { +public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketReceiver, IDroneLinkable { public int height = 5; public int nextX = -1; @@ -35,11 +39,8 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("height", height); - data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); - INBTPacketReceiver.networkPack(this, data, 15); + + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); } else { if(nextY != -1 && worldObj.getTotalWorldTime() % 2 == 0) { @@ -52,6 +53,22 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec } } + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(height); + buf.writeInt(nextX); + buf.writeInt(nextY); + buf.writeInt(nextZ); + } + + @Override + public void deserialize(ByteBuf buf) { + height = buf.readInt(); + nextX = buf.readInt(); + nextY = buf.readInt(); + nextZ = buf.readInt(); + } + @Override public BlockPos getPoint() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); @@ -65,15 +82,6 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec this.nextZ = z; this.markDirty(); } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.height = nbt.getInteger("height"); - int[] pos = nbt.getIntArray("pos"); - this.nextX = pos[0]; - this.nextY = pos[1]; - this.nextZ = pos[2]; - } public void addHeight(int h) { height += h; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 5f2e68975..20d7fe6f6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; import com.hbm.tileentity.IGUIProvider; @@ -10,8 +11,13 @@ import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; import com.hbm.util.ItemStackUtil; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +29,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public static final int lineWidth = 33; public String txChannel = ""; @@ -250,4 +257,82 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public String getComponentName() { + return "ntm_telex"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getChannels(Context context, Arguments args) { + return new Object[] {this.txChannel, this.rxChannel}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setChannels(Context context, Arguments args) { + String[] old = {this.txChannel, this.rxChannel}; + this.rxChannel = args.checkString(0); + this.txChannel = args.checkString(1); + return new Object[] {old[0], old[1]}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getSendingTexts(Context context, Arguments args) { + return new Object[] {this.txBuffer[0], this.txBuffer[1], this.txBuffer[2], this.txBuffer[3], this.txBuffer[4]}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getReceivingText(Context context, Arguments args) { + return new Object[] {this.rxBuffer[0], this.rxBuffer[1], this.rxBuffer[2], this.rxBuffer[3], this.rxBuffer[4]}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setSendingText(Context context, Arguments args) { // this function nearly killed me + for(int i = 0; i < 5; i++) { + // check if it was never given or if it's an empty string + // if it was never given then just assign it as an empty string + // this also checks if it's even a string at all + if(args.checkAny(i) == null || args.checkString(i).equals("")) + this.txBuffer[i] = ""; + if(args.checkString(i).equals("")) { // if it isn't an empty string + if(args.checkString(i).length() > TileEntityRadioTelex.lineWidth) { // line longer than allowed + this.txBuffer[i] = args.checkString(i).substring(0, TileEntityRadioTelex.lineWidth); // truncate it + } else + this.txBuffer[i] = args.checkString(i); // else just set it directly + } + } + return new Object[] {true}; + } + + @Callback //you don't get to run this more than once per tick, that would be very very bad + @Optional.Method(modid = "OpenComputers") + public Object[] printMessage(Context context, Arguments args) { + this.print(); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] clearAll(Context context, Arguments args) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + return new Object[] {}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] sendMessage(Context context, Arguments args) { + if(!this.isSending) { + this.isSending = true; + this.sendingLine = 0; + this.sendingIndex = 0; + return new Object[] {true}; + } + return new Object[] {false}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 2e0775a00..fcea913b7 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -15,9 +15,13 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -464,4 +468,13 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretArty(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + if(Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2)) >= this.getDecetorRange()) // check distance against range + return new Object[] {false}; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {true}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index f4866fe7a..b4e4f1155 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -6,7 +6,12 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.IRadarCommandReceiver; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -69,4 +74,21 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase } } } + + @Override + public String getComponentName() { + return "ntm_artillery"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getCurrentTarget(Context context, Arguments args) { + return new Object[] {targetQueue.get(0).xCoord, targetQueue.get(0).yCoord, targetQueue.get(0).zCoord}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTargetDistance(Context context, Arguments args) { + return new Object[] {Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2))}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 6006a5767..419bb807e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -14,6 +14,7 @@ import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; @@ -29,9 +30,14 @@ import com.hbm.util.CompatExternal; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectableNT; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -48,6 +54,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; @@ -58,7 +65,8 @@ import net.minecraftforge.common.util.ForgeDirection; * @author hbm * */ -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { @Override public boolean hasPermission(EntityPlayer player) { @@ -899,4 +907,160 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerTurretBase(player.inventory, this); } + + // OC stuff + // This is a large compat, so I have to leave comments to know what I'm doing + + @Override + public String getComponentName() { + return "ntm_turret"; + } + + // On/Off + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setActive(Context context, Arguments args) { + this.isOn = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isActive(Context context, Arguments args) { + return new Object[] {this.isOn}; + } + + // Energy information + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {this.getPower(), this.getMaxPower()}; + } + + /////////////////////// + // Whitelist Control // + /////////////////////// + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getWhitelisted(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { + String[] array = ItemTurretBiometry.getNames(slots[0]); + return new Object[] {array}; + } + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] addWhitelist(Context context, Arguments args) { + if(this.getWhitelist() != null) { + List names = this.getWhitelist(); + if (names.contains(args.checkString(0))) + return new Object[]{false}; + } + this.addName(args.checkString(0)); + return new Object[]{true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] removeWhitelist(Context context, Arguments args) { + List names = this.getWhitelist(); + if(!names.contains(args.checkString(0))) + return new Object[] {false}; + this.removeName(names.indexOf(args.checkString(0))); + return new Object[] {true}; + } + + /////////////////////// + // Targeting Control // + /////////////////////// + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setTargeting(Context context, Arguments args) { + this.targetPlayers = args.checkBoolean(0); + this.targetAnimals = args.checkBoolean(1); + this.targetMobs = args.checkBoolean(2); + this.targetMachines = args.checkBoolean(3); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTargeting(Context context, Arguments args) { + return new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] hasTarget(Context context, Arguments args) { + return new Object[] {this.target != null}; + } + + /////////////////// + // Angle Control // + /////////////////// + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAngle(Context context, Arguments args) { + return new Object[] {Math.toDegrees(this.rotationPitch), Math.toDegrees(this.rotationYaw)}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isAligned(Context context, Arguments args) { + return new Object[] {this.aligned}; + } + + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + + @Override + public String[] methods() { // :vomit: + return new String[] { + "setActive", + "isActive", + "getEnergyInfo", + "getWhitelisted", + "addWhitelist", + "removeWhitelist", + "setTargeting", + "getTargeting", + "hasTarget", + "getAngle", + "isAligned" + }; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "setActive": + return setActive(context, args); + case "isActive": + return isActive(context, args); + case "getEnergyInfo": + return getEnergyInfo(context, args); + case "getWhitelisted": + return getWhitelisted(context, args); + case "addWhitelist": + return addWhitelist(context, args); + case "removeWhitelist": + return removeWhitelist(context, args); + case "setTargeting": + return setTargeting(context, args); + case "getTargeting": + return getTargeting(context, args); + case "hasTarget": + return hasTarget(context, args); + case "getAngle": + return getAngle(context, args); + case "isAligned": + return isAligned(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 4cd07246e..149dc136c 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -14,8 +14,12 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -373,4 +377,11 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretHIMARS(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {}; + } } diff --git a/src/main/java/com/hbm/util/BufferUtil.java b/src/main/java/com/hbm/util/BufferUtil.java new file mode 100644 index 000000000..3f50e7e54 --- /dev/null +++ b/src/main/java/com/hbm/util/BufferUtil.java @@ -0,0 +1,33 @@ +package com.hbm.util; + +import java.nio.charset.Charset; + +import io.netty.buffer.ByteBuf; + +public class BufferUtil { + + private static final Charset CHARSET = Charset.forName("UTF-8"); + + // Writes a string to a byte buffer by encoding the length and raw bytes + public static final void writeString(ByteBuf buf, String value) { + if(value == null) { + buf.writeInt(-1); + return; + } + + buf.writeInt(value.length()); + buf.writeBytes(value.getBytes(CHARSET)); + } + + // Reads a string from a byte buffer via the written length and raw bytes + public static final String readString(ByteBuf buf) { + final int count = buf.readInt(); + if(count < 0) return null; + + final byte[] bytes = new byte[count]; + buf.readBytes(bytes); + + return new String(bytes, CHARSET); + } + +} diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index f416debc0..35ea12722 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -53,6 +53,7 @@ public class ShadyUtil { public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61"; public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10"; + public static String LePeeperSauvage = "433c2bb7-018c-4d51-acfe-27f907432b5e"; public static final Set hashes = new HashSet(); static { diff --git a/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java b/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java index 30e0c66e3..5d6900f75 100644 --- a/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java +++ b/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java @@ -184,7 +184,7 @@ public class CannerySILEX extends CanneryBase { scene1.add(new ActionWait(10)); TileEntityPipeBaseNT duct = new TileEntityPipeBaseNT(); - duct.setType(Fluids.ACID); + duct.setType(Fluids.PEROXIDE); scene1.add(new ActionSetTile(5, 2, 0, duct)); scene1.add(new ActionSetTile(5, 1, 0, duct)); scene1.add(new ActionSetTile(6, 1, 0, duct)); diff --git a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java index 194aea997..2daed2527 100644 --- a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java +++ b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java @@ -21,7 +21,7 @@ public class DesertAtom001 extends WorldGenerator { Block Block2 = ModBlocks.yellow_barrel; Block Block3 = ModBlocks.reinforced_sand; - Block Block4 = ModBlocks.nuke_man; + Block Block4 = ModBlocks.crashed_balefire; Block Block5 = ModBlocks.deco_steel; Block Block6 = ModBlocks.brick_light; Block Block7 = ModBlocks.deco_tungsten; diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index 2f4258234..f4586c795 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -35,19 +35,19 @@ public class BedrockOre { registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.BORAX, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockBoraxSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.CHLOROCALCITE, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockChlorocalciteSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.ASBESTOS, 2), WorldConfig.bedrockAsbestosSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiobiumSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NEODYMIUM, 3, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNeodymiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNiobiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NEODYMIUM, 3, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNeodymiumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TITANIUM, 2, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockTitaniumSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockTungstenSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockTungstenSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.GOLD, 1), WorldConfig.bedrockGoldSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.URANIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockUraniumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.THORIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockThoriumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.FLUORITE, 1), WorldConfig.bedrockFluoriteSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 8), 1, 0x202020), WorldConfig.bedrockCoalSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNiterSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.emerald, 4), 1, 0x3FDD85), WorldConfig.bedrockEmeraldSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), 2, 0x8F9999, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockRareEarthSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), 2, 0x8F9999, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockRareEarthSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE, 2),1, 0xEF7213), WorldConfig.bedrockBauxiteSpawn); registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.glowstone_dust, 4), 1, 0xF9FF4D), WorldConfig.bedrockGlowstoneSpawn); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c626ce9c3..9c93972a5 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -653,7 +653,6 @@ hbm.key.toggleBack=Rucksack umschalten hbm.key.toggleHUD=HUD umschalten hbm.key.reload=Nachladen -hbmfluid.acid=Wasserstoffperoxid hbmfluid.amat=Antimaterie hbmfluid.aromatics=Aromatische Kohlenwasserstoffe hbmfluid.aschrab=Antischrabidium @@ -739,6 +738,7 @@ hbmfluid.oil_coker=Koker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=Flüssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung +hbmfluid.peroxide=Wasserstoffperoxid hbmfluid.petroil=Gemisch hbmfluid.petroil_leaded=Bleigemisch hbmfluid.petroleum=Petroleumgas @@ -782,6 +782,7 @@ hbmfluid.tritium=Tritium hbmfluid.uf6=Uranhexafluorid hbmfluid.ultrahotsteam=Ultraverdichteter Dampf hbmfluid.unsaturateds=Ungesättigte Kohlenwasserstoffe +hbmfluid.vitriol=Vitriol hbmfluid.wastefluid=Flüssiger Atommüll hbmfluid.wastegas=Gasförmiger Atommüll hbmfluid.water=Wasser @@ -1259,6 +1260,38 @@ item.battery_su.name=Einwegbatterie item.battery_su_l.name=Große Einwegbatterie item.battery_trixite.name=Billige Spark-Batterie-Nachmache item.bdcl.name=BDCL +item.bedrock_ore.grade.base.name=%s-Bedrockerz +item.bedrock_ore.grade.base_roasted.name=Geröstetes %s-Bedrockerz +item.bedrock_ore.grade.base_washed.name=Gewaschenes %s-Bedrockerz +item.bedrock_ore.grade.primary.name=%s-Bedrockerz, Primärfraktion +item.bedrock_ore.grade.primary_roasted.name=%s-Bedrockerz, geröstete Primärfraktion +item.bedrock_ore.grade.primary_sulfuric.name=%s-Bedrockerz, schwefelige Primärfraktion +item.bedrock_ore.grade.primary_nosulfuric.name=%s-Bedrockerz, geteilte schwefelige Primärfraktion +item.bedrock_ore.grade.primary_solvent.name=%s-Bedrockerz, gelöste Primärfraktion +item.bedrock_ore.grade.primary_nosolvent.name=%s-Bedrockerz, geteilte gelöste Primärfraktion +item.bedrock_ore.grade.primary_rad.name=%s-Bedrockerz, gereinigte Primärfraktion +item.bedrock_ore.grade.primary_norad.name=%s-Bedrockerz, geteilte gereinigte Primärfraktion +item.bedrock_ore.grade.primary_first.name=%s-Bedrockerz, Primärfraktion, hohe Gewichtung +item.bedrock_ore.grade.primary_second.name=%s-Bedrockerz, Primärfraktion, niedrige Gewichtung +item.bedrock_ore.grade.crumbs.name=%s-Bedrockerzkrumen +item.bedrock_ore.grade.sulfuric_byproduct.name=%s-Bedrockerz, schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_roasted.name=%s-Bedrockerz, geröstetes schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_arc.name=%s-Bedrockerz, gebranntes schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_washed.name=%s-Bedrockerz, gewaschenes schwefeliges Nebenprodukt +item.bedrock_ore.grade.solvent_byproduct.name=%s-Bedrockerz, gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_roasted.name=%s-Bedrockerz, geröstetes gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_arc.name=%s-Bedrockerz, gebranntes gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_washed.name=%s-Bedrockerz, gewaschenes gelöstes Nebenprodukt +item.bedrock_ore.grade.rad_byproduct.name=%s-Bedrockerz, gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_roasted.name=%s-Bedrockerz, geröstetes gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_arc.name=%s-Bedrockerz, gebranntes gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_washed.name=%s-Bedrockerz, gewaschenes gereinigtes Nebenprodukt +item.bedrock_ore.type.actinide.name=Actinoide +item.bedrock_ore.type.crystal.name=Kristall +item.bedrock_ore.type.heavy.name=Schwermetall +item.bedrock_ore.type.light.name=Leichtmetall +item.bedrock_ore.type.nonmetal.name=Nichtmetall +item.bedrock_ore.type.rare.name=Seltenerden item.beta.name=Beta-Features item.big_sword.name=Großes Schwert item.billet_am_mix.name=Reaktorfähiges Americiumbillet @@ -1534,6 +1567,9 @@ item.circuit.capacitor_board.name=Kondensatorboard item.circuit.capacitor_tantalium.name=Tantalkondensator item.circuit.chip.name=Mikrochip item.circuit.chip_bismoid.name=Vielfältiger integrierter Schaltkreis +item.circuit.controller.name=Steuereinheit +item.circuit.controller_advanced.name=Erweiterte Steuereinheit +item.circuit.controller_chassis.name=Steuereinheitsgehäuse item.circuit.pcb.name=Leiterplatte item.circuit.silicon.name=Bedrucker Siliziumwafer item.circuit.vacuum_tube.name=Vakuumröhre @@ -2270,6 +2306,8 @@ item.insert_polonium.name=Poloniumeinlage item.insert_steel.name=Schwere Stahleinlage item.insert_xsapi.name=XSAPI-Einlage item.insert_yharonite.name=Yharoniteinlage +item.item_secret.canister.name=Komposit SB-26 +item.item_secret.controller.name=Proprietäre Steuereinheit item.iv_blood.name=Blutbeutel item.iv_empty.name=Infusionsbeutel item.iv_xp.name=Erfahrungsbeutel @@ -2710,6 +2748,7 @@ item.part_copper.name=Kupferstaubkiste item.part_generic.piston_electric.name=Electrischer Kolben item.part_generic.piston_hydraulic.name=Hydraulischer Kolben item.part_generic.piston_pneumatic.name=Pneumatischer Kolben +item.part_generic.lde.name=Leichtbauteil item.part_lithium.name=Lithiumstaubkiste item.part_plutonium.name=Plutoniumstaubkiste item.particle_aelectron.name=Positronenkapsel @@ -3592,7 +3631,7 @@ shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel -shape.wire=Draht +shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte @@ -3624,6 +3663,7 @@ tile.anvil_starmetal.name=Sternenmetallamboss tile.anvil_steel.name=Stahlamboss tile.ash_digamma.name=Asche tile.asphalt.name=Asphalt +tile.asphalt_stairs.name=Asphalttreppe tile.asphalt_light.name=Leuchtender Asphalt tile.barbed_wire.name=Stacheldraht tile.barbed_wire_acid.name=Ätzender Stacheldraht @@ -3860,13 +3900,16 @@ tile.concrete_colored.red.name=Roter Beton tile.concrete_colored.silver.name=Hellgrauer Beton tile.concrete_colored.white.name=Weißer Beton tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored_ext.bronze.name=Builder's Choice Concrete - Bronzeplatten tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Gefahrenstreifen tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Tiefes Indigo tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrieller Ton tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrieller Streifen tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Männliches Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila +tile.concrete_colored_ext.sand.name=Builder's Choice Concrete - Wüstensturm tile.concrete_pillar.name=Stahlbetonsäule +tile.concrete_slab.asphalt.name=Asphaltstufe tile.concrete_slab.concrete.name=Betonfliesenstufe tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe tile.concrete_slab.concrete_smooth.name=Betonstufe @@ -4008,6 +4051,7 @@ tile.fallout.name=Fallout tile.fan.name=Ventilator tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen tile.fence_metal.name=Maschendrahtzaun +tile.fence_metal_post.name=Maschendrahtzaun-Pfahl tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma tile.fire_door.name=Brandschutztür diff --git a/src/main/resources/assets/hbm/lang/en_NT.lang b/src/main/resources/assets/hbm/lang/en_NT.lang index 1667e5909..8f694f8e2 100644 --- a/src/main/resources/assets/hbm/lang/en_NT.lang +++ b/src/main/resources/assets/hbm/lang/en_NT.lang @@ -69,7 +69,7 @@ hbmfluid.heatingoil=Heating Oil hbmfluid.naphtha=Naphtha hbmfluid.lightoil=Light Oil hbmfluid.petroleum=Petroleum Gas -hbmfluid.acid=Hydrogen Peroxide +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.watz=Poisonous Mud hbmfluid.biogas=Biogas hbmfluid.biofuel=Biofuel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 73b5faf11..8e784c2b7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -131,6 +131,14 @@ achievement.witchtaunter=Witch Taunter achievement.ZIRNOXBoom.desc=cope, seethe, mald achievement.ZIRNOXBoom=CIRNOX +analyze.basic1======NTM Component===== +analyze.basic2=More documentation can be found on the wiki. +analyze.basic3====Extra Information=== +analyze.dummy=Type: Dummy Block +analyze.error=This block's compatibility has not been set properly, this should be reported as a bug! +analyze.name=Name: %s +analyze.noInfo=No additional information. + armor.blastProtection=Damage modifier of %s against explosions armor.cap=Hard damage cap of %s armor.damageModifier=Damage modifier of %s against %s @@ -858,6 +866,7 @@ crucible.ferro=Ferrouranium Production crucible.hematite=Iron Production from Hematite crucible.hss=High-Speed Steel Production crucible.malachite=Copper Production from Malachite +crucible.magtung=Magnetized Tungsten Production crucible.redcopper=Red Copper Production crucible.steel=Steel Production crucible.steelMeteoric=Steel Production from Meteoric Iron @@ -1341,7 +1350,6 @@ hbm.key.toggleBack=Toggle Backpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload -hbmfluid.acid=Hydrogen Peroxide hbmfluid.amat=Antimatter hbmfluid.aromatics=Aromatic Hydrocarbons hbmfluid.aschrab=Antischrabidium @@ -1428,6 +1436,7 @@ hbmfluid.oil_ds=Desulfurized Crude Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil hbmfluid.petroleum=Petroleum Gas @@ -1473,6 +1482,7 @@ hbmfluid.tritium=Tritium hbmfluid.uf6=Uranium Hexafluoride hbmfluid.ultrahotsteam=Ultra Dense Steam hbmfluid.unsaturateds=Unsaturated Hydrocarbons +hbmfluid.vitriol=Vitriol hbmfluid.wastefluid=Liquid Nuclear Waste hbmfluid.wastegas=Gaseous Nuclear Waste hbmfluid.water=Water @@ -1482,8 +1492,6 @@ hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX - - hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1965,6 +1973,45 @@ item.battery_su.name=SU-Battery item.battery_su_l.name=Large SU-Battery item.battery_trixite.name=Off-Brand Spark Battery item.bdcl.name=BDCL +item.bedrock_ore.grade.base.name=%s Bedrock Ore +item.bedrock_ore.grade.base_roasted.name=Roasted %s Bedrock Ore +item.bedrock_ore.grade.base_washed.name=Washed %s Bedrock Ore +item.bedrock_ore.grade.primary.name=%s Bedrock Ore, Primary Fraction +item.bedrock_ore.grade.primary_roasted.name=%s Bedrock Ore, Roasted Primary Fraction +item.bedrock_ore.grade.primary_sulfuric.name=%s Bedrock Ore, Sulfuric Primary Fraction +item.bedrock_ore.grade.primary_nosulfuric.name=%s Bedrock Ore, Separated Sulfuric Primary Fraction +item.bedrock_ore.grade.primary_solvent.name=%s Bedrock Ore, Dissolved Primary Fraction +item.bedrock_ore.grade.primary_nosolvent.name=%s Bedrock Ore, Separated Dissolved Primary Fraction +item.bedrock_ore.grade.primary_rad.name=%s Bedrock Ore, Cleaned Primary Fraction +item.bedrock_ore.grade.primary_norad.name=%s Bedrock Ore, Separated Cleaned Primary Fraction +item.bedrock_ore.grade.primary_first.name=%s Bedrock Ore, Primary Fraction, Higher Weight +item.bedrock_ore.grade.primary_second.name=%s Bedrock Ore, Primary Fraction, Lower Weight +item.bedrock_ore.grade.crumbs.name=%s Bedrock Ore Crumbs +item.bedrock_ore.grade.sulfuric_byproduct.name=%s Bedrock Ore, Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_roasted.name=%s Bedrock Ore, Roasted Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_arc.name=%s Bedrock Ore, Seared Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_washed.name=%s Bedrock Ore, Washed Sulfuric Byproduct +item.bedrock_ore.grade.solvent_byproduct.name=%s Bedrock Ore, Dissolved Byproduct +item.bedrock_ore.grade.solvent_roasted.name=%s Bedrock Ore, Roasted Dissolved Byproduct +item.bedrock_ore.grade.solvent_arc.name=%s Bedrock Ore, Seared Dissolved Byproduct +item.bedrock_ore.grade.solvent_washed.name=%s Bedrock Ore, Washed Dissolved Byproduct +item.bedrock_ore.grade.rad_byproduct.name=%s Bedrock Ore, Cleaned Byproduct +item.bedrock_ore.grade.rad_roasted.name=%s Bedrock Ore, Roasted Cleaned Byproduct +item.bedrock_ore.grade.rad_arc.name=%s Bedrock Ore, Seared Cleaned Byproduct +item.bedrock_ore.grade.rad_washed.name=%s Bedrock Ore, Washed Cleaned Byproduct +item.bedrock_ore.trait.arc=§6Arc Smelted +item.bedrock_ore.trait.centrifuged=§9Centrifuged +item.bedrock_ore.trait.rad=§aTreated with High-Performance Solvent +item.bedrock_ore.trait.roasted=§eCombination Oven Roasted +item.bedrock_ore.trait.solvent=§fTreated with Solvent +item.bedrock_ore.trait.sulfuric=§6Treated with Sulfuric Acid +item.bedrock_ore.trait.washed=§bWashed +item.bedrock_ore.type.actinide.name=Actinide +item.bedrock_ore.type.crystal.name=Crystalline +item.bedrock_ore.type.heavy.name=Heavy Metal +item.bedrock_ore.type.light.name=Light Metal +item.bedrock_ore.type.nonmetal.name=Non-Metal +item.bedrock_ore.type.rare.name=Rare Earth item.beta.name=Beta Features item.big_sword.name=Great Sword item.billet_actinium.name=Actinium-227 Billet @@ -2279,6 +2326,9 @@ item.circuit.capacitor_board.name=Capacitor Board item.circuit.capacitor_tantalium.name=Tantalium Capacitor item.circuit.chip.name=Microchip item.circuit.chip_bismoid.name=Versatile Integrated Circuit +item.circuit.controller.name=Control Unit +item.circuit.controller_advanced.name=Advanced Control Unit +item.circuit.controller_chassis.name=Control Unit Casing item.circuit.pcb.name=Printed Circuit Board item.circuit.silicon.name=Printed Silicon Wafer item.circuit.vacuum_tube.name=Vacuum Tube @@ -3069,6 +3119,8 @@ item.insert_polonium.name=Polonium Insert item.insert_steel.name=Heavy Steel Insert item.insert_xsapi.name=XSAPI Insert item.insert_yharonite.name=Yharonite Insert +item.item_secret.canister.name=Composition SB-26 +item.item_secret.controller.name=Proprietary Control Unit item.iv_blood.name=Blood Bag item.iv_empty.name=IV Bag item.iv_xp.name=Experience Bag @@ -3528,6 +3580,7 @@ item.part_copper.name=Box of Copper Dust item.part_generic.piston_electric.name=Electric Piston item.part_generic.piston_hydraulic.name=Hydraulic Piston item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_generic.lde.name=Low-Density Element item.part_lithium.name=Box of Lithium Dust item.part_plutonium.name=Box of Plutonium Dust item.particle_aelectron.name=Positron Capsule @@ -4612,7 +4665,7 @@ shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp -shape.wire=Wire +shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires @@ -4644,6 +4697,7 @@ tile.anvil_starmetal.name=Starmetal Anvil tile.anvil_steel.name=Steel Anvil tile.ash_digamma.name=Ash tile.asphalt.name=Asphalt +tile.asphalt_stairs.name=Asphalt Stairs tile.asphalt_light.name=Glowing Asphalt tile.barbed_wire.name=Barbed Wire tile.barbed_wire_acid.name=Caustic Barbed Wire @@ -4911,13 +4965,16 @@ tile.concrete_colored.red.name=Red Concrete tile.concrete_colored.silver.name=Light Gray Concrete tile.concrete_colored.white.name=White Concrete tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.bronze.name=Builder's Choice Concrete - Bronze Plating tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple +tile.concrete_colored_ext.sand.name=Builder's Choice Concrete - Desert Storm tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar +tile.concrete_slab.asphalt.name=Asphalt Slab tile.concrete_slab.concrete.name=Concrete Tile Slab tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab tile.concrete_slab.concrete_smooth.name=Concrete Slab @@ -5064,6 +5121,7 @@ tile.fallout.name=Fallout tile.fan.name=Fan tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip tile.fence_metal.name=Chainlink Fence +tile.fence_metal_post.name=Chainlink Fence Post tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet tile.filing_cabinet.steel.name=Steel Filing Cabinet diff --git a/src/main/resources/assets/hbm/lang/fr_FR.lang b/src/main/resources/assets/hbm/lang/fr_FR.lang index 9b13a0db9..502021ea3 100644 --- a/src/main/resources/assets/hbm/lang/fr_FR.lang +++ b/src/main/resources/assets/hbm/lang/fr_FR.lang @@ -37,7 +37,7 @@ hbmfluid.heatingoil=Huile de chauffage hbmfluid.naphtha=Naphta hbmfluid.lightoil=Huile légère hbmfluid.petroleum=Gaz pétrolier -hbmfluid.acid=Peroxyde d'hydrogène +hbmfluid.peroxide=Peroxyde d'hydrogène hbmfluid.watz=Boue vénéneuse hbmfluid.biogas=Biogaz hbmfluid.biofuel=Biocarburant diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index a9e0d93f9..23ce40e76 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -1338,7 +1338,6 @@ hbm.key.toggleBack=Toggle Backpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload -hbmfluid.acid=Hydrogen Peroxide hbmfluid.amat=Antimatter hbmfluid.aromatics=Aromatic Hydrocarbons hbmfluid.aschrab=Antischrabidium @@ -1425,6 +1424,7 @@ hbmfluid.oil_ds=Desulfurized Crude Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil hbmfluid.petroleum=Petroleum Gas diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index 0fd01861e..1307d0b8b 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -1247,7 +1247,6 @@ hbm.key.toggleBack=Włącz/wyłącz plecak hbm.key.toggleHUD=Włącz/wyłącz HUD hbm.key.reload=Przeładuj -hbmfluid.acid=Nadtlenek wodoru hbmfluid.amat=Antymateria hbmfluid.aromatics=Węglowodory aromatyczne hbmfluid.aschrab=Antyschrabid @@ -1326,6 +1325,7 @@ hbmfluid.oil_coker=Olej koksowniczy hbmfluid.oxygen=Ciekły tlen hbmfluid.oxyhydrogen=Tlenowodór hbmfluid.pain=Roztwór tantalitu pandemonium(III). +hbmfluid.peroxide=Nadtlenek wodoru hbmfluid.petroil=Benzyna hbmfluid.petroil_leaded=Benzyna ołowiowa hbmfluid.petroleum=Gaz z ropy naftowej diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 4a3596cc1..93891eb03 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1169,7 +1169,7 @@ hbmfluid.naphtha=Нафта hbmfluid.lightoil=Легкая нефть hbmfluid.petroleum=Попутный нефтяной газ hbmfluid.lpg=Сжиженный попутный газ (СПГ) -hbmfluid.acid=Пероксид водорода +hbmfluid.peroxide=Пероксид водорода hbmfluid.watz=Токсичные отходы hbmfluid.wastefluid=Жидкие ядерные отходы hbmfluid.wastegas=Газовые ядерные отходы diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 03c54c1b8..523c767be 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -1230,7 +1230,6 @@ hbm.key.dash=冲刺 (在config中解绑) hbm.key.toggleBack=开关 喷气背包 hbm.key.toggleHUD=开关 HUD hbm.key.reload=装弹 -hbmfluid.acid=过氧化氢 hbmfluid.amat=反物质 hbmfluid.aromatics=芳香烃 hbmfluid.aschrab=反Sa326 @@ -1317,6 +1316,7 @@ hbmfluid.oil_ds=脱硫原油 hbmfluid.oxygen=液氧 hbmfluid.oxyhydrogen=氢氧混合气 hbmfluid.pain=Pn(III) 钽铁溶液 +hbmfluid.peroxide=过氧化氢 hbmfluid.petroil=汽油 hbmfluid.petroil_leaded=含铅石油 hbmfluid.petroleum=石油气 diff --git a/src/main/resources/assets/hbm/models/LaunchPad.obj b/src/main/resources/assets/hbm/models/LaunchPad.obj deleted file mode 100644 index 4beabf648..000000000 --- a/src/main/resources/assets/hbm/models/LaunchPad.obj +++ /dev/null @@ -1,302 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'launchpad.blend' -# www.blender.org -o Cylinder -v 1.060660 0.250000 -1.060660 -v 0.000000 0.500000 -1.000000 -v 1.500000 0.250000 0.000000 -v 0.707107 0.500000 -0.707107 -v 1.060660 0.250000 1.060660 -v 1.000000 0.500000 0.000000 -v -0.000000 0.250000 1.500000 -v 0.707107 0.500000 0.707107 -v -1.060660 0.250000 1.060660 -v -0.000000 0.500000 1.000000 -v 0.000000 0.250000 -1.500000 -v -0.707107 0.500000 0.707107 -v -1.060660 0.250000 -1.060660 -v -1.000000 0.500000 -0.000000 -v -1.500000 0.250000 -0.000000 -v -0.707107 0.500000 -0.707107 -v 0.000000 0.250000 -1.000000 -v 0.707107 0.250000 -0.707107 -v 1.000000 0.250000 0.000000 -v 0.707107 0.250000 0.707107 -v -0.000000 0.250000 1.000000 -v -0.707107 0.250000 0.707107 -v -1.000000 0.250000 -0.000000 -v -0.707107 0.250000 -0.707107 -v 0.000000 0.000000 -1.500000 -v 1.060660 0.000000 -1.060660 -v 1.500000 0.000000 0.000000 -v 1.060660 0.000000 1.060660 -v -0.000000 0.000000 1.500000 -v -1.060660 0.000000 1.060660 -v -1.500000 0.000000 -0.000000 -v -1.060660 0.000000 -1.060660 -v -0.500000 0.000000 2.000000 -v 0.500000 0.000000 2.000000 -v -0.500000 0.000000 -2.000000 -v 0.500000 0.000000 -2.000000 -v -0.500000 0.125000 -2.000000 -v 0.500000 0.125000 -2.000000 -v -0.500000 0.475000 -0.750000 -v 0.500000 0.475000 -0.750000 -v -0.500000 0.475000 0.750000 -v 0.500000 0.475000 0.750000 -v 0.500000 0.125000 2.000000 -v -0.500000 0.125000 2.000000 -v -0.500000 0.100000 0.750000 -v 0.500000 0.100000 0.750000 -v -0.500000 0.100000 -0.750000 -v 0.500000 0.100000 -0.750000 -v 2.000000 0.000000 0.500000 -v 2.000000 0.000000 -0.500000 -v -2.000000 0.000000 0.500000 -v -2.000000 0.000000 -0.500000 -v -2.000000 0.125000 0.500000 -v -2.000000 0.125000 -0.500000 -v -0.750000 0.475000 0.500000 -v -0.750000 0.475000 -0.500000 -v 0.750000 0.475000 0.500000 -v 0.750000 0.475000 -0.500000 -v 2.000000 0.125000 -0.500000 -v 2.000000 0.125000 0.500000 -v 0.750000 0.100000 0.500000 -v 0.750000 0.100000 -0.500000 -v -0.750000 0.100000 0.500000 -v -0.750000 0.100000 -0.500000 -vt 0.679427 0.603288 -vt 0.736986 0.545729 -vt 0.755787 0.564530 -vt 0.736986 0.464329 -vt 0.763575 0.464329 -vt 0.679428 0.406770 -vt 0.698229 0.387969 -vt 0.598027 0.406770 -vt 0.598027 0.380181 -vt 0.540468 0.464329 -vt 0.521667 0.445528 -vt 0.540468 0.545729 -vt 0.513879 0.545729 -vt 0.598027 0.603288 -vt 0.679427 0.629877 -vt 0.579226 0.622089 -vt 0.371403 0.064091 -vt 0.370621 0.122777 -vt 0.246818 0.069553 -vt 0.028468 0.292851 -vt 0.071192 0.251063 -vt 0.122297 0.378412 -vt 0.289175 0.473320 -vt 0.246967 0.432446 -vt 0.370760 0.378824 -vt 0.456943 0.213084 -vt 0.412191 0.251217 -vt 0.204262 0.028468 -vt 0.122271 0.123726 -vt 0.028468 0.209288 -vt 0.062521 0.124396 -vt 0.121333 0.437581 -vt 0.143605 0.355918 -vt 0.245661 0.401664 -vt 0.429011 0.374227 -vt 0.552285 0.820181 -vt 0.552285 0.686813 -vt 0.658640 0.686813 -vt 0.346906 0.359230 -vt 0.145516 0.144219 -vt 0.102263 0.249691 -vt 0.382068 0.252292 -vt 0.248398 0.100332 -vt 0.348830 0.144590 -vt 0.898743 0.686813 -vt 0.898743 0.820181 -vt 0.792388 0.820181 -vt 0.658640 0.971532 -vt 0.552285 0.971532 -vt 0.552285 0.833475 -vt 0.898743 0.833475 -vt 0.792388 0.833475 -vt 0.898743 0.971532 -vt 0.658640 0.833475 -vt 0.792388 0.971532 -vt 0.753982 0.960778 -vt 0.937149 0.960778 -vt 0.513879 0.960778 -vt 0.539483 0.829891 -vt 0.671442 0.829891 -vt 0.697046 0.960778 -vt 0.413332 0.663908 -vt 0.306977 0.663908 -vt 0.306977 0.530539 -vt 0.066874 0.530539 -vt 0.173229 0.530539 -vt 0.173229 0.663908 -vt 0.413332 0.815259 -vt 0.306977 0.815259 -vt 0.306977 0.677202 -vt 0.066874 0.663908 -vt 0.173229 0.677202 -vt 0.066874 0.815259 -vt 0.066874 0.677202 -vt 0.413332 0.677202 -vt 0.028468 0.804505 -vt 0.211635 0.804505 -vt 0.173229 0.815259 -vt 0.268571 0.804505 -vt 0.294175 0.673617 -vt 0.426134 0.673617 -vt 0.451738 0.804505 -vt 0.722318 0.323245 -vt 0.513879 0.236907 -vt 0.600218 0.028468 -vt 0.698228 0.622089 -vt 0.763575 0.545729 -vt 0.755787 0.445528 -vt 0.679428 0.380181 -vt 0.579226 0.387969 -vt 0.513880 0.464329 -vt 0.598027 0.629877 -vt 0.521667 0.564530 -vt 0.288867 0.028609 -vt 0.062538 0.377750 -vt 0.371704 0.437572 -vt 0.429230 0.127457 -vt 0.121231 0.064583 -vt 0.204447 0.473603 -vt 0.456631 0.289155 -vt 0.658640 0.820181 -vt 0.792388 0.686813 -vt 0.779586 0.829891 -vt 0.911545 0.829891 -vt 0.413332 0.530539 -vt 0.054072 0.673618 -vt 0.186031 0.673618 -vt 0.722318 0.028468 -vt 0.808657 0.114806 -vt 0.808657 0.236907 -vt 0.600218 0.323245 -vt 0.513879 0.114806 -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 -0.996800 0.079700 -vn 0.000000 -0.996800 -0.079700 -vn 0.000000 0.963000 -0.269600 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.963000 0.269600 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.079700 -0.996800 0.000000 -vn -0.079700 -0.996800 -0.000000 -vn -0.269600 0.963000 -0.000000 -vn 0.269600 0.963000 0.000000 -vn 0.000000 -1.000000 0.000000 -s off -f 2/1/1 4/2/1 18/3/1 -f 4/2/2 6/4/2 19/5/2 -f 6/4/3 8/6/3 20/7/3 -f 8/6/4 10/8/4 21/9/4 -f 10/8/5 12/10/5 22/11/5 -f 12/10/6 14/12/6 23/13/6 -f 14/12/7 8/6/7 6/4/7 -f 16/14/8 2/1/8 17/15/8 -f 14/12/9 16/14/9 24/16/9 -f 17/17/7 11/18/7 13/19/7 -f 22/20/7 9/21/7 7/22/7 -f 20/23/7 5/24/7 3/25/7 -f 18/26/7 1/27/7 11/18/7 -f 24/28/7 13/19/7 15/29/7 -f 22/30/7 23/31/7 15/29/7 -f 21/32/7 7/22/7 5/24/7 -f 7/22/4 29/33/4 28/34/4 -f 19/35/7 3/25/7 1/27/7 -f 36/36/10 48/37/10 47/38/10 -f 5/24/3 28/34/3 27/39/3 -f 15/29/6 31/40/6 30/41/6 -f 9/21/5 30/41/5 29/33/5 -f 3/25/2 27/39/2 26/42/2 -f 13/19/9 32/43/9 31/40/9 -f 1/27/1 26/42/1 25/44/1 -f 11/18/8 25/44/8 32/43/8 -f 46/45/11 34/46/11 33/47/11 -f 39/48/12 40/49/12 38/50/12 -f 33/47/13 34/46/13 43/51/13 -f 44/52/14 43/51/14 42/53/14 -f 37/54/15 38/50/15 36/36/15 -f 44/52/16 41/55/16 45/56/16 -f 46/57/17 42/53/17 43/51/17 -f 48/58/17 36/59/17 38/50/17 -f 37/54/16 35/60/16 47/61/16 -f 51/62/18 52/63/18 64/64/18 -f 61/65/19 62/66/19 50/67/19 -f 55/68/20 56/69/20 54/70/20 -f 49/71/17 50/67/17 59/72/17 -f 57/73/21 60/74/21 59/72/21 -f 53/75/16 54/70/16 52/63/16 -f 60/74/13 57/73/13 61/76/13 -f 62/77/15 58/78/15 59/72/15 -f 64/79/15 52/80/15 54/70/15 -f 53/75/13 51/81/13 63/82/13 -f 28/83/22 30/84/22 32/85/22 -f 17/86/1 2/1/1 18/3/1 -f 18/87/2 4/2/2 19/5/2 -f 19/88/3 6/4/3 20/7/3 -f 20/89/4 8/6/4 21/9/4 -f 21/90/5 10/8/5 22/11/5 -f 22/91/6 12/10/6 23/13/6 -f 6/4/7 4/2/7 2/1/7 -f 2/1/7 16/14/7 6/4/7 -f 14/12/7 12/10/7 10/8/7 -f 10/8/7 8/6/7 14/12/7 -f 6/4/7 16/14/7 14/12/7 -f 24/92/8 16/14/8 17/15/8 -f 23/93/9 14/12/9 24/16/9 -f 24/94/7 17/17/7 13/19/7 -f 21/95/7 22/20/7 7/22/7 -f 19/96/7 20/23/7 3/25/7 -f 17/97/7 18/26/7 11/18/7 -f 23/98/7 24/28/7 15/29/7 -f 9/21/7 22/30/7 15/29/7 -f 20/99/7 21/32/7 5/24/7 -f 5/24/4 7/22/4 28/34/4 -f 18/100/7 19/35/7 1/27/7 -f 35/101/10 36/36/10 47/38/10 -f 3/25/3 5/24/3 27/39/3 -f 9/21/6 15/29/6 30/41/6 -f 7/22/5 9/21/5 29/33/5 -f 1/27/2 3/25/2 26/42/2 -f 15/29/9 13/19/9 31/40/9 -f 11/18/1 1/27/1 25/44/1 -f 13/19/8 11/18/8 32/43/8 -f 45/102/11 46/45/11 33/47/11 -f 37/54/12 39/48/12 38/50/12 -f 44/52/13 33/47/13 43/51/13 -f 41/55/14 44/52/14 42/53/14 -f 35/101/15 37/54/15 36/36/15 -f 33/103/16 44/52/16 45/56/16 -f 34/104/17 46/57/17 43/51/17 -f 40/49/17 48/58/17 38/50/17 -f 39/48/16 37/54/16 47/61/16 -f 63/105/18 51/62/18 64/64/18 -f 49/71/19 61/65/19 50/67/19 -f 53/75/20 55/68/20 54/70/20 -f 60/74/17 49/71/17 59/72/17 -f 58/78/21 57/73/21 59/72/21 -f 51/62/16 53/75/16 52/63/16 -f 49/106/13 60/74/13 61/76/13 -f 50/107/15 62/77/15 59/72/15 -f 56/69/15 64/79/15 54/70/15 -f 55/68/13 53/75/13 63/82/13 -f 32/85/22 25/108/22 26/109/22 -f 26/109/22 27/110/22 28/83/22 -f 28/83/22 29/111/22 30/84/22 -f 30/84/22 31/112/22 32/85/22 -f 32/85/22 26/109/22 28/83/22 diff --git a/src/main/resources/assets/hbm/models/armor/tail_peep.obj b/src/main/resources/assets/hbm/models/armor/tail_peep.obj new file mode 100644 index 000000000..737184c93 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/tail_peep.obj @@ -0,0 +1,447 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o FaggyAssFuckingTailThing +v -0.627682 10.005125 -0.450454 +v -0.000123 11.075396 0.277636 +v -0.000084 10.418571 -0.643246 +v 0.627711 10.005373 -0.450569 +v 0.798890 10.572883 0.567761 +v 0.388113 9.285591 -0.074662 +v -0.493534 9.759312 1.037476 +v -0.000153 10.383696 3.486781 +v -0.814369 10.383530 3.486841 +v -0.000151 9.759405 1.037423 +v -0.000151 9.285519 -0.074620 +v -0.387763 9.285445 -0.074578 +v -0.798885 10.572582 0.567935 +v 1.318130 11.840109 2.956691 +v 1.303919 10.780759 6.464269 +v 0.814971 10.383862 3.486721 +v -0.000243 12.739786 2.629235 +v -1.318200 11.839571 2.956887 +v 0.493946 9.759499 1.037369 +v -1.303027 10.780201 6.464366 +v -0.000150 9.794444 9.202967 +v -1.563645 9.794115 9.202877 +v -2.109154 13.221715 6.033862 +v -0.000424 14.731211 5.767698 +v -0.000150 10.780479 6.464317 +v 2.108972 13.222614 6.033704 +v -3.037204 8.839604 13.587263 +v -2.530998 12.667759 9.972871 +v -0.000522 14.444422 10.448926 +v 2.530752 12.668819 9.973157 +v 1.564689 9.794771 9.203056 +v -0.000772 3.865773 18.280907 +v -0.000633 10.105603 15.395302 +v 3.036897 8.840356 13.588348 +v 1.877619 6.792392 10.663549 +v -0.000148 6.792160 10.663214 +v -1.876381 6.791927 10.662880 +v 4.008683 -1.231076 17.008335 +v 3.644264 3.180661 15.724039 +v -0.000157 2.071596 11.584938 +v -2.251669 2.071471 11.584467 +v -3.644658 3.180254 15.722511 +v 2.253131 2.071720 11.585409 +v -0.000585 -5.243139 19.012844 +v 2.806094 -5.420787 16.982361 +v -2.476843 -1.641940 12.312111 +v -4.009130 -1.231225 17.006601 +v 2.478435 -1.641846 12.313181 +v -0.000858 -0.977296 19.909027 +v -0.000141 -1.641892 12.312647 +v 0.520518 -6.788428 15.666166 +v 1.734920 -5.708327 13.695753 +v -1.733776 -5.708388 13.695004 +v -2.806377 -5.420892 16.981148 +v -0.000133 -6.788437 15.666052 +v 0.841869 -6.702163 16.652149 +v -0.000133 -6.648875 17.261292 +v -0.841870 -6.702197 16.651783 +v -0.000135 -5.708357 13.695379 +v -0.520090 -6.788447 15.665939 +vt 0.710651 0.397343 +vt 0.673447 0.425869 +vt 0.686110 0.391250 +vt 0.640510 0.034849 +vt 0.603308 0.006319 +vt 0.627849 0.000228 +vt 0.752962 0.426119 +vt 0.711107 0.401105 +vt 0.736879 0.391250 +vt 0.932680 0.039627 +vt 0.948768 0.122001 +vt 0.922233 0.122004 +vt 0.961407 0.000228 +vt 0.948759 0.039625 +vt 0.948753 0.000230 +vt 0.952761 0.401105 +vt 0.910907 0.426121 +vt 0.926989 0.391250 +vt 0.655952 0.797121 +vt 0.676401 0.823580 +vt 0.663769 0.823582 +vt 0.790100 0.507814 +vt 0.746990 0.619172 +vt 0.738502 0.520352 +vt 0.609711 0.044182 +vt 0.672570 0.123097 +vt 0.620455 0.133276 +vt 0.940524 0.438709 +vt 0.873772 0.507814 +vt 0.704244 0.435206 +vt 0.641379 0.514115 +vt 0.723345 0.438709 +vt 0.906315 0.219899 +vt 0.948774 0.314756 +vt 0.897820 0.314756 +vt 0.687894 0.637069 +vt 0.603308 0.629110 +vt 0.948776 0.219895 +vt 0.626049 0.246054 +vt 0.916885 0.619168 +vt 0.832166 0.612780 +vt 0.819888 0.129973 +vt 0.737083 0.000228 +vt 0.897348 0.063686 +vt 0.703938 0.390793 +vt 0.603308 0.374429 +vt 0.856460 0.740857 +vt 0.807406 0.740873 +vt 0.711107 0.707398 +vt 0.610024 0.781808 +vt 0.547346 0.239308 +vt 0.393707 0.049939 +vt 0.602852 0.130282 +vt 0.819901 0.231924 +vt 0.737074 0.361669 +vt 0.711092 0.242118 +vt 0.884411 0.981518 +vt 0.711107 0.859180 +vt 0.923667 0.887428 +vt 0.711092 0.180923 +vt 0.711092 0.119777 +vt 0.910366 0.786348 +vt 0.743952 0.741330 +vt 0.393706 0.771551 +vt 0.208303 0.661960 +vt 0.355061 0.629918 +vt 0.494347 0.349574 +vt 0.337604 0.410716 +vt 0.337605 0.337340 +vt 0.547358 0.582179 +vt 0.355064 0.191572 +vt 0.494355 0.471915 +vt 0.337604 0.484150 +vt 0.092732 0.820324 +vt 0.074194 0.708811 +vt 0.214393 0.328358 +vt 0.206875 0.167042 +vt 0.214386 0.493131 +vt 0.208315 0.159535 +vt 0.234787 0.000228 +vt 0.214281 0.410714 +vt 0.214285 0.329999 +vt 0.068166 0.623727 +vt 0.001808 0.553219 +vt 0.073433 0.510806 +vt 0.073441 0.310677 +vt 0.068178 0.197756 +vt 0.206862 0.654446 +vt 0.092733 0.001179 +vt 0.074307 0.354217 +vt 0.613282 0.823429 +vt 0.623242 0.782265 +vt 0.655495 0.792745 +vt 0.018317 0.059452 +vt 0.023876 0.025998 +vt 0.074305 0.410716 +vt 0.001068 0.393780 +vt 0.018313 0.762053 +vt 0.001815 0.268262 +vt 0.000237 0.234386 +vt 0.655495 0.826658 +vt 0.623242 0.837137 +vt 0.214278 0.491490 +vt 0.696873 0.797121 +vt 0.689055 0.823582 +vt 0.964861 0.039622 +vt 0.975332 0.121997 +vt 0.001067 0.427694 +vt 0.001067 0.410726 +vt 0.074302 0.467260 +vt 0.991275 0.219891 +vt 0.936121 0.000232 +vt 0.999772 0.314756 +vt 0.676413 0.782265 +vt 0.831709 0.612784 +vt 0.925371 0.520351 +vt 0.693494 0.524297 +vt 0.710635 0.238095 +vt 0.952761 0.707388 +vt 0.710651 0.765428 +vt 0.897364 0.298208 +vt 0.712040 0.981518 +vt 0.819894 0.180926 +vt 0.234786 0.821264 +vt 0.494351 0.410719 +vt 0.602852 0.691211 +vt 0.000228 0.587095 +vt 0.074203 0.112694 +vt 0.603308 0.809701 +vt 0.023875 0.795507 +vn -0.5837 0.6621 -0.4701 +vn -0.5883 0.6607 -0.4663 +vn -0.5815 0.6623 -0.4724 +vn 0.5878 0.6613 -0.4661 +vn 0.5833 0.6623 -0.4702 +vn 0.5811 0.6626 -0.4726 +vn 0.9469 -0.3196 0.0349 +vn 0.9480 -0.3169 0.0288 +vn 0.9507 -0.3098 0.0128 +vn 0.0002 -0.9690 0.2470 +vn 0.0002 -0.9200 0.3920 +vn -0.9479 -0.3172 0.0290 +vn -0.9468 -0.3199 0.0351 +vn -0.9506 -0.3101 0.0130 +vn 0.0169 -0.4513 -0.8922 +vn 0.0088 -0.4569 -0.8895 +vn -0.0000 -0.4629 -0.8864 +vn 0.9333 -0.3447 -0.1003 +vn 0.9368 -0.3359 -0.0977 +vn 0.9276 -0.3586 -0.1045 +vn 0.5865 0.6617 -0.4671 +vn 0.5760 0.6649 -0.4756 +vn 0.5731 0.6659 -0.4778 +vn -0.9358 -0.3518 -0.0208 +vn -0.9386 -0.3435 -0.0310 +vn -0.9336 -0.3581 -0.0130 +vn -0.5869 0.6613 -0.4671 +vn -0.5764 0.6646 -0.4755 +vn 0.9360 -0.3514 -0.0210 +vn 0.9388 -0.3432 -0.0311 +vn 0.9403 -0.3384 -0.0370 +vn 0.0002 -0.9409 -0.3388 +vn -0.5692 0.6881 -0.4500 +vn -0.5630 0.6951 -0.4471 +vn -0.5578 0.7008 -0.4447 +vn 0.0002 -0.9912 0.1321 +vn 0.5689 0.6883 -0.4501 +vn 0.5626 0.6953 -0.4472 +vn 0.5765 0.6797 -0.4535 +vn -0.9332 -0.3451 -0.1002 +vn -0.9367 -0.3363 -0.0975 +vn -0.9402 -0.3271 -0.0947 +vn -0.9259 -0.1545 -0.3448 +vn -0.9311 -0.1294 -0.3411 +vn -0.9114 -0.2123 -0.3525 +vn 0.5780 0.8145 0.0508 +vn 0.5788 0.8138 0.0514 +vn 0.5800 0.8129 0.0522 +vn -0.9378 -0.3064 -0.1634 +vn -0.9396 -0.2981 -0.1685 +vn -0.9313 -0.3334 -0.1466 +vn 0.9379 -0.3060 -0.1633 +vn 0.9397 -0.2977 -0.1684 +vn 0.9453 -0.2678 -0.1864 +vn -0.5783 0.8142 0.0507 +vn -0.5792 0.8136 0.0513 +vn -0.5772 0.8151 0.0499 +vn -0.5820 0.3412 0.7381 +vn -0.5821 0.3411 0.7381 +vn -0.5819 0.3414 0.7382 +vn 0.9260 -0.1543 -0.3445 +vn 0.9312 -0.1292 -0.3407 +vn 0.9420 -0.0622 -0.3298 +vn -0.5565 0.6203 0.5528 +vn -0.5681 0.6094 0.5531 +vn -0.5461 0.6298 0.5524 +vn 0.0002 -0.4374 -0.8993 +vn 0.5562 0.6204 0.5529 +vn 0.5677 0.6096 0.5532 +vn 0.5787 0.5991 0.5534 +vn 0.5814 0.2653 0.7692 +vn 0.5812 0.2651 0.7694 +vn 0.5864 0.2707 0.7634 +vn 0.0002 -0.1916 -0.9815 +vn 0.0002 -0.1920 -0.9814 +vn 0.5817 0.3413 0.7384 +vn 0.5818 0.3412 0.7383 +vn 0.5820 0.3410 0.7383 +vn -0.9408 -0.0140 -0.3388 +vn -0.9427 -0.0059 -0.3337 +vn -0.9363 -0.0314 -0.3497 +vn 0.9409 -0.0139 -0.3384 +vn 0.9428 -0.0058 -0.3333 +vn 0.9468 0.0125 -0.3216 +vn 0.5707 -0.1688 0.8036 +vn -0.9497 -0.0087 -0.3130 +vn -0.9495 -0.0081 -0.3136 +vn -0.9509 -0.0115 -0.3094 +vn 0.9499 -0.0086 -0.3126 +vn 0.9496 -0.0080 -0.3132 +vn 0.9483 -0.0047 -0.3175 +vn -0.5817 0.2652 0.7689 +vn -0.5816 0.2651 0.7691 +vn -0.5770 0.2603 0.7741 +vn 0.0002 -0.1923 -0.9813 +vn 0.5559 -0.8240 -0.1091 +vn 0.5559 -0.8241 -0.1091 +vn -0.9236 -0.2635 -0.2784 +vn 0.9237 -0.2634 -0.2780 +vn -0.5710 -0.1688 0.8034 +vn 0.0002 -0.3219 -0.9468 +vn 0.0000 -0.9962 0.0872 +vn -0.3744 -0.7232 0.5803 +vn 0.0001 -0.8769 -0.4806 +vn 0.3742 -0.7232 0.5805 +vn -0.5558 -0.8241 -0.1093 +vn -0.0088 -0.4569 -0.8895 +vn -0.0168 -0.4513 -0.8922 +vn 0.0002 -0.9409 -0.3387 +vn 0.9442 -0.3257 0.0490 +vn -0.9441 -0.3261 0.0492 +vn 0.0209 -0.4484 -0.8936 +vn 0.9403 -0.3267 -0.0949 +vn -0.9402 -0.3387 -0.0368 +vn -0.5734 0.6656 -0.4777 +vn 0.9337 -0.3577 -0.0132 +vn -0.5768 0.6794 -0.4535 +vn 0.5574 0.7010 -0.4448 +vn -0.9275 -0.3589 -0.1044 +vn -0.9419 -0.0624 -0.3301 +vn 0.5768 0.8153 0.0500 +vn -0.9451 -0.2682 -0.1865 +vn 0.9315 -0.3329 -0.1465 +vn -0.5804 0.8127 0.0521 +vn -0.5823 0.3410 0.7380 +vn 0.9116 -0.2120 -0.3522 +vn -0.5791 0.5989 0.5532 +vn 0.0001 -0.4374 -0.8993 +vn 0.5457 0.6299 0.5526 +vn 0.5767 0.2603 0.7744 +vn 0.5815 0.3415 0.7384 +vn -0.9467 0.0124 -0.3220 +vn 0.9365 -0.0313 -0.3493 +vn -0.9481 -0.0048 -0.3179 +vn 0.9510 -0.0114 -0.3090 +vn -0.5868 0.2706 0.7632 +vn -0.0209 -0.4484 -0.8936 +s 1 +f 1/1/1 2/2/2 3/3/3 +f 2/4/4 4/5/5 3/6/6 +f 5/7/7 6/8/8 4/9/9 +f 7/10/10 8/11/10 9/12/10 +f 6/13/11 10/14/11 11/15/11 +f 12/16/12 13/17/13 1/18/14 +f 1/19/15 11/20/16 12/21/17 +f 14/22/18 15/23/19 16/24/20 +f 5/25/21 17/26/22 14/27/23 +f 7/28/24 18/29/25 13/17/26 +f 13/30/27 17/31/28 2/2/2 +f 19/32/29 14/22/30 16/24/31 +f 20/33/32 21/34/32 22/35/32 +f 17/31/33 23/36/34 24/37/35 +f 9/12/36 25/38/36 20/33/36 +f 17/26/37 26/39/38 14/27/39 +f 18/29/40 20/40/41 23/41/42 +f 22/42/43 27/43/44 28/44/45 +f 26/39/46 29/45/47 30/46/48 +f 20/40/49 28/47/50 23/41/51 +f 15/23/52 30/48/53 31/49/54 +f 23/36/55 29/50/56 24/37/57 +f 27/51/58 32/52/59 33/53/60 +f 31/54/61 34/55/62 35/56/63 +f 28/57/64 33/58/65 29/59/66 +f 22/42/67 36/60/67 37/61/67 +f 30/62/68 33/58/69 34/63/70 +f 32/64/71 38/65/72 39/66/73 +f 37/67/74 40/68/75 41/69/75 +f 34/70/76 32/64/77 39/66/78 +f 37/67/79 42/71/80 27/51/81 +f 35/72/82 39/66/83 43/73/84 +f 38/65/85 44/74/85 45/75/85 +f 42/71/86 46/76/87 47/77/88 +f 39/66/89 48/78/90 43/73/91 +f 32/52/92 47/79/93 49/80/94 +f 41/69/75 50/81/95 46/82/95 +f 45/83/96 51/84/97 52/85/96 +f 47/77/98 53/86/98 54/87/98 +f 38/88/99 52/85/99 48/78/99 +f 47/79/100 44/89/100 49/80/100 +f 50/81/101 53/90/101 46/82/101 +f 55/91/102 56/92/102 57/93/102 +f 44/89/103 58/94/103 57/95/103 +f 59/96/104 60/97/104 53/90/104 +f 44/74/105 56/98/105 45/75/105 +f 54/87/106 60/99/106 58/100/106 +f 55/91/102 58/101/102 60/102/102 +f 50/81/95 43/73/75 48/103/95 +f 11/20/107 4/104/108 6/105/17 +f 8/11/10 19/106/10 16/107/10 +f 59/96/104 51/108/104 55/109/104 +f 50/81/101 52/110/101 59/96/101 +f 25/38/36 16/107/36 15/111/36 +f 10/14/11 12/112/11 11/15/11 +f 40/68/75 35/72/74 43/73/75 +f 36/60/67 31/54/67 35/56/67 +f 21/34/32 15/111/32 31/113/109 +f 1/1/1 13/30/27 2/2/2 +f 2/4/4 5/25/21 4/5/5 +f 5/7/7 19/32/110 6/8/8 +f 7/10/10 10/14/10 8/11/10 +f 6/13/11 19/106/11 10/14/11 +f 12/16/12 7/28/111 13/17/13 +f 1/19/15 3/114/112 11/20/16 +f 14/22/18 26/115/113 15/23/19 +f 5/25/21 2/4/4 17/26/22 +f 7/28/24 9/116/114 18/29/25 +f 13/30/27 18/117/115 17/31/28 +f 19/32/29 5/7/116 14/22/30 +f 20/33/32 25/38/32 21/34/32 +f 17/31/33 18/117/117 23/36/34 +f 9/12/36 8/11/36 25/38/36 +f 17/26/37 24/118/118 26/39/38 +f 18/29/40 9/116/119 20/40/41 +f 22/42/43 37/61/120 27/43/44 +f 26/39/46 24/118/121 29/45/47 +f 20/40/49 22/119/122 28/47/50 +f 15/23/52 26/115/123 30/48/53 +f 23/36/55 28/120/124 29/50/56 +f 27/51/58 42/71/125 32/52/59 +f 31/54/61 30/121/126 34/55/62 +f 28/57/64 27/122/127 33/58/65 +f 22/42/67 21/123/128 36/60/67 +f 30/62/68 29/59/129 33/58/69 +f 32/64/71 49/124/130 38/65/72 +f 37/67/74 36/125/74 40/68/75 +f 34/70/76 33/126/131 32/64/77 +f 37/67/79 41/69/132 42/71/80 +f 35/72/82 34/70/133 39/66/83 +f 38/65/85 49/124/85 44/74/85 +f 42/71/86 41/69/134 46/76/87 +f 39/66/89 38/88/135 48/78/90 +f 32/52/92 42/71/136 47/79/93 +f 41/69/75 40/68/75 50/81/95 +f 45/83/96 56/127/97 51/84/97 +f 47/77/98 46/76/98 53/86/98 +f 38/88/99 45/83/99 52/85/99 +f 47/79/100 54/128/100 44/89/100 +f 50/81/101 59/96/101 53/90/101 +f 55/91/102 51/129/102 56/92/102 +f 44/89/103 54/128/103 58/94/103 +f 59/96/104 55/109/104 60/97/104 +f 44/74/105 57/130/105 56/98/105 +f 54/87/106 53/86/106 60/99/106 +f 55/91/102 57/93/102 58/101/102 +f 50/81/95 40/68/75 43/73/75 +f 11/20/107 3/114/137 4/104/108 +f 8/11/10 10/14/10 19/106/10 +f 59/96/104 52/110/104 51/108/104 +f 50/81/101 48/103/101 52/110/101 +f 25/38/36 8/11/36 16/107/36 +f 10/14/11 7/10/11 12/112/11 +f 40/68/75 36/125/74 35/72/74 +f 36/60/67 21/123/128 31/54/67 +f 21/34/32 25/38/32 15/111/32 diff --git a/src/main/resources/assets/hbm/models/cwis_base.obj b/src/main/resources/assets/hbm/models/cwis_base.obj deleted file mode 100644 index 47dc23c11..000000000 --- a/src/main/resources/assets/hbm/models/cwis_base.obj +++ /dev/null @@ -1,44 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_base.blend' -# www.blender.org -o Cube_Cube.001 -v -1.000000 0.000000 1.000000 -v -1.000000 0.250000 1.000000 -v -1.000000 0.000000 -1.000000 -v -1.000000 0.250000 -1.000000 -v 1.000000 0.000000 1.000000 -v 1.000000 0.250000 1.000000 -v 1.000000 0.000000 -1.000000 -v 1.000000 0.250000 -1.000000 -vt 0.444444 0.444444 -vt 0.444444 0.500000 -vt 0.000000 0.500000 -vt 0.888889 0.444444 -vt 0.888889 0.500000 -vt 0.444444 1.000000 -vt 0.444444 0.944444 -vt 0.888888 0.944444 -vt 0.000000 1.000000 -vt 0.000000 0.944444 -vt 0.444444 0.000000 -vt 0.000000 0.444444 -vt 0.888888 1.000000 -vt 0.000000 0.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.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -s off -f 4/1/1 3/2/1 1/3/1 -f 8/4/2 7/5/2 3/2/2 -f 6/6/3 5/7/3 7/8/3 -f 2/9/4 1/10/4 5/7/4 -f 3/2/5 7/7/5 5/10/5 -f 8/11/6 4/1/6 2/12/6 -f 2/12/1 4/1/1 1/3/1 -f 4/1/2 8/4/2 3/2/2 -f 8/13/3 6/6/3 7/8/3 -f 6/6/4 2/9/4 5/7/4 -f 1/3/5 3/2/5 5/10/5 -f 6/14/6 8/11/6 2/12/6 diff --git a/src/main/resources/assets/hbm/models/cwis_gun.obj b/src/main/resources/assets/hbm/models/cwis_gun.obj deleted file mode 100644 index b0a3f9bfc..000000000 --- a/src/main/resources/assets/hbm/models/cwis_gun.obj +++ /dev/null @@ -1,438 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_gun.blend' -# www.blender.org -o Cylinder -v -0.000000 0.125000 0.950000 -v -0.000000 0.125000 1.050000 -v 0.088388 0.088388 0.950000 -v 0.088388 0.088388 1.050000 -v 0.125000 -0.000000 0.950000 -v 0.125000 -0.000000 1.050000 -v 0.088388 -0.088388 0.950000 -v 0.088388 -0.088388 1.050000 -v -0.000000 -0.125000 0.950000 -v -0.000000 -0.125000 1.050000 -v -0.088388 -0.088388 0.950000 -v -0.088388 -0.088388 1.050000 -v -0.125000 0.000000 0.950000 -v -0.125000 0.000000 1.050000 -v -0.088388 0.088388 0.950000 -v -0.088388 0.088388 1.050000 -v -0.000000 0.125000 0.450000 -v -0.000000 0.125000 0.550000 -v 0.088388 0.088388 0.450000 -v 0.088388 0.088388 0.550000 -v 0.125000 -0.000000 0.450000 -v 0.125000 -0.000000 0.550000 -v 0.088388 -0.088388 0.450000 -v 0.088388 -0.088388 0.550000 -v -0.000000 -0.125000 0.450000 -v -0.000000 -0.125000 0.550000 -v -0.088388 -0.088388 0.450000 -v -0.088388 -0.088388 0.550000 -v -0.125000 0.000000 0.450000 -v -0.125000 0.000000 0.550000 -v -0.088388 0.088388 0.450000 -v -0.088388 0.088388 0.550000 -v -0.000000 0.125000 1.450000 -v -0.000000 0.125000 1.950000 -v 0.088388 0.088388 1.450000 -v 0.088388 0.088388 1.950000 -v 0.125000 -0.000000 1.450000 -v 0.125000 -0.000000 1.950000 -v 0.088388 -0.088388 1.450000 -v 0.088388 -0.088388 1.950000 -v -0.000000 -0.125000 1.450000 -v -0.000000 -0.125000 1.950000 -v -0.088388 -0.088388 1.450000 -v -0.088388 -0.088388 1.950000 -v -0.125000 0.000000 1.450000 -v -0.125000 0.000000 1.950000 -v -0.088388 0.088388 1.450000 -v -0.088388 0.088388 1.950000 -v -0.025000 0.050000 2.000000 -v -0.025000 0.100000 2.000000 -v -0.025000 0.050000 0.550000 -v -0.025000 0.100000 0.550000 -v 0.025000 0.050000 2.000000 -v 0.025000 0.100000 2.000000 -v 0.025000 0.050000 0.550000 -v 0.025000 0.100000 0.550000 -v -0.025000 -0.100000 2.000000 -v -0.025000 -0.050000 2.000000 -v -0.025000 -0.100000 0.550000 -v -0.025000 -0.050000 0.550000 -v 0.025000 -0.100000 2.000000 -v 0.025000 -0.050000 2.000000 -v 0.025000 -0.100000 0.550000 -v 0.025000 -0.050000 0.550000 -v 0.030801 0.046651 2.000000 -v 0.074103 0.071651 2.000000 -v 0.030801 0.046651 0.550000 -v 0.074103 0.071651 0.550000 -v 0.055801 0.003349 2.000000 -v 0.099103 0.028349 2.000000 -v 0.055801 0.003349 0.550000 -v 0.099103 0.028349 0.550000 -v -0.099103 -0.028349 2.000000 -v -0.055801 -0.003349 2.000000 -v -0.099103 -0.028349 0.550000 -v -0.055801 -0.003349 0.550000 -v -0.074103 -0.071651 2.000000 -v -0.030801 -0.046651 2.000000 -v -0.074103 -0.071651 0.550000 -v -0.030801 -0.046651 0.550000 -v 0.055801 -0.003349 2.000000 -v 0.099103 -0.028349 2.000000 -v 0.055801 -0.003349 0.550000 -v 0.099103 -0.028349 0.550000 -v 0.030801 -0.046651 2.000000 -v 0.074103 -0.071651 2.000000 -v 0.030801 -0.046651 0.550000 -v 0.074103 -0.071651 0.550000 -v -0.074103 0.071651 2.000000 -v -0.030801 0.046651 2.000000 -v -0.074103 0.071651 0.550000 -v -0.030801 0.046651 0.550000 -v -0.099103 0.028349 2.000000 -v -0.055801 0.003349 2.000000 -v -0.099103 0.028349 0.550000 -v -0.055801 0.003349 0.550000 -vt 0.550118 0.760811 -vt 0.591204 0.760811 -vt 0.591204 0.803757 -vt 0.632291 0.760811 -vt 0.673377 0.760811 -vt 0.673377 0.803757 -vt 0.714463 0.760811 -vt 0.714463 0.803757 -vt 0.385773 0.760811 -vt 0.426859 0.760811 -vt 0.426859 0.803757 -vt 0.467946 0.760811 -vt 0.781571 0.779002 -vt 0.752518 0.708863 -vt 0.822657 0.679811 -vt 0.509032 0.760811 -vt 0.550118 0.803757 -vt 0.509032 0.803757 -vt 0.781571 0.916248 -vt 0.752519 0.846109 -vt 0.822657 0.817057 -vt 0.550118 0.679811 -vt 0.550118 0.722756 -vt 0.509032 0.722756 -vt 0.467946 0.722756 -vt 0.467946 0.679811 -vt 0.426859 0.722756 -vt 0.426859 0.679811 -vt 0.385773 0.722756 -vt 0.385773 0.679811 -vt 0.714463 0.722756 -vt 0.673377 0.722756 -vt 0.673377 0.679811 -vt 0.632291 0.722756 -vt 0.951920 0.118219 -vt 0.881781 0.089166 -vt 0.910834 0.019028 -vt 0.591204 0.722756 -vt 0.632291 0.679811 -vt 0.183373 0.233755 -vt 0.142286 0.233755 -vt 0.142286 0.019028 -vt 0.101200 0.233755 -vt 0.101200 0.019028 -vt 0.060114 0.233755 -vt 0.060114 0.019028 -vt 0.019028 0.233755 -vt 0.019028 0.019028 -vt 0.347718 0.233755 -vt 0.306632 0.233755 -vt 0.306632 0.019028 -vt 0.265545 0.233755 -vt 0.265545 0.019028 -vt 0.414825 0.941003 -vt 0.414825 0.841812 -vt 0.455912 0.841812 -vt 0.224459 0.019028 -vt 0.224459 0.233755 -vt 0.552072 0.941003 -vt 0.552072 0.841812 -vt 0.593158 0.841812 -vt 0.676830 0.019028 -vt 0.698302 0.019028 -vt 0.698303 0.641726 -vt 0.509936 0.019028 -vt 0.531409 0.019028 -vt 0.531408 0.641726 -vt 0.655356 0.641726 -vt 0.633883 0.641726 -vt 0.633884 0.019028 -vt 0.266926 0.293283 -vt 0.266926 0.271810 -vt 0.288398 0.271810 -vt 0.719775 0.019028 -vt 0.719777 0.641726 -vt 0.655357 0.019028 -vt 0.676830 0.641726 -vt 0.574354 0.641726 -vt 0.552882 0.641726 -vt 0.552881 0.019028 -vt 0.266926 0.352811 -vt 0.266926 0.331338 -vt 0.288398 0.331338 -vt 0.574355 0.019028 -vt 0.595827 0.019028 -vt 0.595828 0.641726 -vt 0.061974 0.271810 -vt 0.083446 0.271810 -vt 0.083448 0.894508 -vt 0.757834 0.019028 -vt 0.779306 0.019028 -vt 0.779306 0.641726 -vt 0.040500 0.894508 -vt 0.019028 0.894508 -vt 0.019028 0.271810 -vt 0.288398 0.590923 -vt 0.266926 0.590923 -vt 0.266926 0.569450 -vt 0.104919 0.271810 -vt 0.104921 0.894508 -vt 0.040501 0.271810 -vt 0.061974 0.894508 -vt 0.822252 0.641725 -vt 0.800780 0.641726 -vt 0.800779 0.019028 -vt 0.288398 0.531395 -vt 0.266926 0.531395 -vt 0.266926 0.509922 -vt 0.822253 0.019028 -vt 0.843725 0.019028 -vt 0.843726 0.641726 -vt 0.428934 0.019043 -vt 0.450407 0.019050 -vt 0.450193 0.641748 -vt 0.142978 0.271810 -vt 0.164451 0.271810 -vt 0.164450 0.894508 -vt 0.407245 0.641733 -vt 0.385773 0.641726 -vt 0.385988 0.019028 -vt 0.266926 0.450394 -vt 0.288398 0.450394 -vt 0.288398 0.471867 -vt 0.471879 0.019057 -vt 0.471667 0.641755 -vt 0.407462 0.019035 -vt 0.428719 0.641741 -vt 0.207397 0.894508 -vt 0.185924 0.894508 -vt 0.185923 0.271810 -vt 0.288398 0.390866 -vt 0.288398 0.412339 -vt 0.266926 0.412339 -vt 0.207397 0.271810 -vt 0.228869 0.271810 -vt 0.228870 0.894508 -vt 0.632291 0.803757 -vt 0.385773 0.803757 -vt 0.467946 0.803757 -vt 0.851710 0.708863 -vt 0.851710 0.749949 -vt 0.822657 0.779002 -vt 0.752519 0.749949 -vt 0.781571 0.679811 -vt 0.851710 0.846109 -vt 0.851710 0.887195 -vt 0.822657 0.916248 -vt 0.752518 0.887195 -vt 0.781571 0.817057 -vt 0.509032 0.679811 -vt 0.714463 0.679811 -vt 0.951920 0.019028 -vt 0.980972 0.048080 -vt 0.980972 0.089166 -vt 0.910834 0.118219 -vt 0.881781 0.048080 -vt 0.591204 0.679811 -vt 0.183373 0.019028 -vt 0.347718 0.019028 -vt 0.484964 0.870865 -vt 0.484964 0.911951 -vt 0.455912 0.941003 -vt 0.385773 0.911951 -vt 0.385773 0.870865 -vt 0.622210 0.870864 -vt 0.622210 0.911951 -vt 0.593158 0.941003 -vt 0.523019 0.911951 -vt 0.523019 0.870864 -vt 0.509934 0.641726 -vt 0.288398 0.293283 -vt 0.288398 0.352811 -vt 0.757832 0.641725 -vt 0.288398 0.569450 -vt 0.288398 0.509922 -vt 0.142977 0.894508 -vt 0.266926 0.471867 -vt 0.266926 0.390866 -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.000000 0.000000 1.000000 -vn -0.382700 0.923900 0.000000 -vn -0.923900 0.382700 -0.000000 -vn -0.000000 -0.000000 -1.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.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.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 -s off -f 2/1/1 4/2/1 3/3/1 -f 3/3/2 4/2/2 6/4/2 -f 6/4/3 8/5/3 7/6/3 -f 8/5/4 10/7/4 9/8/4 -f 10/9/5 12/10/5 11/11/5 -f 11/11/6 12/10/6 14/12/6 -f 14/13/7 10/14/7 6/15/7 -f 16/16/8 2/1/8 1/17/8 -f 14/12/9 16/16/9 15/18/9 -f 7/19/10 11/20/10 15/21/10 -f 17/22/1 18/23/1 20/24/1 -f 20/24/2 22/25/2 21/26/2 -f 22/25/3 24/27/3 23/28/3 -f 24/27/4 26/29/4 25/30/4 -f 26/31/5 28/32/5 27/33/5 -f 27/33/6 28/32/6 30/34/6 -f 30/35/7 26/36/7 22/37/7 -f 32/38/8 18/23/8 17/22/8 -f 29/39/9 30/34/9 32/38/9 -f 34/40/1 36/41/1 35/42/1 -f 36/41/2 38/43/2 37/44/2 -f 38/43/3 40/45/3 39/46/3 -f 40/45/4 42/47/4 41/48/4 -f 42/49/5 44/50/5 43/51/5 -f 44/50/6 46/52/6 45/53/6 -f 46/54/7 40/55/7 38/56/7 -f 47/57/8 48/58/8 34/40/8 -f 46/52/9 48/58/9 47/57/9 -f 39/59/10 45/60/10 47/61/10 -f 52/62/11 51/63/11 49/64/11 -f 60/65/11 59/66/11 57/67/11 -f 54/68/12 53/69/12 55/70/12 -f 50/71/7 49/72/7 53/73/7 -f 51/63/13 55/74/13 53/75/13 -f 56/76/14 52/62/14 50/77/14 -f 62/78/12 61/79/12 63/80/12 -f 58/81/7 57/82/7 61/83/7 -f 59/66/13 63/80/13 61/79/13 -f 64/84/14 60/85/14 58/86/14 -f 68/87/15 67/88/15 65/89/15 -f 76/90/15 75/91/15 73/92/15 -f 70/93/16 69/94/16 71/95/16 -f 66/96/7 65/97/7 69/98/7 -f 67/88/17 71/99/17 69/100/17 -f 72/101/18 68/87/18 66/102/18 -f 78/103/16 77/104/16 79/105/16 -f 74/106/7 73/107/7 77/108/7 -f 75/91/17 79/105/17 77/104/17 -f 80/109/18 76/110/18 74/111/18 -f 84/112/19 83/113/19 81/114/19 -f 92/115/19 91/116/19 89/117/19 -f 86/118/20 85/119/20 87/120/20 -f 82/121/7 81/122/7 85/123/7 -f 83/113/21 87/124/21 85/125/21 -f 88/126/22 84/112/22 82/127/22 -f 94/128/20 93/129/20 95/130/20 -f 94/131/7 90/132/7 89/133/7 -f 91/116/21 95/130/21 93/129/21 -f 96/134/22 92/135/22 90/136/22 -f 1/17/1 2/1/1 3/3/1 -f 5/137/2 3/3/2 6/4/2 -f 5/137/3 6/4/3 7/6/3 -f 7/6/4 8/5/4 9/8/4 -f 9/138/5 10/9/5 11/11/5 -f 13/139/6 11/11/6 14/12/6 -f 6/15/7 4/140/7 2/141/7 -f 2/141/7 16/142/7 14/13/7 -f 14/13/7 12/143/7 10/14/7 -f 10/14/7 8/144/7 6/15/7 -f 6/15/7 2/141/7 14/13/7 -f 15/18/8 16/16/8 1/17/8 -f 13/139/9 14/12/9 15/18/9 -f 15/21/10 1/145/10 3/146/10 -f 3/146/10 5/147/10 15/21/10 -f 7/19/10 9/148/10 11/20/10 -f 11/20/10 13/149/10 15/21/10 -f 15/21/10 5/147/10 7/19/10 -f 19/150/1 17/22/1 20/24/1 -f 19/150/2 20/24/2 21/26/2 -f 21/26/3 22/25/3 23/28/3 -f 23/28/4 24/27/4 25/30/4 -f 25/151/5 26/31/5 27/33/5 -f 29/39/6 27/33/6 30/34/6 -f 22/37/7 20/152/7 18/153/7 -f 18/153/7 32/154/7 30/35/7 -f 30/35/7 28/155/7 26/36/7 -f 26/36/7 24/156/7 22/37/7 -f 22/37/7 18/153/7 30/35/7 -f 31/157/8 32/38/8 17/22/8 -f 31/157/9 29/39/9 32/38/9 -f 33/158/1 34/40/1 35/42/1 -f 35/42/2 36/41/2 37/44/2 -f 37/44/3 38/43/3 39/46/3 -f 39/46/4 40/45/4 41/48/4 -f 41/159/5 42/49/5 43/51/5 -f 43/51/6 44/50/6 45/53/6 -f 38/56/7 36/160/7 34/161/7 -f 34/161/7 48/162/7 46/54/7 -f 46/54/7 44/163/7 42/164/7 -f 42/164/7 40/55/7 46/54/7 -f 38/56/7 34/161/7 46/54/7 -f 33/158/8 47/57/8 34/40/8 -f 45/53/9 46/52/9 47/57/9 -f 47/61/10 33/165/10 35/166/10 -f 35/166/10 37/167/10 47/61/10 -f 39/59/10 41/168/10 43/169/10 -f 43/169/10 45/60/10 39/59/10 -f 47/61/10 37/167/10 39/59/10 -f 50/77/11 52/62/11 49/64/11 -f 58/170/11 60/65/11 57/67/11 -f 56/76/12 54/68/12 55/70/12 -f 54/171/7 50/71/7 53/73/7 -f 49/64/13 51/63/13 53/75/13 -f 54/68/14 56/76/14 50/77/14 -f 64/84/12 62/78/12 63/80/12 -f 62/172/7 58/81/7 61/83/7 -f 57/67/13 59/66/13 61/79/13 -f 62/78/14 64/84/14 58/86/14 -f 66/102/15 68/87/15 65/89/15 -f 74/173/15 76/90/15 73/92/15 -f 72/101/16 70/93/16 71/95/16 -f 70/174/7 66/96/7 69/98/7 -f 65/89/17 67/88/17 69/100/17 -f 70/93/18 72/101/18 66/102/18 -f 80/109/16 78/103/16 79/105/16 -f 78/175/7 74/106/7 77/108/7 -f 73/92/17 75/91/17 77/104/17 -f 78/103/18 80/109/18 74/111/18 -f 82/127/19 84/112/19 81/114/19 -f 90/176/19 92/115/19 89/117/19 -f 88/126/20 86/118/20 87/120/20 -f 86/177/7 82/121/7 85/123/7 -f 81/114/21 83/113/21 85/125/21 -f 86/118/22 88/126/22 82/127/22 -f 96/134/20 94/128/20 95/130/20 -f 93/178/7 94/131/7 89/133/7 -f 89/117/21 91/116/21 93/129/21 -f 94/128/22 96/134/22 90/136/22 diff --git a/src/main/resources/assets/hbm/models/cwis_head.obj b/src/main/resources/assets/hbm/models/cwis_head.obj deleted file mode 100644 index fe093b5d8..000000000 --- a/src/main/resources/assets/hbm/models/cwis_head.obj +++ /dev/null @@ -1,613 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_head.blend' -# www.blender.org -o Cube.001_Cube.002 -v -0.500000 -0.250000 0.500000 -v -0.500000 0.250000 0.500000 -v -0.500000 -0.250000 -0.500000 -v -0.500000 0.250000 -0.500000 -v 0.500000 -0.250000 0.500000 -v 0.500000 0.250000 0.500000 -v 0.500000 -0.250000 -0.500000 -v 0.500000 0.250000 -0.500000 -v -0.187500 -0.187500 1.000000 -v -0.187500 0.187500 1.000000 -v 0.187500 -0.187500 1.000000 -v 0.187500 0.187500 1.000000 -v 0.250000 2.183013 0.000000 -v 0.000000 2.250000 0.000000 -v 0.000000 0.250000 -0.500000 -v 0.250000 0.250000 -0.433013 -v 0.433013 0.250000 -0.250000 -v 0.500000 0.250000 0.000000 -v 0.433013 0.250000 0.250000 -v 0.250000 0.250000 0.433013 -v 0.000000 0.250000 0.500000 -v -0.250000 0.250000 0.433013 -v -0.433013 0.250000 0.250000 -v -0.500000 0.250000 0.000000 -v -0.433013 0.250000 -0.250000 -v -0.250000 0.250000 -0.433013 -v 0.433013 2.000000 0.000000 -v 0.500000 1.750000 0.000000 -v -0.433013 1.750000 0.250000 -v 0.433013 1.750000 -0.250000 -v 0.375000 2.000000 -0.216506 -v 0.216506 2.183013 -0.125000 -v -0.500000 1.750000 0.000000 -v -0.433013 2.000000 0.000000 -v -0.250000 2.183012 0.000000 -v -0.375000 2.000000 0.216506 -v -0.216507 2.183012 0.125000 -v -0.250000 1.750000 0.433013 -v 0.250000 1.750000 -0.433013 -v 0.216506 2.000000 -0.375000 -v 0.125000 2.183013 -0.216506 -v -0.216506 2.000000 0.375000 -v -0.125000 2.183012 0.216507 -v 0.000000 1.750000 0.500000 -v -0.000000 1.750000 -0.500000 -v -0.000000 2.000000 -0.433013 -v -0.000000 2.183013 -0.250000 -v 0.000000 2.000000 0.433013 -v 0.000000 2.183012 0.250000 -v 0.250000 1.750000 0.433013 -v -0.250000 1.750000 -0.433013 -v -0.216507 2.000000 -0.375000 -v -0.125000 2.183013 -0.216506 -v 0.216507 2.000000 0.375000 -v 0.125000 2.183012 0.216507 -v 0.433013 1.750000 0.250000 -v -0.433013 1.750000 -0.250000 -v -0.375000 2.000000 -0.216506 -v -0.216507 2.183013 -0.125000 -v 0.375000 2.000000 0.216506 -v 0.216507 2.183012 0.125000 -v 0.000000 -0.250000 -0.650000 -v 0.000000 -0.250000 0.500000 -v 0.125000 -0.283494 -0.650000 -v 0.125000 -0.283494 0.500000 -v 0.216506 -0.375000 -0.650000 -v 0.216506 -0.375000 0.500000 -v 0.250000 -0.500000 -0.650000 -v 0.250000 -0.500000 0.500000 -v 0.216506 -0.625000 -0.650000 -v 0.216506 -0.625000 0.500000 -v 0.125000 -0.716506 -0.650000 -v 0.125000 -0.716506 0.500000 -v 0.000000 -0.750000 -0.650000 -v 0.000000 -0.750000 0.500000 -v -0.125000 -0.716506 -0.650000 -v -0.125000 -0.716506 0.500000 -v -0.216506 -0.625000 -0.650000 -v -0.216506 -0.625000 0.500000 -v -0.250000 -0.500000 -0.650000 -v -0.250000 -0.500000 0.500000 -v -0.216506 -0.375000 -0.650000 -v -0.216506 -0.375000 0.500000 -v -0.125000 -0.283494 -0.650000 -v -0.125000 -0.283494 0.500000 -v 0.106250 -0.315970 0.650000 -v -0.000000 -0.287500 0.650000 -v 0.184030 -0.393750 0.650000 -v 0.212500 -0.500000 0.650000 -v 0.184030 -0.606250 0.650000 -v 0.106250 -0.684030 0.650000 -v 0.000000 -0.712500 0.650000 -v -0.106250 -0.684030 0.650000 -v -0.184030 -0.606250 0.650000 -v -0.212500 -0.500000 0.650000 -v -0.184030 -0.393750 0.650000 -v -0.106250 -0.315970 0.650000 -v -0.300000 -0.500000 0.300000 -v -0.400000 -0.250000 0.400000 -v -0.300000 -0.500000 0.250000 -v -0.400000 -0.250000 0.150000 -v 0.300000 -0.500000 0.300000 -v 0.400000 -0.250000 0.400000 -v 0.300000 -0.500000 0.250000 -v 0.400000 -0.250000 0.150000 -v -0.300000 -0.500000 -0.250000 -v -0.400000 -0.250000 -0.150000 -v -0.300000 -0.500000 -0.300000 -v -0.400000 -0.250000 -0.400000 -v 0.300000 -0.500000 -0.250000 -v 0.400000 -0.250000 -0.150000 -v 0.300000 -0.500000 -0.300000 -v 0.400000 -0.250000 -0.400000 -vt 0.192029 0.192029 -vt 0.192029 0.280351 -vt 0.015385 0.280351 -vt 0.368673 0.192029 -vt 0.368673 0.280351 -vt 0.545317 0.192029 -vt 0.545317 0.280351 -vt 0.807971 0.378738 -vt 0.807971 0.290416 -vt 0.984615 0.290416 -vt 0.368673 0.456995 -vt 0.192029 0.015385 -vt 0.680241 0.170636 -vt 0.680241 0.104395 -vt 0.746483 0.104395 -vt 0.801684 0.259645 -vt 0.625040 0.259645 -vt 0.625040 0.015385 -vt 0.801684 0.015385 -vt 0.576088 0.181676 -vt 0.564012 0.487768 -vt 0.564011 0.752734 -vt 0.518292 0.752734 -vt 0.472573 0.752733 -vt 0.472575 0.487768 -vt 0.426855 0.752733 -vt 0.426856 0.487767 -vt 0.381136 0.752733 -vt 0.381137 0.487767 -vt 0.335417 0.752733 -vt 0.278268 0.843295 -vt 0.266839 0.887562 -vt 0.255409 0.843295 -vt 0.247042 0.798349 -vt 0.286636 0.798349 -vt 0.243980 0.752733 -vt 0.323987 0.843296 -vt 0.312557 0.887563 -vt 0.301128 0.843296 -vt 0.292761 0.798349 -vt 0.332355 0.798349 -vt 0.289698 0.752733 -vt 0.369706 0.843296 -vt 0.358276 0.887563 -vt 0.346847 0.843296 -vt 0.403995 0.887563 -vt 0.392565 0.843296 -vt 0.415425 0.843296 -vt 0.449713 0.887563 -vt 0.438284 0.843296 -vt 0.461143 0.843296 -vt 0.484003 0.843296 -vt 0.506862 0.843296 -vt 0.495432 0.887563 -vt 0.529722 0.843296 -vt 0.552581 0.843296 -vt 0.541151 0.887563 -vt 0.049674 0.843295 -vt 0.038244 0.887562 -vt 0.026815 0.843295 -vt 0.095393 0.843295 -vt 0.083963 0.887562 -vt 0.072534 0.843295 -vt 0.141112 0.843295 -vt 0.129682 0.887562 -vt 0.118253 0.843295 -vt 0.163971 0.843295 -vt 0.186831 0.843295 -vt 0.175401 0.887562 -vt 0.232550 0.843295 -vt 0.221120 0.887563 -vt 0.209690 0.843295 -vt 0.201323 0.798349 -vt 0.198261 0.752732 -vt 0.240917 0.798349 -vt 0.195198 0.798348 -vt 0.155604 0.798348 -vt 0.109886 0.798348 -vt 0.106823 0.752732 -vt 0.152542 0.752732 -vt 0.149479 0.798348 -vt 0.064167 0.798348 -vt 0.103760 0.798348 -vt 0.061104 0.752732 -vt 0.018448 0.798348 -vt 0.058041 0.798348 -vt 0.015385 0.752732 -vt 0.521355 0.798350 -vt 0.560948 0.798350 -vt 0.475636 0.798350 -vt 0.515230 0.798350 -vt 0.429917 0.798349 -vt 0.469511 0.798349 -vt 0.423792 0.798349 -vt 0.338480 0.798349 -vt 0.378073 0.798349 -vt 0.384198 0.798349 -vt 0.015386 0.487766 -vt 0.061105 0.487766 -vt 0.289699 0.487767 -vt 0.198262 0.487767 -vt 0.152543 0.487766 -vt 0.746483 0.170636 -vt 0.850636 0.093354 -vt 0.622041 0.762079 -vt 0.622041 0.739219 -vt 0.825182 0.739220 -vt 0.622041 0.716360 -vt 0.825182 0.716360 -vt 0.622041 0.693501 -vt 0.825182 0.693501 -vt 0.622041 0.670641 -vt 0.825182 0.670642 -vt 0.622041 0.647782 -vt 0.825182 0.647782 -vt 0.622041 0.624922 -vt 0.825182 0.624923 -vt 0.622042 0.602063 -vt 0.825182 0.602064 -vt 0.622042 0.579204 -vt 0.825182 0.579204 -vt 0.622042 0.556344 -vt 0.825182 0.556345 -vt 0.622042 0.533485 -vt 0.825182 0.533486 -vt 0.594783 0.691786 -vt 0.594783 0.672356 -vt 0.622042 0.510625 -vt 0.622042 0.487766 -vt 0.825183 0.487767 -vt 0.825182 0.510626 -vt 0.911978 0.846936 -vt 0.838096 0.866733 -vt 0.857892 0.792850 -vt 0.855953 0.514308 -vt 0.882496 0.487766 -vt 0.928469 0.533739 -vt 0.594784 0.508911 -vt 0.594783 0.760364 -vt 0.594783 0.740934 -vt 0.594783 0.714646 -vt 0.594783 0.695215 -vt 0.594784 0.531770 -vt 0.594784 0.512340 -vt 0.594783 0.737505 -vt 0.594784 0.554630 -vt 0.594784 0.535199 -vt 0.594783 0.577489 -vt 0.594784 0.558059 -vt 0.594783 0.600348 -vt 0.594783 0.623208 -vt 0.594783 0.603777 -vt 0.594783 0.646067 -vt 0.594783 0.626637 -vt 0.594783 0.668927 -vt 0.594783 0.649496 -vt 0.576088 0.320315 -vt 0.623651 0.337979 -vt 0.623651 0.346811 -vt 0.747302 0.290416 -vt 0.729637 0.337979 -vt 0.777200 0.364476 -vt 0.729637 0.346811 -vt 0.605986 0.394374 -vt 0.594783 0.822748 -vt 0.642346 0.840413 -vt 0.642346 0.849245 -vt 0.765997 0.792850 -vt 0.748332 0.840413 -vt 0.795895 0.866909 -vt 0.748332 0.849245 -vt 0.624682 0.896808 -vt 0.015385 0.192029 -vt 0.984615 0.378738 -vt 0.192029 0.456995 -vt 0.368673 0.015385 -vt 0.576088 0.093354 -vt 0.518293 0.487768 -vt 0.335418 0.487767 -vt 0.106824 0.487766 -vt 0.243980 0.487767 -vt 0.850636 0.181676 -vt 0.825182 0.762079 -vt 0.880752 0.792850 -vt 0.900549 0.804280 -vt 0.911978 0.824077 -vt 0.900549 0.866733 -vt 0.880752 0.878162 -vt 0.857892 0.878162 -vt 0.826666 0.846936 -vt 0.826666 0.824076 -vt 0.838096 0.804280 -vt 0.918754 0.550566 -vt 0.865668 0.550566 -vt 0.901926 0.560282 -vt 0.882496 0.560281 -vt 0.855953 0.533739 -vt 0.865669 0.497481 -vt 0.901926 0.487766 -vt 0.918754 0.497481 -vt 0.928469 0.514309 -vt 0.594784 0.489480 -vt 0.594783 0.718075 -vt 0.594783 0.580918 -vt 0.576088 0.364476 -vt 0.605986 0.290416 -vt 0.777200 0.320315 -vt 0.747302 0.394374 -vt 0.594783 0.866909 -vt 0.624682 0.792850 -vt 0.795895 0.822748 -vt 0.765997 0.896808 -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.000000 0.992300 0.124000 -vn 0.000000 -0.992300 0.124000 -vn -0.848000 0.000000 0.530000 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn -0.069200 0.963600 0.258200 -vn -0.186200 0.694700 0.694700 -vn -0.250600 0.250600 0.935100 -vn 0.069200 0.963600 0.258200 -vn 0.186200 0.694700 0.694700 -vn 0.250600 0.250600 0.935100 -vn 0.189000 0.963600 0.189000 -vn 0.258200 0.963600 0.069200 -vn 0.258200 0.963600 -0.069200 -vn 0.189000 0.963600 -0.189000 -vn 0.069200 0.963600 -0.258200 -vn -0.069200 0.963600 -0.258200 -vn -0.189000 0.963600 -0.189000 -vn -0.258200 0.963600 -0.069200 -vn -0.258200 0.963600 0.069200 -vn -0.189000 0.963600 0.189000 -vn -0.508600 0.694700 0.508600 -vn -0.684600 0.250600 0.684600 -vn -0.694700 0.694700 0.186200 -vn -0.935100 0.250600 0.250600 -vn -0.694700 0.694700 -0.186200 -vn -0.935100 0.250600 -0.250600 -vn -0.508600 0.694700 -0.508600 -vn -0.684600 0.250600 -0.684500 -vn -0.186200 0.694700 -0.694700 -vn -0.250600 0.250600 -0.935100 -vn 0.186200 0.694700 -0.694700 -vn 0.250600 0.250600 -0.935100 -vn 0.508600 0.694700 -0.508600 -vn 0.684600 0.250600 -0.684500 -vn 0.694700 0.694700 -0.186200 -vn 0.935100 0.250600 -0.250600 -vn 0.694700 0.694700 0.186200 -vn 0.508600 0.694700 0.508600 -vn 0.684600 0.250600 0.684500 -vn 0.935100 0.250600 0.250600 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.258800 -0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 -0.000000 0.707100 -vn -0.965900 -0.000000 0.258800 -vn -0.965900 -0.000000 -0.258800 -vn 0.848000 0.000000 0.530000 -vn 0.258800 0.965900 -0.000000 -vn 0.707100 0.707100 -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.258800 -0.965900 0.000000 -vn -0.258800 -0.965900 0.000000 -vn -0.707100 -0.707100 0.000000 -vn -0.965900 -0.258800 0.000000 -vn -0.965900 0.258800 -0.000000 -vn 0.938900 -0.251600 0.234700 -vn -0.258800 0.965900 -0.000000 -vn -0.707100 0.707100 -0.000000 -vn -0.251600 0.938900 0.234700 -vn 0.251600 0.938900 0.234700 -vn 0.938900 0.251600 0.234700 -vn -0.687400 0.687300 0.234700 -vn 0.687400 0.687300 0.234700 -vn -0.938900 0.251600 0.234700 -vn -0.938900 -0.251600 0.234700 -vn -0.687300 -0.687400 0.234700 -vn -0.251600 -0.938900 0.234700 -vn 0.251600 -0.938900 0.234700 -vn 0.687300 -0.687300 0.234700 -vn -0.928500 -0.371400 0.000000 -vn 0.000000 -0.371400 -0.928500 -vn 0.928500 -0.371400 0.000000 -vn 0.000000 -0.371400 0.928500 -vn 0.684600 0.250600 -0.684600 -vn 0.684600 0.250600 0.684600 -vn 0.687300 0.687400 0.234700 -vn 0.687300 -0.687400 0.234700 -s off -f 4/1/1 3/2/1 1/3/1 -f 8/4/2 7/5/2 3/2/2 -f 6/6/3 5/7/3 7/5/3 -f 2/8/4 1/9/4 5/10/4 -f 3/2/5 7/5/5 5/11/5 -f 8/4/6 4/1/6 2/12/6 -f 10/13/4 9/14/4 11/15/4 -f 6/16/7 2/17/7 10/13/7 -f 1/18/8 5/19/8 11/15/8 -f 9/14/9 10/13/9 2/20/9 -f 15/21/10 45/22/10 39/23/10 -f 39/23/11 30/24/11 17/25/11 -f 17/25/12 30/24/12 28/26/12 -f 18/27/13 28/26/13 56/28/13 -f 19/29/14 56/28/14 50/30/14 -f 49/31/15 14/32/15 43/33/15 -f 49/31/16 43/33/16 42/34/16 -f 48/35/17 42/34/17 38/36/17 -f 55/37/18 14/38/18 49/39/18 -f 48/40/19 54/41/19 55/37/19 -f 44/42/20 50/30/20 54/41/20 -f 61/43/21 14/44/21 55/45/21 -f 14/46/22 61/47/22 13/48/22 -f 14/49/23 13/50/23 32/51/23 -f 32/52/24 41/53/24 14/54/24 -f 41/55/25 47/56/25 14/57/25 -f 53/58/26 14/59/26 47/60/26 -f 59/61/27 14/62/27 53/63/27 -f 35/64/28 14/65/28 59/66/28 -f 35/67/29 37/68/29 14/69/29 -f 43/70/30 14/71/30 37/72/30 -f 43/70/31 37/72/31 36/73/31 -f 29/74/32 38/36/32 42/75/32 -f 36/76/33 37/68/33 35/67/33 -f 29/74/34 36/76/34 34/77/34 -f 35/64/35 59/66/35 58/78/35 -f 57/79/36 33/80/36 34/81/36 -f 53/63/37 52/82/37 58/83/37 -f 52/82/38 51/84/38 57/79/38 -f 47/60/39 46/85/39 52/86/39 -f 46/85/40 45/87/40 51/84/40 -f 41/55/41 40/88/41 46/89/41 -f 40/88/42 39/23/42 45/22/42 -f 32/52/43 31/90/43 40/91/43 -f 31/90/44 30/24/44 39/23/44 -f 32/51/45 13/50/45 27/92/45 -f 28/26/46 30/24/46 31/93/46 -f 27/94/47 13/48/47 61/47/47 -f 54/95/48 60/96/48 61/43/48 -f 50/30/49 56/28/49 60/96/49 -f 28/26/50 27/94/50 60/97/50 -f 45/87/51 15/98/51 26/99/51 -f 57/79/52 51/84/52 26/99/52 -f 50/30/53 44/42/53 21/100/53 -f 21/100/54 44/42/54 38/36/54 -f 38/36/55 29/74/55 23/101/55 -f 29/74/56 33/80/56 24/102/56 -f 24/102/57 33/80/57 57/79/57 -f 12/103/58 11/15/58 5/104/58 -f 63/105/59 65/106/59 64/107/59 -f 65/106/60 67/108/60 66/109/60 -f 67/108/61 69/110/61 68/111/61 -f 69/110/62 71/112/62 70/113/62 -f 71/112/63 73/114/63 72/115/63 -f 73/114/64 75/116/64 74/117/64 -f 75/116/65 77/118/65 76/119/65 -f 77/118/66 79/120/66 78/121/66 -f 79/120/67 81/122/67 80/123/67 -f 81/122/68 83/124/68 82/125/68 -f 69/110/69 89/126/69 90/127/69 -f 85/128/70 63/129/70 62/130/70 -f 83/124/71 85/128/71 84/131/71 -f 68/132/2 76/133/2 84/134/2 -f 94/135/4 92/136/4 88/137/4 -f 63/129/72 85/128/72 97/138/72 -f 63/105/73 87/139/73 86/140/73 -f 67/108/74 88/141/74 89/142/74 -f 83/124/75 96/143/75 97/144/75 -f 67/108/76 65/106/76 86/145/76 -f 81/122/77 95/146/77 96/147/77 -f 79/120/78 94/148/78 95/149/78 -f 79/120/79 77/118/79 93/150/79 -f 75/116/80 92/151/80 93/152/80 -f 73/114/81 91/153/81 92/154/81 -f 71/112/82 90/155/82 91/156/82 -f 101/157/83 100/158/83 98/159/83 -f 105/160/84 104/161/84 100/158/84 -f 103/162/85 102/163/85 104/161/85 -f 99/164/86 98/159/86 102/163/86 -f 100/158/5 104/161/5 102/163/5 -f 109/165/83 108/166/83 106/167/83 -f 113/168/84 112/169/84 108/166/84 -f 111/170/85 110/171/85 112/169/85 -f 107/172/86 106/167/86 110/171/86 -f 108/166/5 112/169/5 110/171/5 -f 2/173/1 4/1/1 1/3/1 -f 4/1/2 8/4/2 3/2/2 -f 8/4/3 6/6/3 7/5/3 -f 6/174/4 2/8/4 5/10/4 -f 1/175/5 3/2/5 5/11/5 -f 6/176/6 8/4/6 2/12/6 -f 12/103/4 10/13/4 11/15/4 -f 12/103/7 6/16/7 10/13/7 -f 9/14/8 1/18/8 11/15/8 -f 1/177/9 9/14/9 2/20/9 -f 16/178/10 15/21/10 39/23/10 -f 16/178/11 39/23/11 17/25/11 -f 18/27/12 17/25/12 28/26/12 -f 19/29/13 18/27/13 56/28/13 -f 20/179/14 19/29/14 50/30/14 -f 48/35/16 49/31/16 42/34/16 -f 44/42/17 48/35/17 38/36/17 -f 49/39/19 48/40/19 55/37/19 -f 48/40/20 44/42/20 54/41/20 -f 42/75/31 43/70/31 36/73/31 -f 36/73/32 29/74/32 42/75/32 -f 34/77/33 36/76/33 35/67/33 -f 33/80/34 29/74/34 34/77/34 -f 34/81/35 35/64/35 58/78/35 -f 58/78/36 57/79/36 34/81/36 -f 59/61/37 53/63/37 58/83/37 -f 58/83/38 52/82/38 57/79/38 -f 53/58/39 47/60/39 52/86/39 -f 52/86/40 46/85/40 51/84/40 -f 47/56/41 41/55/41 46/89/41 -f 46/89/42 40/88/42 45/22/42 -f 41/53/43 32/52/43 40/91/43 -f 40/91/87 31/90/87 39/23/87 -f 31/93/45 32/51/45 27/92/45 -f 27/92/46 28/26/46 31/93/46 -f 60/97/47 27/94/47 61/47/47 -f 55/45/48 54/95/48 61/43/48 -f 54/95/88 50/30/88 60/96/88 -f 56/28/50 28/26/50 60/97/50 -f 51/84/51 45/87/51 26/99/51 -f 25/180/52 57/79/52 26/99/52 -f 20/179/53 50/30/53 21/100/53 -f 22/181/54 21/100/54 38/36/54 -f 22/181/55 38/36/55 23/101/55 -f 23/101/56 29/74/56 24/102/56 -f 25/180/57 24/102/57 57/79/57 -f 6/182/58 12/103/58 5/104/58 -f 62/183/59 63/105/59 64/107/59 -f 64/107/60 65/106/60 66/109/60 -f 66/109/61 67/108/61 68/111/61 -f 68/111/62 69/110/62 70/113/62 -f 70/113/63 71/112/63 72/115/63 -f 72/115/64 73/114/64 74/117/64 -f 74/117/65 75/116/65 76/119/65 -f 76/119/66 77/118/66 78/121/66 -f 78/121/67 79/120/67 80/123/67 -f 80/123/68 81/122/68 82/125/68 -f 71/112/69 69/110/69 90/127/69 -f 84/131/70 85/128/70 62/130/70 -f 82/125/71 83/124/71 84/131/71 -f 84/134/2 62/184/2 64/185/2 -f 64/185/2 66/186/2 84/134/2 -f 68/132/2 70/187/2 72/188/2 -f 72/188/2 74/189/2 68/132/2 -f 76/133/2 78/190/2 80/191/2 -f 80/191/2 82/192/2 84/134/2 -f 84/134/2 66/186/2 68/132/2 -f 68/132/2 74/189/2 76/133/2 -f 76/133/2 80/191/2 84/134/2 -f 88/137/4 86/193/4 96/194/4 -f 87/195/4 97/196/4 96/194/4 -f 96/194/4 95/197/4 94/135/4 -f 94/135/4 93/198/4 92/136/4 -f 92/136/4 91/199/4 88/137/4 -f 90/200/4 89/201/4 88/137/4 -f 86/193/4 87/195/4 96/194/4 -f 96/194/4 94/135/4 88/137/4 -f 91/199/4 90/200/4 88/137/4 -f 87/202/72 63/129/72 97/138/72 -f 65/106/73 63/105/73 86/140/73 -f 69/110/74 67/108/74 89/142/74 -f 85/128/75 83/124/75 97/144/75 -f 88/203/89 67/108/89 86/145/89 -f 83/124/77 81/122/77 96/147/77 -f 81/122/78 79/120/78 95/149/78 -f 94/204/79 79/120/79 93/150/79 -f 77/118/80 75/116/80 93/152/80 -f 75/116/81 73/114/81 92/154/81 -f 73/114/90 71/112/90 91/156/90 -f 99/205/83 101/157/83 98/159/83 -f 101/206/84 105/160/84 100/158/84 -f 105/207/85 103/162/85 104/161/85 -f 103/208/86 99/164/86 102/163/86 -f 98/159/5 100/158/5 102/163/5 -f 107/209/83 109/165/83 106/167/83 -f 109/210/84 113/168/84 108/166/84 -f 113/211/85 111/170/85 112/169/85 -f 111/212/86 107/172/86 110/171/86 -f 106/167/5 108/166/5 110/171/5 diff --git a/src/main/resources/assets/hbm/models/cwis_rotor.obj b/src/main/resources/assets/hbm/models/cwis_rotor.obj deleted file mode 100644 index 07d783822..000000000 --- a/src/main/resources/assets/hbm/models/cwis_rotor.obj +++ /dev/null @@ -1,202 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_rotor.blend' -# www.blender.org -o Cylinder.001 -v 0.000000 0.250000 -1.000000 -v 0.000000 0.375000 -1.000000 -v 0.500000 0.250000 -0.866025 -v 0.500000 0.375000 -0.866025 -v 0.866025 0.250000 -0.500000 -v 0.866025 0.375000 -0.500000 -v 1.000000 0.250000 0.000000 -v 1.000000 0.375000 0.000000 -v 0.866025 0.250000 0.500000 -v 0.866025 0.375000 0.500000 -v 0.500000 0.250000 0.866025 -v 0.500000 0.375000 0.866025 -v 0.000000 0.250000 1.000000 -v 0.000000 0.375000 1.000000 -v -0.500000 0.250000 0.866026 -v -0.500000 0.375000 0.866026 -v -0.866025 0.250000 0.500000 -v -0.866025 0.375000 0.500000 -v -1.000000 0.250000 0.000000 -v -1.000000 0.375000 0.000000 -v -0.866026 0.250000 -0.499999 -v -0.866026 0.375000 -0.499999 -v -0.500001 0.250000 -0.866025 -v -0.500001 0.375000 -0.866025 -v 0.500000 0.375000 0.500000 -v 0.850000 0.375000 0.500000 -v 0.500000 0.375000 -0.500000 -v 0.850000 0.375000 -0.500000 -v 0.500000 1.875000 -0.325000 -v 0.500000 1.875000 0.325000 -v 0.850000 1.875000 0.325000 -v 0.850000 1.875000 -0.325000 -v -0.850000 0.375000 0.500000 -v -0.500000 0.375000 0.500000 -v -0.850000 0.375000 -0.500000 -v -0.500000 0.375000 -0.500000 -v -0.850000 1.875000 -0.325000 -v -0.850000 1.875000 0.325000 -v -0.500000 1.875000 0.325000 -v -0.500000 1.875000 -0.325000 -vt 0.447419 0.884668 -vt 0.375998 0.884668 -vt 0.375998 0.867421 -vt 0.304576 0.884668 -vt 0.304576 0.867421 -vt 0.233155 0.884668 -vt 0.233155 0.867421 -vt 0.161734 0.884668 -vt 0.161734 0.867421 -vt 0.090312 0.884668 -vt 0.090312 0.867421 -vt 0.018891 0.884668 -vt 0.018891 0.867421 -vt 0.485201 0.867421 -vt 0.556623 0.867421 -vt 0.556623 0.884668 -vt 0.628044 0.867421 -vt 0.628044 0.884668 -vt 0.699465 0.867421 -vt 0.699465 0.884668 -vt 0.770886 0.867421 -vt 0.770886 0.884668 -vt 0.054602 0.793928 -vt 0.116454 0.563091 -vt 0.285439 0.732075 -vt 0.842308 0.867421 -vt 0.913729 0.867421 -vt 0.913729 0.884668 -vt 0.842308 0.884668 -vt 0.589769 0.732075 -vt 0.323221 0.660654 -vt 0.420785 0.563091 -vt 0.274146 0.227258 -vt 0.274146 0.316942 -vt 0.225854 0.316942 -vt 0.774146 0.227258 -vt 0.774146 0.316942 -vt 0.725854 0.316942 -vt 0.518891 0.203112 -vt 0.725854 0.227258 -vt 0.725854 0.525308 -vt 0.774146 0.018891 -vt 0.981109 0.341087 -vt 0.018891 0.203112 -vt 0.225854 0.227258 -vt 0.225854 0.525308 -vt 0.274146 0.018891 -vt 0.481109 0.341087 -vt 0.447419 0.867421 -vt 0.485201 0.884668 -vt 0.249728 0.793928 -vt 0.187876 0.829639 -vt 0.116454 0.829638 -vt 0.018891 0.732075 -vt 0.018891 0.660654 -vt 0.054602 0.598801 -vt 0.187876 0.563091 -vt 0.249728 0.598801 -vt 0.285439 0.660654 -vt 0.492206 0.563091 -vt 0.554059 0.598801 -vt 0.589769 0.660654 -vt 0.554059 0.793928 -vt 0.492206 0.829638 -vt 0.420785 0.829638 -vt 0.358932 0.793928 -vt 0.323221 0.732075 -vt 0.358932 0.598801 -vt 0.518891 0.341087 -vt 0.774145 0.525308 -vt 0.725854 0.018891 -vt 0.981109 0.203112 -vt 0.018891 0.341087 -vt 0.274145 0.525308 -vt 0.225854 0.018891 -vt 0.481109 0.203112 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -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 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.115900 -0.993300 -vn 0.000000 0.115900 0.993300 -vn 1.000000 0.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/8/5 12/10/5 11/11/5 -f 12/10/6 14/12/6 13/13/6 -f 14/14/7 16/15/7 15/16/7 -f 16/15/8 18/17/8 17/18/8 -f 18/17/9 20/19/9 19/20/9 -f 20/19/10 22/21/10 21/22/10 -f 22/23/11 14/24/11 6/25/11 -f 24/26/12 2/27/12 1/28/12 -f 22/21/13 24/26/13 23/29/13 -f 7/30/14 19/31/14 23/32/14 -f 39/33/11 40/34/11 37/35/11 -f 31/36/11 32/37/11 29/38/11 -f 25/39/15 30/40/15 29/38/15 -f 27/41/16 29/38/16 32/37/16 -f 26/42/17 31/36/17 30/40/17 -f 28/43/18 32/37/18 31/36/18 -f 33/44/15 38/45/15 37/35/15 -f 35/46/16 37/35/16 40/34/16 -f 34/47/17 39/33/17 38/45/17 -f 36/48/18 40/34/18 39/33/18 -f 1/49/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/9/5 10/8/5 11/11/5 -f 11/11/6 12/10/6 13/13/6 -f 13/50/7 14/14/7 15/16/7 -f 15/16/8 16/15/8 17/18/8 -f 17/18/9 18/17/9 19/20/9 -f 19/20/10 20/19/10 21/22/10 -f 6/25/11 4/51/11 2/52/11 -f 2/52/11 24/53/11 22/23/11 -f 22/23/11 20/54/11 18/55/11 -f 18/55/11 16/56/11 14/24/11 -f 14/24/11 12/57/11 10/58/11 -f 10/58/11 8/59/11 6/25/11 -f 6/25/11 2/52/11 22/23/11 -f 22/23/11 18/55/11 14/24/11 -f 14/24/11 10/58/11 6/25/11 -f 23/29/12 24/26/12 1/28/12 -f 21/22/13 22/21/13 23/29/13 -f 23/32/14 1/60/14 3/61/14 -f 3/61/14 5/62/14 7/30/14 -f 7/30/14 9/63/14 11/64/14 -f 11/64/14 13/65/14 15/66/14 -f 15/66/14 17/67/14 19/31/14 -f 19/31/14 21/68/14 23/32/14 -f 23/32/14 3/61/14 7/30/14 -f 7/30/14 11/64/14 15/66/14 -f 15/66/14 19/31/14 7/30/14 -f 38/45/11 39/33/11 37/35/11 -f 30/40/11 31/36/11 29/38/11 -f 27/69/15 25/39/15 29/38/15 -f 28/70/16 27/41/16 32/37/16 -f 25/71/17 26/42/17 30/40/17 -f 26/72/18 28/43/18 31/36/18 -f 35/73/15 33/44/15 37/35/15 -f 36/74/16 35/46/16 40/34/16 -f 33/75/17 34/47/17 38/45/17 -f 34/76/18 36/48/18 39/33/18 diff --git a/src/main/resources/assets/hbm/models/cyclotron.obj b/src/main/resources/assets/hbm/models/cyclotron.obj deleted file mode 100644 index f645eb5bf..000000000 --- a/src/main/resources/assets/hbm/models/cyclotron.obj +++ /dev/null @@ -1,2212 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'zyclotron.blend' -# www.blender.org -o Cube -v 1.500000 0.000000 -1.500000 -v 1.500000 0.000000 1.500000 -v -1.500000 0.000000 1.500000 -v -1.500000 0.000000 -1.500000 -v 1.500001 2.000000 -1.499999 -v 1.499999 2.000000 1.500001 -v -1.500000 2.000000 1.500000 -v -1.500000 2.000000 -1.500000 -v 0.000000 2.000000 -1.375000 -v -0.526190 2.000000 -1.270334 -v -0.972272 2.000000 -0.972272 -v -1.270334 2.000000 -0.526190 -v -1.375000 2.000000 0.000000 -v -1.270334 2.000000 0.526190 -v -0.972272 2.000000 0.972272 -v -0.526190 2.000000 1.270334 -v -0.000000 2.000000 1.375000 -v 0.526190 2.000000 1.270335 -v 0.972272 2.000000 0.972272 -v 1.270334 2.000000 0.526190 -v 1.375000 2.000000 -0.000000 -v 1.270334 2.000000 -0.526190 -v 0.972272 2.000000 -0.972272 -v 0.526189 2.000000 -1.270335 -v -0.526190 6.000000 -1.270334 -v -0.000000 6.000000 -1.375000 -v -0.972272 6.000000 -0.972272 -v -1.270335 6.000000 -0.526190 -v -1.375000 6.000000 0.000000 -v -1.270335 6.000000 0.526190 -v -0.972272 6.000000 0.972272 -v -0.526190 6.000000 1.270334 -v -0.000000 6.000000 1.375000 -v 0.526189 6.000000 1.270335 -v 0.972272 6.000000 0.972272 -v 1.270334 6.000000 0.526190 -v 1.375000 6.000000 -0.000000 -v 1.270334 6.000000 -0.526190 -v 0.972271 6.000000 -0.972272 -v 0.526189 6.000000 -1.270335 -v 0.000000 2.000000 -1.500000 -v -0.750000 2.000000 -1.500000 -v 0.750001 2.000000 -1.500000 -v -1.500000 2.000000 -0.000000 -v -1.500000 2.000000 -0.750000 -v -1.500000 2.000000 0.750000 -v -0.000001 2.000000 1.500000 -v -0.750001 2.000000 1.500000 -v 0.749999 2.000000 1.500000 -v 1.500000 2.000000 0.000001 -v 1.500000 2.000000 0.750001 -v 1.500000 2.000000 -0.749999 -v -0.358766 6.000000 -0.866137 -v -0.000000 6.000000 -0.937500 -v -0.662913 6.000000 -0.662913 -v -0.866137 6.000000 -0.358766 -v -0.937500 6.000000 0.000000 -v -0.866137 6.000000 0.358766 -v -0.662913 6.000000 0.662913 -v -0.358766 6.000000 0.866137 -v -0.000000 6.000000 0.937500 -v 0.358765 6.000000 0.866137 -v 0.662912 6.000000 0.662913 -v 0.866137 6.000000 0.358766 -v 0.937500 6.000000 -0.000000 -v 0.866137 6.000000 -0.358766 -v 0.662912 6.000000 -0.662913 -v 0.358765 6.000000 -0.866137 -v -0.358766 5.850000 -0.866137 -v -0.000000 5.850000 -0.937500 -v -0.662913 5.850000 -0.662913 -v -0.866137 5.850000 -0.358766 -v -0.937500 5.850000 0.000000 -v -0.866137 5.850000 0.358766 -v -0.662913 5.850000 0.662913 -v -0.358766 5.850000 0.866137 -v -0.000000 5.850000 0.937500 -v 0.358765 5.850000 0.866137 -v 0.662912 5.850000 0.662913 -v 0.866137 5.850000 0.358766 -v 0.937500 5.850000 -0.000000 -v 0.866137 5.850000 -0.358766 -v 0.662912 5.850000 -0.662913 -v 0.358765 5.850000 -0.866137 -v 0.866137 5.925000 0.358766 -v 0.662912 5.925000 0.662913 -v -0.866137 5.925000 -0.358766 -v -0.662913 5.925000 -0.662913 -v -1.500000 1.750000 1.500000 -v -1.500000 0.250000 1.500000 -v 1.499999 1.750000 1.500001 -v 1.500000 0.250000 1.500000 -v 1.500000 1.750000 -1.499999 -v 1.500000 0.250000 -1.500000 -v 1.500000 1.750000 1.250001 -v 1.500000 1.750000 -1.249999 -v 1.500000 0.250000 -1.250000 -v 1.500000 0.250000 1.250000 -v 1.500000 0.250000 0.500000 -v 1.500000 1.000000 0.500000 -v 1.500000 0.000000 0.500000 -v 1.500000 1.000000 -0.500000 -v 1.500000 0.000000 -0.500000 -v 1.500000 0.250000 -0.500000 -v 1.350000 1.750000 -1.249999 -v 1.350000 1.750000 1.250001 -v 1.350000 0.250000 -1.250000 -v 1.350000 0.250000 1.250000 -v 1.350000 1.000000 -0.500000 -v 1.350000 1.000000 0.500000 -v 1.350000 0.250000 0.500000 -v 1.350000 0.250000 -0.500000 -v 0.500000 0.000000 -1.500000 -v -1.250000 0.250000 -1.500000 -v 1.250000 0.250000 -1.500000 -v -1.250000 1.750000 -1.500000 -v 1.250000 1.750000 -1.500000 -v 0.500000 0.250000 -1.500000 -v -0.500000 0.000000 -1.500000 -v -0.500000 0.250000 -1.500000 -v 0.500000 1.000000 -1.500000 -v -0.500000 1.000000 -1.500000 -v 1.250000 1.750000 -1.350000 -v -1.250000 1.750000 -1.350000 -v 1.250000 0.250000 -1.350000 -v -1.250000 0.250000 -1.350000 -v -0.500000 0.250000 -1.350000 -v 0.500000 1.000000 -1.350000 -v -0.500000 1.000000 -1.350000 -v 0.500000 0.250000 -1.350000 -v -1.500000 1.750000 -1.250000 -v -1.500000 1.750000 1.250000 -v -1.500000 0.250000 -1.250000 -v -1.500000 0.250000 1.250000 -v -1.500000 0.000000 -0.500000 -v -1.500000 0.250000 -0.500000 -v -1.500000 0.000000 0.500000 -v -1.500000 0.250000 0.500000 -v -1.500000 1.000000 -0.500000 -v -1.500000 1.000000 0.500000 -v -1.350000 1.750000 1.250000 -v -1.350000 1.750000 -1.250000 -v -1.350000 0.250000 -1.250000 -v -1.350000 0.250000 1.250000 -v -1.349999 1.000000 0.500000 -v -1.349999 1.000000 -0.500000 -v -1.350000 0.250000 -0.500000 -v -1.350000 0.250000 0.500000 -v -0.500000 0.000000 1.500000 -v 1.250000 0.250000 1.500000 -v -1.250000 0.250000 1.500000 -v -1.250000 1.750000 1.500000 -v 1.249999 1.750000 1.500000 -v -0.500000 0.250000 1.500000 -v 0.500000 0.000000 1.500000 -v 0.500000 0.250000 1.500000 -v -0.500000 1.000000 1.500000 -v 0.500000 1.000000 1.500000 -v 1.249999 1.750000 1.350000 -v 0.500000 1.000000 1.350000 -v -1.250000 1.750000 1.350000 -v -1.250000 0.250000 1.350000 -v 1.250000 0.250000 1.350000 -v -0.500000 1.000000 1.350000 -v -0.500000 0.250000 1.350000 -v 0.500000 0.250000 1.350000 -v -0.883884 5.750000 0.883884 -v -1.154850 5.750000 0.478354 -v 0.883883 5.750000 -0.883884 -v 1.154849 5.750000 -0.478355 -v -0.478354 5.750000 1.154849 -v 0.478354 5.750000 -1.154850 -v -0.000000 5.750000 1.250000 -v -0.478354 5.750000 -1.154849 -v -0.000000 5.750000 -1.250000 -v 0.478354 5.750000 1.154850 -v -0.883884 5.750000 -0.883884 -v 0.883883 5.750000 0.883884 -v -1.154850 5.750000 -0.478354 -v 1.154849 5.750000 0.478354 -v -1.250000 5.750000 0.000000 -v 1.250000 5.750000 -0.000000 -v -0.526190 5.750000 -1.270334 -v -0.000000 5.750000 -1.375000 -v -0.972272 5.750000 -0.972272 -v -1.270335 5.750000 -0.526190 -v -1.375000 5.750000 0.000000 -v -1.270335 5.750000 0.526190 -v -0.972272 5.750000 0.972272 -v -0.526190 5.750000 1.270334 -v -0.000000 5.750000 1.375000 -v 0.526189 5.750000 1.270335 -v 0.972272 5.750000 0.972272 -v 1.270334 5.750000 0.526190 -v 1.375000 5.750000 -0.000000 -v 1.270334 5.750000 -0.526190 -v 0.972271 5.750000 -0.972272 -v 0.526189 5.750000 -1.270335 -v 1.100000 5.750000 1.000000 -v 1.100000 2.000000 1.000000 -v 1.100000 2.000000 -1.200000 -v 1.100000 5.750000 -1.200000 -v 1.170711 2.000000 -1.170711 -v 1.170711 5.750000 -1.170711 -v 1.200000 2.000000 -1.100000 -v 1.200000 5.750000 -1.100000 -v 1.170711 2.000000 -1.029289 -v 1.170711 5.750000 -1.029289 -v 1.100000 2.000000 -1.000000 -v 1.100000 5.750000 -1.000000 -v 1.029289 2.000000 -1.029289 -v 1.029289 5.750000 -1.029289 -v 1.000000 2.000000 -1.100000 -v 1.000000 5.750000 -1.100000 -v 1.029289 2.000000 -1.170711 -v 1.029289 5.750000 -1.170711 -v 1.170711 2.000000 1.029289 -v 1.170711 5.750000 1.029289 -v 1.200000 2.000000 1.100000 -v 1.200000 5.750000 1.100000 -v 1.170711 2.000000 1.170711 -v 1.170711 5.750000 1.170711 -v 1.100000 2.000000 1.200000 -v 1.100000 5.750000 1.200000 -v 1.029289 2.000000 1.170711 -v 1.029289 5.750000 1.170711 -v 1.000000 2.000000 1.100000 -v 1.000000 5.750000 1.100000 -v 1.029289 2.000000 1.029289 -v 1.029289 5.750000 1.029289 -v -1.100000 5.750000 1.000000 -v -1.100000 2.000000 1.000000 -v -1.029289 2.000000 1.029289 -v -1.029289 5.750000 1.029289 -v -1.000000 2.000000 1.100000 -v -1.000000 5.750000 1.100000 -v -1.029289 2.000000 1.170711 -v -1.029289 5.750000 1.170711 -v -1.100000 2.000000 1.200000 -v -1.100000 5.750000 1.200000 -v -1.170711 2.000000 1.170711 -v -1.170711 5.750000 1.170711 -v -1.200000 2.000000 1.100000 -v -1.200000 5.750000 1.100000 -v -1.170711 2.000000 1.029289 -v -1.170711 5.750000 1.029289 -v -1.100000 5.750000 -1.200000 -v -1.100000 2.000000 -1.200000 -v -1.029289 2.000000 -1.170711 -v -1.029289 5.750000 -1.170711 -v -1.000000 2.000000 -1.100000 -v -1.000000 5.750000 -1.100000 -v -1.029289 2.000000 -1.029289 -v -1.029289 5.750000 -1.029289 -v -1.100000 2.000000 -1.000000 -v -1.100000 5.750000 -1.000000 -v -1.170711 2.000000 -1.029289 -v -1.170711 5.750000 -1.029289 -v -1.200000 2.000000 -1.100000 -v -1.200000 5.750000 -1.100000 -v -1.170711 2.000000 -1.170711 -v -1.170711 5.750000 -1.170711 -v 1.000000 5.975001 -1.000000 -v 0.950000 5.945711 -1.050000 -v 0.929289 5.875000 -1.070711 -v 0.950000 5.804290 -1.050000 -v 1.000000 5.775001 -1.000000 -v 1.050000 5.804290 -0.950000 -v 1.070711 5.875000 -0.929289 -v 1.050000 5.945711 -0.950000 -v 0.879289 5.945711 -0.979289 -v 0.929289 5.975001 -0.929289 -v 0.858579 5.875000 -1.000000 -v 0.879289 5.804290 -0.979289 -v 0.929289 5.775001 -0.929289 -v 0.979289 5.804290 -0.879289 -v 1.000000 5.875000 -0.858578 -v 0.979289 5.945711 -0.879289 -v 1.070711 5.875000 0.929289 -v 1.050000 5.804289 0.950000 -v 1.000000 5.775000 1.000000 -v 0.950000 5.804289 1.050000 -v 0.929289 5.875000 1.070711 -v 0.950000 5.945711 1.050000 -v 1.000000 5.975000 1.000000 -v 1.050000 5.945711 0.950000 -v 0.879289 5.945711 0.979289 -v 0.858578 5.875000 1.000000 -v 0.929289 5.775000 0.929289 -v 0.979289 5.804289 0.879289 -v 0.879289 5.804289 0.979289 -v 1.000000 5.875000 0.858579 -v 0.929289 5.975000 0.929289 -v 0.979289 5.945711 0.879289 -v -0.929289 5.875000 -1.070711 -v -0.950000 5.804289 -1.050000 -v -1.000000 5.775000 -1.000000 -v -1.050000 5.804289 -0.950000 -v -1.070710 5.875000 -0.929289 -v -1.050000 5.945711 -0.950000 -v -1.000000 5.975000 -1.000000 -v -0.950000 5.945711 -1.050000 -v -0.979289 5.945711 -0.879289 -v -1.000000 5.875000 -0.858579 -v -0.929289 5.775000 -0.929289 -v -0.879289 5.804289 -0.979289 -v -0.979289 5.804289 -0.879289 -v -0.858578 5.875000 -1.000000 -v -0.929289 5.975000 -0.929289 -v -0.879289 5.945711 -0.979289 -v -1.000000 5.975000 1.000000 -v -0.950000 5.945711 1.050000 -v -0.929289 5.875000 1.070711 -v -0.950000 5.804289 1.050000 -v -1.000000 5.775000 1.000000 -v -1.050000 5.804289 0.950000 -v -1.070711 5.875000 0.929289 -v -1.050000 5.945711 0.950000 -v -0.979289 5.804289 0.879289 -v -0.929289 5.775000 0.929289 -v -0.858579 5.875000 1.000000 -v -0.879289 5.945711 0.979289 -v -0.879289 5.804289 0.979289 -v -0.929289 5.975000 0.929289 -v -1.000000 5.875000 0.858579 -v -0.979289 5.945711 0.879289 -v -0.883884 2.250000 0.883884 -v -1.154850 2.250000 0.478354 -v 0.883883 2.250000 -0.883884 -v 1.154849 2.250000 -0.478355 -v -0.478354 2.250000 1.154849 -v 0.478354 2.250000 -1.154850 -v -0.000000 2.250000 1.250000 -v -0.478354 2.250000 -1.154849 -v -0.000000 2.250000 -1.250000 -v 0.478354 2.250000 1.154850 -v -0.883884 2.250000 -0.883884 -v 0.883883 2.250000 0.883884 -v -1.154850 2.250000 -0.478354 -v 1.154849 2.250000 0.478354 -v -1.250000 2.250000 0.000000 -v 1.250000 2.250000 -0.000000 -v -0.526190 2.250000 -1.270334 -v 0.000000 2.250000 -1.375000 -v -0.972272 2.250000 -0.972272 -v -1.270334 2.250000 -0.526190 -v -1.375000 2.250000 0.000000 -v -1.270334 2.250000 0.526190 -v -0.972272 2.250000 0.972272 -v -0.526190 2.250000 1.270334 -v -0.000000 2.250000 1.375000 -v 0.526190 2.250000 1.270335 -v 0.972272 2.250000 0.972272 -v 1.270334 2.250000 0.526190 -v 1.375000 2.250000 -0.000000 -v 1.270334 2.250000 -0.526190 -v 0.972272 2.250000 -0.972272 -v 0.526189 2.250000 -1.270335 -v 1.500000 0.656250 -0.156250 -v 1.500000 0.250000 -0.250000 -v 1.500000 0.750000 -0.250000 -v 1.500000 0.250000 0.250000 -v 0.250000 0.750000 1.450000 -v 0.156250 0.656250 1.450000 -v -0.156250 0.343750 1.500000 -v 0.156250 0.343750 1.500000 -v 1.500000 0.750000 0.250000 -v 1.500000 0.343750 -0.156250 -v -0.250000 0.750000 1.450000 -v -0.250000 0.250000 1.450000 -v 0.250000 0.250000 1.450000 -v -0.156250 0.656250 1.450000 -v 0.250000 0.750000 1.500000 -v -0.250000 0.750000 1.500000 -v -0.156250 0.656250 1.500000 -v 0.250000 0.250000 1.500000 -v -0.156250 0.343750 1.450000 -v 0.156250 0.343750 1.450000 -v 0.156250 0.656250 1.500000 -v -0.250000 0.250000 1.500000 -v 1.500000 0.343750 0.156250 -v 1.500000 0.656250 0.156250 -v 1.450000 0.656250 -0.156250 -v 1.450000 0.656250 0.156250 -v 1.450000 0.343750 -0.156250 -v 1.450000 0.343750 0.156250 -v 1.450000 0.250000 -0.250000 -v 1.450000 0.250000 0.250000 -v 1.450000 0.750000 -0.250000 -v 1.450000 0.750000 0.250000 -v 0.250000 0.250000 -1.500000 -v -0.156250 0.343750 -1.500000 -v -0.250000 0.250000 -1.500000 -v 0.156250 0.343750 -1.500000 -v 0.250000 0.750000 -1.500000 -v -0.250000 0.750000 -1.500000 -v 0.156250 0.656250 -1.500000 -v -0.156250 0.656250 -1.500000 -v 0.156250 0.656250 -1.450000 -v -0.156250 0.656250 -1.450000 -v 0.156250 0.343750 -1.450000 -v -0.156250 0.343750 -1.450000 -v 0.250000 0.250000 -1.450000 -v -0.250000 0.250000 -1.450000 -v 0.250000 0.750000 -1.450000 -v -0.250000 0.750000 -1.450000 -v -1.500000 0.250000 -0.250001 -v -1.500000 0.343750 0.156250 -v -1.500000 0.250000 0.250000 -v -1.500000 0.343750 -0.156251 -v -1.500000 0.750000 -0.250001 -v -1.500000 0.750000 0.250000 -v -1.500000 0.656250 -0.156251 -v -1.500000 0.656250 0.156250 -v -1.449999 0.656250 0.156250 -v -1.449999 0.343750 0.156250 -v -1.449999 0.656250 -0.156251 -v -1.449999 0.750000 -0.250001 -v -1.449999 0.750000 0.250000 -v -1.449999 0.250000 0.250000 -v -1.449999 0.250000 -0.250001 -v -1.449999 0.343750 -0.156251 -vt 0.000461 0.950818 -vt 0.000470 0.922808 -vt 0.040543 0.922822 -vt 0.361111 0.875563 -vt 0.321038 0.875563 -vt 0.327413 0.843513 -vt 0.080605 0.903573 -vt 0.040533 0.903573 -vt 0.040533 0.875564 -vt 0.120677 0.903573 -vt 0.080605 0.875564 -vt 0.160749 0.903573 -vt 0.120677 0.875563 -vt 0.200821 0.903573 -vt 0.160749 0.875563 -vt 0.240894 0.903573 -vt 0.200821 0.875563 -vt 0.280966 0.903573 -vt 0.240894 0.875563 -vt 0.321038 0.903572 -vt 0.280966 0.875563 -vt 0.361111 0.903572 -vt 0.401183 0.903572 -vt 0.441256 0.903572 -vt 0.401183 0.875563 -vt 0.481328 0.903572 -vt 0.441255 0.875563 -vt 0.521400 0.903572 -vt 0.481328 0.875563 -vt 0.561472 0.903572 -vt 0.521400 0.875562 -vt 0.601545 0.903572 -vt 0.561472 0.875562 -vt 0.641617 0.903572 -vt 0.601544 0.875562 -vt 0.255335 0.430863 -vt 0.242613 0.466253 -vt 0.250054 0.428675 -vt 0.449535 0.505555 -vt 0.440199 0.505555 -vt 0.432381 0.466253 -vt 0.432381 0.544857 -vt 0.449535 0.393517 -vt 0.449535 0.449536 -vt 0.427127 0.423394 -vt 0.424940 0.418112 -vt 0.419658 0.415924 -vt 0.337497 0.617593 -vt 0.337497 0.608257 -vt 0.376799 0.600439 -vt 0.298195 0.600439 -vt 0.260617 0.418112 -vt 0.298194 0.410671 -vt 0.262805 0.423394 -vt 0.264876 0.432934 -vt 0.225458 0.505555 -vt 0.234795 0.505555 -vt 0.242613 0.544857 -vt 0.225458 0.449536 -vt 0.281478 0.393517 -vt 0.337497 0.393517 -vt 0.337497 0.402853 -vt 0.376799 0.410671 -vt 0.797881 0.890085 -vt 0.787427 0.915324 -vt 0.779665 0.912108 -vt 0.607920 0.843512 -vt 0.635242 0.843512 -vt 0.287341 0.843513 -vt 0.567847 0.843512 -vt 0.595169 0.843512 -vt 0.247269 0.843513 -vt 0.527775 0.843513 -vt 0.555097 0.843513 -vt 0.207196 0.843513 -vt 0.234518 0.843513 -vt 0.487703 0.843513 -vt 0.127052 0.843513 -vt 0.154374 0.843513 -vt 0.167124 0.843513 -vt 0.194446 0.843513 -vt 0.447631 0.843513 -vt 0.086980 0.843514 -vt 0.114302 0.843514 -vt 0.407558 0.843513 -vt 0.434880 0.843513 -vt 0.046908 0.843514 -vt 0.074230 0.843514 -vt 0.367486 0.843513 -vt 0.000461 0.875564 -vt 0.006836 0.843514 -vt 0.034157 0.843514 -vt 0.869755 0.860314 -vt 0.914311 0.890085 -vt 0.557352 0.796015 -vt 0.567806 0.770776 -vt 0.575568 0.773991 -vt 0.805316 0.858886 -vt 0.817198 0.870768 -vt 0.549917 0.827213 -vt 0.538035 0.815332 -vt 0.836006 0.844789 -vt 0.842437 0.860314 -vt 0.519226 0.841310 -vt 0.512796 0.825786 -vt 0.869755 0.843510 -vt 0.485478 0.842589 -vt 0.485478 0.825786 -vt 0.901424 0.855244 -vt 0.894994 0.870768 -vt 0.429040 0.807896 -vt 0.440922 0.796015 -vt 0.460239 0.815332 -vt 0.453809 0.830856 -vt 0.926192 0.878203 -vt 0.430354 0.770506 -vt 0.430468 0.770776 -vt 0.924879 0.915593 -vt 0.924765 0.915323 -vt 0.371218 0.823282 -vt 0.371218 0.795960 -vt 0.379621 0.795960 -vt 0.225458 0.795960 -vt 0.233861 0.795960 -vt 0.233861 0.823282 -vt 0.233861 0.787557 -vt 0.371218 0.787557 -vt 0.233861 0.831685 -vt 0.205864 0.421526 -vt 0.224537 0.421526 -vt 0.224537 0.589584 -vt 0.075153 0.987414 -vt 0.075153 0.976210 -vt 0.159182 0.976210 -vt 0.584251 0.645601 -vt 0.584251 0.477544 -vt 0.602924 0.477544 -vt 0.019134 0.589584 -vt 0.000461 0.589584 -vt 0.000461 0.421526 -vt 0.019134 0.421526 -vt 0.000461 0.393517 -vt 0.224537 0.393517 -vt 0.569989 0.999539 -vt 0.383259 0.999539 -vt 0.383259 0.988335 -vt 0.159182 0.999539 -vt 0.159182 0.988336 -vt 0.215201 0.988336 -vt 0.738046 0.999539 -vt 0.738046 0.988335 -vt 0.794065 0.988335 -vt 0.809250 0.000461 -vt 0.865269 0.000461 -vt 0.865269 0.084489 -vt 0.995980 0.000461 -vt 0.995980 0.168518 -vt 0.939961 0.084489 -vt 0.794065 0.999539 -vt 0.878094 0.988335 -vt 0.569989 0.988335 -vt 0.112499 0.617593 -vt 0.056480 0.617593 -vt 0.000461 0.999539 -vt 0.000461 0.988336 -vt 0.075153 0.988336 -vt 0.075153 0.999539 -vt 0.215201 0.999539 -vt 0.721511 0.878976 -vt 0.721511 0.902318 -vt 0.686499 0.902318 -vt 0.084490 0.951960 -vt 0.140510 0.951960 -vt 0.140510 0.963164 -vt 0.663356 0.951960 -vt 0.663356 0.963164 -vt 0.495300 0.963164 -vt 0.958633 0.842589 -vt 0.902614 0.842589 -vt 0.902614 0.758560 -vt 0.827922 0.758560 -vt 0.827922 0.842589 -vt 0.771903 0.842589 -vt 0.771903 0.674532 -vt 0.958633 0.674532 -vt 0.308568 0.951960 -vt 0.308568 0.963164 -vt 0.719375 0.951960 -vt 0.719375 0.963164 -vt 0.803403 0.951960 -vt 0.803403 0.963163 -vt 0.878094 0.951960 -vt 0.878094 0.963163 -vt 0.084490 0.963164 -vt 0.000461 0.963164 -vt 0.696290 0.149845 -vt 0.612261 0.149845 -vt 0.668281 0.131172 -vt 0.668281 0.093826 -vt 0.696290 0.075153 -vt 0.308565 0.964085 -vt 0.495295 0.964085 -vt 0.495295 0.975289 -vt 0.878094 0.964085 -vt 0.878094 0.975289 -vt 0.803401 0.975289 -vt 0.084489 0.964085 -vt 0.140508 0.964085 -vt 0.140508 0.975289 -vt 0.612261 0.131172 -vt 0.584252 0.149845 -vt 0.584252 0.075153 -vt 0.612262 0.075153 -vt 0.770982 0.674532 -vt 0.714963 0.758560 -vt 0.640270 0.758560 -vt 0.770982 0.842589 -vt 0.714963 0.842589 -vt 0.640270 0.842589 -vt 0.584251 0.842589 -vt 0.084489 0.975289 -vt 0.000461 0.975289 -vt 0.663353 0.964085 -vt 0.663353 0.975289 -vt 0.719372 0.964085 -vt 0.719372 0.975289 -vt 0.612261 0.205864 -vt 0.780319 0.205864 -vt 0.808328 0.224537 -vt 0.308565 0.975289 -vt 0.803401 0.964085 -vt 0.789655 0.477544 -vt 0.808328 0.477544 -vt 0.808328 0.645601 -vt 0.569989 0.987414 -vt 0.569989 0.976210 -vt 0.738046 0.976210 -vt 0.658943 0.449534 -vt 0.658943 0.477544 -vt 0.733636 0.449534 -vt 0.808328 0.449534 -vt 0.225516 0.618514 -vt 0.281536 0.618534 -vt 0.281507 0.702563 -vt 0.356199 0.702588 -vt 0.356228 0.618560 -vt 0.412247 0.618579 -vt 0.738046 0.987414 -vt 0.794065 0.976210 -vt 0.000461 0.987414 -vt 0.000461 0.976210 -vt 0.215201 0.987414 -vt 0.215201 0.976210 -vt 0.383259 0.976210 -vt 0.794065 0.987414 -vt 0.878094 0.976210 -vt 0.640270 0.673611 -vt 0.584251 0.673611 -vt 0.602924 0.645601 -vt 0.159182 0.987414 -vt 0.075153 0.618515 -vt 0.224537 0.767899 -vt 0.149845 0.842591 -vt 0.361111 0.950942 -vt 0.361121 0.922932 -vt 0.401193 0.922946 -vt 0.040533 0.950831 -vt 0.080615 0.922836 -vt 0.401183 0.950956 -vt 0.441265 0.922960 -vt 0.080605 0.950845 -vt 0.120687 0.922849 -vt 0.441256 0.950970 -vt 0.481338 0.922974 -vt 0.160750 0.950873 -vt 0.160759 0.922863 -vt 0.200832 0.922877 -vt 0.120677 0.950859 -vt 0.481328 0.950983 -vt 0.521410 0.922988 -vt 0.200822 0.950887 -vt 0.240904 0.922891 -vt 0.521400 0.950997 -vt 0.561482 0.923001 -vt 0.240894 0.950900 -vt 0.280976 0.922905 -vt 0.561472 0.951011 -vt 0.601554 0.923015 -vt 0.280967 0.950914 -vt 0.321049 0.922919 -vt 0.601545 0.951025 -vt 0.641626 0.923029 -vt 0.321039 0.950928 -vt 0.483162 0.913817 -vt 0.000461 0.903573 -vt 0.639795 0.912729 -vt 0.603366 0.912729 -vt 0.599723 0.912729 -vt 0.563294 0.912729 -vt 0.559651 0.912729 -vt 0.523222 0.912729 -vt 0.519579 0.912729 -vt 0.483149 0.912729 -vt 0.479506 0.912729 -vt 0.443077 0.912730 -vt 0.439434 0.912729 -vt 0.403005 0.912730 -vt 0.399362 0.912730 -vt 0.362932 0.912730 -vt 0.359289 0.912730 -vt 0.322860 0.912730 -vt 0.319217 0.912730 -vt 0.282788 0.912730 -vt 0.279145 0.912730 -vt 0.242715 0.912730 -vt 0.239072 0.912730 -vt 0.202643 0.912730 -vt 0.199000 0.912730 -vt 0.162571 0.912730 -vt 0.158928 0.912730 -vt 0.122499 0.912730 -vt 0.118856 0.912730 -vt 0.082426 0.912730 -vt 0.078783 0.912730 -vt 0.042354 0.912730 -vt 0.038711 0.912730 -vt 0.002282 0.912730 -vt 0.854572 0.540418 -vt 0.848098 0.540441 -vt 0.848098 0.169483 -vt 0.255335 0.415924 -vt 0.482830 0.764540 -vt 0.476355 0.764562 -vt 0.476367 0.393604 -vt 0.828674 0.540507 -vt 0.822199 0.540529 -vt 0.822199 0.169572 -vt 0.516136 0.764607 -vt 0.509662 0.764629 -vt 0.509662 0.393672 -vt 0.469880 0.764584 -vt 0.469893 0.393626 -vt 0.841623 0.540463 -vt 0.835148 0.540485 -vt 0.835148 0.169528 -vt 0.522611 0.764584 -vt 0.516136 0.393649 -vt 0.463406 0.764605 -vt 0.463418 0.393648 -vt 0.828674 0.169550 -vt 0.529086 0.764562 -vt 0.522611 0.393627 -vt 0.456931 0.764627 -vt 0.456943 0.393670 -vt 0.225458 0.393517 -vt 0.535561 0.764540 -vt 0.529086 0.393605 -vt 0.450456 0.764649 -vt 0.450468 0.393692 -vt 0.503187 0.764651 -vt 0.503187 0.393694 -vt 0.542035 0.764518 -vt 0.535561 0.393583 -vt 0.502254 0.764474 -vt 0.495779 0.764496 -vt 0.495791 0.393539 -vt 0.247866 0.423394 -vt 0.489304 0.764518 -vt 0.482842 0.393582 -vt 0.489317 0.393560 -vt 0.841623 0.169505 -vt 0.554985 0.764474 -vt 0.548510 0.764496 -vt 0.548510 0.393539 -vt 0.542035 0.393561 -vt 0.861047 0.540396 -vt 0.854572 0.169461 -vt 0.815724 0.540551 -vt 0.815724 0.169594 -vt 0.809250 0.540573 -vt 0.809250 0.169616 -vt 0.868443 0.540551 -vt 0.861968 0.540573 -vt 0.861968 0.169616 -vt 0.894342 0.540463 -vt 0.887867 0.540485 -vt 0.887867 0.169528 -vt 0.907291 0.540418 -vt 0.900816 0.540440 -vt 0.900816 0.169483 -vt 0.894342 0.169505 -vt 0.250054 0.418112 -vt 0.913766 0.540396 -vt 0.907291 0.169461 -vt 0.874918 0.540529 -vt 0.868443 0.169594 -vt 0.881392 0.540507 -vt 0.881392 0.169550 -vt 0.874918 0.169572 -vt 0.414377 0.418112 -vt 0.393516 0.393517 -vt 0.424940 0.428675 -vt 0.419658 0.430863 -vt 0.410118 0.432934 -vt 0.412189 0.423394 -vt 0.225459 0.617593 -vt 0.250054 0.592998 -vt 0.255335 0.595186 -vt 0.225459 0.561574 -vt 0.247866 0.587717 -vt 0.250054 0.582435 -vt 0.260617 0.592998 -vt 0.281478 0.617593 -vt 0.255335 0.580247 -vt 0.262805 0.587717 -vt 0.264876 0.578176 -vt 0.449535 0.617593 -vt 0.424940 0.592998 -vt 0.427127 0.587717 -vt 0.393516 0.617593 -vt 0.419658 0.595186 -vt 0.414377 0.592998 -vt 0.424940 0.582435 -vt 0.449535 0.561574 -vt 0.419658 0.580247 -vt 0.410118 0.578176 -vt 0.412189 0.587717 -vt 0.438110 0.746694 -vt 0.434057 0.747689 -vt 0.430486 0.742598 -vt 0.438378 0.740984 -vt 0.423490 0.738286 -vt 0.440859 0.735833 -vt 0.416492 0.733975 -vt 0.443344 0.730685 -vt 0.413168 0.728720 -vt 0.433106 0.705319 -vt 0.434728 0.710801 -vt 0.426679 0.711114 -vt 0.438365 0.715211 -vt 0.420912 0.716970 -vt 0.442006 0.719619 -vt 0.415143 0.722824 -vt 0.443938 0.724999 -vt 0.563375 0.466621 -vt 0.563375 0.474840 -vt 0.555906 0.474840 -vt 0.873658 0.639627 -vt 0.879140 0.638005 -vt 0.879453 0.646055 -vt 0.563375 0.458403 -vt 0.555906 0.458403 -vt 0.555906 0.452185 -vt 0.563375 0.503714 -vt 0.555906 0.503714 -vt 0.555906 0.495495 -vt 0.563375 0.481058 -vt 0.563375 0.487276 -vt 0.555906 0.487276 -vt 0.555906 0.481058 -vt 0.555906 0.466621 -vt 0.563375 0.509932 -vt 0.555906 0.509932 -vt 0.563375 0.495495 -vt 0.915033 0.634623 -vt 0.916028 0.638677 -vt 0.910938 0.642247 -vt 0.909323 0.634355 -vt 0.906625 0.649244 -vt 0.904173 0.631874 -vt 0.902315 0.656241 -vt 0.899024 0.629390 -vt 0.897060 0.659565 -vt 0.883551 0.634368 -vt 0.885309 0.651822 -vt 0.887958 0.630728 -vt 0.891164 0.657590 -vt 0.893339 0.628795 -vt 0.563375 0.525290 -vt 0.563375 0.533508 -vt 0.555906 0.533508 -vt 0.563375 0.545944 -vt 0.563375 0.554163 -vt 0.555906 0.554163 -vt 0.563375 0.539726 -vt 0.555906 0.539726 -vt 0.563375 0.562382 -vt 0.555906 0.562382 -vt 0.563375 0.568600 -vt 0.555906 0.568600 -vt 0.555906 0.545944 -vt 0.563375 0.517071 -vt 0.555906 0.517071 -vt 0.555906 0.510853 -vt 0.555906 0.525290 -vt 0.767541 0.913748 -vt 0.768536 0.917801 -vt 0.763446 0.921372 -vt 0.731961 0.925179 -vt 0.726166 0.922925 -vt 0.726166 0.918751 -vt 0.737817 0.930946 -vt 0.731648 0.917130 -vt 0.743672 0.936714 -vt 0.736059 0.913493 -vt 0.761831 0.913480 -vt 0.759133 0.928368 -vt 0.756681 0.910999 -vt 0.754822 0.935366 -vt 0.751532 0.908514 -vt 0.749568 0.938690 -vt 0.740466 0.909852 -vt 0.564296 0.451264 -vt 0.564296 0.445046 -vt 0.571765 0.445046 -vt 0.682764 0.917805 -vt 0.688246 0.916183 -vt 0.688559 0.924233 -vt 0.564296 0.428608 -vt 0.564296 0.422390 -vt 0.571765 0.422390 -vt 0.564296 0.393517 -vt 0.571765 0.393517 -vt 0.571765 0.399735 -vt 0.564296 0.407953 -vt 0.564296 0.399735 -vt 0.571765 0.407953 -vt 0.571765 0.416172 -vt 0.571765 0.428608 -vt 0.571765 0.436827 -vt 0.564296 0.416172 -vt 0.564296 0.436827 -vt 0.724139 0.912802 -vt 0.725134 0.916855 -vt 0.720043 0.920425 -vt 0.718429 0.912533 -vt 0.715731 0.927422 -vt 0.713278 0.910053 -vt 0.711420 0.934420 -vt 0.692657 0.912546 -vt 0.694415 0.930000 -vt 0.697064 0.908906 -vt 0.700270 0.935768 -vt 0.702444 0.906973 -vt 0.706165 0.937743 -vt 0.708130 0.907568 -vt 0.555906 0.393517 -vt 0.563375 0.393517 -vt 0.563375 0.399735 -vt 0.555906 0.445046 -vt 0.563375 0.445046 -vt 0.563375 0.451264 -vt 0.555906 0.428608 -vt 0.555906 0.422390 -vt 0.563375 0.422390 -vt 0.555906 0.436827 -vt 0.563375 0.436827 -vt 0.555906 0.416172 -vt 0.563375 0.416172 -vt 0.555906 0.407953 -vt 0.563375 0.407953 -vt 0.563375 0.428608 -vt 0.555906 0.399735 -vt 0.443090 0.913804 -vt 0.439447 0.913802 -vt 0.362945 0.913776 -vt 0.322873 0.913762 -vt 0.282801 0.913748 -vt 0.279158 0.913747 -vt 0.239086 0.913733 -vt 0.199013 0.913719 -vt 0.158941 0.913705 -vt 0.082439 0.913679 -vt 0.078797 0.913678 -vt 0.002295 0.913651 -vt 0.603379 0.913859 -vt 0.523234 0.913831 -vt 0.563307 0.913845 -vt 0.583330 0.000461 -vt 0.583330 0.392595 -vt 0.546901 0.392595 -vt 0.036890 0.000461 -vt 0.036891 0.392595 -vt 0.000462 0.392596 -vt 0.073319 0.000461 -vt 0.073320 0.392595 -vt 0.109749 0.000461 -vt 0.109749 0.392595 -vt 0.146178 0.000461 -vt 0.146178 0.392595 -vt 0.182607 0.000461 -vt 0.182607 0.392595 -vt 0.219037 0.000461 -vt 0.219036 0.392595 -vt 0.255466 0.000461 -vt 0.255466 0.392595 -vt 0.291895 0.000461 -vt 0.291896 0.392595 -vt 0.328325 0.000461 -vt 0.328325 0.392595 -vt 0.364754 0.000461 -vt 0.364755 0.392595 -vt 0.401183 0.000461 -vt 0.401184 0.392595 -vt 0.437613 0.000461 -vt 0.437613 0.392595 -vt 0.474042 0.000461 -vt 0.474043 0.392595 -vt 0.510471 0.000461 -vt 0.510472 0.392595 -vt 0.546901 0.000461 -vt 0.416903 0.700663 -vt 0.413168 0.700663 -vt 0.413168 0.665651 -vt 0.896067 0.541495 -vt 0.896067 0.545229 -vt 0.858721 0.545229 -vt 0.416903 0.622249 -vt 0.416903 0.618514 -vt 0.440244 0.618514 -vt 0.440244 0.622249 -vt 0.443979 0.622249 -vt 0.443979 0.657261 -vt 0.858721 0.604983 -vt 0.858721 0.601248 -vt 0.896067 0.601248 -vt 0.889064 0.590745 -vt 0.889064 0.555733 -vt 0.865723 0.555733 -vt 0.865723 0.590745 -vt 0.677616 0.533563 -vt 0.714963 0.533563 -vt 0.733636 0.561572 -vt 0.733636 0.477544 -vt 0.714963 0.477544 -vt 0.677616 0.477544 -vt 0.658943 0.561572 -vt 0.416903 0.657261 -vt 0.413168 0.657261 -vt 0.413168 0.622249 -vt 0.899801 0.601248 -vt 0.440244 0.657261 -vt 0.440244 0.660996 -vt 0.416903 0.660996 -vt 0.854986 0.545229 -vt 0.721511 0.870586 -vt 0.686499 0.870586 -vt 0.686499 0.847245 -vt 0.440244 0.665651 -vt 0.440244 0.700663 -vt 0.854065 0.601248 -vt 0.850330 0.601248 -vt 0.850330 0.545229 -vt 0.440244 0.704398 -vt 0.416903 0.704398 -vt 0.850330 0.541495 -vt 0.812984 0.545229 -vt 0.093826 0.477545 -vt 0.075153 0.505555 -vt 0.075153 0.421526 -vt 0.149845 0.393517 -vt 0.131172 0.421526 -vt 0.093826 0.421526 -vt 0.149845 0.421526 -vt 0.131172 0.477545 -vt 0.149845 0.505555 -vt 0.819987 0.555733 -vt 0.819987 0.590745 -vt 0.843328 0.555733 -vt 0.843328 0.590745 -vt 0.812984 0.601248 -vt 0.812984 0.604983 -vt 0.416903 0.665651 -vt 0.416903 0.661917 -vt 0.440244 0.661917 -vt 0.443979 0.665651 -vt 0.443979 0.700663 -vt 0.809250 0.545229 -vt 0.725245 0.878976 -vt 0.725245 0.902318 -vt 0.872737 0.669876 -vt 0.869003 0.669876 -vt 0.869003 0.632530 -vt 0.812984 0.673611 -vt 0.812984 0.669876 -vt 0.686499 0.878976 -vt 0.686499 0.875242 -vt 0.721511 0.875242 -vt 0.858499 0.639532 -vt 0.823487 0.639532 -vt 0.812984 0.632530 -vt 0.823487 0.662874 -vt 0.858499 0.662874 -vt 0.721511 0.906052 -vt 0.686499 0.906052 -vt 0.869003 0.628795 -vt 0.809249 0.632530 -vt 0.682764 0.902318 -vt 0.682764 0.878976 -vt 0.721511 0.847245 -vt 0.725245 0.847245 -vt 0.725245 0.870586 -vt 0.770982 0.903264 -vt 0.767247 0.903264 -vt 0.767247 0.847245 -vt 0.767247 0.843510 -vt 0.729901 0.847245 -vt 0.682764 0.870586 -vt 0.682764 0.847245 -vt 0.584252 0.000461 -vt 0.612262 0.019134 -vt 0.612262 0.000461 -vt 0.780319 0.019134 -vt 0.808328 0.056480 -vt 0.808328 0.112499 -vt 0.736903 0.857749 -vt 0.736903 0.892760 -vt 0.760245 0.857748 -vt 0.760245 0.892760 -vt 0.729901 0.903264 -vt 0.721511 0.874321 -vt 0.686499 0.874321 -vt 0.726166 0.847245 -vt 0.729901 0.906999 -vt 0.686499 0.843510 -vt 0.721511 0.843510 -vt 0.495300 0.951960 -vt 0.412189 0.786636 -vt 0.225458 0.786572 -vt 0.383259 0.987414 -vt 0.612261 0.317903 -vt 0.612261 0.355249 -vt 0.584251 0.373922 -vt 0.696290 0.373922 -vt 0.668280 0.355249 -vt 0.668280 0.317903 -vt 0.612261 0.373922 -vt 0.584251 0.299230 -vt 0.612261 0.299230 -vt 0.584251 0.224537 -vt 0.612261 0.243210 -vt 0.612262 0.429940 -vt 0.612262 0.448613 -vt 0.780319 0.429940 -vt 0.808328 0.336575 -vt 0.780319 0.243210 -vt 0.354735 0.843513 -vt 0.641617 0.875562 -vt 0.260617 0.428675 -vt 0.771903 0.908893 -vt 0.782357 0.883655 -vt 0.314663 0.843513 -vt 0.274591 0.843513 -vt 0.515025 0.843513 -vt 0.474953 0.843513 -vt 0.394808 0.843513 -vt 0.583330 0.777207 -vt 0.572876 0.802445 -vt 0.785999 0.878203 -vt 0.569233 0.807897 -vt 0.810768 0.855244 -vt 0.544465 0.830856 -vt 0.842437 0.843510 -vt 0.512796 0.842589 -vt 0.876185 0.844789 -vt 0.448357 0.827213 -vt 0.479047 0.841310 -vt 0.906875 0.858886 -vt 0.425398 0.802445 -vt 0.414944 0.777206 -vt 0.929835 0.883654 -vt 0.940289 0.908893 -vt 0.379621 0.823282 -vt 0.225458 0.823282 -vt 0.371218 0.831685 -vt 0.205864 0.589584 -vt 0.075153 0.393517 -vt 0.809250 0.168518 -vt 0.939961 0.000461 -vt 0.878094 0.999539 -vt 0.224537 0.617593 -vt 0.168518 0.617593 -vt 0.000461 0.617593 -vt 0.000461 0.951960 -vt 0.612262 0.093826 -vt 0.584251 0.674532 -vt 0.000461 0.964085 -vt 0.789655 0.645601 -vt 0.584251 0.449534 -vt 0.878094 0.987414 -vt 0.808328 0.673611 -vt 0.752309 0.673611 -vt 0.696290 0.673611 -vt 0.075153 0.842591 -vt 0.000461 0.842591 -vt 0.000461 0.767899 -vt 0.000461 0.693207 -vt 0.149845 0.618515 -vt 0.224537 0.693207 -vt 0.000461 0.618514 -vt 0.224537 0.842591 -vt 0.224537 0.618515 -vt 0.641617 0.951039 -vt 0.519591 0.913830 -vt 0.502266 0.393517 -vt 0.554985 0.393517 -vt 0.861047 0.169439 -vt 0.913766 0.169439 -vt 0.414377 0.428675 -vt 0.260617 0.582435 -vt 0.414377 0.582435 -vt 0.428933 0.705319 -vt 0.873658 0.643801 -vt 0.563375 0.452185 -vt 0.563375 0.510853 -vt 0.745847 0.907920 -vt 0.571765 0.451264 -vt 0.682764 0.921979 -vt 0.555906 0.451264 -vt 0.479519 0.913816 -vt 0.403018 0.913790 -vt 0.399375 0.913788 -vt 0.359303 0.913775 -vt 0.319230 0.913761 -vt 0.242729 0.913734 -vt 0.202656 0.913721 -vt 0.162584 0.913707 -vt 0.122512 0.913693 -vt 0.118869 0.913692 -vt 0.042367 0.913665 -vt 0.038724 0.913664 -vt 0.639808 0.913871 -vt 0.559664 0.913844 -vt 0.599736 0.913857 -vt 0.000461 0.000461 -vt 0.858721 0.541495 -vt 0.896067 0.604983 -vt 0.899801 0.545229 -vt 0.854986 0.601248 -vt 0.854065 0.545229 -vt 0.812984 0.541495 -vt 0.850330 0.604983 -vt 0.809250 0.601248 -vt 0.872737 0.632530 -vt 0.869003 0.673611 -vt 0.812984 0.628795 -vt 0.809249 0.669876 -vt 0.770982 0.847245 -vt 0.729901 0.843510 -vt 0.780319 0.000461 -vt 0.808328 0.000461 -vt 0.808328 0.168518 -vt 0.726166 0.903264 -vt 0.767247 0.906999 -vt 0.696290 0.299230 -vt 0.584253 0.448613 -vt 0.808329 0.448613 -vt 0.780319 0.448613 -vt 0.808328 0.280556 -vt 0.808328 0.392594 -vn -0.980800 0.000000 -0.195100 -vn 0.000000 1.000000 0.000000 -vn -0.831500 0.000000 -0.555600 -vn -0.555600 0.000000 -0.831500 -vn -0.195100 0.000000 -0.980800 -vn 0.195100 0.000000 -0.980800 -vn 0.555600 0.000000 -0.831500 -vn 0.831500 0.000000 -0.555600 -vn 0.980800 0.000000 -0.195100 -vn 0.980800 0.000000 0.195100 -vn 0.831500 0.000000 0.555600 -vn 0.555600 0.000000 0.831500 -vn 0.195100 0.000000 0.980800 -vn -0.195100 0.000000 0.980800 -vn -0.555600 0.000000 0.831500 -vn -0.831500 0.000000 0.555600 -vn -0.980800 0.000000 0.195100 -vn 1.000000 -0.000000 0.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 -0.000000 -1.000000 -vn 0.923900 0.000000 0.382700 -vn 0.382700 0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -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.382700 0.000000 -0.923900 -vn -0.580700 -0.806900 0.108000 -vn -0.826100 -0.367200 -0.427500 -vn -0.392300 0.362500 -0.845400 -vn 0.252800 0.703100 -0.664600 -vn -0.244600 -0.769100 0.590500 -vn 0.351200 -0.397300 0.847800 -vn 0.853400 0.383100 0.353500 -vn 0.656100 0.704000 -0.271800 -vn 0.653300 0.382700 0.653300 -vn -0.590500 -0.769100 -0.244600 -vn 0.270600 -0.923900 0.270600 -vn -0.653300 -0.382700 -0.653300 -vn -0.270600 0.923900 -0.270600 -vn 0.270600 0.923900 0.270600 -vn 0.653300 -0.382700 0.653300 -vn -0.270600 -0.923900 -0.270600 -vn -0.653300 0.382700 -0.653300 -vn -0.108000 -0.806900 -0.580700 -vn 0.427500 -0.367200 -0.826100 -vn 0.845400 0.362500 -0.392300 -vn 0.664600 0.703100 0.252800 -vn -0.847800 -0.397300 0.351200 -vn -0.353500 0.383100 0.853400 -vn 0.271800 0.704000 0.656100 -vn -0.653300 0.382700 0.653300 -vn 0.653300 0.382700 -0.653300 -vn -0.270600 0.923900 0.270600 -vn 0.653300 -0.382700 -0.653300 -vn 0.270600 -0.923900 -0.270600 -vn 0.270600 0.923900 -0.270600 -vn -0.270600 -0.923900 0.270600 -vn -0.653300 -0.382700 0.653300 -vn 0.108000 -0.806900 0.580700 -vn 0.580700 -0.806900 0.108000 -vn 0.826100 -0.367200 -0.427500 -vn 0.392300 0.362500 -0.845400 -vn -0.427500 -0.367200 0.826100 -vn -0.845400 0.362500 0.392300 -vn -0.664600 0.703100 -0.252700 -vn -0.252800 0.703100 -0.664600 -vn 0.244600 -0.769100 -0.590500 -vn 0.580700 -0.806900 -0.108000 -vn 0.826100 -0.367200 0.427500 -vn 0.392300 0.362500 0.845400 -vn -0.351200 -0.397300 -0.847800 -vn -0.853400 0.383100 -0.353500 -vn -0.656100 0.704000 0.271800 -vn -0.252800 0.703100 0.664600 -vn -0.590500 -0.769100 0.244600 -vn -0.847800 -0.397300 -0.351200 -vn -0.353500 0.383100 -0.853400 -vn 0.271800 0.704000 -0.656100 -vn -0.108000 -0.806900 0.580700 -vn 0.427500 -0.367200 0.826100 -vn 0.845400 0.362500 0.392300 -vn 0.664600 0.703100 -0.252800 -vn -0.580700 -0.806900 -0.108000 -vn -0.244600 -0.769100 -0.590500 -vn 0.351200 -0.397300 -0.847800 -vn 0.853400 0.383100 -0.353500 -vn 0.656100 0.704000 0.271800 -vn -0.826100 -0.367200 0.427500 -vn -0.392300 0.362500 0.845400 -vn 0.252800 0.703100 0.664600 -vn 0.244600 -0.769100 0.590500 -vn 0.590500 -0.769100 0.244600 -vn 0.847800 -0.397300 -0.351200 -vn 0.353500 0.383100 -0.853400 -vn -0.351200 -0.397300 0.847800 -vn -0.853400 0.383100 0.353500 -vn -0.656100 0.704000 -0.271800 -vn -0.271800 0.704000 -0.656100 -vn 0.108000 -0.806900 -0.580700 -vn 0.590500 -0.769100 -0.244600 -vn 0.847800 -0.397300 0.351200 -vn 0.353500 0.383100 0.853400 -vn -0.427500 -0.367200 -0.826100 -vn -0.845400 0.362500 -0.392300 -vn -0.664600 0.703100 0.252800 -vn -0.271800 0.704000 0.656100 -s off -f 13/1/1 347/2/1 346/3/1 -f 36/4/2 37/5/2 65/6/2 -f 185/7/3 186/8/3 28/9/3 -f 183/10/4 185/7/4 27/11/4 -f 184/12/5 183/10/5 25/13/5 -f 198/14/6 184/12/6 26/15/6 -f 197/16/7 198/14/7 40/17/7 -f 196/18/8 197/16/8 39/19/8 -f 195/20/9 196/18/9 38/21/9 -f 194/22/10 195/20/10 37/5/10 -f 193/23/11 194/22/11 36/4/11 -f 192/24/12 193/23/12 35/25/12 -f 191/26/13 192/24/13 34/27/13 -f 190/28/14 191/26/14 33/29/14 -f 189/30/15 190/28/15 32/31/15 -f 188/32/16 189/30/16 31/33/16 -f 187/34/17 188/32/17 30/35/17 -f 232/36/2 14/37/2 245/38/2 -f 50/39/2 21/40/2 20/41/2 -f 22/42/2 21/40/2 50/39/2 -f 6/43/2 51/44/2 219/45/2 -f 6/43/2 221/46/2 223/47/2 -f 41/48/2 9/49/2 24/50/2 -f 10/51/2 9/49/2 41/48/2 -f 237/52/2 16/53/2 235/54/2 -f 235/54/2 16/53/2 15/55/2 -f 44/56/2 13/57/2 12/58/2 -f 14/37/2 13/57/2 44/56/2 -f 46/59/2 245/38/2 14/37/2 -f 16/53/2 237/52/2 48/60/2 -f 47/61/2 17/62/2 16/53/2 -f 18/63/2 17/62/2 47/61/2 -f 15/55/2 14/37/2 232/36/2 -f 73/64/10 72/65/10 87/66/10 -f 30/35/2 58/67/2 57/68/2 -f 37/5/2 38/21/2 66/69/2 -f 31/33/2 59/70/2 58/71/2 -f 38/21/2 39/19/2 67/72/2 -f 32/31/2 60/73/2 59/74/2 -f 40/17/2 68/75/2 67/76/2 -f 32/31/2 33/29/2 61/77/2 -f 25/13/2 53/78/2 54/79/2 -f 26/15/2 54/80/2 68/81/2 -f 33/29/2 34/27/2 62/82/2 -f 27/11/2 55/83/2 53/84/2 -f 35/25/2 63/85/2 62/86/2 -f 28/9/2 56/87/2 55/88/2 -f 35/25/2 36/4/2 64/89/2 -f 29/90/2 57/91/2 56/92/2 -f 76/93/2 78/94/2 72/65/2 -f 81/95/1 80/96/1 85/97/1 -f 58/98/9 74/99/9 73/64/9 -f 66/100/17 82/101/17 81/95/17 -f 59/102/8 75/103/8 74/99/8 -f 67/104/16 83/105/16 82/101/16 -f 60/106/7 76/93/7 75/103/7 -f 68/107/15 84/108/15 83/105/15 -f 61/109/6 77/110/6 76/93/6 -f 53/111/13 69/112/13 70/113/13 -f 54/114/14 70/113/14 84/108/14 -f 62/115/5 78/94/5 77/110/5 -f 88/116/12 71/117/12 69/112/12 -f 86/118/4 79/119/4 78/94/4 -f 85/120/3 86/121/3 63/122/3 -f 56/123/11 87/124/11 88/125/11 -f 81/95/2 83/105/2 70/113/2 -f 88/125/2 87/124/2 86/121/2 -f 87/124/15 72/126/15 79/127/15 -f 71/128/7 88/125/7 85/120/7 -f 97/129/18 94/130/18 93/131/18 -f 157/132/19 164/133/19 165/134/19 -f 89/135/20 90/136/20 151/137/20 -f 95/138/18 91/139/18 92/140/18 -f 98/141/18 92/140/18 2/142/18 -f 94/130/18 97/129/18 1/143/18 -f 96/144/21 95/145/21 106/146/21 -f 99/147/2 111/148/2 108/149/2 -f 97/150/2 107/151/2 112/152/2 -f 108/153/18 111/154/18 110/155/18 -f 107/156/18 105/157/18 109/158/18 -f 110/155/18 109/158/18 105/157/18 -f 104/159/22 112/152/22 109/160/22 -f 96/144/20 105/161/20 107/151/20 -f 50/162/18 51/163/18 95/138/18 -f 102/164/2 109/165/2 110/166/2 -f 100/167/20 110/166/20 111/148/20 -f 98/168/22 108/149/22 106/146/22 -f 398/169/22 397/170/22 394/171/22 -f 120/172/2 114/173/2 126/174/2 -f 115/175/19 125/176/19 123/177/19 -f 125/178/22 130/179/22 128/180/22 -f 129/181/22 127/182/22 126/183/22 -f 124/184/22 123/185/22 128/180/22 -f 116/186/18 124/187/18 126/174/18 -f 118/188/2 130/189/2 125/176/2 -f 121/190/18 128/191/18 130/189/18 -f 122/192/2 129/193/2 128/191/2 -f 120/172/19 127/194/19 129/195/19 -f 139/196/19 136/197/19 411/198/19 -f 411/198/19 412/199/19 140/200/19 -f 132/201/21 131/202/21 142/203/21 -f 140/204/2 145/205/2 146/206/2 -f 138/207/2 134/208/2 144/209/2 -f 407/210/19 135/211/19 137/212/19 -f 138/213/19 140/200/19 412/199/19 -f 142/214/19 146/215/19 145/216/19 -f 143/217/19 147/218/19 146/215/19 -f 145/216/19 148/219/19 144/220/19 -f 138/207/20 148/221/20 145/222/20 -f 133/223/20 143/224/20 142/203/20 -f 136/225/2 147/226/2 143/224/2 -f 133/227/19 131/228/19 8/229/19 -f 132/201/22 141/230/22 144/209/22 -f 139/231/22 146/206/22 147/226/22 -f 150/232/20 92/233/20 91/234/20 -f 153/235/19 159/236/19 163/237/19 -f 149/238/20 154/239/20 151/137/20 -f 150/232/20 155/240/20 2/241/20 -f 162/242/20 165/243/20 164/244/20 -f 160/245/20 166/246/20 163/247/20 -f 150/248/2 163/237/2 166/249/2 -f 158/250/2 160/251/2 164/133/2 -f 151/252/18 162/253/18 161/254/18 -f 156/255/18 166/249/18 160/256/18 -f 48/257/20 7/258/20 152/259/20 -f 154/260/2 165/134/2 162/253/2 -f 137/261/21 113/262/21 103/263/21 -f 20/264/11 354/265/11 353/266/11 -f 12/267/3 346/3/3 345/268/3 -f 19/269/12 353/266/12 352/270/12 -f 11/271/4 345/268/4 343/272/4 -f 18/273/13 352/270/13 351/274/13 -f 9/275/6 344/276/6 358/277/6 -f 10/278/5 343/272/5 344/276/5 -f 17/279/14 351/274/14 350/280/14 -f 24/281/7 358/277/7 357/282/7 -f 16/283/15 350/280/15 349/284/15 -f 23/285/8 357/282/8 356/286/8 -f 15/287/16 349/284/16 348/288/16 -f 22/289/9 356/286/9 355/290/9 -f 14/291/17 348/288/17 347/292/17 -f 21/293/10 355/290/10 354/265/10 -f 350/280/2 351/274/2 333/294/2 -f 186/8/1 187/295/1 29/90/1 -f 181/296/21 168/297/21 188/32/21 -f 168/298/21 167/299/21 189/30/21 -f 167/300/21 171/301/21 190/28/21 -f 171/302/21 173/303/21 191/26/21 -f 173/304/21 176/305/21 192/24/21 -f 176/306/21 178/307/21 193/23/21 -f 178/308/21 180/309/21 194/22/21 -f 194/22/21 180/310/21 182/311/21 -f 182/312/21 170/313/21 196/18/21 -f 196/18/21 170/314/21 169/315/21 -f 197/16/21 169/316/21 172/317/21 -f 172/318/21 175/319/21 184/12/21 -f 184/12/21 175/320/21 174/321/21 -f 183/10/21 174/322/21 177/323/21 -f 185/7/21 177/324/21 179/325/21 -f 186/8/21 179/326/21 181/327/21 -f 236/328/23 238/329/23 237/330/23 -f 239/331/2 48/60/2 237/52/2 -f 202/332/24 204/333/24 203/334/24 -f 244/335/25 246/336/25 245/337/25 -f 226/338/26 228/339/26 227/340/26 -f 204/333/27 206/341/27 205/342/27 -f 240/343/28 242/344/28 241/345/28 -f 224/346/28 226/338/28 225/347/28 -f 206/341/23 208/348/23 207/349/23 -f 242/344/26 244/335/26 243/350/26 -f 222/351/29 224/346/29 223/352/29 -f 208/348/29 210/353/29 209/354/29 -f 7/355/2 48/60/2 239/331/2 -f 220/356/23 222/351/23 221/357/23 -f 210/353/28 212/358/28 211/359/28 -f 228/339/25 230/360/25 229/361/25 -f 218/362/27 220/356/27 219/363/27 -f 212/364/26 214/365/26 213/366/26 -f 243/367/2 245/38/2 46/59/2 -f 216/368/30 202/332/30 201/369/30 -f 214/365/25 216/368/25 215/370/25 -f 238/329/29 240/343/29 239/371/29 -f 230/372/30 199/373/30 200/374/30 -f 199/373/24 218/362/24 217/375/24 -f 234/376/27 236/328/27 235/377/27 -f 246/336/30 231/378/30 232/379/30 -f 231/378/24 234/380/24 233/381/24 -f 252/382/23 254/383/23 253/384/23 -f 260/385/25 262/386/25 261/387/25 -f 256/388/28 258/389/28 257/390/28 -f 258/389/26 260/385/26 259/391/26 -f 7/355/2 241/392/2 243/367/2 -f 254/393/29 256/388/29 255/394/29 -f 250/395/27 252/382/27 251/396/27 -f 262/386/30 247/397/30 248/398/30 -f 247/397/24 250/395/24 249/399/24 -f 223/47/2 225/400/2 49/401/2 -f 219/45/2 51/44/2 217/402/2 -f 51/44/2 20/41/2 217/402/2 -f 217/402/2 20/41/2 200/403/2 -f 200/403/2 20/41/2 19/404/2 -f 49/401/2 225/400/2 18/63/2 -f 225/400/2 227/405/2 18/63/2 -f 19/404/2 18/63/2 227/405/2 -f 8/406/2 261/407/2 248/408/2 -f 8/406/2 45/409/2 259/410/2 -f 259/410/2 45/409/2 257/411/2 -f 248/408/2 249/412/2 42/413/2 -f 42/413/2 249/412/2 10/51/2 -f 45/409/2 12/58/2 257/411/2 -f 257/411/2 12/58/2 255/414/2 -f 249/412/2 251/415/2 10/51/2 -f 11/416/2 10/51/2 251/415/2 -f 255/414/2 12/58/2 11/416/2 -f 5/417/2 203/418/2 205/419/2 -f 5/417/2 43/420/2 201/421/2 -f 201/421/2 43/420/2 215/422/2 -f 205/419/2 207/423/2 52/424/2 -f 52/424/2 207/423/2 22/42/2 -f 43/420/2 24/50/2 215/422/2 -f 207/423/2 209/425/2 22/42/2 -f 23/426/2 22/42/2 209/425/2 -f 215/422/2 24/50/2 213/427/2 -f 213/427/2 24/50/2 23/426/2 -f 212/428/31 267/429/31 266/430/31 -f 214/431/32 266/430/32 265/432/32 -f 216/433/33 265/432/33 264/434/33 -f 202/435/34 264/434/34 263/436/34 -f 212/437/35 210/438/35 268/439/35 -f 210/438/36 208/440/36 269/441/36 -f 208/440/37 206/442/37 270/443/37 -f 206/442/38 204/444/38 263/436/38 -f 269/445/39 270/446/39 278/447/39 -f 230/448/40 228/449/40 282/450/40 -f 268/451/41 276/452/41 275/453/41 -f 266/454/42 274/455/42 273/456/42 -f 263/457/43 264/458/43 271/459/43 -f 270/446/44 263/457/44 272/460/44 -f 268/451/45 269/445/45 277/461/45 -f 267/462/46 275/463/46 274/455/46 -f 265/464/47 273/456/47 271/459/47 -f 230/465/48 281/466/48 280/467/48 -f 199/468/49 280/467/49 279/469/49 -f 218/470/50 279/469/50 286/471/50 -f 220/472/51 286/471/51 285/473/51 -f 228/449/52 226/474/52 283/475/52 -f 226/474/53 224/476/53 284/477/53 -f 224/476/54 222/478/54 285/473/54 -f 283/479/55 284/480/55 287/481/55 -f 286/482/56 279/483/56 292/484/56 -f 284/480/57 285/485/57 293/486/57 -f 279/483/58 280/487/58 290/488/58 -f 281/489/59 289/490/59 290/488/59 -f 286/482/60 294/491/60 293/486/60 -f 282/492/61 291/493/61 289/494/61 -f 283/479/62 288/495/62 291/493/62 -f 254/496/63 297/497/63 298/498/63 -f 296/499/64 297/500/64 254/501/64 -f 295/502/65 296/499/65 252/503/65 -f 302/504/66 295/502/66 250/505/66 -f 256/506/67 298/498/67 299/507/67 -f 258/508/68 299/507/68 300/509/68 -f 260/510/69 300/509/69 301/511/69 -f 301/511/70 302/504/70 247/512/70 -f 297/513/59 296/514/59 306/515/59 -f 234/516/71 231/517/71 316/518/71 -f 302/519/60 301/520/60 309/521/60 -f 297/522/61 305/523/61 307/524/61 -f 299/525/62 298/526/62 307/524/62 -f 299/525/55 304/527/55 303/528/55 -f 302/519/56 310/529/56 308/530/56 -f 301/520/57 300/531/57 303/528/57 -f 295/532/58 308/530/58 306/515/58 -f 234/533/72 315/534/72 314/535/72 -f 236/536/73 314/535/73 313/537/73 -f 238/538/74 313/537/74 312/539/74 -f 231/517/75 246/540/75 317/541/75 -f 246/540/76 244/542/76 318/543/76 -f 244/542/77 242/544/77 311/545/77 -f 240/546/78 312/539/78 311/545/78 -f 315/547/41 320/548/41 323/549/41 -f 316/550/46 319/551/46 320/552/46 -f 318/553/43 311/554/43 324/555/43 -f 317/556/42 325/557/42 319/551/42 -f 311/554/44 312/558/44 322/559/44 -f 312/558/39 313/560/39 321/561/39 -f 318/553/47 326/562/47 325/557/47 -f 313/560/45 314/563/45 323/549/45 -f 351/274/2 352/270/2 336/564/2 -f 336/565/2 352/270/2 353/266/2 -f 353/266/2 354/265/2 340/566/2 -f 354/265/2 355/290/2 342/567/2 -f 355/290/2 356/286/2 330/568/2 -f 330/569/2 356/286/2 357/282/2 -f 329/570/2 357/282/2 358/277/2 -f 332/571/2 358/277/2 344/276/2 -f 335/572/2 344/276/2 343/272/2 -f 343/272/2 345/268/2 337/573/2 -f 337/574/2 345/268/2 346/3/2 -f 346/3/2 347/2/2 341/575/2 -f 347/292/2 348/288/2 328/576/2 -f 349/284/2 350/280/2 331/577/2 -f 348/288/2 349/284/2 327/578/2 -f 341/579/1 181/580/1 179/581/1 -f 328/582/17 168/583/17 181/584/17 -f 327/585/16 167/586/16 168/583/16 -f 331/587/15 171/588/15 167/586/15 -f 333/589/14 173/590/14 171/588/14 -f 336/591/13 176/592/13 173/590/13 -f 338/593/12 178/594/12 176/592/12 -f 340/595/11 180/596/11 178/594/11 -f 342/597/10 182/598/10 180/596/10 -f 330/599/9 170/600/9 182/598/9 -f 329/601/8 169/602/8 170/600/8 -f 332/603/7 172/604/7 169/602/7 -f 335/605/6 175/606/6 172/604/6 -f 334/607/5 174/608/5 175/606/5 -f 337/609/4 177/610/4 174/608/4 -f 339/611/3 179/581/3 177/610/3 -f 382/612/20 384/613/20 386/614/20 -f 376/615/2 371/616/2 370/617/2 -f 365/618/21 377/619/21 378/620/21 -f 366/621/18 378/622/18 364/623/18 -f 374/624/21 369/625/21 363/626/21 -f 363/626/20 364/627/20 378/628/20 -f 371/616/20 378/628/20 377/629/20 -f 369/625/20 372/630/20 364/627/20 -f 369/625/20 370/617/20 377/629/20 -f 374/631/20 373/632/20 158/633/20 -f 156/634/20 373/632/20 376/635/20 -f 155/240/20 376/635/20 380/636/20 -f 374/631/20 157/637/20 154/239/20 -f 375/638/19 372/639/19 377/640/19 -f 373/641/19 363/626/19 371/616/19 -f 379/642/2 364/643/2 372/644/2 -f 380/645/18 370/617/18 369/625/18 -f 413/646/19 410/647/19 408/648/19 -f 366/621/20 379/642/20 375/638/20 -f 368/649/18 359/650/18 382/612/18 -f 361/651/20 389/652/20 387/653/20 -f 359/650/2 383/654/2 384/655/2 -f 360/656/2 387/653/2 388/657/2 -f 367/658/18 100/659/18 99/660/18 -f 103/661/18 360/662/18 362/663/18 -f 104/664/18 361/665/18 360/662/18 -f 367/658/18 361/665/18 102/666/18 -f 388/657/18 386/667/18 384/668/18 -f 388/657/18 387/653/18 385/669/18 -f 383/670/18 385/669/18 387/653/18 -f 383/670/18 389/652/18 390/671/18 -f 367/672/21 390/671/21 389/652/21 -f 381/673/21 386/674/21 385/675/21 -f 368/649/22 385/676/22 383/677/22 -f 362/678/22 388/657/22 390/671/22 -f 398/169/2 400/679/2 399/680/2 -f 393/681/2 404/682/2 403/683/2 -f 396/684/18 406/685/18 404/682/18 -f 392/686/19 402/687/19 400/688/19 -f 403/683/22 401/689/22 399/690/22 -f 401/689/22 403/683/22 404/682/22 -f 406/685/22 405/691/22 399/690/22 -f 406/685/22 400/692/22 402/693/22 -f 397/170/18 399/694/18 401/695/18 -f 391/696/19 403/683/19 405/691/19 -f 395/697/21 405/691/21 406/685/21 -f 394/171/21 401/698/21 402/699/21 -f 414/700/2 415/701/2 417/702/2 -f 412/703/22 419/704/22 420/705/22 -f 409/706/2 420/705/2 421/707/2 -f 410/647/21 422/708/21 416/709/21 -f 135/211/19 136/197/19 133/227/19 -f 137/212/19 3/710/19 134/711/19 -f 134/711/19 3/710/19 90/712/19 -f 132/713/19 46/714/19 44/715/19 -f 421/707/19 422/716/19 417/717/19 -f 416/718/19 422/716/19 421/707/19 -f 420/705/19 419/704/19 415/719/19 -f 419/704/19 418/720/19 417/717/19 -f 413/646/22 417/721/22 422/722/22 -f 407/723/20 421/707/20 418/720/20 -f 411/724/21 418/720/21 419/704/21 -f 408/648/20 416/725/20 415/726/20 -f 124/187/21 116/186/21 117/727/21 -f 159/728/20 161/729/20 164/244/20 -f 153/235/21 152/730/21 161/254/21 -f 393/731/22 391/732/22 113/733/22 -f 121/734/22 395/735/22 396/736/22 -f 118/737/22 391/732/22 395/735/22 -f 393/731/22 119/738/22 120/739/22 -f 119/738/22 4/740/22 114/741/22 -f 113/733/22 118/737/22 115/742/22 -f 94/743/22 115/742/22 117/744/22 -f 41/745/22 117/744/22 116/746/22 -f 114/741/22 4/740/22 8/229/22 -f 12/267/1 13/1/1 346/3/1 -f 64/747/2 36/4/2 65/6/2 -f 27/11/3 185/7/3 28/9/3 -f 25/13/4 183/10/4 27/11/4 -f 26/15/5 184/12/5 25/13/5 -f 40/17/6 198/14/6 26/15/6 -f 39/19/7 197/16/7 40/17/7 -f 38/21/8 196/18/8 39/19/8 -f 37/5/9 195/20/9 38/21/9 -f 36/4/10 194/22/10 37/5/10 -f 35/25/11 193/23/11 36/4/11 -f 34/27/12 192/24/12 35/25/12 -f 33/29/13 191/26/13 34/27/13 -f 32/31/14 190/28/14 33/29/14 -f 31/33/15 189/30/15 32/31/15 -f 30/35/16 188/32/16 31/33/16 -f 29/748/17 187/34/17 30/35/17 -f 51/44/2 50/39/2 20/41/2 -f 52/424/2 22/42/2 50/39/2 -f 221/46/2 6/43/2 219/45/2 -f 49/401/2 6/43/2 223/47/2 -f 43/420/2 41/48/2 24/50/2 -f 42/413/2 10/51/2 41/48/2 -f 233/749/2 235/54/2 15/55/2 -f 45/409/2 44/56/2 12/58/2 -f 46/59/2 14/37/2 44/56/2 -f 48/60/2 47/61/2 16/53/2 -f 49/401/2 18/63/2 47/61/2 -f 233/749/2 15/55/2 232/36/2 -f 87/66/10 56/750/10 57/751/10 -f 57/751/10 73/64/10 87/66/10 -f 29/748/2 30/35/2 57/68/2 -f 65/752/2 37/5/2 66/69/2 -f 30/35/2 31/33/2 58/71/2 -f 66/753/2 38/21/2 67/72/2 -f 31/33/2 32/31/2 59/74/2 -f 39/19/2 40/17/2 67/76/2 -f 60/754/2 32/31/2 61/77/2 -f 26/15/2 25/13/2 54/79/2 -f 40/17/2 26/15/2 68/81/2 -f 61/755/2 33/29/2 62/82/2 -f 25/13/2 27/11/2 53/84/2 -f 34/27/2 35/25/2 62/86/2 -f 27/11/2 28/9/2 55/88/2 -f 63/756/2 35/25/2 64/89/2 -f 28/9/2 29/90/2 56/92/2 -f 72/65/2 73/64/2 74/99/2 -f 74/99/2 75/103/2 76/93/2 -f 76/93/2 77/110/2 78/94/2 -f 78/94/2 79/119/2 72/65/2 -f 72/65/2 74/99/2 76/93/2 -f 85/97/1 64/757/1 65/758/1 -f 65/758/1 81/95/1 85/97/1 -f 57/759/9 58/98/9 73/64/9 -f 65/760/17 66/100/17 81/95/17 -f 58/761/8 59/102/8 74/99/8 -f 66/762/16 67/104/16 82/101/16 -f 59/763/7 60/106/7 75/103/7 -f 67/764/15 68/107/15 83/105/15 -f 60/765/6 61/109/6 76/93/6 -f 54/766/13 53/111/13 70/113/13 -f 68/767/14 54/114/14 84/108/14 -f 61/768/5 62/115/5 77/110/5 -f 69/112/12 53/769/12 88/116/12 -f 55/770/12 88/116/12 53/769/12 -f 78/94/4 62/771/4 86/118/4 -f 63/772/4 86/118/4 62/771/4 -f 64/773/3 85/120/3 63/122/3 -f 55/774/11 56/123/11 88/125/11 -f 70/113/2 69/112/2 71/117/2 -f 71/117/2 80/96/2 81/95/2 -f 81/95/2 82/101/2 83/105/2 -f 83/105/2 84/108/2 70/113/2 -f 70/113/2 71/117/2 81/95/2 -f 85/120/2 88/125/2 86/121/2 -f 86/121/15 87/124/15 79/127/15 -f 80/775/7 71/128/7 85/120/7 -f 96/776/18 97/129/18 93/131/18 -f 154/260/19 157/132/19 165/134/19 -f 152/259/20 89/135/20 151/137/20 -f 98/141/18 95/138/18 92/140/18 -f 2/142/18 101/777/18 98/141/18 -f 99/660/18 98/141/18 101/777/18 -f 103/661/18 1/143/18 97/129/18 -f 97/129/18 104/664/18 103/661/18 -f 105/161/21 96/144/21 106/146/21 -f 98/168/2 99/147/2 108/149/2 -f 104/159/2 97/150/2 112/152/2 -f 106/778/18 108/153/18 110/155/18 -f 112/779/18 107/156/18 109/158/18 -f 106/778/18 110/155/18 105/157/18 -f 102/780/22 104/159/22 109/160/22 -f 97/150/20 96/144/20 107/151/20 -f 96/776/18 93/131/18 5/781/18 -f 5/781/18 52/782/18 96/776/18 -f 51/163/18 6/783/18 95/138/18 -f 52/782/18 50/162/18 96/776/18 -f 95/138/18 96/776/18 50/162/18 -f 6/783/18 91/139/18 95/138/18 -f 100/167/2 102/164/2 110/166/2 -f 99/147/20 100/167/20 111/148/20 -f 95/145/22 98/168/22 106/146/22 -f 392/686/22 398/169/22 394/171/22 -f 127/194/2 120/172/2 126/174/2 -f 117/727/19 115/175/19 123/177/19 -f 123/185/22 125/178/22 128/180/22 -f 124/184/22 129/181/22 126/183/22 -f 129/181/22 124/184/22 128/180/22 -f 114/173/18 116/186/18 126/174/18 -f 115/175/2 118/188/2 125/176/2 -f 118/188/18 121/190/18 130/189/18 -f 121/190/2 122/192/2 128/191/2 -f 122/784/19 120/172/19 129/195/19 -f 407/210/19 411/198/19 136/197/19 -f 136/197/19 135/211/19 407/210/19 -f 139/196/19 411/198/19 140/200/19 -f 141/230/21 132/201/21 142/203/21 -f 139/231/2 140/204/2 146/206/2 -f 148/221/2 138/207/2 144/209/2 -f 409/785/19 407/210/19 137/212/19 -f 412/199/19 409/785/19 138/213/19 -f 137/212/19 138/213/19 409/785/19 -f 141/786/19 142/214/19 145/216/19 -f 142/214/19 143/217/19 146/215/19 -f 141/786/19 145/216/19 144/220/19 -f 140/787/20 138/207/20 145/222/20 -f 131/202/20 133/223/20 142/203/20 -f 133/223/2 136/225/2 143/224/2 -f 4/740/19 133/227/19 8/229/19 -f 134/208/22 132/201/22 144/209/22 -f 136/225/22 139/231/22 147/226/22 -f 153/788/20 150/232/20 91/234/20 -f 150/248/19 153/235/19 163/237/19 -f 151/137/20 90/136/20 3/789/20 -f 3/789/20 149/238/20 151/137/20 -f 2/241/20 92/233/20 150/232/20 -f 150/232/20 156/634/20 155/240/20 -f 161/729/20 162/242/20 164/244/20 -f 159/728/20 160/245/20 163/247/20 -f 156/255/2 150/248/2 166/249/2 -f 157/132/2 158/250/2 164/133/2 -f 152/730/18 151/252/18 161/254/18 -f 158/790/18 156/255/18 160/256/18 -f 153/788/20 91/234/20 6/791/20 -f 6/791/20 49/792/20 153/788/20 -f 47/793/20 48/257/20 152/259/20 -f 7/258/20 89/135/20 152/259/20 -f 152/259/20 153/788/20 47/793/20 -f 49/792/20 47/793/20 153/788/20 -f 151/252/2 154/260/2 162/253/2 -f 101/794/21 2/795/21 155/796/21 -f 155/796/21 149/797/21 137/261/21 -f 137/261/21 135/798/21 119/799/21 -f 149/797/21 3/800/21 137/261/21 -f 103/263/21 101/794/21 155/796/21 -f 113/262/21 1/801/21 103/263/21 -f 135/798/21 4/802/21 119/799/21 -f 119/799/21 113/262/21 137/261/21 -f 103/263/21 155/796/21 137/261/21 -f 19/269/11 20/264/11 353/266/11 -f 11/271/3 12/267/3 345/268/3 -f 18/273/12 19/269/12 352/270/12 -f 10/278/4 11/271/4 343/272/4 -f 17/279/13 18/273/13 351/274/13 -f 24/281/6 9/275/6 358/277/6 -f 9/275/5 10/278/5 344/276/5 -f 16/283/14 17/279/14 350/280/14 -f 23/285/7 24/281/7 357/282/7 -f 15/287/15 16/283/15 349/284/15 -f 22/289/8 23/285/8 356/286/8 -f 14/291/16 15/287/16 348/288/16 -f 21/293/9 22/289/9 355/290/9 -f 13/803/17 14/291/17 347/292/17 -f 20/264/10 21/293/10 354/265/10 -f 331/804/2 350/280/2 333/294/2 -f 28/9/1 186/8/1 29/90/1 -f 187/34/21 181/296/21 188/32/21 -f 188/32/21 168/298/21 189/30/21 -f 189/30/21 167/300/21 190/28/21 -f 190/28/21 171/302/21 191/26/21 -f 191/26/21 173/304/21 192/24/21 -f 192/24/21 176/306/21 193/23/21 -f 193/23/21 178/308/21 194/22/21 -f 195/20/21 194/22/21 182/311/21 -f 195/20/21 182/312/21 196/18/21 -f 197/16/21 196/18/21 169/315/21 -f 198/14/21 197/16/21 172/317/21 -f 198/14/21 172/318/21 184/12/21 -f 183/10/21 184/12/21 174/321/21 -f 185/7/21 183/10/21 177/323/21 -f 186/8/21 185/7/21 179/325/21 -f 187/295/21 186/8/21 181/327/21 -f 235/377/23 236/328/23 237/330/23 -f 201/369/24 202/332/24 203/334/24 -f 243/350/25 244/335/25 245/337/25 -f 225/347/26 226/338/26 227/340/26 -f 203/334/27 204/333/27 205/342/27 -f 239/371/28 240/343/28 241/345/28 -f 223/352/28 224/346/28 225/347/28 -f 205/342/23 206/341/23 207/349/23 -f 241/345/26 242/344/26 243/350/26 -f 221/357/29 222/351/29 223/352/29 -f 207/349/29 208/348/29 209/354/29 -f 241/392/2 7/355/2 239/331/2 -f 219/363/23 220/356/23 221/357/23 -f 209/354/28 210/353/28 211/359/28 -f 227/340/25 228/339/25 229/361/25 -f 217/375/27 218/362/27 219/363/27 -f 211/805/26 212/364/26 213/366/26 -f 215/370/30 216/368/30 201/369/30 -f 213/366/25 214/365/25 215/370/25 -f 237/330/29 238/329/29 239/371/29 -f 229/806/30 230/372/30 200/374/30 -f 200/374/24 199/373/24 217/375/24 -f 233/807/27 234/376/27 235/377/27 -f 245/337/30 246/336/30 232/379/30 -f 232/379/24 231/378/24 233/381/24 -f 251/396/23 252/382/23 253/384/23 -f 259/391/25 260/385/25 261/387/25 -f 255/394/28 256/388/28 257/390/28 -f 257/390/26 258/389/26 259/391/26 -f 46/59/2 7/355/2 243/367/2 -f 253/808/29 254/393/29 255/394/29 -f 249/399/27 250/395/27 251/396/27 -f 261/387/30 262/386/30 248/398/30 -f 248/398/24 247/397/24 249/399/24 -f 229/809/2 200/403/2 19/404/2 -f 229/809/2 19/404/2 227/405/2 -f 42/413/2 8/406/2 248/408/2 -f 261/407/2 8/406/2 259/410/2 -f 253/810/2 11/416/2 251/415/2 -f 253/810/2 255/414/2 11/416/2 -f 52/424/2 5/417/2 205/419/2 -f 203/418/2 5/417/2 201/421/2 -f 211/811/2 23/426/2 209/425/2 -f 211/811/2 213/427/2 23/426/2 -f 214/431/79 212/428/79 266/430/79 -f 216/433/80 214/431/80 265/432/80 -f 202/435/81 216/433/81 264/434/81 -f 204/444/82 202/435/82 263/436/82 -f 267/812/83 212/437/83 268/439/83 -f 268/439/84 210/438/84 269/441/84 -f 269/441/85 208/440/85 270/443/85 -f 270/443/86 206/442/86 263/436/86 -f 277/461/39 269/445/39 278/447/39 -f 281/813/87 230/448/87 282/450/87 -f 267/814/41 268/451/41 275/453/41 -f 265/464/42 266/454/42 273/456/42 -f 272/460/43 263/457/43 271/459/43 -f 278/447/44 270/446/44 272/460/44 -f 276/452/45 268/451/45 277/461/45 -f 266/454/46 267/462/46 274/455/46 -f 264/458/47 265/464/47 271/459/47 -f 199/468/88 230/465/88 280/467/88 -f 218/470/89 199/468/89 279/469/89 -f 220/472/90 218/470/90 286/471/90 -f 222/478/91 220/472/91 285/473/91 -f 282/450/92 228/449/92 283/475/92 -f 283/475/93 226/474/93 284/477/93 -f 284/477/94 224/476/94 285/473/94 -f 288/495/55 283/479/55 287/481/55 -f 294/491/56 286/482/56 292/484/56 -f 287/481/57 284/480/57 293/486/57 -f 292/484/58 279/483/58 290/488/58 -f 280/487/59 281/489/59 290/488/59 -f 285/485/60 286/482/60 293/486/60 -f 281/815/61 282/492/61 289/494/61 -f 282/492/62 283/479/62 291/493/62 -f 256/506/95 254/496/95 298/498/95 -f 252/503/96 296/499/96 254/501/96 -f 250/505/97 295/502/97 252/503/97 -f 247/512/98 302/504/98 250/505/98 -f 258/508/99 256/506/99 299/507/99 -f 260/510/100 258/508/100 300/509/100 -f 262/816/101 260/510/101 301/511/101 -f 262/816/102 301/511/102 247/512/102 -f 305/817/59 297/513/59 306/515/59 -f 315/818/103 234/516/103 316/518/103 -f 310/529/60 302/519/60 309/521/60 -f 298/526/61 297/522/61 307/524/61 -f 304/527/62 299/525/62 307/524/62 -f 300/531/55 299/525/55 303/528/55 -f 295/532/56 302/519/56 308/530/56 -f 309/521/57 301/520/57 303/528/57 -f 296/514/58 295/532/58 306/515/58 -f 236/536/104 234/533/104 314/535/104 -f 238/538/105 236/536/105 313/537/105 -f 240/546/106 238/538/106 312/539/106 -f 316/518/107 231/517/107 317/541/107 -f 317/541/108 246/540/108 318/543/108 -f 318/543/109 244/542/109 311/545/109 -f 242/544/110 240/546/110 311/545/110 -f 314/563/41 315/547/41 323/549/41 -f 315/819/46 316/550/46 320/552/46 -f 326/562/43 318/553/43 324/555/43 -f 316/550/42 317/556/42 319/551/42 -f 324/555/44 311/554/44 322/559/44 -f 322/559/39 312/558/39 321/561/39 -f 317/556/47 318/553/47 325/557/47 -f 321/561/45 313/560/45 323/549/45 -f 333/820/2 351/274/2 336/564/2 -f 338/821/2 336/565/2 353/266/2 -f 338/822/2 353/266/2 340/566/2 -f 340/823/2 354/265/2 342/567/2 -f 342/824/2 355/290/2 330/568/2 -f 329/825/2 330/569/2 357/282/2 -f 332/826/2 329/570/2 358/277/2 -f 335/827/2 332/571/2 344/276/2 -f 334/828/2 335/572/2 343/272/2 -f 334/829/2 343/272/2 337/573/2 -f 339/830/2 337/574/2 346/3/2 -f 339/831/2 346/3/2 341/575/2 -f 341/832/2 347/292/2 328/576/2 -f 327/833/2 349/284/2 331/577/2 -f 328/834/2 348/288/2 327/578/2 -f 339/611/1 341/579/1 179/581/1 -f 341/835/17 328/582/17 181/584/17 -f 328/582/16 327/585/16 168/583/16 -f 327/585/15 331/587/15 167/586/15 -f 331/587/14 333/589/14 171/588/14 -f 333/589/13 336/591/13 173/590/13 -f 336/591/12 338/593/12 176/592/12 -f 338/593/11 340/595/11 178/594/11 -f 340/595/10 342/597/10 180/596/10 -f 342/597/9 330/599/9 182/598/9 -f 330/599/8 329/601/8 170/600/8 -f 329/601/7 332/603/7 169/602/7 -f 332/603/6 335/605/6 172/604/6 -f 335/605/5 334/607/5 175/606/5 -f 334/607/4 337/609/4 174/608/4 -f 337/609/3 339/611/3 177/610/3 -f 381/673/20 382/612/20 386/614/20 -f 380/836/2 376/615/2 370/617/2 -f 366/621/21 365/618/21 378/620/21 -f 379/642/18 366/621/18 364/623/18 -f 373/837/21 374/624/21 363/626/21 -f 371/616/20 363/626/20 378/628/20 -f 370/617/20 371/616/20 377/629/20 -f 363/626/20 369/625/20 364/627/20 -f 372/630/20 369/625/20 377/629/20 -f 157/637/20 374/631/20 158/633/20 -f 376/635/20 155/240/20 156/634/20 -f 156/634/20 158/633/20 373/632/20 -f 149/238/20 155/240/20 380/636/20 -f 154/239/20 149/238/20 380/636/20 -f 380/636/20 374/631/20 154/239/20 -f 365/618/19 375/638/19 377/640/19 -f 376/838/19 373/641/19 371/616/19 -f 375/638/2 379/642/2 372/644/2 -f 374/839/18 380/645/18 369/625/18 -f 414/700/19 413/646/19 408/648/19 -f 365/618/20 366/621/20 375/638/20 -f 381/673/18 368/649/18 382/612/18 -f 360/840/20 361/651/20 387/653/20 -f 382/612/2 359/650/2 384/655/2 -f 362/841/2 360/656/2 388/657/2 -f 99/660/18 101/777/18 362/663/18 -f 362/663/18 367/658/18 99/660/18 -f 101/777/18 103/661/18 362/663/18 -f 360/662/18 103/661/18 104/664/18 -f 104/664/18 102/666/18 361/665/18 -f 100/659/18 367/658/18 102/666/18 -f 390/671/18 388/657/18 384/668/18 -f 386/667/18 388/657/18 385/669/18 -f 389/652/18 383/670/18 387/653/18 -f 384/668/18 383/670/18 390/671/18 -f 361/842/21 367/672/21 389/652/21 -f 368/649/21 381/673/21 385/675/21 -f 359/650/22 368/649/22 383/677/22 -f 367/843/22 362/678/22 390/671/22 -f 397/170/2 398/169/2 399/680/2 -f 391/844/2 393/681/2 403/683/2 -f 393/845/18 396/684/18 404/682/18 -f 398/169/19 392/686/19 400/688/19 -f 405/691/22 403/683/22 399/690/22 -f 402/693/22 401/689/22 404/682/22 -f 400/692/22 406/685/22 399/690/22 -f 404/682/22 406/685/22 402/693/22 -f 394/171/18 397/170/18 401/695/18 -f 395/846/19 391/696/19 405/691/19 -f 396/847/21 395/697/21 406/685/21 -f 392/686/21 394/171/21 402/699/21 -f 413/646/2 414/700/2 417/702/2 -f 409/848/22 412/703/22 420/705/22 -f 407/849/2 409/706/2 421/707/2 -f 408/648/21 410/647/21 416/709/21 -f 4/740/19 135/211/19 133/227/19 -f 138/213/19 137/212/19 134/711/19 -f 89/850/19 7/851/19 132/713/19 -f 132/713/19 134/711/19 90/712/19 -f 90/712/19 89/850/19 132/713/19 -f 44/715/19 45/852/19 131/228/19 -f 8/229/19 131/228/19 45/852/19 -f 132/713/19 7/851/19 46/714/19 -f 44/715/19 131/228/19 132/713/19 -f 418/720/19 421/707/19 417/717/19 -f 420/705/19 416/718/19 421/707/19 -f 416/718/19 420/705/19 415/719/19 -f 415/719/19 419/704/19 417/717/19 -f 410/647/22 413/646/22 422/722/22 -f 411/853/20 407/723/20 418/720/20 -f 412/854/21 411/724/21 419/704/21 -f 414/700/20 408/648/20 415/726/20 -f 123/177/21 124/187/21 117/727/21 -f 160/245/20 159/728/20 164/244/20 -f 159/236/21 153/235/21 161/254/21 -f 119/738/22 393/731/22 113/733/22 -f 122/855/22 121/734/22 396/736/22 -f 395/735/22 121/734/22 118/737/22 -f 118/737/22 113/733/22 391/732/22 -f 120/739/22 122/855/22 396/736/22 -f 396/736/22 393/731/22 120/739/22 -f 120/739/22 119/738/22 114/741/22 -f 1/856/22 113/733/22 115/742/22 -f 117/744/22 5/857/22 93/858/22 -f 93/858/22 94/743/22 117/744/22 -f 1/856/22 115/742/22 94/743/22 -f 8/229/22 42/859/22 116/746/22 -f 41/745/22 43/860/22 117/744/22 -f 5/857/22 117/744/22 43/860/22 -f 116/746/22 42/859/22 41/745/22 -f 116/746/22 114/741/22 8/229/22 diff --git a/src/main/resources/assets/hbm/models/error.obj b/src/main/resources/assets/hbm/models/error.obj deleted file mode 100644 index e948f3e60..000000000 --- a/src/main/resources/assets/hbm/models/error.obj +++ /dev/null @@ -1,2909 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'error.blend' -# www.blender.org -o Text_Mesh -v -0.125000 -0.000000 -0.643408 -v -0.125000 -0.000000 -0.745792 -v -0.125000 0.234222 -0.745792 -v -0.125000 0.247672 -0.751697 -v -0.125000 0.259659 -0.758142 -v -0.125000 0.270238 -0.765055 -v -0.125000 0.279466 -0.772362 -v -0.125000 0.287399 -0.779991 -v -0.125000 0.294092 -0.787868 -v -0.125000 0.299602 -0.795920 -v -0.125000 0.303984 -0.804075 -v -0.125000 0.307295 -0.812259 -v -0.125000 0.309591 -0.820399 -v -0.125000 0.310927 -0.828422 -v -0.125000 0.311360 -0.836255 -v -0.125000 0.311317 -0.840189 -v -0.125000 0.311185 -0.843943 -v -0.125000 0.310966 -0.847541 -v -0.125000 0.310659 -0.851008 -v -0.125000 0.310265 -0.854367 -v -0.125000 0.309783 -0.857644 -v -0.125000 0.309213 -0.860862 -v -0.125000 0.308555 -0.864046 -v -0.125000 0.307810 -0.867220 -v -0.125000 0.306978 -0.870409 -v -0.125000 0.306057 -0.873637 -v -0.125000 0.305049 -0.876928 -v -0.125000 0.394109 -0.895161 -v -0.125000 0.395306 -0.892161 -v -0.125000 0.396437 -0.889103 -v -0.125000 0.397495 -0.885957 -v -0.125000 0.398473 -0.882694 -v -0.125000 0.399363 -0.879286 -v -0.125000 0.400158 -0.875701 -v -0.125000 0.400850 -0.871913 -v -0.125000 0.401434 -0.867890 -v -0.125000 0.401900 -0.863605 -v -0.125000 0.402242 -0.859027 -v -0.125000 0.402453 -0.854128 -v -0.125000 0.402524 -0.848878 -v -0.125000 0.401943 -0.838689 -v -0.125000 0.400210 -0.828493 -v -0.125000 0.397342 -0.818340 -v -0.125000 0.393356 -0.808283 -v -0.125000 0.388270 -0.798371 -v -0.125000 0.382100 -0.788657 -v -0.125000 0.374864 -0.779191 -v -0.125000 0.366578 -0.770025 -v -0.125000 0.357260 -0.761209 -v -0.125000 0.346927 -0.752795 -v -0.125000 0.335595 -0.744834 -v -0.125000 0.323282 -0.737377 -v -0.125000 0.323282 -0.734572 -v -0.125000 0.392707 -0.727560 -v -0.125000 0.392707 -0.643408 -v -0.125000 -0.009818 -0.368513 -v -0.125000 -0.008252 -0.392849 -v -0.125000 -0.003607 -0.416576 -v -0.125000 0.004043 -0.439407 -v -0.125000 0.014623 -0.461054 -v -0.125000 0.028056 -0.481231 -v -0.125000 0.044267 -0.499649 -v -0.125000 0.063181 -0.516023 -v -0.125000 0.084723 -0.530063 -v -0.125000 0.108816 -0.541484 -v -0.125000 0.135386 -0.549997 -v -0.125000 0.164356 -0.555316 -v -0.125000 0.195652 -0.557153 -v -0.125000 0.227270 -0.555316 -v -0.125000 0.256509 -0.549997 -v -0.125000 0.283299 -0.541484 -v -0.125000 0.307568 -0.530063 -v -0.125000 0.329247 -0.516023 -v -0.125000 0.348264 -0.499649 -v -0.125000 0.364550 -0.481231 -v -0.125000 0.378032 -0.461054 -v -0.125000 0.388642 -0.439407 -v -0.125000 0.396307 -0.416576 -v -0.125000 0.400958 -0.392849 -v -0.125000 0.402525 -0.368513 -v -0.125000 0.400958 -0.344178 -v -0.125000 0.396307 -0.320451 -v -0.125000 0.388642 -0.297620 -v -0.125000 0.378032 -0.275973 -v -0.125000 0.364550 -0.255796 -v -0.125000 0.348264 -0.237377 -v -0.125000 0.329247 -0.221004 -v -0.125000 0.307568 -0.206963 -v -0.125000 0.283299 -0.195543 -v -0.125000 0.256509 -0.187029 -v -0.125000 0.227270 -0.181710 -v -0.125000 0.195652 -0.179874 -v -0.125000 0.164356 -0.181710 -v -0.125000 0.135386 -0.187029 -v -0.125000 0.108816 -0.195543 -v -0.125000 0.084723 -0.206963 -v -0.125000 0.063181 -0.221004 -v -0.125000 0.044267 -0.237377 -v -0.125000 0.028056 -0.255796 -v -0.125000 0.014623 -0.275973 -v -0.125000 0.004043 -0.297620 -v -0.125000 -0.003607 -0.320451 -v -0.125000 -0.008252 -0.344178 -v -0.125000 0.074334 -0.368513 -v -0.125000 0.075315 -0.355675 -v -0.125000 0.078207 -0.343826 -v -0.125000 0.082935 -0.332990 -v -0.125000 0.089424 -0.323191 -v -0.125000 0.097598 -0.314454 -v -0.125000 0.107381 -0.306802 -v -0.125000 0.118698 -0.300261 -v -0.125000 0.131474 -0.294855 -v -0.125000 0.145632 -0.290607 -v -0.125000 0.161099 -0.287543 -v -0.125000 0.177797 -0.285687 -v -0.125000 0.195652 -0.285063 -v -0.125000 0.213682 -0.285687 -v -0.125000 0.230553 -0.287543 -v -0.125000 0.246187 -0.290607 -v -0.125000 0.260506 -0.294855 -v -0.125000 0.273432 -0.300261 -v -0.125000 0.284888 -0.306802 -v -0.125000 0.294795 -0.314454 -v -0.125000 0.303075 -0.323191 -v -0.125000 0.309651 -0.332990 -v -0.125000 0.314445 -0.343826 -v -0.125000 0.317378 -0.355675 -v -0.125000 0.318373 -0.368513 -v -0.125000 0.317378 -0.381351 -v -0.125000 0.314445 -0.393200 -v -0.125000 0.309651 -0.404037 -v -0.125000 0.303075 -0.413836 -v -0.125000 0.294795 -0.422573 -v -0.125000 0.284888 -0.430224 -v -0.125000 0.273432 -0.436765 -v -0.125000 0.260506 -0.442172 -v -0.125000 0.246187 -0.446419 -v -0.125000 0.230553 -0.449483 -v -0.125000 0.213682 -0.451339 -v -0.125000 0.195652 -0.451963 -v -0.125000 0.177797 -0.451339 -v -0.125000 0.161099 -0.449483 -v -0.125000 0.145632 -0.446419 -v -0.125000 0.131474 -0.442172 -v -0.125000 0.118698 -0.436765 -v -0.125000 0.107381 -0.430224 -v -0.125000 0.097598 -0.422573 -v -0.125000 0.089424 -0.413836 -v -0.125000 0.082935 -0.404037 -v -0.125000 0.078207 -0.393200 -v -0.125000 0.075315 -0.381351 -v -0.125000 0.000000 0.101332 -v -0.125000 -0.000000 -0.001052 -v -0.125000 0.234222 -0.001052 -v -0.125000 0.247672 -0.006957 -v -0.125000 0.259659 -0.013402 -v -0.125000 0.270238 -0.020315 -v -0.125000 0.279466 -0.027622 -v -0.125000 0.287399 -0.035251 -v -0.125000 0.294092 -0.043128 -v -0.125000 0.299602 -0.051180 -v -0.125000 0.303984 -0.059335 -v -0.125000 0.307295 -0.067518 -v -0.125000 0.309591 -0.075658 -v -0.125000 0.310927 -0.083682 -v -0.125000 0.311360 -0.091515 -v -0.125000 0.311317 -0.095449 -v -0.125000 0.311185 -0.099203 -v -0.125000 0.310966 -0.102801 -v -0.125000 0.310659 -0.106267 -v -0.125000 0.310265 -0.109627 -v -0.125000 0.309783 -0.112903 -v -0.125000 0.309213 -0.116121 -v -0.125000 0.308555 -0.119305 -v -0.125000 0.307810 -0.122480 -v -0.125000 0.306978 -0.125669 -v -0.125000 0.306057 -0.128897 -v -0.125000 0.305049 -0.132188 -v -0.125000 0.394109 -0.150421 -v -0.125000 0.395306 -0.147421 -v -0.125000 0.396437 -0.144363 -v -0.125000 0.397495 -0.141217 -v -0.125000 0.398473 -0.137954 -v -0.125000 0.399363 -0.134545 -v -0.125000 0.400158 -0.130961 -v -0.125000 0.400851 -0.127172 -v -0.125000 0.401434 -0.123149 -v -0.125000 0.401900 -0.118864 -v -0.125000 0.402242 -0.114286 -v -0.125000 0.402453 -0.109387 -v -0.125000 0.402525 -0.104137 -v -0.125000 0.401943 -0.093948 -v -0.125000 0.400210 -0.083752 -v -0.125000 0.397342 -0.073600 -v -0.125000 0.393356 -0.063542 -v -0.125000 0.388270 -0.053631 -v -0.125000 0.382100 -0.043917 -v -0.125000 0.374864 -0.034451 -v -0.125000 0.366578 -0.025284 -v -0.125000 0.357260 -0.016469 -v -0.125000 0.346927 -0.008055 -v -0.125000 0.335595 -0.000094 -v -0.125000 0.323282 0.007363 -v -0.125000 0.323282 0.010168 -v -0.125000 0.392707 0.017181 -v -0.125000 0.392707 0.101332 -v -0.125000 0.000000 0.407083 -v -0.125000 0.000000 0.304698 -v -0.125000 0.234222 0.304698 -v -0.125000 0.247672 0.298794 -v -0.125000 0.259659 0.292348 -v -0.125000 0.270238 0.285436 -v -0.125000 0.279466 0.278128 -v -0.125000 0.287399 0.270500 -v -0.125000 0.294092 0.262623 -v -0.125000 0.299602 0.254570 -v -0.125000 0.303984 0.246416 -v -0.125000 0.307295 0.238232 -v -0.125000 0.309591 0.230092 -v -0.125000 0.310927 0.222069 -v -0.125000 0.311360 0.214236 -v -0.125000 0.311317 0.210302 -v -0.125000 0.311185 0.206548 -v -0.125000 0.310966 0.202950 -v -0.125000 0.310659 0.199483 -v -0.125000 0.310265 0.196124 -v -0.125000 0.309783 0.192847 -v -0.125000 0.309213 0.189629 -v -0.125000 0.308555 0.186445 -v -0.125000 0.307810 0.183270 -v -0.125000 0.306978 0.180082 -v -0.125000 0.306057 0.176854 -v -0.125000 0.305049 0.173562 -v -0.125000 0.394109 0.155330 -v -0.125000 0.395306 0.158329 -v -0.125000 0.396437 0.161388 -v -0.125000 0.397495 0.164534 -v -0.125000 0.398473 0.167796 -v -0.125000 0.399363 0.171205 -v -0.125000 0.400158 0.174790 -v -0.125000 0.400851 0.178578 -v -0.125000 0.401434 0.182601 -v -0.125000 0.401900 0.186886 -v -0.125000 0.402242 0.191464 -v -0.125000 0.402453 0.196363 -v -0.125000 0.402525 0.201613 -v -0.125000 0.401943 0.211802 -v -0.125000 0.400210 0.221998 -v -0.125000 0.397342 0.232151 -v -0.125000 0.393356 0.242208 -v -0.125000 0.388270 0.252120 -v -0.125000 0.382100 0.261834 -v -0.125000 0.374864 0.271300 -v -0.125000 0.366578 0.280466 -v -0.125000 0.357260 0.289282 -v -0.125000 0.346927 0.297696 -v -0.125000 0.335595 0.305657 -v -0.125000 0.323282 0.313114 -v -0.125000 0.323282 0.315919 -v -0.125000 0.392707 0.322931 -v -0.125000 0.392707 0.407083 -v -0.125000 0.000000 0.829944 -v -0.125000 0.000000 0.503857 -v -0.125000 0.086957 0.503857 -v -0.125000 0.086957 0.726157 -v -0.125000 0.225807 0.726157 -v -0.125000 0.225806 0.543829 -v -0.125000 0.312763 0.543829 -v -0.125000 0.312763 0.726157 -v -0.125000 0.432679 0.726157 -v -0.125000 0.432679 0.511571 -v -0.125000 0.518934 0.511571 -v -0.125000 0.518934 0.829944 -v 0.125000 0.364550 -0.255796 -v 0.125000 0.348264 -0.237377 -v 0.125000 0.311185 -0.099203 -v 0.125000 0.310966 -0.102801 -v 0.125000 0.014623 -0.461054 -v 0.125000 0.014623 -0.275973 -v 0.125000 0.000000 0.503857 -v 0.125000 0.086957 0.503857 -v 0.125000 0.398473 0.167797 -v 0.125000 0.397342 0.232151 -v 0.125000 0.401900 -0.118864 -v 0.125000 0.400210 -0.083752 -v 0.125000 0.164356 -0.181710 -v 0.125000 0.135386 -0.187029 -v 0.125000 0.294092 -0.043128 -v 0.125000 0.299602 -0.051180 -v 0.125000 0.074334 -0.368513 -v 0.125000 0.075315 -0.381351 -v 0.125000 0.063181 -0.221004 -v 0.125000 0.388642 -0.439407 -v 0.125000 0.396307 -0.416576 -v 0.125000 0.305049 -0.876928 -v 0.125000 0.374864 -0.779191 -v 0.125000 0.305049 0.173562 -v 0.125000 0.357260 0.289282 -v 0.125000 0.306978 -0.125669 -v 0.125000 0.306057 -0.128897 -v 0.125000 0.227270 -0.555316 -v 0.125000 0.256509 -0.549997 -v 0.125000 0.000000 0.407083 -v 0.125000 0.392707 0.407083 -v 0.125000 0.399363 -0.134545 -v 0.125000 0.400158 -0.130961 -v 0.125000 0.401434 -0.867890 -v 0.125000 0.400210 -0.828493 -v 0.125000 0.309783 -0.112903 -v 0.125000 0.335595 -0.000094 -v 0.125000 0.082935 -0.332990 -v 0.125000 0.089424 -0.323191 -v 0.125000 0.131474 -0.442172 -v 0.125000 0.118698 -0.436765 -v 0.125000 0.329247 -0.516023 -v 0.125000 0.329247 -0.221004 -v 0.125000 -0.000000 0.101332 -v 0.125000 -0.000000 -0.001052 -v 0.125000 0.028056 -0.255796 -v 0.125000 0.318373 -0.368513 -v 0.125000 0.260506 -0.442172 -v 0.125000 0.246187 -0.446419 -v 0.125000 0.177797 -0.285687 -v 0.125000 0.195652 -0.285063 -v 0.125000 0.378032 -0.461054 -v 0.125000 0.294795 -0.314454 -v 0.125000 0.303075 -0.323191 -v 0.125000 0.108816 -0.541484 -v 0.125000 0.366578 -0.770025 -v 0.125000 0.310927 0.222069 -v 0.125000 0.311360 0.214236 -v 0.125000 0.305049 -0.132188 -v 0.125000 0.382100 -0.043917 -v 0.125000 0.394109 -0.150421 -v 0.125000 0.393356 -0.063542 -v 0.125000 0.402453 -0.854128 -v 0.125000 0.402524 -0.848878 -v 0.125000 0.270238 0.285436 -v 0.125000 0.279466 0.278128 -v 0.125000 0.323282 0.010168 -v 0.125000 0.392707 0.017181 -v 0.125000 0.084723 -0.530063 -v 0.125000 0.089424 -0.413836 -v 0.125000 0.063181 -0.516023 -v 0.125000 0.084723 -0.206963 -v 0.125000 0.107381 -0.306802 -v 0.125000 0.309783 -0.857644 -v 0.125000 0.335595 -0.744834 -v 0.125000 0.396437 0.161388 -v 0.125000 0.397495 0.164534 -v 0.125000 0.401943 -0.093948 -v 0.125000 0.161099 -0.287543 -v 0.125000 0.388270 -0.053631 -v 0.125000 0.311185 -0.843943 -v 0.125000 0.310966 -0.847541 -v 0.125000 0.311185 0.206548 -v 0.125000 0.323282 0.313114 -v 0.125000 0.306978 -0.870409 -v 0.125000 0.306057 -0.873637 -v 0.125000 0.307568 -0.206963 -v 0.125000 0.314445 -0.343826 -v 0.125000 0.225807 0.726157 -v 0.125000 0.225806 0.543829 -v 0.125000 0.283299 -0.541484 -v 0.125000 0.294795 -0.422573 -v 0.125000 0.309591 -0.820399 -v 0.125000 0.323282 -0.737377 -v 0.125000 0.294092 -0.787868 -v 0.125000 0.299602 -0.795920 -v 0.125000 0.309591 0.230092 -v 0.125000 0.309213 0.189629 -v 0.125000 0.308555 0.186445 -v 0.125000 0.382100 0.261834 -v 0.125000 0.374864 0.271300 -v 0.125000 0.402453 0.196363 -v 0.125000 0.401943 0.211802 -v 0.125000 0.311317 -0.095449 -v 0.125000 0.323282 0.007363 -v 0.125000 0.402242 0.191464 -v 0.125000 -0.000000 -0.643408 -v 0.125000 -0.000000 -0.745792 -v 0.125000 0.294092 0.262623 -v 0.125000 0.309213 -0.116121 -v 0.125000 0.308555 -0.119305 -v 0.125000 0.378032 -0.275973 -v 0.125000 0.323282 0.315919 -v 0.125000 -0.003607 -0.416576 -v 0.125000 -0.008252 -0.344178 -v 0.125000 0.306057 0.176854 -v 0.125000 0.346927 0.297696 -v 0.125000 0.259659 -0.758142 -v 0.125000 0.259659 0.292348 -v 0.125000 0.307295 -0.067518 -v 0.125000 0.346927 -0.008055 -v 0.125000 0.195652 -0.179874 -v 0.125000 0.400958 -0.344178 -v 0.125000 0.287399 -0.035251 -v 0.125000 0.400158 0.174790 -v 0.125000 0.400210 0.221998 -v 0.125000 0.310927 -0.083682 -v 0.125000 0.311360 -0.091515 -v 0.125000 0.402242 -0.114286 -v 0.125000 0.402453 -0.109387 -v 0.125000 0.195652 -0.557153 -v 0.125000 0.366578 0.280466 -v 0.125000 0.396437 -0.144363 -v 0.125000 0.397495 -0.141217 -v 0.125000 0.395306 -0.892161 -v 0.125000 0.393356 -0.808283 -v 0.125000 0.395306 0.158329 -v 0.125000 0.393356 0.242208 -v 0.125000 0.396307 -0.320451 -v 0.125000 0.097598 -0.314454 -v 0.125000 0.399363 -0.879286 -v 0.125000 0.397342 -0.818340 -v 0.125000 0.004043 -0.297620 -v 0.125000 0.145632 -0.446419 -v 0.125000 0.213682 -0.285687 -v 0.125000 0.247672 -0.006957 -v 0.125000 0.273432 -0.436765 -v 0.125000 0.309651 -0.332990 -v 0.125000 0.398473 -0.137954 -v 0.125000 0.397342 -0.073600 -v 0.125000 0.357260 -0.761209 -v 0.125000 0.000000 0.304698 -v 0.125000 0.401943 -0.838689 -v 0.125000 0.299602 0.254570 -v 0.125000 0.097598 -0.422573 -v 0.125000 -0.009818 -0.368513 -v 0.125000 -0.008252 -0.392849 -v 0.125000 0.082935 -0.404037 -v 0.125000 0.366578 -0.025284 -v 0.125000 0.357260 -0.016469 -v 0.125000 0.164356 -0.555316 -v 0.125000 0.177797 -0.451339 -v 0.125000 0.432679 0.726157 -v 0.125000 0.518934 0.511571 -v 0.125000 0.307810 -0.867220 -v 0.125000 0.346927 -0.752795 -v 0.125000 0.312763 0.726157 -v 0.125000 0.398473 -0.882694 -v 0.125000 0.310966 0.202950 -v 0.125000 0.309783 0.192847 -v 0.125000 0.335595 0.305657 -v 0.125000 0.317378 -0.355675 -v 0.125000 0.307810 0.183271 -v 0.125000 0.311317 -0.840189 -v 0.125000 0.287399 -0.779991 -v 0.125000 0.234222 -0.745792 -v 0.125000 0.000000 0.829944 -v 0.125000 0.402525 0.201613 -v 0.125000 -0.003607 -0.320451 -v 0.125000 0.310659 -0.106267 -v 0.125000 0.310265 -0.109627 -v 0.125000 0.401434 -0.123149 -v 0.125000 0.108816 -0.195543 -v 0.125000 0.399363 0.171205 -v 0.125000 0.303984 -0.059335 -v 0.125000 0.400958 -0.392849 -v 0.125000 0.402525 -0.368513 -v 0.125000 0.392707 0.101332 -v 0.125000 0.307568 -0.530063 -v 0.125000 0.323282 -0.734572 -v 0.125000 0.400851 -0.127172 -v 0.125000 0.396437 -0.889103 -v 0.125000 0.400850 -0.871913 -v 0.125000 0.107381 -0.430224 -v 0.125000 0.234222 -0.001052 -v 0.125000 0.230553 -0.287543 -v 0.125000 0.230553 -0.449483 -v 0.125000 0.213682 -0.451339 -v 0.125000 0.314445 -0.393200 -v 0.125000 0.309651 -0.404037 -v 0.125000 0.234222 0.304698 -v 0.125000 0.388270 -0.798371 -v 0.125000 0.382100 -0.788657 -v 0.125000 0.307295 0.238232 -v 0.125000 0.401900 -0.863605 -v 0.125000 0.402242 -0.859027 -v 0.125000 0.518934 0.829944 -v 0.125000 0.247672 0.298794 -v 0.125000 0.392707 -0.727560 -v 0.125000 0.028056 -0.481231 -v 0.125000 0.044267 -0.499649 -v 0.125000 0.394109 0.155330 -v 0.125000 0.309213 -0.860862 -v 0.125000 0.308555 -0.864046 -v 0.125000 0.310927 -0.828422 -v 0.125000 0.397495 -0.885957 -v 0.125000 0.312763 0.543829 -v 0.125000 0.310265 0.196124 -v 0.125000 0.311360 -0.836255 -v 0.125000 0.388270 0.252120 -v 0.125000 0.279466 -0.772362 -v 0.125000 0.401434 0.182601 -v 0.125000 0.401900 0.186886 -v 0.125000 0.086957 0.726157 -v 0.125000 0.392707 0.322931 -v 0.125000 0.270238 -0.765055 -v 0.125000 0.388642 -0.297620 -v 0.125000 0.306978 0.180082 -v 0.125000 0.256509 -0.187029 -v 0.125000 0.227270 -0.181710 -v 0.125000 0.309591 -0.075658 -v 0.125000 0.348264 -0.499649 -v 0.125000 0.364550 -0.481231 -v 0.125000 0.395306 -0.147421 -v 0.125000 0.078207 -0.393200 -v 0.125000 0.135386 -0.549997 -v 0.125000 0.078207 -0.343826 -v 0.125000 0.317378 -0.381351 -v 0.125000 0.400158 -0.875701 -v 0.125000 0.270238 -0.020315 -v 0.125000 0.279466 -0.027622 -v 0.125000 0.044267 -0.237377 -v 0.125000 0.161099 -0.449483 -v 0.125000 0.284888 -0.430224 -v 0.125000 0.284888 -0.306802 -v 0.125000 0.118698 -0.300261 -v 0.125000 0.303984 0.246416 -v 0.125000 0.004043 -0.439407 -v 0.125000 0.246187 -0.290607 -v 0.125000 0.310659 -0.851008 -v 0.125000 0.303984 -0.804075 -v 0.125000 0.283299 -0.195543 -v 0.125000 0.392707 -0.643408 -v 0.125000 0.131474 -0.294855 -v 0.125000 0.259659 -0.013402 -v 0.125000 0.195652 -0.451963 -v 0.125000 0.260506 -0.294855 -v 0.125000 0.303075 -0.413836 -v 0.125000 0.432679 0.511571 -v 0.125000 0.310659 0.199483 -v 0.125000 0.400851 0.178578 -v 0.125000 0.075315 -0.355675 -v 0.125000 0.145632 -0.290607 -v 0.125000 0.273432 -0.300261 -v 0.125000 0.310265 -0.854367 -v 0.125000 0.394109 -0.895161 -v 0.125000 0.307295 -0.812259 -v 0.125000 0.247672 -0.751697 -v 0.125000 0.307810 -0.122480 -v 0.125000 0.402525 -0.104137 -v 0.125000 0.287399 0.270500 -v 0.125000 0.374864 -0.034451 -v 0.125000 0.311317 0.210302 -vt 0.426575 0.688748 -vt 0.421208 0.689051 -vt 0.418443 0.689014 -vt 0.415862 0.688904 -vt 0.413450 0.688726 -vt 0.431947 0.687846 -vt 0.411193 0.688483 -vt 0.409074 0.688180 -vt 0.407078 0.687819 -vt 0.437295 0.686354 -vt 0.405190 0.687406 -vt 0.403394 0.686942 -vt 0.401675 0.686434 -vt 0.400018 0.685883 -vt 0.442593 0.684280 -vt 0.398407 0.685294 -vt 0.396827 0.684672 -vt 0.406431 0.638321 -vt 0.447814 0.681632 -vt 0.529446 0.479562 -vt 0.529446 0.683942 -vt 0.485117 0.683942 -vt 0.481422 0.647810 -vt 0.452931 0.678421 -vt 0.457918 0.674655 -vt 0.462747 0.670343 -vt 0.467391 0.665494 -vt 0.471823 0.660116 -vt 0.476017 0.654218 -vt 0.413218 0.640146 -vt 0.411546 0.639758 -vt 0.409866 0.639325 -vt 0.408165 0.638846 -vt 0.479945 0.647810 -vt 0.420086 0.641241 -vt 0.418316 0.641036 -vt 0.416590 0.640785 -vt 0.414895 0.640488 -vt 0.475512 0.601460 -vt 0.472401 0.608460 -vt 0.469006 0.614698 -vt 0.465365 0.620204 -vt 0.461515 0.625007 -vt 0.457497 0.629135 -vt 0.453347 0.632619 -vt 0.449105 0.635486 -vt 0.444809 0.637767 -vt 0.440498 0.639490 -vt 0.436210 0.640685 -vt 0.431984 0.641380 -vt 0.427857 0.641606 -vt 0.425785 0.641583 -vt 0.423808 0.641515 -vt 0.421912 0.641401 -vt 0.475512 0.479562 -vt 0.105673 0.484231 -vt 0.092827 0.484303 -vt 0.080077 0.482747 -vt 0.067743 0.479607 -vt 0.118294 0.482538 -vt 0.055974 0.474928 -vt 0.130536 0.479252 -vt 0.044917 0.468756 -vt 0.142248 0.474400 -vt 0.153274 0.468010 -vt 0.034723 0.461136 -vt 0.163463 0.460111 -vt 0.025540 0.452114 -vt 0.172660 0.450730 -vt 0.017516 0.441734 -vt 0.180713 0.439895 -vt 0.095424 0.440582 -vt 0.010802 0.430043 -vt 0.102206 0.440457 -vt 0.088703 0.439674 -vt 0.108528 0.439294 -vt 0.082563 0.437789 -vt 0.114374 0.437134 -vt 0.077012 0.434968 -vt 0.119730 0.434017 -vt 0.072062 0.431253 -vt 0.187468 0.427634 -vt 0.005545 0.417086 -vt 0.124581 0.429981 -vt 0.067723 0.426684 -vt 0.128910 0.425067 -vt 0.064005 0.421304 -vt 0.132703 0.419315 -vt 0.060919 0.415153 -vt 0.192772 0.413976 -vt 0.001895 0.402908 -vt 0.135945 0.412764 -vt 0.058474 0.408272 -vt 0.138621 0.405454 -vt 0.056683 0.400703 -vt 0.196472 0.398947 -vt 0.000000 0.387554 -vt 0.140715 0.397425 -vt 0.055554 0.392487 -vt 0.142212 0.388717 -vt 0.055099 0.383665 -vt 0.198413 0.382576 -vt 0.000010 0.371071 -vt 0.143096 0.379368 -vt 0.055327 0.374279 -vt 0.198413 0.366260 -vt 0.143319 0.370073 -vt 0.056206 0.365022 -vt 0.001942 0.354868 -vt 0.142859 0.361341 -vt 0.057698 0.356403 -vt 0.196511 0.351047 -vt 0.005633 0.339979 -vt 0.141725 0.353212 -vt 0.059786 0.348461 -vt 0.139928 0.345726 -vt 0.062457 0.341234 -vt 0.192854 0.336983 -vt 0.010930 0.326434 -vt 0.137479 0.338924 -vt 0.065694 0.334761 -vt 0.134389 0.332844 -vt 0.069484 0.329081 -vt 0.187591 0.324117 -vt 0.017680 0.314265 -vt 0.130667 0.327528 -vt 0.073809 0.324232 -vt 0.126324 0.323015 -vt 0.078656 0.320251 -vt 0.121372 0.319345 -vt 0.084010 0.317179 -vt 0.180872 0.312497 -vt 0.025728 0.303501 -vt 0.115819 0.316558 -vt 0.089854 0.315053 -vt 0.109677 0.314694 -vt 0.096175 0.313912 -vt 0.102956 0.313793 -vt 0.172846 0.302171 -vt 0.034922 0.294174 -vt 0.163660 0.293187 -vt 0.045109 0.286313 -vt 0.153464 0.285593 -vt 0.056134 0.279949 -vt 0.142407 0.279436 -vt 0.067844 0.275113 -vt 0.130637 0.274765 -vt 0.080087 0.271834 -vt 0.118303 0.271628 -vt 0.092707 0.270144 -vt 0.105553 0.270073 -vt 0.578122 0.000303 -vt 0.583490 0.000000 -vt 0.586255 0.000037 -vt 0.588836 0.000147 -vt 0.591247 0.000325 -vt 0.572751 0.001205 -vt 0.593505 0.000568 -vt 0.595624 0.000871 -vt 0.597620 0.001232 -vt 0.567403 0.002697 -vt 0.599508 0.001645 -vt 0.601304 0.002109 -vt 0.603022 0.002617 -vt 0.604680 0.003168 -vt 0.562105 0.004772 -vt 0.606291 0.003757 -vt 0.607871 0.004380 -vt 0.598266 0.050730 -vt 0.556884 0.007419 -vt 0.475251 0.209489 -vt 0.475251 0.005109 -vt 0.519581 0.005109 -vt 0.523275 0.041241 -vt 0.551766 0.010630 -vt 0.546780 0.014396 -vt 0.541951 0.018708 -vt 0.537307 0.023557 -vt 0.532875 0.028935 -vt 0.528681 0.034833 -vt 0.591480 0.048905 -vt 0.593152 0.049293 -vt 0.594832 0.049726 -vt 0.596532 0.050205 -vt 0.524753 0.041241 -vt 0.584612 0.047810 -vt 0.586381 0.048016 -vt 0.588107 0.048266 -vt 0.589803 0.048563 -vt 0.529186 0.087591 -vt 0.532296 0.080591 -vt 0.535692 0.074353 -vt 0.539333 0.068847 -vt 0.543182 0.064044 -vt 0.547201 0.059916 -vt 0.551351 0.056432 -vt 0.555592 0.053565 -vt 0.559888 0.051284 -vt 0.564199 0.049561 -vt 0.568487 0.048366 -vt 0.572714 0.047671 -vt 0.576840 0.047445 -vt 0.578913 0.047468 -vt 0.580890 0.047536 -vt 0.582785 0.047651 -vt 0.529186 0.209489 -vt 0.426575 0.479259 -vt 0.421208 0.479562 -vt 0.418443 0.479525 -vt 0.415862 0.479415 -vt 0.413450 0.479237 -vt 0.431947 0.478357 -vt 0.411193 0.478994 -vt 0.409074 0.478691 -vt 0.407078 0.478330 -vt 0.437295 0.476865 -vt 0.405190 0.477917 -vt 0.403394 0.477453 -vt 0.401675 0.476945 -vt 0.400018 0.476394 -vt 0.442593 0.474790 -vt 0.398407 0.475805 -vt 0.396827 0.475182 -vt 0.406431 0.428832 -vt 0.447814 0.472143 -vt 0.529446 0.270073 -vt 0.529446 0.474453 -vt 0.485117 0.474453 -vt 0.481422 0.438321 -vt 0.452931 0.468932 -vt 0.457918 0.465166 -vt 0.462747 0.460854 -vt 0.467391 0.456005 -vt 0.471823 0.450627 -vt 0.476017 0.444729 -vt 0.413218 0.430657 -vt 0.411546 0.430269 -vt 0.409866 0.429836 -vt 0.408165 0.429357 -vt 0.479945 0.438321 -vt 0.420086 0.431752 -vt 0.418316 0.431547 -vt 0.416590 0.431296 -vt 0.414895 0.430999 -vt 0.475512 0.391971 -vt 0.472401 0.398971 -vt 0.469006 0.405209 -vt 0.465365 0.410715 -vt 0.461515 0.415518 -vt 0.457496 0.419646 -vt 0.453347 0.423130 -vt 0.449105 0.425997 -vt 0.444809 0.428278 -vt 0.440498 0.430001 -vt 0.436210 0.431196 -vt 0.431984 0.431891 -vt 0.427857 0.432117 -vt 0.425785 0.432094 -vt 0.423808 0.432026 -vt 0.421912 0.431911 -vt 0.475512 0.270073 -vt 0.000000 0.270073 -vt 0.000000 0.000000 -vt 0.054673 0.044891 -vt 0.167714 0.000000 -vt 0.167714 0.044891 -vt 0.054673 0.107299 -vt 0.054673 0.152555 -vt 0.150721 0.107299 -vt 0.150721 0.152555 -vt 0.054673 0.224818 -vt 0.171778 0.224817 -vt 0.171778 0.270073 -vt 0.559195 0.479865 -vt 0.551062 0.479599 -vt 0.553828 0.479562 -vt 0.548481 0.479709 -vt 0.546070 0.479887 -vt 0.564566 0.480767 -vt 0.543812 0.480130 -vt 0.541693 0.480433 -vt 0.539698 0.480794 -vt 0.569915 0.482259 -vt 0.537809 0.481208 -vt 0.536014 0.481671 -vt 0.534295 0.482179 -vt 0.532638 0.482730 -vt 0.575213 0.484334 -vt 0.531027 0.483319 -vt 0.529446 0.483942 -vt 0.539051 0.530292 -vt 0.580434 0.486981 -vt 0.662066 0.689051 -vt 0.617736 0.484672 -vt 0.662066 0.484672 -vt 0.614042 0.520803 -vt 0.585551 0.490192 -vt 0.590538 0.493958 -vt 0.595366 0.498270 -vt 0.600010 0.503119 -vt 0.604443 0.508497 -vt 0.608636 0.514395 -vt 0.545837 0.528467 -vt 0.544165 0.528855 -vt 0.542485 0.529288 -vt 0.540785 0.529767 -vt 0.612565 0.520803 -vt 0.552706 0.527372 -vt 0.550936 0.527578 -vt 0.549210 0.527828 -vt 0.547515 0.528125 -vt 0.608132 0.567153 -vt 0.605021 0.560153 -vt 0.601626 0.553915 -vt 0.597984 0.548409 -vt 0.594135 0.543606 -vt 0.590116 0.539478 -vt 0.585967 0.535995 -vt 0.581725 0.533127 -vt 0.577429 0.530846 -vt 0.573118 0.529123 -vt 0.568830 0.527928 -vt 0.564604 0.527233 -vt 0.560477 0.527007 -vt 0.558405 0.527030 -vt 0.556427 0.527099 -vt 0.554532 0.527213 -vt 0.608132 0.689051 -vt 0.304086 0.270145 -vt 0.278491 0.271629 -vt 0.291240 0.270073 -vt 0.266157 0.274769 -vt 0.316707 0.271838 -vt 0.254387 0.279447 -vt 0.328950 0.275124 -vt 0.243331 0.285620 -vt 0.340661 0.279976 -vt 0.351688 0.286366 -vt 0.233136 0.293240 -vt 0.361877 0.294265 -vt 0.223953 0.302262 -vt 0.371074 0.303646 -vt 0.215930 0.312642 -vt 0.379127 0.314481 -vt 0.293837 0.313793 -vt 0.209215 0.324333 -vt 0.300619 0.313919 -vt 0.287117 0.314702 -vt 0.306941 0.315082 -vt 0.280976 0.316587 -vt 0.312788 0.317242 -vt 0.275426 0.319408 -vt 0.318144 0.320359 -vt 0.270475 0.323123 -vt 0.385882 0.326742 -vt 0.203958 0.337290 -vt 0.322994 0.324395 -vt 0.266136 0.327692 -vt 0.327323 0.329309 -vt 0.262418 0.333072 -vt 0.331117 0.335061 -vt 0.259332 0.339223 -vt 0.391185 0.340400 -vt 0.200308 0.351468 -vt 0.334359 0.341612 -vt 0.256888 0.346104 -vt 0.337034 0.348922 -vt 0.255096 0.353673 -vt 0.394885 0.355429 -vt 0.198413 0.366821 -vt 0.339128 0.356951 -vt 0.253967 0.361889 -vt 0.340625 0.365659 -vt 0.253512 0.370710 -vt 0.396827 0.371800 -vt 0.198423 0.383304 -vt 0.341510 0.375008 -vt 0.253740 0.380097 -vt 0.396827 0.388116 -vt 0.341733 0.384303 -vt 0.254620 0.389354 -vt 0.200355 0.399508 -vt 0.341272 0.393035 -vt 0.256111 0.397973 -vt 0.394924 0.403330 -vt 0.204046 0.414397 -vt 0.340138 0.401164 -vt 0.258200 0.405915 -vt 0.338341 0.408650 -vt 0.260870 0.413142 -vt 0.391267 0.417393 -vt 0.209343 0.427942 -vt 0.335892 0.415452 -vt 0.264108 0.419614 -vt 0.332802 0.421531 -vt 0.267897 0.425295 -vt 0.386005 0.430259 -vt 0.216093 0.440111 -vt 0.329080 0.426848 -vt 0.272222 0.430144 -vt 0.324738 0.431361 -vt 0.277069 0.434124 -vt 0.319785 0.435031 -vt 0.282423 0.437197 -vt 0.379286 0.441879 -vt 0.224141 0.450874 -vt 0.314232 0.437817 -vt 0.288267 0.439323 -vt 0.308090 0.439681 -vt 0.294588 0.440464 -vt 0.301369 0.440582 -vt 0.371259 0.452205 -vt 0.233335 0.460202 -vt 0.362073 0.461189 -vt 0.243522 0.468063 -vt 0.351877 0.468783 -vt 0.254547 0.474427 -vt 0.340820 0.474940 -vt 0.266257 0.479263 -vt 0.329050 0.479611 -vt 0.278500 0.482542 -vt 0.316716 0.482748 -vt 0.291121 0.484232 -vt 0.303967 0.484303 -vt 0.559195 0.270376 -vt 0.551062 0.270110 -vt 0.553828 0.270073 -vt 0.548481 0.270220 -vt 0.546070 0.270398 -vt 0.564566 0.271278 -vt 0.543813 0.270641 -vt 0.541694 0.270944 -vt 0.539698 0.271305 -vt 0.569915 0.272770 -vt 0.537810 0.271719 -vt 0.536014 0.272182 -vt 0.534295 0.272690 -vt 0.532638 0.273241 -vt 0.575213 0.274845 -vt 0.531027 0.273830 -vt 0.529446 0.274453 -vt 0.539051 0.320803 -vt 0.580434 0.277492 -vt 0.662066 0.479562 -vt 0.617736 0.275182 -vt 0.662066 0.275182 -vt 0.614042 0.311314 -vt 0.585551 0.280703 -vt 0.590538 0.284469 -vt 0.595366 0.288781 -vt 0.600010 0.293630 -vt 0.604443 0.299008 -vt 0.608636 0.304906 -vt 0.545837 0.318978 -vt 0.544165 0.319366 -vt 0.542485 0.319799 -vt 0.540785 0.320278 -vt 0.612565 0.311314 -vt 0.552706 0.317883 -vt 0.550936 0.318089 -vt 0.549210 0.318339 -vt 0.547515 0.318636 -vt 0.608132 0.357664 -vt 0.605021 0.350664 -vt 0.601626 0.344426 -vt 0.597984 0.338920 -vt 0.594135 0.334117 -vt 0.590116 0.329989 -vt 0.585967 0.326505 -vt 0.581725 0.323638 -vt 0.577429 0.321357 -vt 0.573118 0.319634 -vt 0.568830 0.318439 -vt 0.564604 0.317744 -vt 0.560477 0.317518 -vt 0.558405 0.317541 -vt 0.556427 0.317609 -vt 0.554532 0.317724 -vt 0.608132 0.479562 -vt 0.029749 0.484606 -vt 0.021616 0.484340 -vt 0.024381 0.484303 -vt 0.019035 0.484450 -vt 0.016624 0.484628 -vt 0.035120 0.485508 -vt 0.014366 0.484871 -vt 0.012247 0.485174 -vt 0.010251 0.485535 -vt 0.040468 0.487000 -vt 0.008363 0.485948 -vt 0.006567 0.486412 -vt 0.004849 0.486920 -vt 0.003191 0.487471 -vt 0.045766 0.489074 -vt 0.001580 0.488060 -vt 0.000000 0.488682 -vt 0.009605 0.535033 -vt 0.050987 0.491721 -vt 0.132620 0.693792 -vt 0.088290 0.489412 -vt 0.132620 0.489412 -vt 0.084596 0.525544 -vt 0.056105 0.494932 -vt 0.061091 0.498698 -vt 0.065920 0.503011 -vt 0.070564 0.507860 -vt 0.074996 0.513238 -vt 0.079190 0.519136 -vt 0.016391 0.533208 -vt 0.014719 0.533596 -vt 0.013039 0.534029 -vt 0.011339 0.534508 -vt 0.083118 0.525544 -vt 0.023259 0.532113 -vt 0.021490 0.532318 -vt 0.019764 0.532569 -vt 0.018068 0.532866 -vt 0.078685 0.571894 -vt 0.075575 0.564894 -vt 0.072179 0.558656 -vt 0.068538 0.553150 -vt 0.064688 0.548347 -vt 0.060670 0.544219 -vt 0.056520 0.540735 -vt 0.052278 0.537868 -vt 0.047983 0.535587 -vt 0.043672 0.533864 -vt 0.039384 0.532669 -vt 0.035157 0.531973 -vt 0.031031 0.531748 -vt 0.028958 0.531771 -vt 0.026981 0.531839 -vt 0.025086 0.531953 -vt 0.078685 0.693792 -vt 0.343555 0.270073 -vt 0.288882 0.044891 -vt 0.343555 0.000000 -vt 0.175841 0.000000 -vt 0.175841 0.044891 -vt 0.288882 0.107299 -vt 0.288882 0.152555 -vt 0.192834 0.107299 -vt 0.192834 0.152555 -vt 0.288882 0.224818 -vt 0.000000 0.703709 -vt 0.131696 0.703709 -vt 0.131696 0.714506 -vt 0.916252 0.609672 -vt 0.916252 0.739781 -vt 0.914116 0.739781 -vt 0.739066 0.811666 -vt 0.739066 0.941775 -vt 0.736796 0.941775 -vt 0.717198 0.941775 -vt 0.717198 0.811666 -vt 0.718894 0.811666 -vt 0.280391 0.972763 -vt 0.280391 0.842654 -vt 0.286716 0.842654 -vt 0.393453 0.842654 -vt 0.393453 0.972764 -vt 0.386676 0.972763 -vt 0.961733 0.609672 -vt 0.961733 0.739781 -vt 0.957061 0.739781 -vt 0.558392 0.973773 -vt 0.558392 0.843663 -vt 0.560462 0.843663 -vt 0.644885 0.973773 -vt 0.644885 0.843663 -vt 0.650663 0.843663 -vt 0.386676 0.842654 -vt 0.380393 0.972763 -vt 0.923522 0.609672 -vt 0.923522 0.739781 -vt 0.920940 0.739781 -vt 0.793762 0.570314 -vt 0.662066 0.570314 -vt 0.662066 0.553834 -vt 0.549165 0.973773 -vt 0.549165 0.843663 -vt 0.550904 0.843663 -vt 0.610237 0.843663 -vt 0.612307 0.843663 -vt 0.612307 0.973773 -vt 0.822592 0.869891 -vt 0.822592 1.000000 -vt 0.815816 1.000000 -vt 0.396827 0.693059 -vt 0.528523 0.693059 -vt 0.528523 0.697688 -vt 0.715444 0.941775 -vt 0.715444 0.811666 -vt 0.749745 0.130110 -vt 0.749745 0.000000 -vt 0.760787 0.000000 -vt 0.952060 0.260219 -vt 0.952060 0.130110 -vt 0.996252 0.130110 -vt 0.053834 0.960358 -vt 0.053834 0.830249 -vt 0.058761 0.830249 -vt 0.000000 0.799734 -vt 0.131696 0.799734 -vt 0.131696 0.810754 -vt 0.955807 0.609672 -vt 0.955807 0.479562 -vt 1.000000 0.479562 -vt 0.835339 0.130109 -vt 0.835339 0.000000 -vt 0.847061 0.000000 -vt 0.952216 0.869891 -vt 0.952216 0.739781 -vt 0.996409 0.739781 -vt 0.697517 0.941775 -vt 0.697517 0.811666 -vt 0.700277 0.811666 -vt 0.817025 0.609672 -vt 0.817025 0.479562 -vt 0.824637 0.479562 -vt 0.264316 0.779822 -vt 0.132620 0.779822 -vt 0.132620 0.763555 -vt 0.500979 0.973773 -vt 0.500979 0.843663 -vt 0.502689 0.843663 -vt 0.000000 0.714506 -vt 0.131696 0.726038 -vt 0.852290 0.609672 -vt 0.852290 0.739781 -vt 0.842836 0.739781 -vt 0.631826 0.843663 -vt 0.631826 0.973773 -vt 0.630063 0.973773 -vt 0.264316 0.708611 -vt 0.132620 0.708611 -vt 0.132620 0.697702 -vt 0.793762 0.553834 -vt 0.662066 0.538446 -vt 0.884784 0.609672 -vt 0.884784 0.479562 -vt 0.891347 0.479562 -vt 0.089888 0.960358 -vt 0.089888 0.830249 -vt 0.095991 0.830249 -vt 0.906593 0.270073 -vt 0.906593 0.400182 -vt 0.793762 0.400182 -vt 0.499283 0.973773 -vt 0.499283 0.843663 -vt 0.070062 0.960358 -vt 0.070062 0.830249 -vt 0.076405 0.830249 -vt 0.568743 0.973773 -vt 0.568743 0.843663 -vt 0.572949 0.843663 -vt 0.311896 0.972763 -vt 0.311896 0.842654 -vt 0.316837 0.842654 -vt 0.725449 0.811666 -vt 0.725449 0.941775 -vt 0.723796 0.941775 -vt 0.661142 0.839656 -vt 0.529446 0.839656 -vt 0.529446 0.835027 -vt 0.904905 0.609672 -vt 0.904905 0.739781 -vt 0.903252 0.739781 -vt 0.618017 0.843663 -vt 0.618017 0.973773 -vt 0.616184 0.973773 -vt 0.000000 0.810754 -vt 0.131696 0.820976 -vt 0.692190 0.941775 -vt 0.692190 0.811666 -vt 0.803756 0.869891 -vt 0.803756 1.000000 -vt 0.798495 1.000000 -vt 0.705277 0.941775 -vt 0.705277 0.811666 -vt 0.707547 0.811666 -vt 0.901973 0.609672 -vt 0.901973 0.479562 -vt 0.662066 0.941775 -vt 0.662066 0.811666 -vt 0.666737 0.811666 -vt 0.793762 0.646485 -vt 0.662066 0.646485 -vt 0.662066 0.637347 -vt 0.518091 0.973773 -vt 0.518091 0.843663 -vt 0.522266 0.843663 -vt 0.931608 0.609672 -vt 0.931608 0.739781 -vt 0.926282 0.739781 -vt 0.824637 0.609672 -vt 0.832887 0.479562 -vt 0.589407 0.843663 -vt 0.589407 0.973773 -vt 0.585350 0.973773 -vt 0.734660 0.811666 -vt 0.734660 0.941775 -vt 0.732641 0.941775 -vt 0.793762 0.488769 -vt 0.662066 0.488769 -vt 0.824980 0.609672 -vt 0.824980 0.739781 -vt 0.817127 0.739781 -vt 0.720547 0.941775 -vt 0.720547 0.811666 -vt 0.722171 0.811666 -vt 0.784873 0.130109 -vt 0.784873 0.000000 -vt 0.797618 0.000000 -vt 0.906601 0.609672 -vt 0.906601 0.739781 -vt 0.554515 0.973773 -vt 0.554515 0.843663 -vt 0.556414 0.843663 -vt 0.891347 0.609672 -vt 0.897090 0.479562 -vt 0.396012 0.828743 -vt 0.264316 0.828743 -vt 0.264316 0.822799 -vt 0.095991 0.960358 -vt 0.101486 0.830249 -vt 0.223020 0.845800 -vt 0.223020 0.975910 -vt 0.178003 0.975910 -vt 0.762648 0.811666 -vt 0.762648 0.941775 -vt 0.757435 0.941775 -vt 0.264316 0.763555 -vt 0.132620 0.748242 -vt 0.650663 0.973773 -vt 0.655923 0.843663 -vt 0.178003 0.845800 -vt 0.132620 0.975909 -vt 0.890963 0.609672 -vt 0.890963 0.739781 -vt 0.884517 0.739781 -vt 0.064176 0.960358 -vt 0.064176 0.830249 -vt 0.264316 0.733940 -vt 0.132620 0.733940 -vt 0.132620 0.720710 -vt 0.513986 0.973773 -vt 0.513986 0.843663 -vt 0.623245 0.843663 -vt 0.623245 0.973773 -vt 0.621534 0.973773 -vt 0.793762 0.601285 -vt 0.662066 0.601285 -vt 0.662066 0.586474 -vt 0.396827 0.689051 -vt 0.528523 0.689051 -vt 0.374616 0.842654 -vt 0.374616 0.972763 -vt 0.369356 0.972763 -vt 0.728899 0.811666 -vt 0.728899 0.941775 -vt 0.727145 0.941775 -vt 0.581293 0.973773 -vt 0.581293 0.843663 -vt 0.585350 0.843663 -vt 0.552683 0.973773 -vt 0.552683 0.843663 -vt 0.083187 0.960358 -vt 0.083187 0.830249 -vt 0.495887 0.973773 -vt 0.495887 0.843663 -vt 0.497590 0.843663 -vt 0.396012 0.834017 -vt 0.264316 0.834017 -vt 0.936891 0.609672 -vt 0.936891 0.739781 -vt 0.662066 0.270073 -vt 0.793762 0.270073 -vt 0.793762 0.439465 -vt 0.661142 0.835027 -vt 0.529446 0.829752 -vt 0.777606 0.811666 -vt 0.777606 0.941775 -vt 0.772759 0.941775 -vt 0.000000 0.775910 -vt 0.131696 0.775910 -vt 0.131696 0.788069 -vt 0.889631 0.869890 -vt 0.889631 0.739781 -vt 0.858102 0.130109 -vt 0.858102 0.000000 -vt 0.868307 0.000000 -vt 0.741484 0.811666 -vt 0.741484 0.941775 -vt 0.000000 0.738158 -vt 0.131696 0.738158 -vt 0.131696 0.750719 -vt 0.540636 0.973773 -vt 0.540636 0.843663 -vt 0.542363 0.843663 -vt 0.793762 0.524197 -vt 0.662066 0.524197 -vt 0.662066 0.511135 -vt 0.832887 0.609672 -vt 0.841733 0.479562 -vt 0.910182 0.609672 -vt 0.910182 0.739781 -vt 0.908355 0.739781 -vt 0.264316 0.810695 -vt 0.132620 0.810695 -vt 0.132620 0.795995 -vt 0.912097 0.609672 -vt 0.912097 0.739781 -vt 0.833562 0.609672 -vt 0.833562 0.739781 -vt 0.616184 0.843663 -vt 0.614285 0.973773 -vt 0.396012 0.688042 -vt 0.264316 0.688042 -vt 0.264316 0.484303 -vt 0.897090 0.609672 -vt 0.711702 0.941775 -vt 0.711702 0.811666 -vt 0.713617 0.811666 -vt 0.577146 0.973773 -vt 0.577146 0.843663 -vt 0.896681 0.609672 -vt 0.896681 0.739781 -vt 0.809533 0.869891 -vt 0.809533 1.000000 -vt 0.626633 0.843663 -vt 0.626633 0.973773 -vt 0.624940 0.973773 -vt 0.772546 0.130110 -vt 0.772546 0.000000 -vt 0.942104 0.609672 -vt 0.942104 0.739781 -vt 0.509938 0.973773 -vt 0.509938 0.843663 -vt 0.511916 0.843663 -vt 0.058761 0.960358 -vt 0.369356 0.842654 -vt 0.364622 0.972763 -vt 0.810091 0.609672 -vt 0.810091 0.479562 -vt 0.396012 0.842654 -vt 0.264316 0.842654 -vt 0.264316 0.838646 -vt 0.396827 0.715542 -vt 0.528523 0.715542 -vt 0.528523 0.722894 -vt 0.960427 0.270073 -vt 0.264316 0.845800 -vt 0.132620 0.845800 -vt 0.132620 0.835614 -vt 0.847061 0.130109 -vt 0.504427 0.973773 -vt 0.504427 0.843663 -vt 0.506206 0.843663 -vt 0.746826 0.811666 -vt 0.746826 0.941775 -vt 0.744066 0.941775 -vt 0.655923 0.973773 -vt 0.660657 0.843663 -vt 0.538873 0.973773 -vt 0.538873 0.843663 -vt 0.597750 0.843663 -vt 0.597750 0.973773 -vt 0.593554 0.973773 -vt 0.877442 0.609672 -vt 0.877442 0.479562 -vt 0.709683 0.941775 -vt 0.709683 0.811666 -vt 0.914116 0.609672 -vt 0.793762 0.511135 -vt 0.662066 0.499310 -vt 0.842836 0.609672 -vt 0.444612 0.973773 -vt 0.444612 0.843663 -vt 0.492397 0.843663 -vt 0.076405 0.960358 -vt 0.380393 0.842654 -vt 0.638603 0.973773 -vt 0.638603 0.843663 -vt 0.550904 0.973773 -vt 0.901627 0.609672 -vt 0.901627 0.739781 -vt 0.815816 0.869891 -vt 0.661142 0.823809 -vt 0.529446 0.823809 -vt 0.529446 0.817173 -vt 0.760787 0.130110 -vt 0.793762 0.626749 -vt 0.662066 0.626749 -vt 0.662066 0.614719 -vt 0.798495 0.869891 -vt 0.793762 1.000000 -vt 0.793762 0.811666 -vt 0.610237 0.973773 -vt 0.606133 0.973773 -vt 0.681695 0.941775 -vt 0.681695 0.811666 -vt 0.686908 0.811666 -vt 0.572949 0.973773 -vt 0.752153 0.811666 -vt 0.752153 0.941775 -vt 0.793762 0.609672 -vt 0.793762 0.479562 -vt 0.798419 0.479562 -vt 0.000000 0.750719 -vt 0.131696 0.763410 -vt 0.926282 0.609672 -vt 0.506206 0.973773 -vt 0.508039 0.843663 -vt 0.132620 0.688042 -vt 0.396827 0.697688 -vt 0.528523 0.702962 -vt 0.526473 0.973773 -vt 0.526473 0.843663 -vt 0.530669 0.843663 -vt 0.797618 0.130109 -vt 0.810464 0.000000 -vt 0.396827 0.973773 -vt 0.396827 0.843663 -vt 0.997465 0.609672 -vt 0.614285 0.843663 -vt 0.793762 0.637347 -vt 0.264316 0.835614 -vt 0.132620 0.823907 -vt 0.851135 0.609672 -vt 0.851135 0.479562 -vt 0.860577 0.479562 -vt 0.492397 0.973773 -vt 0.494160 0.843663 -vt 0.264316 0.720710 -vt 0.628336 0.843663 -vt 0.628336 0.973773 -vt 0.707547 0.941775 -vt 0.817127 0.609672 -vt 0.810041 0.739781 -vt 0.986157 0.000000 -vt 0.986157 0.130109 -vt 0.940774 0.130109 -vt 0.727145 0.811666 -vt 0.884517 0.609672 -vt 0.877384 0.739781 -vt 0.757435 0.811666 -vt 0.798321 0.609672 -vt 0.798321 0.739781 -vt 0.793762 0.739781 -vt 0.686908 0.941775 -vt 0.730726 0.811666 -vt 0.730726 0.941775 -vt 0.952215 0.609672 -vt 0.947221 0.739781 -vt 0.530669 0.973773 -vt 0.534816 0.843663 -vt 0.396012 0.816163 -vt 0.264316 0.816163 -vt 0.264316 0.808811 -vt 0.666737 0.941776 -vt 0.671583 0.811666 -vt 0.630063 0.843663 -vt 0.508039 0.973773 -vt 0.793762 0.499310 -vt 0.269176 0.972764 -vt 0.269176 0.842654 -vt 0.274539 0.842654 -vt 0.606133 0.843663 -vt 0.601957 0.973773 -vt 0.732641 0.811666 -vt 0.823089 0.130109 -vt 0.823089 0.000000 -vt 0.556414 0.973773 -vt 0.798419 0.609672 -vt 0.803875 0.479562 -vt 0.494160 0.973773 -vt 0.396827 0.702962 -vt 0.528523 0.708906 -vt 0.396012 0.808811 -vt 0.661142 0.817173 -vt 0.529446 0.809820 -vt 0.856309 0.260219 -vt 0.739567 0.260219 -vt 0.739567 0.130110 -vt 0.547455 0.973773 -vt 0.547455 0.843663 -vt 0.861228 0.609672 -vt 0.861228 0.739781 -vt 0.793762 0.869891 -vt 0.918522 0.609672 -vt 0.918522 0.739781 -vt 0.860577 0.609672 -vt 0.869359 0.479562 -vt 0.793762 0.614719 -vt 0.783750 0.941775 -vt 0.783750 0.811666 -vt 0.785223 0.811666 -vt 0.996159 0.270073 -vt 0.996159 0.400182 -vt 0.960427 0.400182 -vt 0.306352 0.972763 -vt 0.306352 0.842654 -vt 0.000000 0.726038 -vt 0.274539 0.972763 -vt 0.534816 0.973773 -vt 0.793762 0.538446 -vt 0.957061 0.609672 -vt 0.624940 0.843663 -vt 0.792289 0.941775 -vt 0.792289 0.811666 -vt 0.739567 0.203739 -vt 0.607871 0.203739 -vt 0.607871 0.000000 -vt 0.601957 0.843663 -vt 0.782277 0.811666 -vt 0.782277 0.941775 -vt 0.739567 0.000000 -vt 0.564567 0.973773 -vt 0.564567 0.843663 -vt 0.920940 0.609672 -vt 0.000000 0.763410 -vt 0.000000 0.820976 -vt 0.131696 0.830249 -vt 0.475251 0.269226 -vt 0.343555 0.269226 -vt 0.744066 0.811666 -vt 0.702859 0.941775 -vt 0.702859 0.811666 -vt 0.396827 0.708906 -vt 0.000000 0.960358 -vt 0.000000 0.830249 -vt 0.264316 0.823907 -vt 0.364622 0.842654 -vt 0.316837 0.972763 -vt 0.671583 0.941775 -vt 0.676578 0.811666 -vt 0.545760 0.973773 -vt 0.545760 0.843663 -vt 0.542363 0.973773 -vt 0.544067 0.843663 -vt 0.502689 0.973773 -vt 0.000000 0.693792 -vt 0.131696 0.693792 -vt 0.718894 0.941775 -vt 0.258752 0.845800 -vt 0.258752 0.975909 -vt 0.783750 0.811666 -vt 0.713617 0.941775 -vt 0.903252 0.609672 -vt 0.264316 0.748242 -vt 0.264316 0.697702 -vt 0.723796 0.811666 -vt 0.722172 0.941775 -vt 0.619796 0.843663 -vt 0.619796 0.973773 -vt 0.810041 0.609672 -vt 0.803760 0.739781 -vt 0.803760 0.609672 -vt 0.522266 0.973773 -vt 0.497590 0.973773 -vt 0.940774 0.000000 -vt 0.868307 0.130109 -vt 0.661142 0.829752 -vt 0.810464 0.130110 -vt 0.803875 0.609672 -vt 0.101486 0.960358 -vt 0.106364 0.830249 -vt 0.676578 0.941776 -vt 0.661142 0.809820 -vt 0.529446 0.689051 -vt 0.841733 0.609672 -vt 0.793762 0.586474 -vt 0.869607 0.609672 -vt 0.869607 0.739781 -vt 0.736796 0.811666 -vt 0.908355 0.609672 -vt 0.869359 0.609672 -vt 0.293498 0.972763 -vt 0.293498 0.842654 -vt 0.300216 0.842654 -vt 0.661142 0.843663 -vt 0.529446 0.843663 -vt 0.286716 0.972763 -vt 0.621534 0.843663 -vt 0.560462 0.973773 -vt 0.300216 0.972763 -vt 0.767765 0.811666 -vt 0.767765 0.941775 -vt 0.947221 0.609672 -vt 0.000000 0.788069 -vt 0.511916 0.973773 -vt 0.264316 0.972764 -vt 0.772759 0.811666 -vt 0.700277 0.941775 -vt 0.396012 0.822799 -vt 0.396827 0.722894 -vt 0.528523 0.843663 -vt 0.396012 0.838646 -vt 0.264316 0.795995 -vt 0.544067 0.973773 -vt 0.593554 0.843663 -vt 0.996252 0.260219 -vt 1.000000 0.609672 -vt 0.996409 0.869891 -vt 0.662066 0.439465 -vt 0.396012 0.484303 -vt 0.660657 0.973773 -vt 0.132620 0.484303 -vt 0.997465 0.739781 -vt 0.856309 0.130110 -vt 0.785223 0.941775 -vt 0.793762 0.941775 -vt 0.475251 0.000000 -vt 0.106364 0.960358 -vt 0.661142 0.689051 -vn -1.000000 -0.000000 0.000000 -vn -1.000000 0.000100 0.000000 -vn -1.000000 0.000200 0.000000 -vn -1.000000 -0.000100 -0.000000 -vn 1.000000 0.000100 0.000000 -vn 1.000000 0.000000 0.000000 -vn 1.000000 -0.000100 0.000000 -vn 1.000000 -0.000200 0.000000 -vn 1.000000 -0.000500 0.000100 -vn 0.000000 0.898000 0.440100 -vn 0.000000 0.989700 -0.143500 -vn 0.000000 0.994100 -0.108200 -vn 0.000000 0.947800 -0.318800 -vn 0.000000 -0.970700 0.240300 -vn 0.000000 0.518000 0.855400 -vn 0.000000 0.794500 0.607300 -vn -0.000000 -0.999900 0.011200 -vn -0.000000 0.631400 0.775500 -vn 0.000000 0.574900 0.818300 -vn 0.000000 0.999100 -0.042900 -vn -0.000000 0.058000 0.998300 -vn -0.000000 -0.989300 0.145600 -vn 0.000000 -0.999900 0.011100 -vn 0.000000 -0.693200 -0.720800 -vn 0.000000 0.957900 -0.287000 -vn 0.000000 -0.898400 -0.439100 -vn 0.000000 1.000000 -0.000000 -vn 0.000000 0.730300 -0.683200 -vn 0.000000 0.831400 -0.555600 -vn 0.000000 -0.898400 0.439100 -vn 0.000000 0.999900 -0.013700 -vn 0.000000 0.287300 0.957800 -vn 0.000000 -0.058600 -0.998300 -vn 0.000000 -0.984700 0.174300 -vn 0.000000 0.948000 0.318300 -vn 0.000000 -0.034600 -0.999400 -vn -0.000000 -0.956200 0.292900 -vn 0.000000 -0.654500 -0.756100 -vn -0.000000 0.179000 0.983900 -vn 0.000000 -0.385900 0.922600 -vn 0.000000 0.971500 0.237100 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 -0.979300 0.202200 -vn 0.000000 0.971500 -0.237100 -vn 0.000000 -0.962500 -0.271400 -vn 0.000000 -0.830400 -0.557200 -vn 0.000000 0.937900 -0.346900 -vn 0.000000 -0.996100 0.088200 -vn 0.000000 0.749200 -0.662400 -vn -0.000000 0.998400 0.057000 -vn 0.000000 0.687300 0.726400 -vn -0.000000 -0.654500 0.756100 -vn 0.000000 -0.986400 -0.164300 -vn 0.000000 0.194300 0.980900 -vn 0.000000 -0.825300 -0.564700 -vn 0.000000 0.983700 -0.179900 -vn -0.000000 0.749200 0.662400 -vn 0.000000 0.194300 -0.980900 -vn 0.000000 0.928800 -0.370500 -vn -0.000000 -0.997900 -0.064200 -vn -0.000000 -0.998100 0.060800 -vn 0.000000 -0.495900 0.868400 -vn 0.000000 -0.547000 -0.837100 -vn 0.000000 0.916500 0.399900 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.962300 0.271800 -vn 0.000000 -0.180600 -0.983600 -vn 0.000000 -0.495900 -0.868400 -vn 0.000000 0.916500 -0.399900 -vn -0.000000 -0.428300 -0.903600 -vn 0.000000 -0.998500 -0.055200 -vn -0.000000 -0.180600 0.983600 -vn 0.000000 -0.762000 -0.647500 -vn 0.000000 0.997100 0.076200 -vn 0.000000 -0.967600 0.252700 -vn 0.000000 -0.620800 -0.784000 -vn 0.000000 0.985900 0.167600 -vn 0.000000 0.844100 0.536100 -vn 0.000000 0.948000 -0.318300 -vn 0.000000 -0.750700 0.660700 -vn 0.000000 0.997200 -0.074500 -vn 0.000000 0.997900 0.064200 -vn -0.000000 -0.961700 0.274200 -vn 0.000000 0.425800 0.904800 -vn 0.000000 0.110500 0.993900 -vn 0.000000 0.967600 -0.252600 -vn 0.000000 0.179000 -0.983900 -vn 0.000000 0.976300 -0.216500 -vn 0.000000 0.110500 -0.993900 -vn 0.000000 -0.998200 0.060800 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -0.611200 0.791400 -vn 0.000000 -0.880900 -0.473400 -vn 0.000000 -0.611200 -0.791400 -vn 0.000000 -0.973500 0.228500 -vn -0.000000 -0.981400 -0.192100 -vn 0.000000 -0.999400 0.035000 -vn 0.000000 0.833800 -0.552100 -vn 0.000000 0.741800 0.670600 -vn 0.000000 0.389700 0.920900 -vn 0.000000 -0.402000 -0.915600 -vn 0.000000 0.543600 -0.839300 -vn 0.000000 -0.832400 0.554200 -vn 0.000000 -0.993200 0.116600 -vn 0.000000 -0.927000 -0.375100 -vn 0.000000 -0.284400 0.958700 -vn -0.000000 0.543600 0.839300 -vn 0.000000 0.034900 -0.999400 -vn 0.000000 -0.200600 -0.979700 -vn 0.000000 0.997100 -0.076200 -vn 0.000000 -0.725800 -0.687900 -vn 0.000000 -0.473600 -0.880800 -vn 0.000000 -0.948200 -0.317700 -vn -0.000000 -0.428300 0.903600 -vn 0.000000 0.730300 0.683200 -vn 0.000000 0.997900 -0.064200 -vn -0.000000 -0.997900 0.064200 -vn 0.000000 0.100500 -0.994900 -vn -0.000000 -0.546000 0.837800 -vn 0.000000 0.425800 -0.904800 -vn 0.000000 -0.034600 0.999400 -vn 0.000000 -0.546000 -0.837800 -vn 0.000000 0.287300 -0.957800 -vn 0.000000 -0.385900 -0.922600 -vn 0.000000 0.616100 -0.787700 -vn 0.000000 0.889700 0.456600 -vn -0.000000 0.652500 0.757800 -vn 0.000000 -0.830400 0.557200 -vn 0.000000 -0.948200 0.317700 -vn 0.000000 0.616100 0.787700 -vn 0.000000 -0.402000 -0.915700 -vn 0.000000 -0.109400 -0.994000 -vn 0.000000 -0.109400 0.994000 -vn 0.000000 -0.305100 0.952300 -vn 0.000000 -0.914500 -0.404500 -vn 0.000000 0.981300 0.192400 -vn 0.000000 -0.914500 0.404500 -vn -0.000000 0.302900 0.953000 -vn 0.000000 -0.832400 -0.554200 -vn 0.000000 0.981300 -0.192400 -vn 0.000000 0.652500 -0.757800 -vn 0.000000 0.302900 -0.953000 -vn 0.000000 0.831500 0.555600 -vn 0.000000 -0.305100 -0.952300 -vn 0.000000 -0.750700 -0.660700 -vn 0.000000 0.389700 -0.920900 -vn 0.000000 0.500400 -0.865800 -vn -0.000000 -0.981400 0.192100 -vn 0.000000 0.500400 0.865800 -vn 0.000000 0.833800 0.552100 -vn -0.000000 0.929700 0.368400 -vn 0.000000 0.034900 0.999400 -vn -0.000000 -0.058600 0.998300 -vn 0.000000 -0.192300 -0.981300 -vn 0.000000 -0.284400 -0.958700 -vn 0.000000 -0.192300 0.981300 -vn 0.000000 -0.997000 -0.077300 -vn 0.000000 -0.997000 0.077300 -vn 0.000000 -0.970700 -0.240300 -vn 0.000000 0.898000 -0.440100 -vn 0.000000 -0.725800 0.687900 -vn 0.000000 0.058000 -0.998300 -vn 0.000000 0.999100 -0.043000 -vn 0.000000 0.831500 -0.555600 -vn 0.000000 0.928800 -0.370600 -vn 0.000000 -0.956200 0.292800 -vn 0.000000 0.831400 0.555600 -s off -f 41/1/1 40/2/1 39/3/1 -f 41/1/1 39/3/1 38/4/1 -f 41/1/1 38/4/1 37/5/1 -f 42/6/1 41/1/1 37/5/1 -f 42/6/1 37/5/1 36/7/1 -f 42/6/1 36/7/1 35/8/1 -f 42/6/1 35/8/1 34/9/1 -f 43/10/1 42/6/1 34/9/1 -f 43/10/1 34/9/1 33/11/1 -f 43/10/1 33/11/1 32/12/1 -f 43/10/1 32/12/1 31/13/1 -f 43/10/1 31/13/1 30/14/1 -f 44/15/1 43/10/1 30/14/1 -f 44/15/1 30/14/1 29/16/1 -f 44/15/1 29/16/1 28/17/1 -f 44/15/1 28/17/1 27/18/1 -f 45/19/1 44/15/1 27/18/1 -f 1/20/1 55/21/1 54/22/1 -f 1/20/1 54/22/1 53/23/1 -f 46/24/1 45/19/1 27/18/1 -f 47/25/1 46/24/1 27/18/1 -f 48/26/1 47/25/1 27/18/1 -f 49/27/1 48/26/1 27/18/1 -f 50/28/1 49/27/1 27/18/1 -f 51/29/1 50/28/1 23/30/1 -f 23/30/1 50/28/1 24/31/1 -f 24/31/1 50/28/1 25/32/1 -f 25/32/2 50/28/2 26/33/2 -f 26/33/1 50/28/1 27/18/1 -f 52/34/1 51/29/1 19/35/1 -f 19/35/1 51/29/1 20/36/1 -f 20/36/1 51/29/1 21/37/1 -f 21/37/1 51/29/1 22/38/1 -f 22/38/3 51/29/3 23/30/3 -f 1/20/1 53/23/1 52/34/1 -f 1/20/1 52/34/1 3/39/1 -f 3/39/1 52/34/1 4/40/1 -f 4/40/1 52/34/1 5/41/1 -f 5/41/1 52/34/1 6/42/1 -f 6/42/1 52/34/1 7/43/1 -f 7/43/1 52/34/1 8/44/1 -f 8/44/1 52/34/1 9/45/1 -f 9/45/1 52/34/1 10/46/1 -f 10/46/1 52/34/1 11/47/1 -f 11/47/1 52/34/1 12/48/1 -f 12/48/1 52/34/1 13/49/1 -f 13/49/1 52/34/1 14/50/1 -f 14/50/1 52/34/1 15/51/1 -f 15/51/1 52/34/1 16/52/1 -f 16/52/2 52/34/2 17/53/2 -f 17/53/1 52/34/1 18/54/1 -f 18/54/1 52/34/1 19/35/1 -f 1/20/1 3/39/1 2/55/1 -f 81/56/1 80/57/1 79/58/1 -f 81/56/1 79/58/1 78/59/1 -f 82/60/1 81/56/1 78/59/1 -f 82/60/1 78/59/1 77/61/1 -f 83/62/1 82/60/1 77/61/1 -f 83/62/1 77/61/1 76/63/1 -f 84/64/1 83/62/1 76/63/1 -f 85/65/1 84/64/1 76/63/1 -f 85/65/1 76/63/1 75/66/1 -f 86/67/1 85/65/1 75/66/1 -f 86/67/1 75/66/1 74/68/1 -f 87/69/1 86/67/1 74/68/1 -f 87/69/1 74/68/1 73/70/1 -f 88/71/1 87/69/1 73/70/1 -f 88/71/1 73/70/1 128/72/1 -f 128/72/1 73/70/1 72/73/1 -f 88/71/2 128/72/2 127/74/2 -f 129/75/1 128/72/1 72/73/1 -f 88/71/1 127/74/1 126/76/1 -f 130/77/1 129/75/1 72/73/1 -f 88/71/1 126/76/1 125/78/1 -f 131/79/1 130/77/1 72/73/1 -f 88/71/1 125/78/1 124/80/1 -f 132/81/1 131/79/1 72/73/1 -f 89/82/1 88/71/1 124/80/1 -f 132/81/1 72/73/1 71/83/1 -f 89/82/1 124/80/1 123/84/1 -f 133/85/1 132/81/1 71/83/1 -f 89/82/1 123/84/1 122/86/1 -f 134/87/1 133/85/1 71/83/1 -f 89/82/1 122/86/1 121/88/1 -f 135/89/1 134/87/1 71/83/1 -f 90/90/1 89/82/1 121/88/1 -f 135/89/1 71/83/1 70/91/1 -f 90/90/1 121/88/1 120/92/1 -f 136/93/1 135/89/1 70/91/1 -f 90/90/1 120/92/1 119/94/1 -f 137/95/1 136/93/1 70/91/1 -f 91/96/1 90/90/1 119/94/1 -f 137/95/1 70/91/1 69/97/1 -f 91/96/1 119/94/1 118/98/1 -f 138/99/1 137/95/1 69/97/1 -f 91/96/1 118/98/1 117/100/1 -f 139/101/1 138/99/1 69/97/1 -f 92/102/1 91/96/1 117/100/1 -f 139/101/1 69/97/1 68/103/1 -f 92/102/1 117/100/1 116/104/1 -f 140/105/1 139/101/1 68/103/1 -f 93/106/1 92/102/1 116/104/1 -f 93/106/1 116/104/1 115/107/1 -f 141/108/1 140/105/1 68/103/1 -f 141/108/1 68/103/1 67/109/1 -f 93/106/1 115/107/1 114/110/1 -f 142/111/1 141/108/1 67/109/1 -f 94/112/1 93/106/1 114/110/1 -f 142/111/1 67/109/1 66/113/1 -f 94/112/1 114/110/1 113/114/1 -f 143/115/1 142/111/1 66/113/1 -f 94/112/1 113/114/1 112/116/1 -f 144/117/1 143/115/1 66/113/1 -f 95/118/1 94/112/1 112/116/1 -f 144/117/1 66/113/1 65/119/1 -f 95/118/1 112/116/1 111/120/1 -f 145/121/1 144/117/1 65/119/1 -f 95/118/1 111/120/1 110/122/1 -f 146/123/1 145/121/1 65/119/1 -f 96/124/1 95/118/1 110/122/1 -f 146/123/1 65/119/1 64/125/1 -f 96/124/1 110/122/1 109/126/1 -f 147/127/1 146/123/1 64/125/1 -f 96/124/1 109/126/1 108/128/1 -f 148/129/1 147/127/1 64/125/1 -f 96/124/1 108/128/1 107/130/1 -f 149/131/1 148/129/1 64/125/1 -f 97/132/1 96/124/1 107/130/1 -f 149/131/1 64/125/1 63/133/1 -f 97/132/1 107/130/1 106/134/1 -f 150/135/1 149/131/1 63/133/1 -f 97/132/1 106/134/1 105/136/1 -f 151/137/1 150/135/1 63/133/1 -f 97/132/1 105/136/1 104/138/1 -f 104/138/1 151/137/1 63/133/1 -f 97/132/1 104/138/1 63/133/1 -f 98/139/1 97/132/1 63/133/1 -f 98/139/1 63/133/1 62/140/1 -f 99/141/1 98/139/1 62/140/1 -f 99/141/1 62/140/1 61/142/1 -f 100/143/1 99/141/1 61/142/1 -f 100/143/1 61/142/1 60/144/1 -f 101/145/1 100/143/1 60/144/1 -f 101/145/1 60/144/1 59/146/1 -f 102/147/1 101/145/1 59/146/1 -f 102/147/1 59/146/1 58/148/1 -f 103/149/1 102/147/1 58/148/1 -f 103/149/1 58/148/1 57/150/1 -f 56/151/1 103/149/1 57/150/1 -f 192/152/1 191/153/1 190/154/1 -f 192/152/4 190/154/4 189/155/4 -f 192/152/1 189/155/1 188/156/1 -f 193/157/1 192/152/1 188/156/1 -f 193/157/1 188/156/1 187/158/1 -f 193/157/1 187/158/1 186/159/1 -f 193/157/1 186/159/1 185/160/1 -f 194/161/1 193/157/1 185/160/1 -f 194/161/1 185/160/1 184/162/1 -f 194/161/1 184/162/1 183/163/1 -f 194/161/1 183/163/1 182/164/1 -f 194/161/1 182/164/1 181/165/1 -f 195/166/1 194/161/1 181/165/1 -f 195/166/1 181/165/1 180/167/1 -f 195/166/1 180/167/1 179/168/1 -f 195/166/1 179/168/1 178/169/1 -f 196/170/1 195/166/1 178/169/1 -f 152/171/1 206/172/1 205/173/1 -f 152/171/1 205/173/1 204/174/1 -f 197/175/1 196/170/1 178/169/1 -f 198/176/1 197/175/1 178/169/1 -f 199/177/1 198/176/1 178/169/1 -f 200/178/1 199/177/1 178/169/1 -f 201/179/1 200/178/1 178/169/1 -f 202/180/1 201/179/1 174/181/1 -f 174/181/1 201/179/1 175/182/1 -f 175/182/1 201/179/1 176/183/1 -f 176/183/1 201/179/1 177/184/1 -f 177/184/1 201/179/1 178/169/1 -f 203/185/1 202/180/1 170/186/1 -f 170/186/1 202/180/1 171/187/1 -f 171/187/1 202/180/1 172/188/1 -f 172/188/1 202/180/1 173/189/1 -f 173/189/1 202/180/1 174/181/1 -f 152/171/1 204/174/1 203/185/1 -f 152/171/1 203/185/1 154/190/1 -f 154/190/1 203/185/1 155/191/1 -f 155/191/1 203/185/1 156/192/1 -f 156/192/1 203/185/1 157/193/1 -f 157/193/1 203/185/1 158/194/1 -f 158/194/1 203/185/1 159/195/1 -f 159/195/1 203/185/1 160/196/1 -f 160/196/1 203/185/1 161/197/1 -f 161/197/1 203/185/1 162/198/1 -f 162/198/1 203/185/1 163/199/1 -f 163/199/1 203/185/1 164/200/1 -f 164/200/1 203/185/1 165/201/1 -f 165/201/1 203/185/1 166/202/1 -f 166/202/1 203/185/1 167/203/1 -f 167/203/1 203/185/1 168/204/1 -f 168/204/1 203/185/1 169/205/1 -f 169/205/1 203/185/1 170/186/1 -f 152/171/1 154/190/1 153/206/1 -f 247/207/1 246/208/1 245/209/1 -f 247/207/1 245/209/1 244/210/1 -f 247/207/1 244/210/1 243/211/1 -f 248/212/1 247/207/1 243/211/1 -f 248/212/1 243/211/1 242/213/1 -f 248/212/1 242/213/1 241/214/1 -f 248/212/1 241/214/1 240/215/1 -f 249/216/1 248/212/1 240/215/1 -f 249/216/1 240/215/1 239/217/1 -f 249/216/1 239/217/1 238/218/1 -f 249/216/1 238/218/1 237/219/1 -f 249/216/1 237/219/1 236/220/1 -f 250/221/1 249/216/1 236/220/1 -f 250/221/1 236/220/1 235/222/1 -f 250/221/1 235/222/1 234/223/1 -f 250/221/1 234/223/1 233/224/1 -f 251/225/1 250/221/1 233/224/1 -f 207/226/1 261/227/1 260/228/1 -f 207/226/1 260/228/1 259/229/1 -f 252/230/1 251/225/1 233/224/1 -f 253/231/1 252/230/1 233/224/1 -f 254/232/1 253/231/1 233/224/1 -f 255/233/1 254/232/1 233/224/1 -f 256/234/1 255/233/1 233/224/1 -f 257/235/1 256/234/1 229/236/1 -f 229/236/1 256/234/1 230/237/1 -f 230/237/1 256/234/1 231/238/1 -f 231/238/1 256/234/1 232/239/1 -f 232/239/1 256/234/1 233/224/1 -f 258/240/1 257/235/1 225/241/1 -f 225/241/1 257/235/1 226/242/1 -f 226/242/1 257/235/1 227/243/1 -f 227/243/1 257/235/1 228/244/1 -f 228/244/1 257/235/1 229/236/1 -f 207/226/1 259/229/1 258/240/1 -f 207/226/1 258/240/1 209/245/1 -f 209/245/1 258/240/1 210/246/1 -f 210/246/1 258/240/1 211/247/1 -f 211/247/1 258/240/1 212/248/1 -f 212/248/1 258/240/1 213/249/1 -f 213/249/1 258/240/1 214/250/1 -f 214/250/1 258/240/1 215/251/1 -f 215/251/1 258/240/1 216/252/1 -f 216/252/1 258/240/1 217/253/1 -f 217/253/1 258/240/1 218/254/1 -f 218/254/1 258/240/1 219/255/1 -f 219/255/1 258/240/1 220/256/1 -f 220/256/1 258/240/1 221/257/1 -f 221/257/1 258/240/1 222/258/1 -f 222/258/1 258/240/1 223/259/1 -f 223/259/1 258/240/1 224/260/1 -f 224/260/1 258/240/1 225/241/1 -f 207/226/1 209/245/1 208/261/1 -f 262/262/1 273/263/1 270/264/1 -f 270/264/1 273/263/1 272/265/1 -f 270/264/1 272/265/1 271/266/1 -f 262/262/1 270/264/1 269/267/1 -f 262/262/1 269/267/1 266/268/1 -f 266/268/1 269/267/1 268/269/1 -f 266/268/1 268/269/1 267/270/1 -f 262/262/1 266/268/1 265/271/1 -f 262/262/1 265/271/1 264/272/1 -f 262/262/1 264/272/1 263/273/1 -f 426/274/5 336/275/5 337/276/5 -f 426/274/6 479/277/6 336/275/6 -f 426/274/6 478/278/6 479/277/6 -f 308/279/6 478/278/6 426/274/6 -f 308/279/6 307/280/6 478/278/6 -f 308/279/6 466/281/6 307/280/6 -f 308/279/6 512/282/6 466/281/6 -f 415/283/6 512/282/6 308/279/6 -f 415/283/6 414/284/6 512/282/6 -f 415/283/6 441/285/6 414/284/6 -f 415/283/6 489/286/6 441/285/6 -f 415/283/6 465/287/6 489/286/6 -f 409/288/6 465/287/6 415/283/6 -f 409/288/6 408/289/6 465/287/6 -f 409/288/6 539/290/6 408/289/6 -f 409/288/6 295/291/6 539/290/6 -f 475/292/6 295/291/6 409/288/6 -f 380/293/6 482/294/6 526/295/6 -f 380/293/6 463/296/6 482/294/6 -f 476/297/6 295/291/6 475/292/6 -f 296/298/6 295/291/6 476/297/6 -f 329/299/6 295/291/6 296/298/6 -f 424/300/6 295/291/6 329/299/6 -f 439/301/6 295/291/6 424/300/6 -f 348/302/6 487/303/6 439/301/6 -f 487/303/6 438/304/6 439/301/6 -f 438/304/6 358/305/6 439/301/6 -f 358/305/7 359/306/7 439/301/7 -f 359/306/6 295/291/6 439/301/6 -f 367/307/6 523/308/6 348/302/6 -f 523/308/6 538/309/6 348/302/6 -f 538/309/6 347/310/6 348/302/6 -f 347/310/6 486/311/6 348/302/6 -f 486/311/8 487/303/8 348/302/8 -f 380/293/6 367/307/6 463/296/6 -f 380/293/6 449/312/6 367/307/6 -f 449/312/6 541/313/6 367/307/6 -f 541/313/6 391/314/6 367/307/6 -f 391/314/6 499/315/6 367/307/6 -f 499/315/6 494/316/6 367/307/6 -f 494/316/6 448/317/6 367/307/6 -f 448/317/6 368/318/6 367/307/6 -f 368/318/6 369/319/6 367/307/6 -f 369/319/6 524/320/6 367/307/6 -f 524/320/6 540/321/6 367/307/6 -f 540/321/6 366/322/6 367/307/6 -f 366/322/6 488/323/6 367/307/6 -f 488/323/6 492/324/6 367/307/6 -f 492/324/6 447/325/6 367/307/6 -f 447/325/7 354/326/7 367/307/7 -f 354/326/6 355/327/6 367/307/6 -f 355/327/6 523/308/6 367/307/6 -f 380/293/6 381/328/6 449/312/6 -f 396/329/6 459/330/6 460/331/6 -f 396/329/6 294/332/6 459/330/6 -f 412/333/6 294/332/6 396/329/6 -f 412/333/6 293/334/6 294/332/6 -f 500/335/6 293/334/6 412/333/6 -f 500/335/6 325/336/6 293/334/6 -f 385/337/6 325/336/6 500/335/6 -f 274/338/6 325/336/6 385/337/6 -f 274/338/6 506/339/6 325/336/6 -f 275/340/6 506/339/6 274/338/6 -f 275/340/6 505/341/6 506/339/6 -f 316/342/6 505/341/6 275/340/6 -f 316/342/6 315/343/6 505/341/6 -f 360/344/6 315/343/6 316/342/6 -f 360/344/6 320/345/6 315/343/6 -f 320/345/6 462/346/6 315/343/6 -f 360/344/7 445/347/7 320/345/7 -f 511/348/6 462/346/6 320/345/6 -f 360/344/6 361/349/6 445/347/6 -f 472/350/6 462/346/6 511/348/6 -f 360/344/6 421/351/6 361/349/6 -f 473/352/6 462/346/6 472/350/6 -f 360/344/6 327/353/6 421/351/6 -f 531/354/6 462/346/6 473/352/6 -f 525/355/6 327/353/6 360/344/6 -f 531/354/6 364/356/6 462/346/6 -f 525/355/6 326/357/6 327/353/6 -f 365/358/6 364/356/6 531/354/6 -f 525/355/6 518/359/6 326/357/6 -f 517/360/6 364/356/6 365/358/6 -f 525/355/6 537/361/6 518/359/6 -f 420/362/6 364/356/6 517/360/6 -f 502/363/6 537/361/6 525/355/6 -f 420/362/6 302/364/6 364/356/6 -f 502/363/6 530/365/6 537/361/6 -f 321/366/6 302/364/6 420/362/6 -f 502/363/6 522/367/6 530/365/6 -f 322/368/6 302/364/6 321/366/6 -f 503/369/6 522/367/6 502/363/6 -f 322/368/6 301/370/6 302/364/6 -f 503/369/6 469/371/6 522/367/6 -f 470/372/6 301/370/6 322/368/6 -f 503/369/6 418/373/6 469/371/6 -f 471/374/6 301/370/6 470/372/6 -f 395/375/6 418/373/6 503/369/6 -f 471/374/6 404/376/6 301/370/6 -f 395/375/6 324/377/6 418/373/6 -f 529/378/6 404/376/6 471/374/6 -f 286/379/6 324/377/6 395/375/6 -f 286/379/6 323/380/6 324/377/6 -f 435/381/6 404/376/6 529/378/6 -f 435/381/6 434/382/6 404/376/6 -f 286/379/6 352/383/6 323/380/6 -f 516/384/6 434/382/6 435/381/6 -f 287/385/6 352/383/6 286/379/6 -f 516/384/6 509/386/6 434/382/6 -f 287/385/6 536/387/6 352/383/6 -f 417/388/6 509/386/6 516/384/6 -f 287/385/6 527/389/6 536/387/6 -f 313/390/6 509/386/6 417/388/6 -f 456/391/6 527/389/6 287/385/6 -f 313/390/6 328/392/6 509/386/6 -f 456/391/6 519/393/6 527/389/6 -f 314/394/6 328/392/6 313/390/6 -f 456/391/6 346/395/6 519/393/6 -f 467/396/6 328/392/6 314/394/6 -f 345/397/6 346/395/6 456/391/6 -f 467/396/6 342/398/6 328/392/6 -f 345/397/6 413/399/6 346/395/6 -f 428/400/6 342/398/6 467/396/6 -f 345/397/6 312/401/6 413/399/6 -f 343/402/6 342/398/6 428/400/6 -f 345/397/6 311/403/6 312/401/6 -f 431/404/6 342/398/6 343/402/6 -f 292/405/6 311/403/6 345/397/6 -f 431/404/6 344/406/6 342/398/6 -f 292/405/6 510/407/6 311/403/6 -f 508/408/6 344/406/6 431/404/6 -f 292/405/6 535/409/6 510/407/6 -f 291/410/6 344/406/6 508/408/6 -f 292/405/6 290/411/6 535/409/6 -f 290/411/6 344/406/6 291/410/6 -f 292/405/6 344/406/6 290/411/6 -f 515/412/6 344/406/6 292/405/6 -f 515/412/6 484/413/6 344/406/6 -f 319/414/6 484/413/6 515/412/6 -f 319/414/6 483/415/6 484/413/6 -f 279/416/6 483/415/6 319/414/6 -f 279/416/6 278/417/6 483/415/6 -f 416/418/6 278/417/6 279/416/6 -f 416/418/6 521/419/6 278/417/6 -f 452/420/6 521/419/6 416/418/6 -f 452/420/6 387/421/6 521/419/6 -f 388/422/6 387/421/6 452/420/6 -f 388/422/6 430/423/6 387/421/6 -f 429/424/6 430/423/6 388/422/6 -f 351/425/6 403/426/6 543/427/6 -f 351/425/6 402/428/6 403/426/6 -f 351/425/6 284/429/6 402/428/6 -f 285/430/6 284/429/6 351/425/6 -f 285/430/6 455/431/6 284/429/6 -f 285/430/6 464/432/6 455/431/6 -f 285/430/6 306/433/6 464/432/6 -f 423/434/6 306/433/6 285/430/6 -f 423/434/6 305/435/6 306/433/6 -f 423/434/6 422/436/6 305/435/6 -f 423/434/6 407/437/6 422/436/6 -f 423/434/6 406/438/6 407/437/6 -f 335/439/6 406/438/6 423/434/6 -f 335/439/6 507/440/6 406/438/6 -f 335/439/6 334/441/6 507/440/6 -f 335/439/6 332/442/6 334/441/6 -f 353/443/6 332/442/6 335/439/6 -f 317/444/6 341/445/6 461/446/6 -f 317/444/6 340/447/6 341/445/6 -f 333/448/6 332/442/6 353/443/6 -f 545/449/6 332/442/6 333/448/6 -f 432/450/6 332/442/6 545/449/6 -f 433/451/6 332/442/6 432/450/6 -f 394/452/6 332/442/6 433/451/6 -f 310/453/6 384/454/6 394/452/6 -f 384/454/6 542/455/6 394/452/6 -f 542/455/6 299/456/6 394/452/6 -f 299/456/6 300/457/6 394/452/6 -f 300/457/6 332/442/6 394/452/6 -f 378/458/6 453/459/6 310/453/6 -f 453/459/6 454/460/6 310/453/6 -f 454/460/6 309/461/6 310/453/6 -f 309/461/6 383/462/6 310/453/6 -f 383/462/9 384/454/9 310/453/9 -f 317/444/6 378/458/6 340/447/6 -f 317/444/6 468/463/6 378/458/6 -f 468/463/6 419/464/6 378/458/6 -f 419/464/6 528/465/6 378/458/6 -f 528/465/6 513/466/6 378/458/6 -f 513/466/6 514/467/6 378/458/6 -f 514/467/6 397/468/6 378/458/6 -f 397/468/6 288/469/6 378/458/6 -f 288/469/6 289/470/6 378/458/6 -f 289/470/6 458/471/6 378/458/6 -f 458/471/6 393/472/6 378/458/6 -f 393/472/6 504/473/6 378/458/6 -f 504/473/6 400/474/6 378/458/6 -f 400/474/6 401/475/6 378/458/6 -f 401/475/6 377/476/6 378/458/6 -f 377/476/6 276/477/6 378/458/6 -f 276/477/6 277/478/6 378/458/6 -f 277/478/6 453/459/6 378/458/6 -f 317/444/6 318/479/6 468/463/6 -f 376/480/6 375/481/6 451/482/6 -f 376/480/6 379/483/6 375/481/6 -f 376/480/6 496/484/6 379/483/6 -f 399/485/6 496/484/6 376/480/6 -f 399/485/6 495/486/6 496/484/6 -f 399/485/6 534/487/6 495/486/6 -f 399/485/6 398/488/6 534/487/6 -f 283/489/6 398/488/6 399/485/6 -f 283/489/6 457/490/6 398/488/6 -f 283/489/6 282/491/6 457/490/6 -f 283/489/6 350/492/6 282/491/6 -f 283/489/6 349/493/6 350/492/6 -f 411/494/6 349/493/6 283/489/6 -f 411/494/6 410/495/6 349/493/6 -f 411/494/6 485/496/6 410/495/6 -f 411/494/6 297/497/6 485/496/6 -f 493/498/6 297/497/6 411/494/6 -f 303/499/6 498/500/6 304/501/6 -f 303/499/6 386/502/6 498/500/6 -f 373/503/6 297/497/6 493/498/6 -f 374/504/6 297/497/6 373/503/6 -f 405/505/6 297/497/6 374/504/6 -f 298/506/6 297/497/6 405/505/6 -f 390/507/6 297/497/6 298/506/6 -f 444/508/6 372/509/6 390/507/6 -f 372/509/6 446/510/6 390/507/6 -f 446/510/6 501/511/6 390/507/6 -f 501/511/6 389/512/6 390/507/6 -f 389/512/6 297/497/6 390/507/6 -f 357/513/6 533/514/6 444/508/6 -f 533/514/6 491/515/6 444/508/6 -f 491/515/6 443/516/6 444/508/6 -f 443/516/6 371/517/6 444/508/6 -f 371/517/6 372/509/6 444/508/6 -f 303/499/6 357/513/6 386/502/6 -f 303/499/6 474/518/6 357/513/6 -f 474/518/6 481/519/6 357/513/6 -f 481/519/6 392/520/6 357/513/6 -f 392/520/6 338/521/6 357/513/6 -f 338/521/6 339/522/6 357/513/6 -f 339/522/6 544/523/6 357/513/6 -f 544/523/6 382/524/6 357/513/6 -f 382/524/6 427/525/6 357/513/6 -f 427/525/6 520/526/6 357/513/6 -f 520/526/6 477/527/6 357/513/6 -f 477/527/6 370/528/6 357/513/6 -f 370/528/6 330/529/6 357/513/6 -f 330/529/6 331/530/6 357/513/6 -f 331/530/6 546/531/6 357/513/6 -f 546/531/6 356/532/6 357/513/6 -f 356/532/6 442/533/6 357/513/6 -f 442/533/6 533/514/6 357/513/6 -f 303/499/6 425/534/6 474/518/6 -f 450/535/6 436/536/6 480/537/6 -f 436/536/6 437/538/6 480/537/6 -f 436/536/6 532/539/6 437/538/6 -f 450/535/6 440/540/6 436/536/6 -f 450/535/6 362/541/6 440/540/6 -f 362/541/6 490/542/6 440/540/6 -f 362/541/6 363/543/6 490/542/6 -f 450/535/6 497/544/6 362/541/6 -f 450/535/6 281/272/6 497/544/6 -f 450/535/6 280/273/6 281/272/6 -f 84/545/10 385/546/10 500/547/10 -f 36/548/11 307/549/11 466/550/11 -f 243/551/12 496/552/12 495/553/12 -f 182/554/13 407/555/13 406/556/13 -f 130/557/14 472/558/14 511/559/14 -f 258/560/15 357/561/15 444/562/15 -f 47/563/16 296/564/16 476/565/16 -f 167/566/17 377/567/17 401/568/17 -f 201/569/18 394/570/18 433/571/18 -f 257/572/19 444/562/19 390/573/19 -f 39/574/20 336/575/20 479/576/20 -f 92/577/21 395/578/21 503/579/21 -f 172/580/22 309/581/22 454/582/22 -f 221/583/23 222/584/23 546/585/23 -f 52/586/15 367/587/15 348/588/15 -f 214/589/24 544/590/24 339/591/24 -f 183/592/25 422/593/25 407/555/25 -f 60/594/26 278/595/26 521/596/26 -f 261/597/27 304/598/27 498/599/27 -f 109/600/28 413/601/28 312/602/28 -f 76/603/29 325/604/29 506/605/29 -f 55/606/27 526/607/27 482/608/27 -f 101/609/30 416/610/30 279/611/30 -f 206/612/27 461/613/27 341/614/27 -f 191/615/31 543/616/31 403/617/31 -f 144/618/32 313/619/32 417/620/32 -f 68/621/33 404/622/33 434/623/33 -f 22/624/34 486/625/34 347/626/34 -f 83/627/35 500/547/35 412/628/35 -f 117/629/36 418/630/36 324/631/36 -f 233/632/37 297/633/37 389/634/37 -f 63/635/38 344/636/38 484/637/38 -f 91/638/39 503/579/39 502/639/39 -f 136/640/40 321/641/40 420/642/40 -f 151/643/41 291/644/41 508/645/41 -f 271/646/42 532/647/42 436/648/42 -f 23/649/43 487/650/43 486/625/43 -f 106/651/44 510/652/44 535/653/44 -f 164/654/45 504/655/45 393/656/45 -f 125/657/46 421/658/46 327/659/46 -f 236/660/47 349/661/47 410/662/47 -f 159/663/24 397/664/24 514/665/24 -f 30/666/47 465/667/47 408/668/47 -f 225/669/48 533/670/48 442/671/48 -f 75/672/49 506/605/49 505/673/49 -f 192/674/50 351/675/50 543/616/50 -f 49/676/51 424/677/51 329/678/51 -f 188/679/12 284/680/12 455/681/12 -f 208/682/42 425/683/42 303/607/42 -f 198/684/16 545/685/16 333/686/16 -f 98/687/52 515/688/52 292/689/52 -f 14/690/53 488/691/53 366/692/53 -f 41/693/50 426/694/50 337/695/50 -f 143/696/54 417/620/54 516/697/54 -f 216/698/55 427/699/55 382/700/55 -f 241/701/56 534/702/56 398/703/56 -f 86/704/57 275/705/57 274/444/57 -f 114/706/58 352/707/58 536/708/58 -f 180/709/59 507/710/59 334/711/59 -f 57/712/60 430/713/60 429/714/60 -f 31/715/13 489/716/13 465/667/13 -f 169/717/61 277/718/61 276/719/61 -f 135/720/62 420/642/62 517/721/62 -f 6/722/63 499/723/63 391/724/63 -f 150/725/64 508/645/64 431/726/64 -f 272/727/65 437/728/65 532/729/65 -f 249/730/66 283/731/66 399/732/66 -f 67/733/67 434/623/67 509/734/67 -f 200/735/51 433/571/51 432/736/51 -f 264/737/65 281/729/65 280/738/65 -f 122/739/68 518/740/68 537/741/68 -f 107/742/69 311/743/69 510/652/69 -f 65/744/70 328/745/70 342/746/70 -f 15/747/71 492/748/71 488/691/71 -f 228/749/34 371/750/34 443/751/34 -f 94/752/72 287/753/72 286/754/72 -f 215/755/73 382/756/73 544/590/73 -f 255/757/51 298/758/51 405/759/51 -f 238/760/25 282/761/25 350/762/25 -f 161/763/55 289/764/55 288/765/55 -f 170/766/48 453/767/48 277/718/48 -f 104/768/74 290/769/74 291/644/74 -f 25/770/75 358/771/75 438/772/75 -f 7/773/76 494/774/76 499/723/76 -f 42/775/77 308/776/77 426/694/77 -f 263/777/42 280/778/42 450/779/42 -f 158/780/76 514/665/76 513/781/76 -f 252/782/78 373/783/78 493/784/78 -f 78/785/79 294/786/79 293/787/79 -f 270/788/65 436/789/65 440/613/65 -f 99/790/80 319/791/80 515/792/80 -f 244/793/81 379/794/81 496/552/81 -f 81/795/82 396/796/82 460/797/82 -f 177/798/83 300/799/83 299/800/83 -f 89/801/84 525/802/84 360/803/84 -f 142/804/85 516/697/85 435/805/85 -f 33/806/86 414/807/86 441/808/86 -f 70/809/87 302/810/87 301/811/87 -f 34/812/88 512/813/88 414/807/88 -f 115/814/89 323/815/89 352/707/89 -f 224/816/90 442/671/90 356/817/90 -f 207/818/91 303/819/91 304/820/91 -f 134/821/92 517/721/92 365/683/92 -f 185/822/88 306/823/88 305/824/88 -f 162/825/93 458/826/93 289/764/93 -f 123/827/94 326/828/94 518/740/94 -f 50/829/18 439/830/18 424/677/18 -f 230/831/95 446/832/95 372/833/95 -f 58/834/96 387/835/96 430/713/96 -f 43/836/66 415/837/66 308/776/66 -f 17/838/97 354/839/97 447/840/97 -f 108/841/98 312/602/98 311/743/98 -f 254/842/99 405/759/99 374/843/99 -f 145/844/100 314/845/100 313/619/100 -f 9/846/73 368/847/73 448/848/73 -f 210/849/101 481/850/101 474/851/101 -f 153/647/42 318/646/42 317/852/42 -f 73/853/102 315/854/102 462/855/102 -f 100/856/103 279/611/103 319/791/103 -f 20/857/104 538/858/104 523/859/104 -f 246/860/31 451/861/31 375/862/31 -f 199/863/99 432/736/99 545/864/99 -f 178/865/37 332/866/37 300/799/37 -f 218/867/105 477/868/105 520/869/105 -f 137/870/106 322/871/106 321/641/106 -f 186/872/56 464/873/56 306/823/56 -f 35/874/56 466/550/56 512/813/56 -f 88/875/107 360/803/107 316/876/107 -f 116/877/108 324/631/108 323/815/108 -f 28/878/109 539/879/109 295/880/109 -f 105/881/110 535/653/110 290/769/110 -f 256/882/18 390/573/18 298/758/18 -f 202/883/19 310/884/19 394/570/19 -f 171/885/104 454/582/104 453/767/104 -f 124/886/111 327/887/111 326/828/111 -f 51/888/19 348/588/19 439/830/19 -f 156/889/112 528/890/112 419/891/112 -f 59/892/113 521/596/113 387/835/113 -f 96/893/114 345/894/114 456/895/114 -f 48/896/99 329/678/99 296/897/99 -f 273/688/27 480/687/27 437/898/27 -f 221/583/71 331/899/71 330/900/71 -f 194/901/66 423/902/66 285/903/66 -f 163/904/105 393/656/105 458/826/105 -f 247/905/50 376/906/50 451/861/50 -f 148/907/115 343/908/115 428/909/115 -f 80/910/116 460/797/116 459/911/116 -f 40/912/31 337/695/31 336/575/31 -f 19/913/48 523/859/48 355/914/48 -f 206/820/91 152/819/91 317/915/91 -f 213/916/76 339/591/76 338/917/76 -f 12/918/105 540/919/105 524/920/105 -f 56/921/117 429/714/117 388/922/117 -f 179/923/109 334/924/109 332/879/109 -f 205/564/118 341/563/118 340/925/118 -f 223/926/97 356/817/97 546/585/97 -f 97/927/119 292/689/119 345/894/119 -f 72/928/120 462/855/120 364/929/120 -f 140/930/121 529/931/121 471/932/121 -f 27/933/37 295/880/37 359/934/37 -f 64/935/122 342/746/122 344/636/122 -f 231/936/75 501/937/75 446/832/75 -f 187/938/11 455/681/11 464/873/11 -f 113/939/123 536/708/123 527/940/123 -f 268/941/65 490/942/65 363/943/65 -f 237/944/13 350/762/13 349/661/13 -f 121/945/124 537/741/124 530/946/124 -f 248/947/77 399/732/77 376/906/77 -f 110/948/125 346/949/125 413/950/125 -f 193/951/77 285/903/77 351/675/77 -f 239/952/86 457/953/86 282/761/86 -f 45/954/126 475/613/126 409/955/126 -f 11/956/93 524/920/93 369/957/93 -f 4/958/101 541/959/101 449/960/101 -f 197/961/78 333/686/78 353/962/78 -f 232/963/83 389/634/83 501/937/83 -f 18/964/61 355/914/61 354/839/61 -f 87/965/127 316/876/127 275/705/127 -f 132/966/128 531/967/128 473/968/128 -f 220/969/53 330/900/53 370/970/53 -f 240/971/88 398/703/88 457/953/88 -f 102/972/129 452/973/129 416/610/129 -f 168/974/97 276/719/97 377/567/97 -f 147/975/130 428/909/130 467/976/130 -f 26/977/83 359/934/83 358/771/83 -f 212/978/63 338/917/63 392/979/63 -f 3/980/65 449/960/65 381/819/65 -f 155/981/131 419/891/131 468/982/131 -f 264/983/27 265/984/27 497/985/27 -f 173/986/34 383/987/34 309/581/34 -f 118/988/132 469/989/132 418/630/132 -f 267/990/42 363/950/42 362/789/42 -f 37/991/12 478/992/12 307/549/12 -f 139/993/133 471/932/133 470/994/133 -f 95/995/134 456/895/134 287/753/134 -f 204/996/27 340/997/27 378/998/27 -f 260/999/118 498/1000/118 386/1001/118 -f 126/1002/135 361/1003/135 421/658/135 -f 82/1004/136 412/628/136 396/796/136 -f 131/1005/137 473/968/137 472/558/137 -f 10/1006/55 369/957/55 368/866/55 -f 90/1007/138 502/639/138 525/802/138 -f 46/1008/78 476/565/78 475/613/78 -f 229/1009/43 372/833/43 371/750/43 -f 53/1010/27 463/1011/27 367/898/27 -f 1/1012/91 380/1013/91 526/1014/91 -f 219/1015/45 370/970/45 477/868/45 -f 253/1016/16 374/1017/16 373/783/16 -f 61/985/139 483/1018/139 278/595/139 -f 165/1019/53 400/1020/53 504/655/53 -f 38/1021/81 479/576/81 478/992/81 -f 79/1022/140 459/911/140 294/786/140 -f 74/1023/141 505/673/141 315/1024/141 -f 262/1025/91 450/1026/91 480/537/91 -f 245/1027/20 375/862/20 379/794/20 -f 189/1028/81 402/1029/81 284/680/81 -f 211/1030/112 392/979/112 481/850/112 -f 2/1031/42 381/1032/42 380/601/42 -f 71/1033/142 364/929/142 302/810/142 -f 234/1034/109 485/843/109 297/1035/109 -f 203/633/15 378/632/15 310/884/15 -f 196/1036/126 353/962/126 335/1037/126 -f 174/1038/43 384/1039/43 383/987/43 -f 176/1040/75 299/800/75 542/1041/75 -f 21/1042/22 347/626/22 538/858/22 -f 85/1043/143 274/1044/143 385/546/143 -f 181/1045/47 406/556/47 507/710/47 -f 54/1046/118 482/1047/118 463/728/118 -f 259/1017/27 386/1016/27 357/1048/27 -f 184/1049/86 305/824/86 422/593/86 -f 29/1050/59 408/668/59 539/887/59 -f 66/1051/144 509/734/144 328/745/144 -f 62/1052/145 484/637/145 483/915/145 -f 235/1053/59 410/662/59 485/1054/59 -f 226/1055/104 491/1056/104 533/670/104 -f 112/1057/146 527/940/146 519/1058/146 -f 111/1059/147 519/1058/147 346/949/147 -f 13/1060/45 366/692/45 540/919/45 -f 24/1061/95 438/772/95 487/650/95 -f 266/1062/65 362/943/65 497/1063/65 -f 157/1064/63 513/781/63 528/890/63 -f 103/1065/148 388/922/148 452/973/148 -f 146/1066/149 467/976/149 314/845/149 -f 149/1067/150 431/726/150 343/1068/150 -f 195/1069/151 335/1037/151 423/902/151 -f 154/1070/65 468/982/65 318/1071/65 -f 141/1072/152 435/805/152 529/931/152 -f 93/1073/153 286/754/153 395/578/153 -f 119/1074/154 522/1075/154 469/989/154 -f 242/1076/11 495/553/11 534/702/11 -f 120/870/155 530/946/155 522/1075/155 -f 32/1077/25 441/808/25 489/716/25 -f 138/1078/156 470/994/156 322/871/156 -f 128/1079/157 320/1080/157 445/1081/157 -f 269/598/27 440/597/27 490/983/27 -f 160/1082/73 288/1083/73 397/664/73 -f 129/1084/158 511/559/158 320/1080/158 -f 227/1085/22 443/751/22 491/1056/22 -f 166/1086/71 401/568/71 400/1020/71 -f 127/1087/159 445/1081/159 361/1003/159 -f 250/1088/151 411/1089/151 283/731/151 -f 44/1090/151 409/955/151 415/837/151 -f 77/1091/160 293/787/160 325/604/160 -f 16/1092/17 447/840/17 492/748/17 -f 133/1093/161 365/847/161 531/967/161 -f 251/1094/126 493/784/126 411/1089/126 -f 190/1095/20 403/617/20 402/1029/20 -f 5/1096/112 391/724/112 541/959/112 -f 209/1097/65 474/851/65 425/1098/65 -f 8/1099/24 448/848/24 494/774/24 -f 69/1100/162 301/811/162 404/622/162 -f 175/1101/95 542/1041/95 384/1039/95 -f 217/1102/93 520/869/93 427/699/93 -f 83/627/10 84/545/10 500/547/10 -f 35/874/11 36/548/11 466/550/11 -f 242/1076/12 243/551/12 495/553/12 -f 181/1045/13 182/554/13 406/556/13 -f 129/1084/14 130/557/14 511/559/14 -f 257/572/15 258/560/15 444/562/15 -f 46/1008/16 47/563/16 476/565/16 -f 166/1086/23 167/566/23 401/568/23 -f 200/735/18 201/569/18 433/571/18 -f 256/882/19 257/572/19 390/573/19 -f 38/1021/163 39/574/163 479/576/163 -f 91/638/21 92/577/21 503/579/21 -f 171/885/22 172/580/22 454/582/22 -f 331/899/17 221/583/17 546/585/17 -f 51/888/15 52/586/15 348/588/15 -f 213/916/24 214/589/24 339/591/24 -f 182/554/25 183/592/25 407/555/25 -f 59/892/26 60/594/26 521/596/26 -f 260/1103/27 261/597/27 498/599/27 -f 108/841/28 109/600/28 312/602/28 -f 75/672/164 76/603/164 506/605/164 -f 54/1104/27 55/606/27 482/608/27 -f 100/856/30 101/609/30 279/611/30 -f 205/1105/27 206/612/27 341/614/27 -f 190/1095/31 191/615/31 403/617/31 -f 143/696/32 144/618/32 417/620/32 -f 67/733/33 68/621/33 434/623/33 -f 21/1042/34 22/624/34 347/626/34 -f 82/1004/35 83/627/35 412/628/35 -f 116/877/36 117/629/36 324/631/36 -f 232/963/37 233/632/37 389/634/37 -f 62/1052/38 63/635/38 484/637/38 -f 90/1007/39 91/638/39 502/639/39 -f 135/720/40 136/640/40 420/642/40 -f 150/725/41 151/643/41 508/645/41 -f 270/778/42 271/646/42 436/648/42 -f 22/624/43 23/649/43 486/625/43 -f 105/881/44 106/651/44 535/653/44 -f 163/904/45 164/654/45 393/656/45 -f 124/1035/46 125/657/46 327/659/46 -f 235/1053/47 236/660/47 410/662/47 -f 158/780/24 159/663/24 514/665/24 -f 29/1050/47 30/666/47 408/668/47 -f 224/816/48 225/669/48 442/671/48 -f 74/1023/49 75/672/49 505/673/49 -f 191/615/50 192/674/50 543/616/50 -f 48/896/51 49/676/51 329/678/51 -f 187/938/12 188/679/12 455/681/12 -f 207/606/42 208/682/42 303/607/42 -f 197/961/16 198/684/16 333/686/16 -f 97/927/52 98/687/52 292/689/52 -f 13/1060/53 14/690/53 366/692/53 -f 40/912/50 41/693/50 337/695/50 -f 142/804/54 143/696/54 516/697/54 -f 215/765/55 216/698/55 382/700/55 -f 240/971/56 241/701/56 398/703/56 -f 85/908/57 86/704/57 274/444/57 -f 113/939/58 114/706/58 536/708/58 -f 179/1054/165 180/709/165 334/711/165 -f 56/921/60 57/712/60 429/714/60 -f 30/666/13 31/715/13 465/667/13 -f 168/974/90 169/717/90 276/719/90 -f 134/821/62 135/720/62 517/721/62 -f 5/1096/63 6/722/63 391/724/63 -f 149/1067/64 150/725/64 431/726/64 -f 271/737/65 272/727/65 532/729/65 -f 248/947/66 249/730/66 399/732/66 -f 66/1051/67 67/733/67 509/734/67 -f 199/863/51 200/735/51 432/736/51 -f 263/854/65 264/737/65 280/738/65 -f 121/945/68 122/739/68 537/741/68 -f 106/651/69 107/742/69 510/652/69 -f 64/935/70 65/744/70 342/746/70 -f 14/690/71 15/747/71 488/691/71 -f 227/1085/34 228/749/34 443/751/34 -f 93/1073/72 94/752/72 286/754/72 -f 214/589/73 215/755/73 544/590/73 -f 254/842/51 255/757/51 405/759/51 -f 237/944/25 238/760/25 350/762/25 -f 160/700/55 161/763/55 288/765/55 -f 169/717/48 170/766/48 277/718/48 -f 151/643/74 104/768/74 291/644/74 -f 24/1061/75 25/770/75 438/772/75 -f 6/722/76 7/773/76 499/723/76 -f 41/693/77 42/775/77 426/694/77 -f 262/1106/42 263/777/42 450/779/42 -f 157/1064/76 158/780/76 513/781/76 -f 251/1094/78 252/782/78 493/784/78 -f 77/1091/79 78/785/79 293/787/79 -f 269/612/65 270/788/65 440/613/65 -f 98/1063/80 99/790/80 515/792/80 -f 243/551/81 244/793/81 496/552/81 -f 80/910/82 81/795/82 460/797/82 -f 176/1040/83 177/798/83 299/800/83 -f 88/875/84 89/801/84 360/803/84 -f 141/1072/85 142/804/85 435/805/85 -f 32/1077/86 33/806/86 441/808/86 -f 69/1100/87 70/809/87 301/811/87 -f 33/806/88 34/812/88 414/807/88 -f 114/706/89 115/814/89 352/707/89 -f 223/926/61 224/816/61 356/817/61 -f 261/1107/91 207/818/91 304/820/91 -f 133/682/92 134/821/92 365/683/92 -f 184/1049/88 185/822/88 305/824/88 -f 161/763/93 162/825/93 289/764/93 -f 122/739/94 123/827/94 518/740/94 -f 49/676/18 50/829/18 424/677/18 -f 229/1009/95 230/831/95 372/833/95 -f 57/712/96 58/834/96 430/713/96 -f 42/775/66 43/836/66 308/776/66 -f 16/1092/97 17/838/97 447/840/97 -f 107/742/98 108/841/98 311/743/98 -f 253/1034/99 254/842/99 374/843/99 -f 144/618/100 145/844/100 313/619/100 -f 8/1099/73 9/846/73 448/848/73 -f 209/1097/101 210/849/101 474/851/101 -f 152/1001/42 153/647/42 317/852/42 -f 72/928/102 73/853/102 462/855/102 -f 99/790/103 100/856/103 319/791/103 -f 19/913/104 20/857/104 523/859/104 -f 245/1027/31 246/860/31 375/862/31 -f 198/1108/99 199/863/99 545/864/99 -f 177/798/37 178/865/37 300/799/37 -f 217/1102/105 218/867/105 520/869/105 -f 136/640/106 137/870/106 321/641/106 -f 185/822/56 186/872/56 306/823/56 -f 34/812/56 35/874/56 512/813/56 -f 87/965/107 88/875/107 316/876/107 -f 115/814/108 116/877/108 323/815/108 -f 27/933/109 28/878/109 295/880/109 -f 104/768/110 105/881/110 290/769/110 -f 255/757/18 256/882/18 298/758/18 -f 201/569/19 202/883/19 394/570/19 -f 170/766/104 171/885/104 453/767/104 -f 123/827/111 124/886/111 326/828/111 -f 50/829/19 51/888/19 439/830/19 -f 155/981/112 156/889/112 419/891/112 -f 58/834/113 59/892/113 387/835/113 -f 95/995/114 96/893/114 456/895/114 -f 47/990/99 48/896/99 296/897/99 -f 272/685/27 273/688/27 437/898/27 -f 220/969/71 221/583/71 330/900/71 -f 193/951/66 194/901/66 285/903/66 -f 162/825/105 163/904/105 458/826/105 -f 246/860/50 247/905/50 451/861/50 -f 147/975/115 148/907/115 428/909/115 -f 79/1022/116 80/910/116 459/911/116 -f 39/574/31 40/912/31 336/575/31 -f 18/964/48 19/913/48 355/914/48 -f 461/1109/91 206/820/91 317/915/91 -f 212/978/76 213/916/76 338/917/76 -f 11/956/105 12/918/105 524/920/105 -f 103/1065/117 56/921/117 388/922/117 -f 178/878/109 179/923/109 332/879/109 -f 204/1110/118 205/564/118 340/925/118 -f 222/584/97 223/926/97 546/585/97 -f 96/893/119 97/927/119 345/894/119 -f 71/1033/120 72/928/120 364/929/120 -f 139/993/121 140/930/121 471/932/121 -f 26/977/166 27/933/166 359/934/166 -f 63/635/122 64/935/122 344/636/122 -f 230/831/75 231/936/75 446/832/75 -f 186/872/11 187/938/11 464/873/11 -f 112/1057/123 113/939/123 527/940/123 -f 267/1062/65 268/941/65 363/943/65 -f 236/660/13 237/944/13 349/661/13 -f 120/870/124 121/945/124 530/946/124 -f 247/905/77 248/947/77 376/906/77 -f 109/907/125 110/948/125 413/950/125 -f 192/674/77 193/951/77 351/675/77 -f 238/760/86 239/952/86 282/761/86 -f 44/1090/126 45/954/126 409/955/126 -f 10/1006/93 11/956/93 369/957/93 -f 3/980/101 4/958/101 449/960/101 -f 196/1036/78 197/961/78 353/962/78 -f 231/936/83 232/963/83 501/937/83 -f 17/838/90 18/964/90 354/839/90 -f 86/704/127 87/965/127 275/705/127 -f 131/1005/128 132/966/128 473/968/128 -f 219/1015/53 220/969/53 370/970/53 -f 239/952/88 240/971/88 457/953/88 -f 101/609/129 102/972/129 416/610/129 -f 167/566/97 168/974/97 377/567/97 -f 146/1066/130 147/975/130 467/976/130 -f 25/770/83 26/977/83 358/771/83 -f 211/1030/63 212/978/63 392/979/63 -f 2/818/65 3/980/65 381/819/65 -f 154/1070/101 155/981/101 468/982/101 -f 281/1111/27 264/983/27 497/985/27 -f 172/580/34 173/986/34 309/581/34 -f 117/629/132 118/988/132 418/630/132 -f 266/788/42 267/990/42 362/789/42 -f 36/548/12 37/991/12 307/549/12 -f 138/1078/133 139/993/133 470/994/133 -f 94/752/134 95/995/134 287/753/134 -f 203/1112/27 204/996/27 378/998/27 -f 259/852/118 260/999/118 386/1001/118 -f 125/657/135 126/1002/135 421/658/135 -f 81/795/136 82/1004/136 396/796/136 -f 130/557/137 131/1005/137 472/558/137 -f 9/865/55 10/1006/55 368/866/55 -f 89/801/138 90/1007/138 525/802/138 -f 45/954/78 46/1008/78 475/613/78 -f 228/749/43 229/1009/43 371/750/43 -f 52/1113/27 53/1010/27 367/898/27 -f 55/1018/91 1/1012/91 526/1014/91 -f 218/867/45 219/1015/45 477/868/45 -f 252/782/16 253/1016/16 373/783/16 -f 60/594/139 61/985/139 278/595/139 -f 164/654/53 165/1019/53 504/655/53 -f 37/991/81 38/1021/81 478/992/81 -f 78/785/140 79/1022/140 294/786/140 -f 73/1032/141 74/1023/141 315/1024/141 -f 273/1114/91 262/1025/91 480/537/91 -f 244/793/163 245/1027/163 379/794/163 -f 188/679/81 189/1028/81 284/680/81 -f 210/849/112 211/1030/112 481/850/112 -f 1/600/42 2/1031/42 380/601/42 -f 70/809/142 71/1033/142 302/810/142 -f 233/659/109 234/1034/109 297/1035/109 -f 202/883/15 203/633/15 310/884/15 -f 195/1069/126 196/1036/126 335/1037/126 -f 173/986/43 174/1038/43 383/987/43 -f 175/1101/75 176/1040/75 542/1041/75 -f 20/857/22 21/1042/22 538/858/22 -f 84/545/167 85/1043/167 385/546/167 -f 180/709/47 181/1045/47 507/710/47 -f 53/727/118 54/1046/118 463/728/118 -f 258/996/27 259/1017/27 357/1048/27 -f 183/592/86 184/1049/86 422/593/86 -f 28/886/165 29/1050/165 539/887/165 -f 65/744/144 66/1051/144 328/745/144 -f 61/819/145 62/1052/145 483/915/145 -f 234/711/165 235/1053/165 485/1054/165 -f 225/669/104 226/1055/104 533/670/104 -f 111/1059/146 112/1057/146 519/1058/146 -f 110/948/147 111/1059/147 346/949/147 -f 12/918/45 13/1060/45 540/919/45 -f 23/649/95 24/1061/95 487/650/95 -f 265/792/65 266/1062/65 497/1063/65 -f 156/889/63 157/1064/63 528/890/63 -f 102/972/148 103/1065/148 452/973/148 -f 145/844/149 146/1066/149 314/845/149 -f 148/1115/150 149/1067/150 343/1068/150 -f 194/901/151 195/1069/151 423/902/151 -f 153/1116/65 154/1070/65 318/1071/65 -f 140/930/152 141/1072/152 529/931/152 -f 92/577/153 93/1073/153 395/578/153 -f 118/988/154 119/1074/154 469/989/154 -f 241/701/11 242/1076/11 534/702/11 -f 119/1074/155 120/870/155 522/1075/155 -f 31/715/25 32/1077/25 489/716/25 -f 137/870/156 138/1078/156 322/871/156 -f 127/1087/157 128/1079/157 445/1081/157 -f 268/1111/27 269/598/27 490/983/27 -f 159/663/73 160/1082/73 397/664/73 -f 128/1079/158 129/1084/158 320/1080/158 -f 226/1055/22 227/1085/22 491/1056/22 -f 165/1019/71 166/1086/71 400/1020/71 -f 126/1002/159 127/1087/159 361/1003/159 -f 249/730/151 250/1088/151 283/731/151 -f 43/836/151 44/1090/151 415/837/151 -f 76/603/160 77/1091/160 325/604/160 -f 15/747/23 16/1092/23 492/748/23 -f 132/966/161 133/1093/161 531/967/161 -f 250/1088/126 251/1094/126 411/1089/126 -f 189/1028/163 190/1095/163 402/1029/163 -f 4/958/112 5/1096/112 541/959/112 -f 208/924/65 209/1097/65 425/1098/65 -f 7/773/24 8/1099/24 494/774/24 -f 68/621/162 69/1100/162 404/622/162 -f 174/1038/95 175/1101/95 384/1039/95 -f 216/698/93 217/1102/93 427/699/93 diff --git a/src/main/resources/assets/hbm/models/machines/acidizer.obj b/src/main/resources/assets/hbm/models/machines/acidizer.obj new file mode 100644 index 000000000..52f1e55f4 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/acidizer.obj @@ -0,0 +1,3806 @@ +# Blender v2.79 (sub 0) OBJ File: 'acidizer.blend' +# www.blender.org +o Fluid +v 1.062500 2.375000 0.375000 +v 1.062500 2.375000 -0.375000 +v 1.062500 4.625000 0.375000 +v 1.062500 4.625000 -0.375000 +v -1.062500 2.375000 -0.374999 +v -1.062500 2.375000 0.375001 +v -1.062500 4.625000 -0.374999 +v -1.062500 4.625000 0.375001 +v 0.374999 2.375000 -1.062500 +v -0.375000 2.375000 -1.062500 +v 0.374999 4.624999 -1.062500 +v -0.375000 4.624999 -1.062500 +v -0.374999 2.375000 1.062500 +v 0.375001 2.375000 1.062500 +v -0.374999 4.624999 1.062500 +v 0.375001 4.624999 1.062500 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 4/1/1 1/2/1 2/3/1 +f 8/4/2 5/5/2 6/6/2 +f 12/7/3 9/8/3 10/9/3 +f 16/10/4 13/11/4 14/12/4 +f 4/1/1 3/13/1 1/2/1 +f 8/4/2 7/14/2 5/5/2 +f 12/7/3 11/15/3 9/8/3 +f 16/10/4 15/16/4 13/11/4 +o Spinner +v 0.000000 6.250000 -0.250000 +v -0.176777 6.250000 -0.176777 +v -0.250000 6.250000 0.000000 +v -0.176777 6.250000 0.176777 +v 0.000000 6.250000 0.250000 +v 0.176777 6.250000 0.176777 +v 0.250000 6.250000 0.000000 +v 0.176777 6.250000 -0.176777 +v 0.000000 6.625000 -0.250000 +v -0.176777 6.625000 -0.176777 +v -0.250000 6.625000 0.000000 +v -0.176777 6.625000 0.176777 +v 0.000000 6.625000 0.250000 +v 0.176777 6.625000 0.176777 +v 0.250000 6.625000 0.000000 +v 0.176777 6.625000 -0.176777 +v -0.062500 6.250000 0.562500 +v 0.062500 6.250000 0.562500 +v -0.062500 6.250000 -0.562500 +v 0.062500 6.250000 -0.562500 +v -0.062500 6.500000 -0.562500 +v -0.062500 6.500000 0.562500 +v 0.062500 6.500000 0.562500 +v 0.062500 6.500000 -0.562500 +v 0.000000 1.875000 -0.500000 +v -0.353553 1.875000 -0.353553 +v -0.500000 1.875000 0.000000 +v -0.353553 1.875000 0.353553 +v 0.000000 1.875000 0.500000 +v 0.353553 1.875000 0.353553 +v 0.500000 1.875000 0.000000 +v 0.353553 1.875000 -0.353553 +v 0.000000 5.125000 -0.500000 +v -0.353553 5.125000 -0.353553 +v -0.500000 5.125000 0.000000 +v -0.353553 5.125000 0.353553 +v 0.000000 5.125000 0.500000 +v 0.353553 5.125000 0.353553 +v 0.500000 5.125000 0.000000 +v 0.353553 5.125000 -0.353553 +v -0.062500 1.875000 0.750000 +v 0.062500 1.875000 0.750000 +v -0.062500 1.875000 -0.750000 +v 0.062500 1.875000 -0.750000 +v -0.062500 5.125000 0.750000 +v 0.062500 5.125000 0.750000 +v -0.062500 5.125000 -0.750000 +v 0.062500 5.125000 -0.750000 +vt 0.485065 0.898876 +vt 0.505000 0.876477 +vt 0.524935 0.898876 +vt 0.480000 0.831461 +vt 0.570000 0.842697 +vt 0.480000 0.842697 +vt 0.570000 0.808989 +vt 0.480000 0.808989 +vt 0.570000 0.808989 +vt 0.480000 0.831461 +vt 0.480000 0.808989 +vt 0.580000 0.808989 +vt 0.570000 0.831461 +vt 0.580000 0.808989 +vt 0.570000 0.831461 +vt 0.610000 0.808989 +vt 0.600000 0.516854 +vt 0.610000 0.516854 +vt 0.610000 0.808989 +vt 0.600000 0.516854 +vt 0.610000 0.516854 +vt 0.600000 0.808989 +vt 0.480000 0.516854 +vt 0.600000 0.808989 +vt 0.480000 0.516854 +vt 0.519096 0.914715 +vt 0.505000 0.921275 +vt 0.490904 0.914715 +vt 0.490904 0.883038 +vt 0.519096 0.883038 +vt 0.580000 0.831461 +vt 0.580000 0.831461 +vt 0.480000 0.808989 +vt 0.480000 0.808989 +vt 0.730000 0.887640 +vt 0.715000 0.921348 +vt 0.715000 0.887640 +vt 0.700000 0.887640 +vt 0.685000 0.921348 +vt 0.685000 0.887640 +vt 0.670000 0.887640 +vt 0.655000 0.921348 +vt 0.655000 0.887640 +vt 0.760000 0.887640 +vt 0.745000 0.921348 +vt 0.745000 0.887640 +vt 0.730000 0.921348 +vt 0.700000 0.921348 +vt 0.670000 0.921348 +vt 0.775000 0.887640 +vt 0.760000 0.921348 +vt 0.640000 0.516854 +vt 0.610000 0.808989 +vt 0.610000 0.516854 +vt 0.850000 0.516854 +vt 0.820000 0.808989 +vt 0.820000 0.516854 +vt 0.790000 0.516854 +vt 0.760000 0.808989 +vt 0.760000 0.516854 +vt 0.730000 0.516854 +vt 0.700000 0.808989 +vt 0.700000 0.516854 +vt 0.670000 0.516854 +vt 0.640000 0.808989 +vt 0.790000 0.808989 +vt 0.730000 0.808989 +vt 0.670000 0.808989 +vt 0.775000 0.921348 +vt 0.850000 0.808989 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.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.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 29/17/5 31/18/5 25/19/5 +f 39/20/5 37/21/5 38/22/5 +f 36/23/6 39/20/6 34/24/6 +f 33/25/7 37/26/7 35/27/7 +f 35/28/8 40/29/8 36/23/8 +f 34/30/9 38/31/9 33/25/9 +f 63/32/8 60/33/8 59/34/8 +f 62/35/9 57/36/9 58/37/9 +f 64/38/6 58/39/6 60/33/6 +f 61/40/7 59/41/7 57/36/7 +f 25/19/5 26/42/5 27/43/5 +f 27/43/5 28/44/5 29/17/5 +f 29/17/5 30/45/5 31/18/5 +f 31/18/5 32/46/5 25/19/5 +f 25/19/5 27/43/5 29/17/5 +f 39/20/5 40/29/5 37/21/5 +f 36/23/6 40/29/6 39/20/6 +f 33/25/7 38/31/7 37/26/7 +f 35/28/8 37/47/8 40/29/8 +f 34/30/9 39/48/9 38/31/9 +f 63/32/8 64/38/8 60/33/8 +f 62/35/9 61/40/9 57/36/9 +f 64/38/6 62/49/6 58/39/6 +f 61/40/7 63/50/7 59/41/7 +s 1 +f 24/51/10 31/52/6 23/53/6 +f 22/54/11 29/55/9 21/56/9 +f 20/57/12 27/58/7 19/59/7 +f 18/60/13 25/61/8 17/62/8 +f 17/62/8 32/63/10 24/51/10 +f 23/53/6 30/64/11 22/54/11 +f 21/56/9 28/65/12 20/57/12 +f 19/66/7 26/67/13 18/60/13 +f 42/68/13 49/69/8 41/70/8 +f 41/71/8 56/72/10 48/73/10 +f 47/74/6 54/75/11 46/76/11 +f 45/77/9 52/78/12 44/79/12 +f 43/80/7 50/81/13 42/68/13 +f 48/73/10 55/82/6 47/74/6 +f 46/76/11 53/83/9 45/77/9 +f 44/79/12 51/84/7 43/80/7 +f 24/51/10 32/63/10 31/52/6 +f 22/54/11 30/64/11 29/55/9 +f 20/57/12 28/65/12 27/58/7 +f 18/60/13 26/67/13 25/61/8 +f 17/62/8 25/61/8 32/63/10 +f 23/53/6 31/52/6 30/64/11 +f 21/56/9 29/55/9 28/65/12 +f 19/66/7 27/85/7 26/67/13 +f 42/68/13 50/81/13 49/69/8 +f 41/71/8 49/86/8 56/72/10 +f 47/74/6 55/82/6 54/75/11 +f 45/77/9 53/83/9 52/78/12 +f 43/80/7 51/84/7 50/81/13 +f 48/73/10 56/72/10 55/82/6 +f 46/76/11 54/75/11 53/83/9 +f 44/79/12 52/78/12 51/84/7 +o Body +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -1.250000 1.000000 0.500000 +v 1.250000 1.000000 0.500000 +v -1.250000 1.000000 -0.500000 +v 1.250000 1.000000 -0.500000 +v 0.500000 1.000000 1.250000 +v 0.500000 1.000000 -1.250000 +v -0.500000 1.000000 1.250000 +v -0.500000 1.000000 -1.250000 +v -1.250000 1.875000 0.500000 +v 1.250000 1.875000 0.500000 +v -1.250000 1.875000 -0.500000 +v 1.250000 1.875000 -0.500000 +v 0.500000 1.875000 1.250000 +v 0.500000 1.875000 -1.250000 +v -0.500000 1.875000 1.250000 +v -0.500000 1.875000 -1.250000 +v -1.312500 1.875000 0.500000 +v 1.312500 1.875000 0.500000 +v -1.312500 1.875000 -0.500000 +v 1.312500 1.875000 -0.500000 +v 0.500000 1.875000 1.312500 +v 0.500000 1.875000 -1.312500 +v -0.500000 1.875000 1.312500 +v -0.500000 1.875000 -1.312500 +v -1.312500 2.125000 0.500000 +v 1.312500 2.125000 0.500000 +v -1.312500 2.125000 -0.500000 +v 1.312500 2.125000 -0.500000 +v 0.500000 2.125000 1.312500 +v 0.500000 2.125000 -1.312500 +v -0.500000 2.125000 1.312500 +v -0.500000 2.125000 -1.312500 +v -1.250000 2.125000 0.500000 +v 1.250000 2.125000 0.500000 +v -1.250000 2.125000 -0.500000 +v 1.250000 2.125000 -0.500000 +v 0.500000 2.125000 1.250000 +v 0.500000 2.125000 -1.250000 +v -0.500000 2.125000 1.250000 +v -0.500000 2.125000 -1.250000 +v -1.250000 6.000000 0.500000 +v 1.250000 6.000000 0.500000 +v -1.250000 6.000000 -0.500000 +v 1.250000 6.000000 -0.500000 +v 0.500000 6.000000 1.250000 +v 0.500000 6.000000 -1.250000 +v -0.500000 6.000000 1.250000 +v -0.500000 6.000000 -1.250000 +v -1.250000 4.875000 0.500000 +v 1.250000 4.875000 0.500000 +v -1.250000 4.875000 -0.500000 +v 1.250000 4.875000 -0.500000 +v 0.500000 4.875000 1.250000 +v 0.500000 4.875000 -1.250000 +v -0.500000 4.875000 1.250000 +v -0.500000 4.875000 -1.250000 +v -1.312500 4.875000 0.500000 +v 1.312500 4.875000 0.500000 +v -1.312500 4.875000 -0.500000 +v 1.312500 4.875000 -0.500000 +v 0.500000 4.875000 1.312500 +v 0.500000 4.875000 -1.312500 +v -0.500000 4.875000 1.312500 +v -0.500000 4.875000 -1.312500 +v -1.312500 5.125000 0.500000 +v 1.312500 5.125000 0.500000 +v -1.312500 5.125000 -0.500000 +v 1.312500 5.125000 -0.500000 +v 0.500000 5.125000 1.312500 +v 0.500000 5.125000 -1.312500 +v -0.500000 5.125000 1.312500 +v -0.500000 5.125000 -1.312500 +v -1.250000 5.125000 0.500000 +v 1.250000 5.125000 0.500000 +v -1.250000 5.125000 -0.500000 +v 1.250000 5.125000 -0.500000 +v 0.500000 5.125000 1.250000 +v 0.500000 5.125000 -1.250000 +v -0.500000 5.125000 1.250000 +v -0.500000 5.125000 -1.250000 +v -0.312500 6.000000 0.750000 +v 0.312500 6.000000 0.750000 +v -0.312500 6.000000 -0.750000 +v 0.312500 6.000000 -0.750000 +v 0.750000 6.000000 0.312500 +v 0.750000 6.000000 -0.312500 +v -0.750000 6.000000 0.312500 +v -0.750000 6.000000 -0.312500 +v -0.312500 6.500000 0.750000 +v 0.312500 6.500000 0.750000 +v 0.312500 6.500000 -0.750000 +v -0.312500 6.500000 -0.750000 +v 0.750000 6.500000 0.312500 +v 0.750000 6.500000 -0.312500 +v -0.750000 6.500000 -0.312500 +v -0.750000 6.500000 0.312500 +v -0.250000 6.500000 0.625000 +v 0.250000 6.500000 0.625000 +v -0.250000 6.500000 -0.625000 +v 0.250000 6.500000 -0.625000 +v 0.625000 6.500000 0.250000 +v 0.625000 6.500000 -0.250000 +v -0.625000 6.500000 0.250000 +v -0.625000 6.500000 -0.250000 +v -0.250000 6.250000 0.625000 +v 0.250000 6.250000 0.625000 +v 0.250000 6.250000 -0.625000 +v -0.250000 6.250000 -0.625000 +v 0.625000 6.250000 0.250000 +v 0.625000 6.250000 -0.250000 +v -0.625000 6.250000 -0.250000 +v -0.625000 6.250000 0.250000 +v -0.375000 2.375000 1.250000 +v 0.375000 2.375000 1.250000 +v -0.375000 4.625000 1.250000 +v 0.375000 4.625000 1.250000 +v 0.375000 2.375000 -1.250000 +v -0.375000 2.375000 -1.250000 +v 0.375000 4.625000 -1.250000 +v -0.375000 4.625000 -1.250000 +v 1.250000 2.375000 0.375000 +v 1.250000 2.375000 -0.375000 +v 1.250000 4.625000 0.375000 +v 1.250000 4.625000 -0.375000 +v -1.250000 2.375000 -0.375000 +v -1.250000 2.375000 0.375000 +v -1.250000 4.625000 -0.375000 +v -1.250000 4.625000 0.375000 +v -0.375000 2.375000 0.937500 +v 0.375000 2.375000 0.937500 +v -0.375000 2.375000 -0.937500 +v 0.375000 2.375000 -0.937500 +v -0.375000 4.625000 0.937500 +v 0.375000 4.625000 0.937500 +v -0.375000 4.625000 -0.937500 +v 0.375000 4.625000 -0.937500 +v -0.937500 2.375000 -0.375000 +v -0.937500 2.375000 0.375000 +v -0.937500 4.625000 -0.375000 +v -0.937500 4.625000 0.375000 +v 0.937500 2.375000 0.375000 +v 0.937500 2.375000 -0.375000 +v 0.937500 4.625000 0.375000 +v 0.937500 4.625000 -0.375000 +v -0.375000 1.875000 0.937500 +v 0.375000 1.875000 0.937500 +v -0.375000 1.875000 -0.937500 +v 0.375000 1.875000 -0.937500 +v -0.937500 1.875000 -0.375000 +v -0.937500 1.875000 0.375000 +v 0.937500 1.875000 0.375000 +v 0.937500 1.875000 -0.375000 +v -0.375000 5.125000 0.937500 +v 0.375000 5.125000 0.937500 +v -0.375000 5.125000 -0.937500 +v 0.375000 5.125000 -0.937500 +v -0.937500 5.125000 -0.375000 +v -0.937500 5.125000 0.375000 +v 0.937500 5.125000 0.375000 +v 0.937500 5.125000 -0.375000 +v 1.281631 1.000000 0.839689 +v 1.193243 1.000000 0.803078 +v 1.104854 1.000000 0.839689 +v 1.068243 1.000000 0.928078 +v 1.104854 1.000000 1.016466 +v 1.193243 1.000000 1.053077 +v 1.281631 1.000000 1.016466 +v 1.318243 1.000000 0.928078 +v 1.281631 6.000000 0.839689 +v 1.193243 6.000000 0.803078 +v 1.104854 6.000000 0.839689 +v 1.068243 6.000000 0.928078 +v 1.104854 6.000000 1.016466 +v 1.193243 6.000000 1.053077 +v 1.281631 6.000000 1.016466 +v 1.318243 6.000000 0.928078 +v 1.255743 6.088388 0.813801 +v 1.185660 6.025888 0.795495 +v 1.060660 6.025888 0.920495 +v 1.078966 6.088388 0.990578 +v 1.149049 6.150888 1.008883 +v 1.229854 6.176776 0.964689 +v 1.274049 6.150888 0.883883 +v 1.193243 6.125000 0.751301 +v 1.167354 6.036611 0.777189 +v 1.042355 6.036611 0.902189 +v 1.016466 6.125000 0.928078 +v 1.042355 6.213388 0.902189 +v 1.104854 6.250000 0.839689 +v 1.167354 6.213388 0.777189 +v 0.662913 6.000000 0.397748 +v 0.751301 6.125000 0.309359 +v 0.725412 6.036611 0.335248 +v 0.600413 6.036611 0.460248 +v 0.574524 6.125000 0.486136 +v 0.600413 6.213388 0.460248 +v 0.662912 6.250000 0.397748 +v 0.725412 6.213388 0.335248 +v 1.016466 1.000000 1.104855 +v 0.928078 1.000000 1.068243 +v 0.839689 1.000000 1.104855 +v 0.803078 1.000000 1.193243 +v 0.839689 1.000000 1.281631 +v 0.928078 1.000000 1.318243 +v 1.016466 1.000000 1.281631 +v 1.053078 1.000000 1.193243 +v 1.016466 6.000000 1.104855 +v 0.928078 6.000000 1.068243 +v 0.839689 6.000000 1.104855 +v 0.803078 6.000000 1.193243 +v 0.839689 6.000000 1.281631 +v 0.928078 6.000000 1.318243 +v 1.016466 6.000000 1.281631 +v 1.053078 6.000000 1.193243 +v 0.990578 6.088388 1.078966 +v 0.920495 6.025888 1.060660 +v 0.795495 6.025888 1.185660 +v 0.813801 6.088388 1.255743 +v 0.883884 6.150888 1.274049 +v 0.964689 6.176776 1.229855 +v 1.008883 6.150888 1.149049 +v 0.928078 6.125000 1.016466 +v 0.902189 6.036611 1.042354 +v 0.777189 6.036611 1.167354 +v 0.751301 6.125000 1.193243 +v 0.777189 6.213388 1.167354 +v 0.839689 6.250000 1.104854 +v 0.902189 6.213388 1.042354 +v 0.397748 6.000000 0.662912 +v 0.486136 6.125000 0.574524 +v 0.460248 6.036611 0.600412 +v 0.335248 6.036611 0.725412 +v 0.309359 6.125000 0.751301 +v 0.335248 6.213388 0.725412 +v 0.397748 6.250000 0.662912 +v 0.460248 6.213388 0.600412 +v 1.125000 1.000000 0.750000 +v 0.937500 1.000000 0.800241 +v 0.800241 1.000000 0.937500 +v 0.750000 1.000000 1.125000 +v 0.800241 1.000000 1.312500 +v 0.937500 1.000000 1.449759 +v 1.125000 1.000000 1.500000 +v 1.312500 1.000000 1.449759 +v 1.449759 1.000000 1.312500 +v 1.500000 1.000000 1.125000 +v 1.449760 1.000000 0.937500 +v 1.312500 1.000000 0.800241 +v 1.125000 2.375000 0.750000 +v 0.937500 2.375000 0.800241 +v 0.800241 2.375000 0.937500 +v 0.750000 2.375000 1.125000 +v 0.800241 2.375000 1.312500 +v 0.937500 2.375000 1.449759 +v 1.125000 2.375000 1.500000 +v 1.312500 2.375000 1.449759 +v 1.449759 2.375000 1.312500 +v 1.500000 2.375000 1.125000 +v 1.449760 2.375000 0.937500 +v 1.312500 2.375000 0.800241 +v 1.125000 2.699759 0.937500 +v 1.125000 2.562500 0.800241 +v 1.218750 2.699759 0.962620 +v 1.287380 2.562500 0.843750 +v 1.125000 2.750000 1.125000 +v 1.287380 2.699759 1.031250 +v 1.406250 2.562500 0.962620 +v 1.312500 2.699759 1.125000 +v 1.449759 2.562500 1.125000 +v 1.287380 2.699759 1.218750 +v 1.406250 2.562500 1.287380 +v 1.218750 2.699759 1.287380 +v 1.287380 2.562500 1.406250 +v 1.125000 2.699759 1.312500 +v 1.125000 2.562500 1.449759 +v 1.031250 2.699759 1.287380 +v 0.962620 2.562500 1.406250 +v 0.962620 2.699759 1.218750 +v 0.843750 2.562500 1.287380 +v 0.937500 2.699759 1.125000 +v 0.800241 2.562500 1.125000 +v 0.962620 2.699759 1.031250 +v 0.843750 2.562500 0.962620 +v 1.031250 2.699759 0.962620 +v 0.962620 2.562500 0.843750 +v 1.458408 4.375000 0.928078 +v 0.928078 4.375000 1.458407 +v 1.458408 3.625000 0.928078 +v 0.928078 3.625000 1.458407 +v 1.104854 4.375000 0.574524 +v 0.574524 4.375000 1.104854 +v 1.104854 3.625000 0.574524 +v 0.574524 3.625000 1.104854 +v -1.125000 2.375000 -0.375000 +v -1.125000 2.375000 0.375000 +v -1.125000 4.625000 -0.375000 +v -1.125000 4.625000 0.375000 +v 1.125000 2.375000 0.375000 +v 1.125000 2.375000 -0.375000 +v 1.125000 4.625000 0.375000 +v 1.125000 4.625000 -0.375000 +v -0.375000 2.375000 1.125000 +v 0.375000 2.375000 1.125000 +v -0.375000 4.624999 1.125000 +v 0.375000 4.624999 1.125000 +v 0.375000 2.375000 -1.125000 +v -0.375000 2.375000 -1.125000 +v 0.375000 4.624999 -1.125000 +v -0.375000 4.624999 -1.125000 +v 0.312500 1.000000 1.500000 +v 0.437500 1.000000 1.500000 +v 0.312500 1.000000 1.375000 +v 0.437500 1.000000 1.375000 +v 0.312500 6.125000 1.375000 +v 0.312500 6.125000 1.500000 +v 0.437500 6.125000 1.500000 +v 0.437500 6.125000 1.375000 +v 0.312500 6.250000 1.375000 +v 0.437500 6.250000 1.375000 +v 0.437500 6.125000 1.000000 +v 0.312500 6.125000 1.000000 +v 0.437500 6.250000 1.000000 +v 0.312500 6.250000 1.000000 +v 0.437500 6.125000 0.875000 +v 0.312500 6.125000 0.875000 +v 0.437500 6.000000 1.000000 +v 0.312500 6.000000 1.000000 +v 0.437500 6.000000 0.875000 +v 0.312500 6.000000 0.875000 +v -0.312500 1.312500 1.468750 +v 0.312500 1.312500 1.468750 +v -0.312500 1.312500 1.406250 +v 0.312500 1.312500 1.406250 +v -0.312500 1.437500 1.406250 +v -0.312500 1.437500 1.468750 +v 0.312500 1.437500 1.468750 +v 0.312500 1.437500 1.406250 +v -0.437500 1.000000 1.500000 +v -0.312500 1.000000 1.500000 +v -0.437500 1.000000 1.375000 +v -0.312500 1.000000 1.375000 +v -0.437500 6.125000 1.375000 +v -0.437500 6.125000 1.500000 +v -0.312500 6.125000 1.500000 +v -0.312500 6.125000 1.375000 +v -0.437500 6.250000 1.375000 +v -0.312500 6.250000 1.375000 +v -0.312500 6.125000 1.000000 +v -0.437500 6.125000 1.000000 +v -0.312500 6.250000 1.000000 +v -0.437500 6.250000 1.000000 +v -0.312500 6.125000 0.875000 +v -0.437500 6.125000 0.875000 +v -0.312500 6.000000 1.000000 +v -0.437500 6.000000 1.000000 +v -0.312500 6.000000 0.875000 +v -0.437500 6.000000 0.875000 +v -0.312500 1.812500 1.468750 +v 0.312500 1.812500 1.468750 +v -0.312500 1.812500 1.406250 +v 0.312500 1.812500 1.406250 +v -0.312500 1.937500 1.406250 +v -0.312500 1.937500 1.468750 +v 0.312500 1.937500 1.468750 +v 0.312500 1.937500 1.406250 +v -0.312500 2.312500 1.468750 +v 0.312500 2.312500 1.468750 +v -0.312500 2.312500 1.406250 +v 0.312500 2.312500 1.406250 +v -0.312500 2.437500 1.406250 +v -0.312500 2.437500 1.468750 +v 0.312500 2.437500 1.468750 +v 0.312500 2.437500 1.406250 +v -0.312500 2.812500 1.468750 +v 0.312500 2.812500 1.468750 +v -0.312500 2.812500 1.406250 +v 0.312500 2.812500 1.406250 +v -0.312500 2.937500 1.406250 +v -0.312500 2.937500 1.468750 +v 0.312500 2.937500 1.468750 +v 0.312500 2.937500 1.406250 +v -0.312500 3.312500 1.468750 +v 0.312500 3.312500 1.468750 +v -0.312500 3.312500 1.406250 +v 0.312500 3.312500 1.406250 +v -0.312500 3.437500 1.406250 +v -0.312500 3.437500 1.468750 +v 0.312500 3.437500 1.468750 +v 0.312500 3.437500 1.406250 +v -0.312500 3.812500 1.468750 +v 0.312500 3.812500 1.468750 +v -0.312500 3.812500 1.406250 +v 0.312500 3.812500 1.406250 +v -0.312500 3.937500 1.406250 +v -0.312500 3.937500 1.468750 +v 0.312500 3.937500 1.468750 +v 0.312500 3.937500 1.406250 +v -0.312500 4.312500 1.468750 +v 0.312500 4.312500 1.468750 +v -0.312500 4.312500 1.406250 +v 0.312500 4.312500 1.406250 +v -0.312500 4.437500 1.406250 +v -0.312500 4.437500 1.468750 +v 0.312500 4.437500 1.468750 +v 0.312500 4.437500 1.406250 +v -0.312500 4.812500 1.468750 +v 0.312500 4.812500 1.468750 +v -0.312500 4.812500 1.406250 +v 0.312500 4.812500 1.406250 +v -0.312500 4.937500 1.406250 +v -0.312500 4.937500 1.468750 +v 0.312500 4.937500 1.468750 +v 0.312500 4.937500 1.406250 +v -0.312500 5.312500 1.468750 +v 0.312500 5.312500 1.468750 +v -0.312500 5.312500 1.406250 +v 0.312500 5.312500 1.406250 +v -0.312500 5.437500 1.406250 +v -0.312500 5.437500 1.468750 +v 0.312500 5.437500 1.468750 +v 0.312500 5.437500 1.406250 +v -0.312500 5.812500 1.468750 +v 0.312500 5.812500 1.468750 +v -0.312500 5.812500 1.406250 +v 0.312500 5.812500 1.406250 +v -0.312500 5.937500 1.406250 +v -0.312500 5.937500 1.468750 +v 0.312500 5.937500 1.468750 +v 0.312500 5.937500 1.406250 +v 1.125000 1.000000 -1.500000 +v 0.937500 1.000000 -1.449759 +v 0.800241 1.000000 -1.312500 +v 0.750000 1.000000 -1.125000 +v 0.800241 1.000000 -0.937500 +v 0.937500 1.000000 -0.800241 +v 1.125000 1.000000 -0.750000 +v 1.312500 1.000000 -0.800241 +v 1.449759 1.000000 -0.937500 +v 1.500000 1.000000 -1.125000 +v 1.449760 1.000000 -1.312500 +v 1.312500 1.000000 -1.449759 +v 1.125000 2.375000 -1.500000 +v 0.937500 2.375000 -1.449759 +v 0.800241 2.375000 -1.312500 +v 0.750000 2.375000 -1.125000 +v 0.800241 2.375000 -0.937500 +v 0.937500 2.375000 -0.800241 +v 1.125000 2.375000 -0.750000 +v 1.312500 2.375000 -0.800241 +v 1.449759 2.375000 -0.937500 +v 1.500000 2.375000 -1.125000 +v 1.449760 2.375000 -1.312500 +v 1.312500 2.375000 -1.449759 +v 1.125000 2.699759 -1.312500 +v 1.125000 2.562500 -1.449759 +v 1.218750 2.699759 -1.287380 +v 1.287380 2.562500 -1.406250 +v 1.125000 2.750000 -1.125000 +v 1.287380 2.699759 -1.218750 +v 1.406250 2.562500 -1.287380 +v 1.312500 2.699759 -1.125000 +v 1.449759 2.562500 -1.125000 +v 1.287380 2.699759 -1.031250 +v 1.406250 2.562500 -0.962620 +v 1.218750 2.699759 -0.962620 +v 1.287380 2.562500 -0.843750 +v 1.125000 2.699759 -0.937500 +v 1.125000 2.562500 -0.800241 +v 1.031250 2.699759 -0.962620 +v 0.962620 2.562500 -0.843750 +v 0.962620 2.699759 -1.031250 +v 0.843750 2.562500 -0.962620 +v 0.937500 2.699759 -1.125000 +v 0.800241 2.562500 -1.125000 +v 0.962620 2.699759 -1.218750 +v 0.843750 2.562500 -1.287380 +v 1.031250 2.699759 -1.287380 +v 0.962620 2.562500 -1.406250 +v -1.125000 1.000000 0.750000 +v -1.312500 1.000000 0.800241 +v -1.449759 1.000000 0.937500 +v -1.500000 1.000000 1.125000 +v -1.449759 1.000000 1.312500 +v -1.312500 1.000000 1.449759 +v -1.125000 1.000000 1.500000 +v -0.937500 1.000000 1.449759 +v -0.800241 1.000000 1.312500 +v -0.750000 1.000000 1.125000 +v -0.800240 1.000000 0.937500 +v -0.937500 1.000000 0.800241 +v -1.125000 2.375000 0.750000 +v -1.312500 2.375000 0.800241 +v -1.449759 2.375000 0.937500 +v -1.500000 2.375000 1.125000 +v -1.449759 2.375000 1.312500 +v -1.312500 2.375000 1.449759 +v -1.125000 2.375000 1.500000 +v -0.937500 2.375000 1.449759 +v -0.800241 2.375000 1.312500 +v -0.750000 2.375000 1.125000 +v -0.800240 2.375000 0.937500 +v -0.937500 2.375000 0.800241 +v -1.125000 2.699759 0.937500 +v -1.125000 2.562500 0.800241 +v -1.031250 2.699759 0.962620 +v -0.962620 2.562500 0.843750 +v -1.125000 2.750000 1.125000 +v -0.962620 2.699759 1.031250 +v -0.843750 2.562500 0.962620 +v -0.937500 2.699759 1.125000 +v -0.800241 2.562500 1.125000 +v -0.962620 2.699759 1.218750 +v -0.843750 2.562500 1.287380 +v -1.031250 2.699759 1.287380 +v -0.962620 2.562500 1.406250 +v -1.125000 2.699759 1.312500 +v -1.125000 2.562500 1.449759 +v -1.218750 2.699759 1.287380 +v -1.287380 2.562500 1.406250 +v -1.287380 2.699759 1.218750 +v -1.406250 2.562500 1.287380 +v -1.312500 2.699759 1.125000 +v -1.449759 2.562500 1.125000 +v -1.287380 2.699759 1.031250 +v -1.406250 2.562500 0.962620 +v -1.218750 2.699759 0.962620 +v -1.287380 2.562500 0.843750 +v -1.125000 1.000000 -1.500000 +v -1.312500 1.000000 -1.449759 +v -1.449759 1.000000 -1.312500 +v -1.500000 1.000000 -1.125000 +v -1.449759 1.000000 -0.937500 +v -1.312500 1.000000 -0.800241 +v -1.125000 1.000000 -0.750000 +v -0.937500 1.000000 -0.800241 +v -0.800241 1.000000 -0.937500 +v -0.750000 1.000000 -1.125000 +v -0.800240 1.000000 -1.312500 +v -0.937500 1.000000 -1.449759 +v -1.125000 2.375000 -1.500000 +v -1.312500 2.375000 -1.449759 +v -1.449759 2.375000 -1.312500 +v -1.500000 2.375000 -1.125000 +v -1.449759 2.375000 -0.937500 +v -1.312500 2.375000 -0.800241 +v -1.125000 2.375000 -0.750000 +v -0.937500 2.375000 -0.800241 +v -0.800241 2.375000 -0.937500 +v -0.750000 2.375000 -1.125000 +v -0.800240 2.375000 -1.312500 +v -0.937500 2.375000 -1.449759 +v -1.125000 2.699759 -1.312500 +v -1.125000 2.562500 -1.449759 +v -1.031250 2.699759 -1.287380 +v -0.962620 2.562500 -1.406250 +v -1.125000 2.750000 -1.125000 +v -0.962620 2.699759 -1.218750 +v -0.843750 2.562500 -1.287380 +v -0.937500 2.699759 -1.125000 +v -0.800241 2.562500 -1.125000 +v -0.962620 2.699759 -1.031250 +v -0.843750 2.562500 -0.962620 +v -1.031250 2.699759 -0.962620 +v -0.962620 2.562500 -0.843750 +v -1.125000 2.699759 -0.937500 +v -1.125000 2.562500 -0.800241 +v -1.218750 2.699759 -0.962620 +v -1.287380 2.562500 -0.843750 +v -1.287380 2.699759 -1.031250 +v -1.406250 2.562500 -0.962620 +v -1.312500 2.699759 -1.125000 +v -1.449759 2.562500 -1.125000 +v -1.287380 2.699759 -1.218750 +v -1.406250 2.562500 -1.287380 +v -1.218750 2.699759 -1.287380 +v -1.287380 2.562500 -1.406250 +v -1.281631 1.000000 -0.839689 +v -1.193243 1.000000 -0.803078 +v -1.104854 1.000000 -0.839689 +v -1.068243 1.000000 -0.928078 +v -1.104854 1.000000 -1.016466 +v -1.193243 1.000000 -1.053077 +v -1.281631 1.000000 -1.016466 +v -1.318243 1.000000 -0.928078 +v -1.281631 6.000000 -0.839689 +v -1.193243 6.000000 -0.803078 +v -1.104854 6.000000 -0.839689 +v -1.068243 6.000000 -0.928078 +v -1.104854 6.000000 -1.016466 +v -1.193243 6.000000 -1.053077 +v -1.281631 6.000000 -1.016466 +v -1.318243 6.000000 -0.928078 +v -1.255743 6.088388 -0.813801 +v -1.185660 6.025888 -0.795495 +v -1.060660 6.025888 -0.920495 +v -1.078966 6.088388 -0.990578 +v -1.149049 6.150888 -1.008883 +v -1.229854 6.176776 -0.964689 +v -1.274049 6.150888 -0.883883 +v -1.193243 6.125000 -0.751301 +v -1.167355 6.036611 -0.777189 +v -1.042355 6.036611 -0.902189 +v -1.016466 6.125000 -0.928078 +v -1.042355 6.213388 -0.902189 +v -1.104855 6.250000 -0.839689 +v -1.167355 6.213388 -0.777189 +v -0.662913 6.000000 -0.397747 +v -0.751301 6.125000 -0.309359 +v -0.725412 6.036611 -0.335247 +v -0.600413 6.036611 -0.460247 +v -0.574524 6.125000 -0.486136 +v -0.600413 6.213388 -0.460247 +v -0.662912 6.250000 -0.397747 +v -0.725412 6.213388 -0.335247 +v -1.016466 1.000000 -1.104855 +v -0.928078 1.000000 -1.068243 +v -0.839690 1.000000 -1.104855 +v -0.803078 1.000000 -1.193243 +v -0.839690 1.000000 -1.281631 +v -0.928078 1.000000 -1.318243 +v -1.016466 1.000000 -1.281631 +v -1.053078 1.000000 -1.193243 +v -1.016466 6.000000 -1.104855 +v -0.928078 6.000000 -1.068243 +v -0.839690 6.000000 -1.104855 +v -0.803078 6.000000 -1.193243 +v -0.839690 6.000000 -1.281631 +v -0.928078 6.000000 -1.318243 +v -1.016466 6.000000 -1.281631 +v -1.053078 6.000000 -1.193243 +v -0.990578 6.088388 -1.078966 +v -0.920495 6.025888 -1.060660 +v -0.795495 6.025888 -1.185660 +v -0.813801 6.088388 -1.255743 +v -0.883884 6.150888 -1.274049 +v -0.964690 6.176776 -1.229855 +v -1.008883 6.150888 -1.149049 +v -0.928078 6.125000 -1.016466 +v -0.902189 6.036611 -1.042354 +v -0.777189 6.036611 -1.167354 +v -0.751301 6.125000 -1.193243 +v -0.777189 6.213388 -1.167354 +v -0.839689 6.250000 -1.104854 +v -0.902189 6.213388 -1.042354 +v -0.397748 6.000000 -0.662912 +v -0.486136 6.125000 -0.574524 +v -0.460248 6.036611 -0.600412 +v -0.335248 6.036611 -0.725412 +v -0.309359 6.125000 -0.751301 +v -0.335248 6.213388 -0.725412 +v -0.397748 6.250000 -0.662912 +v -0.460248 6.213388 -0.600412 +v -1.458408 4.375000 -0.928078 +v -0.928078 4.375000 -1.458407 +v -1.458408 3.625000 -0.928078 +v -0.928078 3.625000 -1.458407 +v -1.104854 4.375000 -0.574524 +v -0.574524 4.375000 -1.104854 +v -1.104854 3.625000 -0.574524 +v -0.574524 3.625000 -1.104854 +v 0.839689 1.000000 -1.281631 +v 0.803078 1.000000 -1.193243 +v 0.839689 1.000000 -1.104854 +v 0.928078 1.000000 -1.068243 +v 1.016466 1.000000 -1.104854 +v 1.053077 1.000000 -1.193243 +v 1.016466 1.000000 -1.281631 +v 0.928078 1.000000 -1.318243 +v 0.839689 5.999999 -1.281631 +v 0.803078 5.999999 -1.193243 +v 0.839689 5.999999 -1.104854 +v 0.928078 5.999999 -1.068243 +v 1.016466 5.999999 -1.104854 +v 1.053077 5.999999 -1.193243 +v 1.016466 5.999999 -1.281631 +v 0.928078 5.999999 -1.318243 +v 0.813801 6.088387 -1.255743 +v 0.795495 6.025887 -1.185660 +v 0.920495 6.025887 -1.060660 +v 0.990578 6.088387 -1.078966 +v 1.008883 6.150887 -1.149049 +v 0.964689 6.176776 -1.229854 +v 0.883883 6.150887 -1.274049 +v 0.751301 6.124999 -1.193243 +v 0.777189 6.036611 -1.167354 +v 0.902189 6.036611 -1.042355 +v 0.928078 6.124999 -1.016466 +v 0.902189 6.213387 -1.042355 +v 0.839689 6.249999 -1.104854 +v 0.777189 6.213387 -1.167354 +v 0.397747 5.999999 -0.662913 +v 0.309359 6.124999 -0.751301 +v 0.335247 6.036611 -0.725412 +v 0.460247 6.036611 -0.600413 +v 0.486136 6.124999 -0.574524 +v 0.460247 6.213387 -0.600413 +v 0.397747 6.249999 -0.662912 +v 0.335247 6.213387 -0.725412 +v 1.104855 1.000000 -1.016466 +v 1.068243 1.000000 -0.928078 +v 1.104855 1.000000 -0.839689 +v 1.193243 1.000000 -0.803078 +v 1.281631 1.000000 -0.839689 +v 1.318243 1.000000 -0.928078 +v 1.281631 1.000000 -1.016466 +v 1.193243 1.000000 -1.053078 +v 1.104855 5.999999 -1.016466 +v 1.068243 5.999999 -0.928078 +v 1.104855 5.999999 -0.839689 +v 1.193243 5.999999 -0.803078 +v 1.281631 5.999999 -0.839689 +v 1.318243 5.999999 -0.928078 +v 1.281631 5.999999 -1.016466 +v 1.193243 5.999999 -1.053078 +v 1.078966 6.088387 -0.990578 +v 1.060660 6.025887 -0.920495 +v 1.185660 6.025887 -0.795495 +v 1.255743 6.088387 -0.813801 +v 1.274049 6.150887 -0.883884 +v 1.229855 6.176776 -0.964689 +v 1.149049 6.150887 -1.008883 +v 1.016466 6.124999 -0.928078 +v 1.042354 6.036611 -0.902189 +v 1.167354 6.036611 -0.777189 +v 1.193243 6.124999 -0.751301 +v 1.167354 6.213387 -0.777189 +v 1.104854 6.249999 -0.839689 +v 1.042354 6.213387 -0.902189 +v 0.662912 5.999999 -0.397748 +v 0.574524 6.124999 -0.486136 +v 0.600412 6.036611 -0.460248 +v 0.725412 6.036611 -0.335248 +v 0.751301 6.124999 -0.309359 +v 0.725412 6.213387 -0.335248 +v 0.662912 6.249999 -0.397748 +v 0.600412 6.213387 -0.460248 +v 0.928078 4.375000 -1.458408 +v 1.458407 4.375000 -0.928078 +v 0.928078 3.625000 -1.458408 +v 1.458407 3.625000 -0.928078 +v 0.574524 4.375000 -1.104854 +v 1.104854 4.375000 -0.574524 +v 0.574524 3.625000 -1.104854 +v 1.104854 3.625000 -0.574524 +v -0.839689 1.000000 1.281631 +v -0.803078 1.000000 1.193243 +v -0.839689 1.000000 1.104854 +v -0.928078 1.000000 1.068243 +v -1.016466 1.000000 1.104854 +v -1.053077 1.000000 1.193243 +v -1.016466 1.000000 1.281631 +v -0.928078 1.000000 1.318243 +v -0.839689 5.999999 1.281631 +v -0.803078 5.999999 1.193243 +v -0.839689 5.999999 1.104854 +v -0.928078 5.999999 1.068243 +v -1.016466 5.999999 1.104854 +v -1.053077 5.999999 1.193243 +v -1.016466 5.999999 1.281631 +v -0.928078 5.999999 1.318243 +v -0.813801 6.088387 1.255743 +v -0.795495 6.025887 1.185660 +v -0.920495 6.025887 1.060660 +v -0.990578 6.088387 1.078966 +v -1.008883 6.150887 1.149049 +v -0.964689 6.176776 1.229854 +v -0.883883 6.150887 1.274048 +v -0.751301 6.124999 1.193243 +v -0.777189 6.036611 1.167355 +v -0.902189 6.036611 1.042355 +v -0.928078 6.124999 1.016466 +v -0.902189 6.213387 1.042355 +v -0.839689 6.249999 1.104855 +v -0.777189 6.213387 1.167355 +v -0.397747 5.999999 0.662913 +v -0.309359 6.124999 0.751301 +v -0.335247 6.036611 0.725412 +v -0.460247 6.036611 0.600413 +v -0.486136 6.124999 0.574524 +v -0.460247 6.213387 0.600413 +v -0.397747 6.249999 0.662912 +v -0.335247 6.213387 0.725412 +v -1.104855 1.000000 1.016466 +v -1.068243 1.000000 0.928078 +v -1.104855 1.000000 0.839690 +v -1.193243 1.000000 0.803078 +v -1.281631 1.000000 0.839690 +v -1.318243 1.000000 0.928078 +v -1.281631 1.000000 1.016466 +v -1.193243 1.000000 1.053078 +v -1.104855 5.999999 1.016466 +v -1.068243 5.999999 0.928078 +v -1.104855 5.999999 0.839690 +v -1.193243 5.999999 0.803078 +v -1.281631 5.999999 0.839690 +v -1.318243 5.999999 0.928078 +v -1.281631 5.999999 1.016466 +v -1.193243 5.999999 1.053078 +v -1.078966 6.088387 0.990578 +v -1.060660 6.025887 0.920496 +v -1.185660 6.025887 0.795496 +v -1.255743 6.088387 0.813801 +v -1.274049 6.150887 0.883884 +v -1.229855 6.176776 0.964690 +v -1.149049 6.150887 1.008883 +v -1.016466 6.124999 0.928078 +v -1.042354 6.036611 0.902189 +v -1.167354 6.036611 0.777189 +v -1.193243 6.124999 0.751301 +v -1.167354 6.213387 0.777189 +v -1.104854 6.249999 0.839689 +v -1.042354 6.213387 0.902189 +v -0.662912 5.999999 0.397748 +v -0.574524 6.124999 0.486136 +v -0.600412 6.036611 0.460248 +v -0.725412 6.036611 0.335248 +v -0.751301 6.124999 0.309359 +v -0.725412 6.213387 0.335248 +v -0.662912 6.249999 0.397748 +v -0.600412 6.213387 0.460248 +v -0.928078 4.375000 1.458408 +v -1.458407 4.375000 0.928078 +v -0.928078 3.625000 1.458408 +v -1.458407 3.625000 0.928078 +v -0.574524 4.375000 1.104854 +v -1.104854 4.375000 0.574524 +v -0.574524 3.625000 1.104854 +v -1.104854 3.625000 0.574524 +vt 0.240000 0.089888 +vt 0.000000 0.359551 +vt 0.000000 0.089888 +vt -0.000000 0.089888 +vt 0.240000 0.359551 +vt -0.000000 0.359551 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.000000 -0.000000 +vt 0.240000 0.000000 +vt -0.000000 0.000000 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.000000 -0.000000 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.000000 -0.000000 +vt 0.720000 0.078652 +vt 0.640000 0.000000 +vt 0.720000 -0.000000 +vt 0.320000 0.078652 +vt 0.240000 -0.000000 +vt 0.320000 -0.000000 +vt 0.560000 -0.000000 +vt 0.480000 0.078652 +vt 0.480000 0.000000 +vt 0.400000 0.078652 +vt 0.400000 0.000000 +vt 0.880000 -0.000000 +vt 0.800000 0.078652 +vt 0.800000 0.000000 +vt 0.640000 0.078652 +vt 0.320000 0.084270 +vt 0.880000 0.078652 +vt 0.800000 0.084270 +vt 0.720000 0.084270 +vt 0.400000 0.084270 +vt 0.560000 0.084270 +vt 0.560000 0.078652 +vt 0.240000 0.084270 +vt 0.240000 0.078652 +vt 0.640000 0.084270 +vt 0.480000 0.084270 +vt 0.640000 0.106742 +vt 0.480000 0.106742 +vt 0.320000 0.106742 +vt 0.880000 0.084270 +vt 0.800000 0.106742 +vt 0.720000 0.106742 +vt 0.400000 0.106742 +vt 0.560000 0.106742 +vt 0.240000 0.106742 +vt 0.320000 0.112360 +vt 0.480000 0.112360 +vt 0.640000 0.112360 +vt 0.800000 0.112360 +vt 0.880000 0.106742 +vt 0.400000 0.359551 +vt 0.320000 0.365169 +vt 0.320000 0.359551 +vt 0.880000 0.359551 +vt 0.800000 0.365169 +vt 0.800000 0.359551 +vt 0.720000 0.365169 +vt 0.720000 0.359551 +vt 0.480000 0.359551 +vt 0.400000 0.365169 +vt 0.640000 0.359551 +vt 0.560000 0.365169 +vt 0.560000 0.359551 +vt 0.240000 0.365169 +vt 0.240000 0.359551 +vt 0.640000 0.365169 +vt 0.480000 0.365169 +vt 0.640000 0.387640 +vt 0.480000 0.387640 +vt 0.320000 0.387640 +vt 0.880000 0.365169 +vt 0.800000 0.387640 +vt 0.720000 0.387640 +vt 0.400000 0.387640 +vt 0.560000 0.387640 +vt 0.240000 0.387640 +vt 0.320000 0.393258 +vt 0.480000 0.393258 +vt 0.640000 0.393258 +vt 0.800000 0.393258 +vt 0.880000 0.387640 +vt 0.880000 0.471910 +vt 0.800000 0.471910 +vt 0.240000 0.471910 +vt 0.320000 0.471910 +vt 0.400000 0.393258 +vt 0.400000 0.471910 +vt 0.480000 0.471910 +vt 0.560000 0.471910 +vt 0.640000 0.471910 +vt 0.720000 0.393258 +vt 0.720000 0.471910 +vt 0.410000 0.134831 +vt 0.400000 0.112360 +vt 0.470000 0.337079 +vt 0.560000 0.112360 +vt 0.720000 0.112360 +vt 0.470000 0.134831 +vt 0.880000 0.112360 +vt 0.780000 0.808989 +vt 0.730000 0.853933 +vt 0.730000 0.808989 +vt 0.305000 0.516854 +vt 0.385000 0.516854 +vt 0.335000 0.516854 +vt 0.465000 0.516854 +vt 0.545000 0.516854 +vt 0.625000 0.516854 +vt 0.705000 0.516854 +vt 0.655000 0.516854 +vt 0.785000 0.516854 +vt 0.865000 0.516854 +vt 0.625000 0.865169 +vt 0.580000 0.853933 +vt 0.630000 0.853933 +vt 0.980000 0.808989 +vt 0.930000 0.853933 +vt 0.930000 0.808989 +vt 0.830000 0.808989 +vt 0.780000 0.853933 +vt 0.680000 0.853933 +vt 0.680000 0.808989 +vt 0.880000 0.808989 +vt 0.830000 0.853933 +vt 0.630000 0.808989 +vt 0.580000 0.808989 +vt 0.880000 0.853933 +vt 0.825000 0.865169 +vt 0.925000 0.865169 +vt 0.725000 0.865169 +vt 0.735000 0.865169 +vt 0.835000 0.865169 +vt 0.975000 0.865169 +vt 0.980000 0.853933 +vt 0.675000 0.865169 +vt 0.585000 0.887640 +vt 0.585000 0.865169 +vt 0.625000 1.000000 +vt 0.585000 1.000000 +vt 0.625000 0.887640 +vt 0.785000 0.887640 +vt 0.785000 0.865169 +vt 0.935000 0.887640 +vt 0.935000 0.865169 +vt 0.885000 0.887640 +vt 0.885000 0.865169 +vt 0.775000 0.865169 +vt 0.735000 0.887640 +vt 0.685000 0.887640 +vt 0.685000 0.865169 +vt 0.635000 0.887640 +vt 0.635000 0.865169 +vt 0.875000 0.865169 +vt 0.835000 0.887640 +vt 0.410000 0.337079 +vt 0.120000 0.747191 +vt 0.060000 0.775281 +vt 0.060000 0.747191 +vt 0.570000 0.337079 +vt 0.630000 0.337079 +vt 0.630000 0.134831 +vt 0.730000 0.337079 +vt 0.790000 0.337079 +vt 0.730000 0.134831 +vt 0.240000 0.112360 +vt 0.250000 0.337079 +vt 0.310000 0.337079 +vt 0.310000 0.134831 +vt 0.300000 0.573034 +vt 0.360000 0.601124 +vt 0.300000 0.601124 +vt 0.120000 0.601124 +vt 0.060000 0.573034 +vt 0.120000 0.573034 +vt 0.360000 0.747191 +vt 0.300000 0.775281 +vt 0.300000 0.747191 +vt 0.445000 0.337079 +vt 0.435000 0.337079 +vt 0.765000 0.337079 +vt 0.790000 0.134831 +vt 0.755000 0.337079 +vt 0.420000 0.601124 +vt 0.480000 0.573034 +vt 0.480000 0.601124 +vt 0.285000 0.134831 +vt 0.480000 0.747191 +vt 0.420000 0.775281 +vt 0.420000 0.747191 +vt 0.250000 0.134831 +vt 0.275000 0.337079 +vt 0.570000 0.134831 +vt 0.595000 0.337079 +vt 0.180000 0.601124 +vt 0.240000 0.573034 +vt 0.240000 0.601124 +vt 0.605000 0.134831 +vt 0.240000 0.747191 +vt 0.180000 0.775281 +vt 0.180000 0.747191 +vt 0.240000 0.775281 +vt 0.360000 0.573034 +vt 0.360000 0.775281 +vt 0.000000 0.775281 +vt 0.120000 0.775281 +vt 0.180000 0.573034 +vt 0.240000 0.528090 +vt 0.120000 0.528090 +vt 0.180000 0.528090 +vt 0.420000 0.573034 +vt 0.480000 0.528090 +vt -0.000000 0.573034 +vt 0.060000 0.528090 +vt 0.360000 0.528090 +vt 0.420000 0.528090 +vt 0.300000 0.528090 +vt 0.165000 0.477528 +vt 0.015000 0.410112 +vt 0.180000 0.820225 +vt 0.120000 0.820225 +vt 0.300000 0.820225 +vt 0.480000 0.775281 +vt 0.420000 0.820225 +vt 0.000000 0.820225 +vt 0.360000 0.820225 +vt 0.240000 0.820225 +vt 0.060000 0.820225 +vt 0.165000 0.870786 +vt 0.120000 0.988764 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.445000 0.820225 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 1.000000 0.471910 +vt 0.990000 0.505618 +vt 0.990000 0.471910 +vt 1.000000 0.000000 +vt 0.990000 0.460674 +vt 0.990000 0.000000 +vt 0.980000 0.000000 +vt 0.970000 0.460674 +vt 0.970000 0.000000 +vt 0.980000 0.460674 +vt 0.960000 0.460674 +vt 0.960000 0.000000 +vt 0.960000 0.471910 +vt 0.970000 0.471910 +vt 0.990000 0.471910 +vt 0.970000 0.516854 +vt 0.960000 0.528090 +vt 0.960000 0.516854 +vt 0.960000 0.505618 +vt 0.960000 0.471910 +vt 0.980000 0.471910 +vt 0.970000 0.505618 +vt 0.980000 0.505618 +vt 0.990000 0.516854 +vt 0.980000 0.516854 +vt 0.970000 0.528090 +vt 1.000000 0.516854 +vt 0.990000 0.528090 +vt 0.990000 0.516854 +vt 0.980000 0.528090 +vt 0.960000 0.516854 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 1.000000 0.471910 +vt 0.990000 0.505618 +vt 0.990000 0.471910 +vt 1.000000 0.000000 +vt 0.990000 0.460674 +vt 0.990000 0.000000 +vt 0.980000 0.000000 +vt 0.970000 0.460674 +vt 0.970000 0.000000 +vt 0.980000 0.460674 +vt 0.960000 0.460674 +vt 0.960000 0.000000 +vt 0.960000 0.471910 +vt 0.970000 0.471910 +vt 0.990000 0.471910 +vt 0.970000 0.516854 +vt 0.960000 0.528090 +vt 0.960000 0.516854 +vt 0.960000 0.505618 +vt 0.960000 0.471910 +vt 0.980000 0.471910 +vt 0.970000 0.505618 +vt 0.980000 0.505618 +vt 0.990000 0.516854 +vt 0.980000 0.516854 +vt 0.970000 0.528090 +vt 1.000000 0.516854 +vt 0.990000 0.528090 +vt 0.990000 0.516854 +vt 0.980000 0.528090 +vt 0.960000 0.516854 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.445000 0.820225 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.385000 0.820225 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.385000 0.820225 +vt 0.240000 0.359551 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.393258 +vt 0.560000 0.393258 +vt 0.880000 0.393258 +vt 0.255000 0.516854 +vt 0.415000 0.516854 +vt 0.495000 0.516854 +vt 0.575000 0.516854 +vt 0.735000 0.516854 +vt 0.815000 0.516854 +vt 0.625000 0.887640 +vt 0.555000 0.966292 +vt 0.555000 0.921348 +vt 0.585000 0.887640 +vt 0.655000 0.921348 +vt 0.655000 0.966292 +vt 0.825000 0.887640 +vt 0.975000 0.887640 +vt 0.925000 0.887640 +vt 0.775000 0.887640 +vt 0.725000 0.887640 +vt 0.675000 0.887640 +vt 0.875000 0.887640 +vt 0.060000 0.601124 +vt 0.445000 0.134831 +vt 0.435000 0.134831 +vt 0.765000 0.134831 +vt 0.755000 0.134831 +vt 0.285000 0.337079 +vt 0.275000 0.134831 +vt 0.595000 0.134831 +vt 0.605000 0.337079 +vt 0.000000 0.528090 +vt 0.060000 0.359551 +vt 0.120000 0.359551 +vt 0.165000 0.410112 +vt 0.015000 0.477528 +vt 0.480000 0.820225 +vt 0.060000 0.988764 +vt 0.015000 0.938202 +vt 0.015000 0.870786 +vt 0.165000 0.938202 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.385000 0.820225 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 1.000000 0.505618 +vt 1.000000 0.460674 +vt 1.000000 0.528090 +vt 0.960000 0.539326 +vt 1.000000 0.505618 +vt 1.000000 0.460674 +vt 1.000000 0.528090 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.385000 0.820225 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.445000 0.820225 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.445000 0.820225 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.920000 0.466292 +vt 0.900000 0.455056 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.466292 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.220000 0.983146 +vt 0.210000 0.966292 +vt 0.215000 1.000000 +vt 0.210000 0.983146 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.220000 0.983146 +vt 0.210000 0.966292 +vt 0.215000 1.000000 +vt 0.210000 0.983146 +vt 0.195000 0.983146 +vt 0.195000 0.966292 +vt 0.205000 0.983146 +vt 0.200000 1.000000 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.300000 0.966292 +vt 0.285000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.225000 0.983146 +vt 0.225000 0.966292 +vt 0.235000 0.983146 +vt 0.230000 1.000000 +vt 0.210000 0.983146 +vt 0.210000 0.966292 +vt 0.220000 0.983146 +vt 0.215000 1.000000 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.240000 0.983146 +vt 0.240000 0.966292 +vt 0.250000 0.983146 +vt 0.245000 1.000000 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.210000 0.983146 +vt 0.210000 0.966292 +vt 0.220000 0.983146 +vt 0.215000 1.000000 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.180000 0.983146 +vt 0.180000 0.966292 +vt 0.190000 0.983146 +vt 0.185000 1.000000 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.471910 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.466292 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.539326 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.900000 0.455056 +vt 0.930000 0.483146 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.466292 +vt 0.940000 0.477528 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.900000 0.455056 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.471910 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.466292 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.920000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +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.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.6947 0.1866 0.6947 +vn -0.6727 0.0196 0.7396 +vn -0.5000 -0.7071 -0.5000 +vn 0.7396 0.0196 -0.6727 +vn 0.9891 0.1448 0.0283 +vn 0.0283 0.1448 0.9891 +vn -0.9900 -0.1363 0.0372 +vn 0.0372 -0.1363 -0.9900 +vn 0.7513 0.0671 -0.6565 +vn 0.8431 0.5294 -0.0945 +vn -0.0945 0.5293 0.8431 +vn -0.6565 0.0671 0.7514 +vn -0.8620 -0.4617 0.2090 +vn 0.5000 0.7071 0.5000 +vn 0.1319 0.9824 0.1319 +vn -0.3780 0.7194 0.5828 +vn -0.6923 0.0473 0.7200 +vn 0.2090 -0.4617 -0.8620 +vn 0.7200 0.0473 -0.6923 +vn 0.5828 0.7194 -0.3780 +vn -0.6099 -0.6737 0.4172 +vn 0.4172 -0.6737 -0.6099 +vn -0.5000 -0.7071 0.5000 +vn 0.5000 0.7071 -0.5000 +vn 0.5000 -0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn -0.6565 0.0671 0.7513 +vn -0.4959 0.1278 0.8589 +vn -0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn -0.0000 0.1278 -0.9918 +vn 0.5000 0.0000 -0.8660 +vn -0.8589 0.1278 -0.4959 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 -0.5000 +vn 0.9918 0.1278 0.0000 +vn 0.8660 0.0000 0.5000 +vn 0.0000 0.1278 0.9918 +vn -0.9918 0.1278 0.0000 +vn 0.8589 0.1278 -0.4959 +vn 0.8660 0.0000 -0.5000 +vn 0.4959 0.1278 0.8589 +vn 0.5000 0.0000 0.8660 +vn -0.8589 0.1278 0.4959 +vn 0.4959 0.1278 -0.8589 +vn -0.4959 0.1278 -0.8589 +vn 0.8589 0.1278 0.4959 +vn -0.0000 0.8474 -0.5309 +vn 0.2654 0.8474 -0.4598 +vn 0.4380 0.4823 -0.7586 +vn -0.0000 0.4823 -0.8760 +vn 0.4598 0.8474 -0.2654 +vn 0.7586 0.4823 -0.4380 +vn 0.5309 0.8474 0.0000 +vn 0.8760 0.4823 -0.0000 +vn 0.7586 0.4823 0.4380 +vn 0.4598 0.8474 0.2654 +vn 0.4380 0.4823 0.7586 +vn 0.2655 0.8474 0.4598 +vn 0.0000 0.4823 0.8760 +vn 0.0000 0.8474 0.5309 +vn -0.4380 0.4823 0.7586 +vn -0.2654 0.8474 0.4598 +vn -0.7586 0.4823 0.4380 +vn -0.4598 0.8474 0.2654 +vn -0.5309 0.8474 -0.0000 +vn -0.8760 0.4823 0.0000 +vn -0.4598 0.8474 -0.2654 +vn -0.7586 0.4823 -0.4380 +vn -0.2654 0.8474 -0.4598 +vn -0.4380 0.4823 -0.7586 +vn -0.4598 0.8474 0.2655 +vn 0.4598 0.8474 -0.2655 +vn 0.2654 0.8474 0.4598 +vn -0.4598 0.8474 -0.2655 +vn -0.6947 0.1866 -0.6947 +vn 0.6727 0.0196 -0.7396 +vn 0.5000 -0.7071 0.5000 +vn -0.7396 0.0196 0.6727 +vn -0.9891 0.1448 -0.0283 +vn -0.0283 0.1448 -0.9891 +vn 0.9900 -0.1363 -0.0372 +vn -0.0372 -0.1363 0.9900 +vn -0.7513 0.0671 0.6565 +vn -0.8431 0.5294 0.0945 +vn -0.5000 0.7071 -0.5000 +vn 0.0945 0.5293 -0.8431 +vn 0.8620 -0.4617 -0.2090 +vn 0.6565 0.0671 -0.7514 +vn -0.1319 0.9824 -0.1319 +vn 0.3780 0.7194 -0.5828 +vn 0.6923 0.0473 -0.7200 +vn -0.4172 -0.6737 0.6099 +vn -0.7200 0.0473 0.6923 +vn -0.5828 0.7194 0.3780 +vn 0.6099 -0.6737 -0.4172 +vn -0.2090 -0.4617 0.8620 +vn 0.6947 0.1866 -0.6947 +vn 0.7396 0.0196 0.6727 +vn -0.6727 0.0196 -0.7396 +vn 0.0283 0.1448 -0.9891 +vn 0.9891 0.1448 -0.0283 +vn 0.0372 -0.1363 0.9900 +vn -0.9900 -0.1363 -0.0372 +vn -0.6565 0.0671 -0.7513 +vn -0.0945 0.5294 -0.8431 +vn 0.8431 0.5294 0.0945 +vn 0.7513 0.0671 0.6565 +vn 0.2090 -0.4617 0.8620 +vn -0.3780 0.7194 -0.5828 +vn 0.1319 0.9824 -0.1319 +vn 0.5828 0.7194 0.3780 +vn 0.7200 0.0473 0.6923 +vn -0.8620 -0.4617 -0.2090 +vn -0.6923 0.0473 -0.7200 +vn 0.4172 -0.6737 0.6099 +vn -0.6099 -0.6737 -0.4172 +vn -0.8620 -0.4617 -0.2091 +vn 0.8431 0.5293 0.0945 +vn -0.6947 0.1866 0.6947 +vn -0.7396 0.0196 -0.6727 +vn 0.6727 0.0196 0.7396 +vn -0.0283 0.1448 0.9891 +vn -0.9891 0.1448 0.0283 +vn -0.0372 -0.1363 -0.9900 +vn 0.9900 -0.1363 0.0372 +vn 0.6565 0.0671 0.7513 +vn 0.0945 0.5294 0.8431 +vn -0.8431 0.5294 -0.0945 +vn -0.7513 0.0671 -0.6565 +vn -0.2090 -0.4617 -0.8620 +vn -0.1319 0.9824 0.1319 +vn -0.5828 0.7194 -0.3780 +vn -0.7200 0.0473 -0.6923 +vn 0.6099 -0.6737 0.4172 +vn 0.6923 0.0473 0.7200 +vn 0.3780 0.7194 0.5828 +vn -0.4172 -0.6737 -0.6099 +vn 0.8620 -0.4617 0.2090 +vn 0.8620 -0.4617 0.2091 +vn 0.6565 0.0671 0.7514 +s off +f 67/87/14 66/88/14 65/89/14 +f 70/90/15 71/91/15 69/92/15 +f 66/93/16 69/94/16 65/95/16 +f 68/96/17 70/90/17 66/97/17 +f 65/98/18 71/99/18 67/100/18 +f 67/101/19 72/102/19 68/103/19 +f 86/104/20 76/105/20 78/106/20 +f 81/107/18 75/108/18 73/109/18 +f 74/110/21 85/111/21 77/112/21 +f 87/113/22 73/109/22 79/114/22 +f 75/115/23 88/116/23 80/117/23 +f 88/116/19 78/106/19 80/117/19 +f 85/111/16 79/114/16 77/112/16 +f 84/118/17 74/110/17 76/105/17 +f 87/113/14 89/119/14 81/107/14 +f 83/120/14 96/121/14 88/116/14 +f 88/116/14 94/122/14 86/104/14 +f 85/111/14 95/123/14 87/113/14 +f 84/118/14 90/124/14 82/125/14 +f 81/107/14 91/126/14 83/127/14 +f 86/104/14 92/128/14 84/118/14 +f 82/125/14 93/129/14 85/111/14 +f 94/122/20 100/130/20 92/128/20 +f 90/124/21 101/131/21 93/129/21 +f 95/123/22 97/132/22 89/119/22 +f 91/133/23 104/134/23 96/121/23 +f 96/121/19 102/135/19 94/122/19 +f 93/129/16 103/136/16 95/123/16 +f 92/128/17 98/137/17 90/124/17 +f 89/119/18 99/138/18 91/126/18 +f 105/139/15 99/138/15 97/132/15 +f 103/136/15 105/139/15 97/132/15 +f 109/140/15 103/136/15 101/131/15 +f 98/137/15 109/140/15 101/131/15 +f 108/141/15 98/137/15 100/130/15 +f 102/135/15 108/141/15 100/130/15 +f 112/142/15 102/135/15 104/134/15 +f 99/143/15 112/142/15 104/134/15 +f 127/144/14 129/145/14 121/146/14 +f 123/147/14 136/148/14 128/149/14 +f 128/149/14 134/150/14 126/151/14 +f 125/152/14 135/153/14 127/144/14 +f 124/154/14 130/155/14 122/156/14 +f 121/146/14 131/157/14 123/158/14 +f 126/151/14 132/159/14 124/154/14 +f 122/156/14 133/160/14 125/152/14 +f 134/150/20 140/161/20 132/159/20 +f 130/155/21 141/162/21 133/160/21 +f 135/153/22 137/163/22 129/145/22 +f 131/164/23 144/165/23 136/148/23 +f 136/148/19 142/166/19 134/150/19 +f 133/160/16 143/167/16 135/153/16 +f 132/159/17 138/168/17 130/155/17 +f 129/145/18 139/169/18 131/157/18 +f 145/170/15 139/169/15 137/163/15 +f 143/167/15 145/170/15 137/163/15 +f 149/171/15 143/167/15 141/162/15 +f 138/168/15 149/171/15 141/162/15 +f 148/172/15 138/168/15 140/161/15 +f 142/166/15 148/172/15 140/161/15 +f 152/173/15 142/166/15 144/165/15 +f 139/174/15 152/173/15 144/165/15 +f 152/173/23 115/175/23 120/176/23 +f 115/177/18 145/170/18 113/178/18 +f 113/178/22 151/179/22 119/180/22 +f 119/180/16 149/171/16 117/181/16 +f 149/171/21 114/182/21 117/181/21 +f 114/182/17 148/172/17 116/183/17 +f 116/183/20 150/184/20 118/185/20 +f 118/185/19 152/173/19 120/176/19 +f 109/140/16 185/186/16 111/187/16 +f 127/144/22 105/139/22 111/187/22 +f 127/144/16 188/188/16 125/152/16 +f 106/189/21 125/152/21 109/140/21 +f 126/151/20 108/141/20 110/190/20 +f 125/152/16 186/191/16 109/140/16 +f 107/192/23 128/149/23 112/142/23 +f 157/193/21 162/194/21 154/195/21 +f 159/196/15 115/177/15 113/178/15 +f 113/178/15 153/197/15 159/198/15 +f 154/199/15 119/180/15 117/181/15 +f 157/200/15 117/181/15 114/182/15 +f 158/201/15 114/182/15 116/183/15 +f 116/183/15 156/202/15 158/203/15 +f 155/204/15 118/185/15 120/176/15 +f 160/205/15 120/176/15 115/175/15 +f 175/206/15 167/207/15 168/208/15 +f 160/209/23 164/210/23 155/211/23 +f 158/212/17 165/213/17 157/193/17 +f 154/195/16 161/214/16 153/215/16 +f 156/216/20 166/217/20 158/212/20 +f 153/215/22 168/208/22 159/218/22 +f 159/218/18 167/207/18 160/219/18 +f 155/211/19 163/220/19 156/216/19 +f 174/221/15 165/213/15 166/217/15 +f 171/222/15 163/220/15 164/210/15 +f 170/223/15 161/214/15 162/194/15 +f 165/213/15 170/224/15 162/194/15 +f 163/220/15 174/225/15 166/217/15 +f 176/226/15 164/210/15 167/227/15 +f 169/228/15 168/208/15 161/214/15 +f 175/206/17 183/229/17 176/230/17 +f 183/231/15 184/232/15 182/233/15 +f 174/221/18 181/234/18 173/235/18 +f 176/226/21 180/236/21 171/237/21 +f 171/222/16 179/238/16 172/239/16 +f 173/240/23 178/241/23 170/224/23 +f 170/223/19 177/242/19 169/243/19 +f 169/228/20 184/244/20 175/245/20 +f 172/246/22 182/247/22 174/225/22 +f 111/187/16 187/248/16 127/144/16 +f 191/249/14 207/250/14 192/251/14 +f 106/189/17 195/252/17 122/156/17 +f 122/156/17 196/253/17 124/154/17 +f 196/253/17 108/141/17 124/154/17 +f 194/254/17 106/189/17 108/141/17 +f 110/190/19 191/255/19 126/151/19 +f 128/149/19 191/255/19 192/256/19 +f 192/256/19 112/142/19 128/149/19 +f 112/142/19 189/257/19 110/190/19 +f 107/258/18 199/259/18 123/158/18 +f 123/158/18 200/260/18 121/146/18 +f 200/260/18 105/139/18 121/146/18 +f 198/261/18 107/258/18 105/139/18 +f 202/262/15 185/263/15 186/264/15 +f 189/265/15 203/266/15 204/267/15 +f 187/268/14 206/269/14 188/270/14 +f 206/271/18 186/191/18 188/188/18 +f 185/186/17 205/272/17 187/248/17 +f 207/273/17 190/274/17 192/256/17 +f 189/257/18 208/275/18 191/255/18 +f 198/276/15 209/277/15 197/278/15 +f 200/260/19 210/279/19 198/261/19 +f 199/280/14 212/281/14 200/282/14 +f 197/283/16 211/284/16 199/259/16 +f 193/285/19 215/286/19 195/252/19 +f 194/287/15 213/288/15 193/289/15 +f 196/253/16 214/290/16 194/254/16 +f 195/291/14 216/292/14 196/293/14 +f 215/294/23 202/262/23 206/269/23 +f 201/295/20 212/281/20 205/296/20 +f 211/297/21 203/266/21 207/250/21 +f 204/267/22 216/292/22 208/298/22 +f 214/299/18 223/300/18 213/288/18 +f 214/299/22 220/301/22 224/302/22 +f 210/303/17 221/304/17 209/277/17 +f 209/305/21 219/306/21 203/266/21 +f 203/266/16 220/301/16 204/267/16 +f 210/303/20 217/307/20 222/308/20 +f 202/262/19 217/307/19 201/295/19 +f 213/288/23 218/309/23 202/262/23 +f 224/310/15 219/306/15 222/311/15 +f 208/298/22 232/312/22 228/313/22 +f 205/296/19 226/314/19 206/269/19 +f 211/315/17 230/316/17 212/281/17 +f 207/250/21 229/317/21 211/297/21 +f 205/296/20 230/316/20 225/318/20 +f 206/269/23 231/319/23 215/294/23 +f 208/298/16 227/320/16 207/250/16 +f 215/294/18 232/312/18 216/292/18 +f 227/320/14 232/321/14 226/322/14 +f 363/323/22 361/324/22 359/325/22 +f 362/326/15 359/325/15 358/327/15 +f 360/328/21 359/325/21 361/324/21 +f 364/329/20 358/327/20 360/328/20 +f 361/324/14 364/330/14 360/328/14 +f 369/331/18 366/332/18 367/333/18 +f 373/334/17 370/335/17 371/336/17 +f 377/337/16 374/338/16 375/339/16 +f 381/340/19 378/341/19 379/342/19 +f 386/343/14 392/344/14 389/345/14 +f 384/346/19 389/347/19 385/348/19 +f 383/349/16 387/350/16 382/351/16 +f 385/348/17 388/352/17 383/349/17 +f 382/351/18 386/353/18 384/354/18 +f 387/350/18 390/355/18 386/353/18 +f 388/352/24 390/356/24 387/350/24 +f 389/347/17 391/357/17 388/352/17 +f 397/358/18 399/359/18 393/360/18 +f 390/356/18 393/361/18 386/362/18 +f 391/363/15 395/364/15 390/356/15 +f 389/345/17 394/365/17 391/363/17 +f 392/344/17 396/366/17 394/365/17 +f 396/367/19 401/368/19 397/358/19 +f 393/369/16 398/370/16 392/371/16 +f 392/371/17 400/372/17 396/367/17 +f 394/365/25 397/358/25 395/364/25 +f 395/364/18 397/373/18 393/361/18 +f 404/374/14 403/375/14 402/376/14 +f 408/377/15 406/378/15 407/379/15 +f 404/380/19 409/381/19 405/382/19 +f 403/375/16 407/379/16 402/376/16 +f 414/383/14 420/384/14 417/385/14 +f 412/386/19 417/387/19 413/388/19 +f 411/389/16 415/390/16 410/391/16 +f 413/388/17 416/392/17 411/389/17 +f 410/391/18 414/393/18 412/394/18 +f 415/390/18 418/395/18 414/393/18 +f 416/392/24 418/396/24 415/390/24 +f 417/387/17 419/397/17 416/392/17 +f 425/398/18 427/399/18 421/400/18 +f 418/396/18 421/401/18 414/402/18 +f 419/403/15 423/404/15 418/396/15 +f 417/385/17 422/405/17 419/403/17 +f 420/384/17 424/406/17 422/405/17 +f 424/407/19 429/408/19 425/398/19 +f 421/409/16 426/410/16 420/411/16 +f 420/411/17 428/412/17 424/407/17 +f 422/405/25 425/398/25 423/404/25 +f 423/404/18 425/413/18 421/401/18 +f 432/414/14 431/415/14 430/416/14 +f 436/417/15 434/418/15 435/419/15 +f 432/420/19 437/421/19 433/422/19 +f 431/415/16 435/419/16 430/416/16 +f 440/423/14 439/424/14 438/425/14 +f 444/426/15 442/427/15 443/428/15 +f 440/429/19 445/430/19 441/431/19 +f 439/424/16 443/428/16 438/425/16 +f 448/432/14 447/433/14 446/434/14 +f 452/435/15 450/436/15 451/437/15 +f 448/438/19 453/439/19 449/440/19 +f 447/433/16 451/437/16 446/434/16 +f 456/441/14 455/442/14 454/443/14 +f 460/444/15 458/445/15 459/446/15 +f 456/447/19 461/448/19 457/449/19 +f 455/442/16 459/446/16 454/443/16 +f 464/450/14 463/451/14 462/452/14 +f 468/453/15 466/454/15 467/455/15 +f 464/456/19 469/457/19 465/458/19 +f 463/451/16 467/455/16 462/452/16 +f 472/459/14 471/460/14 470/461/14 +f 476/462/15 474/463/15 475/464/15 +f 472/465/19 477/466/19 473/467/19 +f 471/460/16 475/464/16 470/461/16 +f 480/468/14 479/469/14 478/470/14 +f 484/471/15 482/472/15 483/473/15 +f 480/474/19 485/475/19 481/476/19 +f 479/469/16 483/473/16 478/470/16 +f 488/477/14 487/478/14 486/479/14 +f 492/480/15 490/481/15 491/482/15 +f 488/483/19 493/484/19 489/485/19 +f 487/478/16 491/482/16 486/479/16 +f 496/486/14 495/487/14 494/488/14 +f 500/489/15 498/490/15 499/491/15 +f 496/492/19 501/493/19 497/494/19 +f 495/487/16 499/491/16 494/488/16 +f 730/495/20 728/496/20 726/497/20 +f 729/498/15 726/497/15 725/499/15 +f 727/500/23 726/497/23 728/496/23 +f 731/501/22 725/499/22 727/500/22 +f 728/496/14 731/502/14 727/500/14 +f 814/503/21 812/504/21 810/505/21 +f 813/506/15 810/505/15 809/507/15 +f 811/508/20 810/505/20 812/504/20 +f 815/509/23 809/507/23 811/508/23 +f 816/510/14 811/508/14 812/504/14 +f 898/511/23 896/512/23 894/513/23 +f 897/514/15 894/513/15 893/515/15 +f 895/516/22 894/513/22 896/512/22 +f 899/517/21 893/515/21 895/516/21 +f 900/518/14 895/516/14 896/512/14 +f 67/87/14 68/519/14 66/88/14 +f 70/90/15 72/520/15 71/91/15 +f 66/93/16 70/521/16 69/94/16 +f 68/96/17 72/520/17 70/90/17 +f 65/98/18 69/522/18 71/99/18 +f 67/101/19 71/523/19 72/102/19 +f 86/104/20 84/118/20 76/105/20 +f 81/107/18 83/127/18 75/108/18 +f 74/110/21 82/125/21 85/111/21 +f 87/113/22 81/107/22 73/109/22 +f 75/115/23 83/120/23 88/116/23 +f 88/116/19 86/104/19 78/106/19 +f 85/111/16 87/113/16 79/114/16 +f 84/118/17 82/125/17 74/110/17 +f 87/113/14 95/123/14 89/119/14 +f 83/120/14 91/133/14 96/121/14 +f 88/116/14 96/121/14 94/122/14 +f 85/111/14 93/129/14 95/123/14 +f 84/118/14 92/128/14 90/124/14 +f 81/107/14 89/119/14 91/126/14 +f 86/104/14 94/122/14 92/128/14 +f 82/125/14 90/124/14 93/129/14 +f 94/122/20 102/135/20 100/130/20 +f 90/124/21 98/137/21 101/131/21 +f 95/123/22 103/136/22 97/132/22 +f 91/133/23 99/143/23 104/134/23 +f 96/121/19 104/134/19 102/135/19 +f 93/129/16 101/131/16 103/136/16 +f 92/128/17 100/130/17 98/137/17 +f 89/119/18 97/132/18 99/138/18 +f 105/139/15 107/258/15 99/138/15 +f 103/136/15 111/187/15 105/139/15 +f 109/140/15 111/187/15 103/136/15 +f 98/137/15 106/189/15 109/140/15 +f 108/141/15 106/189/15 98/137/15 +f 102/135/15 110/190/15 108/141/15 +f 112/142/15 110/190/15 102/135/15 +f 99/143/15 107/192/15 112/142/15 +f 127/144/14 135/153/14 129/145/14 +f 123/147/14 131/164/14 136/148/14 +f 128/149/14 136/148/14 134/150/14 +f 125/152/14 133/160/14 135/153/14 +f 124/154/14 132/159/14 130/155/14 +f 121/146/14 129/145/14 131/157/14 +f 126/151/14 134/150/14 132/159/14 +f 122/156/14 130/155/14 133/160/14 +f 134/150/20 142/166/20 140/161/20 +f 130/155/21 138/168/21 141/162/21 +f 135/153/22 143/167/22 137/163/22 +f 131/164/23 139/174/23 144/165/23 +f 136/148/19 144/165/19 142/166/19 +f 133/160/16 141/162/16 143/167/16 +f 132/159/17 140/161/17 138/168/17 +f 129/145/18 137/163/18 139/169/18 +f 145/170/15 147/524/15 139/169/15 +f 143/167/15 151/179/15 145/170/15 +f 149/171/15 151/179/15 143/167/15 +f 138/168/15 146/525/15 149/171/15 +f 148/172/15 146/525/15 138/168/15 +f 142/166/15 150/184/15 148/172/15 +f 152/173/15 150/184/15 142/166/15 +f 139/174/15 147/526/15 152/173/15 +f 152/173/23 147/526/23 115/175/23 +f 115/177/18 147/524/18 145/170/18 +f 113/178/22 145/170/22 151/179/22 +f 119/180/16 151/179/16 149/171/16 +f 149/171/21 146/525/21 114/182/21 +f 114/182/17 146/525/17 148/172/17 +f 116/183/20 148/172/20 150/184/20 +f 118/185/19 150/184/19 152/173/19 +f 109/140/16 186/191/16 185/186/16 +f 127/144/22 121/146/22 105/139/22 +f 127/144/16 187/248/16 188/188/16 +f 106/189/21 122/156/21 125/152/21 +f 126/151/20 124/154/20 108/141/20 +f 125/152/16 188/188/16 186/191/16 +f 107/192/23 123/147/23 128/149/23 +f 157/193/21 165/213/21 162/194/21 +f 159/196/15 160/527/15 115/177/15 +f 113/178/15 119/180/15 153/197/15 +f 154/199/15 153/528/15 119/180/15 +f 157/200/15 154/529/15 117/181/15 +f 158/201/15 157/530/15 114/182/15 +f 116/183/15 118/185/15 156/202/15 +f 155/204/15 156/531/15 118/185/15 +f 160/205/15 155/532/15 120/176/15 +f 175/206/15 176/230/15 167/207/15 +f 160/209/23 167/227/23 164/210/23 +f 158/212/17 166/217/17 165/213/17 +f 154/195/16 162/194/16 161/214/16 +f 156/216/20 163/220/20 166/217/20 +f 153/215/22 161/214/22 168/208/22 +f 159/218/18 168/208/18 167/207/18 +f 155/211/19 164/210/19 163/220/19 +f 174/221/15 173/235/15 165/213/15 +f 171/222/15 172/239/15 163/220/15 +f 170/223/15 169/243/15 161/214/15 +f 165/213/15 173/240/15 170/224/15 +f 163/220/15 172/246/15 174/225/15 +f 176/226/15 171/237/15 164/210/15 +f 169/228/15 175/245/15 168/208/15 +f 175/206/17 184/533/17 183/229/17 +f 184/232/15 177/534/15 178/535/15 +f 178/535/15 181/536/15 184/232/15 +f 181/536/15 182/233/15 184/232/15 +f 182/233/15 179/537/15 180/538/15 +f 180/538/15 183/231/15 182/233/15 +f 174/221/18 182/539/18 181/234/18 +f 176/226/21 183/540/21 180/236/21 +f 171/222/16 180/541/16 179/238/16 +f 173/240/23 181/542/23 178/241/23 +f 170/223/19 178/543/19 177/242/19 +f 169/228/20 177/544/20 184/244/20 +f 172/246/22 179/545/22 182/247/22 +f 111/187/16 185/186/16 187/248/16 +f 191/249/14 208/298/14 207/250/14 +f 106/189/17 193/285/17 195/252/17 +f 122/156/17 195/252/17 196/253/17 +f 196/253/17 194/254/17 108/141/17 +f 194/254/17 193/285/17 106/189/17 +f 110/190/19 189/257/19 191/255/19 +f 128/149/19 126/151/19 191/255/19 +f 192/256/19 190/274/19 112/142/19 +f 112/142/19 190/274/19 189/257/19 +f 107/258/18 197/283/18 199/259/18 +f 123/158/18 199/259/18 200/260/18 +f 200/260/18 198/261/18 105/139/18 +f 198/261/18 197/283/18 107/258/18 +f 202/262/15 201/295/15 185/263/15 +f 189/265/15 190/546/15 203/266/15 +f 187/268/14 205/296/14 206/269/14 +f 206/271/18 202/547/18 186/191/18 +f 185/186/17 201/548/17 205/272/17 +f 207/273/17 203/549/17 190/274/17 +f 189/257/18 204/550/18 208/275/18 +f 198/276/15 210/303/15 209/277/15 +f 200/260/19 212/551/19 210/279/19 +f 199/280/14 211/315/14 212/281/14 +f 197/283/16 209/552/16 211/284/16 +f 193/285/19 213/553/19 215/286/19 +f 194/287/15 214/299/15 213/288/15 +f 196/253/16 216/554/16 214/290/16 +f 195/291/14 215/294/14 216/292/14 +f 215/294/23 213/288/23 202/262/23 +f 201/295/20 210/303/20 212/281/20 +f 211/297/21 209/305/21 203/266/21 +f 204/267/22 214/299/22 216/292/22 +f 214/299/18 224/302/18 223/300/18 +f 214/299/22 204/267/22 220/301/22 +f 210/303/17 222/308/17 221/304/17 +f 209/305/21 221/555/21 219/306/21 +f 203/266/16 219/306/16 220/301/16 +f 210/303/20 201/295/20 217/307/20 +f 202/262/19 218/309/19 217/307/19 +f 213/288/23 223/300/23 218/309/23 +f 222/311/15 217/556/15 218/557/15 +f 218/557/15 223/558/15 224/310/15 +f 224/310/15 220/301/15 219/306/15 +f 219/306/15 221/559/15 222/311/15 +f 222/311/15 218/557/15 224/310/15 +f 208/298/22 216/292/22 232/312/22 +f 205/296/19 225/318/19 226/314/19 +f 211/315/17 229/560/17 230/316/17 +f 207/250/21 227/320/21 229/317/21 +f 205/296/20 212/281/20 230/316/20 +f 206/269/23 226/314/23 231/319/23 +f 208/298/16 228/313/16 227/320/16 +f 215/294/18 231/319/18 232/312/18 +f 226/322/14 225/561/14 230/562/14 +f 230/562/14 229/563/14 227/320/14 +f 227/320/14 228/313/14 232/321/14 +f 232/321/14 231/564/14 226/322/14 +f 226/322/14 230/562/14 227/320/14 +f 363/323/22 365/565/22 361/324/22 +f 362/326/15 363/566/15 359/325/15 +f 360/328/21 358/327/21 359/325/21 +f 364/329/20 362/567/20 358/327/20 +f 361/324/14 365/568/14 364/330/14 +f 369/331/18 368/569/18 366/332/18 +f 373/334/17 372/570/17 370/335/17 +f 377/337/16 376/571/16 374/338/16 +f 381/340/19 380/572/19 378/341/19 +f 386/343/14 393/573/14 392/344/14 +f 384/346/19 386/574/19 389/347/19 +f 383/349/16 388/352/16 387/350/16 +f 385/348/17 389/347/17 388/352/17 +f 382/351/18 387/350/18 386/353/18 +f 388/352/24 391/363/24 390/356/24 +f 397/358/18 401/368/18 399/359/18 +f 390/356/18 395/364/18 393/361/18 +f 391/363/15 394/365/15 395/364/15 +f 389/345/17 392/344/17 394/365/17 +f 396/367/19 400/372/19 401/368/19 +f 393/369/16 399/575/16 398/370/16 +f 392/371/17 398/370/17 400/372/17 +f 394/365/25 396/367/25 397/358/25 +f 404/374/14 405/576/14 403/375/14 +f 408/377/15 409/381/15 406/378/15 +f 404/380/19 406/378/19 409/381/19 +f 403/375/16 408/377/16 407/379/16 +f 414/383/14 421/577/14 420/384/14 +f 412/386/19 414/578/19 417/387/19 +f 411/389/16 416/392/16 415/390/16 +f 413/388/17 417/387/17 416/392/17 +f 410/391/18 415/390/18 414/393/18 +f 416/392/24 419/403/24 418/396/24 +f 425/398/18 429/408/18 427/399/18 +f 418/396/18 423/404/18 421/401/18 +f 419/403/15 422/405/15 423/404/15 +f 417/385/17 420/384/17 422/405/17 +f 424/407/19 428/412/19 429/408/19 +f 421/409/16 427/579/16 426/410/16 +f 420/411/17 426/410/17 428/412/17 +f 422/405/25 424/407/25 425/398/25 +f 432/414/14 433/580/14 431/415/14 +f 436/417/15 437/421/15 434/418/15 +f 432/420/19 434/418/19 437/421/19 +f 431/415/16 436/417/16 435/419/16 +f 440/423/14 441/581/14 439/424/14 +f 444/426/15 445/430/15 442/427/15 +f 440/429/19 442/427/19 445/430/19 +f 439/424/16 444/426/16 443/428/16 +f 448/432/14 449/582/14 447/433/14 +f 452/435/15 453/439/15 450/436/15 +f 448/438/19 450/436/19 453/439/19 +f 447/433/16 452/435/16 451/437/16 +f 456/441/14 457/583/14 455/442/14 +f 460/444/15 461/448/15 458/445/15 +f 456/447/19 458/445/19 461/448/19 +f 455/442/16 460/444/16 459/446/16 +f 464/450/14 465/584/14 463/451/14 +f 468/453/15 469/457/15 466/454/15 +f 464/456/19 466/454/19 469/457/19 +f 463/451/16 468/453/16 467/455/16 +f 472/459/14 473/585/14 471/460/14 +f 476/462/15 477/466/15 474/463/15 +f 472/465/19 474/463/19 477/466/19 +f 471/460/16 476/462/16 475/464/16 +f 480/468/14 481/586/14 479/469/14 +f 484/471/15 485/475/15 482/472/15 +f 480/474/19 482/472/19 485/475/19 +f 479/469/16 484/471/16 483/473/16 +f 488/477/14 489/587/14 487/478/14 +f 492/480/15 493/484/15 490/481/15 +f 488/483/19 490/481/19 493/484/19 +f 487/478/16 492/480/16 491/482/16 +f 496/486/14 497/588/14 495/487/14 +f 500/489/15 501/493/15 498/490/15 +f 496/492/19 498/490/19 501/493/19 +f 495/487/16 500/489/16 499/491/16 +f 730/495/20 732/589/20 728/496/20 +f 729/498/15 730/590/15 726/497/15 +f 727/500/23 725/499/23 726/497/23 +f 731/501/22 729/591/22 725/499/22 +f 728/496/14 732/592/14 731/502/14 +f 814/503/21 816/593/21 812/504/21 +f 813/506/15 814/594/15 810/505/15 +f 811/508/20 809/507/20 810/505/20 +f 815/509/23 813/595/23 809/507/23 +f 816/510/14 815/596/14 811/508/14 +f 898/511/23 900/597/23 896/512/23 +f 897/514/15 898/598/15 894/513/15 +f 895/516/22 893/515/22 894/513/22 +f 899/517/21 897/599/21 893/515/21 +f 900/518/14 899/600/14 895/516/14 +s 1 +f 240/601/17 247/602/26 239/603/21 +f 238/604/16 245/605/27 237/606/22 +f 236/607/18 243/608/28 235/609/23 +f 234/610/19 241/611/29 233/612/20 +f 233/612/20 248/613/30 240/601/17 +f 239/603/21 246/614/31 238/604/16 +f 237/606/22 244/615/32 236/607/18 +f 235/616/23 242/617/33 234/610/19 +f 242/618/33 249/619/34 241/620/29 +f 241/620/29 255/621/35 248/613/30 +f 247/602/26 253/622/36 246/614/31 +f 244/623/32 252/624/37 251/625/38 +f 247/602/26 255/621/35 254/626/39 +f 246/614/31 252/624/37 245/627/27 +f 255/621/35 261/628/40 254/626/39 +f 252/624/37 260/629/41 259/630/42 +f 250/631/43 256/632/44 249/619/34 +f 249/619/34 262/633/45 255/621/35 +f 254/626/39 260/629/41 253/622/36 +f 252/624/37 258/634/46 251/625/38 +f 242/618/33 243/635/28 250/631/43 +f 250/631/43 243/635/28 257/636/47 +f 244/623/32 251/625/38 243/637/28 +f 251/625/38 258/634/46 243/637/28 +f 243/638/28 266/639/48 263/640/14 +f 256/641/44 270/642/49 262/633/45 +f 243/643/28 265/644/50 257/645/47 +f 261/628/40 268/646/51 260/629/41 +f 259/647/42 266/639/48 258/648/46 +f 262/633/45 269/649/15 261/628/40 +f 259/647/42 268/646/51 267/650/22 +f 256/641/44 265/644/50 264/651/20 +f 278/652/17 285/653/26 277/654/21 +f 276/655/16 283/656/27 275/657/22 +f 274/658/18 281/659/28 273/660/23 +f 272/661/19 279/662/29 271/663/20 +f 271/663/20 286/664/30 278/652/17 +f 277/654/21 284/665/31 276/655/16 +f 275/657/22 282/666/32 274/658/18 +f 273/667/23 280/668/33 272/661/19 +f 279/669/29 288/670/43 287/671/34 +f 279/669/29 293/672/35 286/664/30 +f 285/653/26 291/673/36 284/665/31 +f 283/674/27 289/675/38 282/676/32 +f 285/653/26 293/672/35 292/677/39 +f 283/674/27 291/673/36 290/678/52 +f 293/672/35 299/679/40 292/677/39 +f 291/673/36 297/680/42 290/678/52 +f 288/670/43 294/681/44 287/671/34 +f 293/672/35 294/681/44 300/682/45 +f 292/677/39 298/683/41 291/673/36 +f 289/675/38 297/680/42 296/684/46 +f 280/685/33 281/686/28 288/670/43 +f 288/670/43 281/686/28 295/687/47 +f 282/676/32 289/675/38 281/688/28 +f 289/675/38 296/684/46 281/688/28 +f 296/689/46 301/690/14 281/691/28 +f 300/682/45 302/692/20 308/693/49 +f 295/694/47 301/695/14 303/696/50 +f 298/683/41 307/697/15 306/698/51 +f 296/689/46 305/699/22 304/700/48 +f 300/682/45 307/697/15 299/679/40 +f 298/683/41 305/699/22 297/701/42 +f 295/694/47 302/692/20 294/702/44 +f 326/703/53 313/704/54 314/705/55 +f 321/706/56 320/707/57 309/708/19 +f 323/709/58 310/710/59 311/711/60 +f 330/712/61 317/713/62 318/714/17 +f 327/715/63 314/705/55 315/716/16 +f 324/717/64 311/711/60 312/718/18 +f 331/719/65 318/714/17 319/720/66 +f 328/721/67 315/716/16 316/722/68 +f 325/723/69 312/724/18 313/704/54 +f 332/725/70 319/720/66 320/707/57 +f 322/726/71 309/708/19 310/710/59 +f 329/727/72 316/722/68 317/713/62 +f 333/728/73 337/729/15 335/730/74 +f 333/728/73 336/731/75 334/732/76 +f 335/733/74 337/734/15 338/735/77 +f 336/731/75 338/735/77 339/736/78 +f 338/737/77 337/738/15 340/739/79 +f 339/736/78 340/739/79 341/740/80 +f 340/741/79 343/742/81 341/740/80 +f 340/741/79 337/743/15 342/744/82 +f 342/745/82 345/746/83 343/742/81 +f 342/745/82 337/747/15 344/748/84 +f 344/749/84 347/750/85 345/746/83 +f 344/749/84 337/751/15 346/752/86 +f 346/753/86 349/754/87 347/750/85 +f 346/753/86 337/755/15 348/756/88 +f 348/757/88 351/758/89 349/754/87 +f 348/757/88 337/759/15 350/760/90 +f 350/761/90 337/762/15 352/763/91 +f 350/761/90 353/764/92 351/758/89 +f 343/742/81 328/721/67 329/727/72 +f 328/721/67 347/750/85 327/715/63 +f 352/765/91 337/766/15 354/767/93 +f 327/715/63 349/754/87 326/703/53 +f 349/754/87 325/723/69 326/703/53 +f 352/765/91 355/768/94 353/769/92 +f 324/770/64 351/758/89 353/764/92 +f 324/717/64 355/768/94 323/709/58 +f 354/771/93 337/772/15 356/773/95 +f 323/709/58 357/774/96 322/726/71 +f 321/706/56 357/774/96 334/732/76 +f 354/771/93 357/774/96 355/768/94 +f 321/706/56 336/731/75 332/725/70 +f 332/725/70 339/736/78 331/719/65 +f 356/775/95 337/776/15 333/777/73 +f 339/736/78 330/712/61 331/719/65 +f 341/740/80 329/727/72 330/712/61 +f 357/774/96 333/777/73 334/732/76 +f 519/778/53 506/779/54 507/780/55 +f 514/781/56 513/782/57 502/783/19 +f 516/784/58 503/785/59 504/786/60 +f 523/787/61 510/788/62 511/789/17 +f 520/790/63 507/780/55 508/791/16 +f 517/792/64 504/786/60 505/793/18 +f 524/794/65 511/789/17 512/795/66 +f 521/796/67 508/791/16 509/797/68 +f 518/798/69 505/799/18 506/779/54 +f 525/800/70 512/795/66 513/782/57 +f 515/801/71 502/783/19 503/785/59 +f 522/802/72 509/797/68 510/788/62 +f 526/803/73 530/804/15 528/805/74 +f 526/803/73 529/806/75 527/807/76 +f 528/808/74 530/809/15 531/810/77 +f 528/808/74 532/811/78 529/806/75 +f 531/812/77 530/813/15 533/814/79 +f 531/812/77 534/815/80 532/811/78 +f 533/816/79 536/817/81 534/815/80 +f 533/816/79 530/818/15 535/819/82 +f 535/820/82 538/821/83 536/817/81 +f 535/820/82 530/822/15 537/823/84 +f 537/824/84 540/825/85 538/821/83 +f 537/824/84 530/826/15 539/827/86 +f 540/825/85 541/828/88 542/829/87 +f 539/830/86 530/831/15 541/828/88 +f 541/832/88 544/833/89 542/829/87 +f 541/832/88 530/834/15 543/835/97 +f 543/836/97 530/837/15 545/838/91 +f 544/833/89 545/838/91 546/839/92 +f 522/802/72 538/821/83 521/796/67 +f 521/796/67 540/825/85 520/790/63 +f 545/840/91 530/841/15 547/842/93 +f 520/790/63 542/829/87 519/778/53 +f 542/829/87 518/798/69 519/778/53 +f 545/840/91 548/843/94 546/844/92 +f 517/845/64 544/833/89 546/839/92 +f 517/792/64 548/843/94 516/784/58 +f 547/846/93 530/847/15 549/848/95 +f 516/784/58 550/849/96 515/801/71 +f 514/781/56 550/849/96 527/807/76 +f 547/846/93 550/849/96 548/843/94 +f 514/781/56 529/806/75 525/800/70 +f 525/800/70 532/811/78 524/794/65 +f 549/850/95 530/851/15 526/852/73 +f 532/811/78 523/787/61 524/794/65 +f 523/787/61 536/817/81 522/802/72 +f 549/850/95 527/807/76 550/849/96 +f 568/853/53 555/854/54 556/855/55 +f 563/856/56 562/857/57 551/858/19 +f 565/859/58 552/860/59 553/861/60 +f 572/862/61 559/863/62 560/864/17 +f 569/865/63 556/855/55 557/866/16 +f 566/867/64 553/861/60 554/868/18 +f 573/869/65 560/864/17 561/870/66 +f 570/871/67 557/866/16 558/872/68 +f 567/873/69 554/874/18 555/854/54 +f 574/875/70 561/870/66 562/857/57 +f 564/876/71 551/858/19 552/860/59 +f 571/877/72 558/872/68 559/863/62 +f 575/878/73 579/879/15 577/880/74 +f 576/881/76 577/880/74 578/882/75 +f 577/883/74 579/884/15 580/885/98 +f 577/883/74 581/886/78 578/882/75 +f 580/887/98 579/888/15 582/889/79 +f 581/886/78 582/889/79 583/890/80 +f 582/891/79 585/892/81 583/890/80 +f 582/891/79 579/893/15 584/894/82 +f 585/892/81 586/895/99 587/896/83 +f 584/897/82 579/898/15 586/895/99 +f 587/896/83 588/899/86 589/900/85 +f 586/901/99 579/902/15 588/899/86 +f 588/903/86 591/904/87 589/900/85 +f 588/903/86 579/905/15 590/906/88 +f 590/907/88 593/908/89 591/904/87 +f 590/907/88 579/909/15 592/910/97 +f 592/911/97 579/912/15 594/913/91 +f 592/911/97 595/914/92 593/908/89 +f 585/892/81 570/871/67 571/877/72 +f 587/896/83 569/865/63 570/871/67 +f 594/915/91 579/916/15 596/917/100 +f 589/900/85 568/853/53 569/865/63 +f 591/904/87 567/873/69 568/853/53 +f 594/915/91 597/918/94 595/919/92 +f 567/873/69 595/914/92 566/920/64 +f 566/867/64 597/918/94 565/859/58 +f 596/921/100 579/922/15 598/923/95 +f 565/859/58 599/924/96 564/876/71 +f 563/856/56 599/924/96 576/881/76 +f 596/921/100 599/924/96 597/918/94 +f 563/856/56 578/882/75 574/875/70 +f 574/875/70 581/886/78 573/869/65 +f 598/925/95 579/926/15 575/927/73 +f 581/886/78 572/862/61 573/869/65 +f 572/862/61 585/892/81 571/877/72 +f 598/925/95 576/881/76 599/924/96 +f 617/928/53 604/929/54 605/930/55 +f 612/931/56 611/932/57 600/933/19 +f 614/934/58 601/935/59 602/936/60 +f 621/937/61 608/938/62 609/939/17 +f 618/940/63 605/930/55 606/941/16 +f 615/942/64 602/936/60 603/943/18 +f 622/944/65 609/939/17 610/945/66 +f 619/946/67 606/941/16 607/947/68 +f 616/948/69 603/949/18 604/929/54 +f 623/950/70 610/945/66 611/932/57 +f 613/951/71 600/933/19 601/935/59 +f 620/952/72 607/947/68 608/938/62 +f 624/953/73 628/954/15 626/955/74 +f 624/953/73 627/956/75 625/957/76 +f 626/958/74 628/959/15 629/960/98 +f 626/958/74 630/961/78 627/956/75 +f 629/962/98 628/963/15 631/964/79 +f 629/962/98 632/965/80 630/961/78 +f 632/965/80 633/966/82 634/967/81 +f 631/968/79 628/969/15 633/966/82 +f 633/970/82 636/971/83 634/967/81 +f 633/970/82 628/972/15 635/973/84 +f 636/971/83 637/974/86 638/975/85 +f 635/976/84 628/977/15 637/974/86 +f 637/978/86 640/979/87 638/975/85 +f 637/978/86 628/980/15 639/981/88 +f 640/979/87 641/982/97 642/983/89 +f 639/984/88 628/985/15 641/982/97 +f 641/986/97 628/987/15 643/988/91 +f 641/986/97 644/989/92 642/983/89 +f 634/967/81 619/946/67 620/952/72 +f 619/946/67 638/975/85 618/940/63 +f 643/990/91 628/991/15 645/992/100 +f 618/940/63 640/979/87 617/928/53 +f 640/979/87 616/948/69 617/928/53 +f 643/990/91 646/993/94 644/994/92 +f 615/995/64 642/983/89 644/989/92 +f 615/942/64 646/993/94 614/934/58 +f 645/996/100 628/997/15 647/998/95 +f 614/934/58 648/999/96 613/951/71 +f 613/951/71 625/957/76 612/931/56 +f 645/996/100 648/999/96 646/993/94 +f 612/931/56 627/956/75 623/950/70 +f 623/950/70 630/961/78 622/944/65 +f 647/1000/95 628/1001/15 624/1002/73 +f 630/961/78 621/937/61 622/944/65 +f 621/937/61 634/967/81 620/952/72 +f 647/1000/95 625/957/76 648/999/96 +f 656/1003/18 663/1004/101 655/1005/23 +f 654/1006/19 661/1007/102 653/1008/20 +f 652/1009/17 659/1010/103 651/1011/21 +f 650/1012/16 657/1013/104 649/1014/22 +f 649/1014/22 664/1015/105 656/1003/18 +f 655/1005/23 662/1016/106 654/1006/19 +f 653/1008/20 660/1017/107 652/1009/17 +f 651/1018/21 658/1019/108 650/1012/16 +f 658/1020/108 665/1021/109 657/1022/104 +f 664/1015/105 665/1021/109 671/1023/110 +f 662/1016/106 670/1024/111 669/1025/112 +f 661/1026/102 667/1027/113 660/1028/107 +f 664/1015/105 670/1024/111 663/1004/101 +f 662/1016/106 668/1029/114 661/1026/102 +f 671/1023/110 677/1030/115 670/1024/111 +f 668/1029/114 676/1031/116 675/1032/117 +f 665/1021/109 673/1033/118 672/1034/119 +f 665/1021/109 678/1035/120 671/1023/110 +f 670/1024/111 676/1031/116 669/1025/112 +f 668/1029/114 674/1036/121 667/1027/113 +f 658/1020/108 659/1037/103 666/1038/122 +f 666/1038/122 659/1037/103 673/1033/118 +f 660/1028/107 667/1027/113 659/1039/103 +f 667/1027/113 674/1036/121 659/1039/103 +f 659/1040/103 682/1041/50 679/1042/14 +f 672/1043/119 686/1044/51 678/1035/120 +f 659/1045/103 681/1046/48 673/1047/118 +f 677/1030/115 684/1048/49 676/1031/116 +f 675/1049/117 682/1041/50 674/1050/121 +f 677/1030/115 686/1044/51 685/1051/15 +f 675/1049/117 684/1048/49 683/1052/20 +f 672/1043/119 681/1046/48 680/1053/22 +f 694/1054/18 701/1055/101 693/1056/23 +f 692/1057/19 699/1058/102 691/1059/20 +f 690/1060/17 697/1061/103 689/1062/21 +f 688/1063/16 695/1064/104 687/1065/22 +f 687/1065/22 702/1066/105 694/1054/18 +f 693/1056/23 700/1067/106 692/1057/19 +f 691/1059/20 698/1068/107 690/1060/17 +f 689/1069/21 696/1070/108 688/1063/16 +f 695/1071/104 704/1072/122 703/1073/109 +f 695/1071/104 709/1074/110 702/1066/105 +f 701/1055/101 707/1075/112 700/1067/106 +f 699/1076/102 705/1077/113 698/1078/107 +f 701/1055/101 709/1074/110 708/1079/111 +f 700/1067/106 706/1080/114 699/1076/102 +f 709/1074/110 715/1081/115 708/1079/111 +f 707/1075/112 713/1082/117 706/1080/114 +f 704/1072/122 710/1083/119 703/1073/109 +f 709/1074/110 710/1083/119 716/1084/120 +f 708/1079/111 714/1085/116 707/1075/112 +f 705/1077/113 713/1082/117 712/1086/121 +f 696/1087/108 697/1088/103 704/1072/122 +f 704/1072/122 697/1088/103 711/1089/118 +f 698/1078/107 705/1077/113 697/1090/103 +f 705/1077/113 712/1086/121 697/1090/103 +f 712/1091/121 717/1092/14 697/1093/103 +f 716/1084/120 718/1094/22 724/1095/51 +f 711/1096/118 717/1097/14 719/1098/48 +f 715/1081/115 722/1099/49 714/1085/116 +f 713/1100/117 720/1101/50 712/1091/121 +f 716/1084/120 723/1102/15 715/1081/115 +f 714/1085/116 721/1103/20 713/1100/117 +f 711/1096/118 718/1094/22 710/1104/119 +f 740/1105/19 747/1106/123 739/1107/20 +f 738/1108/17 745/1109/124 737/1110/21 +f 736/1111/16 743/1112/48 735/1113/22 +f 734/1114/18 741/1115/125 733/1116/23 +f 733/1116/23 748/1117/126 740/1105/19 +f 739/1107/20 746/1118/127 738/1108/17 +f 737/1110/21 744/1119/128 736/1111/16 +f 735/1120/22 742/1121/129 734/1114/18 +f 742/1122/129 749/1123/130 741/1124/125 +f 748/1117/126 749/1123/130 755/1125/131 +f 746/1118/127 754/1126/49 753/1127/132 +f 744/1128/128 752/1129/133 751/1130/134 +f 747/1106/123 755/1125/131 754/1126/49 +f 746/1118/127 752/1129/133 745/1131/124 +f 754/1126/49 762/1132/135 761/1133/136 +f 752/1129/133 760/1134/137 759/1135/138 +f 750/1136/139 756/1137/140 749/1123/130 +f 749/1123/130 762/1132/135 755/1125/131 +f 754/1126/49 760/1134/137 753/1127/132 +f 752/1129/133 758/1138/141 751/1130/134 +f 742/1122/129 743/1139/48 750/1136/139 +f 750/1136/139 743/1139/48 757/1140/142 +f 744/1128/128 751/1130/134 743/1141/48 +f 751/1130/134 758/1138/141 743/1141/48 +f 743/1142/48 766/1143/103 763/1144/14 +f 756/1145/140 770/1146/111 762/1132/135 +f 743/1147/48 765/1148/28 757/1149/142 +f 761/1133/136 768/1150/39 760/1134/137 +f 759/1151/138 766/1143/103 758/1152/141 +f 762/1132/135 769/1153/15 761/1133/136 +f 759/1151/138 768/1150/39 767/1154/21 +f 756/1145/140 765/1148/28 764/1155/23 +f 778/1156/19 785/1157/123 777/1158/20 +f 776/1159/17 783/1160/124 775/1161/21 +f 774/1162/16 781/1163/48 773/1164/22 +f 772/1165/18 779/1166/125 771/1167/23 +f 771/1167/23 786/1168/126 778/1156/19 +f 777/1158/20 784/1169/127 776/1159/17 +f 775/1161/21 782/1170/128 774/1162/16 +f 773/1171/22 780/1172/129 772/1165/18 +f 779/1173/125 788/1174/143 787/1175/130 +f 779/1173/125 793/1176/131 786/1168/126 +f 784/1169/127 792/1177/49 791/1178/144 +f 783/1179/124 789/1180/134 782/1181/128 +f 785/1157/123 793/1176/131 792/1177/49 +f 784/1169/127 790/1182/133 783/1179/124 +f 793/1176/131 799/1183/136 792/1177/49 +f 791/1178/144 797/1184/138 790/1182/133 +f 788/1174/143 794/1185/140 787/1175/130 +f 787/1175/130 800/1186/135 793/1176/131 +f 792/1177/49 798/1187/137 791/1178/144 +f 789/1180/134 797/1184/138 796/1188/141 +f 780/1189/129 781/1190/48 788/1174/143 +f 788/1174/143 781/1190/48 795/1191/142 +f 782/1181/128 789/1180/134 781/1192/48 +f 789/1180/134 796/1188/141 781/1192/48 +f 796/1193/141 801/1194/14 781/1195/48 +f 800/1186/135 802/1196/23 808/1197/111 +f 795/1198/142 801/1199/14 803/1200/28 +f 798/1187/137 807/1201/15 806/1202/39 +f 796/1193/141 805/1203/21 804/1204/103 +f 799/1183/136 808/1197/111 807/1201/15 +f 798/1187/137 805/1203/21 797/1205/138 +f 795/1198/142 802/1196/23 794/1206/140 +f 824/1207/16 831/1208/145 823/1209/22 +f 822/1210/18 829/1211/146 821/1212/23 +f 820/1213/19 827/1214/50 819/1215/20 +f 818/1216/17 825/1217/147 817/1218/21 +f 817/1218/21 832/1219/148 824/1207/16 +f 823/1209/22 830/1220/149 822/1210/18 +f 821/1212/23 828/1221/150 820/1213/19 +f 819/1222/20 826/1223/151 818/1216/17 +f 826/1224/151 833/1225/152 825/1226/147 +f 832/1219/148 833/1225/152 839/1227/153 +f 830/1220/149 838/1228/51 837/1229/154 +f 828/1230/150 836/1231/155 835/1232/156 +f 831/1208/145 839/1227/153 838/1228/51 +f 830/1220/149 836/1231/155 829/1233/146 +f 839/1227/153 845/1234/157 838/1228/51 +f 836/1231/155 844/1235/158 843/1236/159 +f 833/1225/152 841/1237/160 840/1238/161 +f 833/1225/152 846/1239/162 839/1227/153 +f 838/1228/51 844/1235/158 837/1229/154 +f 836/1231/155 842/1240/163 835/1232/156 +f 826/1224/151 827/1241/50 834/1242/164 +f 834/1242/164 827/1241/50 841/1237/160 +f 828/1230/150 835/1232/156 827/1243/50 +f 835/1232/156 842/1240/163 827/1243/50 +f 827/1244/50 850/1245/28 847/1246/14 +f 840/1247/161 854/1248/39 846/1239/162 +f 827/1249/50 849/1250/103 841/1251/160 +f 844/1235/158 853/1252/15 852/1253/111 +f 843/1254/159 850/1245/28 842/1255/163 +f 845/1234/157 854/1248/39 853/1252/15 +f 844/1235/158 851/1256/23 843/1254/159 +f 840/1247/161 849/1250/103 848/1257/21 +f 862/1258/16 869/1259/145 861/1260/22 +f 860/1261/18 867/1262/146 859/1263/23 +f 858/1264/19 865/1265/50 857/1266/20 +f 856/1267/17 863/1268/147 855/1269/21 +f 855/1269/21 870/1270/148 862/1258/16 +f 861/1260/22 868/1271/149 860/1261/18 +f 859/1263/23 866/1272/150 858/1264/19 +f 857/1273/20 864/1274/151 856/1267/17 +f 863/1275/147 872/1276/165 871/1277/166 +f 863/1275/147 877/1278/153 870/1270/148 +f 869/1259/145 875/1279/154 868/1271/149 +f 867/1280/146 873/1281/156 866/1282/150 +f 869/1259/145 877/1278/153 876/1283/51 +f 868/1271/149 874/1284/155 867/1280/146 +f 877/1278/153 883/1285/157 876/1283/51 +f 875/1279/154 881/1286/159 874/1284/155 +f 872/1276/165 878/1287/161 871/1277/166 +f 871/1277/166 884/1288/162 877/1278/153 +f 876/1283/51 882/1289/158 875/1279/154 +f 873/1281/156 881/1286/159 880/1290/163 +f 864/1291/151 865/1292/50 872/1276/165 +f 872/1276/165 865/1292/50 879/1293/160 +f 866/1282/150 873/1281/156 865/1294/50 +f 873/1281/156 880/1290/163 865/1294/50 +f 880/1295/163 885/1296/14 865/1297/50 +f 884/1288/162 886/1298/21 892/1299/39 +f 879/1300/160 885/1301/14 887/1302/103 +f 883/1285/157 890/1303/111 882/1289/158 +f 880/1295/163 889/1304/23 888/1305/28 +f 884/1288/162 891/1306/15 883/1285/157 +f 882/1289/158 889/1304/23 881/1307/159 +f 879/1300/160 886/1298/21 878/1308/161 +f 240/601/17 248/613/30 247/602/26 +f 238/604/16 246/614/31 245/605/27 +f 236/607/18 244/615/32 243/608/28 +f 234/610/19 242/617/33 241/611/29 +f 233/612/20 241/611/29 248/613/30 +f 239/603/21 247/602/26 246/614/31 +f 237/606/22 245/605/27 244/615/32 +f 235/616/23 243/1309/28 242/617/33 +f 242/618/33 250/631/43 249/619/34 +f 241/620/29 249/619/34 255/621/35 +f 247/602/26 254/626/39 253/622/36 +f 244/623/32 245/627/27 252/624/37 +f 247/602/26 248/613/30 255/621/35 +f 246/614/31 253/622/36 252/624/37 +f 255/621/35 262/633/45 261/628/40 +f 252/624/37 253/622/36 260/629/41 +f 250/631/43 257/636/47 256/632/44 +f 249/619/34 256/632/44 262/633/45 +f 254/626/39 261/628/40 260/629/41 +f 252/624/37 259/630/42 258/634/46 +f 243/638/28 258/648/46 266/639/48 +f 256/641/44 264/651/20 270/642/49 +f 243/643/28 263/1310/14 265/644/50 +f 261/628/40 269/649/15 268/646/51 +f 259/647/42 267/650/22 266/639/48 +f 262/633/45 270/642/49 269/649/15 +f 259/647/42 260/629/41 268/646/51 +f 256/641/44 257/645/47 265/644/50 +f 278/652/17 286/664/30 285/653/26 +f 276/655/16 284/665/31 283/656/27 +f 274/658/18 282/666/32 281/659/28 +f 272/661/19 280/668/33 279/662/29 +f 271/663/20 279/662/29 286/664/30 +f 277/654/21 285/653/26 284/665/31 +f 275/657/22 283/656/27 282/666/32 +f 273/667/23 281/1311/28 280/668/33 +f 279/669/29 280/685/33 288/670/43 +f 279/669/29 287/671/34 293/672/35 +f 285/653/26 292/677/39 291/673/36 +f 283/674/27 290/678/52 289/675/38 +f 285/653/26 286/664/30 293/672/35 +f 283/674/27 284/665/31 291/673/36 +f 293/672/35 300/682/45 299/679/40 +f 291/673/36 298/683/41 297/680/42 +f 288/670/43 295/687/47 294/681/44 +f 293/672/35 287/671/34 294/681/44 +f 292/677/39 299/679/40 298/683/41 +f 289/675/38 290/678/52 297/680/42 +f 296/689/46 304/700/48 301/690/14 +f 300/682/45 294/702/44 302/692/20 +f 295/694/47 281/1312/28 301/695/14 +f 298/683/41 299/679/40 307/697/15 +f 296/689/46 297/701/42 305/699/22 +f 300/682/45 308/693/49 307/697/15 +f 298/683/41 306/698/51 305/699/22 +f 295/694/47 303/696/50 302/692/20 +f 326/703/53 325/723/69 313/704/54 +f 321/706/56 332/725/70 320/707/57 +f 323/709/58 322/726/71 310/710/59 +f 330/712/61 329/727/72 317/713/62 +f 327/715/63 326/703/53 314/705/55 +f 324/717/64 323/709/58 311/711/60 +f 331/719/65 330/712/61 318/714/17 +f 328/721/67 327/715/63 315/716/16 +f 325/723/69 324/770/64 312/724/18 +f 332/725/70 331/719/65 319/720/66 +f 322/726/71 321/706/56 309/708/19 +f 329/727/72 328/721/67 316/722/68 +f 333/728/73 335/730/74 336/731/75 +f 336/731/75 335/733/74 338/735/77 +f 339/736/78 338/737/77 340/739/79 +f 340/741/79 342/744/82 343/742/81 +f 342/745/82 344/748/84 345/746/83 +f 344/749/84 346/752/86 347/750/85 +f 346/753/86 348/756/88 349/754/87 +f 348/757/88 350/760/90 351/758/89 +f 350/761/90 352/763/91 353/764/92 +f 343/742/81 345/746/83 328/721/67 +f 328/721/67 345/746/83 347/750/85 +f 327/715/63 347/750/85 349/754/87 +f 349/754/87 351/758/89 325/723/69 +f 352/765/91 354/767/93 355/768/94 +f 324/770/64 325/723/69 351/758/89 +f 324/717/64 353/769/92 355/768/94 +f 323/709/58 355/768/94 357/774/96 +f 321/706/56 322/726/71 357/774/96 +f 354/771/93 356/773/95 357/774/96 +f 321/706/56 334/732/76 336/731/75 +f 332/725/70 336/731/75 339/736/78 +f 339/736/78 341/740/80 330/712/61 +f 341/740/80 343/742/81 329/727/72 +f 357/774/96 356/775/95 333/777/73 +f 519/778/53 518/798/69 506/779/54 +f 514/781/56 525/800/70 513/782/57 +f 516/784/58 515/801/71 503/785/59 +f 523/787/61 522/802/72 510/788/62 +f 520/790/63 519/778/53 507/780/55 +f 517/792/64 516/784/58 504/786/60 +f 524/794/65 523/787/61 511/789/17 +f 521/796/67 520/790/63 508/791/16 +f 518/798/69 517/845/64 505/799/18 +f 525/800/70 524/794/65 512/795/66 +f 515/801/71 514/781/56 502/783/19 +f 522/802/72 521/796/67 509/797/68 +f 526/803/73 528/805/74 529/806/75 +f 528/808/74 531/810/77 532/811/78 +f 531/812/77 533/814/79 534/815/80 +f 533/816/79 535/819/82 536/817/81 +f 535/820/82 537/823/84 538/821/83 +f 537/824/84 539/827/86 540/825/85 +f 540/825/85 539/830/86 541/828/88 +f 541/832/88 543/835/97 544/833/89 +f 544/833/89 543/836/97 545/838/91 +f 522/802/72 536/817/81 538/821/83 +f 521/796/67 538/821/83 540/825/85 +f 520/790/63 540/825/85 542/829/87 +f 542/829/87 544/833/89 518/798/69 +f 545/840/91 547/842/93 548/843/94 +f 517/845/64 518/798/69 544/833/89 +f 517/792/64 546/844/92 548/843/94 +f 516/784/58 548/843/94 550/849/96 +f 514/781/56 515/801/71 550/849/96 +f 547/846/93 549/848/95 550/849/96 +f 514/781/56 527/807/76 529/806/75 +f 525/800/70 529/806/75 532/811/78 +f 532/811/78 534/815/80 523/787/61 +f 523/787/61 534/815/80 536/817/81 +f 549/850/95 526/852/73 527/807/76 +f 568/853/53 567/873/69 555/854/54 +f 563/856/56 574/875/70 562/857/57 +f 565/859/58 564/876/71 552/860/59 +f 572/862/61 571/877/72 559/863/62 +f 569/865/63 568/853/53 556/855/55 +f 566/867/64 565/859/58 553/861/60 +f 573/869/65 572/862/61 560/864/17 +f 570/871/67 569/865/63 557/866/16 +f 567/873/69 566/920/64 554/874/18 +f 574/875/70 573/869/65 561/870/66 +f 564/876/71 563/856/56 551/858/19 +f 571/877/72 570/871/67 558/872/68 +f 576/881/76 575/878/73 577/880/74 +f 577/883/74 580/885/98 581/886/78 +f 581/886/78 580/887/98 582/889/79 +f 582/891/79 584/894/82 585/892/81 +f 585/892/81 584/897/82 586/895/99 +f 587/896/83 586/901/99 588/899/86 +f 588/903/86 590/906/88 591/904/87 +f 590/907/88 592/910/97 593/908/89 +f 592/911/97 594/913/91 595/914/92 +f 585/892/81 587/896/83 570/871/67 +f 587/896/83 589/900/85 569/865/63 +f 589/900/85 591/904/87 568/853/53 +f 591/904/87 593/908/89 567/873/69 +f 594/915/91 596/917/100 597/918/94 +f 567/873/69 593/908/89 595/914/92 +f 566/867/64 595/919/92 597/918/94 +f 565/859/58 597/918/94 599/924/96 +f 563/856/56 564/876/71 599/924/96 +f 596/921/100 598/923/95 599/924/96 +f 563/856/56 576/881/76 578/882/75 +f 574/875/70 578/882/75 581/886/78 +f 581/886/78 583/890/80 572/862/61 +f 572/862/61 583/890/80 585/892/81 +f 598/925/95 575/927/73 576/881/76 +f 617/928/53 616/948/69 604/929/54 +f 612/931/56 623/950/70 611/932/57 +f 614/934/58 613/951/71 601/935/59 +f 621/937/61 620/952/72 608/938/62 +f 618/940/63 617/928/53 605/930/55 +f 615/942/64 614/934/58 602/936/60 +f 622/944/65 621/937/61 609/939/17 +f 619/946/67 618/940/63 606/941/16 +f 616/948/69 615/995/64 603/949/18 +f 623/950/70 622/944/65 610/945/66 +f 613/951/71 612/931/56 600/933/19 +f 620/952/72 619/946/67 607/947/68 +f 624/953/73 626/955/74 627/956/75 +f 626/958/74 629/960/98 630/961/78 +f 629/962/98 631/964/79 632/965/80 +f 632/965/80 631/968/79 633/966/82 +f 633/970/82 635/973/84 636/971/83 +f 636/971/83 635/976/84 637/974/86 +f 637/978/86 639/981/88 640/979/87 +f 640/979/87 639/984/88 641/982/97 +f 641/986/97 643/988/91 644/989/92 +f 634/967/81 636/971/83 619/946/67 +f 619/946/67 636/971/83 638/975/85 +f 618/940/63 638/975/85 640/979/87 +f 640/979/87 642/983/89 616/948/69 +f 643/990/91 645/992/100 646/993/94 +f 615/995/64 616/948/69 642/983/89 +f 615/942/64 644/994/92 646/993/94 +f 614/934/58 646/993/94 648/999/96 +f 613/951/71 648/999/96 625/957/76 +f 645/996/100 647/998/95 648/999/96 +f 612/931/56 625/957/76 627/956/75 +f 623/950/70 627/956/75 630/961/78 +f 630/961/78 632/965/80 621/937/61 +f 621/937/61 632/965/80 634/967/81 +f 647/1000/95 624/1002/73 625/957/76 +f 656/1003/18 664/1015/105 663/1004/101 +f 654/1006/19 662/1016/106 661/1007/102 +f 652/1009/17 660/1017/107 659/1010/103 +f 650/1012/16 658/1019/108 657/1013/104 +f 649/1014/22 657/1013/104 664/1015/105 +f 655/1005/23 663/1004/101 662/1016/106 +f 653/1008/20 661/1007/102 660/1017/107 +f 651/1018/21 659/1313/103 658/1019/108 +f 658/1020/108 666/1038/122 665/1021/109 +f 664/1015/105 657/1022/104 665/1021/109 +f 662/1016/106 663/1004/101 670/1024/111 +f 661/1026/102 668/1029/114 667/1027/113 +f 664/1015/105 671/1023/110 670/1024/111 +f 662/1016/106 669/1025/112 668/1029/114 +f 671/1023/110 678/1035/120 677/1030/115 +f 668/1029/114 669/1025/112 676/1031/116 +f 665/1021/109 666/1038/122 673/1033/118 +f 665/1021/109 672/1034/119 678/1035/120 +f 670/1024/111 677/1030/115 676/1031/116 +f 668/1029/114 675/1032/117 674/1036/121 +f 659/1040/103 674/1050/121 682/1041/50 +f 672/1043/119 680/1053/22 686/1044/51 +f 659/1045/103 679/1314/14 681/1046/48 +f 677/1030/115 685/1051/15 684/1048/49 +f 675/1049/117 683/1052/20 682/1041/50 +f 677/1030/115 678/1035/120 686/1044/51 +f 675/1049/117 676/1031/116 684/1048/49 +f 672/1043/119 673/1047/118 681/1046/48 +f 694/1054/18 702/1066/105 701/1055/101 +f 692/1057/19 700/1067/106 699/1058/102 +f 690/1060/17 698/1068/107 697/1061/103 +f 688/1063/16 696/1070/108 695/1064/104 +f 687/1065/22 695/1064/104 702/1066/105 +f 693/1056/23 701/1055/101 700/1067/106 +f 691/1059/20 699/1058/102 698/1068/107 +f 689/1069/21 697/1315/103 696/1070/108 +f 695/1071/104 696/1087/108 704/1072/122 +f 695/1071/104 703/1073/109 709/1074/110 +f 701/1055/101 708/1079/111 707/1075/112 +f 699/1076/102 706/1080/114 705/1077/113 +f 701/1055/101 702/1066/105 709/1074/110 +f 700/1067/106 707/1075/112 706/1080/114 +f 709/1074/110 716/1084/120 715/1081/115 +f 707/1075/112 714/1085/116 713/1082/117 +f 704/1072/122 711/1089/118 710/1083/119 +f 709/1074/110 703/1073/109 710/1083/119 +f 708/1079/111 715/1081/115 714/1085/116 +f 705/1077/113 706/1080/114 713/1082/117 +f 712/1091/121 720/1101/50 717/1092/14 +f 716/1084/120 710/1104/119 718/1094/22 +f 711/1096/118 697/1316/103 717/1097/14 +f 715/1081/115 723/1102/15 722/1099/49 +f 713/1100/117 721/1103/20 720/1101/50 +f 716/1084/120 724/1095/51 723/1102/15 +f 714/1085/116 722/1099/49 721/1103/20 +f 711/1096/118 719/1098/48 718/1094/22 +f 740/1105/19 748/1117/126 747/1106/123 +f 738/1108/17 746/1118/127 745/1109/124 +f 736/1111/16 744/1119/128 743/1112/48 +f 734/1114/18 742/1121/129 741/1115/125 +f 733/1116/23 741/1115/125 748/1117/126 +f 739/1107/20 747/1106/123 746/1118/127 +f 737/1110/21 745/1109/124 744/1119/128 +f 735/1120/22 743/1317/48 742/1121/129 +f 742/1122/129 750/1136/139 749/1123/130 +f 748/1117/126 741/1124/125 749/1123/130 +f 746/1118/127 747/1106/123 754/1126/49 +f 744/1128/128 745/1131/124 752/1129/133 +f 747/1106/123 748/1117/126 755/1125/131 +f 746/1118/127 753/1127/132 752/1129/133 +f 754/1126/49 755/1125/131 762/1132/135 +f 752/1129/133 753/1127/132 760/1134/137 +f 750/1136/139 757/1140/142 756/1137/140 +f 749/1123/130 756/1137/140 762/1132/135 +f 754/1126/49 761/1133/136 760/1134/137 +f 752/1129/133 759/1135/138 758/1138/141 +f 743/1142/48 758/1152/141 766/1143/103 +f 756/1145/140 764/1155/23 770/1146/111 +f 743/1147/48 763/1318/14 765/1148/28 +f 761/1133/136 769/1153/15 768/1150/39 +f 759/1151/138 767/1154/21 766/1143/103 +f 762/1132/135 770/1146/111 769/1153/15 +f 759/1151/138 760/1134/137 768/1150/39 +f 756/1145/140 757/1149/142 765/1148/28 +f 778/1156/19 786/1168/126 785/1157/123 +f 776/1159/17 784/1169/127 783/1160/124 +f 774/1162/16 782/1170/128 781/1163/48 +f 772/1165/18 780/1172/129 779/1166/125 +f 771/1167/23 779/1166/125 786/1168/126 +f 777/1158/20 785/1157/123 784/1169/127 +f 775/1161/21 783/1160/124 782/1170/128 +f 773/1171/22 781/1319/48 780/1172/129 +f 779/1173/125 780/1189/129 788/1174/143 +f 779/1173/125 787/1175/130 793/1176/131 +f 784/1169/127 785/1157/123 792/1177/49 +f 783/1179/124 790/1182/133 789/1180/134 +f 785/1157/123 786/1168/126 793/1176/131 +f 784/1169/127 791/1178/144 790/1182/133 +f 793/1176/131 800/1186/135 799/1183/136 +f 791/1178/144 798/1187/137 797/1184/138 +f 788/1174/143 795/1191/142 794/1185/140 +f 787/1175/130 794/1185/140 800/1186/135 +f 792/1177/49 799/1183/136 798/1187/137 +f 789/1180/134 790/1182/133 797/1184/138 +f 796/1193/141 804/1204/103 801/1194/14 +f 800/1186/135 794/1206/140 802/1196/23 +f 795/1198/142 781/1320/48 801/1199/14 +f 798/1187/137 799/1183/136 807/1201/15 +f 796/1193/141 797/1205/138 805/1203/21 +f 799/1183/136 800/1186/135 808/1197/111 +f 798/1187/137 806/1202/39 805/1203/21 +f 795/1198/142 803/1200/28 802/1196/23 +f 824/1207/16 832/1219/148 831/1208/145 +f 822/1210/18 830/1220/149 829/1211/146 +f 820/1213/19 828/1221/150 827/1214/50 +f 818/1216/17 826/1223/151 825/1217/147 +f 817/1218/21 825/1217/147 832/1219/148 +f 823/1209/22 831/1208/145 830/1220/149 +f 821/1212/23 829/1211/146 828/1221/150 +f 819/1222/20 827/1321/50 826/1223/151 +f 826/1224/151 834/1242/164 833/1225/152 +f 832/1219/148 825/1226/147 833/1225/152 +f 830/1220/149 831/1208/145 838/1228/51 +f 828/1230/150 829/1233/146 836/1231/155 +f 831/1208/145 832/1219/148 839/1227/153 +f 830/1220/149 837/1229/154 836/1231/155 +f 839/1227/153 846/1239/162 845/1234/157 +f 836/1231/155 837/1229/154 844/1235/158 +f 833/1225/152 834/1242/164 841/1237/160 +f 833/1225/152 840/1238/161 846/1239/162 +f 838/1228/51 845/1234/157 844/1235/158 +f 836/1231/155 843/1236/159 842/1240/163 +f 827/1244/50 842/1255/163 850/1245/28 +f 840/1247/161 848/1257/21 854/1248/39 +f 827/1249/50 847/1322/14 849/1250/103 +f 844/1235/158 845/1234/157 853/1252/15 +f 843/1254/159 851/1256/23 850/1245/28 +f 845/1234/157 846/1239/162 854/1248/39 +f 844/1235/158 852/1253/111 851/1256/23 +f 840/1247/161 841/1251/160 849/1250/103 +f 862/1258/16 870/1270/148 869/1259/145 +f 860/1261/18 868/1271/149 867/1262/146 +f 858/1264/19 866/1272/150 865/1265/50 +f 856/1267/17 864/1274/151 863/1268/147 +f 855/1269/21 863/1268/147 870/1270/148 +f 861/1260/22 869/1259/145 868/1271/149 +f 859/1263/23 867/1262/146 866/1272/150 +f 857/1273/20 865/1323/50 864/1274/151 +f 863/1275/147 864/1291/151 872/1276/165 +f 863/1275/147 871/1277/166 877/1278/153 +f 869/1259/145 876/1283/51 875/1279/154 +f 867/1280/146 874/1284/155 873/1281/156 +f 869/1259/145 870/1270/148 877/1278/153 +f 868/1271/149 875/1279/154 874/1284/155 +f 877/1278/153 884/1288/162 883/1285/157 +f 875/1279/154 882/1289/158 881/1286/159 +f 872/1276/165 879/1293/160 878/1287/161 +f 871/1277/166 878/1287/161 884/1288/162 +f 876/1283/51 883/1285/157 882/1289/158 +f 873/1281/156 874/1284/155 881/1286/159 +f 880/1295/163 888/1305/28 885/1296/14 +f 884/1288/162 878/1308/161 886/1298/21 +f 879/1300/160 865/1324/50 885/1301/14 +f 883/1285/157 891/1306/15 890/1303/111 +f 880/1295/163 881/1307/159 889/1304/23 +f 884/1288/162 892/1299/39 891/1306/15 +f 882/1289/158 890/1303/111 889/1304/23 +f 879/1300/160 887/1302/103 886/1298/21 diff --git a/src/main/resources/assets/hbm/models/machines/ore_slopper.obj b/src/main/resources/assets/hbm/models/machines/ore_slopper.obj new file mode 100644 index 000000000..0670c20f5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/ore_slopper.obj @@ -0,0 +1,4345 @@ +# Blender v2.79 (sub 0) OBJ File: 'ore_slopper.blend' +# www.blender.org +o Slider +v 1.125000 3.562500 1.437500 +v 1.375000 3.562500 1.437500 +v 1.125000 3.562500 1.187500 +v 1.375000 3.562500 1.187500 +v 1.375000 5.562500 1.187500 +v 1.125000 5.562500 1.187500 +v 1.375000 5.562500 1.437500 +v 1.125000 5.562500 1.437500 +v 1.125000 5.562500 2.937500 +v 1.375000 5.562500 2.937500 +v 1.125000 5.562500 2.687500 +v 1.375000 5.562500 2.687500 +v 1.375000 3.562500 2.687500 +v 1.125000 3.562500 2.687500 +v 1.375000 3.562500 2.937500 +v 1.125000 3.562500 2.937500 +v -1.437500 3.312500 1.500000 +v -1.062500 3.312500 1.500000 +v -1.437500 3.312500 1.125000 +v -1.062500 3.312500 1.125000 +v -1.062500 3.562500 1.125000 +v -1.437500 3.562500 1.125000 +v -1.062500 3.562500 1.500000 +v -1.437500 3.562500 1.500000 +v -1.437500 3.562500 3.000000 +v -1.062500 3.562500 3.000000 +v -1.437500 3.562500 2.625000 +v -1.062500 3.562500 2.625000 +v -1.062500 3.312500 2.625000 +v -1.437500 3.312500 2.625000 +v -1.062500 3.312500 3.000000 +v -1.437500 3.312500 3.000000 +v 1.062500 3.312500 3.000000 +v 1.437500 3.312500 3.000000 +v 1.062500 3.312500 2.625000 +v 1.437500 3.312500 2.625000 +v 1.437500 3.562500 2.625000 +v 1.062500 3.562500 2.625000 +v 1.437500 3.562500 3.000000 +v 1.062500 3.562500 3.000000 +v 1.062500 3.562500 1.500000 +v 1.437500 3.562500 1.500000 +v 1.062500 3.562500 1.125000 +v 1.437500 3.562500 1.125000 +v 1.437500 3.312500 1.125000 +v 1.062500 3.312500 1.125000 +v 1.437500 3.312500 1.500000 +v 1.062500 3.312500 1.500000 +v -1.375000 3.562500 1.437500 +v -1.125000 3.562500 1.437500 +v -1.375000 3.562500 1.187500 +v -1.125000 3.562500 1.187500 +v -1.125000 5.562500 1.187500 +v -1.375000 5.562500 1.187500 +v -1.125000 5.562500 1.437500 +v -1.375000 5.562500 1.437500 +v -1.375000 5.562500 2.937500 +v -1.125000 5.562500 2.937500 +v -1.375000 5.562500 2.687500 +v -1.125000 5.562500 2.687500 +v -1.125000 3.562500 2.687500 +v -1.375000 3.562500 2.687500 +v -1.125000 3.562500 2.937500 +v -1.375000 3.562500 2.937500 +v 1.375000 5.562500 1.187500 +v 1.375000 5.562500 1.437500 +v -1.375000 5.562500 1.187500 +v -1.375000 5.562500 1.437500 +v 1.125000 5.812500 1.437500 +v 1.125000 5.812500 1.187500 +v -1.125000 5.812500 1.187500 +v -1.125000 5.812500 1.437500 +v 1.375000 5.562500 2.937500 +v 1.375000 5.562500 2.687500 +v -1.375000 5.562500 2.937500 +v -1.375000 5.562500 2.687500 +v 1.125000 5.812500 2.937500 +v 1.125000 5.812500 2.687500 +v -1.125000 5.812500 2.687500 +v -1.125000 5.812500 2.937500 +v -1.000000 5.562500 3.062500 +v 1.000000 5.562500 3.062500 +v -1.000000 5.562500 1.062500 +v 1.000000 5.562500 1.062500 +v -1.000000 4.562500 1.062500 +v -1.000000 4.562500 3.062500 +v 1.000000 4.562500 3.062500 +v 1.000000 4.562500 1.062500 +v 0.500000 4.312500 1.562500 +v -0.500000 4.312500 1.562500 +v -0.500000 4.312500 2.562500 +v 0.500000 4.312500 2.562500 +v -0.750000 4.312500 1.312500 +v -0.750000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.750000 4.312500 1.312500 +v -0.500000 4.812500 1.562500 +v -0.500000 4.812500 2.562500 +v 0.500000 4.812500 2.562500 +v 0.500000 4.812500 1.562500 +v 1.187500 4.000000 2.687500 +v 1.187500 4.125000 2.687500 +v 1.187500 4.000000 1.437500 +v 1.187500 4.125000 1.437500 +v 1.312500 4.000000 2.687500 +v 1.312500 4.125000 2.687500 +v 1.312500 4.000000 1.437500 +v 1.312500 4.125000 1.437500 +v -1.312500 4.000000 2.687500 +v -1.312500 4.125000 2.687500 +v -1.312500 4.000000 1.437500 +v -1.312500 4.125000 1.437500 +v -1.187500 4.000000 2.687500 +v -1.187500 4.125000 2.687500 +v -1.187500 4.000000 1.437500 +v -1.187500 4.125000 1.437500 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.658537 0.256410 +vt 0.676829 0.294872 +vt 0.658537 0.294872 +vt 0.676829 0.320513 +vt 0.658537 0.358974 +vt 0.658537 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.695122 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.695122 0.294872 +vt 0.676829 0.320513 +vt 0.676829 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.658537 0.320513 +vt 0.658537 0.294872 +vt 0.658537 0.358974 +vt 0.658537 0.256410 +vt 0.658537 0.256410 +vt 0.676829 0.294872 +vt 0.658537 0.294872 +vt 0.676829 0.320513 +vt 0.658537 0.358974 +vt 0.658537 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.695122 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.695122 0.294872 +vt 0.676829 0.320513 +vt 0.676829 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.658537 0.320513 +vt 0.658537 0.294872 +vt 0.658537 0.358974 +vt 0.658537 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.274390 0.692308 +vt 0.408537 0.717949 +vt 0.274390 0.717949 +vt 0.396341 0.743590 +vt 0.286585 0.769231 +vt 0.286585 0.743590 +vt 0.408537 0.769231 +vt 0.408537 0.743590 +vt 0.274390 0.794872 +vt 0.396341 0.769231 +vt 0.408537 0.794872 +vt 0.274390 0.743590 +vt 0.274390 0.769231 +vt 0.274390 0.692308 +vt 0.408537 0.717949 +vt 0.274390 0.717949 +vt 0.396341 0.743590 +vt 0.286585 0.769231 +vt 0.286585 0.743590 +vt 0.274390 0.794872 +vt 0.396341 0.769231 +vt 0.408537 0.794872 +vt 0.274390 0.743590 +vt 0.274390 0.769231 +vt 0.408537 0.769231 +vt 0.408537 0.743590 +vt 0.512195 0.794872 +vt 0.414634 1.000000 +vt 0.414634 0.794872 +vt 0.609756 0.692308 +vt 0.707317 0.794872 +vt 0.609756 0.794872 +vt 0.414634 0.692308 +vt 0.512195 0.692308 +vt 0.707317 0.692308 +vt 0.804878 0.794872 +vt 0.439024 0.641026 +vt 0.487805 0.589744 +vt 0.487805 0.641026 +vt 0.792683 0.666667 +vt 0.804878 0.692308 +vt 0.597561 0.666667 +vt 0.500000 0.666667 +vt 0.695122 0.666667 +vt 0.780488 0.641026 +vt 0.719512 0.666667 +vt 0.731707 0.641026 +vt 0.585366 0.641026 +vt 0.524390 0.666667 +vt 0.536585 0.641026 +vt 0.426829 0.666667 +vt 0.682927 0.641026 +vt 0.621951 0.666667 +vt 0.634146 0.641026 +vt 0.487805 0.487179 +vt 0.439024 0.589744 +vt 0.439024 0.487179 +vt 0.780488 0.589744 +vt 0.682927 0.589744 +vt 0.585366 0.589744 +vt 0.725610 0.448718 +vt 0.731707 0.320513 +vt 0.731707 0.448718 +vt 0.719512 0.320513 +vt 0.713415 0.448718 +vt 0.713415 0.320513 +vt 0.719512 0.320513 +vt 0.713415 0.448718 +vt 0.713415 0.320513 +vt 0.725610 0.448718 +vt 0.731707 0.320513 +vt 0.731707 0.448718 +vt 0.707317 0.448718 +vt 0.707317 0.320513 +vt 0.725610 0.320513 +vt 0.719512 0.448718 +vt 0.707317 0.448718 +vt 0.707317 0.320513 +vt 0.725610 0.320513 +vt 0.719512 0.448718 +vt 0.487805 0.461538 +vt 0.676829 0.256410 +vt 0.676829 0.358974 +vt 0.731707 0.320513 +vt 0.731707 0.320513 +vt 0.676829 0.358974 +vt 0.676829 0.256410 +vt 0.676829 0.256410 +vt 0.676829 0.358974 +vt 0.731707 0.320513 +vt 0.731707 0.320513 +vt 0.676829 0.358974 +vt 0.676829 0.256410 +vt 0.487805 0.461538 +vt 0.487805 0.461538 +vt 0.487805 0.461538 +vt 0.408537 0.692308 +vt 0.408537 0.692308 +vt 0.512195 1.000000 +vt 0.731707 0.589744 +vt 0.634146 0.589744 +vt 0.536585 0.589744 +vn 1.0000 0.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 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +s off +f 12/1/1 15/2/1 13/3/1 +f 9/4/2 14/5/2 16/6/2 +f 11/7/3 13/3/3 14/5/3 +f 10/8/4 16/9/4 15/2/4 +f 19/10/5 18/11/5 17/12/5 +f 23/13/6 22/14/6 24/15/6 +f 18/11/4 24/15/4 17/12/4 +f 19/16/3 21/17/3 20/18/3 +f 17/19/2 22/20/2 19/16/2 +f 20/18/1 23/13/1 18/11/1 +f 29/21/1 26/22/1 31/23/1 +f 32/24/2 27/25/2 30/26/2 +f 30/26/3 28/27/3 29/21/3 +f 31/23/4 25/28/4 32/29/4 +f 26/22/6 27/30/6 25/28/6 +f 30/31/5 31/23/5 32/29/5 +f 35/32/5 34/33/5 33/34/5 +f 39/35/6 38/36/6 40/37/6 +f 34/33/4 40/37/4 33/34/4 +f 35/38/3 37/39/3 36/40/3 +f 33/41/2 38/42/2 35/38/2 +f 36/40/1 39/35/1 34/33/1 +f 45/43/1 42/44/1 47/45/1 +f 48/46/2 43/47/2 46/48/2 +f 46/48/3 44/49/3 45/43/3 +f 47/45/4 41/50/4 48/51/4 +f 42/44/6 43/52/6 41/50/6 +f 46/53/5 47/45/5 48/51/5 +f 5/54/1 2/55/1 4/56/1 +f 8/57/2 3/58/2 1/59/2 +f 6/60/3 4/56/3 3/58/3 +f 7/61/4 1/62/4 2/55/4 +f 60/63/1 63/64/1 61/65/1 +f 57/66/2 62/67/2 64/68/2 +f 59/69/3 61/65/3 62/67/3 +f 58/70/4 64/71/4 63/64/4 +f 53/72/1 50/73/1 52/74/1 +f 56/75/2 51/76/2 49/77/2 +f 54/78/3 52/74/3 51/76/3 +f 55/79/4 49/80/4 50/73/4 +f 66/81/5 67/82/5 65/83/5 +f 71/84/6 69/85/6 70/86/6 +f 67/82/3 70/86/3 65/83/3 +f 68/87/7 71/84/7 67/88/7 +f 66/89/4 72/90/4 68/91/4 +f 65/92/8 69/85/8 66/93/8 +f 73/94/5 76/95/5 74/96/5 +f 79/97/6 77/98/6 78/99/6 +f 73/100/4 80/101/4 75/102/4 +f 74/103/8 77/98/8 73/104/8 +f 76/95/3 78/99/3 74/96/3 +f 75/105/7 79/97/7 76/106/7 +f 82/107/6 83/108/6 81/109/6 +f 88/110/3 83/111/3 84/112/3 +f 86/113/4 82/107/4 81/109/4 +f 87/114/1 84/112/1 82/107/1 +f 85/115/2 81/116/2 83/111/2 +f 91/117/3 99/118/3 92/119/3 +f 85/115/9 94/120/9 86/121/9 +f 87/114/10 96/122/10 88/110/10 +f 86/113/11 95/123/11 87/114/11 +f 88/110/12 93/124/12 85/115/12 +f 91/125/5 93/126/5 90/127/5 +f 89/128/5 95/129/5 92/130/5 +f 92/119/5 94/131/5 91/117/5 +f 90/132/5 96/133/5 89/134/5 +f 100/135/5 98/136/5 97/137/5 +f 90/127/1 98/138/1 91/125/1 +f 89/134/4 97/139/4 90/132/4 +f 92/130/2 100/140/2 89/128/2 +f 102/141/2 103/142/2 101/143/2 +f 116/144/1 113/145/1 115/146/1 +f 108/147/1 105/148/1 107/149/1 +f 110/150/2 111/151/2 109/152/2 +f 107/149/5 101/153/5 103/154/5 +f 104/155/6 106/156/6 108/147/6 +f 115/146/5 109/157/5 111/158/5 +f 112/159/6 114/160/6 116/144/6 +f 12/1/1 10/8/1 15/2/1 +f 9/4/2 11/7/2 14/5/2 +f 11/7/3 12/1/3 13/3/3 +f 10/8/4 9/161/4 16/9/4 +f 19/10/5 20/162/5 18/11/5 +f 23/13/6 21/163/6 22/14/6 +f 18/11/4 23/13/4 24/15/4 +f 19/16/3 22/20/3 21/17/3 +f 17/19/2 24/164/2 22/20/2 +f 20/18/1 21/17/1 23/13/1 +f 29/21/1 28/27/1 26/22/1 +f 32/24/2 25/165/2 27/25/2 +f 30/26/3 27/25/3 28/27/3 +f 31/23/4 26/22/4 25/28/4 +f 26/22/6 28/166/6 27/30/6 +f 30/31/5 29/167/5 31/23/5 +f 35/32/5 36/168/5 34/33/5 +f 39/35/6 37/169/6 38/36/6 +f 34/33/4 39/35/4 40/37/4 +f 35/38/3 38/42/3 37/39/3 +f 33/41/2 40/170/2 38/42/2 +f 36/40/1 37/39/1 39/35/1 +f 45/43/1 44/49/1 42/44/1 +f 48/46/2 41/171/2 43/47/2 +f 46/48/3 43/47/3 44/49/3 +f 47/45/4 42/44/4 41/50/4 +f 42/44/6 44/172/6 43/52/6 +f 46/53/5 45/173/5 47/45/5 +f 5/54/1 7/61/1 2/55/1 +f 8/57/2 6/60/2 3/58/2 +f 6/60/3 5/54/3 4/56/3 +f 7/61/4 8/174/4 1/62/4 +f 60/63/1 58/70/1 63/64/1 +f 57/66/2 59/69/2 62/67/2 +f 59/69/3 60/63/3 61/65/3 +f 58/70/4 57/175/4 64/71/4 +f 53/72/1 55/79/1 50/73/1 +f 56/75/2 54/78/2 51/76/2 +f 54/78/3 53/72/3 52/74/3 +f 55/79/4 56/176/4 49/80/4 +f 66/81/5 68/177/5 67/82/5 +f 71/84/6 72/90/6 69/85/6 +f 67/82/3 71/84/3 70/86/3 +f 68/87/7 72/90/7 71/84/7 +f 66/89/4 69/85/4 72/90/4 +f 65/92/8 70/86/8 69/85/8 +f 73/94/5 75/178/5 76/95/5 +f 79/97/6 80/101/6 77/98/6 +f 73/100/4 77/98/4 80/101/4 +f 74/103/8 78/99/8 77/98/8 +f 76/95/3 79/97/3 78/99/3 +f 75/105/7 80/101/7 79/97/7 +f 82/107/6 84/179/6 83/108/6 +f 88/110/3 85/115/3 83/111/3 +f 86/113/4 87/114/4 82/107/4 +f 87/114/1 88/110/1 84/112/1 +f 85/115/2 86/121/2 81/116/2 +f 91/117/3 98/136/3 99/118/3 +f 85/115/9 93/126/9 94/120/9 +f 87/114/10 95/129/10 96/122/10 +f 86/113/11 94/131/11 95/123/11 +f 88/110/12 96/133/12 93/124/12 +f 91/125/5 94/120/5 93/126/5 +f 89/128/5 96/122/5 95/129/5 +f 92/119/5 95/123/5 94/131/5 +f 90/132/5 93/124/5 96/133/5 +f 100/135/5 99/118/5 98/136/5 +f 90/127/1 97/180/1 98/138/1 +f 89/134/4 100/181/4 97/139/4 +f 92/130/2 99/182/2 100/140/2 +f 102/141/2 104/155/2 103/142/2 +f 116/144/1 114/160/1 113/145/1 +f 108/147/1 106/156/1 105/148/1 +f 110/150/2 112/159/2 111/151/2 +f 107/149/5 105/148/5 101/153/5 +f 104/155/6 102/141/6 106/156/6 +f 115/146/5 113/145/5 109/157/5 +f 112/159/6 110/150/6 114/160/6 +o Hydraulics +v -0.750000 4.312500 2.812500 +v -0.500000 4.312500 2.812500 +v -0.750000 4.312500 2.562500 +v -0.500000 4.312500 2.562500 +v -0.750000 5.562500 2.562500 +v -0.750000 5.562500 2.812500 +v -0.500000 5.562500 2.812500 +v -0.500000 5.562500 2.562500 +v -0.750000 4.312500 1.562500 +v -0.500000 4.312500 1.562500 +v -0.750000 4.312500 1.312500 +v -0.500000 4.312500 1.312500 +v -0.750000 5.562500 1.312500 +v -0.750000 5.562500 1.562500 +v -0.500000 5.562500 1.562500 +v -0.500000 5.562500 1.312500 +v 0.500000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.500000 4.312500 2.562500 +v 0.750000 4.312500 2.562500 +v 0.500000 5.562500 2.562500 +v 0.500000 5.562500 2.812500 +v 0.750000 5.562500 2.812500 +v 0.750000 5.562500 2.562500 +v 0.500000 4.312500 1.562500 +v 0.750000 4.312500 1.562500 +v 0.500000 4.312500 1.312500 +v 0.750000 4.312500 1.312500 +v 0.500000 5.562500 1.312500 +v 0.500000 5.562500 1.562500 +v 0.750000 5.562500 1.562500 +v 0.750000 5.562500 1.312500 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.780488 0.230769 +vt 0.780488 0.230769 +vt 0.817073 0.384615 +vt 0.817073 0.384615 +vt 0.780488 0.230769 +vt 0.780488 0.230769 +vt 0.817073 0.384615 +vt 0.817073 0.384615 +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 +s off +f 119/183/13 118/184/13 117/185/13 +f 127/186/13 126/187/13 125/188/13 +f 117/189/14 121/190/14 119/191/14 +f 119/191/15 124/192/15 120/193/15 +f 118/184/16 122/194/16 117/185/16 +f 120/193/17 123/195/17 118/184/17 +f 125/196/14 129/197/14 127/198/14 +f 127/198/15 132/199/15 128/200/15 +f 126/187/16 130/201/16 125/188/16 +f 128/200/17 131/202/17 126/187/17 +f 135/203/13 134/204/13 133/205/13 +f 143/206/13 142/207/13 141/208/13 +f 133/209/14 137/210/14 135/211/14 +f 135/211/15 140/212/15 136/213/15 +f 134/204/16 138/214/16 133/205/16 +f 136/213/17 139/215/17 134/204/17 +f 141/216/14 145/217/14 143/218/14 +f 143/218/15 148/219/15 144/220/15 +f 142/207/16 146/221/16 141/208/16 +f 144/220/17 147/222/17 142/207/17 +f 119/183/13 120/223/13 118/184/13 +f 127/186/13 128/224/13 126/187/13 +f 117/189/14 122/225/14 121/190/14 +f 119/191/15 121/190/15 124/192/15 +f 118/184/16 123/195/16 122/194/16 +f 120/193/17 124/192/17 123/195/17 +f 125/196/14 130/226/14 129/197/14 +f 127/198/15 129/197/15 132/199/15 +f 126/187/16 131/202/16 130/201/16 +f 128/200/17 132/199/17 131/202/17 +f 135/203/13 136/227/13 134/204/13 +f 143/206/13 144/228/13 142/207/13 +f 133/209/14 138/229/14 137/210/14 +f 135/211/15 137/210/15 140/212/15 +f 134/204/16 139/215/16 138/214/16 +f 136/213/17 140/212/17 139/215/17 +f 141/216/14 146/230/14 145/217/14 +f 143/218/15 145/217/15 148/219/15 +f 142/207/16 147/222/16 146/221/16 +f 144/220/17 148/219/17 147/222/17 +o Bucket +v -0.500000 4.062500 1.562500 +v -0.500000 4.062500 2.562500 +v 0.500000 4.062500 2.562500 +v 0.500000 4.062500 1.562500 +v 0.750000 4.312500 1.312500 +v -0.750000 4.312500 1.312500 +v -0.750000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.250000 4.187500 1.812500 +v -0.250000 4.187500 1.812500 +v -0.250000 4.187500 2.312500 +v 0.250000 4.187500 2.312500 +v -0.750000 4.562500 1.312500 +v -0.750000 4.562500 2.812500 +v 0.750000 4.562500 2.812500 +v 0.750000 4.562500 1.312500 +v -0.687500 4.312500 2.750000 +v -0.562500 4.312500 2.750000 +v -0.687500 4.312500 2.625000 +v -0.562500 4.312500 2.625000 +v -0.687500 5.562500 2.750000 +v -0.562500 5.562500 2.750000 +v -0.687500 5.562500 2.625000 +v -0.562500 5.562500 2.625000 +v 0.562500 4.312500 2.750000 +v 0.687500 4.312500 2.750000 +v 0.562500 4.312500 2.625000 +v 0.687500 4.312500 2.625000 +v 0.562500 5.562500 2.750000 +v 0.687500 5.562500 2.750000 +v 0.562500 5.562500 2.625000 +v 0.687500 5.562500 2.625000 +v -0.687500 4.312500 1.500000 +v -0.562500 4.312500 1.500000 +v -0.687500 4.312500 1.375000 +v -0.562500 4.312500 1.375000 +v -0.687500 5.562500 1.500000 +v -0.562500 5.562500 1.500000 +v -0.687500 5.562500 1.375000 +v -0.562500 5.562500 1.375000 +v 0.562500 4.312500 1.500000 +v 0.687500 4.312500 1.500000 +v 0.562500 4.312500 1.375000 +v 0.687500 4.312500 1.375000 +v 0.562500 5.562500 1.500000 +v 0.687500 5.562500 1.500000 +v 0.562500 5.562500 1.375000 +v 0.687500 5.562500 1.375000 +vt 0.829268 0.410256 +vt 0.890244 0.384615 +vt 0.902439 0.410256 +vt 0.841463 0.282051 +vt 0.890244 0.282051 +vt 0.902439 0.256410 +vt 0.829268 0.256410 +vt 0.841463 0.384615 +vt 0.902439 0.230769 +vt 0.914634 0.410256 +vt 0.829268 0.435897 +vt 0.817073 0.256410 +vt 0.878049 0.538462 +vt 0.853659 0.487179 +vt 0.878049 0.487179 +vt 0.902439 0.589744 +vt 0.853659 0.538462 +vt 0.829268 0.589744 +vt 0.902439 0.435897 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.829268 0.230769 +vt 0.914634 0.256410 +vt 0.817073 0.410256 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6000 0.8000 0.0000 +vn -0.6000 0.8000 0.0000 +vn 0.0000 0.8000 -0.6000 +vn 0.0000 0.8000 0.6000 +s off +f 153/231/18 149/232/18 154/233/18 +f 149/232/19 151/234/19 150/235/19 +f 155/236/20 151/234/20 156/237/20 +f 156/237/21 152/238/21 153/231/21 +f 154/233/22 150/235/22 155/236/22 +f 156/237/23 162/239/23 155/236/23 +f 155/236/24 161/240/24 154/233/24 +f 154/233/25 164/241/25 153/231/25 +f 153/231/26 163/242/26 156/237/26 +f 159/243/27 157/244/27 158/245/27 +f 158/245/28 162/246/28 159/243/28 +f 160/247/29 164/241/29 157/244/29 +f 159/243/30 163/248/30 160/247/30 +f 157/244/31 161/249/31 158/245/31 +f 175/250/25 180/251/25 176/252/25 +f 174/253/23 177/254/23 173/255/23 +f 167/256/25 172/257/25 168/258/25 +f 166/259/23 169/260/23 165/261/23 +f 168/258/26 170/262/26 166/259/26 +f 165/263/24 171/264/24 167/256/24 +f 176/252/26 178/265/26 174/253/26 +f 173/266/24 179/267/24 175/250/24 +f 191/268/25 196/269/25 192/270/25 +f 190/271/23 193/272/23 189/273/23 +f 183/274/25 188/275/25 184/276/25 +f 182/277/23 185/278/23 181/279/23 +f 184/276/26 186/280/26 182/277/26 +f 181/281/24 187/282/24 183/274/24 +f 192/270/26 194/283/26 190/271/26 +f 189/284/24 195/285/24 191/268/24 +f 153/231/18 152/238/18 149/232/18 +f 149/232/19 152/238/19 151/234/19 +f 155/236/20 150/235/20 151/234/20 +f 156/237/21 151/234/21 152/238/21 +f 154/233/22 149/232/22 150/235/22 +f 156/237/23 163/286/23 162/239/23 +f 155/236/24 162/287/24 161/240/24 +f 154/233/25 161/249/25 164/241/25 +f 153/231/26 164/288/26 163/242/26 +f 159/243/27 160/247/27 157/244/27 +f 158/245/28 161/249/28 162/246/28 +f 160/247/29 163/248/29 164/241/29 +f 159/243/30 162/246/30 163/248/30 +f 157/244/31 164/241/31 161/249/31 +f 175/250/25 179/267/25 180/251/25 +f 174/253/23 178/265/23 177/254/23 +f 167/256/25 171/264/25 172/257/25 +f 166/259/23 170/262/23 169/260/23 +f 168/258/26 172/257/26 170/262/26 +f 165/263/24 169/289/24 171/264/24 +f 176/252/26 180/251/26 178/265/26 +f 173/266/24 177/290/24 179/267/24 +f 191/268/25 195/285/25 196/269/25 +f 190/271/23 194/283/23 193/272/23 +f 183/274/25 187/282/25 188/275/25 +f 182/277/23 186/280/23 185/278/23 +f 184/276/26 188/275/26 186/280/26 +f 181/281/24 185/291/24 187/282/24 +f 192/270/26 196/269/26 194/283/26 +f 189/284/24 193/292/24 195/285/24 +o BladesRight +v -0.375000 3.187500 0.000000 +v -0.156250 3.128886 0.000000 +v 0.003886 2.968750 0.000000 +v 0.062500 2.750000 0.000000 +v 0.003886 2.531250 0.000000 +v -0.156250 2.371114 0.000000 +v -0.375000 2.312500 0.000000 +v -0.593750 2.371114 0.000000 +v -0.753886 2.531250 0.000000 +v -0.812500 2.750000 0.000000 +v -0.753886 2.968750 0.000000 +v -0.593750 3.128886 0.000000 +v -0.375000 3.062500 -0.250000 +v -0.218750 3.020633 -0.250000 +v -0.104367 2.906250 -0.250000 +v -0.062500 2.750000 -0.250000 +v -0.104367 2.593750 -0.250000 +v -0.218750 2.479367 -0.250000 +v -0.375000 2.437500 -0.250000 +v -0.531250 2.479367 -0.250000 +v -0.645633 2.593750 -0.250000 +v -0.687500 2.750000 -0.250000 +v -0.645633 2.906250 -0.250000 +v -0.531250 3.020633 -0.250000 +v -0.375000 3.187500 -0.250000 +v -0.156250 3.128886 -0.250000 +v 0.003886 2.968750 -0.250000 +v 0.062500 2.750000 -0.250000 +v 0.003886 2.531250 -0.250000 +v -0.156250 2.371114 -0.250000 +v -0.375000 2.312500 -0.250000 +v -0.593750 2.371114 -0.250000 +v -0.753886 2.531250 -0.250000 +v -0.812500 2.750000 -0.250000 +v -0.753886 2.968750 -0.250000 +v -0.593750 3.128886 -0.250000 +v -0.375000 3.062500 -0.500000 +v -0.218750 3.020633 -0.500000 +v -0.104367 2.906250 -0.500000 +v -0.062500 2.750000 -0.500000 +v -0.104367 2.593750 -0.500000 +v -0.218750 2.479367 -0.500000 +v -0.375000 2.437500 -0.500000 +v -0.531250 2.479367 -0.500000 +v -0.645633 2.593750 -0.500000 +v -0.687500 2.750000 -0.500000 +v -0.645633 2.906250 -0.500000 +v -0.531250 3.020633 -0.500000 +v -0.375000 3.187500 -1.500000 +v -0.156250 3.128886 -1.500000 +v 0.003886 2.968750 -1.500000 +v 0.062500 2.750000 -1.500000 +v 0.003886 2.531250 -1.500000 +v -0.156250 2.371114 -1.500000 +v -0.375000 2.312500 -1.500000 +v -0.593750 2.371114 -1.500000 +v -0.753886 2.531250 -1.500000 +v -0.812500 2.750000 -1.500000 +v -0.753886 2.968750 -1.500000 +v -0.593750 3.128886 -1.500000 +v -0.375000 3.062500 -1.750000 +v -0.218750 3.020633 -1.750000 +v -0.104367 2.906250 -1.750000 +v -0.062500 2.750000 -1.750000 +v -0.104367 2.593750 -1.750000 +v -0.218750 2.479367 -1.750000 +v -0.375000 2.437500 -1.750000 +v -0.531250 2.479367 -1.750000 +v -0.645633 2.593750 -1.750000 +v -0.687500 2.750000 -1.750000 +v -0.645633 2.906250 -1.750000 +v -0.531250 3.020633 -1.750000 +v -0.375000 3.187500 -1.750000 +v -0.156250 3.128886 -1.750000 +v 0.003886 2.968750 -1.750000 +v 0.062500 2.750000 -1.750000 +v 0.003886 2.531250 -1.750000 +v -0.156250 2.371114 -1.750000 +v -0.375000 2.312500 -1.750000 +v -0.593750 2.371114 -1.750000 +v -0.753886 2.531250 -1.750000 +v -0.812500 2.750000 -1.750000 +v -0.753886 2.968750 -1.750000 +v -0.593750 3.128886 -1.750000 +v -0.375000 3.062500 -2.000000 +v -0.218750 3.020633 -2.000000 +v -0.104367 2.906250 -2.000000 +v -0.062500 2.750000 -2.000000 +v -0.104367 2.593750 -2.000000 +v -0.218750 2.479367 -2.000000 +v -0.375000 2.437500 -2.000000 +v -0.531250 2.479367 -2.000000 +v -0.645633 2.593750 -2.000000 +v -0.687500 2.750000 -2.000000 +v -0.645633 2.906250 -2.000000 +v -0.531250 3.020633 -2.000000 +v -0.531250 3.020633 -1.500000 +v -0.645633 2.906250 -1.500000 +v -0.687500 2.750000 -1.500000 +v -0.645633 2.593750 -1.500000 +v -0.531250 2.479367 -1.500000 +v -0.375000 2.437500 -1.500000 +v -0.218750 2.479367 -1.500000 +v -0.104367 2.593750 -1.500000 +v -0.062500 2.750000 -1.500000 +v -0.104367 2.906250 -1.500000 +v -0.218750 3.020633 -1.500000 +v -0.375000 3.062500 -1.500000 +v -0.593750 3.128886 -1.250000 +v -0.753886 2.968750 -1.250000 +v -0.812500 2.750000 -1.250000 +v -0.753886 2.531250 -1.250000 +v -0.593750 2.371114 -1.250000 +v -0.375000 2.312500 -1.250000 +v -0.156250 2.371114 -1.250000 +v 0.003886 2.531250 -1.250000 +v 0.062500 2.750000 -1.250000 +v 0.003886 2.968750 -1.250000 +v -0.156250 3.128886 -1.250000 +v -0.375000 3.187500 -1.250000 +v -0.531250 3.020633 -1.250000 +v -0.645633 2.906250 -1.250000 +v -0.687500 2.750000 -1.250000 +v -0.645633 2.593750 -1.250000 +v -0.531250 2.479367 -1.250000 +v -0.375000 2.437500 -1.250000 +v -0.218750 2.479367 -1.250000 +v -0.104367 2.593750 -1.250000 +v -0.062500 2.750000 -1.250000 +v -0.104367 2.906250 -1.250000 +v -0.218750 3.020633 -1.250000 +v -0.375000 3.062500 -1.250000 +v -0.593750 3.128886 -1.000000 +v -0.753886 2.968750 -1.000000 +v -0.812500 2.750000 -1.000000 +v -0.753886 2.531250 -1.000000 +v -0.593750 2.371114 -1.000000 +v -0.375000 2.312500 -1.000000 +v -0.156250 2.371114 -1.000000 +v 0.003886 2.531250 -1.000000 +v 0.062500 2.750000 -1.000000 +v 0.003886 2.968750 -1.000000 +v -0.156250 3.128886 -1.000000 +v -0.375000 3.187500 -1.000000 +v -0.531250 3.020633 -1.000000 +v -0.645633 2.906250 -1.000000 +v -0.687500 2.750000 -1.000000 +v -0.645633 2.593750 -1.000000 +v -0.531250 2.479367 -1.000000 +v -0.375000 2.437500 -1.000000 +v -0.218750 2.479367 -1.000000 +v -0.104367 2.593750 -1.000000 +v -0.062500 2.750000 -1.000000 +v -0.104367 2.906250 -1.000000 +v -0.218750 3.020633 -1.000000 +v -0.375000 3.062500 -1.000000 +v -0.593750 3.128886 -0.750000 +v -0.753886 2.968750 -0.750000 +v -0.812500 2.750000 -0.750000 +v -0.753886 2.531250 -0.750000 +v -0.593750 2.371114 -0.750000 +v -0.375000 2.312500 -0.750000 +v -0.156250 2.371114 -0.750000 +v 0.003886 2.531250 -0.750000 +v 0.062500 2.750000 -0.750000 +v 0.003886 2.968750 -0.750000 +v -0.156250 3.128886 -0.750000 +v -0.375000 3.187500 -0.750000 +v -0.531250 3.020633 -0.750000 +v -0.645633 2.906250 -0.750000 +v -0.687500 2.750000 -0.750000 +v -0.645633 2.593750 -0.750000 +v -0.531250 2.479367 -0.750000 +v -0.375000 2.437500 -0.750000 +v -0.218750 2.479367 -0.750000 +v -0.104367 2.593750 -0.750000 +v -0.062500 2.750000 -0.750000 +v -0.104367 2.906250 -0.750000 +v -0.218750 3.020633 -0.750000 +v -0.375000 3.062500 -0.750000 +v -0.593750 3.128886 -0.500000 +v -0.753886 2.968750 -0.500000 +v -0.812500 2.750000 -0.500000 +v -0.753886 2.531250 -0.500000 +v -0.593750 2.371114 -0.500000 +v -0.375000 2.312500 -0.500000 +v -0.156250 2.371114 -0.500000 +v 0.003886 2.531250 -0.500000 +v 0.062500 2.750000 -0.500000 +v 0.003886 2.968750 -0.500000 +v -0.156250 3.128886 -0.500000 +v -0.375000 3.187500 -0.500000 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.076220 0.794872 +vt 0.085366 0.807692 +vt 0.073171 0.807692 +vt 0.094512 0.794872 +vt 0.088415 0.794872 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.112805 0.794872 +vt 0.121951 0.807692 +vt 0.109756 0.807692 +vt 0.125000 0.794872 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.137195 0.794872 +vt 0.003049 0.794872 +vt 0.012195 0.807692 +vt 0.000000 0.807692 +vt 0.015244 0.794872 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.027439 0.794872 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.012195 0.807692 +vt 0.015244 0.794872 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.121951 0.807692 +vt 0.125000 0.794872 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.807692 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.036585 0.807692 +vt 0.045732 0.794872 +vt 0.048780 0.807692 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.015244 0.794872 +vt 0.012195 0.807692 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.146341 0.807692 +vt 0.125000 0.794872 +vt 0.121951 0.807692 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.097561 0.807692 +vt 0.106707 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.070122 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt -0.000000 0.833333 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt 0.000000 0.833333 +vt 0.082317 0.794872 +vt 0.118902 0.794872 +vt 0.131098 0.794872 +vt 0.146341 0.807692 +vt 0.009146 0.794872 +vt 0.021341 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.009146 0.794872 +vt 0.146341 0.807692 +vt 0.118902 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.057927 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.039634 0.794872 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.009146 0.794872 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.118902 0.794872 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.134146 0.807692 +vt 0.121951 0.807692 +vt 0.060976 0.807692 +vt 0.085366 0.807692 +vt 0.036585 0.807692 +vt 0.024390 0.807692 +vt 0.097561 0.807692 +vt 0.048780 0.807692 +vt 0.012195 0.807692 +vt -0.000000 0.807692 +vt 0.109756 0.807692 +vt 0.073171 0.807692 +vt 0.106707 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.057927 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.082317 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.146341 0.807692 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.5000 0.8660 -0.0000 +vn 0.8660 0.5000 -0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 0.0000 -0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 219/293/32 232/294/32 220/295/32 +f 232/294/32 209/296/32 220/297/32 +f 209/298/32 222/299/32 210/300/32 +f 210/301/32 223/302/32 211/303/32 +f 223/302/32 212/304/32 211/305/32 +f 212/306/32 225/307/32 213/308/32 +f 213/309/32 226/310/32 214/311/32 +f 226/310/32 215/312/32 214/313/32 +f 215/314/32 228/315/32 216/316/32 +f 216/317/32 229/318/32 217/319/32 +f 229/318/32 218/320/32 217/321/32 +f 230/322/32 219/323/32 218/324/32 +f 267/325/32 280/326/32 268/327/32 +f 280/326/32 257/328/32 268/329/32 +f 257/330/32 270/331/32 258/332/32 +f 258/333/32 271/334/32 259/335/32 +f 271/334/32 260/336/32 259/337/32 +f 260/338/32 273/339/32 261/340/32 +f 261/341/32 274/342/32 262/343/32 +f 274/342/32 263/344/32 262/345/32 +f 263/346/32 276/347/32 264/348/32 +f 264/349/32 277/350/32 265/351/32 +f 277/350/32 266/352/32 265/353/32 +f 278/354/32 267/355/32 266/356/32 +f 293/357/33 255/358/33 294/359/33 +f 304/360/33 256/361/33 293/362/33 +f 304/363/33 246/364/33 245/365/33 +f 302/366/33 246/364/33 303/367/33 +f 301/368/33 247/369/33 302/370/33 +f 301/371/33 249/372/33 248/373/33 +f 300/374/33 250/375/33 249/372/33 +f 298/376/33 250/375/33 299/377/33 +f 298/378/33 252/379/33 251/380/33 +f 297/381/33 253/382/33 252/379/33 +f 295/383/33 253/382/33 296/384/33 +f 294/385/33 254/386/33 295/387/33 +f 307/388/32 318/389/32 319/390/32 +f 308/391/32 319/392/32 320/393/32 +f 321/394/32 308/391/32 320/395/32 +f 322/396/32 309/397/32 321/398/32 +f 311/399/32 322/400/32 323/401/32 +f 324/402/32 311/399/32 323/403/32 +f 325/404/32 312/405/32 324/406/32 +f 314/407/32 325/408/32 326/409/32 +f 327/410/32 314/407/32 326/411/32 +f 328/412/32 315/413/32 327/414/32 +f 305/415/32 328/416/32 317/417/32 +f 318/418/32 305/415/32 317/419/32 +f 243/420/33 379/421/33 242/422/33 +f 242/423/33 380/424/33 241/425/33 +f 241/426/33 381/427/33 240/428/33 +f 239/429/33 381/427/33 382/430/33 +f 239/431/33 383/432/33 238/433/33 +f 238/434/33 384/435/33 237/436/33 +f 236/437/33 384/435/33 385/438/33 +f 236/439/33 386/440/33 235/441/33 +f 234/442/33 386/440/33 387/443/33 +f 233/444/33 387/443/33 388/445/33 +f 233/446/33 377/447/33 244/448/33 +f 243/449/33 377/447/33 378/450/33 +f 355/451/32 366/452/32 367/453/32 +f 356/454/32 367/455/32 368/456/32 +f 369/457/32 356/454/32 368/458/32 +f 370/459/32 357/460/32 369/461/32 +f 359/462/32 370/463/32 371/464/32 +f 372/465/32 359/462/32 371/466/32 +f 373/467/32 360/468/32 372/469/32 +f 362/470/32 373/471/32 374/472/32 +f 375/473/32 362/470/32 374/474/32 +f 376/475/32 363/476/32 375/477/32 +f 353/478/32 376/479/32 365/480/32 +f 366/481/32 353/478/32 365/482/32 +f 331/483/33 342/484/33 330/485/33 +f 332/486/33 343/487/33 331/483/33 +f 345/488/33 332/486/33 333/489/33 +f 346/490/33 333/489/33 334/491/33 +f 335/492/33 346/493/33 334/494/33 +f 348/495/33 335/492/33 336/496/33 +f 349/497/33 336/496/33 337/498/33 +f 338/499/33 349/500/33 337/498/33 +f 351/501/33 338/499/33 339/502/33 +f 352/503/33 339/502/33 340/504/33 +f 329/505/33 352/506/33 340/504/33 +f 342/507/33 329/505/33 330/485/33 +f 219/293/32 231/508/32 232/294/32 +f 232/294/32 221/509/32 209/296/32 +f 209/298/32 221/509/32 222/299/32 +f 210/301/32 222/299/32 223/302/32 +f 223/302/32 224/510/32 212/304/32 +f 212/306/32 224/510/32 225/307/32 +f 213/309/32 225/307/32 226/310/32 +f 226/310/32 227/511/32 215/312/32 +f 215/314/32 227/512/32 228/315/32 +f 216/317/32 228/315/32 229/318/32 +f 229/318/32 230/322/32 218/320/32 +f 230/322/32 231/508/32 219/323/32 +f 267/325/32 279/513/32 280/326/32 +f 280/326/32 269/514/32 257/328/32 +f 257/330/32 269/514/32 270/331/32 +f 258/333/32 270/331/32 271/334/32 +f 271/334/32 272/515/32 260/336/32 +f 260/338/32 272/515/32 273/339/32 +f 261/341/32 273/339/32 274/342/32 +f 274/342/32 275/516/32 263/344/32 +f 263/346/32 275/517/32 276/347/32 +f 264/349/32 276/347/32 277/350/32 +f 277/350/32 278/354/32 266/352/32 +f 278/354/32 279/513/32 267/355/32 +f 293/357/33 256/361/33 255/358/33 +f 304/360/33 245/365/33 256/361/33 +f 304/363/33 303/518/33 246/364/33 +f 302/366/33 247/369/33 246/364/33 +f 301/368/33 248/373/33 247/369/33 +f 301/371/33 300/519/33 249/372/33 +f 300/374/33 299/520/33 250/375/33 +f 298/376/33 251/521/33 250/375/33 +f 298/378/33 297/522/33 252/379/33 +f 297/381/33 296/523/33 253/382/33 +f 295/383/33 254/386/33 253/382/33 +f 294/385/33 255/358/33 254/386/33 +f 307/388/32 306/524/32 318/389/32 +f 308/391/32 307/388/32 319/392/32 +f 321/394/32 309/397/32 308/391/32 +f 322/396/32 310/525/32 309/397/32 +f 311/399/32 310/526/32 322/400/32 +f 324/402/32 312/405/32 311/399/32 +f 325/404/32 313/527/32 312/405/32 +f 314/407/32 313/527/32 325/408/32 +f 327/410/32 315/413/32 314/407/32 +f 328/412/32 316/528/32 315/413/32 +f 305/415/32 316/528/32 328/416/32 +f 318/418/32 306/524/32 305/415/32 +f 243/420/33 378/450/33 379/421/33 +f 242/423/33 379/421/33 380/424/33 +f 241/426/33 380/424/33 381/427/33 +f 239/429/33 240/529/33 381/427/33 +f 239/431/33 382/530/33 383/432/33 +f 238/434/33 383/432/33 384/435/33 +f 236/437/33 237/531/33 384/435/33 +f 236/439/33 385/438/33 386/440/33 +f 234/442/33 235/532/33 386/440/33 +f 233/444/33 234/533/33 387/443/33 +f 233/446/33 388/445/33 377/447/33 +f 243/449/33 244/534/33 377/447/33 +f 355/451/32 354/535/32 366/452/32 +f 356/454/32 355/451/32 367/455/32 +f 369/457/32 357/460/32 356/454/32 +f 370/459/32 358/536/32 357/460/32 +f 359/462/32 358/537/32 370/463/32 +f 372/465/32 360/468/32 359/462/32 +f 373/467/32 361/538/32 360/468/32 +f 362/470/32 361/538/32 373/471/32 +f 375/473/32 363/476/32 362/470/32 +f 376/475/32 364/539/32 363/476/32 +f 353/478/32 364/539/32 376/479/32 +f 366/481/32 354/535/32 353/478/32 +f 331/483/33 343/540/33 342/484/33 +f 332/486/33 344/541/33 343/487/33 +f 345/488/33 344/542/33 332/486/33 +f 346/490/33 345/543/33 333/489/33 +f 335/492/33 347/544/33 346/493/33 +f 348/495/33 347/545/33 335/492/33 +f 349/497/33 348/546/33 336/496/33 +f 338/499/33 350/547/33 349/500/33 +f 351/501/33 350/548/33 338/499/33 +f 352/503/33 351/549/33 339/502/33 +f 329/505/33 341/550/33 352/506/33 +f 342/507/33 341/551/33 329/505/33 +s 1 +f 202/552/34 225/307/35 201/553/35 +f 208/554/36 221/509/37 232/294/36 +f 198/555/38 223/302/39 222/299/38 +f 206/556/40 229/318/41 205/557/41 +f 202/552/34 227/511/42 226/310/34 +f 199/558/39 224/510/43 223/302/39 +f 207/559/44 230/322/40 206/556/40 +f 204/560/45 227/512/42 203/561/42 +f 201/553/35 224/510/43 200/562/43 +f 208/554/36 231/508/44 207/559/44 +f 198/555/38 221/509/37 197/563/37 +f 205/557/41 228/315/45 204/560/45 +f 211/305/39 236/564/43 235/565/39 +f 219/323/44 242/566/40 218/324/40 +f 216/316/45 239/567/42 215/314/42 +f 213/308/35 236/568/43 212/306/43 +f 219/293/44 244/569/36 243/570/44 +f 210/300/38 233/571/37 209/298/37 +f 217/319/41 240/572/45 216/317/45 +f 214/311/34 237/573/35 213/309/35 +f 220/297/36 233/574/37 244/575/36 +f 211/303/39 234/576/38 210/301/38 +f 218/320/40 241/577/41 217/321/41 +f 215/312/42 238/578/34 214/313/34 +f 250/375/34 273/339/35 249/372/35 +f 245/365/37 280/326/36 256/361/36 +f 247/369/39 270/331/38 246/364/38 +f 254/386/40 277/350/41 253/382/41 +f 251/521/42 274/342/34 250/375/34 +f 248/373/43 271/334/39 247/369/39 +f 255/358/44 278/354/40 254/386/40 +f 252/379/45 275/517/42 251/380/42 +f 249/372/35 272/515/43 248/373/43 +f 255/358/44 280/326/36 279/513/44 +f 246/364/38 269/514/37 245/365/37 +f 253/382/41 276/347/45 252/379/45 +f 260/336/43 283/579/39 259/337/39 +f 267/355/44 290/580/40 266/356/40 +f 264/348/45 287/581/42 263/346/42 +f 261/340/35 284/582/43 260/338/43 +f 268/327/36 291/583/44 267/325/44 +f 257/330/37 282/584/38 281/585/37 +f 265/351/41 288/586/45 264/349/45 +f 262/343/34 285/587/35 261/341/35 +f 257/328/37 292/588/36 268/329/36 +f 259/335/39 282/589/38 258/333/38 +f 266/352/40 289/590/41 265/353/41 +f 263/344/42 286/591/34 262/345/34 +f 322/400/42 299/592/34 323/401/34 +f 319/392/40 296/593/41 320/393/41 +f 326/411/39 303/594/38 327/410/38 +f 317/417/36 304/595/37 293/596/36 +f 323/403/34 300/597/35 324/402/35 +f 320/395/41 297/598/45 321/394/45 +f 327/414/38 304/599/37 328/412/37 +f 317/419/36 294/600/44 318/418/44 +f 324/406/35 301/601/43 325/404/43 +f 321/398/45 298/602/42 322/396/42 +f 318/389/44 295/603/40 319/390/40 +f 325/408/43 302/604/39 326/409/39 +f 332/486/41 309/397/45 333/489/45 +f 339/502/38 316/528/37 340/504/37 +f 329/505/36 306/524/44 330/485/44 +f 336/496/35 313/527/43 337/498/43 +f 333/489/45 310/525/42 334/491/42 +f 330/485/44 307/388/40 331/483/40 +f 337/498/43 314/407/39 338/499/39 +f 334/494/42 311/399/34 335/492/34 +f 331/483/40 308/391/41 332/486/41 +f 338/499/39 315/413/38 339/502/38 +f 340/504/37 305/415/36 329/505/36 +f 335/492/34 312/405/35 336/496/35 +f 370/463/42 347/605/34 371/464/34 +f 367/455/40 344/606/41 368/456/41 +f 374/474/39 351/607/38 375/473/38 +f 365/480/36 352/608/37 341/609/36 +f 371/466/34 348/610/35 372/465/35 +f 368/458/41 345/611/45 369/457/45 +f 375/477/38 352/612/37 376/475/37 +f 365/482/36 342/613/44 366/481/44 +f 372/469/35 349/614/43 373/467/43 +f 369/461/45 346/615/42 370/459/42 +f 366/452/44 343/616/40 367/453/40 +f 373/471/43 350/617/39 374/472/39 +f 380/424/41 357/460/45 381/427/45 +f 388/445/37 363/476/38 364/539/37 +f 377/447/36 354/535/44 378/450/44 +f 385/438/43 360/468/35 361/538/43 +f 381/427/45 358/536/42 382/430/42 +f 378/450/44 355/451/40 379/421/40 +f 385/438/43 362/470/39 386/440/39 +f 382/530/42 359/462/34 383/432/34 +f 379/421/40 356/454/41 380/424/41 +f 386/440/39 363/476/38 387/443/38 +f 388/445/37 353/478/36 377/447/36 +f 383/432/34 360/468/35 384/435/35 +f 202/552/34 226/310/34 225/307/35 +f 208/554/36 197/563/37 221/509/37 +f 198/555/38 199/558/39 223/302/39 +f 206/556/40 230/322/40 229/318/41 +f 202/552/34 203/618/42 227/511/42 +f 199/558/39 200/562/43 224/510/43 +f 207/559/44 231/508/44 230/322/40 +f 204/560/45 228/315/45 227/512/42 +f 201/553/35 225/307/35 224/510/43 +f 208/554/36 232/294/36 231/508/44 +f 198/555/38 222/299/38 221/509/37 +f 205/557/41 229/318/41 228/315/45 +f 211/305/39 212/304/43 236/564/43 +f 219/323/44 243/619/44 242/566/40 +f 216/316/45 240/620/45 239/567/42 +f 213/308/35 237/621/35 236/568/43 +f 219/293/44 220/295/36 244/569/36 +f 210/300/38 234/622/38 233/571/37 +f 217/319/41 241/623/41 240/572/45 +f 214/311/34 238/624/34 237/573/35 +f 220/297/36 209/296/37 233/574/37 +f 211/303/39 235/625/39 234/576/38 +f 218/320/40 242/626/40 241/577/41 +f 215/312/42 239/627/42 238/578/34 +f 250/375/34 274/342/34 273/339/35 +f 245/365/37 269/514/37 280/326/36 +f 247/369/39 271/334/39 270/331/38 +f 254/386/40 278/354/40 277/350/41 +f 251/521/42 275/516/42 274/342/34 +f 248/373/43 272/515/43 271/334/39 +f 255/358/44 279/513/44 278/354/40 +f 252/379/45 276/347/45 275/517/42 +f 249/372/35 273/339/35 272/515/43 +f 255/358/44 256/361/36 280/326/36 +f 246/364/38 270/331/38 269/514/37 +f 253/382/41 277/350/41 276/347/45 +f 260/336/43 284/628/43 283/579/39 +f 267/355/44 291/629/44 290/580/40 +f 264/348/45 288/630/45 287/581/42 +f 261/340/35 285/631/35 284/582/43 +f 268/327/36 292/632/36 291/583/44 +f 257/330/37 258/332/38 282/584/38 +f 265/351/41 289/633/41 288/586/45 +f 262/343/34 286/634/34 285/587/35 +f 257/328/37 281/635/37 292/588/36 +f 259/335/39 283/636/39 282/589/38 +f 266/352/40 290/637/40 289/590/41 +f 263/344/42 287/638/42 286/591/34 +f 322/400/42 298/639/42 299/592/34 +f 319/392/40 295/640/40 296/593/41 +f 326/411/39 302/641/39 303/594/38 +f 317/417/36 328/416/37 304/595/37 +f 323/403/34 299/642/34 300/597/35 +f 320/395/41 296/643/41 297/598/45 +f 327/414/38 303/644/38 304/599/37 +f 317/419/36 293/645/36 294/600/44 +f 324/406/35 300/646/35 301/601/43 +f 321/398/45 297/647/45 298/602/42 +f 318/389/44 294/648/44 295/603/40 +f 325/408/43 301/649/43 302/604/39 +f 332/486/41 308/391/41 309/397/45 +f 339/502/38 315/413/38 316/528/37 +f 329/505/36 305/415/36 306/524/44 +f 336/496/35 312/405/35 313/527/43 +f 333/489/45 309/397/45 310/525/42 +f 330/485/44 306/524/44 307/388/40 +f 337/498/43 313/527/43 314/407/39 +f 334/494/42 310/526/42 311/399/34 +f 331/483/40 307/388/40 308/391/41 +f 338/499/39 314/407/39 315/413/38 +f 340/504/37 316/528/37 305/415/36 +f 335/492/34 311/399/34 312/405/35 +f 370/463/42 346/650/42 347/605/34 +f 367/455/40 343/651/40 344/606/41 +f 374/474/39 350/652/39 351/607/38 +f 365/480/36 376/479/37 352/608/37 +f 371/466/34 347/653/34 348/610/35 +f 368/458/41 344/654/41 345/611/45 +f 375/477/38 351/655/38 352/612/37 +f 365/482/36 341/656/36 342/613/44 +f 372/469/35 348/657/35 349/614/43 +f 369/461/45 345/658/45 346/615/42 +f 366/452/44 342/659/44 343/616/40 +f 373/471/43 349/660/43 350/617/39 +f 380/424/41 356/454/41 357/460/45 +f 388/445/37 387/443/38 363/476/38 +f 377/447/36 353/478/36 354/535/44 +f 385/438/43 384/435/35 360/468/35 +f 381/427/45 357/460/45 358/536/42 +f 378/450/44 354/535/44 355/451/40 +f 385/438/43 361/538/43 362/470/39 +f 382/530/42 358/537/42 359/462/34 +f 379/421/40 355/451/40 356/454/41 +f 386/440/39 362/470/39 363/476/38 +f 388/445/37 364/539/37 353/478/36 +f 383/432/34 359/462/34 360/468/35 +o BladesLeft +v 0.375000 3.187500 -2.000000 +v 0.156250 3.128886 -2.000000 +v -0.003886 2.968750 -2.000000 +v -0.062500 2.750000 -2.000000 +v -0.003886 2.531250 -2.000000 +v 0.156250 2.371114 -2.000000 +v 0.375000 2.312500 -2.000000 +v 0.593750 2.371114 -2.000000 +v 0.753886 2.531250 -2.000000 +v 0.812500 2.750000 -2.000000 +v 0.753886 2.968750 -2.000000 +v 0.593750 3.128886 -2.000000 +v 0.375000 3.062500 -1.750000 +v 0.218750 3.020633 -1.750000 +v 0.104367 2.906250 -1.750000 +v 0.062500 2.750000 -1.750000 +v 0.104367 2.593750 -1.750000 +v 0.218750 2.479367 -1.750000 +v 0.375000 2.437500 -1.750000 +v 0.531250 2.479367 -1.750000 +v 0.645633 2.593750 -1.750000 +v 0.687500 2.750000 -1.750000 +v 0.645633 2.906250 -1.750000 +v 0.531250 3.020633 -1.750000 +v 0.375000 3.187500 -1.750000 +v 0.156250 3.128886 -1.750000 +v -0.003886 2.968750 -1.750000 +v -0.062500 2.750000 -1.750000 +v -0.003886 2.531250 -1.750000 +v 0.156250 2.371114 -1.750000 +v 0.375000 2.312500 -1.750000 +v 0.593750 2.371114 -1.750000 +v 0.753886 2.531250 -1.750000 +v 0.812500 2.750000 -1.750000 +v 0.753886 2.968750 -1.750000 +v 0.593750 3.128886 -1.750000 +v 0.375000 3.062500 -1.500000 +v 0.218750 3.020633 -1.500000 +v 0.104367 2.906250 -1.500000 +v 0.062500 2.750000 -1.500000 +v 0.104367 2.593750 -1.500000 +v 0.218750 2.479367 -1.500000 +v 0.375000 2.437500 -1.500000 +v 0.531250 2.479367 -1.500000 +v 0.645633 2.593750 -1.500000 +v 0.687500 2.750000 -1.500000 +v 0.645633 2.906250 -1.500000 +v 0.531250 3.020633 -1.500000 +v 0.375000 3.187500 -0.500000 +v 0.156250 3.128886 -0.500000 +v -0.003886 2.968750 -0.500000 +v -0.062500 2.750000 -0.500000 +v -0.003886 2.531250 -0.500000 +v 0.156250 2.371114 -0.500000 +v 0.375000 2.312500 -0.500000 +v 0.593750 2.371114 -0.500000 +v 0.753886 2.531250 -0.500000 +v 0.812500 2.750000 -0.500000 +v 0.753886 2.968750 -0.500000 +v 0.593750 3.128886 -0.500000 +v 0.375000 3.062500 -0.250000 +v 0.218750 3.020633 -0.250000 +v 0.104367 2.906250 -0.250000 +v 0.062500 2.750000 -0.250000 +v 0.104367 2.593750 -0.250000 +v 0.218750 2.479367 -0.250000 +v 0.375000 2.437500 -0.250000 +v 0.531250 2.479367 -0.250000 +v 0.645633 2.593750 -0.250000 +v 0.687500 2.750000 -0.250000 +v 0.645633 2.906250 -0.250000 +v 0.531250 3.020633 -0.250000 +v 0.375000 3.187500 -0.250000 +v 0.156250 3.128886 -0.250000 +v -0.003886 2.968750 -0.250000 +v -0.062500 2.750000 -0.250000 +v -0.003886 2.531250 -0.250000 +v 0.156250 2.371114 -0.250000 +v 0.375000 2.312500 -0.250000 +v 0.593750 2.371114 -0.250000 +v 0.753886 2.531250 -0.250000 +v 0.812500 2.750000 -0.250000 +v 0.753886 2.968750 -0.250000 +v 0.593750 3.128886 -0.250000 +v 0.375000 3.062500 0.000000 +v 0.218750 3.020633 0.000000 +v 0.104367 2.906250 0.000000 +v 0.062500 2.750000 0.000000 +v 0.104367 2.593750 0.000000 +v 0.218750 2.479367 0.000000 +v 0.375000 2.437500 0.000000 +v 0.531250 2.479367 0.000000 +v 0.645633 2.593750 0.000000 +v 0.687500 2.750000 0.000000 +v 0.645633 2.906250 0.000000 +v 0.531250 3.020633 0.000000 +v 0.531250 3.020633 -0.500000 +v 0.645633 2.906250 -0.500000 +v 0.687500 2.750000 -0.500000 +v 0.645633 2.593750 -0.500000 +v 0.531250 2.479367 -0.500000 +v 0.375000 2.437500 -0.500000 +v 0.218750 2.479367 -0.500000 +v 0.104367 2.593750 -0.500000 +v 0.062500 2.750000 -0.500000 +v 0.104367 2.906250 -0.500000 +v 0.218750 3.020633 -0.500000 +v 0.375000 3.062500 -0.500000 +v 0.593750 3.128886 -0.750000 +v 0.753886 2.968750 -0.750000 +v 0.812500 2.750000 -0.750000 +v 0.753886 2.531250 -0.750000 +v 0.593750 2.371114 -0.750000 +v 0.375000 2.312500 -0.750000 +v 0.156250 2.371114 -0.750000 +v -0.003886 2.531250 -0.750000 +v -0.062500 2.750000 -0.750000 +v -0.003886 2.968750 -0.750000 +v 0.156250 3.128886 -0.750000 +v 0.375000 3.187500 -0.750000 +v 0.531250 3.020633 -0.750000 +v 0.645633 2.906250 -0.750000 +v 0.687500 2.750000 -0.750000 +v 0.645633 2.593750 -0.750000 +v 0.531250 2.479367 -0.750000 +v 0.375000 2.437500 -0.750000 +v 0.218750 2.479367 -0.750000 +v 0.104367 2.593750 -0.750000 +v 0.062500 2.750000 -0.750000 +v 0.104367 2.906250 -0.750000 +v 0.218750 3.020633 -0.750000 +v 0.375000 3.062500 -0.750000 +v 0.593750 3.128886 -1.000000 +v 0.753886 2.968750 -1.000000 +v 0.812500 2.750000 -1.000000 +v 0.753886 2.531250 -1.000000 +v 0.593750 2.371114 -1.000000 +v 0.375000 2.312500 -1.000000 +v 0.156250 2.371114 -1.000000 +v -0.003886 2.531250 -1.000000 +v -0.062500 2.750000 -1.000000 +v -0.003886 2.968750 -1.000000 +v 0.156250 3.128886 -1.000000 +v 0.375000 3.187500 -1.000000 +v 0.531250 3.020633 -1.000000 +v 0.645633 2.906250 -1.000000 +v 0.687500 2.750000 -1.000000 +v 0.645633 2.593750 -1.000000 +v 0.531250 2.479367 -1.000000 +v 0.375000 2.437500 -1.000000 +v 0.218750 2.479367 -1.000000 +v 0.104367 2.593750 -1.000000 +v 0.062500 2.750000 -1.000000 +v 0.104367 2.906250 -1.000000 +v 0.218750 3.020633 -1.000000 +v 0.375000 3.062500 -1.000000 +v 0.593750 3.128886 -1.250000 +v 0.753886 2.968750 -1.250000 +v 0.812500 2.750000 -1.250000 +v 0.753886 2.531250 -1.250000 +v 0.593750 2.371114 -1.250000 +v 0.375000 2.312500 -1.250000 +v 0.156250 2.371114 -1.250000 +v -0.003886 2.531250 -1.250000 +v -0.062500 2.750000 -1.250000 +v -0.003886 2.968750 -1.250000 +v 0.156250 3.128886 -1.250000 +v 0.375000 3.187500 -1.250000 +v 0.531250 3.020633 -1.250000 +v 0.645633 2.906250 -1.250000 +v 0.687500 2.750000 -1.250000 +v 0.645633 2.593750 -1.250000 +v 0.531250 2.479367 -1.250000 +v 0.375000 2.437500 -1.250000 +v 0.218750 2.479367 -1.250000 +v 0.104367 2.593750 -1.250000 +v 0.062500 2.750000 -1.250000 +v 0.104367 2.906250 -1.250000 +v 0.218750 3.020633 -1.250000 +v 0.375000 3.062500 -1.250000 +v 0.593750 3.128886 -1.500000 +v 0.753886 2.968750 -1.500000 +v 0.812500 2.750000 -1.500000 +v 0.753886 2.531250 -1.500000 +v 0.593750 2.371114 -1.500000 +v 0.375000 2.312500 -1.500000 +v 0.156250 2.371114 -1.500000 +v -0.003886 2.531250 -1.500000 +v -0.062500 2.750000 -1.500000 +v -0.003886 2.968750 -1.500000 +v 0.156250 3.128886 -1.500000 +v 0.375000 3.187500 -1.500000 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.076220 0.794872 +vt 0.085366 0.807692 +vt 0.073171 0.807692 +vt 0.094512 0.794872 +vt 0.088415 0.794872 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.112805 0.794872 +vt 0.121951 0.807692 +vt 0.109756 0.807692 +vt 0.131098 0.794872 +vt 0.125000 0.794872 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.003049 0.794872 +vt 0.012195 0.807692 +vt 0.000000 0.807692 +vt 0.021341 0.794872 +vt 0.015244 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.012195 0.807692 +vt 0.015244 0.794872 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.121951 0.807692 +vt 0.125000 0.794872 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.085366 0.807692 +vt 0.088415 0.794872 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.036585 0.807692 +vt 0.045732 0.794872 +vt 0.048780 0.807692 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.015244 0.794872 +vt 0.012195 0.807692 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.146341 0.807692 +vt 0.125000 0.794872 +vt 0.121951 0.807692 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.097561 0.807692 +vt 0.106707 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.070122 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt -0.000000 0.833333 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt 0.000000 0.833333 +vt 0.082317 0.794872 +vt 0.118902 0.794872 +vt 0.146341 0.807692 +vt 0.009146 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.009146 0.794872 +vt 0.146341 0.807692 +vt 0.118902 0.794872 +vt 0.082317 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.039634 0.794872 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.009146 0.794872 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.118902 0.794872 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.134146 0.807692 +vt 0.121951 0.807692 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.097561 0.807692 +vt 0.085366 0.807692 +vt 0.036585 0.807692 +vt 0.024390 0.807692 +vt 0.146341 0.807692 +vt 0.109756 0.807692 +vt 0.048780 0.807692 +vt 0.012195 0.807692 +vt -0.000000 0.807692 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.070122 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.070122 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +s off +f 411/661/46 424/662/46 412/663/46 +f 424/662/46 401/664/46 412/665/46 +f 401/666/46 414/667/46 402/668/46 +f 402/669/46 415/670/46 403/671/46 +f 415/670/46 404/672/46 403/673/46 +f 404/674/46 417/675/46 405/676/46 +f 405/677/46 418/678/46 406/679/46 +f 418/678/46 407/680/46 406/681/46 +f 407/682/46 420/683/46 408/684/46 +f 408/685/46 421/686/46 409/687/46 +f 421/686/46 410/688/46 409/689/46 +f 422/690/46 411/691/46 410/692/46 +f 459/693/46 472/694/46 460/695/46 +f 472/694/46 449/696/46 460/697/46 +f 449/698/46 462/699/46 450/700/46 +f 450/701/46 463/702/46 451/703/46 +f 463/702/46 452/704/46 451/705/46 +f 452/706/46 465/707/46 453/708/46 +f 453/709/46 466/710/46 454/711/46 +f 466/710/46 455/712/46 454/713/46 +f 455/714/46 468/715/46 456/716/46 +f 456/717/46 469/718/46 457/719/46 +f 469/718/46 458/720/46 457/721/46 +f 470/722/46 459/723/46 458/724/46 +f 485/725/47 447/726/47 486/727/47 +f 496/728/47 448/729/47 485/730/47 +f 496/731/47 438/732/47 437/733/47 +f 494/734/47 438/732/47 495/735/47 +f 493/736/47 439/737/47 494/738/47 +f 493/739/47 441/740/47 440/741/47 +f 491/742/47 441/740/47 492/743/47 +f 490/744/47 442/745/47 491/746/47 +f 490/747/47 444/748/47 443/749/47 +f 488/750/47 444/748/47 489/751/47 +f 487/752/47 445/753/47 488/754/47 +f 486/755/47 446/756/47 487/757/47 +f 499/758/46 510/759/46 511/760/46 +f 500/761/46 511/762/46 512/763/46 +f 513/764/46 500/761/46 512/765/46 +f 514/766/46 501/767/46 513/768/46 +f 503/769/46 514/770/46 515/771/46 +f 516/772/46 503/769/46 515/773/46 +f 517/774/46 504/775/46 516/776/46 +f 506/777/46 517/778/46 518/779/46 +f 519/780/46 506/777/46 518/781/46 +f 520/782/46 507/783/46 519/784/46 +f 497/785/46 520/786/46 509/787/46 +f 510/788/46 497/785/46 509/789/46 +f 435/790/47 571/791/47 434/792/47 +f 434/793/47 572/794/47 433/795/47 +f 433/796/47 573/797/47 432/798/47 +f 431/799/47 573/797/47 574/800/47 +f 431/801/47 575/802/47 430/803/47 +f 430/804/47 576/805/47 429/806/47 +f 428/807/47 576/805/47 577/808/47 +f 428/809/47 578/810/47 427/811/47 +f 427/812/47 579/813/47 426/814/47 +f 425/815/47 579/813/47 580/816/47 +f 425/817/47 569/818/47 436/819/47 +f 436/820/47 570/821/47 435/822/47 +f 547/823/46 558/824/46 559/825/46 +f 548/826/46 559/827/46 560/828/46 +f 561/829/46 548/826/46 560/830/46 +f 562/831/46 549/832/46 561/833/46 +f 551/834/46 562/835/46 563/836/46 +f 564/837/46 551/834/46 563/838/46 +f 565/839/46 552/840/46 564/841/46 +f 554/842/46 565/843/46 566/844/46 +f 567/845/46 554/842/46 566/846/46 +f 568/847/46 555/848/46 567/849/46 +f 545/850/46 568/851/46 557/852/46 +f 558/853/46 545/850/46 557/854/46 +f 523/855/47 534/856/47 522/857/47 +f 524/858/47 535/859/47 523/855/47 +f 537/860/47 524/858/47 525/861/47 +f 538/862/47 525/861/47 526/863/47 +f 527/864/47 538/865/47 526/866/47 +f 540/867/47 527/864/47 528/868/47 +f 541/869/47 528/868/47 529/870/47 +f 530/871/47 541/872/47 529/870/47 +f 543/873/47 530/871/47 531/874/47 +f 544/875/47 531/874/47 532/876/47 +f 521/877/47 544/878/47 532/876/47 +f 534/879/47 521/877/47 522/857/47 +f 411/661/46 423/880/46 424/662/46 +f 424/662/46 413/881/46 401/664/46 +f 401/666/46 413/881/46 414/667/46 +f 402/669/46 414/667/46 415/670/46 +f 415/670/46 416/882/46 404/672/46 +f 404/674/46 416/882/46 417/675/46 +f 405/677/46 417/675/46 418/678/46 +f 418/678/46 419/883/46 407/680/46 +f 407/682/46 419/884/46 420/683/46 +f 408/685/46 420/683/46 421/686/46 +f 421/686/46 422/690/46 410/688/46 +f 422/690/46 423/880/46 411/691/46 +f 459/693/46 471/885/46 472/694/46 +f 472/694/46 461/886/46 449/696/46 +f 449/698/46 461/886/46 462/699/46 +f 450/701/46 462/699/46 463/702/46 +f 463/702/46 464/887/46 452/704/46 +f 452/706/46 464/887/46 465/707/46 +f 453/709/46 465/707/46 466/710/46 +f 466/710/46 467/888/46 455/712/46 +f 455/714/46 467/889/46 468/715/46 +f 456/717/46 468/715/46 469/718/46 +f 469/718/46 470/722/46 458/720/46 +f 470/722/46 471/885/46 459/723/46 +f 485/725/47 448/729/47 447/726/47 +f 496/728/47 437/733/47 448/729/47 +f 496/731/47 495/890/47 438/732/47 +f 494/734/47 439/737/47 438/732/47 +f 493/736/47 440/741/47 439/737/47 +f 493/739/47 492/891/47 441/740/47 +f 491/742/47 442/745/47 441/740/47 +f 490/744/47 443/892/47 442/745/47 +f 490/747/47 489/893/47 444/748/47 +f 488/750/47 445/753/47 444/748/47 +f 487/752/47 446/756/47 445/753/47 +f 486/755/47 447/726/47 446/756/47 +f 499/758/46 498/894/46 510/759/46 +f 500/761/46 499/758/46 511/762/46 +f 513/764/46 501/767/46 500/761/46 +f 514/766/46 502/895/46 501/767/46 +f 503/769/46 502/896/46 514/770/46 +f 516/772/46 504/775/46 503/769/46 +f 517/774/46 505/897/46 504/775/46 +f 506/777/46 505/897/46 517/778/46 +f 519/780/46 507/783/46 506/777/46 +f 520/782/46 508/898/46 507/783/46 +f 497/785/46 508/898/46 520/786/46 +f 510/788/46 498/894/46 497/785/46 +f 435/790/47 570/821/47 571/791/47 +f 434/793/47 571/791/47 572/794/47 +f 433/796/47 572/794/47 573/797/47 +f 431/799/47 432/899/47 573/797/47 +f 431/801/47 574/900/47 575/802/47 +f 430/804/47 575/802/47 576/805/47 +f 428/807/47 429/901/47 576/805/47 +f 428/809/47 577/808/47 578/810/47 +f 427/812/47 578/810/47 579/813/47 +f 425/815/47 426/902/47 579/813/47 +f 425/817/47 580/816/47 569/818/47 +f 436/820/47 569/818/47 570/821/47 +f 547/823/46 546/903/46 558/824/46 +f 548/826/46 547/823/46 559/827/46 +f 561/829/46 549/832/46 548/826/46 +f 562/831/46 550/904/46 549/832/46 +f 551/834/46 550/905/46 562/835/46 +f 564/837/46 552/840/46 551/834/46 +f 565/839/46 553/906/46 552/840/46 +f 554/842/46 553/906/46 565/843/46 +f 567/845/46 555/848/46 554/842/46 +f 568/847/46 556/907/46 555/848/46 +f 545/850/46 556/907/46 568/851/46 +f 558/853/46 546/903/46 545/850/46 +f 523/855/47 535/908/47 534/856/47 +f 524/858/47 536/909/47 535/859/47 +f 537/860/47 536/910/47 524/858/47 +f 538/862/47 537/911/47 525/861/47 +f 527/864/47 539/912/47 538/865/47 +f 540/867/47 539/913/47 527/864/47 +f 541/869/47 540/914/47 528/868/47 +f 530/871/47 542/915/47 541/872/47 +f 543/873/47 542/916/47 530/871/47 +f 544/875/47 543/917/47 531/874/47 +f 521/877/47 533/918/47 544/878/47 +f 534/879/47 533/919/47 521/877/47 +s 1 +f 394/920/48 417/675/49 393/921/49 +f 389/922/50 424/662/51 400/923/51 +f 391/924/52 414/667/53 390/925/53 +f 398/926/54 421/686/55 397/927/55 +f 395/928/56 418/678/48 394/920/48 +f 392/929/57 415/670/52 391/924/52 +f 399/930/58 422/690/54 398/926/54 +f 396/931/59 419/884/56 395/932/56 +f 393/921/49 416/882/57 392/929/57 +f 400/923/51 423/880/58 399/930/58 +f 390/925/53 413/881/50 389/922/50 +f 397/927/55 420/683/59 396/931/59 +f 404/672/57 427/933/52 403/673/52 +f 411/691/58 434/934/54 410/692/54 +f 408/684/59 431/935/56 407/682/56 +f 405/676/49 428/936/57 404/674/57 +f 412/663/51 435/937/58 411/661/58 +f 402/668/53 425/938/50 401/666/50 +f 409/687/55 432/939/59 408/685/59 +f 406/679/48 429/940/49 405/677/49 +f 401/664/50 436/941/51 412/665/51 +f 403/671/52 426/942/53 402/669/53 +f 410/688/54 433/943/55 409/689/55 +f 407/680/56 430/944/48 406/681/48 +f 442/745/48 465/707/49 441/740/49 +f 437/733/50 472/694/51 448/729/51 +f 439/737/52 462/699/53 438/732/53 +f 446/756/54 469/718/55 445/753/55 +f 443/892/56 466/710/48 442/745/48 +f 440/741/57 463/702/52 439/737/52 +f 447/726/58 470/722/54 446/756/54 +f 444/748/59 467/889/56 443/749/56 +f 441/740/49 464/887/57 440/741/57 +f 448/729/51 471/885/58 447/726/58 +f 438/732/53 461/886/50 437/733/50 +f 445/753/55 468/715/59 444/748/59 +f 452/704/57 475/945/52 451/705/52 +f 459/723/58 482/946/54 458/724/54 +f 456/716/59 479/947/56 455/714/56 +f 453/708/49 476/948/57 452/706/57 +f 460/695/51 483/949/58 459/693/58 +f 450/700/53 473/950/50 449/698/50 +f 457/719/55 480/951/59 456/717/59 +f 454/711/48 477/952/49 453/709/49 +f 449/696/50 484/953/51 460/697/51 +f 451/703/52 474/954/53 450/701/53 +f 458/720/54 481/955/55 457/721/55 +f 455/712/56 478/956/48 454/713/48 +f 514/770/56 491/957/48 515/771/48 +f 511/762/54 488/958/55 512/763/55 +f 518/781/52 495/959/53 519/780/53 +f 520/786/50 485/960/51 509/787/51 +f 515/773/48 492/961/49 516/772/49 +f 512/765/55 489/962/59 513/764/59 +f 519/784/53 496/963/50 520/782/50 +f 509/789/51 486/964/58 510/788/58 +f 516/776/49 493/965/57 517/774/57 +f 513/768/59 490/966/56 514/766/56 +f 510/759/58 487/967/54 511/760/54 +f 517/778/57 494/968/52 518/779/52 +f 524/858/55 501/767/59 525/861/59 +f 531/874/53 508/898/50 532/876/50 +f 521/877/51 498/894/58 522/857/58 +f 528/868/49 505/897/57 529/870/57 +f 525/861/59 502/895/56 526/863/56 +f 522/857/58 499/758/54 523/855/54 +f 529/870/57 506/777/52 530/871/52 +f 526/866/56 503/769/48 527/864/48 +f 523/855/54 500/761/55 524/858/55 +f 530/871/52 507/783/53 531/874/53 +f 532/876/50 497/785/51 521/877/51 +f 527/864/48 504/775/49 528/868/49 +f 562/835/56 539/969/48 563/836/48 +f 559/827/54 536/970/55 560/828/55 +f 566/846/52 543/971/53 567/845/53 +f 568/851/50 533/972/51 557/852/51 +f 563/838/48 540/973/49 564/837/49 +f 560/830/55 537/974/59 561/829/59 +f 567/849/53 544/975/50 568/847/50 +f 557/854/51 534/976/58 558/853/58 +f 564/841/49 541/977/57 565/839/57 +f 561/833/59 538/978/56 562/831/56 +f 558/824/58 535/979/54 559/825/54 +f 565/843/57 542/980/52 566/844/52 +f 572/794/55 549/832/59 573/797/59 +f 579/813/53 556/907/50 580/816/50 +f 569/818/51 546/903/58 570/821/58 +f 576/805/49 553/906/57 577/808/57 +f 573/797/59 550/904/56 574/800/56 +f 570/821/58 547/823/54 571/791/54 +f 577/808/57 554/842/52 578/810/52 +f 574/900/56 551/834/48 575/802/48 +f 571/791/54 548/826/55 572/794/55 +f 578/810/52 555/848/53 579/813/53 +f 580/816/50 545/850/51 569/818/51 +f 575/802/48 552/840/49 576/805/49 +f 394/920/48 418/678/48 417/675/49 +f 389/922/50 413/881/50 424/662/51 +f 391/924/52 415/670/52 414/667/53 +f 398/926/54 422/690/54 421/686/55 +f 395/928/56 419/883/56 418/678/48 +f 392/929/57 416/882/57 415/670/52 +f 399/930/58 423/880/58 422/690/54 +f 396/931/59 420/683/59 419/884/56 +f 393/921/49 417/675/49 416/882/57 +f 400/923/51 424/662/51 423/880/58 +f 390/925/53 414/667/53 413/881/50 +f 397/927/55 421/686/55 420/683/59 +f 404/672/57 428/981/57 427/933/52 +f 411/691/58 435/982/58 434/934/54 +f 408/684/59 432/983/59 431/935/56 +f 405/676/49 429/984/49 428/936/57 +f 412/663/51 436/985/51 435/937/58 +f 402/668/53 426/986/53 425/938/50 +f 409/687/55 433/987/55 432/939/59 +f 406/679/48 430/988/48 429/940/49 +f 401/664/50 425/989/50 436/941/51 +f 403/671/52 427/990/52 426/942/53 +f 410/688/54 434/991/54 433/943/55 +f 407/680/56 431/992/56 430/944/48 +f 442/745/48 466/710/48 465/707/49 +f 437/733/50 461/886/50 472/694/51 +f 439/737/52 463/702/52 462/699/53 +f 446/756/54 470/722/54 469/718/55 +f 443/892/56 467/888/56 466/710/48 +f 440/741/57 464/887/57 463/702/52 +f 447/726/58 471/885/58 470/722/54 +f 444/748/59 468/715/59 467/889/56 +f 441/740/49 465/707/49 464/887/57 +f 448/729/51 472/694/51 471/885/58 +f 438/732/53 462/699/53 461/886/50 +f 445/753/55 469/718/55 468/715/59 +f 452/704/57 476/993/57 475/945/52 +f 459/723/58 483/994/58 482/946/54 +f 456/716/59 480/995/59 479/947/56 +f 453/708/49 477/996/49 476/948/57 +f 460/695/51 484/997/51 483/949/58 +f 450/700/53 474/998/53 473/950/50 +f 457/719/55 481/999/55 480/951/59 +f 454/711/48 478/1000/48 477/952/49 +f 449/696/50 473/1001/50 484/953/51 +f 451/703/52 475/1002/52 474/954/53 +f 458/720/54 482/1003/54 481/955/55 +f 455/712/56 479/1004/56 478/956/48 +f 514/770/56 490/1005/56 491/957/48 +f 511/762/54 487/1006/54 488/958/55 +f 518/781/52 494/1007/52 495/959/53 +f 520/786/50 496/1008/50 485/960/51 +f 515/773/48 491/1009/48 492/961/49 +f 512/765/55 488/1010/55 489/962/59 +f 519/784/53 495/1011/53 496/963/50 +f 509/789/51 485/1012/51 486/964/58 +f 516/776/49 492/1013/49 493/965/57 +f 513/768/59 489/1014/59 490/966/56 +f 510/759/58 486/1015/58 487/967/54 +f 517/778/57 493/1016/57 494/968/52 +f 524/858/55 500/761/55 501/767/59 +f 531/874/53 507/783/53 508/898/50 +f 521/877/51 497/785/51 498/894/58 +f 528/868/49 504/775/49 505/897/57 +f 525/861/59 501/767/59 502/895/56 +f 522/857/58 498/894/58 499/758/54 +f 529/870/57 505/897/57 506/777/52 +f 526/866/56 502/896/56 503/769/48 +f 523/855/54 499/758/54 500/761/55 +f 530/871/52 506/777/52 507/783/53 +f 532/876/50 508/898/50 497/785/51 +f 527/864/48 503/769/48 504/775/49 +f 562/835/56 538/1017/56 539/969/48 +f 559/827/54 535/1018/54 536/970/55 +f 566/846/52 542/1019/52 543/971/53 +f 568/851/50 544/1020/50 533/972/51 +f 563/838/48 539/1021/48 540/973/49 +f 560/830/55 536/1022/55 537/974/59 +f 567/849/53 543/1023/53 544/975/50 +f 557/854/51 533/1024/51 534/976/58 +f 564/841/49 540/1025/49 541/977/57 +f 561/833/59 537/1026/59 538/978/56 +f 558/824/58 534/1027/58 535/979/54 +f 565/843/57 541/1028/57 542/980/52 +f 572/794/55 548/826/55 549/832/59 +f 579/813/53 555/848/53 556/907/50 +f 569/818/51 545/850/51 546/903/58 +f 576/805/49 552/840/49 553/906/57 +f 573/797/59 549/832/59 550/904/56 +f 570/821/58 546/903/58 547/823/54 +f 577/808/57 553/906/57 554/842/52 +f 574/900/56 550/905/56 551/834/48 +f 571/791/54 547/823/54 548/826/55 +f 578/810/52 554/842/52 555/848/53 +f 580/816/50 556/907/50 545/850/51 +f 575/802/48 551/834/48 552/840/49 +o Fan +v 1.375000 1.875000 -1.062500 +v 1.468750 1.875000 -1.062500 +v 1.375000 1.820873 -1.031250 +v 1.468750 1.820873 -1.031250 +v 1.375000 1.820873 -0.968750 +v 1.468750 1.820873 -0.968750 +v 1.375000 1.875000 -0.937500 +v 1.468750 1.875000 -0.937500 +v 1.375000 1.929127 -0.968750 +v 1.468750 1.929127 -0.968750 +v 1.375000 1.929127 -1.031250 +v 1.468750 1.929127 -1.031250 +v 1.388971 2.199760 -1.181111 +v 1.437500 2.250000 -1.000000 +v 1.486029 2.199760 -0.818889 +v 1.431434 1.915595 -1.022639 +v 1.437500 1.921875 -1.000000 +v 1.443566 1.915595 -0.977361 +v 1.388971 1.555773 -1.190695 +v 1.437500 1.687500 -1.324759 +v 1.486029 1.869467 -1.371806 +v 1.431434 1.835097 -1.023837 +v 1.437500 1.851562 -1.040595 +v 1.443566 1.874308 -1.046476 +v 1.443566 1.835097 -0.976163 +v 1.437500 1.851562 -0.959405 +v 1.431434 1.874308 -0.953524 +v 1.486029 1.555773 -0.809305 +v 1.437500 1.687500 -0.675241 +v 1.388971 1.869467 -0.628194 +vt 0.225610 0.935897 +vt 0.228659 0.948718 +vt 0.225610 0.948718 +vt 0.228659 0.935897 +vt 0.231707 0.948718 +vt 0.213415 0.935897 +vt 0.216463 0.948718 +vt 0.213415 0.948718 +vt 0.216463 0.935897 +vt 0.219512 0.948718 +vt 0.213554 0.955128 +vt 0.215009 0.949830 +vt 0.219373 0.955128 +vt 0.219512 0.935897 +vt 0.222561 0.948718 +vt 0.222561 0.935897 +vt 0.155488 0.967949 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.152439 0.935897 +vt 0.155488 0.935897 +vt 0.155488 0.967949 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.146341 0.967949 +vt 0.155488 0.935897 +vt 0.155488 0.967949 +vt 0.152439 0.935897 +vt 0.155488 0.935897 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.231707 0.935897 +vt 0.217918 0.949830 +vt 0.217918 0.960426 +vt 0.215009 0.960426 +vt 0.146341 0.967949 +vt 0.152439 0.935897 +vt 0.146341 0.967949 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 0.8660 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.2241 0.1294 +vn 0.9659 0.2242 0.1294 +vn 0.9659 0.2241 0.1294 +vn 0.9659 -0.2242 0.1294 +s off +f 582/1029/60 583/1030/60 581/1031/60 +f 584/1032/61 585/1033/61 583/1030/61 +f 586/1034/62 587/1035/62 585/1036/62 +f 588/1037/63 589/1038/63 587/1035/63 +f 588/1039/64 586/1040/64 582/1041/64 +f 590/1042/65 591/1043/65 589/1038/65 +f 592/1044/66 581/1031/66 591/1043/66 +f 594/1045/67 596/1046/67 593/1047/67 +f 594/1045/67 598/1048/67 597/1049/67 +f 600/1050/68 602/1051/68 599/1052/68 +f 601/1053/68 603/1054/68 600/1050/68 +f 609/1055/69 605/1056/69 606/1057/69 +f 609/1055/70 607/1058/70 610/1059/70 +f 582/1029/60 584/1032/60 583/1030/60 +f 584/1032/61 586/1060/61 585/1033/61 +f 586/1034/62 588/1037/62 587/1035/62 +f 588/1037/63 590/1042/63 589/1038/63 +f 586/1040/64 584/1061/64 582/1041/64 +f 582/1041/64 592/1062/64 590/1063/64 +f 590/1063/64 588/1039/64 582/1041/64 +f 590/1042/65 592/1044/65 591/1043/65 +f 592/1044/66 582/1029/66 581/1031/66 +f 594/1045/67 597/1049/67 596/1046/67 +f 594/1045/67 595/1064/67 598/1048/67 +f 600/1050/71 603/1054/71 602/1051/71 +f 601/1053/71 604/1065/71 603/1054/71 +f 609/1055/70 608/1066/70 605/1056/70 +f 609/1055/69 606/1057/69 607/1058/69 +o Base +v -1.500000 0.000000 3.500000 +v 1.500000 0.000000 3.500000 +v -1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -3.500000 +v -1.500000 1.000000 3.500000 +v 1.500000 1.000000 3.500000 +v -1.500000 1.000000 -3.500000 +v 1.500000 1.000000 -3.500000 +v 0.000000 1.250000 0.625000 +v -0.526190 1.250000 0.729666 +v -0.972272 1.250000 1.027728 +v -1.270334 1.250000 1.473810 +v -1.375000 1.250000 2.000000 +v -1.270334 1.250000 2.526190 +v -0.972272 1.250000 2.972272 +v -0.526190 1.250000 3.270334 +v 0.000000 1.250000 3.375000 +v 0.526189 1.250000 3.270334 +v 0.972271 1.250000 2.972272 +v 1.270334 1.250000 2.526190 +v 1.375000 1.250000 2.000000 +v 1.270334 1.250000 1.473810 +v 0.972271 1.250000 1.027728 +v 0.526189 1.250000 0.729665 +v 0.000000 3.000000 0.625000 +v -0.526190 3.000000 0.729666 +v -0.972272 3.000000 1.027728 +v -1.270334 3.000000 1.473810 +v -1.375000 3.000000 2.000000 +v -1.270334 3.000000 2.526190 +v -0.972272 3.000000 2.972272 +v -0.526190 3.000000 3.270334 +v 0.000000 3.000000 3.375000 +v 0.526189 3.000000 3.270334 +v 0.972271 3.000000 2.972272 +v 1.270334 3.000000 2.526190 +v 1.375000 3.000000 2.000000 +v 1.270334 3.000000 1.473810 +v 0.972271 3.000000 1.027728 +v 0.526189 3.000000 0.729665 +v 0.000000 3.000000 0.500000 +v -0.574025 3.000000 0.614181 +v -1.060660 3.000000 0.939340 +v -1.385819 3.000000 1.425975 +v -1.500000 3.000000 2.000000 +v -1.385819 3.000000 2.574025 +v -1.060660 3.000000 3.060660 +v -0.574025 3.000000 3.385819 +v -0.000000 3.000000 3.500000 +v 0.574025 3.000000 3.385819 +v 1.060660 3.000000 3.060660 +v 1.385819 3.000000 2.574025 +v 1.500000 3.000000 2.000000 +v 1.385819 3.000000 1.425975 +v 1.060659 3.000000 0.939340 +v 0.574024 3.000000 0.614180 +v 0.000000 3.250000 0.500000 +v -0.574025 3.250000 0.614181 +v -1.060660 3.250000 0.939340 +v -1.385819 3.250000 1.425975 +v -1.500000 3.250000 2.000000 +v -1.385819 3.250000 2.574025 +v -1.060660 3.250000 3.060660 +v -0.574025 3.250000 3.385819 +v -0.000000 3.250000 3.500000 +v 0.574025 3.250000 3.385819 +v 1.060660 3.250000 3.060660 +v 1.385819 3.250000 2.574025 +v 1.500000 3.250000 2.000000 +v 1.385819 3.250000 1.425975 +v 1.060659 3.250000 0.939340 +v 0.574024 3.250000 0.614180 +v 0.000000 3.250000 0.750000 +v -0.478354 3.250000 0.845150 +v -0.883883 3.250000 1.116116 +v -1.154850 3.250000 1.521646 +v -1.250000 3.250000 2.000000 +v -1.154850 3.250000 2.478354 +v -0.883883 3.250000 2.883883 +v -0.478354 3.250000 3.154849 +v -0.000000 3.250000 3.250000 +v 0.478354 3.250000 3.154850 +v 0.883883 3.250000 2.883884 +v 1.154849 3.250000 2.478354 +v 1.250000 3.250000 2.000000 +v 1.154849 3.250000 1.521645 +v 0.883883 3.250000 1.116116 +v 0.478354 3.250000 0.845150 +v 0.000000 2.250000 0.750000 +v -0.478354 2.250000 0.845150 +v -0.883883 2.250000 1.116116 +v -1.154850 2.250000 1.521646 +v -1.250000 2.250000 2.000000 +v -1.154850 2.250000 2.478354 +v -0.883883 2.250000 2.883883 +v -0.478354 2.250000 3.154849 +v -0.000000 2.250000 3.250000 +v 0.478354 2.250000 3.154850 +v 0.883883 2.250000 2.883884 +v 1.154849 2.250000 2.478354 +v 1.250000 2.250000 2.000000 +v 1.154849 2.250000 1.521645 +v 0.883883 2.250000 1.116116 +v 0.478354 2.250000 0.845150 +v -1.250000 1.000000 0.250000 +v 1.250000 1.000000 0.250000 +v -1.250000 1.000000 -2.250000 +v 1.250000 1.000000 -2.250000 +v -1.250000 2.750000 -2.250000 +v -1.250000 2.750000 0.250000 +v 1.250000 2.750000 0.250000 +v 1.250000 2.750000 -2.250000 +v -1.000000 3.250000 -2.250000 +v -1.000000 3.250000 0.250000 +v 1.000000 3.250000 0.250000 +v 1.000000 3.250000 -2.250000 +v -1.000000 1.000000 -2.250000 +v 1.000000 1.000000 -2.250000 +v -1.000000 1.000000 -3.250000 +v 1.000000 1.000000 -3.250000 +v -1.000000 1.500000 -3.250000 +v -1.000000 1.500000 -2.250000 +v 1.000000 1.500000 -2.250000 +v 1.000000 1.500000 -3.250000 +v -0.875000 1.500000 -3.125000 +v -0.875000 1.500000 -2.250000 +v 0.875000 1.500000 -2.250000 +v 0.875000 1.500000 -3.125000 +v -0.875000 1.250000 -3.125000 +v -0.875000 1.250000 -2.250000 +v 0.875000 1.250000 -2.250000 +v 0.875000 1.250000 -3.125000 +v 0.437500 1.500000 -2.250000 +v -0.437500 1.500000 -2.250000 +v 0.437500 1.500000 -2.687500 +v -0.437500 1.500000 -2.687500 +v -0.500000 2.000000 -2.250000 +v 0.500000 2.000000 -2.250000 +v -0.500000 2.000000 -2.750000 +v 0.500000 2.000000 -2.750000 +v -0.500000 2.250000 -2.750000 +v -0.500000 2.750000 -2.250000 +v 0.500000 2.750000 -2.250000 +v 0.500000 2.250000 -2.750000 +v -0.437500 2.000000 -2.687500 +v -0.437500 2.000000 -2.312500 +v 0.437500 2.000000 -2.312500 +v 0.437500 2.000000 -2.687500 +v -0.437500 2.125000 -2.687500 +v -0.437500 2.125000 -2.312500 +v 0.437500 2.125000 -2.312500 +v 0.437500 2.125000 -2.687500 +v -0.750000 3.250000 0.000000 +v 0.750000 3.250000 0.000000 +v -0.750000 3.250000 -2.000000 +v 0.750000 3.250000 -2.000000 +v -0.500000 2.750000 -2.000000 +v -0.500000 2.750000 0.000000 +v 0.500000 2.750000 0.000000 +v 0.500000 2.750000 -2.000000 +v 1.125000 1.000000 -0.125000 +v 1.375000 1.000000 -0.125000 +v 1.125000 1.000000 -0.375000 +v 1.375000 1.000000 -0.375000 +v 1.125000 3.250000 -0.375000 +v 1.125000 3.250000 -0.125000 +v 1.375000 3.250000 -0.125000 +v 1.375000 3.250000 -0.375000 +v 1.125000 1.000000 -1.625000 +v 1.375000 1.000000 -1.625000 +v 1.125000 1.000000 -1.875000 +v 1.375000 1.000000 -1.875000 +v 1.125000 3.250000 -1.875000 +v 1.125000 3.250000 -1.625000 +v 1.375000 3.250000 -1.625000 +v 1.375000 3.250000 -1.875000 +v -1.375000 1.000000 -0.125000 +v -1.125000 1.000000 -0.125000 +v -1.375000 1.000000 -0.375000 +v -1.125000 1.000000 -0.375000 +v -1.375000 3.250000 -0.375000 +v -1.375000 3.250000 -0.125000 +v -1.125000 3.250000 -0.125000 +v -1.125000 3.250000 -0.375000 +v -1.375000 1.000000 -1.625000 +v -1.125000 1.000000 -1.625000 +v -1.375000 1.000000 -1.875000 +v -1.125000 1.000000 -1.875000 +v -1.375000 3.250000 -1.875000 +v -1.375000 3.250000 -1.625000 +v -1.125000 3.250000 -1.625000 +v -1.125000 3.250000 -1.875000 +v 0.000000 1.000000 0.500000 +v -0.574025 1.000000 0.614181 +v -1.060660 1.000000 0.939340 +v -1.385819 1.000000 1.425975 +v -1.500000 1.000000 2.000000 +v -1.385819 1.000000 2.574025 +v -1.060660 1.000000 3.060660 +v -0.574025 1.000000 3.385819 +v -0.000000 1.000000 3.500000 +v 0.574025 1.000000 3.385819 +v 1.060660 1.000000 3.060660 +v 1.385819 1.000000 2.574025 +v 1.500000 1.000000 2.000000 +v 1.385819 1.000000 1.425975 +v 1.060659 1.000000 0.939340 +v 0.574024 1.000000 0.614180 +v 0.000000 1.250000 0.500000 +v -0.574025 1.250000 0.614181 +v -1.060660 1.250000 0.939340 +v -1.385819 1.250000 1.425975 +v -1.500000 1.250000 2.000000 +v -1.385819 1.250000 2.574025 +v -1.060660 1.250000 3.060660 +v -0.574025 1.250000 3.385819 +v -0.000000 1.250000 3.500000 +v 0.574025 1.250000 3.385819 +v 1.060660 1.250000 3.060660 +v 1.385819 1.250000 2.574025 +v 1.500000 1.250000 2.000000 +v 1.385819 1.250000 1.425975 +v 1.060659 1.250000 0.939340 +v 0.574024 1.250000 0.614180 +v 1.125000 3.250000 3.125000 +v 1.375000 3.250000 3.125000 +v 1.125000 3.250000 -2.000000 +v 1.375000 3.250000 -2.000000 +v 1.125000 3.500000 -2.000000 +v 1.125000 3.500000 3.125000 +v 1.375000 3.500000 3.125000 +v 1.375000 3.500000 -2.000000 +v -1.375000 3.250000 3.125000 +v -1.125000 3.250000 3.125000 +v -1.375000 3.250000 -2.000000 +v -1.125000 3.250000 -2.000000 +v -1.375000 3.500000 -2.000000 +v -1.375000 3.500000 3.125000 +v -1.125000 3.500000 3.125000 +v -1.125000 3.500000 -2.000000 +v 1.125000 1.000000 3.000000 +v 1.375000 1.000000 3.000000 +v 1.125000 1.000000 2.750000 +v 1.375000 1.000000 2.750000 +v 1.125000 3.250000 2.750000 +v 1.125000 3.250000 3.000000 +v 1.375000 3.250000 3.000000 +v 1.375000 3.250000 2.750000 +v -1.375000 1.000000 3.000000 +v -1.125000 1.000000 3.000000 +v -1.375000 1.000000 2.750000 +v -1.125000 1.000000 2.750000 +v -1.375000 3.250000 2.750000 +v -1.375000 3.250000 3.000000 +v -1.125000 3.250000 3.000000 +v -1.125000 3.250000 2.750000 +v 0.250000 2.000000 0.250000 +v 0.073223 1.926777 0.250000 +v 0.000000 1.750000 0.250000 +v 0.073223 1.573223 0.250000 +v 0.250000 1.500000 0.250000 +v 0.426777 1.573223 0.250000 +v 0.500000 1.750000 0.250000 +v 0.426777 1.926777 0.250000 +v 0.250000 2.000000 0.750000 +v 0.073223 1.926777 0.750000 +v 0.000000 1.750000 0.750000 +v 0.073223 1.573223 0.750000 +v 0.250000 1.500000 0.750000 +v 0.426777 1.573223 0.750000 +v 0.500000 1.750000 0.750000 +v 0.426777 1.926777 0.750000 +v -0.250000 2.000000 0.250000 +v -0.426777 1.926777 0.250000 +v -0.500000 1.750000 0.250000 +v -0.426777 1.573223 0.250000 +v -0.250000 1.500000 0.250000 +v -0.073223 1.573223 0.250000 +v 0.000000 1.750000 0.250000 +v -0.073223 1.926777 0.250000 +v -0.250000 2.000000 0.750000 +v -0.426777 1.926777 0.750000 +v -0.500000 1.750000 0.750000 +v -0.426777 1.573223 0.750000 +v -0.250000 1.500000 0.750000 +v -0.073223 1.573223 0.750000 +v 0.000000 1.750000 0.750000 +v -0.073223 1.926777 0.750000 +v 1.125000 1.000000 1.250000 +v 1.375000 1.000000 1.250000 +v 1.125000 1.000000 1.000000 +v 1.375000 1.000000 1.000000 +v 1.125000 3.250000 1.000000 +v 1.125000 3.250000 1.250000 +v 1.375000 3.250000 1.250000 +v 1.375000 3.250000 1.000000 +v -1.375000 1.000000 1.250000 +v -1.125000 1.000000 1.250000 +v -1.375000 1.000000 1.000000 +v -1.125000 1.000000 1.000000 +v -1.375000 3.250000 1.000000 +v -1.375000 3.250000 1.250000 +v -1.125000 3.250000 1.250000 +v -1.125000 3.250000 1.000000 +v 1.250000 2.375000 -0.500000 +v 1.250000 1.375000 -0.500000 +v 1.250000 2.375000 -1.500000 +v 1.250000 1.375000 -1.500000 +v 1.500000 2.375000 -1.500000 +v 1.500000 2.375000 -0.500000 +v 1.500000 1.375000 -0.500000 +v 1.500000 1.375000 -1.500000 +v 1.500000 2.312500 -1.437500 +v 1.500000 2.312500 -0.562500 +v 1.500000 1.437500 -0.562500 +v 1.500000 1.437500 -1.437500 +v 1.375000 2.312500 -1.437500 +v 1.375000 2.312500 -0.562500 +v 1.375000 1.437500 -0.562500 +v 1.375000 1.437500 -1.437500 +v 1.500000 2.093750 -0.562500 +v 1.500000 2.031250 -0.562500 +v 1.500000 2.093750 -1.437500 +v 1.500000 2.031250 -1.437500 +v 1.500000 2.281250 -0.562500 +v 1.500000 2.218750 -0.562500 +v 1.500000 2.281250 -1.437500 +v 1.500000 2.218750 -1.437500 +v 1.500000 1.718750 -0.562500 +v 1.500000 1.656250 -0.562500 +v 1.500000 1.718750 -1.437500 +v 1.500000 1.656250 -1.437500 +v 1.500000 1.906250 -0.562500 +v 1.500000 1.843750 -0.562500 +v 1.500000 1.906250 -1.437500 +v 1.500000 1.843750 -1.437500 +v 1.500000 1.531250 -0.562500 +v 1.500000 1.468750 -0.562500 +v 1.500000 1.531250 -1.437500 +v 1.500000 1.468750 -1.437500 +v -1.250000 2.375000 -0.500000 +v -1.250000 1.375000 -0.500000 +v -1.250000 2.375000 -1.500000 +v -1.250000 1.375000 -1.500000 +v -1.500000 2.375000 -1.500000 +v -1.500000 2.375000 -0.500000 +v -1.500000 1.375000 -0.500000 +v -1.500000 1.375000 -1.500000 +v -1.500000 2.250000 -1.375000 +v -1.500000 2.250000 -0.625000 +v -1.500000 1.500000 -0.625000 +v -1.500000 1.500000 -1.375000 +v -1.375000 2.250000 -1.375000 +v -1.375000 2.250000 -0.625000 +v -1.375000 1.500000 -0.625000 +v -1.375000 1.500000 -1.375000 +v -1.500000 2.250000 -1.375000 +v -1.982091 2.250000 -0.800467 +v -1.982091 1.500000 -0.800467 +v -1.500000 1.500000 -1.375000 +v 0.875000 1.500000 -3.125000 +v 1.000000 1.500000 -3.125000 +v 0.875000 1.500000 -3.250000 +v 1.000000 1.500000 -3.250000 +v 0.875000 2.875000 -3.125000 +v 1.000000 2.875000 -3.125000 +v 0.875000 2.875000 -3.250000 +v 1.000000 2.875000 -3.250000 +v -1.000000 1.500000 -3.125000 +v -0.875000 1.500000 -3.125000 +v -1.000000 1.500000 -3.250000 +v -0.875000 1.500000 -3.250000 +v -1.000000 2.875000 -3.125000 +v -0.875000 2.875000 -3.125000 +v -1.000000 2.875000 -3.250000 +v -0.875000 2.875000 -3.250000 +v 1.000000 2.875000 -3.250000 +v -1.000000 2.875000 -3.250000 +v 1.000000 2.875000 -2.250000 +v -1.000000 2.875000 -2.250000 +v 1.000000 3.000000 -3.250000 +v -1.000000 3.000000 -3.250000 +v 1.000000 3.000000 -2.250000 +v -1.000000 3.000000 -2.250000 +vt 0.341463 0.102564 +vt -0.000000 0.410256 +vt -0.000000 0.102564 +vt -0.000000 0.102564 +vt 0.341463 0.410256 +vt -0.000000 0.410256 +vt 0.341463 -0.000000 +vt -0.000000 0.000000 +vt 0.341463 -0.000000 +vt 0.390244 0.410256 +vt 0.341463 0.102564 +vt 0.390244 0.102564 +vt 0.390244 0.410256 +vt 0.341463 0.102564 +vt 0.390244 0.102564 +vt 0.326219 0.448718 +vt 0.301829 0.461538 +vt 0.301829 0.448718 +vt 0.329268 0.448718 +vt 0.356707 0.461538 +vt 0.329268 0.461538 +vt 0.381098 0.448718 +vt 0.356707 0.448718 +vt 0.408537 0.448718 +vt 0.384146 0.461538 +vt 0.384146 0.448718 +vt 0.435976 0.448718 +vt 0.411585 0.461538 +vt 0.411585 0.448718 +vt 0.024390 0.448718 +vt 0.000000 0.461538 +vt 0.000000 0.448718 +vt 0.051829 0.448718 +vt 0.027439 0.461538 +vt 0.027439 0.448718 +vt 0.079268 0.448718 +vt 0.054878 0.461538 +vt 0.054878 0.448718 +vt 0.106707 0.448718 +vt 0.082317 0.461538 +vt 0.082317 0.448718 +vt 0.109756 0.448718 +vt 0.137195 0.461538 +vt 0.109756 0.461538 +vt 0.137195 0.448718 +vt 0.164634 0.461538 +vt 0.164634 0.448718 +vt 0.192073 0.461538 +vt 0.192073 0.448718 +vt 0.219512 0.461538 +vt 0.219512 0.448718 +vt 0.246951 0.461538 +vt 0.271341 0.448718 +vt 0.246951 0.448718 +vt 0.274390 0.448718 +vt 0.274390 0.461538 +vt 0.329268 0.487179 +vt 0.301829 0.512821 +vt 0.301829 0.487179 +vt 0.356707 0.487179 +vt 0.329268 0.512821 +vt 0.384146 0.487179 +vt 0.356707 0.512821 +vt 0.408537 0.512821 +vt 0.384146 0.512821 +vt 0.411585 0.487179 +vt 0.435976 0.512821 +vt 0.411585 0.512821 +vt 0.027439 0.487179 +vt 0.000000 0.512821 +vt 0.000000 0.487179 +vt 0.051829 0.512821 +vt 0.027439 0.512821 +vt 0.054878 0.487179 +vt 0.079268 0.512821 +vt 0.054878 0.512821 +vt 0.082317 0.487179 +vt 0.106707 0.512821 +vt 0.082317 0.512821 +vt 0.109756 0.487179 +vt 0.134146 0.512821 +vt 0.109756 0.512821 +vt 0.164634 0.487179 +vt 0.137195 0.512821 +vt 0.137195 0.487179 +vt 0.192073 0.487179 +vt 0.164634 0.512821 +vt 0.216463 0.512821 +vt 0.192073 0.512821 +vt 0.246951 0.487179 +vt 0.219512 0.512821 +vt 0.219512 0.487179 +vt 0.274390 0.487179 +vt 0.246951 0.512821 +vt 0.298781 0.512821 +vt 0.274390 0.512821 +vt 0.451219 0.000216 +vt 0.512092 0.128205 +vt 0.451219 0.256194 +vt 0.414634 0.961538 +vt 0.408537 0.929487 +vt 0.414634 0.929487 +vt 0.756098 0.179487 +vt 0.646341 0.230769 +vt 0.634146 0.179487 +vt 0.756098 -0.000000 +vt 0.634146 0.000000 +vt 1.000000 0.000000 +vt 0.878049 0.179487 +vt 0.878049 0.000000 +vt 0.512195 0.179487 +vt 0.512195 0.000000 +vt 0.658537 0.256410 +vt 0.646341 0.487179 +vt 1.000000 0.179487 +vt 0.890244 0.230769 +vt 0.512195 0.230769 +vt 0.756098 0.230769 +vt 0.512195 0.846154 +vt 0.554878 0.858974 +vt 0.512195 0.858974 +vt 0.707317 0.846154 +vt 0.664634 0.858974 +vt 0.658537 0.846154 +vt 0.707317 0.794872 +vt 0.658537 0.794872 +vt 0.560976 0.846154 +vt 0.560976 0.794872 +vt 0.567073 0.858974 +vt 0.512195 0.794872 +vt 0.652439 0.858974 +vt 0.567073 0.884615 +vt 0.707317 0.858974 +vt 0.664634 0.884615 +vt 0.512195 0.884615 +vt 0.533537 0.929487 +vt 0.512195 0.974359 +vt 0.512195 0.884615 +vt 0.576219 0.974359 +vt 0.533537 0.974359 +vt 0.576219 0.929487 +vt 0.597561 0.974359 +vt 0.597561 0.884615 +vt 0.390244 0.794872 +vt 0.344512 0.801282 +vt 0.341463 0.794872 +vt 0.341463 0.916667 +vt 0.390244 0.865385 +vt 0.390244 0.916667 +vt 0.344512 0.833333 +vt 0.341463 0.839744 +vt 0.317073 0.839744 +vt 0.341463 0.865385 +vt 0.317073 0.916667 +vt 0.414634 0.839744 +vt 0.390244 0.839744 +vt 0.387195 0.801282 +vt 0.387195 0.833333 +vt 0.408537 0.961538 +vt 0.365854 0.929487 +vt 0.365854 0.974359 +vt 0.408537 0.974359 +vt 0.408537 0.916667 +vt 0.365854 0.916667 +vt 0.359756 0.929487 +vt 0.365854 0.961538 +vt 0.359756 0.961538 +vt 0.548781 0.282051 +vt 0.573171 0.487179 +vt 0.548781 0.487179 +vt 0.731707 0.256410 +vt 0.743902 0.230769 +vt 0.731707 0.461538 +vt 0.743902 0.487179 +vt 0.658537 0.461538 +vt 0.621951 0.282051 +vt 0.621951 0.487179 +vt 0.646341 0.487179 +vt 0.646341 0.282051 +vt 0.634146 0.230769 +vt 0.573171 0.282051 +vt 0.560976 0.230769 +vt 0.560976 0.538462 +vt 0.634146 0.538462 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.301829 0.435897 +vt 0.326219 0.448718 +vt 0.301829 0.448718 +vt 0.329268 0.448718 +vt 0.356707 0.435897 +vt 0.353659 0.448718 +vt 0.381098 0.448718 +vt 0.356707 0.448718 +vt 0.384146 0.435897 +vt 0.408537 0.448718 +vt 0.384146 0.448718 +vt 0.411585 0.435897 +vt 0.435976 0.448718 +vt 0.411585 0.448718 +vt 0.000000 0.435897 +vt 0.024390 0.448718 +vt 0.000000 0.448718 +vt 0.027439 0.435897 +vt 0.051829 0.448718 +vt 0.027439 0.448718 +vt 0.054878 0.435897 +vt 0.079268 0.448718 +vt 0.054878 0.448718 +vt 0.082317 0.435897 +vt 0.106707 0.448718 +vt 0.082317 0.448718 +vt 0.109756 0.448718 +vt 0.137195 0.435897 +vt 0.134146 0.448718 +vt 0.137195 0.448718 +vt 0.164634 0.435897 +vt 0.161585 0.448718 +vt 0.164634 0.448718 +vt 0.192073 0.435897 +vt 0.189024 0.448718 +vt 0.192073 0.448718 +vt 0.219512 0.435897 +vt 0.216463 0.448718 +vt 0.219512 0.448718 +vt 0.246951 0.435897 +vt 0.243902 0.448718 +vt 0.271341 0.448718 +vt 0.246951 0.448718 +vt 0.274390 0.448718 +vt 0.298781 0.448718 +vt 0.262195 0.692308 +vt 0.012195 0.717949 +vt 0.012195 0.692308 +vt 0.012195 0.743590 +vt 0.262195 0.769231 +vt 0.012195 0.769231 +vt 0.262195 0.717949 +vt 0.012195 0.794872 +vt 0.262195 0.794872 +vt 0.274390 0.769231 +vt 0.262195 0.743590 +vt 0.274390 0.743590 +vt 0.000000 0.743590 +vt 0.000000 0.769231 +vt 0.262195 0.692308 +vt 0.012195 0.717949 +vt 0.012195 0.692308 +vt 0.012195 0.743590 +vt 0.262195 0.769231 +vt 0.012195 0.769231 +vt 0.262195 0.717949 +vt 0.012195 0.794872 +vt 0.262195 0.794872 +vt 0.274390 0.769231 +vt 0.262195 0.743590 +vt 0.274390 0.743590 +vt 0.000000 0.743590 +vt 0.000000 0.769231 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.161585 0.839744 +vt 0.167683 0.929487 +vt 0.161585 0.929487 +vt 0.219512 0.935897 +vt 0.216463 0.839744 +vt 0.219512 0.833333 +vt 0.213415 0.794872 +vt 0.164634 0.820513 +vt 0.164634 0.794872 +vt 0.164634 0.974359 +vt 0.213415 0.948718 +vt 0.213415 0.974359 +vt 0.231707 0.935897 +vt 0.231707 0.833333 +vt 0.146341 0.833333 +vt 0.158537 0.935897 +vt 0.146341 0.935897 +vt 0.158537 0.833333 +vt 0.213415 0.820513 +vt 0.167683 0.826923 +vt 0.164634 0.948718 +vt 0.210366 0.942308 +vt 0.167683 0.839744 +vt 0.210366 0.929487 +vt 0.210366 0.826923 +vt 0.167683 0.942308 +vt 0.216463 0.929487 +vt 0.210366 0.839744 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.243902 0.833333 +vt 0.250000 0.923077 +vt 0.243902 0.935897 +vt 0.298781 0.794872 +vt 0.250000 0.820513 +vt 0.250000 0.794872 +vt 0.250000 0.974359 +vt 0.298781 0.948718 +vt 0.298781 0.974359 +vt 0.231707 0.833333 +vt 0.231707 0.935897 +vt 0.317073 0.935897 +vt 0.304878 0.833333 +vt 0.317073 0.833333 +vt 0.298781 0.923077 +vt 0.292683 0.846154 +vt 0.298781 0.846154 +vt 0.304878 0.935897 +vt 0.298781 0.820513 +vt 0.256098 0.833333 +vt 0.250000 0.948718 +vt 0.292683 0.935897 +vt 0.256098 0.846154 +vt 0.292683 0.923077 +vt 0.256098 0.923077 +vt 0.292683 0.833333 +vt 0.256098 0.935897 +vt 0.250000 0.846154 +vt 0.323171 0.916667 +vt 0.359756 0.993590 +vt 0.323171 0.993590 +vt 0.725610 0.935897 +vt 0.719512 0.794872 +vt 0.725610 0.794872 +vt 0.713415 0.935897 +vt 0.707317 0.794872 +vt 0.713415 0.794872 +vt 0.719512 0.935897 +vt 0.731707 0.935897 +vt 0.731707 0.794872 +vt 0.725610 0.935897 +vt 0.719512 0.794872 +vt 0.725610 0.794872 +vt 0.713415 0.935897 +vt 0.707317 0.794872 +vt 0.713415 0.794872 +vt 0.719512 0.935897 +vt 0.731707 0.935897 +vt 0.731707 0.794872 +vt 0.810976 0.589744 +vt 0.908537 0.692308 +vt 0.810976 0.692308 +vt 0.908537 0.705128 +vt 0.810976 0.807692 +vt 0.810976 0.705128 +vt 0.914634 0.807692 +vt 0.914634 0.705128 +vt 0.804878 0.705128 +vt 0.804878 0.807692 +vt 0.341463 0.410256 +vt -0.000000 -0.000000 +vt 0.341463 0.410256 +vt 0.353659 0.448718 +vt 0.439024 0.461538 +vt 0.134146 0.448718 +vt 0.161585 0.448718 +vt 0.189024 0.448718 +vt 0.216463 0.448718 +vt 0.243902 0.448718 +vt 0.298781 0.448718 +vt 0.326219 0.512821 +vt 0.353659 0.512821 +vt 0.381098 0.512821 +vt 0.439024 0.487179 +vt 0.024390 0.512821 +vt 0.161585 0.512821 +vt 0.189024 0.512821 +vt 0.243902 0.512821 +vt 0.271341 0.512821 +vt 0.474515 0.009959 +vt 0.494263 0.037704 +vt 0.507459 0.079226 +vt 0.507459 0.177184 +vt 0.494263 0.218707 +vt 0.474514 0.246451 +vt 0.427924 0.246452 +vt 0.408176 0.218707 +vt 0.394980 0.177185 +vt 0.390347 0.128205 +vt 0.394980 0.079226 +vt 0.408176 0.037703 +vt 0.427925 0.009959 +vt 0.987805 0.230769 +vt 0.634146 0.230769 +vt 0.878049 0.230769 +vt 0.652439 0.884615 +vt 0.707317 0.884615 +vt 0.554878 0.884615 +vt 0.414634 0.916667 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.329268 0.435897 +vt 0.439024 0.435897 +vt 0.109756 0.435897 +vt 0.274390 0.435897 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.359756 0.916667 +vt 0.707317 0.935897 +vt 0.707317 0.935897 +vt 0.908537 0.589744 +vt 0.908537 0.807692 +vt 0.341463 0.512821 +vt 0.317073 0.692308 +vt 0.317073 0.512821 +vt 0.170732 0.512821 +vt 0.146341 0.692308 +vt 0.146341 0.512821 +vt 0.365854 0.512821 +vt 0.341463 0.692308 +vt 0.195122 0.512821 +vt 0.170732 0.692308 +vt 0.024390 0.512821 +vt -0.000000 0.692308 +vt 0.000000 0.512821 +vt 0.390244 0.512821 +vt 0.365854 0.692308 +vt 0.219512 0.512821 +vt 0.195122 0.692308 +vt 0.048780 0.512821 +vt 0.024390 0.692308 +vt 0.243902 0.512821 +vt 0.219512 0.692308 +vt 0.073171 0.512821 +vt 0.048780 0.692308 +vt 0.268293 0.512821 +vt 0.243902 0.692308 +vt 0.097561 0.512821 +vt 0.073171 0.692308 +vt 0.292683 0.512821 +vt 0.268293 0.692308 +vt 0.121951 0.512821 +vt 0.097561 0.692308 +vt 0.292683 0.692308 +vt 0.121951 0.692308 +vt 0.926829 0.897436 +vt 0.902439 1.000000 +vt 0.902439 0.897436 +vt 0.853659 1.000000 +vt 0.878049 0.897436 +vt 0.878049 1.000000 +vt 0.951219 0.897436 +vt 0.926829 1.000000 +vt 0.829268 1.000000 +vt 0.853659 0.897436 +vt 0.975610 0.897436 +vt 0.951219 1.000000 +vt 0.804878 1.000000 +vt 0.829268 0.897436 +vt 0.975610 1.000000 +vt 1.000000 0.897436 +vt 1.000000 1.000000 +vt 1.000000 0.897436 +vt 0.975610 1.000000 +vt 0.829268 0.897436 +vt 0.804878 1.000000 +vt 0.804878 0.897436 +vt 0.951219 1.000000 +vt 0.975610 0.897436 +vt 0.853659 0.897436 +vt 0.829268 1.000000 +vt 0.926829 1.000000 +vt 0.951219 0.897436 +vt 0.878049 0.897436 +vt 0.853659 1.000000 +vt 0.902439 1.000000 +vt 0.926829 0.897436 +vt 0.878049 1.000000 +vt 0.902439 0.897436 +vt 0.274390 0.410256 +vt 0.246951 0.410256 +vt 0.082317 0.410256 +vt 0.054878 0.410256 +vt 0.301829 0.410256 +vt 0.109756 0.410256 +vt 0.329268 0.410256 +vt 0.137195 0.410256 +vt 0.356707 0.410256 +vt 0.164634 0.410256 +vt 0.384146 0.410256 +vt 0.192073 0.410256 +vt 0.411585 0.410256 +vt 0.219512 0.410256 +vt 0.027439 0.410256 +vt 0.000000 0.410256 +vt 0.439024 0.410256 +vt 0.692073 0.538462 +vt 0.701219 0.487179 +vt 0.701219 0.538462 +vt 0.710366 0.538462 +vt 0.719512 0.487179 +vt 0.719512 0.538462 +vt 0.655488 0.538462 +vt 0.664634 0.487179 +vt 0.664634 0.538462 +vt 0.673781 0.538462 +vt 0.682927 0.487179 +vt 0.682927 0.538462 +vt 0.692073 0.487179 +vt 0.710366 0.487179 +vt 0.646341 0.538462 +vt 0.655488 0.487179 +vt 0.673781 0.487179 +vt 0.692073 0.538462 +vt 0.701219 0.487179 +vt 0.701219 0.538462 +vt 0.710366 0.538462 +vt 0.719512 0.487179 +vt 0.719512 0.538462 +vt 0.655488 0.538462 +vt 0.664634 0.487179 +vt 0.664634 0.538462 +vt 0.673781 0.538462 +vt 0.682927 0.487179 +vt 0.682927 0.538462 +vt 0.692073 0.487179 +vt 0.710366 0.487179 +vt 0.646341 0.538462 +vt 0.655488 0.487179 +vt 0.673781 0.487179 +vt 0.390244 0.692308 +vt 0.804878 0.897436 +vt 1.000000 1.000000 +vt 0.646341 0.487179 +vt 0.646341 0.487179 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.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.8944 0.4472 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.4961 0.8682 0.0000 +vn 0.0000 0.8682 -0.4961 +vn -0.4961 0.8682 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7660 0.0000 -0.6428 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +vn -0.7071 0.0000 0.7071 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 613/1067/72 612/1068/72 611/1069/72 +f 616/1070/73 617/1071/73 615/1072/73 +f 614/1073/74 616/1070/74 612/1074/74 +f 611/1069/75 617/1075/75 613/1067/75 +f 613/1076/76 618/1077/76 614/1078/76 +f 612/1079/77 615/1080/77 611/1081/77 +f 647/1082/72 662/1083/72 646/1084/72 +f 647/1085/72 664/1086/72 663/1087/72 +f 649/1088/72 664/1086/72 648/1089/72 +f 650/1090/72 665/1091/72 649/1092/72 +f 635/1093/72 666/1094/72 650/1095/72 +f 636/1096/72 651/1097/72 635/1098/72 +f 637/1099/72 652/1100/72 636/1101/72 +f 638/1102/72 653/1103/72 637/1104/72 +f 639/1105/72 654/1106/72 638/1107/72 +f 639/1108/72 656/1109/72 655/1110/72 +f 640/1111/72 657/1112/72 656/1109/72 +f 641/1113/72 658/1114/72 657/1112/72 +f 642/1115/72 659/1116/72 658/1114/72 +f 643/1117/72 660/1118/72 659/1116/72 +f 645/1119/72 660/1118/72 644/1120/72 +f 645/1121/72 662/1083/72 661/1122/72 +f 679/1123/73 694/1124/73 678/1125/73 +f 680/1126/73 695/1127/73 679/1123/73 +f 681/1128/73 696/1129/73 680/1126/73 +f 681/1128/73 698/1130/73 697/1131/73 +f 682/1132/73 683/1133/73 698/1134/73 +f 668/1135/73 683/1136/73 667/1137/73 +f 668/1135/73 685/1138/73 684/1139/73 +f 669/1140/73 686/1141/73 685/1142/73 +f 670/1143/73 687/1144/73 686/1145/73 +f 671/1146/73 688/1147/73 687/1148/73 +f 673/1149/73 688/1150/73 672/1151/73 +f 674/1152/73 689/1153/73 673/1149/73 +f 674/1152/73 691/1154/73 690/1155/73 +f 676/1156/73 691/1157/73 675/1158/73 +f 677/1159/73 692/1160/73 676/1156/73 +f 677/1159/73 694/1161/73 693/1162/73 +f 699/1163/73 703/1164/73 707/1165/73 +f 755/1166/74 760/1167/74 756/1168/74 +f 719/1169/76 726/1170/76 722/1171/76 +f 717/1172/76 722/1171/76 718/1173/76 +f 716/1174/77 720/1175/77 715/1176/77 +f 718/1173/74 721/1177/74 716/1178/74 +f 715/1176/75 719/1169/75 717/1172/75 +f 766/1179/73 725/1180/73 726/1170/73 +f 721/1181/77 724/1182/77 720/1175/77 +f 722/1171/78 725/1183/78 721/1177/78 +f 720/1175/79 723/1184/79 719/1169/79 +f 733/1185/73 738/1186/73 737/1187/73 +f 732/1188/73 735/1189/73 731/1190/73 +f 727/1191/75 731/1190/75 729/1192/75 +f 729/1192/76 734/1193/76 730/1194/76 +f 731/1190/73 738/1195/73 734/1193/73 +f 730/1194/74 733/1185/74 728/1196/74 +f 735/1197/77 742/1198/77 738/1195/77 +f 736/1199/74 739/1200/74 735/1189/74 +f 738/1186/75 741/1201/75 737/1187/75 +f 745/1202/80 741/1203/80 742/1204/80 +f 745/1202/73 744/1205/73 743/1206/73 +f 742/1204/81 746/1207/81 745/1202/81 +f 740/1208/82 746/1207/82 739/1209/82 +f 747/1210/72 757/1211/72 748/1212/72 +f 753/1213/83 751/1214/83 752/1215/83 +f 748/1212/72 758/1216/72 750/1217/72 +f 748/1218/74 754/1219/74 753/1220/74 +f 747/1221/75 751/1214/75 749/1222/75 +f 749/1222/76 754/1219/76 750/1217/76 +f 749/1222/72 756/1223/72 747/1210/72 +f 750/1217/72 755/1224/72 749/1222/72 +f 759/1225/72 761/1226/72 760/1167/72 +f 758/1227/77 759/1225/77 755/1228/77 +f 756/1229/76 761/1226/76 757/1230/76 +f 757/1231/75 762/1232/75 758/1233/75 +f 766/1234/79 769/1235/79 764/1236/79 +f 765/1237/73 726/1170/73 723/1238/73 +f 763/1239/73 723/1238/73 724/1240/73 +f 764/1241/73 724/1240/73 725/1180/73 +f 769/1235/73 767/1242/73 768/1243/73 +f 763/1244/78 767/1242/78 765/1245/78 +f 765/1246/77 770/1247/77 766/1248/77 +f 764/1249/76 768/1243/76 763/1250/76 +f 772/1251/77 776/1252/77 771/1253/77 +f 774/1254/74 777/1255/74 772/1251/74 +f 771/1256/75 775/1257/75 773/1258/75 +f 773/1258/76 778/1259/76 774/1254/76 +f 780/1260/77 784/1261/77 779/1262/77 +f 782/1263/74 785/1264/74 780/1260/74 +f 779/1265/75 783/1266/75 781/1267/75 +f 781/1267/76 786/1268/76 782/1263/76 +f 788/1269/77 792/1270/77 787/1271/77 +f 790/1272/74 793/1273/74 788/1269/74 +f 787/1274/75 791/1275/75 789/1276/75 +f 789/1276/76 794/1277/76 790/1272/76 +f 796/1278/77 800/1279/77 795/1280/77 +f 798/1281/74 801/1282/74 796/1278/74 +f 795/1283/75 799/1284/75 797/1285/75 +f 797/1285/76 802/1286/76 798/1281/76 +f 830/1287/73 631/1288/73 630/1289/73 +f 631/1290/73 832/1291/73 632/1292/73 +f 832/1291/73 633/1293/73 632/1294/73 +f 833/1295/73 634/1296/73 633/1297/73 +f 834/1298/73 619/1299/73 634/1300/73 +f 819/1301/73 620/1302/73 619/1303/73 +f 820/1304/73 621/1305/73 620/1306/73 +f 821/1307/73 622/1308/73 621/1309/73 +f 822/1310/73 623/1311/73 622/1312/73 +f 623/1313/73 824/1314/73 624/1315/73 +f 624/1316/73 825/1317/73 625/1318/73 +f 625/1319/73 826/1320/73 626/1321/73 +f 626/1322/73 827/1323/73 627/1324/73 +f 627/1325/73 828/1326/73 628/1327/73 +f 828/1326/73 629/1328/73 628/1329/73 +f 629/1330/73 830/1287/73 630/1331/73 +f 837/1332/72 836/1333/72 835/1334/72 +f 841/1335/73 839/1336/73 840/1337/73 +f 838/1338/74 841/1335/74 836/1333/74 +f 835/1339/75 839/1336/75 837/1340/75 +f 837/1341/76 842/1342/76 838/1343/76 +f 836/1344/77 840/1337/77 835/1345/77 +f 845/1346/72 844/1347/72 843/1348/72 +f 849/1349/73 847/1350/73 848/1351/73 +f 846/1352/74 849/1349/74 844/1347/74 +f 843/1353/75 847/1350/75 845/1354/75 +f 845/1355/76 850/1356/76 846/1357/76 +f 844/1358/77 848/1351/77 843/1359/77 +f 852/1360/77 856/1361/77 851/1362/77 +f 854/1363/74 857/1364/74 852/1360/74 +f 851/1365/75 855/1366/75 853/1367/75 +f 853/1367/76 858/1368/76 854/1363/76 +f 860/1369/77 864/1370/77 859/1371/77 +f 862/1372/74 865/1373/74 860/1369/74 +f 859/1374/75 863/1375/75 861/1376/75 +f 861/1376/76 866/1377/76 862/1372/76 +f 900/1378/77 904/1379/77 899/1380/77 +f 902/1381/74 905/1382/74 900/1378/74 +f 899/1383/75 903/1384/75 901/1385/75 +f 901/1385/76 906/1386/76 902/1381/76 +f 908/1387/77 912/1388/77 907/1389/77 +f 910/1390/74 913/1391/74 908/1387/74 +f 907/1392/75 911/1393/75 909/1394/75 +f 909/1394/76 914/1395/76 910/1390/76 +f 925/1396/76 928/1397/76 924/1398/76 +f 919/1399/74 926/1400/74 922/1401/74 +f 918/1402/72 921/1403/72 916/1404/72 +f 915/1405/73 919/1406/73 917/1407/73 +f 917/1408/76 922/1401/76 918/1409/76 +f 916/1410/77 920/1411/77 915/1412/77 +f 921/1413/74 924/1398/74 920/1411/74 +f 922/1414/74 925/1415/74 921/1403/74 +f 920/1416/74 923/1417/74 919/1406/74 +f 929/1418/74 927/1419/74 928/1397/74 +f 926/1420/73 929/1418/73 925/1415/73 +f 924/1421/72 927/1419/72 923/1417/72 +f 923/1422/77 930/1423/77 926/1400/77 +f 932/1424/74 933/1425/74 931/1426/74 +f 936/1427/74 937/1428/74 935/1429/74 +f 940/1430/74 941/1431/74 939/1432/74 +f 944/1433/74 945/1434/74 943/1435/74 +f 948/1436/74 949/1437/74 947/1438/74 +f 958/1439/75 959/1440/75 955/1441/75 +f 952/1442/72 958/1443/72 954/1444/72 +f 953/1445/73 956/1446/73 951/1447/73 +f 954/1448/76 955/1441/76 953/1449/76 +f 951/1450/77 957/1451/77 952/1452/77 +f 960/1453/76 965/1454/76 961/1455/76 +f 956/1456/75 961/1455/75 957/1451/75 +f 957/1457/75 962/1458/75 958/1443/75 +f 955/1459/75 960/1460/75 956/1446/75 +f 966/1461/75 964/1462/75 963/1463/75 +f 961/1464/73 966/1461/73 962/1458/73 +f 959/1465/72 964/1462/72 960/1460/72 +f 962/1466/77 963/1463/77 959/1440/77 +f 970/1467/84 968/1468/84 967/1469/84 +f 977/1470/76 974/1471/76 973/1472/76 +f 976/1473/77 971/1474/77 972/1475/77 +f 978/1476/74 972/1475/74 974/1471/74 +f 975/1477/75 973/1472/75 971/1478/75 +f 985/1479/76 982/1480/76 981/1481/76 +f 984/1482/77 979/1483/77 980/1484/77 +f 986/1485/74 980/1484/74 982/1480/74 +f 983/1486/75 981/1481/75 979/1487/75 +f 989/1488/72 988/1489/72 987/1490/72 +f 992/1491/73 993/1492/73 991/1493/73 +f 990/1494/75 992/1491/75 988/1495/75 +f 988/1489/76 991/1493/76 987/1490/76 +f 987/1496/74 993/1492/74 989/1497/74 +f 613/1067/72 614/1498/72 612/1068/72 +f 616/1070/73 618/1077/73 617/1071/73 +f 614/1073/74 618/1077/74 616/1070/74 +f 611/1069/75 615/1499/75 617/1075/75 +f 613/1076/76 617/1071/76 618/1077/76 +f 612/1079/77 616/1500/77 615/1080/77 +f 647/1082/72 663/1087/72 662/1083/72 +f 647/1085/72 648/1501/72 664/1086/72 +f 649/1088/72 665/1091/72 664/1086/72 +f 650/1090/72 666/1094/72 665/1091/72 +f 635/1093/72 651/1502/72 666/1094/72 +f 636/1096/72 652/1100/72 651/1097/72 +f 637/1099/72 653/1103/72 652/1100/72 +f 638/1102/72 654/1106/72 653/1103/72 +f 639/1105/72 655/1110/72 654/1106/72 +f 639/1108/72 640/1503/72 656/1109/72 +f 640/1111/72 641/1504/72 657/1112/72 +f 641/1113/72 642/1505/72 658/1114/72 +f 642/1115/72 643/1506/72 659/1116/72 +f 643/1117/72 644/1507/72 660/1118/72 +f 645/1119/72 661/1122/72 660/1118/72 +f 645/1121/72 646/1508/72 662/1083/72 +f 679/1123/73 695/1509/73 694/1124/73 +f 680/1126/73 696/1510/73 695/1127/73 +f 681/1128/73 697/1511/73 696/1129/73 +f 681/1128/73 682/1132/73 698/1130/73 +f 682/1132/73 667/1512/73 683/1133/73 +f 668/1135/73 684/1513/73 683/1136/73 +f 668/1135/73 669/1140/73 685/1138/73 +f 669/1140/73 670/1143/73 686/1141/73 +f 670/1143/73 671/1146/73 687/1144/73 +f 671/1146/73 672/1151/73 688/1147/73 +f 673/1149/73 689/1514/73 688/1150/73 +f 674/1152/73 690/1515/73 689/1153/73 +f 674/1152/73 675/1158/73 691/1154/73 +f 676/1156/73 692/1516/73 691/1157/73 +f 677/1159/73 693/1517/73 692/1160/73 +f 677/1159/73 678/1125/73 694/1161/73 +f 699/1163/73 700/1518/73 701/1519/73 +f 701/1519/73 702/1520/73 703/1164/73 +f 703/1164/73 704/1521/73 707/1165/73 +f 704/1521/73 705/1522/73 707/1165/73 +f 705/1522/73 706/1523/73 707/1165/73 +f 707/1165/73 708/1524/73 709/1525/73 +f 709/1525/73 710/1526/73 707/1165/73 +f 710/1526/73 711/1527/73 707/1165/73 +f 711/1527/73 712/1528/73 713/1529/73 +f 713/1529/73 714/1530/73 699/1163/73 +f 699/1163/73 701/1519/73 703/1164/73 +f 711/1527/73 713/1529/73 707/1165/73 +f 713/1529/73 699/1163/73 707/1165/73 +f 755/1166/74 759/1225/74 760/1167/74 +f 719/1169/76 723/1238/76 726/1170/76 +f 717/1172/76 719/1169/76 722/1171/76 +f 716/1174/77 721/1181/77 720/1175/77 +f 718/1173/74 722/1171/74 721/1177/74 +f 715/1176/75 720/1175/75 719/1169/75 +f 766/1179/73 764/1241/73 725/1180/73 +f 721/1181/77 725/1531/77 724/1182/77 +f 722/1171/78 726/1532/78 725/1183/78 +f 720/1175/79 724/1533/79 723/1184/79 +f 733/1185/73 734/1193/73 738/1186/73 +f 732/1188/73 736/1199/73 735/1189/73 +f 727/1191/75 732/1188/75 731/1190/75 +f 729/1192/76 731/1190/76 734/1193/76 +f 731/1190/73 735/1197/73 738/1195/73 +f 730/1194/74 734/1193/74 733/1185/74 +f 735/1197/77 739/1534/77 742/1198/77 +f 736/1199/74 740/1535/74 739/1200/74 +f 738/1186/75 742/1536/75 741/1201/75 +f 745/1202/80 743/1206/80 741/1203/80 +f 745/1202/73 746/1207/73 744/1205/73 +f 742/1204/81 739/1209/81 746/1207/81 +f 740/1208/82 744/1205/82 746/1207/82 +f 747/1210/72 756/1223/72 757/1211/72 +f 753/1213/83 754/1219/83 751/1214/83 +f 748/1212/72 757/1211/72 758/1216/72 +f 748/1218/74 750/1217/74 754/1219/74 +f 747/1221/75 752/1537/75 751/1214/75 +f 749/1222/76 751/1214/76 754/1219/76 +f 749/1222/72 755/1224/72 756/1223/72 +f 750/1217/72 758/1216/72 755/1224/72 +f 759/1225/72 762/1232/72 761/1226/72 +f 758/1227/77 762/1232/77 759/1225/77 +f 756/1229/76 760/1167/76 761/1226/76 +f 757/1231/75 761/1226/75 762/1232/75 +f 766/1234/79 770/1247/79 769/1235/79 +f 765/1237/73 766/1179/73 726/1170/73 +f 763/1239/73 765/1237/73 723/1238/73 +f 764/1241/73 763/1239/73 724/1240/73 +f 769/1235/73 770/1247/73 767/1242/73 +f 763/1244/78 768/1243/78 767/1242/78 +f 765/1246/77 767/1242/77 770/1247/77 +f 764/1249/76 769/1235/76 768/1243/76 +f 772/1251/77 777/1255/77 776/1252/77 +f 774/1254/74 778/1259/74 777/1255/74 +f 771/1256/75 776/1538/75 775/1257/75 +f 773/1258/76 775/1257/76 778/1259/76 +f 780/1260/77 785/1264/77 784/1261/77 +f 782/1263/74 786/1268/74 785/1264/74 +f 779/1265/75 784/1539/75 783/1266/75 +f 781/1267/76 783/1266/76 786/1268/76 +f 788/1269/77 793/1273/77 792/1270/77 +f 790/1272/74 794/1277/74 793/1273/74 +f 787/1274/75 792/1540/75 791/1275/75 +f 789/1276/76 791/1275/76 794/1277/76 +f 796/1278/77 801/1282/77 800/1279/77 +f 798/1281/74 802/1286/74 801/1282/74 +f 795/1283/75 800/1541/75 799/1284/75 +f 797/1285/76 799/1284/76 802/1286/76 +f 830/1287/73 831/1542/73 631/1288/73 +f 631/1290/73 831/1542/73 832/1291/73 +f 832/1291/73 833/1295/73 633/1293/73 +f 833/1295/73 834/1298/73 634/1296/73 +f 834/1298/73 819/1543/73 619/1299/73 +f 819/1301/73 820/1304/73 620/1302/73 +f 820/1304/73 821/1307/73 621/1305/73 +f 821/1307/73 822/1310/73 622/1308/73 +f 822/1310/73 823/1544/73 623/1311/73 +f 623/1313/73 823/1544/73 824/1314/73 +f 624/1316/73 824/1314/73 825/1317/73 +f 625/1319/73 825/1317/73 826/1320/73 +f 626/1322/73 826/1320/73 827/1323/73 +f 627/1325/73 827/1323/73 828/1326/73 +f 828/1326/73 829/1545/73 629/1328/73 +f 629/1330/73 829/1545/73 830/1287/73 +f 837/1332/72 838/1338/72 836/1333/72 +f 841/1335/73 842/1342/73 839/1336/73 +f 838/1338/74 842/1342/74 841/1335/74 +f 835/1339/75 840/1337/75 839/1336/75 +f 837/1341/76 839/1336/76 842/1342/76 +f 836/1344/77 841/1335/77 840/1337/77 +f 845/1346/72 846/1352/72 844/1347/72 +f 849/1349/73 850/1356/73 847/1350/73 +f 846/1352/74 850/1356/74 849/1349/74 +f 843/1353/75 848/1351/75 847/1350/75 +f 845/1355/76 847/1350/76 850/1356/76 +f 844/1358/77 849/1349/77 848/1351/77 +f 852/1360/77 857/1364/77 856/1361/77 +f 854/1363/74 858/1368/74 857/1364/74 +f 851/1365/75 856/1546/75 855/1366/75 +f 853/1367/76 855/1366/76 858/1368/76 +f 860/1369/77 865/1373/77 864/1370/77 +f 862/1372/74 866/1377/74 865/1373/74 +f 859/1374/75 864/1547/75 863/1375/75 +f 861/1376/76 863/1375/76 866/1377/76 +f 900/1378/77 905/1382/77 904/1379/77 +f 902/1381/74 906/1386/74 905/1382/74 +f 899/1383/75 904/1548/75 903/1384/75 +f 901/1385/76 903/1384/76 906/1386/76 +f 908/1387/77 913/1391/77 912/1388/77 +f 910/1390/74 914/1395/74 913/1391/74 +f 907/1392/75 912/1549/75 911/1393/75 +f 909/1394/76 911/1393/76 914/1395/76 +f 925/1396/76 929/1418/76 928/1397/76 +f 919/1399/74 923/1422/74 926/1400/74 +f 918/1402/72 922/1414/72 921/1403/72 +f 915/1405/73 920/1416/73 919/1406/73 +f 917/1408/76 919/1399/76 922/1401/76 +f 916/1410/77 921/1413/77 920/1411/77 +f 921/1413/74 925/1396/74 924/1398/74 +f 922/1414/74 926/1420/74 925/1415/74 +f 920/1416/74 924/1421/74 923/1417/74 +f 929/1418/74 930/1423/74 927/1419/74 +f 926/1420/73 930/1423/73 929/1418/73 +f 924/1421/72 928/1397/72 927/1419/72 +f 923/1422/77 927/1419/77 930/1423/77 +f 932/1424/74 934/1550/74 933/1425/74 +f 936/1427/74 938/1551/74 937/1428/74 +f 940/1430/74 942/1552/74 941/1431/74 +f 944/1433/74 946/1553/74 945/1434/74 +f 948/1436/74 950/1554/74 949/1437/74 +f 958/1439/75 962/1466/75 959/1440/75 +f 952/1442/72 957/1457/72 958/1443/72 +f 953/1445/73 955/1459/73 956/1446/73 +f 954/1448/76 958/1439/76 955/1441/76 +f 951/1450/77 956/1456/77 957/1451/77 +f 960/1453/76 964/1462/76 965/1454/76 +f 956/1456/75 960/1453/75 961/1455/75 +f 957/1457/75 961/1464/75 962/1458/75 +f 955/1459/75 959/1465/75 960/1460/75 +f 966/1461/75 965/1454/75 964/1462/75 +f 961/1464/73 965/1454/73 966/1461/73 +f 959/1465/72 963/1463/72 964/1462/72 +f 962/1466/77 966/1461/77 963/1463/77 +f 970/1467/84 969/1555/84 968/1468/84 +f 977/1470/76 978/1476/76 974/1471/76 +f 976/1473/77 975/1556/77 971/1474/77 +f 978/1476/74 976/1473/74 972/1475/74 +f 975/1477/75 977/1470/75 973/1472/75 +f 985/1479/76 986/1485/76 982/1480/76 +f 984/1482/77 983/1557/77 979/1483/77 +f 986/1485/74 984/1482/74 980/1484/74 +f 983/1486/75 985/1479/75 981/1481/75 +f 989/1488/72 990/1558/72 988/1489/72 +f 992/1491/73 994/1559/73 993/1492/73 +f 990/1494/75 994/1559/75 992/1491/75 +f 988/1489/76 992/1491/76 991/1493/76 +f 987/1496/74 991/1493/74 993/1492/74 +s 1 +f 633/1560/85 648/1561/86 632/1562/86 +f 626/1563/87 641/1564/88 625/1565/88 +f 634/1566/89 649/1567/85 633/1560/85 +f 627/1568/77 642/1569/87 626/1563/87 +f 620/1570/90 635/1571/76 619/1572/76 +f 619/1573/76 650/1574/89 634/1566/89 +f 628/1575/91 643/1576/77 627/1568/77 +f 621/1577/92 636/1578/90 620/1570/90 +f 629/1579/93 644/1580/91 628/1575/91 +f 622/1581/94 637/1582/92 621/1577/92 +f 630/1583/95 645/1584/93 629/1579/93 +f 623/1585/75 638/1586/94 622/1581/94 +f 631/1587/74 646/1588/95 630/1583/95 +f 624/1589/96 639/1590/75 623/1585/75 +f 632/1562/86 647/1591/74 631/1587/74 +f 625/1565/88 640/1592/96 624/1589/96 +f 661/1122/93 676/1156/91 660/1118/91 +f 654/1106/94 669/1140/92 653/1103/92 +f 662/1083/95 677/1159/93 661/1122/93 +f 655/1110/75 670/1143/94 654/1106/94 +f 663/1087/74 678/1125/95 662/1083/95 +f 656/1109/96 671/1146/75 655/1110/75 +f 664/1086/86 679/1123/74 663/1087/74 +f 657/1112/88 672/1151/96 656/1109/96 +f 665/1091/85 680/1126/86 664/1086/86 +f 658/1114/87 673/1149/88 657/1112/88 +f 666/1094/89 681/1128/85 665/1091/85 +f 659/1116/77 674/1152/87 658/1114/87 +f 652/1100/90 667/1137/76 651/1097/76 +f 651/1502/76 682/1132/89 666/1094/89 +f 660/1118/91 675/1158/77 659/1116/77 +f 653/1103/92 668/1135/90 652/1100/90 +f 696/1593/96 711/1594/75 695/1595/75 +f 689/1596/85 704/1597/86 688/1598/86 +f 697/1599/88 712/1600/96 696/1593/96 +f 690/1601/89 705/1602/85 689/1596/85 +f 698/1603/87 713/1604/88 697/1599/88 +f 691/1605/76 706/1606/89 690/1601/89 +f 684/1607/91 699/1608/77 683/1609/77 +f 683/1610/77 714/1611/87 698/1603/87 +f 692/1612/90 707/1613/76 691/1614/76 +f 685/1615/93 700/1616/91 684/1607/91 +f 693/1617/92 708/1618/90 692/1612/90 +f 686/1619/95 701/1620/93 685/1615/93 +f 694/1621/94 709/1622/92 693/1617/92 +f 687/1623/74 702/1624/95 686/1619/95 +f 695/1595/75 710/1625/94 694/1621/94 +f 688/1598/86 703/1626/74 687/1623/74 +f 813/1627/93 828/1326/91 812/1628/91 +f 806/1629/94 821/1307/92 805/1630/92 +f 814/1631/95 829/1545/93 813/1627/93 +f 807/1632/75 822/1310/94 806/1629/94 +f 815/1633/74 830/1287/95 814/1631/95 +f 808/1634/96 823/1544/75 807/1632/75 +f 816/1635/86 831/1542/74 815/1633/74 +f 809/1636/88 824/1314/96 808/1634/96 +f 817/1637/85 832/1291/86 816/1635/86 +f 810/1638/87 825/1317/88 809/1636/88 +f 818/1639/89 833/1295/85 817/1637/85 +f 811/1640/77 826/1320/87 810/1638/87 +f 804/1641/90 819/1301/76 803/1642/76 +f 803/1643/76 834/1298/89 818/1639/89 +f 812/1628/91 827/1323/77 811/1640/77 +f 805/1630/92 820/1304/90 804/1641/90 +f 874/1644/97 881/1645/74 873/1646/74 +f 872/1647/98 879/1648/72 871/1649/72 +f 870/1650/99 877/1651/75 869/1652/75 +f 868/1653/100 875/1654/73 867/1655/73 +f 867/1655/73 882/1656/97 874/1644/97 +f 873/1646/74 880/1657/98 872/1647/98 +f 871/1658/72 878/1659/99 870/1650/99 +f 869/1652/75 876/1660/100 868/1653/100 +f 890/1661/97 897/1662/74 889/1663/74 +f 888/1664/98 895/1665/72 887/1666/72 +f 886/1667/99 893/1668/75 885/1669/75 +f 884/1670/100 891/1671/73 883/1672/73 +f 883/1672/73 898/1673/97 890/1661/97 +f 889/1663/74 896/1674/98 888/1664/98 +f 887/1675/72 894/1676/99 886/1667/99 +f 885/1669/75 892/1677/100 884/1670/100 +f 633/1560/85 649/1567/85 648/1561/86 +f 626/1563/87 642/1569/87 641/1564/88 +f 634/1566/89 650/1574/89 649/1567/85 +f 627/1568/77 643/1576/77 642/1569/87 +f 620/1570/90 636/1578/90 635/1571/76 +f 619/1573/76 635/1678/76 650/1574/89 +f 628/1575/91 644/1580/91 643/1576/77 +f 621/1577/92 637/1582/92 636/1578/90 +f 629/1579/93 645/1584/93 644/1580/91 +f 622/1581/94 638/1586/94 637/1582/92 +f 630/1583/95 646/1588/95 645/1584/93 +f 623/1585/75 639/1590/75 638/1586/94 +f 631/1587/74 647/1591/74 646/1588/95 +f 624/1589/96 640/1592/96 639/1590/75 +f 632/1562/86 648/1561/86 647/1591/74 +f 625/1565/88 641/1564/88 640/1592/96 +f 661/1122/93 677/1159/93 676/1156/91 +f 654/1106/94 670/1143/94 669/1140/92 +f 662/1083/95 678/1125/95 677/1159/93 +f 655/1110/75 671/1146/75 670/1143/94 +f 663/1087/74 679/1123/74 678/1125/95 +f 656/1109/96 672/1151/96 671/1146/75 +f 664/1086/86 680/1126/86 679/1123/74 +f 657/1112/88 673/1149/88 672/1151/96 +f 665/1091/85 681/1128/85 680/1126/86 +f 658/1114/87 674/1152/87 673/1149/88 +f 666/1094/89 682/1132/89 681/1128/85 +f 659/1116/77 675/1158/77 674/1152/87 +f 652/1100/90 668/1135/90 667/1137/76 +f 651/1502/76 667/1512/76 682/1132/89 +f 660/1118/91 676/1156/91 675/1158/77 +f 653/1103/92 669/1140/92 668/1135/90 +f 696/1593/96 712/1600/96 711/1594/75 +f 689/1596/85 705/1602/85 704/1597/86 +f 697/1599/88 713/1604/88 712/1600/96 +f 690/1601/89 706/1606/89 705/1602/85 +f 698/1603/87 714/1611/87 713/1604/88 +f 691/1605/76 707/1679/76 706/1606/89 +f 684/1607/91 700/1616/91 699/1608/77 +f 683/1610/77 699/1680/77 714/1611/87 +f 692/1612/90 708/1618/90 707/1613/76 +f 685/1615/93 701/1620/93 700/1616/91 +f 693/1617/92 709/1622/92 708/1618/90 +f 686/1619/95 702/1624/95 701/1620/93 +f 694/1621/94 710/1625/94 709/1622/92 +f 687/1623/74 703/1626/74 702/1624/95 +f 695/1595/75 711/1594/75 710/1625/94 +f 688/1598/86 704/1597/86 703/1626/74 +f 813/1627/93 829/1545/93 828/1326/91 +f 806/1629/94 822/1310/94 821/1307/92 +f 814/1631/95 830/1287/95 829/1545/93 +f 807/1632/75 823/1544/75 822/1310/94 +f 815/1633/74 831/1542/74 830/1287/95 +f 808/1634/96 824/1314/96 823/1544/75 +f 816/1635/86 832/1291/86 831/1542/74 +f 809/1636/88 825/1317/88 824/1314/96 +f 817/1637/85 833/1295/85 832/1291/86 +f 810/1638/87 826/1320/87 825/1317/88 +f 818/1639/89 834/1298/89 833/1295/85 +f 811/1640/77 827/1323/77 826/1320/87 +f 804/1641/90 820/1304/90 819/1301/76 +f 803/1643/76 819/1543/76 834/1298/89 +f 812/1628/91 828/1326/91 827/1323/77 +f 805/1630/92 821/1307/92 820/1304/90 +f 874/1644/97 882/1656/97 881/1645/74 +f 872/1647/98 880/1657/98 879/1648/72 +f 870/1650/99 878/1659/99 877/1651/75 +f 868/1653/100 876/1660/100 875/1654/73 +f 867/1655/73 875/1654/73 882/1656/97 +f 873/1646/74 881/1645/74 880/1657/98 +f 871/1658/72 879/1681/72 878/1659/99 +f 869/1652/75 877/1651/75 876/1660/100 +f 890/1661/97 898/1673/97 897/1662/74 +f 888/1664/98 896/1674/98 895/1665/72 +f 886/1667/99 894/1676/99 893/1668/75 +f 884/1670/100 892/1677/100 891/1671/73 +f 883/1672/73 891/1671/73 898/1673/97 +f 889/1663/74 897/1662/74 896/1674/98 +f 887/1675/72 895/1682/72 894/1676/99 +f 885/1669/75 893/1668/75 892/1677/100 diff --git a/src/main/resources/assets/hbm/models/missileBooster.obj b/src/main/resources/assets/hbm/models/missileBooster.obj deleted file mode 100644 index 1b2478e83..000000000 --- a/src/main/resources/assets/hbm/models/missileBooster.obj +++ /dev/null @@ -1,416 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'carrier_booster.blend' -# www.blender.org -o Cylinder -v 0.000000 1.000000 -0.500000 -v 0.000000 8.000000 -0.500000 -v 0.250000 1.000000 -0.433013 -v 0.250000 8.000000 -0.433013 -v 0.433013 1.000000 -0.250000 -v 0.433013 8.000000 -0.250000 -v 0.500000 1.000000 0.000000 -v 0.500000 8.000000 0.000000 -v 0.433013 1.000000 0.250000 -v 0.433013 8.000000 0.250000 -v 0.250000 1.000000 0.433013 -v 0.250000 8.000000 0.433013 -v 0.000000 1.000000 0.500000 -v 0.000000 8.000000 0.500000 -v -0.250000 1.000000 0.433013 -v -0.250000 8.000000 0.433013 -v -0.433013 1.000000 0.250000 -v -0.433013 8.000000 0.250000 -v -0.500000 1.000000 0.000000 -v -0.500000 8.000000 0.000000 -v -0.433013 1.000000 -0.250000 -v -0.433013 8.000000 -0.250000 -v -0.250000 1.000000 -0.433013 -v -0.250000 8.000000 -0.433013 -v 0.200001 8.500000 -0.346410 -v 0.000001 8.500000 -0.400000 -v 0.346411 8.500000 -0.200000 -v 0.400001 8.500000 0.000000 -v 0.346411 8.500000 0.200000 -v 0.200001 8.500000 0.346410 -v 0.000001 8.500000 0.400000 -v -0.199999 8.500000 0.346410 -v -0.346409 8.500000 0.200000 -v -0.399999 8.500000 0.000000 -v -0.346409 8.500000 -0.200000 -v -0.199999 8.500000 -0.346410 -v 0.037502 9.000000 -0.064952 -v 0.000002 9.000000 -0.075000 -v 0.064954 9.000000 -0.037500 -v 0.075002 9.000000 0.000000 -v 0.064953 9.000000 0.037500 -v 0.037502 9.000000 0.064952 -v 0.000002 9.000000 0.075000 -v -0.037498 9.000000 0.064952 -v -0.064950 9.000000 0.037500 -v -0.074998 9.000000 0.000000 -v -0.064950 9.000000 -0.037500 -v -0.037498 9.000000 -0.064952 -v -0.000000 1.000000 -0.375000 -v 0.187500 1.000000 -0.324760 -v 0.324760 1.000000 -0.187500 -v 0.375000 1.000000 0.000000 -v 0.324760 1.000000 0.187500 -v 0.187500 1.000000 0.324760 -v 0.000000 1.000000 0.375000 -v -0.187500 1.000000 0.324760 -v -0.324759 1.000000 0.187500 -v -0.375000 1.000000 0.000000 -v -0.324760 1.000000 -0.187500 -v -0.187500 1.000000 -0.324759 -v 0.000000 0.000000 -0.500000 -v 0.250000 0.000000 -0.433013 -v 0.433013 0.000000 -0.250000 -v 0.500000 0.000000 0.000000 -v 0.433013 0.000000 0.250000 -v 0.250000 0.000000 0.433013 -v 0.000000 0.000000 0.500000 -v -0.250000 0.000000 0.433013 -v -0.433012 0.000000 0.250000 -v -0.500000 0.000000 0.000000 -v -0.433013 0.000000 -0.250000 -v -0.250000 0.000000 -0.433013 -vt 0.291673 0.852188 -vt 0.261395 0.852188 -vt 0.261395 0.033298 -vt 0.231118 0.852188 -vt 0.231118 0.033298 -vt 0.200840 0.852188 -vt 0.200840 0.033298 -vt 0.170562 0.852188 -vt 0.170563 0.033298 -vt 0.140284 0.852188 -vt 0.140285 0.033298 -vt 0.110006 0.852188 -vt 0.110008 0.033298 -vt 0.079728 0.852188 -vt 0.079730 0.033298 -vt 0.049451 0.852188 -vt 0.049453 0.033298 -vt 0.019173 0.852188 -vt 0.019175 0.033297 -vt 0.382507 0.852188 -vt 0.352229 0.852188 -vt 0.352228 0.033298 -vt 0.321951 0.852188 -vt 0.349201 0.911762 -vt 0.291673 0.033298 -vt 0.321950 0.033298 -vt 0.053237 0.019173 -vt 0.197812 0.911762 -vt 0.187972 0.980827 -vt 0.183430 0.980827 -vt 0.258368 0.911762 -vt 0.379479 0.911762 -vt 0.046423 0.911762 -vt 0.022201 0.911762 -vt 0.076701 0.911762 -vt 0.052478 0.911762 -vt 0.106979 0.911762 -vt 0.082756 0.911762 -vt 0.137256 0.911762 -vt 0.113034 0.911762 -vt 0.167534 0.911762 -vt 0.143312 0.911762 -vt 0.173590 0.911762 -vt 0.318923 0.911762 -vt 0.288645 0.911762 -vt 0.228090 0.911762 -vt 0.726241 0.560416 -vt 0.740920 0.556483 -vt 0.736987 0.571161 -vt 0.339361 0.980827 -vt 0.334819 0.980827 -vt 0.264423 0.911762 -vt 0.278805 0.980827 -vt 0.066861 0.980827 -vt 0.157694 0.980827 -vt 0.153152 0.980827 -vt 0.309083 0.980827 -vt 0.304541 0.980827 -vt 0.248527 0.980827 -vt 0.243986 0.980827 -vt 0.036583 0.980827 -vt 0.032041 0.980827 -vt 0.127416 0.980827 -vt 0.218250 0.980827 -vt 0.213708 0.980827 -vt 0.369639 0.980827 -vt 0.365097 0.980827 -vt 0.097138 0.980827 -vt 0.092596 0.980827 -vt 0.643102 0.894316 -vt 0.613151 0.780289 -vt 0.642667 0.773541 -vt 0.083515 0.019173 -vt 0.106223 0.019173 -vt 0.113792 0.019173 -vt 0.136500 0.019173 -vt 0.144070 0.019173 -vt 0.166778 0.019173 -vt 0.174347 0.019173 -vt 0.197055 0.019173 -vt 0.295457 0.019173 -vt 0.265180 0.019173 -vt 0.287888 0.019173 -vt 0.204625 0.019173 -vt 0.227333 0.019173 -vt 0.325735 0.019173 -vt 0.348443 0.019173 -vt 0.234902 0.019173 -vt 0.257610 0.019173 -vt 0.382505 0.033297 -vt 0.356012 0.019173 -vt 0.022960 0.019173 -vt 0.797384 0.255928 -vt 0.684386 0.225651 -vt 0.725746 0.184290 -vt 0.710258 0.883441 -vt 0.702692 0.765789 -vt 0.732955 0.764817 -vt 0.822808 0.894316 -vt 0.852759 0.780289 -vt 0.881781 0.788917 -vt 0.778254 0.885625 -vt 0.793354 0.768701 -vt 0.823243 0.773541 -vt 0.621335 0.900787 -vt 0.584128 0.788917 -vt 0.687655 0.885625 -vt 0.672555 0.768701 -vt 0.800671 0.889255 -vt 0.755651 0.883441 -vt 0.763217 0.765789 -vt 0.600028 0.908641 -vt 0.555719 0.799390 -vt 0.665239 0.889255 -vt 0.732955 0.882712 -vt 0.844574 0.900787 -vt 0.910190 0.799390 -vt 0.324979 0.911762 -vt 0.075946 0.019173 -vt 0.234145 0.911762 -vt 0.355257 0.911762 -vt 0.294701 0.911762 -vt 0.203868 0.911762 -vt 0.732445 0.571161 -vt 0.728512 0.568891 -vt 0.726241 0.564957 -vt 0.728512 0.556483 -vt 0.732445 0.554212 -vt 0.736987 0.554212 -vt 0.743191 0.560416 -vt 0.743191 0.564957 -vt 0.740920 0.568891 -vt 0.274263 0.980827 -vt 0.062319 0.980827 -vt 0.122875 0.980827 -vt 0.318165 0.019173 -vt 0.378720 0.019173 -vt 0.045668 0.019173 -vt 0.756024 0.184290 -vt 0.782245 0.199429 -vt 0.797384 0.225651 -vt 0.782245 0.282150 -vt 0.756024 0.297288 -vt 0.725746 0.297288 -vt 0.699525 0.282150 -vt 0.684386 0.255928 -vt 0.699525 0.199429 -vt 0.865881 0.908641 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn -0.694300 0.189700 -0.694300 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn 0.818100 0.531700 0.219200 -vn 0.694300 0.189700 -0.694300 -vn -0.948400 0.189700 -0.254100 -vn -0.948400 0.189700 0.254100 -vn -0.694300 0.189700 0.694300 -vn -0.254100 0.189700 0.948400 -vn 0.254100 0.189700 0.948400 -vn 0.694300 0.189700 0.694300 -vn 0.948400 0.189700 0.254100 -vn -0.254100 0.189700 -0.948400 -vn 0.254100 0.189700 -0.948400 -vn 0.948400 0.189700 -0.254100 -vn 0.000000 1.000000 -0.000000 -vn -0.598900 0.531700 -0.598900 -vn 0.219200 0.531700 -0.818100 -vn -0.598900 0.531700 0.598900 -vn 0.598900 0.531700 0.598900 -vn -0.219200 0.531700 -0.818100 -vn 0.598900 0.531700 -0.598900 -vn -0.818100 0.531700 0.219200 -vn 0.219200 0.531700 0.818100 -vn 0.818100 0.531700 -0.219200 -vn -0.818100 0.531700 -0.219200 -vn -0.219200 0.531700 0.818100 -vn -0.257000 0.119900 0.959000 -vn 0.959000 0.119900 0.257000 -vn -0.702000 0.119900 -0.702000 -vn 0.257000 0.119900 -0.959000 -vn -0.702000 0.119900 0.702000 -vn 0.702000 0.119900 0.702000 -vn -0.257000 0.119900 -0.959000 -vn 0.702000 0.119900 -0.702000 -vn -0.959000 0.119900 0.257000 -vn 0.257000 0.119900 0.959000 -vn 0.959000 0.119900 -0.257000 -vn -0.959000 0.119900 -0.257000 -vn 0.000000 1.000000 0.000100 -vn 0.000000 1.000000 -0.000100 -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/8/5 12/10/5 11/11/5 -f 12/10/6 14/12/6 13/13/6 -f 14/12/7 16/14/7 15/15/7 -f 16/14/8 18/16/8 17/17/8 -f 18/16/9 20/18/9 19/19/9 -f 20/20/10 22/21/10 21/22/10 -f 24/23/11 22/21/11 35/24/11 -f 24/23/12 2/1/12 1/25/12 -f 22/21/13 24/23/13 23/26/13 -f 15/15/14 17/17/14 57/27/14 -f 28/28/15 40/29/15 41/30/15 -f 6/4/16 4/2/16 25/31/16 -f 22/21/17 20/20/17 34/32/17 -f 18/16/18 33/33/18 34/34/18 -f 16/14/19 32/35/19 33/36/19 -f 14/12/20 31/37/20 32/38/20 -f 12/10/21 30/39/21 31/40/21 -f 10/8/22 29/41/22 30/42/22 -f 8/6/23 28/28/23 29/43/23 -f 2/1/24 24/23/24 36/44/24 -f 4/2/25 2/1/25 26/45/25 -f 8/6/26 6/4/26 27/46/26 -f 47/47/27 43/48/27 39/49/27 -f 35/24/28 47/50/28 48/51/28 -f 25/52/29 26/45/29 38/53/29 -f 33/36/30 32/35/30 44/54/30 -f 29/41/31 41/55/31 42/56/31 -f 36/44/32 48/57/32 38/58/32 -f 25/31/33 37/59/33 39/60/33 -f 33/33/34 45/61/34 46/62/34 -f 31/40/35 30/39/35 42/63/35 -f 27/46/36 39/64/36 40/65/36 -f 34/32/37 46/66/37 47/67/37 -f 31/37/38 43/68/38 44/69/38 -f 56/70/39 68/71/39 67/72/39 -f 15/15/14 56/73/14 55/74/14 -f 13/13/14 55/75/14 54/76/14 -f 11/11/14 54/77/14 53/78/14 -f 9/9/14 53/79/14 52/80/14 -f 23/26/14 1/25/14 49/81/14 -f 3/3/14 50/82/14 49/83/14 -f 7/7/14 52/84/14 51/85/14 -f 23/26/14 60/86/14 59/87/14 -f 5/5/14 51/88/14 50/89/14 -f 19/90/14 21/22/14 59/91/14 -f 17/17/14 19/19/14 58/92/14 -f 64/93/14 70/94/14 72/95/14 -f 53/96/40 65/97/40 64/98/40 -f 60/99/41 72/100/41 71/101/41 -f 50/102/42 62/103/42 61/104/42 -f 57/105/43 69/106/43 68/71/43 -f 54/107/44 66/108/44 65/97/44 -f 60/99/45 49/109/45 61/104/45 -f 50/102/46 51/110/46 63/111/46 -f 57/105/47 58/112/47 70/113/47 -f 54/107/48 55/114/48 67/72/48 -f 52/115/49 64/98/49 63/111/49 -f 59/116/50 71/101/50 70/117/50 -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/9/5 10/8/5 11/11/5 -f 11/11/6 12/10/6 13/13/6 -f 13/13/7 14/12/7 15/15/7 -f 15/15/8 16/14/8 17/17/8 -f 17/17/9 18/16/9 19/19/9 -f 19/90/10 20/20/10 21/22/10 -f 36/118/11 24/23/11 35/24/11 -f 23/26/12 24/23/12 1/25/12 -f 21/22/13 22/21/13 23/26/13 -f 56/119/14 15/15/14 57/27/14 -f 29/43/15 28/28/15 41/30/15 -f 27/120/16 6/4/16 25/31/16 -f 35/121/17 22/21/17 34/32/17 -f 20/18/18 18/16/18 34/34/18 -f 18/16/19 16/14/19 33/36/19 -f 16/14/20 14/12/20 32/38/20 -f 14/12/21 12/10/21 31/40/21 -f 12/10/22 10/8/22 30/42/22 -f 10/8/23 8/6/23 29/43/23 -f 26/122/24 2/1/24 36/44/24 -f 25/52/25 4/2/25 26/45/25 -f 28/123/26 8/6/26 27/46/26 -f 39/49/51 37/124/51 38/125/51 -f 38/125/51 48/126/51 47/47/51 -f 47/47/27 46/127/27 43/48/27 -f 45/128/52 44/129/52 43/48/52 -f 43/48/51 42/130/51 41/131/51 -f 41/131/27 40/132/27 43/48/27 -f 39/49/27 38/125/27 47/47/27 -f 46/127/27 45/128/27 43/48/27 -f 43/48/27 40/132/27 39/49/27 -f 36/118/28 35/24/28 48/51/28 -f 37/133/29 25/52/29 38/53/29 -f 45/134/30 33/36/30 44/54/30 -f 30/42/31 29/41/31 42/56/31 -f 26/122/32 36/44/32 38/58/32 -f 27/120/33 25/31/33 39/60/33 -f 34/34/34 33/33/34 46/62/34 -f 43/135/35 31/40/35 42/63/35 -f 28/123/36 27/46/36 40/65/36 -f 35/121/37 34/32/37 47/67/37 -f 32/38/38 31/37/38 44/69/38 -f 55/114/39 56/70/39 67/72/39 -f 13/13/14 15/15/14 55/74/14 -f 11/11/14 13/13/14 54/76/14 -f 9/9/14 11/11/14 53/78/14 -f 7/7/14 9/9/14 52/80/14 -f 60/136/14 23/26/14 49/81/14 -f 1/25/14 3/3/14 49/83/14 -f 5/5/14 7/7/14 51/85/14 -f 21/22/14 23/26/14 59/87/14 -f 3/3/14 5/5/14 50/89/14 -f 58/137/14 19/90/14 59/91/14 -f 57/138/14 17/17/14 58/92/14 -f 72/95/14 61/139/14 62/140/14 -f 62/140/14 63/141/14 64/93/14 -f 64/93/14 65/142/14 66/143/14 -f 66/143/14 67/144/14 68/145/14 -f 68/145/14 69/146/14 70/94/14 -f 70/94/14 71/147/14 72/95/14 -f 72/95/14 62/140/14 64/93/14 -f 64/93/14 66/143/14 68/145/14 -f 68/145/14 70/94/14 64/93/14 -f 52/115/40 53/96/40 64/98/40 -f 59/116/41 60/99/41 71/101/41 -f 49/109/42 50/102/42 61/104/42 -f 56/70/43 57/105/43 68/71/43 -f 53/96/44 54/107/44 65/97/44 -f 72/100/45 60/99/45 61/104/45 -f 62/103/46 50/102/46 63/111/46 -f 69/106/47 57/105/47 70/113/47 -f 66/108/48 54/107/48 67/72/48 -f 51/110/49 52/115/49 63/111/49 -f 58/148/50 59/116/50 70/117/50 diff --git a/src/main/resources/assets/hbm/models/missileCarrier.obj b/src/main/resources/assets/hbm/models/missileCarrier.obj deleted file mode 100644 index 5f3734ea0..000000000 --- a/src/main/resources/assets/hbm/models/missileCarrier.obj +++ /dev/null @@ -1,1148 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'carrier_main.blend' -# www.blender.org -o Cylinder -v 0.000000 1.500000 -0.750000 -v 0.000000 5.000000 -0.750000 -v 0.375000 1.500000 -0.649519 -v 0.375000 5.000000 -0.649519 -v 0.649519 1.500000 -0.375000 -v 0.649519 5.000000 -0.375000 -v 0.750000 1.500000 0.000000 -v 0.750000 5.000000 0.000000 -v 0.649519 1.500000 0.375000 -v 0.649519 5.000000 0.375000 -v 0.375000 1.500000 0.649519 -v 0.375000 5.000000 0.649519 -v 0.000000 1.500000 0.750000 -v 0.000000 5.000000 0.750000 -v -0.375000 1.500000 0.649519 -v -0.375000 5.000000 0.649519 -v -0.649519 1.500000 0.375000 -v -0.649519 5.000000 0.375000 -v -0.750000 1.500000 0.000000 -v -0.750000 5.000000 0.000000 -v -0.649519 1.500000 -0.375000 -v -0.649519 5.000000 -0.375000 -v -0.375000 1.500000 -0.649519 -v -0.375000 5.000000 -0.649519 -v -0.000000 1.250000 -0.562500 -v 0.281250 1.250000 -0.487139 -v 0.487139 1.250000 -0.281250 -v 0.562500 1.250000 0.000000 -v 0.487139 1.250000 0.281250 -v 0.281250 1.250000 0.487139 -v 0.000000 1.250000 0.562500 -v -0.281250 1.250000 0.487139 -v -0.487139 1.250000 0.281250 -v -0.562500 1.250000 0.000000 -v -0.487140 1.250000 -0.281250 -v -0.281250 1.250000 -0.487139 -v -0.000000 1.000000 -0.562500 -v 0.281250 1.000000 -0.487139 -v 0.487139 1.000000 -0.281250 -v 0.562500 1.000000 0.000000 -v 0.487139 1.000000 0.281250 -v 0.281250 1.000000 0.487139 -v -0.000000 1.000000 0.562500 -v -0.281250 1.000000 0.487139 -v -0.487139 1.000000 0.281250 -v -0.562500 1.000000 0.000000 -v -0.487140 1.000000 -0.281250 -v -0.281250 1.000000 -0.487139 -v -0.000000 0.750000 -0.262500 -v 0.131250 0.750000 -0.227332 -v 0.227332 0.750000 -0.131250 -v 0.262500 0.750000 0.000000 -v 0.227332 0.750000 0.131250 -v 0.131250 0.750000 0.227332 -v -0.000000 0.750000 0.262500 -v -0.131250 0.750000 0.227332 -v -0.227332 0.750000 0.131250 -v -0.262500 0.750000 0.000000 -v -0.227332 0.750000 -0.131250 -v -0.131250 0.750000 -0.227332 -v 0.000000 0.500000 -0.450000 -v 0.225000 0.500000 -0.389711 -v 0.389711 0.500000 -0.225000 -v 0.450000 0.500000 0.000000 -v 0.389711 0.500000 0.225000 -v 0.225000 0.500000 0.389711 -v 0.000000 0.500000 0.450000 -v -0.225000 0.500000 0.389712 -v -0.389711 0.500000 0.225000 -v -0.450000 0.500000 0.000000 -v -0.389712 0.500000 -0.225000 -v -0.225000 0.500000 -0.389711 -v -0.318750 0.000000 -0.552091 -v -0.552091 0.000000 -0.318750 -v -0.637500 0.000000 0.000000 -v -0.552091 0.000000 0.318750 -v -0.318750 0.000000 0.552091 -v 0.000000 0.000000 0.637500 -v 0.318750 0.000000 0.552091 -v 0.552091 0.000000 0.318750 -v 0.637500 0.000000 0.000000 -v 0.552091 0.000000 -0.318750 -v 0.318750 0.000000 -0.552091 -v 0.000000 0.000000 -0.637500 -v -0.270938 0.000000 -0.469277 -v 0.000000 0.000000 -0.541875 -v -0.469278 0.000000 -0.270937 -v -0.541875 0.000000 0.000000 -v -0.469277 0.000000 0.270938 -v -0.270937 0.000000 0.469278 -v 0.000000 0.000000 0.541875 -v 0.270938 0.000000 0.469278 -v 0.469278 0.000000 0.270938 -v 0.541875 0.000000 0.000000 -v 0.469278 0.000000 -0.270938 -v 0.270938 0.000000 -0.469278 -v -0.054187 0.750000 -0.093855 -v 0.000000 0.750000 -0.108375 -v -0.093855 0.750000 -0.054187 -v -0.108375 0.750000 0.000000 -v -0.093855 0.750000 0.054188 -v -0.054187 0.750000 0.093856 -v 0.000000 0.750000 0.108375 -v 0.054188 0.750000 0.093856 -v 0.093856 0.750000 0.054188 -v 0.108375 0.750000 0.000000 -v 0.093856 0.750000 -0.054187 -v 0.054188 0.750000 -0.093855 -v 0.375000 7.000000 -0.649519 -v 0.000000 7.000000 -0.750000 -v 0.649519 7.000000 -0.375000 -v 0.750000 7.000000 0.000000 -v 0.649519 7.000000 0.375000 -v 0.375000 7.000000 0.649519 -v 0.000000 7.000000 0.750000 -v -0.375000 7.000000 0.649519 -v -0.649519 7.000000 0.375000 -v -0.750000 7.000000 0.000000 -v -0.649519 7.000000 -0.375000 -v -0.375000 7.000000 -0.649519 -v 0.375000 10.500000 -0.649519 -v 0.000000 10.500000 -0.750000 -v 0.649519 10.500000 -0.375000 -v 0.750000 10.500000 0.000000 -v 0.649519 10.500000 0.375000 -v 0.375000 10.500000 0.649519 -v 0.000000 10.500000 0.750000 -v -0.374999 10.500000 0.649519 -v -0.649519 10.500000 0.375000 -v -0.750000 10.500000 0.000000 -v -0.649519 10.500000 -0.375000 -v -0.375000 10.500000 -0.649519 -v -0.000000 5.000000 -0.787500 -v 0.393750 5.000000 -0.681995 -v 0.681995 5.000000 -0.393750 -v 0.787500 5.000000 0.000000 -v 0.681995 5.000000 0.393750 -v 0.393750 5.000000 0.681995 -v 0.000000 5.000000 0.787500 -v -0.393750 5.000000 0.681995 -v -0.681995 5.000000 0.393750 -v -0.787500 5.000000 0.000000 -v -0.681995 5.000000 -0.393750 -v -0.393750 5.000000 -0.681995 -v 0.393750 7.000000 -0.681995 -v 0.000000 7.000000 -0.787500 -v 0.681995 7.000000 -0.393750 -v 0.787500 7.000000 0.000000 -v 0.681995 7.000000 0.393750 -v 0.393750 7.000000 0.681995 -v 0.000000 7.000000 0.787500 -v -0.393750 7.000000 0.681995 -v -0.681995 7.000000 0.393750 -v -0.787500 7.000000 0.000000 -v -0.681995 7.000000 -0.393750 -v -0.393750 7.000000 -0.681995 -v 0.562501 12.000000 -0.974279 -v 0.000001 12.000000 -1.125000 -v 0.974279 12.000000 -0.562500 -v 1.125000 12.000000 -0.000000 -v 0.974279 12.000000 0.562500 -v 0.562501 12.000000 0.974278 -v 0.000001 12.000000 1.125000 -v -0.562499 12.000000 0.974279 -v -0.974278 12.000000 0.562500 -v -1.125000 12.000000 0.000000 -v -0.974278 12.000000 -0.562499 -v -0.562500 12.000000 -0.974278 -v 0.562500 13.500000 -0.974279 -v 0.000000 13.500000 -1.125000 -v 0.974279 13.500000 -0.562500 -v 1.125000 13.500000 -0.000000 -v 0.974279 13.500000 0.562500 -v 0.562500 13.500000 0.974278 -v 0.000000 13.500000 1.125000 -v -0.562499 13.500000 0.974279 -v -0.974278 13.500000 0.562500 -v -1.125000 13.500000 0.000000 -v -0.974279 13.500000 -0.562499 -v -0.562500 13.500000 -0.974278 -v 0.140625 15.500000 -0.243570 -v 0.000000 15.500000 -0.281250 -v 0.243570 15.500000 -0.140625 -v 0.281250 15.500000 0.000000 -v 0.243570 15.500000 0.140625 -v 0.140625 15.500000 0.243570 -v 0.000000 15.500000 0.281250 -v -0.140625 15.500000 0.243570 -v -0.243569 15.500000 0.140625 -v -0.281250 15.500000 0.000000 -v -0.243569 15.500000 -0.140625 -v -0.140625 15.500000 -0.243569 -v 0.021094 15.750000 -0.036535 -v 0.000000 15.750000 -0.042187 -v 0.036536 15.750000 -0.021094 -v 0.042188 15.750000 0.000000 -v 0.036536 15.750000 0.021094 -v 0.021094 15.750000 0.036536 -v 0.000001 15.750000 0.042188 -v -0.021093 15.750000 0.036536 -v -0.036535 15.750000 0.021094 -v -0.042187 15.750000 0.000000 -v -0.036535 15.750000 -0.021094 -v -0.021093 15.750000 -0.036535 -vt 0.301507 0.312696 -vt 0.272488 0.312697 -vt 0.272481 0.051083 -vt 0.271037 0.312697 -vt 0.242019 0.312697 -vt 0.242011 0.051084 -vt 0.240568 0.312697 -vt 0.211549 0.312698 -vt 0.211542 0.051085 -vt 0.210098 0.312698 -vt 0.181079 0.312699 -vt 0.181072 0.051086 -vt 0.179628 0.312699 -vt 0.150609 0.312700 -vt 0.150602 0.051086 -vt 0.149158 0.312700 -vt 0.120140 0.312701 -vt 0.120133 0.051087 -vt 0.118689 0.312701 -vt 0.089670 0.312702 -vt 0.089662 0.051088 -vt 0.088219 0.312702 -vt 0.059200 0.312702 -vt 0.059193 0.051089 -vt 0.057749 0.312702 -vt 0.028730 0.312703 -vt 0.028723 0.051090 -vt 0.392917 0.312693 -vt 0.363898 0.312694 -vt 0.363890 0.051081 -vt 0.331977 0.312695 -vt 0.302958 0.312696 -vt 0.302951 0.051082 -vt 0.362447 0.312694 -vt 0.333428 0.312695 -vt 0.333420 0.051081 -vt 0.240560 0.051084 -vt 0.215168 0.028010 -vt 0.614773 0.847825 -vt 0.614773 0.866512 -vt 0.593009 0.866512 -vt 0.362439 0.051081 -vt 0.337047 0.028006 -vt 0.245638 0.028009 -vt 0.267402 0.028008 -vt 0.367517 0.028006 -vt 0.389281 0.028005 -vt 0.032349 0.028015 -vt 0.054113 0.028014 -vt 0.062820 0.028014 -vt 0.084584 0.028013 -vt 0.093289 0.028013 -vt 0.115053 0.028012 -vt 0.123759 0.028012 -vt 0.145523 0.028012 -vt 0.154229 0.028011 -vt 0.175993 0.028011 -vt 0.210091 0.051085 -vt 0.184699 0.028010 -vt 0.306577 0.028007 -vt 0.328341 0.028006 -vt 0.301500 0.051082 -vt 0.276108 0.028008 -vt 0.608970 0.895119 -vt 0.549481 0.847825 -vt 0.549481 0.866512 -vt 0.527717 0.866512 -vt 0.440661 0.847825 -vt 0.440661 0.866512 -vt 0.418896 0.866512 -vt 0.636537 0.847825 -vt 0.636537 0.866512 -vt 0.571245 0.847825 -vt 0.571245 0.866512 -vt 0.462425 0.847825 -vt 0.462425 0.866512 -vt 0.505953 0.847825 -vt 0.505953 0.866512 -vt 0.484189 0.866512 -vt 0.658302 0.847825 -vt 0.658302 0.866512 -vt 0.593009 0.847825 -vt 0.484189 0.847825 -vt 0.527717 0.847825 -vt 0.680066 0.847825 -vt 0.680066 0.866512 -vt 0.253796 0.824518 -vt 0.275183 0.833911 -vt 0.265791 0.848572 -vt 0.543677 0.895119 -vt 0.533521 0.895119 -vt 0.434857 0.895119 -vt 0.630734 0.895119 -vt 0.620577 0.895119 -vt 0.565441 0.895119 -vt 0.555285 0.895119 -vt 0.456621 0.895119 -vt 0.446464 0.895119 -vt 0.500149 0.895119 -vt 0.652498 0.895119 -vt 0.642341 0.895119 -vt 0.587206 0.895119 -vt 0.577049 0.895119 -vt 0.478385 0.895119 -vt 0.468228 0.895119 -vt 0.521913 0.895119 -vt 0.674262 0.895119 -vt 0.664105 0.895119 -vt 0.224264 0.879299 -vt 0.238474 0.916598 -vt 0.214722 0.923249 -vt 0.217381 0.856977 -vt 0.226504 0.852514 -vt 0.239903 0.871647 -vt 0.178528 0.861344 -vt 0.188643 0.862267 -vt 0.190158 0.885576 -vt 0.131998 0.833070 -vt 0.114525 0.848572 -vt 0.105133 0.833911 -vt 0.229094 0.850940 -vt 0.237259 0.844899 -vt 0.253900 0.861291 -vt 0.201788 0.861344 -vt 0.207497 0.883993 -vt 0.140795 0.842882 -vt 0.126416 0.861291 -vt 0.162935 0.856977 -vt 0.156052 0.879299 -vt 0.140413 0.871647 -vt 0.239521 0.842882 -vt 0.246458 0.835463 -vt 0.214549 0.858057 -vt 0.151222 0.850940 -vt 0.175547 0.860795 -vt 0.172819 0.883993 -vt 0.119685 0.905758 -vt 0.099857 0.891087 -vt 0.297304 0.873069 -vt 0.280459 0.891087 -vt 0.141842 0.916598 -vt 0.083012 0.873069 -vt 0.190158 0.925490 -vt 0.165594 0.923249 -vt 0.260631 0.905758 -vt 0.310610 0.852299 -vt 0.262003 0.912773 -vt 0.243170 0.921987 -vt 0.792469 0.894307 -vt 0.854840 0.876912 -vt 0.856480 0.880772 -vt 0.315425 0.857581 -vt 0.161951 0.929398 -vt 0.141761 0.923745 -vt 0.114092 0.910208 -vt 0.097238 0.897737 -vt 0.238554 0.923745 -vt 0.218365 0.929398 -vt 0.301084 0.879135 -vt 0.137146 0.921987 -vt 0.118313 0.912773 -vt 0.093550 0.894450 -vt 0.079232 0.879135 -vt 0.213507 0.930293 -vt 0.192628 0.932198 -vt 0.283078 0.897737 -vt 0.266224 0.910208 -vt 0.076200 0.875235 -vt 0.064891 0.857581 -vt 0.187688 0.932198 -vt 0.166809 0.930293 -vt 0.828610 0.623227 -vt 0.832242 0.609674 -vt 0.842163 0.619596 -vt 0.910617 0.942823 -vt 0.878470 0.886616 -vt 0.881809 0.884080 -vt 0.940197 0.913601 -vt 0.884386 0.880772 -vt 0.886026 0.876912 -vt 0.849644 0.950787 -vt 0.866275 0.888209 -vt 0.870433 0.888752 -vt 0.800670 0.913603 -vt 0.859056 0.884080 -vt 0.951365 0.873551 -vt 0.948397 0.894305 -vt 0.870433 0.953503 -vt 0.874591 0.888209 -vt 0.813551 0.930145 -vt 0.862396 0.886616 -vt 0.789500 0.873552 -vt 0.854246 0.872761 -vt 0.891223 0.950787 -vt 0.927315 0.930144 -vt 0.830249 0.942823 -vt 0.088223 0.467610 -vt 0.088231 0.729223 -vt 0.059212 0.729224 -vt 0.059205 0.467611 -vt 0.058479 0.464903 -vt 0.088949 0.464902 -vt 0.028735 0.467612 -vt 0.028009 0.464904 -vt 0.363902 0.467602 -vt 0.363177 0.464895 -vt 0.393646 0.464894 -vt 0.529458 0.028005 -vt 0.536713 0.143348 -vt 0.493184 0.143348 -vt 0.179632 0.467607 -vt 0.179640 0.729221 -vt 0.150621 0.729221 -vt 0.331981 0.467603 -vt 0.331988 0.729216 -vt 0.302969 0.729217 -vt 0.271042 0.467605 -vt 0.271049 0.729219 -vt 0.242030 0.729220 -vt 0.057754 0.467611 -vt 0.057762 0.729224 -vt 0.028743 0.729225 -vt 0.149163 0.467608 -vt 0.149170 0.729221 -vt 0.120151 0.729222 -vt 0.240572 0.467606 -vt 0.240579 0.729219 -vt 0.211560 0.729220 -vt 0.392921 0.467601 -vt 0.392928 0.729214 -vt 0.363909 0.729215 -vt 0.118693 0.467609 -vt 0.118700 0.729222 -vt 0.089681 0.729223 -vt 0.210102 0.467607 -vt 0.210109 0.729219 -vt 0.181090 0.729220 -vt 0.362451 0.467602 -vt 0.362459 0.729216 -vt 0.333440 0.729217 -vt 0.301511 0.467604 -vt 0.301519 0.729218 -vt 0.272500 0.729219 -vt 0.180354 0.315407 -vt 0.180358 0.464900 -vt 0.149888 0.464901 -vt 0.210823 0.315406 -vt 0.210828 0.464899 -vt 0.332703 0.315402 -vt 0.332707 0.464896 -vt 0.302237 0.464897 -vt 0.302233 0.315403 -vt 0.271767 0.464897 -vt 0.241293 0.315405 -vt 0.241297 0.464898 -vt 0.363172 0.315401 -vt 0.271763 0.315404 -vt 0.393642 0.315401 -vt 0.058475 0.315410 -vt 0.088944 0.315409 -vt 0.119414 0.315408 -vt 0.119418 0.464902 -vt 0.149884 0.315407 -vt 0.089674 0.467610 -vt 0.120144 0.467609 -vt 0.150614 0.467608 -vt 0.181083 0.467607 -vt 0.211553 0.467607 -vt 0.242023 0.467606 -vt 0.272493 0.467605 -vt 0.302962 0.467604 -vt 0.333432 0.467603 -vt 0.028005 0.315411 -vt 0.754354 0.143348 -vt 0.754354 0.255468 -vt 0.710826 0.255468 -vt 0.660042 0.028005 -vt 0.667297 0.143348 -vt 0.623769 0.143348 -vt 0.877684 0.028005 -vt 0.884939 0.143348 -vt 0.841410 0.143348 -vt 0.790627 0.028005 -vt 0.797882 0.143348 -vt 0.485930 0.028006 -vt 0.449656 0.143348 -vt 0.587495 0.028005 -vt 0.616514 0.028005 -vt 0.747099 0.028005 -vt 0.710826 0.143348 -vt 0.935722 0.028005 -vt 0.964740 0.028005 -vt 0.971995 0.143348 -vt 0.572986 0.028005 -vt 0.580241 0.143348 -vt 0.703571 0.028005 -vt 0.892193 0.028005 -vt 0.921212 0.028005 -vt 0.928467 0.143348 -vt 0.834155 0.028005 -vt 0.580241 0.255468 -vt 0.623769 0.255468 -vt 0.607446 0.416897 -vt 0.971995 0.255468 -vt 0.928467 0.255468 -vt 0.536713 0.255468 -vt 0.667297 0.255468 -vt 0.884939 0.255468 -vt 0.841410 0.255468 -vt 0.797882 0.255468 -vt 0.493185 0.255468 -vt 0.449656 0.255468 -vt 0.602821 0.442335 -vt 0.601189 0.442335 -vt 0.738030 0.416897 -vt 0.727149 0.416897 -vt 0.955672 0.416897 -vt 0.563918 0.416897 -vt 0.553036 0.416897 -vt 0.694502 0.416897 -vt 0.683621 0.416897 -vt 0.912144 0.416897 -vt 0.825087 0.416897 -vt 0.814205 0.416897 -vt 0.520390 0.416897 -vt 0.509508 0.416897 -vt 0.650974 0.416897 -vt 0.640092 0.416897 -vt 0.868616 0.416897 -vt 0.781559 0.416897 -vt 0.476861 0.416897 -vt 0.465980 0.416897 -vt 0.919680 0.621180 -vt 0.914404 0.619766 -vt 0.918266 0.615904 -vt 0.733406 0.442335 -vt 0.731774 0.442335 -vt 0.951047 0.442335 -vt 0.949415 0.442335 -vt 0.559293 0.442335 -vt 0.557661 0.442335 -vt 0.689878 0.442335 -vt 0.901262 0.416897 -vt 0.907519 0.442335 -vt 0.820462 0.442336 -vt 0.515765 0.442335 -vt 0.514133 0.442335 -vt 0.646349 0.442335 -vt 0.857733 0.416897 -vt 0.863991 0.442336 -vt 0.776934 0.442335 -vt 0.775302 0.442335 -vt 0.472237 0.442335 -vt 0.271030 0.051083 -vt 0.179621 0.051086 -vt 0.149151 0.051087 -vt 0.118681 0.051087 -vt 0.088212 0.051088 -vt 0.057741 0.051089 -vt 0.392909 0.051080 -vt 0.331969 0.051081 -vt 0.236932 0.028009 -vt 0.358811 0.028006 -vt 0.206463 0.028010 -vt 0.297872 0.028007 -vt 0.598813 0.895119 -vt 0.418896 0.847825 -vt 0.248318 0.833070 -vt 0.424700 0.895119 -vt 0.489993 0.895119 -vt 0.511757 0.895119 -vt 0.126520 0.824518 -vt 0.191673 0.862267 -vt 0.133858 0.835463 -vt 0.153812 0.852514 -vt 0.204769 0.860795 -vt 0.143057 0.844899 -vt 0.165767 0.858056 -vt 0.069706 0.852299 -vt 0.304116 0.875235 -vt 0.286766 0.894450 -vt 0.840066 0.623227 -vt 0.836435 0.625324 -vt 0.832242 0.625324 -vt 0.826513 0.619596 -vt 0.826513 0.615403 -vt 0.828610 0.611771 -vt 0.836435 0.609674 -vt 0.840066 0.611771 -vt 0.842163 0.615403 -vt 0.886619 0.872761 -vt 0.500439 0.028005 -vt 0.631024 0.028005 -vt 0.848665 0.028005 -vt 0.761608 0.028005 -vt 0.456911 0.028006 -vt 0.718080 0.028005 -vt 0.543967 0.028005 -vt 0.674552 0.028005 -vt 0.805137 0.028005 -vt 0.596564 0.416897 -vt 0.944790 0.416897 -vt 0.770677 0.416897 -vt 0.919680 0.616720 -vt 0.920496 0.618134 -vt 0.920496 0.619766 -vt 0.918266 0.621996 -vt 0.916634 0.621996 -vt 0.915220 0.621180 -vt 0.914404 0.618134 -vt 0.915220 0.616720 -vt 0.916634 0.615904 -vt 0.688245 0.442335 -vt 0.905886 0.442335 -vt 0.818830 0.442336 -vt 0.644717 0.442335 -vt 0.862359 0.442336 -vt 0.470604 0.442335 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.782200 -0.586700 -0.209600 -vn -0.572600 -0.586700 -0.572600 -vn 0.572600 -0.586700 -0.572600 -vn -0.782200 -0.586700 -0.209600 -vn -0.782200 -0.586700 0.209600 -vn -0.572600 -0.586700 0.572600 -vn -0.209600 -0.586700 0.782200 -vn 0.209600 -0.586700 0.782200 -vn 0.572600 -0.586700 0.572600 -vn 0.782200 -0.586700 0.209600 -vn -0.209600 -0.586700 -0.782200 -vn 0.209600 -0.586700 -0.782200 -vn 0.169100 -0.757200 0.631000 -vn -0.782200 0.586700 0.209600 -vn 0.631000 -0.757200 -0.169100 -vn -0.631000 -0.757200 -0.169100 -vn -0.169100 -0.757200 0.631000 -vn 0.631000 -0.757200 0.169100 -vn -0.461900 -0.757200 -0.461900 -vn 0.169100 -0.757200 -0.631000 -vn -0.461900 -0.757200 0.461900 -vn 0.461900 -0.757200 0.461900 -vn -0.169100 -0.757200 -0.631000 -vn 0.461900 -0.757200 -0.461900 -vn -0.631000 -0.757200 0.169100 -vn 0.664800 0.340600 0.664800 -vn 0.209600 0.586700 0.782200 -vn 0.782200 0.586700 -0.209600 -vn -0.782200 0.586700 -0.209600 -vn -0.209600 0.586700 0.782200 -vn 0.782200 0.586700 0.209600 -vn -0.572600 0.586700 -0.572600 -vn 0.209600 0.586700 -0.782200 -vn -0.572600 0.586700 0.572600 -vn 0.572600 0.586700 0.572600 -vn -0.209600 0.586700 -0.782200 -vn 0.572600 0.586700 -0.572600 -vn -0.243300 0.340600 -0.908200 -vn -0.664800 0.340600 0.664800 -vn 0.243300 0.340600 -0.908200 -vn -0.664800 0.340600 -0.664800 -vn 0.908200 0.340600 0.243300 -vn -0.243300 0.340600 0.908200 -vn -0.908200 0.340600 -0.243300 -vn 0.908200 0.340600 -0.243300 -vn 0.243300 0.340600 0.908200 -vn -0.908200 0.340600 0.243300 -vn 0.000000 -1.000000 0.000000 -vn 0.664800 0.340600 -0.664800 -vn 0.617400 -0.487500 -0.617400 -vn -0.226000 -0.487500 0.843400 -vn 0.617400 -0.487500 0.617400 -vn -0.843400 -0.487500 -0.226000 -vn 0.226000 -0.487500 -0.843400 -vn 0.843400 -0.487500 0.226000 -vn -0.843400 -0.487500 0.226000 -vn -0.226000 -0.487500 -0.843400 -vn 0.843400 -0.487500 -0.226000 -vn -0.617400 -0.487500 0.617400 -vn 0.226000 -0.487500 0.843400 -vn -0.617400 -0.487500 -0.617400 -vn 0.000000 1.000000 0.000000 -vn -0.687300 -0.234700 0.687400 -vn 0.687400 -0.234700 0.687300 -vn -0.251600 -0.234700 -0.938900 -vn 0.687400 -0.234700 -0.687300 -vn -0.938900 -0.234700 0.251600 -vn 0.251600 -0.234700 0.938900 -vn 0.938900 -0.234700 -0.251600 -vn -0.938900 -0.234700 -0.251600 -vn -0.251600 -0.234700 0.938900 -vn 0.938900 -0.234700 0.251600 -vn -0.687300 -0.234700 -0.687400 -vn 0.251600 -0.234700 -0.938900 -vn 0.239700 0.377400 0.894500 -vn 0.190100 0.678500 0.709600 -vn 0.894500 0.377400 -0.239700 -vn -0.894500 0.377400 -0.239700 -vn -0.239700 0.377400 0.894500 -vn 0.894500 0.377400 0.239700 -vn -0.654800 0.377400 -0.654800 -vn 0.239700 0.377400 -0.894500 -vn -0.654800 0.377400 0.654800 -vn 0.654800 0.377400 0.654800 -vn -0.239700 0.377400 -0.894500 -vn 0.654800 0.377400 -0.654800 -vn -0.894500 0.377400 0.239700 -vn 0.709600 0.678500 -0.190100 -vn -0.709600 0.678500 -0.190100 -vn -0.190100 0.678500 0.709600 -vn 0.709600 0.678500 0.190100 -vn -0.519400 0.678500 -0.519400 -vn 0.190100 0.678500 -0.709600 -vn -0.519400 0.678500 0.519400 -vn 0.519400 0.678500 0.519400 -vn -0.190100 0.678500 -0.709600 -vn 0.519400 0.678500 -0.519400 -vn -0.709600 0.678500 0.190100 -vn -0.687400 -0.234700 0.687300 -vn 0.687300 -0.234700 0.687300 -vn 0.687300 -0.234700 -0.687400 -vn -0.687400 -0.234700 -0.687300 -vn 0.000000 1.000000 0.000100 -vn 0.000000 1.000000 0.000200 -vn 0.000000 1.000000 -0.000200 -vn 0.000000 1.000000 -0.000100 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/4/2 6/5/2 5/6/2 -f 6/7/3 8/8/3 7/9/3 -f 8/10/4 10/11/4 9/12/4 -f 10/13/5 12/14/5 11/15/5 -f 12/16/6 14/17/6 13/18/6 -f 14/19/7 16/20/7 15/21/7 -f 16/22/8 18/23/8 17/24/8 -f 18/25/9 20/26/9 19/27/9 -f 20/28/10 22/29/10 21/30/10 -f 24/31/11 2/32/11 1/33/11 -f 22/34/12 24/35/12 23/36/12 -f 5/37/13 7/9/13 28/38/13 -f 31/39/6 43/40/6 42/41/6 -f 21/42/14 23/36/14 36/43/14 -f 5/6/15 27/44/15 26/45/15 -f 21/30/16 35/46/16 34/47/16 -f 19/27/17 34/48/17 33/49/17 -f 17/24/18 33/50/18 32/51/18 -f 15/21/19 32/52/19 31/53/19 -f 13/18/20 31/54/20 30/55/20 -f 11/15/21 30/56/21 29/57/21 -f 7/58/22 9/12/22 29/59/22 -f 1/33/23 25/60/23 36/61/23 -f 1/62/24 3/3/24 26/63/24 -f 42/41/25 43/40/25 55/64/25 -f 28/65/3 40/66/3 39/67/3 -f 35/68/10 47/69/10 46/70/10 -f 32/71/7 44/72/7 43/40/7 -f 29/73/4 41/74/4 40/66/4 -f 35/68/12 36/75/12 48/76/12 -f 26/77/1 38/78/1 37/79/1 -f 33/80/8 45/81/8 44/72/8 -f 30/82/5 42/41/5 41/74/5 -f 36/75/11 25/83/11 37/79/11 -f 26/77/2 27/84/2 39/67/2 -f 34/85/9 46/86/9 45/81/9 -f 58/87/26 70/88/26 69/89/26 -f 40/66/27 52/90/27 51/91/27 -f 46/70/28 47/69/28 59/92/28 -f 44/72/29 56/93/29 55/94/29 -f 41/74/30 53/95/30 52/96/30 -f 48/76/31 60/97/31 59/98/31 -f 37/79/32 38/78/32 50/99/32 -f 45/81/33 57/100/33 56/101/33 -f 42/41/34 54/102/34 53/103/34 -f 37/79/35 49/104/35 60/105/35 -f 38/78/36 39/67/36 51/106/36 -f 46/86/37 58/107/37 57/108/37 -f 66/109/38 79/110/38 80/111/38 -f 54/112/39 55/113/39 67/114/39 -f 51/115/40 52/116/40 64/117/40 -f 59/118/41 71/119/41 70/120/41 -f 55/121/42 56/122/42 68/123/42 -f 53/124/43 65/125/43 64/117/43 -f 60/126/44 72/127/44 71/119/44 -f 50/128/45 62/129/45 61/130/45 -f 56/131/46 57/132/46 69/89/46 -f 54/133/47 66/109/47 65/125/47 -f 49/134/48 61/130/48 72/127/48 -f 51/135/49 63/136/49 62/129/49 -f 61/130/50 84/137/50 73/138/50 -f 69/89/51 76/139/51 77/140/51 -f 62/129/52 83/141/52 84/137/52 -f 72/127/53 73/138/53 74/142/53 -f 64/117/54 65/125/54 80/111/54 -f 67/114/55 68/123/55 77/140/55 -f 70/120/56 71/119/56 74/142/56 -f 64/117/57 81/143/57 82/144/57 -f 66/109/58 67/114/58 78/145/58 -f 69/89/59 70/88/59 75/146/59 -f 78/145/60 91/147/60 92/148/60 -f 63/136/61 82/144/61 83/141/61 -f 89/149/62 101/150/62 102/151/62 -f 76/139/60 75/146/60 88/152/60 -f 82/144/60 95/153/60 96/154/60 -f 84/137/60 86/155/60 85/156/60 -f 79/110/60 92/157/60 93/158/60 -f 77/140/60 76/139/60 89/159/60 -f 83/141/60 96/160/60 86/161/60 -f 73/138/60 85/162/60 87/163/60 -f 80/111/60 93/164/60 94/165/60 -f 77/140/60 90/166/60 91/167/60 -f 74/142/60 87/168/60 88/169/60 -f 81/143/60 94/170/60 95/171/60 -f 106/172/60 102/173/60 97/174/60 -f 96/175/63 108/176/63 98/177/63 -f 85/178/64 97/179/64 99/180/64 -f 93/181/65 105/182/65 106/183/65 -f 90/184/66 102/151/66 103/185/66 -f 88/186/67 87/187/67 99/180/67 -f 94/188/68 106/183/68 107/189/68 -f 91/190/69 103/185/69 104/191/69 -f 89/149/70 88/192/70 100/193/70 -f 95/194/71 107/189/71 108/176/71 -f 86/195/72 98/177/72 97/179/72 -f 92/196/73 104/191/73 105/182/73 -f 116/197/8 128/198/8 129/199/8 -f 117/200/74 153/201/74 152/202/74 -f 118/203/74 154/204/74 153/201/74 -f 119/205/74 155/206/74 154/207/74 -f 128/208/75 164/209/75 165/210/75 -f 113/211/5 125/212/5 126/213/5 -f 120/214/11 132/215/11 122/216/11 -f 109/217/2 121/218/2 123/219/2 -f 117/220/9 129/221/9 130/222/9 -f 114/223/6 126/224/6 127/225/6 -f 111/226/3 123/227/3 124/228/3 -f 118/229/10 130/230/10 131/231/10 -f 115/232/7 127/233/7 128/234/7 -f 112/235/4 124/236/4 125/237/4 -f 119/238/12 131/239/12 132/240/12 -f 110/241/1 122/242/1 121/243/1 -f 137/244/5 149/245/5 150/246/5 -f 136/247/4 148/248/4 149/245/4 -f 144/249/11 156/250/11 146/251/11 -f 133/252/1 146/251/1 145/253/1 -f 135/254/3 147/255/3 148/248/3 -f 143/256/12 155/206/12 156/250/12 -f 134/257/2 145/253/2 147/255/2 -f 142/258/10 154/207/10 155/206/10 -f 141/259/9 153/201/9 154/204/9 -f 140/260/8 152/202/8 153/201/8 -f 139/261/7 151/262/7 152/202/7 -f 138/263/6 150/246/6 151/262/6 -f 116/264/74 152/202/74 151/262/74 -f 115/265/74 151/262/74 150/246/74 -f 114/266/74 150/246/74 149/245/74 -f 112/235/74 113/267/74 149/245/74 -f 112/268/74 148/248/74 147/255/74 -f 111/269/74 147/255/74 145/253/74 -f 109/270/74 145/253/74 146/251/74 -f 120/214/74 110/271/74 146/251/74 -f 120/272/74 156/250/74 155/206/74 -f 143/256/60 144/249/60 24/35/60 -f 144/249/60 133/252/60 2/32/60 -f 133/252/60 134/257/60 4/2/60 -f 134/257/60 135/254/60 6/5/60 -f 135/254/60 136/247/60 8/8/60 -f 136/247/60 137/244/60 10/11/60 -f 137/244/60 138/263/60 12/14/60 -f 138/263/60 139/261/60 14/17/60 -f 139/261/60 140/260/60 16/20/60 -f 140/260/60 141/259/60 18/23/60 -f 141/259/60 142/273/60 20/26/60 -f 142/258/60 143/256/60 22/29/60 -f 159/274/3 171/275/3 172/276/3 -f 125/277/76 161/278/76 162/279/76 -f 132/280/77 168/281/77 158/282/77 -f 121/283/78 157/284/78 159/274/78 -f 129/285/79 165/210/79 166/286/79 -f 127/287/80 126/288/80 162/279/80 -f 123/289/81 159/274/81 160/290/81 -f 131/291/82 130/292/82 166/293/82 -f 127/294/83 163/295/83 164/209/83 -f 124/296/84 160/290/84 161/278/84 -f 132/297/85 131/298/85 167/299/85 -f 122/300/86 158/282/86 157/284/86 -f 175/301/87 174/302/87 186/303/87 -f 166/293/10 178/304/10 179/305/10 -f 163/295/7 175/301/7 176/306/7 -f 160/290/4 172/276/4 173/307/4 -f 167/299/12 179/305/12 180/308/12 -f 158/282/1 170/309/1 169/310/1 -f 164/209/8 176/306/8 177/311/8 -f 161/278/5 173/307/5 174/302/5 -f 168/281/11 180/308/11 170/309/11 -f 157/284/2 169/310/2 171/275/2 -f 165/210/9 177/311/9 178/312/9 -f 162/279/6 174/302/6 175/301/6 -f 186/303/88 198/313/88 199/314/88 -f 171/275/89 183/315/89 184/316/89 -f 179/305/90 178/304/90 190/317/90 -f 175/301/91 187/318/91 188/319/91 -f 172/276/92 184/320/92 185/321/92 -f 180/308/93 179/305/93 191/322/93 -f 170/309/94 182/323/94 181/324/94 -f 176/306/95 188/325/95 189/326/95 -f 173/307/96 185/327/96 186/328/96 -f 170/309/97 180/308/97 192/329/97 -f 171/275/98 169/310/98 181/330/98 -f 177/311/99 189/331/99 190/332/99 -f 203/333/74 199/334/74 195/335/74 -f 183/315/100 195/336/100 196/337/100 -f 190/317/101 202/338/101 203/339/101 -f 187/318/102 199/340/102 200/341/102 -f 185/321/103 184/320/103 196/342/103 -f 192/343/104 191/322/104 203/344/104 -f 181/324/105 182/323/105 194/345/105 -f 188/325/106 200/346/106 201/347/106 -f 186/328/107 185/327/107 197/348/107 -f 182/349/108 192/329/108 204/350/108 -f 181/330/109 193/351/109 195/352/109 -f 190/332/110 189/331/110 201/353/110 -f 1/62/1 2/1/1 3/3/1 -f 3/354/2 4/4/2 5/6/2 -f 5/37/3 6/7/3 7/9/3 -f 7/58/4 8/10/4 9/12/4 -f 9/355/5 10/13/5 11/15/5 -f 11/356/6 12/16/6 13/18/6 -f 13/357/7 14/19/7 15/21/7 -f 15/358/8 16/22/8 17/24/8 -f 17/359/9 18/25/9 19/27/9 -f 19/360/10 20/28/10 21/30/10 -f 23/361/11 24/31/11 1/33/11 -f 21/42/12 22/34/12 23/36/12 -f 27/362/13 5/37/13 28/38/13 -f 30/82/6 31/39/6 42/41/6 -f 35/363/14 21/42/14 36/43/14 -f 3/354/15 5/6/15 26/45/15 -f 19/360/16 21/30/16 34/47/16 -f 17/359/17 19/27/17 33/49/17 -f 15/358/18 17/24/18 32/51/18 -f 13/357/19 15/21/19 31/53/19 -f 11/356/20 13/18/20 30/55/20 -f 9/355/21 11/15/21 29/57/21 -f 28/364/22 7/58/22 29/59/22 -f 23/361/23 1/33/23 36/61/23 -f 25/365/24 1/62/24 26/63/24 -f 54/366/25 42/41/25 55/64/25 -f 27/84/3 28/65/3 39/67/3 -f 34/367/10 35/68/10 46/70/10 -f 31/39/7 32/71/7 43/40/7 -f 28/65/4 29/73/4 40/66/4 -f 47/69/12 35/68/12 48/76/12 -f 25/83/1 26/77/1 37/79/1 -f 32/71/8 33/80/8 44/72/8 -f 29/73/5 30/82/5 41/74/5 -f 48/76/11 36/75/11 37/79/11 -f 38/78/2 26/77/2 39/67/2 -f 33/80/9 34/85/9 45/81/9 -f 57/368/26 58/87/26 69/89/26 -f 39/67/27 40/66/27 51/91/27 -f 58/369/28 46/70/28 59/92/28 -f 43/40/29 44/72/29 55/94/29 -f 40/66/30 41/74/30 52/96/30 -f 47/69/31 48/76/31 59/98/31 -f 49/370/32 37/79/32 50/99/32 -f 44/72/33 45/81/33 56/101/33 -f 41/74/34 42/41/34 53/103/34 -f 48/76/35 37/79/35 60/105/35 -f 50/371/36 38/78/36 51/106/36 -f 45/81/37 46/86/37 57/108/37 -f 65/125/38 66/109/38 80/111/38 -f 66/109/39 54/112/39 67/114/39 -f 63/136/40 51/115/40 64/117/40 -f 58/372/41 59/118/41 70/120/41 -f 67/114/42 55/121/42 68/123/42 -f 52/373/43 53/124/43 64/117/43 -f 59/374/44 60/126/44 71/119/44 -f 49/375/45 50/128/45 61/130/45 -f 68/123/46 56/131/46 69/89/46 -f 53/376/47 54/133/47 65/125/47 -f 60/377/48 49/134/48 72/127/48 -f 50/378/49 51/135/49 62/129/49 -f 72/127/50 61/130/50 73/138/50 -f 68/123/51 69/89/51 77/140/51 -f 61/130/52 62/129/52 84/137/52 -f 71/119/53 72/127/53 74/142/53 -f 81/143/54 64/117/54 80/111/54 -f 78/145/55 67/114/55 77/140/55 -f 75/379/56 70/120/56 74/142/56 -f 63/136/57 64/117/57 82/144/57 -f 79/110/58 66/109/58 78/145/58 -f 76/139/59 69/89/59 75/146/59 -f 79/110/60 78/145/60 92/148/60 -f 62/129/61 63/136/61 83/141/61 -f 90/184/62 89/149/62 102/151/62 -f 89/380/60 76/139/60 88/152/60 -f 83/141/60 82/144/60 96/154/60 -f 73/138/60 84/137/60 85/156/60 -f 80/111/60 79/110/60 93/158/60 -f 90/381/60 77/140/60 89/159/60 -f 84/137/60 83/141/60 86/161/60 -f 74/142/60 73/138/60 87/163/60 -f 81/143/60 80/111/60 94/165/60 -f 78/145/60 77/140/60 91/167/60 -f 75/379/60 74/142/60 88/169/60 -f 82/144/60 81/143/60 95/171/60 -f 97/174/60 98/382/60 108/383/60 -f 108/383/60 107/384/60 106/172/60 -f 106/172/60 105/385/60 104/386/60 -f 104/386/60 103/387/60 102/173/60 -f 102/173/60 101/388/60 97/174/60 -f 100/389/60 99/390/60 97/174/60 -f 97/174/60 108/383/60 106/172/60 -f 106/172/60 104/386/60 102/173/60 -f 101/388/60 100/389/60 97/174/60 -f 86/195/63 96/175/63 98/177/63 -f 87/187/64 85/178/64 99/180/64 -f 94/188/65 93/181/65 106/183/65 -f 91/190/66 90/184/66 103/185/66 -f 100/391/67 88/186/67 99/180/67 -f 95/194/68 94/188/68 107/189/68 -f 92/196/69 91/190/69 104/191/69 -f 101/150/70 89/149/70 100/193/70 -f 96/175/71 95/194/71 108/176/71 -f 85/178/72 86/195/72 97/179/72 -f 93/181/73 92/196/73 105/182/73 -f 117/200/8 116/197/8 129/199/8 -f 116/197/74 117/200/74 152/202/74 -f 117/220/74 118/203/74 153/201/74 -f 118/229/74 119/205/74 154/207/74 -f 129/392/111 128/208/111 165/210/111 -f 114/266/5 113/211/5 126/213/5 -f 110/271/11 120/214/11 122/216/11 -f 111/269/2 109/217/2 123/219/2 -f 118/203/9 117/220/9 130/222/9 -f 115/265/6 114/223/6 127/225/6 -f 112/268/3 111/226/3 124/228/3 -f 119/205/10 118/229/10 131/231/10 -f 116/264/7 115/232/7 128/234/7 -f 113/267/4 112/235/4 125/237/4 -f 120/272/12 119/238/12 132/240/12 -f 109/270/1 110/241/1 121/243/1 -f 138/263/5 137/244/5 150/246/5 -f 137/244/4 136/247/4 149/245/4 -f 133/252/11 144/249/11 146/251/11 -f 134/257/1 133/252/1 145/253/1 -f 136/247/3 135/254/3 148/248/3 -f 144/249/12 143/256/12 156/250/12 -f 135/254/2 134/257/2 147/255/2 -f 143/256/10 142/258/10 155/206/10 -f 142/273/9 141/259/9 154/204/9 -f 141/259/8 140/260/8 153/201/8 -f 140/260/7 139/261/7 152/202/7 -f 139/261/6 138/263/6 151/262/6 -f 115/232/74 116/264/74 151/262/74 -f 114/223/74 115/265/74 150/246/74 -f 113/211/74 114/266/74 149/245/74 -f 148/248/74 112/235/74 149/245/74 -f 111/226/74 112/268/74 147/255/74 -f 109/217/74 111/269/74 145/253/74 -f 110/241/74 109/270/74 146/251/74 -f 156/250/74 120/214/74 146/251/74 -f 119/238/74 120/272/74 155/206/74 -f 22/34/60 143/256/60 24/35/60 -f 24/31/60 144/249/60 2/32/60 -f 2/1/60 133/252/60 4/2/60 -f 4/4/60 134/257/60 6/5/60 -f 6/7/60 135/254/60 8/8/60 -f 8/10/60 136/247/60 10/11/60 -f 10/13/60 137/244/60 12/14/60 -f 12/16/60 138/263/60 14/17/60 -f 14/19/60 139/261/60 16/20/60 -f 16/22/60 140/260/60 18/23/60 -f 18/25/60 141/259/60 20/26/60 -f 20/28/60 142/258/60 22/29/60 -f 160/290/3 159/274/3 172/276/3 -f 126/393/112 125/277/112 162/279/112 -f 122/394/77 132/280/77 158/282/77 -f 123/395/113 121/283/113 159/274/113 -f 130/396/79 129/285/79 166/286/79 -f 163/295/80 127/287/80 162/279/80 -f 124/397/81 123/289/81 160/290/81 -f 167/299/82 131/291/82 166/293/82 -f 128/398/83 127/294/83 164/209/83 -f 125/399/84 124/296/84 161/278/84 -f 168/281/114 132/297/114 167/299/114 -f 121/400/86 122/300/86 157/284/86 -f 187/401/87 175/301/87 186/303/87 -f 167/299/10 166/293/10 179/305/10 -f 164/209/7 163/295/7 176/306/7 -f 161/278/4 160/290/4 173/307/4 -f 168/281/12 167/299/12 180/308/12 -f 157/284/1 158/282/1 169/310/1 -f 165/210/8 164/209/8 177/311/8 -f 162/279/5 161/278/5 174/302/5 -f 158/282/11 168/281/11 170/309/11 -f 159/274/2 157/284/2 171/275/2 -f 166/286/9 165/210/9 178/312/9 -f 163/295/6 162/279/6 175/301/6 -f 187/401/88 186/303/88 199/314/88 -f 172/276/89 171/275/89 184/316/89 -f 191/402/90 179/305/90 190/317/90 -f 176/306/91 175/301/91 188/319/91 -f 173/307/92 172/276/92 185/321/92 -f 192/343/93 180/308/93 191/322/93 -f 169/310/94 170/309/94 181/324/94 -f 177/311/95 176/306/95 189/326/95 -f 174/302/96 173/307/96 186/328/96 -f 182/349/97 170/309/97 192/329/97 -f 183/403/98 171/275/98 181/330/98 -f 178/312/99 177/311/99 190/332/99 -f 195/335/115 193/404/115 203/333/115 -f 194/405/116 204/406/116 203/333/116 -f 203/333/74 202/407/74 201/408/74 -f 201/408/117 200/409/117 199/334/117 -f 199/334/118 198/410/118 197/411/118 -f 197/411/74 196/412/74 199/334/74 -f 193/404/117 194/405/117 203/333/117 -f 203/333/74 201/408/74 199/334/74 -f 199/334/74 196/412/74 195/335/74 -f 184/316/100 183/315/100 196/337/100 -f 191/402/101 190/317/101 203/339/101 -f 188/319/102 187/318/102 200/341/102 -f 197/413/103 185/321/103 196/342/103 -f 204/414/104 192/343/104 203/344/104 -f 193/415/105 181/324/105 194/345/105 -f 189/326/106 188/325/106 201/347/106 -f 198/416/107 186/328/107 197/348/107 -f 194/417/108 182/349/108 204/350/108 -f 183/403/109 181/330/109 195/352/109 -f 202/418/110 190/332/110 201/353/110 diff --git a/src/main/resources/assets/hbm/models/radar_head.obj b/src/main/resources/assets/hbm/models/radar_head.obj deleted file mode 100644 index 346cfe68a..000000000 --- a/src/main/resources/assets/hbm/models/radar_head.obj +++ /dev/null @@ -1,404 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'radar_head.blend' -# www.blender.org -o Torus -v 0.578906 1.584721 -0.000000 -v 0.601365 1.806898 -0.000000 -v 0.546068 1.962747 -0.000000 -v 0.361454 1.273760 -0.000000 -v 0.487268 1.381080 -0.000000 -v 0.548050 1.592989 -0.242643 -v 0.571688 1.814850 -0.233375 -v 0.519476 1.969872 -0.209110 -v 0.334863 1.280885 -0.209110 -v 0.457591 1.389032 -0.233375 -v 0.457584 1.617229 -0.468750 -v 0.484678 1.838164 -0.450845 -v 0.441513 1.990763 -0.403970 -v 0.256899 1.301775 -0.403970 -v 0.370581 1.412347 -0.450845 -v 0.313675 1.655789 -0.662913 -v 0.346265 1.875252 -0.637592 -v 0.317491 2.023994 -0.571300 -v 0.132877 1.335007 -0.571300 -v 0.232168 1.449434 -0.637592 -v 0.126128 1.706043 -0.811899 -v 0.165882 1.923585 -0.780887 -v 0.155863 2.067302 -0.699697 -v -0.028751 1.378315 -0.699697 -v 0.051785 1.497768 -0.780887 -v 0.126128 1.706043 0.811899 -v 0.165882 1.923585 0.780887 -v 0.155863 2.067302 0.699697 -v -0.028751 1.378315 0.699697 -v 0.051785 1.497768 0.780887 -v 0.313674 1.655790 0.662913 -v 0.346265 1.875252 0.637592 -v 0.317491 2.023994 0.571301 -v 0.132877 1.335007 0.571301 -v 0.232168 1.449434 0.637592 -v 0.457584 1.617229 0.468750 -v 0.484678 1.838164 0.450845 -v 0.441513 1.990763 0.403970 -v 0.256899 1.301775 0.403970 -v 0.370581 1.412347 0.450845 -v 0.548050 1.592989 0.242643 -v 0.571688 1.814850 0.233374 -v 0.519476 1.969872 0.209110 -v 0.334863 1.280885 0.209110 -v 0.457591 1.389032 0.233374 -v -0.100000 1.000000 0.100000 -v -0.100000 1.200000 0.100000 -v -0.100000 1.000000 -0.100000 -v -0.100000 1.200000 -0.100000 -v 0.100000 1.000000 0.100000 -v 0.100000 1.200000 0.100000 -v 0.100000 1.000000 -0.100000 -v 0.100000 1.200000 -0.100000 -v -0.500000 1.550000 0.050000 -v -0.500000 1.700000 0.050000 -v -0.500000 1.700000 -0.050000 -v -0.500000 1.550000 -0.050000 -v -0.450000 1.518750 -0.025000 -v -0.450000 1.881250 -0.025000 -v -0.450000 1.518750 0.025000 -v -0.450000 1.881250 0.025000 -v -0.467678 1.518750 0.017678 -v -0.467678 1.881250 0.017678 -v -0.475000 1.518750 -0.000000 -v -0.475000 1.881250 -0.000000 -v -0.467678 1.518750 -0.017678 -v -0.467678 1.881250 -0.017678 -v -0.400000 1.518750 -0.025000 -v -0.400000 1.881250 -0.025000 -v -0.382322 1.518750 -0.017678 -v -0.382322 1.881250 -0.017678 -v -0.375000 1.518750 0.000000 -v -0.375000 1.881250 0.000000 -v -0.382322 1.518750 0.017678 -v -0.382322 1.881250 0.017678 -v -0.400000 1.518750 0.025000 -v -0.400000 1.881250 0.025000 -vt 0.749477 0.177462 -vt 0.851663 0.177461 -vt 0.849712 0.270681 -vt 0.751428 0.270681 -vt 0.844603 0.339539 -vt 0.844602 0.015383 -vt 0.849712 0.084242 -vt 0.751428 0.084242 -vt 0.718710 0.177464 -vt 0.716756 0.270683 -vt 0.618472 0.270681 -vt 0.711645 0.339542 -vt 0.623580 0.339539 -vt 0.623588 0.015383 -vt 0.711653 0.015385 -vt 0.716761 0.084244 -vt 0.616523 0.177461 -vt 0.271242 0.713845 -vt 0.373429 0.713845 -vt 0.371477 0.807065 -vt 0.366368 0.875923 -vt 0.278303 0.875923 -vt 0.366368 0.551767 -vt 0.371477 0.620625 -vt 0.273194 0.620625 -vt 0.851663 0.532386 -vt 0.849712 0.625606 -vt 0.751428 0.625606 -vt 0.844603 0.694464 -vt 0.756538 0.694464 -vt 0.844603 0.370308 -vt 0.849712 0.439167 -vt 0.751428 0.439167 -vt 0.984617 0.177461 -vt 0.982665 0.270681 -vt 0.884382 0.270681 -vt 0.977556 0.339539 -vt 0.977556 0.015383 -vt 0.982665 0.084242 -vt 0.884382 0.084242 -vt 0.882430 0.177461 -vt 0.117570 0.599110 -vt 0.115619 0.692329 -vt 0.017335 0.692329 -vt 0.110509 0.761188 -vt 0.022444 0.761188 -vt 0.022444 0.437032 -vt 0.110510 0.437032 -vt 0.115619 0.505890 -vt 0.017335 0.505890 -vt 0.718710 0.532386 -vt 0.716759 0.625606 -vt 0.618475 0.625606 -vt 0.711649 0.694464 -vt 0.623584 0.694465 -vt 0.711649 0.370308 -vt 0.716758 0.439167 -vt 0.618475 0.439167 -vt 0.616523 0.532386 -vt 0.506382 0.713845 -vt 0.504430 0.807065 -vt 0.406147 0.807065 -vt 0.499321 0.875923 -vt 0.411256 0.875923 -vt 0.499321 0.551767 -vt 0.504431 0.620625 -vt 0.406147 0.620625 -vt 0.404195 0.713845 -vt 0.041881 0.130470 -vt 0.086176 0.059678 -vt 0.107053 0.343634 -vt 0.213977 0.130470 -vt 0.169683 0.059678 -vt 0.240475 0.015383 -vt 0.502249 0.098891 -vt 0.502249 0.015383 -vt 0.585757 0.015383 -vt 0.015383 0.015383 -vt 0.585757 0.098891 -vt 0.585757 0.182399 -vt 0.502249 0.182399 -vt 0.107052 0.406265 -vt 0.148806 0.343634 -vt 0.182027 0.396728 -vt 0.564880 0.449753 -vt 0.523126 0.449753 -vt 0.469735 0.433464 -vt 0.271242 0.406604 -vt 0.340291 0.359638 -vt 0.471482 0.120906 -vt 0.445258 0.204975 -vt 0.334736 0.180122 -vt 0.292959 0.252428 -vt 0.306677 0.283195 -vt 0.452868 0.347029 -vt 0.179652 0.437032 -vt 0.187033 0.440089 -vt 0.187033 0.454851 -vt 0.685335 0.876611 -vt 0.677346 0.876608 -vt 0.677397 0.725251 -vt 0.669357 0.876605 -vt 0.669408 0.725249 -vt 0.632552 0.725236 -vt 0.653429 0.725243 -vt 0.653378 0.876600 -vt 0.661367 0.876603 -vt 0.661418 0.725246 -vt 0.706212 0.876618 -vt 0.685387 0.725254 -vt 0.632501 0.876593 -vt 0.624512 0.876590 -vt 0.624562 0.725234 -vt 0.616523 0.876588 -vt 0.616573 0.725231 -vt 0.722190 0.876623 -vt 0.714201 0.876621 -vt 0.714253 0.725264 -vt 0.706263 0.725261 -vt 0.300577 0.521000 -vt 0.460098 0.521000 -vt 0.271242 0.125882 -vt 0.312920 0.015383 -vt 0.471482 0.032841 -vt 0.756538 0.339540 -vt 0.756537 0.015383 -vt 0.618477 0.084242 -vt 0.273193 0.807065 -vt 0.278303 0.551767 -vt 0.749477 0.532386 -vt 0.756538 0.370308 -vt 0.889491 0.339539 -vt 0.889491 0.015383 -vt 0.015383 0.599110 -vt 0.623584 0.370308 -vt 0.411256 0.551767 -vt 0.073832 0.396728 -vt 0.148806 0.406265 -vt 0.179652 0.457908 -vt 0.158775 0.457908 -vt 0.151394 0.454851 -vt 0.148337 0.447470 -vt 0.151394 0.440089 -vt 0.158775 0.437032 -vt 0.190091 0.447470 -vt 0.722242 0.725267 -vn 0.986600 -0.099700 -0.128900 -vn 0.936900 0.332400 -0.107800 -vn 0.645200 -0.756400 -0.107800 -vn 0.904300 -0.406900 -0.128900 -vn 0.922200 -0.082500 -0.377800 -vn 0.883000 0.346900 -0.316100 -vn 0.591300 -0.741900 -0.316100 -vn 0.839900 -0.389700 -0.377800 -vn 0.797700 -0.049100 -0.601000 -vn 0.778900 0.374800 -0.502900 -vn 0.487100 -0.714000 -0.502900 -vn 0.715400 -0.356300 -0.601000 -vn 0.621700 -0.002000 -0.783300 -vn 0.631600 0.414300 -0.655300 -vn 0.339900 -0.674600 -0.655300 -vn 0.539400 -0.309200 -0.783300 -vn 0.621700 -0.002000 0.783300 -vn 0.631600 0.414300 0.655300 -vn 0.339900 -0.674600 0.655300 -vn 0.539400 -0.309200 0.783300 -vn 0.797700 -0.049100 0.601000 -vn 0.778900 0.374800 0.502900 -vn 0.487100 -0.714000 0.502900 -vn 0.715400 -0.356300 0.601000 -vn 0.922200 -0.082500 0.377800 -vn 0.883000 0.346900 0.316100 -vn 0.591300 -0.741900 0.316100 -vn 0.839900 -0.389700 0.377800 -vn 0.986600 -0.099700 0.128900 -vn 0.936900 0.332400 0.107800 -vn 0.645200 -0.756400 0.107800 -vn 0.904300 -0.406900 0.128900 -vn -0.124000 0.000000 -0.992300 -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 -1.000000 0.000000 0.000000 -vn -0.124000 0.000000 0.992300 -vn -0.808700 -0.588200 0.000000 -vn 0.780900 0.624700 0.000000 -vn 0.000000 0.948300 0.317500 -vn -0.236400 0.951600 -0.196600 -vn 0.421300 0.000000 -0.906900 -vn 0.421300 0.000000 0.906900 -vn -0.382700 0.000000 0.923900 -vn -0.923900 0.000000 0.382700 -vn -0.382700 0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -vn 0.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.483500 -0.483500 -0.729600 -vn 0.654900 -0.677600 -0.334700 -vn -0.483500 -0.483500 0.729600 -vn 0.654900 -0.677600 0.334700 -vn -0.236400 0.951600 0.196600 -vn 0.000000 0.948300 -0.317500 -s off -f 1/1/1 6/2/1 7/3/1 -f 2/4/2 7/3/2 8/5/2 -f 9/6/3 10/7/3 5/8/3 -f 5/8/4 10/7/4 6/2/4 -f 11/9/5 12/10/5 7/11/5 -f 12/10/6 13/12/6 8/13/6 -f 9/14/7 14/15/7 15/16/7 -f 15/16/8 11/9/8 6/17/8 -f 11/18/9 16/19/9 17/20/9 -f 17/20/10 18/21/10 13/22/10 -f 19/23/11 20/24/11 15/25/11 -f 20/24/12 16/19/12 11/18/12 -f 21/26/13 22/27/13 17/28/13 -f 22/27/14 23/29/14 18/30/14 -f 24/31/15 25/32/15 20/33/15 -f 20/33/16 25/32/16 21/26/16 -f 31/34/17 32/35/17 27/36/17 -f 27/36/18 32/35/18 33/37/18 -f 34/38/19 35/39/19 30/40/19 -f 35/39/20 31/34/20 26/41/20 -f 36/42/21 37/43/21 32/44/21 -f 37/43/22 38/45/22 33/46/22 -f 34/47/23 39/48/23 40/49/23 -f 35/50/24 40/49/24 36/42/24 -f 41/51/25 42/52/25 37/53/25 -f 42/52/26 43/54/26 38/55/26 -f 44/56/27 45/57/27 40/58/27 -f 45/57/28 41/51/28 36/59/28 -f 1/60/29 2/61/29 42/62/29 -f 2/61/30 3/63/30 43/64/30 -f 4/65/31 5/66/31 45/67/31 -f 5/66/32 1/60/32 41/68/32 -f 49/69/33 48/70/33 57/71/33 -f 47/72/34 46/73/34 50/74/34 -f 51/75/35 50/76/35 52/77/35 -f 48/70/36 49/69/36 52/78/36 -f 53/79/37 49/80/37 47/81/37 -f 56/82/38 57/71/38 54/83/38 -f 47/72/39 55/84/39 54/83/39 -f 46/73/40 54/83/40 57/71/40 -f 49/80/41 56/85/41 55/86/41 -f 14/87/42 49/88/42 53/89/42 -f 39/90/43 44/91/43 51/92/43 -f 50/93/44 51/92/44 44/91/44 -f 52/94/45 9/95/45 53/89/45 -f 77/96/37 75/97/37 71/98/37 -f 61/99/46 63/100/46 62/101/46 -f 63/100/47 65/102/47 64/103/47 -f 68/104/36 58/105/36 59/106/36 -f 67/107/48 59/106/48 58/105/48 -f 65/102/49 67/107/49 66/108/49 -f 77/109/34 61/99/34 60/110/34 -f 69/111/50 71/112/50 70/113/50 -f 71/112/51 73/114/51 72/115/51 -f 73/116/52 75/117/52 74/118/52 -f 75/117/53 77/109/53 76/119/53 -f 49/88/54 14/87/54 52/120/54 -f 9/121/55 52/120/55 14/87/55 -f 47/122/56 50/123/56 39/90/56 -f 39/90/57 50/123/57 44/124/57 -f 2/4/1 1/1/1 7/3/1 -f 3/125/2 2/4/2 8/5/2 -f 4/126/3 9/6/3 5/8/3 -f 1/1/4 5/8/4 6/2/4 -f 6/17/5 11/9/5 7/11/5 -f 7/11/6 12/10/6 8/13/6 -f 10/127/7 9/14/7 15/16/7 -f 10/127/8 15/16/8 6/17/8 -f 12/128/9 11/18/9 17/20/9 -f 12/128/10 17/20/10 13/22/10 -f 14/129/11 19/23/11 15/25/11 -f 15/25/12 20/24/12 11/18/12 -f 16/130/13 21/26/13 17/28/13 -f 17/28/14 22/27/14 18/30/14 -f 19/131/15 24/31/15 20/33/15 -f 16/130/16 20/33/16 21/26/16 -f 26/41/17 31/34/17 27/36/17 -f 28/132/18 27/36/18 33/37/18 -f 29/133/19 34/38/19 30/40/19 -f 30/40/20 35/39/20 26/41/20 -f 31/134/21 36/42/21 32/44/21 -f 32/44/22 37/43/22 33/46/22 -f 35/50/23 34/47/23 40/49/23 -f 31/134/24 35/50/24 36/42/24 -f 36/59/25 41/51/25 37/53/25 -f 37/53/26 42/52/26 38/55/26 -f 39/135/27 44/56/27 40/58/27 -f 40/58/28 45/57/28 36/59/28 -f 41/68/29 1/60/29 42/62/29 -f 42/62/30 2/61/30 43/64/30 -f 44/136/31 4/65/31 45/67/31 -f 45/67/32 5/66/32 41/68/32 -f 56/137/33 49/69/33 57/71/33 -f 53/79/35 51/75/35 52/77/35 -f 51/75/37 53/79/37 47/81/37 -f 55/138/38 56/82/38 54/83/38 -f 46/73/39 47/72/39 54/83/39 -f 48/70/40 46/73/40 57/71/40 -f 47/81/41 49/80/41 55/86/41 -f 9/95/58 14/87/58 53/89/58 -f 47/122/59 39/90/59 51/92/59 -f 71/98/37 69/139/37 77/96/37 -f 59/140/37 67/141/37 65/142/37 -f 65/142/37 63/143/37 61/144/37 -f 61/144/37 77/96/37 69/139/37 -f 75/97/37 73/145/37 71/98/37 -f 69/139/37 59/140/37 61/144/37 -f 65/142/37 61/144/37 59/140/37 -f 60/110/46 61/99/46 62/101/46 -f 62/101/47 63/100/47 64/103/47 -f 69/111/36 68/104/36 59/106/36 -f 66/108/48 67/107/48 58/105/48 -f 64/103/49 65/102/49 66/108/49 -f 76/119/34 77/109/34 60/110/34 -f 68/104/50 69/111/50 70/113/50 -f 70/113/51 71/112/51 72/115/51 -f 72/146/52 73/116/52 74/118/52 -f 74/118/53 75/117/53 76/119/53 diff --git a/src/main/resources/assets/hbm/models/weapons/pch.obj b/src/main/resources/assets/hbm/models/weapons/pch.obj deleted file mode 100644 index e3634a298..000000000 --- a/src/main/resources/assets/hbm/models/weapons/pch.obj +++ /dev/null @@ -1,245 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'pch.blend' -# www.blender.org -o ponycum_Cylinder.003 -v 0.000000 -0.457474 -0.076488 -v 0.000000 0.498621 -0.076488 -v 0.063454 0.498621 -0.038244 -v 0.063454 -0.457474 -0.038244 -v 0.063454 0.498621 0.038244 -v 0.063454 -0.457474 0.038244 -v 0.000000 0.498621 0.076488 -v 0.000000 -0.457474 0.076488 -v -0.063454 0.498621 0.038244 -v -0.063454 -0.457474 0.038244 -v -0.063454 0.498621 -0.038244 -v -0.063454 -0.457474 -0.038244 -v 0.244563 0.705111 -0.261231 -v -0.244563 0.705111 -0.261231 -v -0.244563 0.821944 -0.260374 -v 0.244563 0.821944 -0.260374 -v 0.244661 0.821816 0.260308 -v -0.244661 0.821816 0.260308 -v -0.244661 0.704698 0.259606 -v 0.244661 0.704698 0.259606 -v 0.300312 0.880010 -0.277019 -v 0.300312 0.650163 -0.277880 -v 0.244563 0.705233 -0.277878 -v 0.244563 0.822066 -0.277021 -v -0.300312 0.880010 -0.277019 -v -0.300312 1.041927 -0.113884 -v 0.300312 1.041927 -0.113884 -v -0.300312 1.041066 0.115963 -v 0.300312 1.041066 0.115963 -v -0.300312 0.877932 0.277880 -v 0.300312 0.877931 0.277880 -v -0.300312 0.648084 0.277019 -v 0.300312 0.648084 0.277019 -v 0.244662 0.704449 0.277099 -v -0.244662 0.704449 0.277099 -v -0.300312 0.486167 0.113884 -v 0.300312 0.486167 0.113884 -v -0.300312 0.650163 -0.277880 -v -0.300312 0.487028 -0.115963 -v 0.300312 0.487028 -0.115963 -v -0.244662 0.821567 0.277801 -v -0.244662 0.704698 0.259606 -v -0.244662 0.821816 0.260308 -v 0.244662 0.821567 0.277801 -v 0.244662 0.821816 0.260308 -v 0.244662 0.704698 0.259606 -v -0.244563 0.705233 -0.277878 -v -0.244563 0.705111 -0.261231 -v 0.244563 0.705111 -0.261231 -v -0.244563 0.822066 -0.277021 -v 0.244563 0.821944 -0.260374 -v -0.244563 0.821944 -0.260374 -vt 0.625000 0.687500 -vt 0.625000 0.593750 -vt 1.000000 0.593750 -vt 0.625000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.687500 -vt 0.500000 0.250000 -vt 0.437500 0.312500 -vt 0.437500 0.250000 -vt 0.687500 0.781250 -vt 1.000000 0.781250 -vt 1.000000 0.906250 -vt 0.687500 0.906250 -vt 0.468750 1.000000 -vt 0.375000 0.781250 -vt 0.437500 0.218750 -vt 0.500000 0.218750 -vt 0.718750 0.218750 -vt 0.781250 0.250000 -vt 0.781250 0.218750 -vt 1.000000 0.218750 -vt 0.718750 0.250000 -vt 1.000000 0.187500 -vt 0.718750 0.187500 -vt 0.781250 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.500000 0.312500 -vt 0.468750 0.312500 -vt 0.906250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 0.687500 -vt 0.906250 0.687500 -vt 0.468750 0.687500 -vt 0.593750 0.687500 -vt 0.593750 1.000000 -vt 0.375000 0.906250 -vt 1.000000 0.250000 -vt 0.437500 0.187500 -vt 0.437500 0.093750 -vt 1.000000 0.093750 -vt 1.000000 0.125000 -vt 1.000000 0.156250 -vt 0.437500 0.156250 -vt 1.000000 -0.000000 -vt 1.000000 0.031250 -vt 0.437500 0.031250 -vt 1.000000 0.062500 -vt 0.437500 0.062500 -vt 0.375000 0.875000 -vt 0.343750 0.843750 -vt 0.343750 0.781250 -vt 0.000000 0.750000 -vt 0.000000 0.625000 -vt 0.375000 0.625000 -vt 0.000000 0.500000 -vt 0.375000 0.500000 -vt 0.000000 0.375000 -vt -0.000000 0.250000 -vt 0.375000 0.250000 -vt 0.343750 0.281250 -vt -0.000000 0.125000 -vt 0.375000 0.125000 -vt 0.000000 0.000000 -vt 0.375000 0.000000 -vt 0.000203 0.999797 -vt 0.000000 0.875000 -vt 0.375000 0.375000 -vt 0.343750 0.343750 -vt 0.031250 0.281250 -vt 0.031250 0.343750 -vt 0.375000 0.750000 -vt 0.031250 0.781250 -vt 0.031250 0.843750 -vt 0.437500 0.125000 -vt 0.437500 0.000000 -vt 0.375000 1.000000 -vn 0.000000 0.007300 -1.000000 -vn 0.000000 -0.006000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn -1.000000 -0.000000 0.000000 -vn 1.000000 -0.000000 0.000000 -vn 0.000000 -0.999900 -0.014300 -vn 0.000000 0.999900 0.014300 -vn 0.000000 1.000000 0.007300 -vn -0.000000 -1.000000 -0.007300 -vn 0.000000 0.000000 -1.000000 -vn 0.870700 0.000000 -0.491800 -vn 0.870700 -0.000000 0.491800 -vn -0.000000 -0.000000 1.000000 -vn -0.870700 -0.000000 0.491800 -vn -0.870700 0.000000 -0.491800 -vn 0.000800 -0.379600 -0.925200 -vn 0.003600 0.003700 -1.000000 -vn -0.001200 0.002100 -1.000000 -vn 0.001000 0.385300 -0.922800 -vn 0.000000 0.925300 -0.379200 -vn 0.000000 0.922400 0.386100 -vn -0.000500 0.379500 0.925200 -vn 0.000600 -0.385600 0.922700 -vn -0.000600 -0.385600 0.922700 -vn -0.000700 -0.002700 1.000000 -vn 0.000000 -0.925300 0.379200 -vn 0.000000 -0.922400 -0.386100 -vn -0.000800 -0.379600 -0.925200 -vn 0.000500 0.379500 0.925200 -vn 0.002300 -0.003700 1.000000 -vn 0.000700 -0.002700 1.000000 -vn -0.002300 -0.003700 1.000000 -vn -0.001000 0.385300 -0.922800 -vn 0.001200 0.002100 -1.000000 -vn -0.003600 0.003700 -1.000000 -s off -f 14/1/1 15/2/1 16/3/1 -f 18/2/2 19/4/2 20/5/2 -f 13/6/1 14/1/1 16/3/1 -f 17/3/2 18/2/2 20/5/2 -f 4/7/3 10/8/3 12/9/3 -f 36/10/4 28/11/4 26/12/4 -f 29/13/5 33/14/5 40/15/5 -f 41/7/5 35/9/5 42/16/5 -f 41/7/6 43/17/6 45/18/6 -f 34/19/7 46/20/7 42/21/7 -f 44/22/4 45/18/4 46/20/4 -f 47/23/8 48/21/8 49/20/8 -f 24/24/4 23/25/4 49/20/4 -f 24/24/9 51/18/9 52/17/9 -f 50/26/5 52/17/5 48/16/5 -f 12/9/3 1/27/3 4/7/3 -f 4/7/3 6/28/3 10/8/3 -f 8/29/3 10/8/3 6/28/3 -f 26/12/4 25/30/4 38/31/4 -f 38/31/4 39/13/4 26/12/4 -f 36/10/4 32/32/4 30/33/4 -f 30/33/4 28/11/4 36/10/4 -f 26/12/4 39/13/4 36/10/4 -f 40/15/5 22/34/5 29/13/5 -f 21/35/5 27/10/5 29/13/5 -f 29/13/5 31/36/5 33/14/5 -f 33/14/5 37/37/5 40/15/5 -f 22/34/5 21/35/5 29/13/5 -f 43/17/5 41/7/5 42/16/5 -f 44/22/6 41/7/6 45/18/6 -f 35/38/7 34/19/7 42/21/7 -f 34/19/4 44/22/4 46/20/4 -f 23/25/8 47/23/8 49/20/8 -f 51/18/4 24/24/4 49/20/4 -f 50/26/9 24/24/9 52/17/9 -f 47/39/5 50/26/5 48/16/5 -s 1 -f 1/40/10 2/41/10 3/42/11 -f 3/42/11 5/43/12 6/44/12 -f 5/43/12 7/23/13 8/39/13 -f 7/45/13 9/46/14 10/47/14 -f 9/46/14 11/48/15 12/49/15 -f 11/48/15 2/41/10 1/40/10 -f 22/50/16 23/51/17 24/52/18 -f 25/53/19 26/54/20 27/55/20 -f 26/54/20 28/56/21 29/57/21 -f 29/57/21 28/56/21 30/58/22 -f 32/59/23 33/60/24 34/61/25 -f 32/59/23 36/62/26 37/63/26 -f 36/62/26 39/64/27 40/65/27 -f 39/66/27 38/67/28 22/50/16 -f 31/68/29 44/69/30 34/61/25 -f 30/58/22 32/59/23 35/70/31 -f 30/58/22 41/71/32 44/69/30 -f 21/72/33 24/52/18 50/73/34 -f 38/67/28 25/53/19 50/73/34 -f 22/50/16 38/67/28 47/74/35 -f 4/75/11 1/40/10 3/42/11 -f 4/75/11 3/42/11 6/44/12 -f 6/44/12 5/43/12 8/39/13 -f 8/76/13 7/45/13 10/47/14 -f 10/47/14 9/46/14 12/49/15 -f 12/49/15 11/48/15 1/40/10 -f 21/72/33 22/50/16 24/52/18 -f 21/72/33 25/53/19 27/55/20 -f 27/55/20 26/54/20 29/57/21 -f 31/68/29 29/57/21 30/58/22 -f 35/70/31 32/59/23 34/61/25 -f 33/60/24 32/59/23 37/63/26 -f 37/63/26 36/62/26 40/65/27 -f 40/77/27 39/66/27 22/50/16 -f 33/60/24 31/68/29 34/61/25 -f 41/71/32 30/58/22 35/70/31 -f 31/68/29 30/58/22 44/69/30 -f 25/53/19 21/72/33 50/73/34 -f 47/74/35 38/67/28 50/73/34 -f 23/51/17 22/50/16 47/74/35 diff --git a/src/main/resources/assets/hbm/shaders/test_shader.frag b/src/main/resources/assets/hbm/shaders/test_shader.frag deleted file mode 100644 index 2e6f3ab0b..000000000 --- a/src/main/resources/assets/hbm/shaders/test_shader.frag +++ /dev/null @@ -1,25 +0,0 @@ -#version 330 compatibility - -in vec2 texCoord; -in vec2 lightCoord; -in vec4 color; -in vec3 lighting; -out vec4 FragColor; - -uniform sampler2D texture; -uniform sampler2D lightmap; - -void main(){ - vec4 center = texture2D(DiffuseSampler, texCoord); - vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y)); - vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0)); - vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0)); - vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y)); - vec4 uDiff = center - up; - vec4 dDiff = center - down; - vec4 lDiff = center - left; - vec4 rDiff = center - right; - vec4 sum = uDiff + dDiff + lDiff + rDiff; - vec3 clamped = clamp(center.rgb - sum.rgb, 0.0, 1.0); - gl_FragColor = vec4(clamped, center.a); -} diff --git a/src/main/resources/assets/hbm/shaders/test_shader.vert b/src/main/resources/assets/hbm/shaders/test_shader.vert deleted file mode 100644 index 29c5d6a14..000000000 --- a/src/main/resources/assets/hbm/shaders/test_shader.vert +++ /dev/null @@ -1,26 +0,0 @@ -#version 330 compatibility - -out vec2 texCoord; -out vec2 lightCoord; -out vec4 color; -out vec3 lighting; - -void main(){ - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; - lightCoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).st; - color = gl_Color; - - vec3 totalLighting = vec3(gl_LightModel.ambient) * vec3(gl_FrontMaterial.emission); - vec3 normal = (gl_NormalMatrix * gl_Normal).xyz; - vec4 difftot = vec4(0.0F); - - for (int i = 0; i < gl_MaxLights; i ++){ - - vec4 diff = gl_FrontLightProduct[i].diffuse * max(dot(normal,gl_LightSource[i].position.xyz), 0.0f); - diff = clamp(diff, 0.0F, 1.0F); - - difftot += diff; - } - lighting = clamp((difftot + gl_LightModel.ambient).rgb, 0.0F, 1.0F); -} diff --git a/src/main/resources/assets/hbm/sounds/clap.ogg b/src/main/resources/assets/hbm/sounds/clap.ogg deleted file mode 100644 index a42db9654..000000000 Binary files a/src/main/resources/assets/hbm/sounds/clap.ogg and /dev/null differ diff --git a/src/main/resources/assets/hbm/sounds/jeff.ogg b/src/main/resources/assets/hbm/sounds/jeff.ogg deleted file mode 100644 index 1c251fc42..000000000 Binary files a/src/main/resources/assets/hbm/sounds/jeff.ogg and /dev/null differ diff --git a/src/main/resources/assets/hbm/sounds/mug.ogg b/src/main/resources/assets/hbm/sounds/mug.ogg deleted file mode 100644 index c7279c971..000000000 Binary files a/src/main/resources/assets/hbm/sounds/mug.ogg and /dev/null differ diff --git a/src/main/resources/assets/hbm/sounds/sample.ogg b/src/main/resources/assets/hbm/sounds/sample.ogg deleted file mode 100644 index 30cebf4cb..000000000 Binary files a/src/main/resources/assets/hbm/sounds/sample.ogg and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/armor/tail_peep.png b/src/main/resources/assets/hbm/textures/armor/tail_peep.png new file mode 100644 index 000000000..ae222d9f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/tail_peep.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png index 258a60867..7c5cd06f8 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png index 1b6fdcb1a..992f81da1 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png index a6d884bee..e0e3f2d87 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png index 9ce5b3466..2424e7f15 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png index d89bd1753..cb14afd5e 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png index ed3dabe63..e93b0eeea 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png deleted file mode 100644 index 011c1e47d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png new file mode 100644 index 000000000..ec1fc103c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_1.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_1.png new file mode 100644 index 000000000..c9012efbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_2.png new file mode 100644 index 000000000..171b3c0b4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png new file mode 100644 index 000000000..02c08f0fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png new file mode 100644 index 000000000..6d74263ec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_straight.png index 1c413b9dc..21c9779b8 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_straight.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png index ab1816ba5..b35129b64 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png index 48dc1e6b8..24d68d1e6 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png index 51129d041..a3326e99b 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png index 6a7379597..f309e8de5 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png index 846ec559e..dfd0747a0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png index 2065be57b..9d954e1c7 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png new file mode 100644 index 000000000..62714bdbb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png new file mode 100644 index 000000000..718ff2d9e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png new file mode 100644 index 000000000..5422296f6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_3.png new file mode 100644 index 000000000..d8814f63e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_4.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_4.png new file mode 100644 index 000000000..7f1ba80d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png index f6a5ed43e..f76dd0378 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png index 63002d448..2e552086b 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png index cbfc0f897..3f9efab8e 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png index a18dd32fc..ecb91be52 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png index 304d273ed..9136999aa 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png index 2db735758..704acd60c 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png index b0cb42c95..24284ee8f 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png deleted file mode 100644 index 2ce589063..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png new file mode 100644 index 000000000..b519a48da Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_1.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_1.png new file mode 100644 index 000000000..265364ee7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_2.png new file mode 100644 index 000000000..86b1aa4fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png new file mode 100644 index 000000000..7916c63a6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_4.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_4.png new file mode 100644 index 000000000..3e6b7e9f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png index d8a5699bf..d051e9354 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white.png new file mode 100644 index 000000000..391bc0a0d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_bl.png index 586ca4d1a..94cfc0ecb 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_bl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png index 1883702b0..b2c75f853 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png index e79b0a583..2684f8677 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tr.png index 1732c7916..dd96f902b 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tr.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_end.png index 484764a50..3eebf73c6 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_end.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction.png deleted file mode 100644 index 36e78e712..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png new file mode 100644 index 000000000..35019f1d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_1.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_1.png new file mode 100644 index 000000000..3dcf36521 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png new file mode 100644 index 000000000..2ac37ec44 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_3.png new file mode 100644 index 000000000..c188b753f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_4.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_4.png new file mode 100644 index 000000000..080929179 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png index 636913932..a76af87a1 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png and b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png new file mode 100644 index 000000000..46677bde3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.sand.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.sand.png new file mode 100644 index 000000000..0082fedc4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.sand.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fence_metal.png b/src/main/resources/assets/hbm/textures/blocks/fence_metal.png index 12d6faaea..40f5411bb 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fence_metal.png and b/src/main/resources/assets/hbm/textures/blocks/fence_metal.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png b/src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png new file mode 100644 index 000000000..12d6faaea Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png b/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png deleted file mode 100644 index 469170a26..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_computer.png b/src/main/resources/assets/hbm/textures/blocks/reactor_computer.png deleted file mode 100644 index b0bf0b1fa..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_computer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_computer_alt.png b/src/main/resources/assets/hbm/textures/blocks/reactor_computer_alt.png deleted file mode 100644 index c78fc8be6..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_computer_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side.png b/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side.png deleted file mode 100644 index f593dd4e5..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side_alt.png deleted file mode 100644 index cbd8c0906..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top.png b/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top.png deleted file mode 100644 index 8ca00f7ab..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png deleted file mode 100644 index e0bf9f0b9..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_control_base.png b/src/main/resources/assets/hbm/textures/blocks/reactor_control_base.png deleted file mode 100644 index cf5e55144..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_control_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_control_side.png b/src/main/resources/assets/hbm/textures/blocks/reactor_control_side.png deleted file mode 100644 index f6e308fed..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_control_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png b/src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png deleted file mode 100644 index bb7d99c14..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png b/src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png deleted file mode 100644 index 7a4873389..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_element_base.png b/src/main/resources/assets/hbm/textures/blocks/reactor_element_base.png deleted file mode 100644 index 51471804a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_element_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png b/src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png deleted file mode 100644 index 8ebff9842..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png b/src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png deleted file mode 100644 index cb37aec67..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_hatch.png b/src/main/resources/assets/hbm/textures/blocks/reactor_hatch.png deleted file mode 100644 index 4f9ab082b..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_hatch.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_hatch_alt.png b/src/main/resources/assets/hbm/textures/blocks/reactor_hatch_alt.png deleted file mode 100644 index d5fc8d5af..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_hatch_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png b/src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png deleted file mode 100644 index 9bf758d19..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sand_gold.png b/src/main/resources/assets/hbm/textures/blocks/sand_gold.png deleted file mode 100644 index 353d5e372..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/sand_gold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_gems.png b/src/main/resources/assets/hbm/textures/blocks/stone_gems.png deleted file mode 100644 index 6bf8cf21b..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/stone_gems.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_cooler.png b/src/main/resources/assets/hbm/textures/blocks/watz_cooler.png deleted file mode 100644 index e44d47228..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/watz_cooler.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_end.png b/src/main/resources/assets/hbm/textures/blocks/watz_end.png deleted file mode 100644 index 7abad325c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/watz_end.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_hatch.png b/src/main/resources/assets/hbm/textures/blocks/watz_hatch.png deleted file mode 100644 index 546958c89..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/watz_hatch.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/white_cable.png b/src/main/resources/assets/hbm/textures/blocks/white_cable.png deleted file mode 100644 index c59723c58..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/white_cable.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/white_cable_icon.png b/src/main/resources/assets/hbm/textures/blocks/white_cable_icon.png deleted file mode 100644 index 1a4ff072c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/white_cable_icon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png b/src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png deleted file mode 100644 index be4a5f129..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/acid.png b/src/main/resources/assets/hbm/textures/gui/fluids/peroxide.png similarity index 100% rename from src/main/resources/assets/hbm/textures/gui/fluids/acid.png rename to src/main/resources/assets/hbm/textures/gui/fluids/peroxide.png diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/slop.png b/src/main/resources/assets/hbm/textures/gui/fluids/slop.png new file mode 100644 index 000000000..4d521d585 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/slop.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png b/src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png new file mode 100644 index 000000000..c716b6154 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png index b429e5ee0..ce9519616 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png and b/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png index 13a5d33bb..9da387278 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.png new file mode 100644 index 000000000..50b928eb7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.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 index f010e6675..1b60046f7 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png and b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore.png new file mode 100644 index 000000000..1de4e8d85 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_crystal.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_heavy.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_light.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_nonmetal.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_rare.png new file mode 100644 index 000000000..dd3613795 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_actinide.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png new file mode 100644 index 000000000..0b6767953 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png new file mode 100644 index 000000000..24ac9d3c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png new file mode 100644 index 000000000..269bb7039 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_base.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_base.png new file mode 100644 index 000000000..8da371d87 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_blank.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_blank.png new file mode 100644 index 000000000..f809d7adb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new_blank.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png new file mode 100644 index 000000000..77aba4494 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.centrifuged.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.centrifuged.png new file mode 100644 index 000000000..a739ce09c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.centrifuged.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.rad.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.rad.png new file mode 100644 index 000000000..86e67e437 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.rad.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.roasted.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.roasted.png new file mode 100644 index 000000000..3c1ec46ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.roasted.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png new file mode 100644 index 000000000..95f45567c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png new file mode 100644 index 000000000..5eaa9ba1b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png new file mode 100644 index 000000000..14b860e0c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_actinide.png new file mode 100644 index 000000000..fb90a3472 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png new file mode 100644 index 000000000..86e05f1be Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png new file mode 100644 index 000000000..dbc073792 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_light.png new file mode 100644 index 000000000..7f796265a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png new file mode 100644 index 000000000..ae2489ea5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_rare.png new file mode 100644 index 000000000..fb90a3472 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png new file mode 100644 index 000000000..bc9e58030 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_crystal.png new file mode 100644 index 000000000..43f08c3d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_heavy.png new file mode 100644 index 000000000..a580437b2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_light.png new file mode 100644 index 000000000..288b49cd2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png new file mode 100644 index 000000000..1d0913dc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png new file mode 100644 index 000000000..bc9e58030 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_actinide.png new file mode 100644 index 000000000..79b2a8687 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_crystal.png new file mode 100644 index 000000000..b6aad0884 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_heavy.png new file mode 100644 index 000000000..34d7c80e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png new file mode 100644 index 000000000..745c40ab4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png new file mode 100644 index 000000000..b4f8bef82 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_rare.png new file mode 100644 index 000000000..79b2a8687 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_actinide.png new file mode 100644 index 000000000..ff99fd2b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_actinide.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png new file mode 100644 index 000000000..d36c7234a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_heavy.png new file mode 100644 index 000000000..e4df80773 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_light.png new file mode 100644 index 000000000..cd4fd8937 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_nonmetal.png new file mode 100644 index 000000000..1041858a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_nonmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png new file mode 100644 index 000000000..ff99fd2b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit.controller.png b/src/main/resources/assets/hbm/textures/items/circuit.controller.png new file mode 100644 index 000000000..72c131d96 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/circuit.controller.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png b/src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png new file mode 100644 index 000000000..d939b6b67 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit.controller_chassis.png b/src/main/resources/assets/hbm/textures/items/circuit.controller_chassis.png new file mode 100644 index 000000000..b905d1301 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/circuit.controller_chassis.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit.png b/src/main/resources/assets/hbm/textures/items/circuit.png index d2ac0d1b3..de95e4f24 100644 Binary files a/src/main/resources/assets/hbm/textures/items/circuit.png and b/src/main/resources/assets/hbm/textures/items/circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.canister b/src/main/resources/assets/hbm/textures/items/item_secret.canister.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/item_secret.canister rename to src/main/resources/assets/hbm/textures/items/item_secret.canister.png diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.controller.png b/src/main/resources/assets/hbm/textures/items/item_secret.controller.png new file mode 100644 index 000000000..cb1095c9a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/item_secret.controller.png differ diff --git a/src/main/resources/assets/hbm/textures/items/low_density_element.png b/src/main/resources/assets/hbm/textures/items/low_density_element.png new file mode 100644 index 000000000..5894636f0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/low_density_element.png differ diff --git a/src/main/resources/assets/hbm/textures/items/neutron_reflector_old.png b/src/main/resources/assets/hbm/textures/items/neutron_reflector_old.png deleted file mode 100644 index 99d28929b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/neutron_reflector_old.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oil_canola.png b/src/main/resources/assets/hbm/textures/items/oil_canola.png deleted file mode 100644 index a8363032f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oil_canola.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oil_crude.png b/src/main/resources/assets/hbm/textures/items/oil_crude.png deleted file mode 100644 index 9c922060a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oil_crude.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png b/src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png deleted file mode 100644 index 53b9537c7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_diesel.png b/src/main/resources/assets/hbm/textures/items/oilcan_diesel.png deleted file mode 100644 index 998d9cd92..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_diesel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png b/src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png deleted file mode 100644 index 8abf6d0ff..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png b/src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png deleted file mode 100644 index 371de2421..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png b/src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png deleted file mode 100644 index 3df5212ff..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_lightoil.png b/src/main/resources/assets/hbm/textures/items/oilcan_lightoil.png deleted file mode 100644 index 90f74ec41..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_lightoil.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png b/src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png deleted file mode 100644 index 9cee01513..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_naphtha.png b/src/main/resources/assets/hbm/textures/items/oilcan_naphtha.png deleted file mode 100644 index 631a87058..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_naphtha.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_oil.png b/src/main/resources/assets/hbm/textures/items/oilcan_oil.png deleted file mode 100644 index 0cfbdc54f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_oil.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_petroil.png b/src/main/resources/assets/hbm/textures/items/oilcan_petroil.png deleted file mode 100644 index d1d5f9d23..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_petroil.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_reclaimed.png b/src/main/resources/assets/hbm/textures/items/oilcan_reclaimed.png deleted file mode 100644 index 1f6a7db89..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_reclaimed.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_smear.png b/src/main/resources/assets/hbm/textures/items/oilcan_smear.png deleted file mode 100644 index 152145995..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/oilcan_smear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ore_density_scanner.png b/src/main/resources/assets/hbm/textures/items/ore_density_scanner.png new file mode 100644 index 000000000..c67517b88 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ore_density_scanner.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_template.png b/src/main/resources/assets/hbm/textures/items/powder_template.png deleted file mode 100644 index 71b8b07c5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/powder_template.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/rubber_gloves.png b/src/main/resources/assets/hbm/textures/items/rubber_gloves.png deleted file mode 100644 index 2fd793fab..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/rubber_gloves.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png index 3e4d62f3f..8cbf55186 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_dura_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_dura_flat.png deleted file mode 100644 index 9d075e448..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_dura_flat.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png b/src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png new file mode 100644 index 000000000..d0276592d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_iron_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_iron_circuit.png index 71978e8c7..d4211a715 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_iron_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_iron_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png index 861d3ace9..a3a25fc41 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png index bd35e1d27..45ff4b3e3 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png and b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_plate.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_plate.png index 57b37bd52..e38824979 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_plate.png and b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_plate.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png index 144bb8fb9..2c9a6fea3 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png and b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_circuit.png deleted file mode 100644 index de537a586..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_circuit.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png deleted file mode 100644 index 7a6e25e76..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png deleted file mode 100644 index 847e870ea..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png deleted file mode 100644 index e2447983c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png index d95fe00df..86dbad620 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_circuit.png index 4234e4e87..36f883eea 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_stone_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_stone_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png index 72d2f52fe..ea71da78b 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png and b/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_plate.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_plate.png index e70463b46..2421606e5 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_stone_plate.png and b/src/main/resources/assets/hbm/textures/items/stamp_stone_plate.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png index 1a8f4455d..a4dd23aef 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png and b/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_titanium_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_titanium_circuit.png index 5725e422a..374167fdd 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_titanium_circuit.png and b/src/main/resources/assets/hbm/textures/items/stamp_titanium_circuit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_titanium_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_titanium_flat.png index 1d7024abc..00417c03b 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_titanium_flat.png and b/src/main/resources/assets/hbm/textures/items/stamp_titanium_flat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_titanium_plate.png b/src/main/resources/assets/hbm/textures/items/stamp_titanium_plate.png index 96d176208..c7d7c67be 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_titanium_plate.png and b/src/main/resources/assets/hbm/textures/items/stamp_titanium_plate.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png index ffdae003c..9fa0bd1dc 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png and b/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_dynamite.png b/src/main/resources/assets/hbm/textures/items/stick_dynamite.png index cc31285e0..2596ba765 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stick_dynamite.png and b/src/main/resources/assets/hbm/textures/items/stick_dynamite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png index 973506281..6bc5abb43 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png and b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_tatb.png b/src/main/resources/assets/hbm/textures/items/stick_tatb.png index 6dd88af75..f012d4464 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stick_tatb.png and b/src/main/resources/assets/hbm/textures/items/stick_tatb.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_tnt.png b/src/main/resources/assets/hbm/textures/items/stick_tnt.png index 6fa5a5518..7ca995a46 100644 Binary files a/src/main/resources/assets/hbm/textures/items/stick_tnt.png and b/src/main/resources/assets/hbm/textures/items/stick_tnt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png deleted file mode 100644 index 77dd465d7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png deleted file mode 100644 index 19c15cfe6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_heavy_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_heavy_ammo.png deleted file mode 100644 index 0fed1fdf7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_heavy_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_light_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_light_ammo.png deleted file mode 100644 index 13143457c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_light_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png deleted file mode 100644 index e75662c45..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_spitfire_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_spitfire_ammo.png deleted file mode 100644 index 76f824d57..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_spitfire_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png deleted file mode 100644 index 7a3d511d1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/warhead_mirv_alt.png b/src/main/resources/assets/hbm/textures/items/warhead_mirv_alt.png deleted file mode 100644 index 9c01939b8..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/warhead_mirv_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/warhead_mirvlet.png b/src/main/resources/assets/hbm/textures/items/warhead_mirvlet.png deleted file mode 100644 index 7630682da..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/warhead_mirvlet.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/warhead_thermo_endo_alt.png b/src/main/resources/assets/hbm/textures/items/warhead_thermo_endo_alt.png deleted file mode 100644 index e519298dc..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/warhead_thermo_endo_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png b/src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png deleted file mode 100644 index b452b4c44..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/wire_aluminium.png b/src/main/resources/assets/hbm/textures/items/wire_aluminium.png index e4c210ec1..a3ff6c135 100644 Binary files a/src/main/resources/assets/hbm/textures/items/wire_aluminium.png and b/src/main/resources/assets/hbm/textures/items/wire_aluminium.png differ diff --git a/src/main/resources/assets/hbm/textures/models/At4New.png b/src/main/resources/assets/hbm/textures/models/At4New.png deleted file mode 100644 index 893349770..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/At4New.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/LilBoy2.png b/src/main/resources/assets/hbm/textures/models/LilBoy2.png deleted file mode 100644 index 0e0dd92c2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/LilBoy2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/TestObj.png b/src/main/resources/assets/hbm/textures/models/TestObj.png deleted file mode 100644 index e4b7504dc..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/TestObj.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/acidizer.png b/src/main/resources/assets/hbm/textures/models/machines/acidizer.png new file mode 100644 index 000000000..a82223f45 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/acidizer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/ore_slopper.png b/src/main/resources/assets/hbm/textures/models/machines/ore_slopper.png new file mode 100644 index 000000000..caf80bcaa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/ore_slopper.png differ diff --git a/src/main/resources/assets/hbm/textures/models/mining_drill.png b/src/main/resources/assets/hbm/textures/models/mining_drill.png deleted file mode 100755 index c4c2f2c65..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mining_drill.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/press_body_2.png b/src/main/resources/assets/hbm/textures/models/press_body_2.png deleted file mode 100644 index b67125d1f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/press_body_2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/press_body_alt.png b/src/main/resources/assets/hbm/textures/models/press_body_alt.png deleted file mode 100644 index 62c11e6d3..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/press_body_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/press_head_2.png b/src/main/resources/assets/hbm/textures/models/press_head_2.png deleted file mode 100644 index c40599a53..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/press_head_2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/press_head_new.png b/src/main/resources/assets/hbm/textures/models/press_head_new.png deleted file mode 100644 index d54d6c2e1..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/press_head_new.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/radar_base.png b/src/main/resources/assets/hbm/textures/models/radar_base.png deleted file mode 100644 index e87d6bb2f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/radar_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/radar_head.png b/src/main/resources/assets/hbm/textures/models/radar_head.png deleted file mode 100644 index 5f5b752da..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/radar_head.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_HOTBLOOD.png b/src/main/resources/assets/hbm/textures/models/tank/tank_BLOOD_HOT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_HOTBLOOD.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_BLOOD_HOT.png diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_ACID.png b/src/main/resources/assets/hbm/textures/models/tank/tank_PEROXIDE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_ACID.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_PEROXIDE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png new file mode 100644 index 000000000..7e99ca01c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png new file mode 100644 index 000000000..12dd41f20 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/textureIGenRotor.png b/src/main/resources/assets/hbm/textures/models/textureIGenRotor.png deleted file mode 100644 index 4cf0c7ddf..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/textureIGenRotor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lag.png b/src/main/resources/assets/hbm/textures/models/weapons/lag.png new file mode 100644 index 000000000..dc8665cf5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/lag.png differ