diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d86f1dd15..ef65fc1c4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -265,6 +265,7 @@ public class ModBlocks { public static Block deco_tungsten; public static Block deco_aluminium; public static Block deco_steel; + public static Block deco_rusty_steel; public static Block deco_lead; public static Block deco_beryllium; public static Block deco_asbestos; @@ -557,6 +558,7 @@ public class ModBlocks { public static Block mine_he; public static Block mine_shrap; public static Block mine_fat; + public static Block mine_naval; public static Block crate; public static Block crate_weapon; @@ -1455,6 +1457,7 @@ public class ModBlocks { deco_tungsten = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); deco_aluminium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); deco_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); + deco_rusty_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_rusty_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_rusty_steel"); deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); @@ -1745,6 +1748,7 @@ public class ModBlocks { mine_he = new Landmine(Material.iron, 2D, 5D).setBlockName("mine_he").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_he"); mine_shrap = new Landmine(Material.iron, 1.5D, 1D).setBlockName("mine_shrap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_shrap"); mine_fat = new Landmine(Material.iron, 2.5D, 1D).setBlockName("mine_fat").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_fat"); + mine_naval = new Landmine(Material.iron, 2.5D, 1D).setBlockName("mine_naval").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_naval"); dynamite = new BlockDynamite().setBlockName("dynamite").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":dynamite"); tnt = new BlockTNT().setBlockName("tnt_ntm").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":tnt"); semtex = new BlockSemtex().setBlockName("semtex").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":semtex"); @@ -2603,6 +2607,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_tungsten, deco_tungsten.getUnlocalizedName()); GameRegistry.registerBlock(deco_aluminium, deco_aluminium.getUnlocalizedName()); GameRegistry.registerBlock(deco_steel, deco_steel.getUnlocalizedName()); + GameRegistry.registerBlock(deco_rusty_steel, deco_rusty_steel.getUnlocalizedName()); GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); @@ -2898,6 +2903,7 @@ public class ModBlocks { GameRegistry.registerBlock(mine_shrap, mine_shrap.getUnlocalizedName()); GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); GameRegistry.registerBlock(mine_fat, mine_fat.getUnlocalizedName()); + GameRegistry.registerBlock(mine_naval, mine_naval.getUnlocalizedName()); //Block Bombs GameRegistry.registerBlock(flame_war, flame_war.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index ec75235b6..6021f003e 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -26,6 +26,7 @@ import net.minecraft.block.BlockFence; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -67,8 +68,7 @@ public class Landmine extends BlockContainer implements IBomb { if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); - if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); - } + if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);} @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { @@ -133,6 +133,18 @@ public class Landmine extends BlockContainer implements IBomb { return false; } + public boolean isWaterAbove(World world, int x, int y, int z) { + for(int xo = -1; xo <= 1; xo++) { + for(int zo = -1; zo <= 1; zo++) { + Block blockAbove = world.getBlock(x + xo, y + 1, z + zo); + if(blockAbove == Blocks.water || blockAbove == Blocks.flowing_water) { + return true; + } + } + } + return false; + } + @Override public BombReturnCode explode(World world, int x, int y, int z) { @@ -162,24 +174,42 @@ public class Landmine extends BlockContainer implements IBomb { vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); - + ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D); ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5); + } else if(this == ModBlocks.mine_naval) { + ExplosionVNT vnt = new ExplosionVNT(world, x + 5, y + 5, z + 5, 25F); + vnt.setBlockAllocator(new BlockAllocatorStandard(64)); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_NAVAL_DAMAGE.get()).setupPiercing(5F, 0.2F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 1F, 0.5F)); + vnt.explode(); + + ExplosionLarge.spawnParticlesRadial(world, x + 0.5, y + 2, z + 0.5, 30); + ExplosionLarge.spawnRubble(world,x + 0.5, y + 0.5, z + 0.5, 5 ); + + // Only spawn water effects if there's water above the mine + if (isWaterAbove(world, x, y, z)) { + ExplosionLarge.spawnFoam(world, x + 0.5, y + 0.5, z + 0.5, 60); + } + } else if(this == ModBlocks.mine_fat) { - + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10); vnt.setBlockAllocator(new BlockAllocatorStandard(64)); vnt.setBlockProcessor(new BlockProcessorStandard()); vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, ServerConfig.MINE_NUKE_DAMAGE.get()).withRangeMod(1.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); - + XFactoryCatapult.incrementRad(world, x, y, z, 1.5F); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); data.setBoolean("balefire", MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250)); - + + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 25.0F, 0.9F); // this has to be the single worst solution ever } } diff --git a/src/main/java/com/hbm/config/ServerConfig.java b/src/main/java/com/hbm/config/ServerConfig.java index 0ae3d11a2..8970c6081 100644 --- a/src/main/java/com/hbm/config/ServerConfig.java +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -15,6 +15,7 @@ public class ServerConfig extends RunningConfig { public static ConfigWrapper MINE_HE_DAMAGE = new ConfigWrapper(35F); public static ConfigWrapper MINE_SHRAP_DAMAGE = new ConfigWrapper(7.5F); public static ConfigWrapper MINE_NUKE_DAMAGE = new ConfigWrapper(100F); + public static ConfigWrapper MINE_NAVAL_DAMAGE = new ConfigWrapper(60F); public static ConfigWrapper TAINT_TRAILS = new ConfigWrapper(false); private static void initDefaults() { @@ -23,6 +24,7 @@ public class ServerConfig extends RunningConfig { configMap.put("MINE_HE_DAMAGE", MINE_HE_DAMAGE); configMap.put("MINE_SHRAP_DAMAGE", MINE_SHRAP_DAMAGE); configMap.put("MINE_NUKE_DAMAGE", MINE_NUKE_DAMAGE); + configMap.put("MINE_NAVAL_DAMAGE", MINE_NAVAL_DAMAGE); configMap.put("TAINT_TRAILS", TAINT_TRAILS); } diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 2674ee25d..f26740bd6 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -40,6 +40,15 @@ public class ExplosionLarge { PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 250)); } + public static void spawnFoam(World world, double x, double y, double z, int count) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "smoke"); + data.setString("mode", "foamSplash"); + data.setInteger("count", count); + PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 250)); + } + public static void spawnShock(World world, double x, double y, double z, int count, double strength) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index c9aaeb836..ec801179f 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -46,18 +46,18 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class AssemblerRecipes extends SerializableRecipe { - + public static HashMap recipes = new HashMap(); public static List recipeList = new ArrayList(); - + /** Legacy NOP, WarTec needs this */ public static void loadRecipes() { } @Override public void registerDefaults() { - + boolean exp = GeneralConfig.enableExpensiveMode; - + makeRecipe(new ComparableStack(ModItems.plate_iron, 2), new AStack[] {new OreDictStack(IRON.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_gold, 2), new AStack[] {new OreDictStack(GOLD.ingot(), 3), },30); makeRecipe(new ComparableStack(ModItems.plate_titanium, 2), new AStack[] {new OreDictStack(TI.ingot(), 3), },30); @@ -153,6 +153,7 @@ 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.mine_naval, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.block_semtex, 5)},300); 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); @@ -187,7 +188,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.boy_shielding, 1), new AStack[] {new OreDictStack(OreDictManager.getReflector(), 12), new OreDictStack(STEEL.plate528(), 4), },150); makeRecipe(new ComparableStack(ModItems.boy_target, 1), new AStack[] {new OreDictStack(U235.nugget(), 18), },200); makeRecipe(new ComparableStack(ModItems.boy_bullet, 1), new AStack[] {new OreDictStack(U235.nugget(), 9), },100); - makeRecipe(new ComparableStack(ModItems.boy_propellant, 1), new AStack[] {new ComparableStack(ModItems.cordite, 8), new OreDictStack(IRON.plate528(), 8), new OreDictStack(AL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4), },100); + makeRecipe(new ComparableStack(ModItems.boy_propellant, 1), new AStack[] {new ComparableStack(ModItems.cordite, 8), new OreDictStack(IRON.plate528(), 8), new OreDictStack(AL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4), },100); makeRecipe(new ComparableStack(ModItems.boy_igniter, 1), new AStack[] {new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 1), new OreDictStack(AL.plate528(), 6), new OreDictStack(STEEL.plate528(), 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 3), },150); //HE for gating purposes makeRecipe(new ComparableStack(ModItems.man_igniter, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 9), },150); makeRecipe(new ComparableStack(ModItems.man_core, 1), new AStack[] {new OreDictStack(PU239.nugget(), 8), new OreDictStack(BE.nugget(), 2), },250); @@ -264,7 +265,7 @@ public class AssemblerRecipes extends SerializableRecipe { 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), @@ -273,7 +274,7 @@ public class AssemblerRecipes extends SerializableRecipe { 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), @@ -378,7 +379,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), }, 500); - + makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), @@ -477,7 +478,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new OreDictStack(DIAMOND.dust(), 16) }, 100); - + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new AStack[] { new OreDictStack(DURA.ingot(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 12), @@ -487,7 +488,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new OreDictStack(DIAMOND.dust(), 24) }, 100); - + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new AStack[] { new OreDictStack(DESH.ingot(), 16), new OreDictStack(RUBBER.ingot(), 12), @@ -497,7 +498,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new OreDictStack(DIAMOND.dust(), 32) }, 100); - + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new AStack[] { new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20), new OreDictStack(DESH.ingot(), 12), @@ -507,7 +508,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new OreDictStack(DIAMOND.dust(), 48) }, 100); - + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new AStack[] { new OreDictStack(FERRO.ingot(), 24), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), @@ -517,7 +518,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new OreDictStack(DIAMOND.dust(), 56) }, 100); - + makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { !exp ? new OreDictStack(STEEL.plate528(), 12) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(RUBBER.ingot(), 4), @@ -539,7 +540,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(DURA.pipe(), 16), new OreDictStack(STEEL.pipe(), 16) }, 600); - + makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] { !exp ? new OreDictStack(STEEL.plateWelded(), 8) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), @@ -548,7 +549,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.pipe(), 24), new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4) }, 600); - + makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 3), new OreDictStack(ND.wireDense(), 32), @@ -560,7 +561,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(CU.plateCast(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC) }, 600); - + makeRecipe(new ComparableStack(ModBlocks.reactor_zirnox, 1), new AStack[] { !exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(STEEL.pipe(), 8), @@ -591,7 +592,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM), new ComparableStack(ModItems.coin_ufo, 1), }, 1200, ModItems.journal_bj); - + makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 32), new OreDictStack(W.ingot(), 32), @@ -602,7 +603,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(DURA.bolt(), 16), new ComparableStack(ModItems.motor, 3), }, 200); - + makeRecipe(new ComparableStack(ModBlocks.blast_door, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(W.ingot(), 8), @@ -613,7 +614,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(DURA.bolt(), 4), new ComparableStack(ModItems.motor, 1), }, 300); - + makeRecipe(new ComparableStack(ModBlocks.fire_door, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 8), @@ -728,7 +729,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1) }, 300); - + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL), new AStack[] { new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), @@ -794,7 +795,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), }, 100); - + makeRecipe(new ComparableStack(ModBlocks.machine_silex, 1), new AStack[] { new ComparableStack(ModBlocks.glass_quartz, 16), !exp ? new OreDictStack(STEEL.plateCast(), 8) : new OreDictStack(STEEL.heavyComp(), 1), @@ -810,14 +811,14 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC) }, 400); - + makeRecipe(new ComparableStack(ModBlocks.rbmk_blank, 1), new AStack[] { new ComparableStack(ModBlocks.concrete_asbestos, 4), !exp ? new OreDictStack(STEEL.plate528(), 4) : new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 4) }, 100); - + makeRecipe(new ComparableStack(ModItems.multitool_hit, 1), new AStack[] { new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.plate(), 4), @@ -825,7 +826,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD) }, 100); - + makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] { !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), @@ -837,7 +838,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC) }, 400); - + makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] { !exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), @@ -850,7 +851,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC) }, 400); - + makeRecipe(new ComparableStack(ModItems.missile_shuttle, 1), new AStack[] { new ComparableStack(ModItems.missile_generic, 2), new ComparableStack(ModItems.missile_strong, 1), @@ -862,7 +863,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(KEY_ANYPANE, 6), new OreDictStack(STEEL.plate(), 4), }, 100); - + makeRecipe(new ComparableStack(ModBlocks.machine_difurnace_rtg_off, 1), new AStack[] { new ComparableStack(ModBlocks.machine_difurnace_off, 1), new ComparableStack(ModItems.rtg_unit, 3), @@ -982,7 +983,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModBlocks.capacitor_tantalium, 1), new ComparableStack(ModBlocks.glass_quartz, 16) }, 200); - + makeRecipe(new ComparableStack(ModBlocks.launch_pad_large, 1), new AStack[] { new OreDictStack(STEEL.plateCast(), 6), @@ -997,7 +998,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED) }, 400); - + makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[] { new OreDictStack(NB.ingot(), 4), new ComparableStack(ModItems.redcoil_capacitor, 1), @@ -1083,7 +1084,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new OreDictStack(MAGTUNG.wireFine(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), }, 400, ModItems.journal_pip); makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150); makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC), },300); - + } else { addTantalium(new ComparableStack(ModBlocks.machine_centrifuge, 1), 5); addTantalium(new ComparableStack(ModBlocks.machine_gascent, 1), 25); @@ -1096,7 +1097,7 @@ public class AssemblerRecipes extends SerializableRecipe { addTantalium(new ComparableStack(ModBlocks.machine_mining_laser, 1), 30); addTantalium(new ComparableStack(ModBlocks.machine_vacuum_distill, 1), 50); addTantalium(new ComparableStack(ModBlocks.machine_catalytic_reformer, 1), 50); - + addTantalium(new ComparableStack(ModBlocks.turret_chekhov, 1), 3); addTantalium(new ComparableStack(ModBlocks.turret_friendly, 1), 3); addTantalium(new ComparableStack(ModBlocks.turret_jeremy, 1), 3); @@ -1106,7 +1107,7 @@ public class AssemblerRecipes extends SerializableRecipe { addTantalium(new ComparableStack(ModBlocks.turret_maxwell, 1), 3); addTantalium(new ComparableStack(ModBlocks.turret_fritz, 1), 3); addTantalium(new ComparableStack(ModBlocks.launch_pad, 1), 5); - + makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 3), new ComparableStack(ModBlocks.hadron_coil_neodymium, 8), @@ -1120,7 +1121,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new ComparableStack(ModItems.circuit, 50, EnumCircuitType.CAPACITOR_BOARD) }, 600); - + makeRecipe(new ComparableStack(ModBlocks.rbmk_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 32), @@ -1129,7 +1130,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 20, EnumCircuitType.CAPACITOR_BOARD), new ComparableStack(ModItems.crt_display, 8), }, 300); - + makeRecipe(new ComparableStack(ModBlocks.rbmk_crane_console, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 16), new OreDictStack(AL.plate528(), 8), @@ -1137,7 +1138,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC), new ComparableStack(ModItems.circuit, 10, EnumCircuitType.CAPACITOR_BOARD), }, 300); - + makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core, 1), new AStack[] { new ComparableStack(ModBlocks.machine_battery, 3), new ComparableStack(ModBlocks.steel_scaffold, 10), @@ -1146,7 +1147,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.circuit, 15, EnumCircuitType.CAPACITOR_BOARD), }, 200); - + makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core_large, 1), new AStack[] { new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModBlocks.steel_scaffold, 10), @@ -1155,7 +1156,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.circuit, 25, EnumCircuitType.CAPACITOR_BOARD), }, 200); - + makeRecipe(new ComparableStack(ModBlocks.struct_soyuz_core, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 5), new ComparableStack(ModBlocks.steel_scaffold, 24), @@ -1166,7 +1167,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 100, EnumCircuitType.CAPACITOR_BOARD), }, 200); } - + makeRecipe(new ComparableStack(ModBlocks.machine_fracking_tower), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModBlocks.concrete_smooth, 64), @@ -1177,7 +1178,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.tank_steel, 24), new ComparableStack(ModItems.pipes_steel, 2) }, 600); - + makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 16), !exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()), @@ -1185,7 +1186,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(NB.ingot(), 2), new ComparableStack(ModItems.catalyst_clay, 12), }, 300); - + makeRecipe(new ComparableStack(ModBlocks.machine_liquefactor), new AStack[] { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 12), @@ -1195,7 +1196,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.catalyst_clay, 4), new ComparableStack(ModItems.coil_tungsten, 8) }, 200); - + makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] { new OreDictStack(ANY_CONCRETE.any(), 8), new OreDictStack(AL.plate528(), 12), @@ -1205,7 +1206,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.catalyst_clay, 4), new ComparableStack(ModItems.coil_copper, 4) }, 200); - + makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(RUBBER.ingot(), 8), @@ -1214,7 +1215,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.thermo_element, 8), new ComparableStack(ModItems.tank_steel, 3) }, 200); - + makeRecipe(new ComparableStack(ModBlocks.transition_seal, 1), new AStack[]{ new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), @@ -1243,13 +1244,13 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack("dyeWhite", 2)}, 200); 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(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(BIGMT.plateCast(), 16), new OreDictStack(CU.plateWelded(), 12), @@ -1261,13 +1262,13 @@ public class AssemblerRecipes extends SerializableRecipe { }, 1200); } } - + for(NTMMaterial mat : Mats.orderedList) { if(mat.autogen.contains(MaterialShapes.CASTPLATE) && mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) { makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000); } } - + // WarTec compatibility code try { Class wartecmodAssemblerRecipes = ClassLoader.getSystemClassLoader().loadClass("com.wartec.wartecmod.inventory.wartecmodAssemblerRecipes"); @@ -1278,18 +1279,18 @@ public class AssemblerRecipes extends SerializableRecipe { MainRegistry.logger.info("WarTec recipes loaded!"); } catch(Exception e) { } } - + public static void makeRecipe(ComparableStack out, AStack[] in, int duration) { makeRecipe(out, in, duration, ModItems.template_folder); } - + public static void makeRecipe(ComparableStack out, AStack[] in, int duration, Item... folder) { - + if(out == null || Item.itemRegistry.getNameForObject(out.item) == null) { MainRegistry.logger.error("Canceling assembler registration, item was null!"); return; } - + AssemblerRecipe recipe = new AssemblerRecipe(in, duration, folder); recipes.put(out, recipe); recipeList.add(out); @@ -1314,13 +1315,13 @@ public class AssemblerRecipes extends SerializableRecipe { @Override public void readRecipe(JsonElement recipe) { JsonObject obj = recipe.getAsJsonObject(); - + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); AStack[] input = this.readAStackArray(obj.get("input").getAsJsonArray()); int duration = obj.get("duration").getAsInt(); - + if(output == null || output.getItem() == ModItems.nothing) return; - + if(obj.has("folders")) { JsonArray array = obj.get("folders").getAsJsonArray(); List items = new ArrayList(); @@ -1337,46 +1338,46 @@ public class AssemblerRecipes extends SerializableRecipe { @Override public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { Entry entry = (Entry) recipe; - + writer.name("output"); this.writeItemStack(entry.getKey().toStack(), writer); writer.name("input").beginArray(); for(AStack stack : entry.getValue().ingredients) this.writeAStack(stack, writer); writer.endArray(); writer.name("duration").value(entry.getValue().time); - + if(entry.getValue().folders.size() != 1 || !entry.getValue().folders.contains(ModItems.template_folder)) { writer.name("folders").beginArray(); for(Item folder : entry.getValue().folders) writer.value(Item.itemRegistry.getNameForObject(folder)); writer.endArray(); } } - + public static ItemStack getOutputFromTempate(ItemStack stack) { - + if(stack != null && stack.getItem() instanceof ItemAssemblyTemplate) { - + ComparableStack comp = ItemAssemblyTemplate.readType(stack); - + //NEW if(comp != null) { return comp.toStack(); } - + //LEGACY int i = stack.getItemDamage(); if(i >= 0 && i < recipeList.size()) { return recipeList.get(i).toStack(); } } - + return null; } - + public static List getRecipeFromTempate(ItemStack stack) { - + if(stack != null && stack.getItem() instanceof ItemAssemblyTemplate) { - + //NEW ComparableStack compStack = ItemAssemblyTemplate.readType(stack); if(compStack != null) { @@ -1385,12 +1386,12 @@ public class AssemblerRecipes extends SerializableRecipe { AStack[] ret = recipe.ingredients; return ret == null ? null : Arrays.asList(ret); } - + //LEGACY int i = stack.getItemDamage(); if(i >= 0 && i < recipeList.size()) { ItemStack out = recipeList.get(i).toStack(); - + if(out != null) { ComparableStack comp = new ComparableStack(out); AssemblerRecipe recipe = recipes.get(comp); @@ -1400,55 +1401,55 @@ public class AssemblerRecipes extends SerializableRecipe { } } } - + return null; } - + public static void addTantalium(ComparableStack out, int amount) { - + AssemblerRecipe recipe = recipes.get(out); - + if(recipe != null) { - + AStack[] news = new AStack[recipe.ingredients.length + 1]; - + for(int i = 0; i < recipe.ingredients.length; i++) news[i] = recipe.ingredients[i]; - + news[news.length - 1] = new ComparableStack(ModItems.circuit, amount, EnumCircuitType.CAPACITOR_BOARD); recipe.ingredients = news; } } public static Map> getRecipes() { - + Map> recipes = new HashMap(); - + for(Entry entry : AssemblerRecipes.recipes.entrySet()) { - + List value = new ArrayList(); AssemblerRecipe recipe = entry.getValue(); - + for(AStack o : recipe.ingredients) { value.add(o.extractForNEI()); } - + recipes.put(entry.getKey().toStack(), value); } - + return recipes; } - + public static class AssemblerRecipe { - + public AStack[] ingredients; public int time; public HashSet folders; - + public AssemblerRecipe(AStack[] ingredients, int time) { this(ingredients, time, ModItems.template_folder); } - + public AssemblerRecipe(AStack[] ingredients, int time, Item... folder) { this.ingredients = ingredients; this.time = time; diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 7a44817d3..a84a03f30 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -390,6 +390,10 @@ public class ChemplantRecipes extends SerializableRecipe { new ItemStack(ModItems.niter, 3)) .outputFluids(new FluidStack(Fluids.SALIENT, 250))); + recipes.add(new ChemRecipe(104, "RUSTY_DECO_STEEL", 100) + .inputItems(new ComparableStack(ModBlocks.deco_steel, 8)) + .inputFluids(new FluidStack(Fluids.WATER, 1000)) + .outputItems(new ItemStack(ModBlocks.deco_rusty_steel, 8))); } public static void registerOtherOil() { 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 b30c58bee..fca1efb87 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -40,7 +40,7 @@ public class AnvilRecipes extends SerializableRecipe { public static List smithingRecipes = new ArrayList(); public static List constructionRecipes = new ArrayList(); - + public static void register() { registerSmithing(); } @@ -49,7 +49,7 @@ public class AnvilRecipes extends SerializableRecipe { @Override public Object getRecipeObject() { return constructionRecipes; } @Override public void deleteRecipes() { constructionRecipes.clear(); } @Override public void registerDefaults() { registerConstruction(); } - + /* * ////// // // // ////// // // // // // ////// * // //// //// // // // // // //// // // @@ -58,9 +58,9 @@ public class AnvilRecipes extends SerializableRecipe { * ////// // // // // // // // // // ////// */ public static void registerSmithing() { - + Block[] anvils = new Block[]{ModBlocks.anvil_iron, ModBlocks.anvil_lead}; - + for(Block anvil : anvils) { smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_steel, 1), new ComparableStack(anvil), new OreDictStack(STEEL.ingot(), 10))); smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_desh, 1), new ComparableStack(anvil), new OreDictStack(DESH.ingot(), 10))); @@ -72,14 +72,14 @@ public class AnvilRecipes extends SerializableRecipe { smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_dnt, 1), new ComparableStack(anvil), new OreDictStack(DNT.ingot(), 10))); smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_osmiridium, 1), new ComparableStack(anvil), new OreDictStack(OSMIRIDIUM.ingot(), 10))); } - + for(int i = 0; i < 9; i++) smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_steel_dusted, 1, i + 1), new ComparableStack(ModItems.ingot_steel_dusted, 1, i), new ComparableStack(ModItems.ingot_steel_dusted, 1, i))); - + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_chainsteel, 1), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9))); - + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged))); @@ -95,7 +95,7 @@ public class AnvilRecipes extends SerializableRecipe { smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.ingot_gunmetal, 1), new OreDictStack(CU.ingot()), new OreDictStack(AL.ingot()))); - + smithingRecipes.add(new AnvilSmithingMold(0, new OreDictStack(GOLD.nugget()), new OreDictStack("nugget"))); smithingRecipes.add(new AnvilSmithingMold(1, new OreDictStack(U.billet()), new OreDictStack("billet"))); smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot"))); @@ -126,11 +126,11 @@ public class AnvilRecipes extends SerializableRecipe { smithingRecipes.add(new AnvilSmithingMold(13, new ComparableStack(ModItems.pipes_steel), new ItemStack[] {new ItemStack(ModItems.pipes_steel)})); smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1))); smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9))); - + smithingRecipes.add(new AnvilSmithingCyanideRecipe()); smithingRecipes.add(new AnvilSmithingRenameRecipe()); } - + /* * ////// ////// // // ////// ////// //// // // ////// ////// // ////// // // * // // // //// // // // // // // // // // // // // //// // @@ -139,7 +139,7 @@ public class AnvilRecipes extends SerializableRecipe { * ////// ////// // // ////// // // // ////// ////// // // ////// // // */ public static void registerConstruction() { - + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_iron))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GOLD.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_gold))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(TI.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_titanium))).setTier(3)); @@ -166,13 +166,13 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(LAPIS.dust()), new AnvilOutput(new ItemStack(Items.dye, 1, 4))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DIAMOND.dust()), new AnvilOutput(new ItemStack(Items.diamond))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(EMERALD.dust()), new AnvilOutput(new ItemStack(Items.emerald))).setTier(3)); - + registerConstructionRecipes(); registerConstructionAmmo(); registerConstructionUpgrades(); registerConstructionRecycling(); } - + public static void registerConstructionRecipes() { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_aluminium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); @@ -191,13 +191,13 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4), new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1)); for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) { - String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? + String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]); constructionRecipes.add(new AnvilConstructionRecipe( new OreDictStack(key, 3), new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); } - + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), new AnvilOutput(new ItemStack(ModItems.coil_copper_torus))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); @@ -217,7 +217,7 @@ public class AnvilRecipes extends SerializableRecipe { pullFromAssembler(new ComparableStack(ModItems.filter_coal), 2); pullFromAssembler(new ComparableStack(ModItems.thermo_element), 2); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(Blocks.stonebrick, 4), @@ -225,7 +225,7 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(CU.plate(), 4) }, new AnvilOutput(new ItemStack(ModBlocks.machine_difurnace_off))).setTier(1)); - + int ukModifier = 1; constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { @@ -405,7 +405,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 2, EnumCircuitType.VACUUM_TUBE.ordinal()), new ComparableStack(ModItems.sawblade) }, new AnvilOutput(new ItemStack(ModBlocks.machine_autosaw))).setTier(2)); - + pullFromAssembler(new ComparableStack(ModBlocks.machine_diesel), 2); /*constructionRecipes.add(new AnvilConstructionRecipe( @@ -432,14 +432,14 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModBlocks.machine_condenser, 16), new OreDictStack(STEEL.pipe(), 8), }, new AnvilOutput(new ItemStack(ModBlocks.machine_tower_large))).setTier(4)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(Items.bone, 16), new ComparableStack(Items.leather, 4), new ComparableStack(Items.feather, 24) }, new AnvilOutput(new ItemStack(ModItems.wings_limp))).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.sulfur, 12), @@ -448,7 +448,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC.ordinal()) }, new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_extractor))).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.deuterium_filter, 2), @@ -459,7 +459,7 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8), }, new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(ANY_CONCRETE.any(), 2), @@ -468,7 +468,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModItems.coil_copper, 4) }, new AnvilOutput(new ItemStack(ModBlocks.red_pylon_large))).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(ANY_CONCRETE.any(), 8), @@ -477,7 +477,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModItems.coil_copper, 8) }, new AnvilOutput(new ItemStack(ModBlocks.substation, 2))).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plate(), 4), @@ -485,7 +485,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModBlocks.steel_grate, 2) }, new AnvilOutput(new ItemStack(ModBlocks.chimney_brick))).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plate(), 16), @@ -494,7 +494,7 @@ public class AnvilRecipes extends SerializableRecipe { new ComparableStack(ModItems.filter_coal, 4) }, new AnvilOutput(new ItemStack(ModBlocks.chimney_industrial))).setTier(3)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 1), @@ -507,14 +507,14 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(PB.plate528(), 2), new ComparableStack(ModItems.nuclear_waste_vitrified, 10) }, new AnvilOutput(new ItemStack(ModBlocks.vitrified_barrel))).setTier(3)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.man_core, 1), new OreDictStack(BE.ingot(), 4), new ComparableStack(ModItems.screwdriver, 1) }, new AnvilOutput(new ItemStack(ModItems.demon_core_open))).setTier(3)); - + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(DURA.ingot(), 1)}, new AnvilOutput(new ItemStack(ModItems.plate_desh, 4))).setTier(3)); @@ -546,7 +546,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.plate_dineutronium, 4), new ComparableStack(ModItems.particle_sparkticle, 1), new ComparableStack(ModItems.plate_armor_fau, 6)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_dnt))).setTier(7)); - + pullFromAssembler(new ComparableStack(ModItems.plate_mixed, 4), 3); constructionRecipes.add(new AnvilConstructionRecipe( @@ -556,7 +556,7 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(AL.plateWelded(), 2), new OreDictStack(PU239.billet(), 3) }, new AnvilOutput(new ItemStack(ModItems.missile_doomsday))).setTier(5)); - + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u233, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u233))).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u235, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u235))).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_mox_fuel, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_mox))).setTier(4)); @@ -577,7 +577,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_exhaust, 8, i), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron)), new AnvilOutput(new ItemStack(ModItems.plate_polymer))}).setTier(2)); } } - + public static void registerConstructionAmmo() { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2)); @@ -587,7 +587,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 16))).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 17))).setTier(1)); - + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 24))).setTier(2)); @@ -595,10 +595,10 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 26))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); - + pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); } - + public static void registerConstructionUpgrades() { pullFromAssembler(new ComparableStack(ModItems.upgrade_template), 2); pullFromAssembler(new ComparableStack(ModItems.upgrade_speed_1), 2); @@ -626,7 +626,7 @@ public class AnvilRecipes extends SerializableRecipe { pullFromAssembler(new ComparableStack(ModItems.upgrade_nullifier), 4); pullFromAssembler(new ComparableStack(ModItems.upgrade_screm), 4); } - + public static void registerConstructionRecycling() { constructionRecipes.add(new AnvilConstructionRecipe( @@ -648,6 +648,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_tungsten, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_tungsten, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_aluminium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_aluminium, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_steel, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_steel, 1))}).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_rusty_steel, 8), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_steel, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_lead, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_lead, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_beryllium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_asbestos, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_asbestos, 1))}).setTier(1)); @@ -659,7 +660,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.ingot_copper, 6)) } ).setTier(2)); - + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.heater_oven), new AnvilOutput[] { @@ -745,7 +746,7 @@ public class AnvilRecipes extends SerializableRecipe { 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)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -756,7 +757,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.wire_fine, 2, Mats.MAT_COPPER.id)), new AnvilOutput(new ItemStack(ModItems.wire_fine, 2, Mats.MAT_GOLD.id), 0.25F), new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.25F) - + } ).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -769,7 +770,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.battery_generic, 1), 0.25F), new AnvilOutput(new ItemStack(ModItems.battery_advanced, 1), 0.1F), new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.01F) - + } ).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -782,7 +783,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.battery_lithium, 1), 0.25F), new AnvilOutput(new ItemStack(ModItems.battery_sc_uranium, 1), 0.1F), new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.05F) - + } ).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -796,7 +797,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.5F), new AnvilOutput(new ItemStack(ModItems.gem_alexandrite, 1), 0.25F), new AnvilOutput(new ItemStack(ModItems.flame_pony, 1), 0.01F) - + } ).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( @@ -840,7 +841,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.plate_steel, 2), 0.5F), new AnvilOutput(new ItemStack(ModItems.plate_polymer, 2), 0.25F), new AnvilOutput(new ItemStack(ModItems.scrap, 1)) - + } ).setTier(1)); @@ -870,7 +871,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.lithium, 1)), new AnvilOutput(new ItemStack(ModItems.cell_empty, 1)) }).setTier(2)); - + //RBMK constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.rbmk_moderator), new AnvilOutput[] { @@ -929,9 +930,9 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModBlocks.rbmk_blank, 1)), new AnvilOutput(new ItemStack(ModBlocks.crate_steel, 2)) }).setTier(4)); - + if(!GeneralConfig.enable528) { - + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.rbmk_rod), new AnvilOutput[] { new AnvilOutput(new ItemStack(ModBlocks.rbmk_blank, 1)), @@ -1002,7 +1003,7 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(ModItems.coil_copper, 2)), new AnvilOutput(new ItemStack(ModItems.ingot_steel, 4)) }).setTier(3)); - + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.yellow_barrel), new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.tank_steel, 1)), @@ -1024,91 +1025,91 @@ public class AnvilRecipes extends SerializableRecipe { new AnvilOutput(new ItemStack(Items.experience_bottle, 1), 0.5F) }).setTier(1)); } - + public static void pullFromAssembler(ComparableStack result, int tier) { - + AssemblerRecipe recipe = AssemblerRecipes.recipes.get(result); - + if(recipe != null) { constructionRecipes.add(new AnvilConstructionRecipe(recipe.ingredients, new AnvilOutput(result.toStack())).setTier(tier)); } } - + public static List getSmithing() { return smithingRecipes; } - + public static List getConstruction() { return constructionRecipes; } - + public static class AnvilConstructionRecipe { public List input = new ArrayList(); public List output = new ArrayList(); public int tierLower = 0; public int tierUpper = -1; OverlayType overlay = OverlayType.NONE; - + public AnvilConstructionRecipe(AStack input, AnvilOutput output) { this.input.add(input); this.output.add(output); this.setOverlay(OverlayType.SMITHING); //preferred overlay for 1:1 conversions is smithing } - + public AnvilConstructionRecipe(AStack[] input, AnvilOutput output) { for(AStack stack : input) this.input.add(stack); this.output.add(output); this.setOverlay(OverlayType.CONSTRUCTION); //preferred overlay for many:1 conversions is construction } - + public AnvilConstructionRecipe(AStack input, AnvilOutput[] output) { this.input.add(input); for(AnvilOutput out : output) this.output.add(out); this.setOverlay(OverlayType.RECYCLING); //preferred overlay for 1:many conversions is recycling } - + public AnvilConstructionRecipe(AStack[] input, AnvilOutput[] output) { for(AStack stack : input) this.input.add(stack); for(AnvilOutput out : output) this.output.add(out); this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions } - + public AnvilConstructionRecipe(AStack[] input, Pair[] output) { for(AStack stack : input) this.input.add(stack); for(Pair out : output) this.output.add(new AnvilOutput(out.getKey(), out.getValue())); this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions } - + public AnvilConstructionRecipe setTier(int tier) { this.tierLower = tier; if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = 1; return this; } - + public AnvilConstructionRecipe setTierRange(int lower, int upper) { this.tierLower = lower; this.tierUpper = upper; if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = this.tierUpper = 1; return this; } - + public boolean isTierValid(int tier) { - + if(this.tierUpper == -1) return tier >= this.tierLower; - + return tier >= this.tierLower && tier <= this.tierUpper; } - + public AnvilConstructionRecipe setOverlay(OverlayType overlay) { this.overlay = overlay; return this; } - + public OverlayType getOverlay() { return this.overlay; } - + public ItemStack getDisplay() { switch(this.overlay) { case NONE: return this.output.get(0).stack.copy(); @@ -1124,21 +1125,21 @@ public class AnvilRecipes extends SerializableRecipe { } } } - + public static class AnvilOutput { public ItemStack stack; public float chance; - + public AnvilOutput(ItemStack stack) { this(stack, 1F); } - + public AnvilOutput(ItemStack stack, float chance) { this.stack = stack; this.chance = chance; } } - + public static enum OverlayType { NONE, CONSTRUCTION, @@ -1149,38 +1150,38 @@ public class AnvilRecipes extends SerializableRecipe { @Override public void readRecipe(JsonElement recipe) { JsonObject obj = (JsonObject) recipe; - + AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray()); Pair[] outputs = this.readItemStackArrayChance(obj.get("outputs").getAsJsonArray()); int tierLower = obj.get("tierLower").getAsInt(); int tierUpper = obj.has("tierUpper") ? obj.get("tierUpper").getAsInt() : -1; - + OverlayType overlay = OverlayType.NONE; if(obj.has("overlay")) { String overlayName = obj.get("overlay").getAsString(); overlay = OverlayType.valueOf(overlayName); if(overlay == null) overlay = OverlayType.NONE; } - + this.constructionRecipes.add(new AnvilConstructionRecipe(inputs, outputs).setTierRange(tierLower, tierUpper).setOverlay(overlay)); } @Override public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { AnvilConstructionRecipe rec = (AnvilConstructionRecipe) recipe; - + writer.name("inputs").beginArray(); for(AStack stack : rec.input) this.writeAStack(stack, writer); writer.endArray(); - + writer.name("outputs").beginArray(); for(AnvilOutput stack : rec.output) this.writeItemStackChance(new Pair(stack.stack, stack.chance), writer); writer.endArray(); writer.name("tierLower").value(rec.tierLower); writer.name("tierUpper").value(rec.tierUpper); - + writer.name("overlay").value(rec.overlay.name()); } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 6c0ac5d2a..c85c4fefe 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1,2121 +1,2144 @@ - package com.hbm.main; - - import com.hbm.blocks.ModBlocks; - import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; - import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; - import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; - import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; - import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; -import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; -import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; - import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; - import com.hbm.blocks.machine.MachineFan.TileEntityFan; - import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; - import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; - import com.hbm.config.GeneralConfig; - import com.hbm.entity.cart.EntityMinecartCrate; - import com.hbm.entity.cart.EntityMinecartNTM; - import com.hbm.entity.effect.*; - import com.hbm.entity.grenade.*; - import com.hbm.entity.item.*; - import com.hbm.entity.logic.*; - import com.hbm.entity.missile.*; - import com.hbm.entity.missile.EntityMissileTier0.*; - import com.hbm.entity.missile.EntityMissileTier1.*; - import com.hbm.entity.missile.EntityMissileTier2.*; - import com.hbm.entity.missile.EntityMissileTier3.EntityMissileBurst; - import com.hbm.entity.missile.EntityMissileTier3.EntityMissileDrill; - import com.hbm.entity.missile.EntityMissileTier3.EntityMissileInferno; - import com.hbm.entity.missile.EntityMissileTier3.EntityMissileRain; - import com.hbm.entity.missile.EntityMissileTier4.*; - import com.hbm.entity.mob.*; - import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; - import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; - import com.hbm.entity.mob.glyphid.*; - import com.hbm.entity.mob.siege.*; - import com.hbm.entity.particle.*; - import com.hbm.entity.projectile.*; - import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; - import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; - import com.hbm.entity.train.TrainCargoTram; - import com.hbm.entity.train.TrainCargoTramTrailer; - import com.hbm.entity.train.TrainTunnelBore; - import com.hbm.handler.CasingEjector; - import com.hbm.handler.HbmKeybinds; - import com.hbm.handler.HbmKeybinds.EnumKeybind; - import com.hbm.handler.ImpactWorldHandler; - import com.hbm.handler.imc.IMCHandlerNHNEI; - import com.hbm.items.IAnimatedItem; - import com.hbm.items.ModItems; - import com.hbm.items.weapon.sedna.factory.GunFactoryClient; - import com.hbm.lib.RefStrings; - import com.hbm.particle.*; - import com.hbm.particle.helper.ParticleCreators; - import com.hbm.particle.psys.engine.EventHandlerParticleEngine; -import com.hbm.qmaw.QMAWLoader; -import com.hbm.render.anim.BusAnimation; - import com.hbm.render.anim.BusAnimationSequence; - import com.hbm.render.anim.HbmAnimations; - import com.hbm.render.anim.HbmAnimations.Animation; - import com.hbm.render.block.*; - import com.hbm.render.entity.RenderEmpty; - import com.hbm.render.entity.effect.*; - import com.hbm.render.entity.item.*; - import com.hbm.render.entity.mob.*; - import com.hbm.render.entity.projectile.*; - import com.hbm.render.entity.rocket.*; - import com.hbm.render.item.*; - import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType; - import com.hbm.render.item.block.ItemRenderDecoBlock; - import com.hbm.render.item.weapon.*; - import com.hbm.render.loader.HmfModelLoader; - import com.hbm.render.model.ModelPigeon; - import com.hbm.render.tileentity.*; - import com.hbm.render.util.MissilePart; - import com.hbm.render.util.RenderInfoSystem; - import com.hbm.render.util.RenderInfoSystem.InfoEntry; - import com.hbm.render.util.RenderOverhead; - import com.hbm.render.util.RenderOverhead.Marker; - import com.hbm.sound.AudioWrapper; - import com.hbm.sound.AudioWrapperClient; - import com.hbm.tileentity.TileEntityDoorGeneric; - import com.hbm.tileentity.bomb.*; - import com.hbm.tileentity.deco.*; - import com.hbm.tileentity.machine.*; -import com.hbm.tileentity.machine.albion.*; -import com.hbm.tileentity.machine.oil.*; - import com.hbm.tileentity.machine.rbmk.*; - import com.hbm.tileentity.machine.storage.*; - import com.hbm.tileentity.network.*; - import com.hbm.tileentity.turret.*; - import com.hbm.util.BobMathUtil; - import com.hbm.util.ColorUtil; - import com.hbm.util.fauxpointtwelve.BlockPos; - import com.hbm.wiaj.cannery.Jars; - import cpw.mods.fml.client.registry.ClientRegistry; - import cpw.mods.fml.client.registry.RenderingRegistry; - import cpw.mods.fml.common.FMLCommonHandler; - import cpw.mods.fml.relauncher.ReflectionHelper; - import net.minecraft.block.Block; - import net.minecraft.client.Minecraft; - import net.minecraft.client.audio.PositionedSoundRecord; - import net.minecraft.client.model.ModelChicken; - import net.minecraft.client.particle.EntityCloudFX; - import net.minecraft.client.particle.*; - import net.minecraft.client.renderer.entity.RenderMinecart; - import net.minecraft.client.renderer.entity.RenderSnowball; - import net.minecraft.client.renderer.texture.TextureManager; - import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - import net.minecraft.client.resources.IReloadableResourceManager; - import net.minecraft.client.resources.Language; - import net.minecraft.entity.Entity; - import net.minecraft.entity.EntityLivingBase; - import net.minecraft.entity.player.EntityPlayer; - import net.minecraft.init.Blocks; - import net.minecraft.init.Items; - import net.minecraft.item.Item; - import net.minecraft.item.ItemBlock; - import net.minecraft.item.ItemStack; - import net.minecraft.nbt.NBTTagCompound; - import net.minecraft.util.MovingObjectPosition; - import net.minecraft.util.MovingObjectPosition.MovingObjectType; - import net.minecraft.util.ResourceLocation; - import net.minecraft.util.Vec3; - import net.minecraft.world.World; - import net.minecraftforge.client.MinecraftForgeClient; - import net.minecraftforge.client.model.AdvancedModelLoader; - import net.minecraftforge.common.MinecraftForge; - import paulscode.sound.SoundSystemConfig; - - import java.awt.*; - import java.net.URI; - import java.util.List; - import java.util.*; - import java.util.Map.Entry; - -public class ClientProxy extends ServerProxy { - - public RenderInfoSystem theInfoSystem = new RenderInfoSystem(); - - /** Runs just before item an block init */ - @Override - public void registerPreRenderInfo() { - AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); - } - - /** Runs right after item and block init */ - @Override - public void registerRenderInfo() { - - registerClientEventHandler(new ModEventHandlerClient()); - registerClientEventHandler(new ModEventHandlerRenderer()); - registerClientEventHandler(new EventHandlerParticleEngine()); - registerClientEventHandler(theInfoSystem); - - registerTileEntitySpecialRenderer(); - registerItemRenderer(); - registerEntityRenderer(); - registerBlockRenderer(); - - Jars.initJars(); - - ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(new QMAWLoader()); - - if(GeneralConfig.enableSoundExtension) { - SoundSystemConfig.setNumberNormalChannels(GeneralConfig.normalSoundChannels); - SoundSystemConfig.setNumberStreamingChannels(50); - } - } - - private void registerClientEventHandler(Object handler) { - MinecraftForge.EVENT_BUS.register(handler); - FMLCommonHandler.instance().bus().register(handler); - } - - @Override - public void handleNHNEICompat(){ - IMCHandlerNHNEI.IMCSender(); - } - - @Override - public void registerGunCfg() { - GunFactoryClient.init(); - } - - @Override - public void registerTileEntitySpecialRenderer() { - //test crap - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityObjTester.class, new RendererObjTester()); - //deco - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoPoleSatelliteReceiver.class, new RenderPoleSatelliteReceiver()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlock.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBroadcaster.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGeiger.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioRec.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadiobox.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatDock.class, new RenderDecoBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAlt.class, new RenderDecoBlockAlt()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltG.class, new RenderDecoBlockAlt()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFloodlight.class, new RenderFloodlight()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySkeletonHolder.class, new RenderSkeletonHolder()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlushie.class, new RenderPlushie()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); - //bombs - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeCustom.class, new RenderNukeCustom()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeSolinium.class, new RenderNukeSolinium()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN2.class, new RenderNukeN2()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMan.class, new RenderNukeMan()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBalefire.class, new RenderNukeFstbmb()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMike.class, new RenderNukeMike()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeTsar.class, new RenderNukeTsar()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeFleija.class, new RenderNukeFleija()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrashedBomb.class, new RenderCrashedBomb()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukePrototype.class, new RenderNukePrototype()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharge.class, new RenderExplosiveCharge()); - //turrets - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretChekhov.class, new RenderTurretChekhov()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFriendly.class, new RenderTurretFriendly()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretJeremy.class, new RenderTurretJeremy()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretTauon.class, new RenderTurretTauon()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretRichard.class, new RenderTurretRichard()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHoward.class, new RenderTurretHoward()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHowardDamaged.class, new RenderTurretHowardDamaged()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretMaxwell.class, new RenderTurretMaxwell()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFritz.class, new RenderTurretFritz()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretBrandon.class, new RenderTurretBrandon()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretArty.class, new RenderTurretArty()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHIMARS.class, new RenderTurretHIMARS()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentry.class, new RenderTurretSentry()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentryDamaged.class, new RenderTurretSentry()); - //mines - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLandmine.class, new RenderLandmine()); - //machines - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCentrifuge.class, new RenderCentrifuge()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasCent.class, new RenderCentrifuge()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFEL.class, new RenderFEL()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySILEX.class, new RenderSILEX()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineUF6Tank.class, new RenderUF6Tank()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePuF6Tank.class, new RenderPuF6Tank()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineIGenerator.class, new RenderIGenerator()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPASource.class, new RenderPASource()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPABeamline.class, new RenderPABeamline()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPARFC.class, new RenderPARFC()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPAQuadrupole.class, new RenderPAQuadrupole()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADipole.class, new RenderPADipole()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADetector.class, new RenderPADetector()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExposureChamber.class, new RenderExposureChamber()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemfac.class, new RenderAssemfac()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineChemplant.class, new RenderChemplant()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineChemfac.class, new RenderChemfac()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFluidTank.class, new RenderFluidTank()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineBAT9000.class, new RenderBAT9000()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOrbus.class, new RenderOrbus()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRefinery.class, new RenderRefinery()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFractionTower.class, new RenderFractionTower()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySpacer.class, new RenderSpacer()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpjack.class, new RenderPumpjack()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFrackingTower.class, new RenderFrackingTower()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbofan.class, new RenderTurbofan()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbineGas.class, new RenderTurbineGas()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLPW2.class, new RenderLPW2()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAmmoPress.class, new RenderAmmoPress()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRotaryFurnace.class, new RenderRotaryFurnace()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCrystallizer.class, new RenderCrystallizer()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMicrowave.class, new RenderMicrowave()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRTG.class, new RenderRTG()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiniRTG.class, new RenderRTG()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFF.class, new RenderForceField()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForceField.class, new RenderMachineForceField()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFENSU.class, new RenderFENSU()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLargeTurbine.class, new RenderBigTurbine()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineReactorBreeding.class, new RenderBreeder()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarBoiler.class, new RenderSolarBoiler()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStorageDrum.class, new RenderStorageDrum()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChungus.class, new RenderChungus()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerLarge.class, new RenderLargeTower()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerSmall.class, new RenderSmallTower()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCondenserPowered.class, new RenderCondenser()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDeuteriumTower.class, new RenderDeuteriumTower()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolidifier.class, new RenderSolidifier()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCompressor.class, new RenderCompressor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDrain.class, new RenderDrain()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadiolysis.class, new RenderRadiolysis()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityElectrolyser.class, new RenderElectrolyser()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceIron.class, new RenderFurnaceIron()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceSteel.class, new RenderFurnaceSteel()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceCombination.class, new RenderFurnaceCombination()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAshpit.class, new RenderAshpit()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterHeatex.class, new RenderHeaterHeatex()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStirling.class, new RenderStirling()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySawmill.class, new RenderSawmill()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrucible.class, new RenderCrucible()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoiler.class, new RenderBoiler()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoilerIndustrial.class, new RenderIndustrialBoiler()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine()); - 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()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHydrotreater.class, new RenderHydrotreater()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePyroOven.class, new RenderPyroOven()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcWelder.class, new RenderArcWelder()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolderingStation.class, new RenderSolderingStation()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcFurnaceLarge.class, new RenderArcFurnace()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineWoodBurner.class, new RenderWoodBurner()); - //Foundry - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineStrandCaster.class, new RenderStrandCaster()); - //ZIRNOX - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorZirnox.class, new RenderZirnox()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityZirnoxDestroyed.class, new RenderZirnoxDestroyed()); - //DFC - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreEmitter.class, new RenderCoreComponent()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreReceiver.class, new RenderCoreComponent()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreInjector.class, new RenderCoreComponent()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreStabilizer.class, new RenderCoreComponent()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCore.class, new RenderCore()); - //missile blocks - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPad.class, new RenderLaunchPad()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPadRusted.class, new RenderLaunchPadRusted()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPadLarge.class, new RenderLaunchPadLarge()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMissileAssembly.class, new RenderMissileAssembly()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCompactLauncher.class, new RenderCompactLauncher()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchTable.class, new RenderLaunchTable()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzLauncher.class, new RenderSoyuzLauncher()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzCapsule.class, new RenderCapsule()); - //network - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnector.class, new RenderConnector()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); - //chargers - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler()); - //DecoContainer - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); - //multiblocks - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzStruct.class, new RenderWatzMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFStruct.class, new RenderICFMultiblock()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCustomMachine.class, new RenderCustomMachine()); - //RBMK - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlManual.class, new RenderRBMKControlRod()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlAuto.class, new RenderRBMKControlRod()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCraneConsole.class, new RenderCraneConsole()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAbsorber.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKBlank.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKBoiler.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKModerator.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKOutgasser.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKReflector.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKCooler.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKStorage.class, new RenderRBMKLid()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKHeater.class, new RenderRBMKLid()); - //ITER - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICF.class, new RenderICF()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFController.class, new RenderICFController()); - //Watz - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); - //doors - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDoorGeneric.class, new RenderDoorGeneric()); - } - - @Override - public void registerItemRenderer() { - - ItemRenderLibrary.init(); - - for(Entry entry : ItemRenderLibrary.renderers.entrySet()) - MinecraftForgeClient.registerItemRenderer(entry.getKey(), entry.getValue()); - - //this bit registers an item renderer for every existing tile entity renderer that implements IItemRendererProvider - Iterator iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator(); - while(iterator.hasNext()) { - Object renderer = iterator.next(); - if(renderer instanceof IItemRendererProvider) { - IItemRendererProvider prov = (IItemRendererProvider) renderer; - for(Item item : prov.getItemsForRenderer()) { - MinecraftForgeClient.registerItemRenderer(item, prov.getRenderer()); - } - } - } - - //universal JSON translated items - double[] rtp = new double[] {0, 180, -90}; - double[] ttp_high = new double[] {0.125, 0.625, 0}; - double[] ttp_low = new double[] {0, 0.75, 0}; - double[] stp = new double[] {1.7, 1.7, 0.85}; - double[] rfp = new double[] {0, 180, -90}; - double[] tfp = new double[] {1.13, 5.2, -0.26}; - double[] sfp = new double[] {1.36, 1.36, 0.68}; - double[] rir = new double[] {0, 0, 0}; - double[] tir = new double[] {0, 0, 0}; - double[] sir = new double[] {1, 1, 1}; - - MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.desh_sword, new ItemRenderTransformer(rtp, ttp_low, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.cobalt_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.cobalt_decorated_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.starmetal_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.schrabidium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.cmb_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - MinecraftForgeClient.registerItemRenderer(ModItems.dnt_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); - - double[] sfp_default = new double[] {1, 1, 1}; - double[] tfp_default = new double[] {0, 0, 0}; - double[] sir_default = new double[] {1, 1, 1}; - - MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.volcanic_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.volcanic_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.chlorophyte_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.chlorophyte_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.mese_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - MinecraftForgeClient.registerItemRenderer(ModItems.mese_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - - ItemRenderMissileGeneric.init(); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_test, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_taint, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_micro, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_bhole, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_schrabidium, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_emp, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_stealth, new ItemRenderMissileGeneric(RenderMissileType.TYPE_STEALTH)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_generic, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_incendiary, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_cluster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_buster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_decoy, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_anti_ballistic, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ABM)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_incendiary_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_cluster_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_buster_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_emp_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_burst, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_inferno, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_rain, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_drill, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear_cluster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_volcano, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); - - //templates - MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); - MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); - MinecraftForgeClient.registerItemRenderer(ModItems.crucible_template, new ItemRenderTemplate()); - //hot stuff - MinecraftForgeClient.registerItemRenderer(ModItems.ingot_steel_dusted, new ItemRendererHot()); - MinecraftForgeClient.registerItemRenderer(ModItems.ingot_chainsteel, new ItemRendererHot()); - MinecraftForgeClient.registerItemRenderer(ModItems.ingot_meteorite, new ItemRendererHot()); - MinecraftForgeClient.registerItemRenderer(ModItems.ingot_meteorite_forged, new ItemRendererHot()); - MinecraftForgeClient.registerItemRenderer(ModItems.blade_meteorite, new ItemRendererHot()); - //meteorite swords - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_seared, new ItemRendererMeteorSword(1.0F, 0.5F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_reforged, new ItemRendererMeteorSword(0.5F, 1.0F, 1.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_hardened, new ItemRendererMeteorSword(0.25F, 0.25F, 0.25F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_alloyed, new ItemRendererMeteorSword(0.0F, 0.5F, 1.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_machined, new ItemRendererMeteorSword(1.0F, 1.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_treated, new ItemRendererMeteorSword(0.5F, 1.0F, 0.5F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_etched, new ItemRendererMeteorSword(1.0F, 1.0F, 0.5F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_bred, new ItemRendererMeteorSword(0.5F, 0.5F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_irradiated, new ItemRendererMeteorSword(0.75F, 1.0F, 0.0F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_fused, new ItemRendererMeteorSword(1.0F, 0.0F, 0.5F)); - MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_baleful, new ItemRendererMeteorSword(0.0F, 1.0F, 0.0F)); - //swords and hammers - MinecraftForgeClient.registerItemRenderer(ModItems.redstone_sword, new ItemRenderRedstoneSword()); - MinecraftForgeClient.registerItemRenderer(ModItems.big_sword, new ItemRenderBigSword()); - MinecraftForgeClient.registerItemRenderer(ModItems.shimmer_sledge, new ItemRenderShim()); - MinecraftForgeClient.registerItemRenderer(ModItems.shimmer_axe, new ItemRenderShim()); - MinecraftForgeClient.registerItemRenderer(ModItems.stopsign, new ItemRenderShim()); - MinecraftForgeClient.registerItemRenderer(ModItems.sopsign, new ItemRenderShim()); - MinecraftForgeClient.registerItemRenderer(ModItems.chernobylsign, new ItemRenderShim()); - MinecraftForgeClient.registerItemRenderer(ModItems.wood_gavel, new ItemRenderGavel()); - MinecraftForgeClient.registerItemRenderer(ModItems.lead_gavel, new ItemRenderGavel()); - MinecraftForgeClient.registerItemRenderer(ModItems.diamond_gavel, new ItemRenderGavel()); - MinecraftForgeClient.registerItemRenderer(ModItems.mese_gavel, new ItemRenderGavel()); - MinecraftForgeClient.registerItemRenderer(ModItems.crucible, new ItemRenderCrucible()); - MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); - MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); - //guns - MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); - MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); - //multitool - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_ext, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_miner, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_hit, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_beam, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_sky, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_mega, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_joule, new ItemRenderMultitool()); - MinecraftForgeClient.registerItemRenderer(ModItems.multitool_decon, new ItemRenderMultitool()); - //blocks - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_roof), new ItemRenderDecoBlock()); - } - - @Override - public void registerEntityRenderer() { - //projectiles - RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); - RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); - RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); - RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); - RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); - RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); - RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); - RenderingRegistry.registerEntityRenderingHandler(EntityExplosiveBeam.class, new RenderBeam5()); - RenderingRegistry.registerEntityRenderingHandler(EntityModBeam.class, new RenderBeam6()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeLaser.class, new RenderSiegeLaser()); - RenderingRegistry.registerEntityRenderingHandler(EntityBombletZeta.class, new RenderBombletTheta()); - RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new RenderMeteor()); - RenderingRegistry.registerEntityRenderingHandler(EntityBoxcar.class, new RenderBoxcar()); - RenderingRegistry.registerEntityRenderingHandler(EntityDuchessGambit.class, new RenderBoxcar()); - RenderingRegistry.registerEntityRenderingHandler(EntityBuilding.class, new RenderBoxcar()); - RenderingRegistry.registerEntityRenderingHandler(EntityTorpedo.class, new RenderBoxcar()); - RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber()); - RenderingRegistry.registerEntityRenderingHandler(EntityC130.class, new RenderC130()); - RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); - RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); - RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityBobmazon.class, new RenderMinerRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityTom.class, new RenderTom()); - RenderingRegistry.registerEntityRenderingHandler(EntityAAShell.class, new RenderMirv()); - RenderingRegistry.registerEntityRenderingHandler(EntityChopperMine.class, new RenderChopperMine()); - RenderingRegistry.registerEntityRenderingHandler(EntityRubble.class, new RenderRubble()); - RenderingRegistry.registerEntityRenderingHandler(EntityShrapnel.class, new RenderShrapnel()); - RenderingRegistry.registerEntityRenderingHandler(EntityFireworks.class, new RenderShrapnel()); - RenderingRegistry.registerEntityRenderingHandler(EntityWaterSplash.class, new RenderEmpty()); - RenderingRegistry.registerEntityRenderingHandler(EntityEMP.class, new RenderEmpty()); - RenderingRegistry.registerEntityRenderingHandler(EntityBeamVortex.class, new RenderVortexBeam()); - RenderingRegistry.registerEntityRenderingHandler(EntityRBMKDebris.class, new RenderRBMKDebris()); - RenderingRegistry.registerEntityRenderingHandler(EntityZirnoxDebris.class, new RenderZirnoxDebris()); - RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryShell.class, new RenderArtilleryShell()); - RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryRocket.class, new RenderArtilleryRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityCog.class, new RenderCog()); - RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); - RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); - RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); - RenderingRegistry.registerEntityRenderingHandler(EntityFireLingering.class, new RenderMist()); - RenderingRegistry.registerEntityRenderingHandler(EntityWaypoint.class, new RenderMist()); - RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); - //grenades - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGeneric.class, new RenderSnowball(ModItems.grenade_generic)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeStrong.class, new RenderSnowball(ModItems.grenade_strong)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFrag.class, new RenderSnowball(ModItems.grenade_frag)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFire.class, new RenderSnowball(ModItems.grenade_fire)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeCluster.class, new RenderSnowball(ModItems.grenade_cluster)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFlare.class, new RenderFlare()); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeElectric.class, new RenderSnowball(ModItems.grenade_electric)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePoison.class, new RenderSnowball(ModItems.grenade_poison)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGas.class, new RenderSnowball(ModItems.grenade_gas)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeSchrabidium.class, new RenderSnowball(ModItems.grenade_schrabidium)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeNuke.class, new RenderSnowball(ModItems.grenade_nuke)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeNuclear.class, new RenderSnowball(ModItems.grenade_nuclear)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePlasma.class, new RenderSnowball(ModItems.grenade_plasma)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeTau.class, new RenderSnowball(ModItems.grenade_tau)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeLemon.class, new RenderSnowball(ModItems.grenade_lemon)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeMk2.class, new RenderGrenade()); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeZOMG.class, new RenderSnowball(ModItems.grenade_zomg)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeASchrab.class, new RenderGrenade()); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePulse.class, new RenderSnowball(ModItems.grenade_pulse)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeShrapnel.class, new RenderSnowball(ModItems.grenade_shrapnel)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBlackHole.class, new RenderSnowball(ModItems.grenade_black_hole)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGascan.class, new RenderSnowball(ModItems.grenade_gascan)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeCloud.class, new RenderSnowball(ModItems.grenade_cloud)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePC.class, new RenderSnowball(ModItems.grenade_pink_cloud)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeSmart.class, new RenderSnowball(ModItems.grenade_smart)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeMIRV.class, new RenderSnowball(ModItems.grenade_mirv)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBreach.class, new RenderSnowball(ModItems.grenade_breach)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBurst.class, new RenderSnowball(ModItems.grenade_burst)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFGeneric.class, new RenderSnowball(ModItems.grenade_if_generic)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHE.class, new RenderSnowball(ModItems.grenade_if_he)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBouncy.class, new RenderSnowball(ModItems.grenade_if_bouncy)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSticky.class, new RenderSnowball(ModItems.grenade_if_sticky)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFImpact.class, new RenderSnowball(ModItems.grenade_if_impact)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFIncendiary.class, new RenderSnowball(ModItems.grenade_if_incendiary)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFToxic.class, new RenderSnowball(ModItems.grenade_if_toxic)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFConcussion.class, new RenderSnowball(ModItems.grenade_if_concussion)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBrimstone.class, new RenderSnowball(ModItems.grenade_if_brimstone)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFMystery.class, new RenderSnowball(ModItems.grenade_if_mystery)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSpark.class, new RenderSnowball(ModItems.grenade_if_spark)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHopwire.class, new RenderSnowball(ModItems.grenade_if_hopwire)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFNull.class, new RenderSnowball(ModItems.grenade_if_null)); - RenderingRegistry.registerEntityRenderingHandler(EntityWastePearl.class, new RenderSnowball(ModItems.nuclear_waste_pearl)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeDynamite.class, new RenderSnowball(ModItems.stick_dynamite)); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBouncyGeneric.class, new RenderGenericGrenade()); - RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeImpactGeneric.class, new RenderGenericGrenade()); - RenderingRegistry.registerEntityRenderingHandler(EntityDisperserCanister.class, new RenderGenericGrenade()); - //missiles - RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileStealth.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileBunkerBuster.class, new RenderMissileGeneric()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileStrong.class, new RenderMissileStrong()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiaryStrong.class, new RenderMissileStrong()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileClusterStrong.class, new RenderMissileStrong()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileBusterStrong.class, new RenderMissileStrong()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileEMPStrong.class, new RenderMissileStrong()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileBurst.class, new RenderMissileHuge()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileInferno.class, new RenderMissileHuge()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileRain.class, new RenderMissileHuge()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileDrill.class, new RenderMissileHuge()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileNuclear.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileMirv.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileVolcano.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); - RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); - RenderingRegistry.registerEntityRenderingHandler(EntityParachuteCrate.class, new RenderParachuteCrate()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileBHole.class, new RenderMissileTaint()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileSchrabidium.class, new RenderMissileTaint()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileEMP.class, new RenderMissileTaint()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileShuttle.class, new RenderMissileShuttle()); - RenderingRegistry.registerEntityRenderingHandler(EntityMissileTest.class, new RenderMissileTaint()); - //effects - RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleija.class, new RenderCloudFleija()); - RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleijaRainbow.class, new RenderCloudRainbow()); - RenderingRegistry.registerEntityRenderingHandler(EntityCloudSolinium.class, new RenderCloudSolinium()); - RenderingRegistry.registerEntityRenderingHandler(EntityCloudTom.class, new RenderCloudTom()); - RenderingRegistry.registerEntityRenderingHandler(EntityFalloutRain.class, new RenderFallout()); - RenderingRegistry.registerEntityRenderingHandler(EntityBlackHole.class, new RenderBlackHole()); - RenderingRegistry.registerEntityRenderingHandler(EntityVortex.class, new RenderBlackHole()); - RenderingRegistry.registerEntityRenderingHandler(EntityRagingVortex.class, new RenderBlackHole()); - RenderingRegistry.registerEntityRenderingHandler(EntityQuasar.class, new RenderQuasar()); - RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast()); - RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear()); - RenderingRegistry.registerEntityRenderingHandler(EntityNukeTorex.class, new RenderTorex()); - //minecarts - RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); - RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); - RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); - RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); - RenderingRegistry.registerEntityRenderingHandler(EntityBoatRubber.class, new RenderBoatRubber()); - //trains - RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); - RenderingRegistry.registerEntityRenderingHandler(BoundingBoxDummyEntity.class, new RenderEmpty()); - RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); - RenderingRegistry.registerEntityRenderingHandler(TrainCargoTramTrailer.class, new RenderTrainCargoTramTrailer()); - RenderingRegistry.registerEntityRenderingHandler(TrainTunnelBore.class, new RenderTunnelBore()); - //items - RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); - RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); - RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); - RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); - RenderingRegistry.registerEntityRenderingHandler(EntityRequestDrone.class, new RenderDeliveryDrone()); - RenderingRegistry.registerEntityRenderingHandler(EntityFallingBlockNT.class, new RenderFallingBlockNT()); - //mobs - RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); - RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); - RenderingRegistry.registerEntityRenderingHandler(EntityCreeperPhosgene.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_phosgene.png", "textures/entity/creeper/creeper_armor.png")); - RenderingRegistry.registerEntityRenderingHandler(EntityCreeperVolatile.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_volatile.png", "textures/entity/creeper/creeper_armor.png")); - RenderingRegistry.registerEntityRenderingHandler(EntityCreeperGold.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_gold.png", "textures/entity/creeper/creeper_armor.png")); - RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); - RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityTaintCrab.class, new RenderTaintCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityMaskMan.class, new RenderMaskMan()); - RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeHead.class, new RenderWormHead()); - RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeBody.class, new RenderWormBody()); - RenderingRegistry.registerEntityRenderingHandler(EntityDuck.class, new RenderDuck(new ModelChicken(), 0.3F)); - RenderingRegistry.registerEntityRenderingHandler(EntityQuackos.class, new RenderQuacc(new ModelChicken(), 7.5F)); - RenderingRegistry.registerEntityRenderingHandler(EntityFBI.class, new RenderFBI()); - RenderingRegistry.registerEntityRenderingHandler(EntityRADBeast.class, new RenderRADBeast()); - RenderingRegistry.registerEntityRenderingHandler(EntityBlockSpider.class, new RenderBlockSpider()); - RenderingRegistry.registerEntityRenderingHandler(EntityUFO.class, new RenderUFO()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeCraft.class, new RenderSiegeCraft()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); - RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphid.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrawler.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBehemoth.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrenda.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBombardier.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); - RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityParasiteMaggot.class, new RenderMaggot()); - RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); - RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); - RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); - RenderingRegistry.registerEntityRenderingHandler(EntityDummy.class, new RenderDummy()); - RenderingRegistry.registerEntityRenderingHandler(EntityUndeadSoldier.class, new RenderUndeadSoldier()); - //"particles" - RenderingRegistry.registerEntityRenderingHandler(EntityChlorineFX.class, new MultiCloudRenderer(new Item[] { ModItems.chlorine1, ModItems.chlorine2, ModItems.chlorine3, ModItems.chlorine4, ModItems.chlorine5, ModItems.chlorine6, ModItems.chlorine7, ModItems.chlorine8 })); - RenderingRegistry.registerEntityRenderingHandler(EntityPinkCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.pc1, ModItems.pc2, ModItems.pc3, ModItems.pc4, ModItems.pc5, ModItems.pc6, ModItems.pc7, ModItems.pc8 })); - RenderingRegistry.registerEntityRenderingHandler(com.hbm.entity.particle.EntityCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.cloud1, ModItems.cloud2, ModItems.cloud3, ModItems.cloud4, ModItems.cloud5, ModItems.cloud6, ModItems.cloud7, ModItems.cloud8 })); - RenderingRegistry.registerEntityRenderingHandler(EntityOrangeFX.class, new MultiCloudRenderer(new Item[] { ModItems.orange1, ModItems.orange2, ModItems.orange3, ModItems.orange4, ModItems.orange5, ModItems.orange6, ModItems.orange7, ModItems.orange8 })); - RenderingRegistry.registerEntityRenderingHandler(EntityFogFX.class, new FogRenderer()); - RenderingRegistry.registerEntityRenderingHandler(EntityEMPBlast.class, new RenderEMPBlast()); - } - - @Override - public void registerBlockRenderer() { - - RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); - RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); - RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); - RenderingRegistry.registerBlockHandler(new RenderSteelWall()); - RenderingRegistry.registerBlockHandler(new RenderSteelCorner()); - RenderingRegistry.registerBlockHandler(new RenderBarrel()); - RenderingRegistry.registerBlockHandler(new RenderFence()); - RenderingRegistry.registerBlockHandler(new RenderBarbedWire()); - RenderingRegistry.registerBlockHandler(new RenderAntennaTop()); - RenderingRegistry.registerBlockHandler(new RenderConserve()); - RenderingRegistry.registerBlockHandler(new RenderConveyor()); - RenderingRegistry.registerBlockHandler(new RenderConveyorChute()); - RenderingRegistry.registerBlockHandler(new RenderConveyorLift()); - RenderingRegistry.registerBlockHandler(new RenderRTGBlock()); - RenderingRegistry.registerBlockHandler(new RenderSpikeBlock()); - RenderingRegistry.registerBlockHandler(new RenderChain()); - RenderingRegistry.registerBlockHandler(new RenderMirror()); - RenderingRegistry.registerBlockHandler(new RenderGrate()); - RenderingRegistry.registerBlockHandler(new RenderPipe()); - RenderingRegistry.registerBlockHandler(new RenderBattery()); - RenderingRegistry.registerBlockHandler(new RenderAnvil()); - RenderingRegistry.registerBlockHandler(new RenderCable()); - RenderingRegistry.registerBlockHandler(new RenderCableClassic()); - RenderingRegistry.registerBlockHandler(new RenderTestPipe()); - RenderingRegistry.registerBlockHandler(new RenderBlockCT()); - RenderingRegistry.registerBlockHandler(new RenderDetCord()); - RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); - RenderingRegistry.registerBlockHandler(new RenderBlockSideRotation()); - RenderingRegistry.registerBlockHandler(new RenderDiode()); - RenderingRegistry.registerBlockHandler(new RenderBoxDuct()); - RenderingRegistry.registerBlockHandler(new RenderBlockDecoModel(ModBlocks.deco_computer.getRenderType(), ResourceManager.deco_computer)); - RenderingRegistry.registerBlockHandler(new RenderReeds()); - RenderingRegistry.registerBlockHandler(new RenderHangingVine()); - RenderingRegistry.registerBlockHandler(new RenderRTTY()); - RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); - RenderingRegistry.registerBlockHandler(new RenderSplitter()); - RenderingRegistry.registerBlockHandler(new RenderCapacitor()); - RenderingRegistry.registerBlockHandler(new RenderPedestal()); - RenderingRegistry.registerBlockHandler(new RenderLight()); - RenderingRegistry.registerBlockHandler(new RenderCRT()); - RenderingRegistry.registerBlockHandler(new RenderToaster()); - RenderingRegistry.registerBlockHandler(new RenderPartitioner()); - - RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); - RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); - RenderingRegistry.registerBlockHandler(new RenderFoundryChannel()); - RenderingRegistry.registerBlockHandler(new RenderFoundryTank()); - RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); - - RenderingRegistry.registerBlockHandler(new RenderRail()); - - RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); - RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); - - RenderingRegistry.registerBlockHandler(new RenderRBMKRod()); - RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); - RenderingRegistry.registerBlockHandler(new RenderRBMKControl()); - RenderingRegistry.registerBlockHandler(new RenderPribris()); - - RenderingRegistry.registerBlockHandler(new RenderBlockWand()); - } - - @Override - public void registerMissileItems() { - - MissilePart.registerAllParts(); - - Iterator it = MissilePart.parts.entrySet().iterator(); - - while(it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - MissilePart part = (MissilePart) pair.getValue(); - MinecraftForgeClient.registerItemRenderer(part.part, new ItemRenderMissilePart(part)); - } - - MinecraftForgeClient.registerItemRenderer(ModItems.missile_custom, new ItemRenderMissile()); - } - - //mk3, only use this one - @Override - public void effectNT(NBTTagCompound data) { - - World world = Minecraft.getMinecraft().theWorld; - - if(world == null) //might i ask why? - return; - - TextureManager man = Minecraft.getMinecraft().renderEngine; - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - int particleSetting = Minecraft.getMinecraft().gameSettings.particleSetting; - Random rand = world.rand; - String type = data.getString("type"); - double x = data.getDouble("posX"); - double y = data.getDouble("posY"); - double z = data.getDouble("posZ"); - - if(ParticleCreators.particleCreators.containsKey(type)) { - ParticleCreators.particleCreators.get(type).makeParticle(world, player, man, rand, x, y, z, data); - return; - } - - // Old MK1 system ported to MK3: - - if("waterSplash".equals(type)) { - for (int i = 0; i < 10; i++) { - EntityCloudFX smoke = new EntityCloudFX(world, x + world.rand.nextGaussian(), y + world.rand.nextGaussian(), z + world.rand.nextGaussian(), 0.0, 0.0, 0.0); - Minecraft.getMinecraft().effectRenderer.addEffect(smoke); - } - } - - if("cloudFX2".equals(type)) { // i have genuinely no idea what used this - EntityCloudFX smoke = new EntityCloudFX(world, x, y, z, 0.0, 0.1, 0.0); - Minecraft.getMinecraft().effectRenderer.addEffect(smoke); - } - - if("ABMContrail".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - // End MK1 porting. - - // Old MK2 system ported to MK3: - - if("launchSmoke".equals(type)) { - ParticleSmokePlume contrail = new ParticleSmokePlume(man, world, x, y, z); - contrail.motionX = data.getDouble("moX"); - contrail.motionY = data.getDouble("moY"); - contrail.motionZ = data.getDouble("moZ"); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - if("exKerosene".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0F, 0F, 0F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - if("exSolid".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.3F, 0.2F, 0.05F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - if("exHydrogen".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.7F, 0.7F, 0.7F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - if("exBalefire".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.2F, 0.7F, 0.2F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - if("radFog".equals(type)) { - ParticleRadiationFog contrail = new ParticleRadiationFog(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - - // End MK2 porting. - - if("missileContrail".equals(type)) { - - if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) return; - - float scale = data.hasKey("scale") ? data.getFloat("scale") : 1F; - double mX = data.getDouble("moX"); - double mY = data.getDouble("moY"); - double mZ = data.getDouble("moZ"); - - /*ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0, 0, 0, scale); - contrail.motionX = mX; - contrail.motionY = mY; - contrail.motionZ = mZ; - Minecraft.getMinecraft().effectRenderer.addEffect(contrail);*/ - - ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x, y, z).setScale(scale); - fx.motionX = mX; - fx.motionY = mY; - fx.motionZ = mZ; - if(data.hasKey("maxAge")) fx.setMaxAge(data.getInteger("maxAge")); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - - if("smoke".equals(type)) { - - String mode = data.getString("mode"); - int count = Math.max(1, data.getInteger("count")); - - if("cloud".equals(mode)) { - - for(int i = 0; i < count; i++) { - ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); - fx.motionY = rand.nextGaussian() * (1 + (count / 100)); - fx.motionX = rand.nextGaussian() * (1 + (count / 150)); - fx.motionZ = rand.nextGaussian() * (1 + (count / 150)); - if(rand.nextBoolean()) fx.motionY = Math.abs(fx.motionY); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("radial".equals(mode)) { - - for(int i = 0; i < count; i++) { - ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); - fx.motionY = rand.nextGaussian() * (1 + (count / 50)); - fx.motionX = rand.nextGaussian() * (1 + (count / 50)); - fx.motionZ = rand.nextGaussian() * (1 + (count / 50)); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("radialDigamma".equals(mode)) { - - Vec3 vec = Vec3.createVectorHelper(2, 0, 0); - vec.rotateAroundY(rand.nextFloat() * (float)Math.PI * 2F); - - for(int i = 0; i < count; i++) { - ParticleDigammaSmoke fx = new ParticleDigammaSmoke(man, world, x, y, z); - fx.motionY = 0; - fx.motionX = vec.xCoord; - fx.motionZ = vec.zCoord; - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - vec.rotateAroundY((float)Math.PI * 2F / (float)count); - } - } - - if("shock".equals(mode)) { - - double strength = data.getDouble("strength"); - - Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); - vec.rotateAroundY(rand.nextInt(360)); - - for(int i = 0; i < count; i++) { - ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); - fx.motionY = 0; - fx.motionX = vec.xCoord; - fx.motionZ = vec.zCoord; - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - vec.rotateAroundY((float)Math.PI * 2F / (float)count); - } - } - - if("shockRand".equals(mode)) { - - double strength = data.getDouble("strength"); - - Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); - vec.rotateAroundY(rand.nextInt(360)); - double r; - - for(int i = 0; i < count; i++) { - r = rand.nextDouble(); - ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); - fx.motionY = 0; - fx.motionX = vec.xCoord * r; - fx.motionZ = vec.zCoord * r; - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - vec.rotateAroundY(360 / count); - } - } - - if("wave".equals(mode)) { - - double strength = data.getDouble("range"); - - Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); - - for(int i = 0; i < count; i++) { - - vec.rotateAroundY((float) Math.toRadians(rand.nextFloat() * 360F)); - - ParticleExSmoke fx = new ParticleExSmoke(man, world, x + vec.xCoord, y, z + vec.zCoord); - fx.maxAge = 50; - fx.motionY = 0; - fx.motionX = 0; - fx.motionZ = 0; - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - vec.rotateAroundY(360 / count); - } - } - } - - if("exhaust".equals(type)) { - - String mode = data.getString("mode"); - - if("soyuz".equals(mode)) { - - if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) - return; - - int count = Math.max(1, data.getInteger("count")); - double width = data.getDouble("width"); - - for(int i = 0; i < count; i++) { - - ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y, z + rand.nextGaussian() * width); - fx.motionY = -0.75 + rand.nextDouble() * 0.5; - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("meteor".equals(mode)) { - - if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) - return; - - int count = Math.max(1, data.getInteger("count")); - double width = data.getDouble("width"); - - for(int i = 0; i < count; i++) { - - ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y + rand.nextGaussian() * width, z + rand.nextGaussian() * width); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - } - - if("fireworks".equals(type)) { - int color = data.getInteger("color"); - char c = (char)data.getInteger("char"); - - ParticleLetter fx = new ParticleLetter(world, x, y, z, color, c); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - for(int i = 0; i < 50; i++) { - EntityFireworkSparkFX blast = new EntityFireworkSparkFX(world, x, y, z, - 0.4 * world.rand.nextGaussian(), - 0.4 * world.rand.nextGaussian(), - 0.4 * world.rand.nextGaussian(), Minecraft.getMinecraft().effectRenderer); - blast.setColour(color); - Minecraft.getMinecraft().effectRenderer.addEffect(blast); - } - } - - if("vanillaburst".equals(type)) { - - double motion = data.getDouble("motion"); - - for(int i = 0; i < data.getInteger("count"); i++) { - - double mX = rand.nextGaussian() * motion; - double mY = rand.nextGaussian() * motion; - double mZ = rand.nextGaussian() * motion; - - EntityFX fx = null; - - if("flame".equals(data.getString("mode"))) { - fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); - } - - if("cloud".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); - } - - if("reddust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.0F, 0.0F, 0.0F); - fx.motionX = mX; - fx.motionY = mY; - fx.motionZ = mZ; - } - - if("bluedust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); - } - - if("greendust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); - } - - if("blockdust".equals(data.getString("mode"))) { - - Block b = Block.getBlockById(data.getInteger("block")); - fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 50 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - } - - if(fx != null) - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("vanillaExt".equals(type)) { - - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - - EntityFX fx = null; - - if("flame".equals(data.getString("mode"))) { - fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); - } - - if("smoke".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); - } - - if("volcano".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); - float scale = 100; - ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a"); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 200 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - fx.noClip = true; - fx.motionY = 2.5 + rand.nextDouble(); - fx.motionX = rand.nextGaussian() * 0.2; - fx.motionZ = rand.nextGaussian() * 0.2; - } - - if("cloud".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); - - if(data.hasKey("r")) { - float rng = rand.nextFloat() * 0.1F; - fx.setRBGColorF(data.getFloat("r") + rng, data.getFloat("g") + rng, data.getFloat("b") + rng); - ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntityCloudFX.class, (EntityCloudFX)fx, 7.5F, "field_70569_a"); - fx.motionX = 0; - fx.motionY = 0; - fx.motionZ = 0; - } - } - - if("reddust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, (float)mX, (float)mY, (float)mZ); - } - - if("bluedust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); - } - - if("greendust".equals(data.getString("mode"))) { - fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); - } - - if("fireworks".equals(data.getString("mode"))) { - fx = new EntityFireworkSparkFX(world, x, y, z, 0, 0, 0, Minecraft.getMinecraft().effectRenderer); - } - - if("largeexplode".equals(data.getString("mode"))) { - - - fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, data.getFloat("size"), 0.0F, 0.0F); - float r = 1.0F - rand.nextFloat() * 0.2F; - fx.setRBGColorF(1F * r, 0.9F * r, 0.5F * r); - - for(int i = 0; i < data.getByte("count"); i++) { - net.minecraft.client.particle.EntityExplodeFX sec = new net.minecraft.client.particle.EntityExplodeFX(world, x, y, z, 0.0F, 0.0F, 0.0F); - float r2 = 1.0F - rand.nextFloat() * 0.5F; - sec.setRBGColorF(0.5F * r2, 0.5F * r2, 0.5F * r2); - sec.multipleParticleScaleBy(i + 1); - Minecraft.getMinecraft().effectRenderer.addEffect(sec); - } - } - - if("townaura".equals(data.getString("mode"))) { - fx = new EntityAuraFX(world, x, y, z, 0, 0, 0); - float color = 0.5F + rand.nextFloat() * 0.5F; - fx.setRBGColorF(0.8F * color, 0.9F * color, 1.0F * color); - fx.setVelocity(mX, mY, mZ); - } - - if("blockdust".equals(data.getString("mode"))) { - - Block b = Block.getBlockById(data.getInteger("block")); - fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); - } - - if("colordust".equals(data.getString("mode"))) { - - Block b = Blocks.wool; - fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); - fx.setRBGColorF(data.getFloat("r"), data.getFloat("g"), data.getFloat("b")); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); - } - - if(fx != null) { - - if(data.getBoolean("noclip")) { - fx.noClip = true; - } - - if(data.getInteger("overrideAge") > 0) { - ReflectionHelper.setPrivateValue(EntityFX.class, fx, data.getInteger("overrideAge"), "particleMaxAge", "field_70547_e"); - } - - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("vanilla".equals(type)) { - - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - world.spawnParticle(data.getString("mode"), x, y, z, mX, mY, mZ); - } - - if("jetpack".equals(type)) { - - if(particleSetting == 2) - return; - - Entity ent = world.getEntityByID(data.getInteger("player")); - - if(ent instanceof EntityPlayer) { - - EntityPlayer p = (EntityPlayer)ent; - - Vec3 vec = Vec3.createVectorHelper(0, 0, -0.25); - Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); - float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); - - vec.rotateAroundY(angle); - offset.rotateAroundY(angle); - - double ix = p.posX + vec.xCoord; - double iy = p.posY + p.eyeHeight - 1; - double iz = p.posZ + vec.zCoord; - double ox = offset.xCoord; - double oz = offset.zCoord; - - double moX = 0; - double moY = 0; - double moZ = 0; - - int mode = data.getInteger("mode"); - - if(mode == 0) { - moY -= 0.2; - } - - if(mode == 1) { - Vec3 look = p.getLookVec(); - - moX -= look.xCoord * 0.1D; - moY -= look.yCoord * 0.1D; - moZ -= look.zCoord * 0.1D; - } - - if(particleSetting == 0) { - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ); - thrust = thrust.normalize(); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); - } - } - } - - double mX2 = BobMathUtil.safeClamp(p.motionX + moX * 2, -5, 5); - double mY2 = BobMathUtil.safeClamp(p.motionY + moY * 2, -5, 5); - double mZ2 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -5, 5); - double mX3 = BobMathUtil.safeClamp(p.motionX + moX * 2, -10, 10); - double mY3 = BobMathUtil.safeClamp(p.motionY + moY * 2, -10, 10); - double mZ3 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -10, 10); - - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, mX2, mY2, mZ2)); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2)); - - if(particleSetting == 0) { - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, mX3, mY3, mZ3)); - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3)); - } - } - } - - if("bnuuy".equals(type)) { - - if(particleSetting == 2) - return; - - Entity ent = world.getEntityByID(data.getInteger("player")); - - if(ent instanceof EntityPlayer) { - - EntityPlayer p = (EntityPlayer)ent; - - Vec3 vec = Vec3.createVectorHelper(0, 0, -0.6); - Vec3 offset = Vec3.createVectorHelper(0.275, 0, 0); - float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); - - vec.rotateAroundY(angle); - offset.rotateAroundY(angle); - - double ix = p.posX + vec.xCoord; - double iy = p.posY + p.eyeHeight - 1 + 0.4; - double iz = p.posZ + vec.zCoord; - double ox = offset.xCoord; - double oz = offset.zCoord; - - if(player.isSneaking()) { - iy += 0.25; - } - - vec = vec.normalize(); - double mult = 0.025D; - double mX = vec.xCoord * mult; - double mZ = vec.zCoord * mult; - - //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, 0, 0, 0)); - //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, 0, 0, 0)); - - for(int i = 0; i < 2; i++) { - net.minecraft.client.particle.EntitySmokeFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox * (i == 0 ? -1 : 1), iy, iz + oz * (i == 0 ? -1 : 1), mX, 0, mZ); - float scale = 0.5F; - ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - } - - if("jetpack_bj".equals(type)) { - - if(particleSetting == 2) - return; - - Entity ent = world.getEntityByID(data.getInteger("player")); - - if(ent instanceof EntityPlayer) { - - EntityPlayer p = (EntityPlayer)ent; - - Vec3 vec = Vec3.createVectorHelper(0, 0, -0.3125); - Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); - float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); - - vec.rotateAroundY(angle); - offset.rotateAroundY(angle); - - double ix = p.posX + vec.xCoord; - double iy = p.posY + p.eyeHeight - 0.9375; - double iz = p.posZ + vec.zCoord; - double ox = offset.xCoord; - double oz = offset.zCoord; - - if(particleSetting == 0) { - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); - } - } - } - - EntityReddustFX dust1 = new EntityReddustFX(world, ix + ox, iy, iz + oz, 0.8F, 0.5F, 1.0F); - EntityReddustFX dust2 = new EntityReddustFX(world, ix - ox, iy, iz - oz, 0.8F, 0.5F, 1.0F); - dust1.setVelocity(p.motionX, p.motionY, p.motionZ); - dust2.setVelocity(p.motionX, p.motionY, p.motionZ); - Minecraft.getMinecraft().effectRenderer.addEffect(dust1); - Minecraft.getMinecraft().effectRenderer.addEffect(dust2); - } - } - - if("jetpack_dns".equals(type)) { - - if(particleSetting == 2) - return; - - Entity ent = world.getEntityByID(data.getInteger("player")); - - if(ent instanceof EntityPlayer) { - - EntityPlayer p = (EntityPlayer)ent; - - Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); - float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); - - offset.rotateAroundY(angle); - - double ix = p.posX; - double iy = p.posY - p.getYOffset() - 0.5D; - double iz = p.posZ; - double ox = offset.xCoord; - double oz = offset.zCoord; - - if(particleSetting == 0) { - Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); - Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); - Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); - MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - - if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - - Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - - Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); - Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - - for(int i = 0; i < (10 - delta.lengthVector()); i++) { - vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); - } - } - } - - EntityReddustFX dust1 = new EntityReddustFX(world, ix + ox, iy, iz + oz, 0.01F, 1.0F, 1.0F); - EntityReddustFX dust2 = new EntityReddustFX(world, ix - ox, iy, iz - oz, 0.01F, 1.0F, 1.0F); - dust1.setVelocity(p.motionX, p.motionY, p.motionZ); - dust2.setVelocity(p.motionX, p.motionY, p.motionZ); - Minecraft.getMinecraft().effectRenderer.addEffect(dust1); - Minecraft.getMinecraft().effectRenderer.addEffect(dust2); - } - } - - if("muke".equals(type)) { - - ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); - ParticleMukeFlash flash = new ParticleMukeFlash(man, world, x, y, z, data.getBoolean("balefire")); - - Minecraft.getMinecraft().effectRenderer.addEffect(wave); - Minecraft.getMinecraft().effectRenderer.addEffect(flash); - - //single swing: HT 15, MHT 15 - //double swing: HT 60, MHT 50 - - player.hurtTime = 15; - player.maxHurtTime = 15; - player.attackedAtYaw = 0F; - } - - if("tinytot".equals(type)) { - - ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(wave); - - for(double d = 0.0D; d <= 1.6D; d += 0.1) { - ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * 0.05, d + rand.nextGaussian() * 0.02, rand.nextGaussian() * 0.05); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - for(int i = 0; i < 50; i++) { - ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y + 0.5, z, rand.nextGaussian() * 0.5, rand.nextInt(5) == 0 ? 0.02 : 0, rand.nextGaussian() * 0.5); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - for(int i = 0; i < 15; i++) { - double ix = rand.nextGaussian() * 0.2; - double iz = rand.nextGaussian() * 0.2; - - if(ix * ix + iz * iz > 0.75) { - ix *= 0.5; - iz *= 0.5; - } - - double iy = 1.6 + (rand.nextDouble() * 2 - 1) * (0.75 - (ix * ix + iz * iz)) * 0.5; - - ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, ix, iy + rand.nextGaussian() * 0.02, iz); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - player.hurtTime = 15; - player.maxHurtTime = 15; - player.attackedAtYaw = 0F; - } - - if("ufo".equals(type)) { - double motion = data.getDouble("motion"); - ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * motion, 0, rand.nextGaussian() * motion); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - - if("bf".equals(type)) { - ParticleMukeCloud cloud = new ParticleMukeCloudBF(man, world, x, y, z, 0, 0, 0); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - - if("haze".equals(type)) { - - ParticleHaze fog = new ParticleHaze(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(fog); - } - - if("plasmablast".equals(type)) { - - ParticlePlasmaBlast cloud = new ParticlePlasmaBlast(man, world, x, y, z, data.getFloat("r"), data.getFloat("g"), data.getFloat("b"), data.getFloat("pitch"), data.getFloat("yaw")); - cloud.setScale(data.getFloat("scale")); - Minecraft.getMinecraft().effectRenderer.addEffect(cloud); - } - - if("justTilt".equals(type)) { - - player.hurtTime = player.maxHurtTime = data.getInteger("time"); - player.attackedAtYaw = 0F; - } - - if("properJolt".equals(type)) { - - player.hurtTime = data.getInteger("time"); - player.maxHurtTime = data.getInteger("maxTime"); - player.attackedAtYaw = 0F; - } - - if("sweat".equals(type)) { - - Entity e = world.getEntityByID(data.getInteger("entity")); - Block b = Block.getBlockById(data.getInteger("block")); - int meta = data.getInteger("meta"); - - if(e instanceof EntityLivingBase) { - - for(int i = 0; i < data.getInteger("count"); i++) { - - double ix = e.boundingBox.minX - 0.2 + (e.boundingBox.maxX - e.boundingBox.minX + 0.4) * rand.nextDouble(); - double iy = e.boundingBox.minY + (e.boundingBox.maxY - e.boundingBox.minY + 0.2) * rand.nextDouble(); - double iz = e.boundingBox.minZ - 0.2 + (e.boundingBox.maxZ - e.boundingBox.minZ + 0.4) * rand.nextDouble(); - - - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, b, meta); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - } - - if("vomit".equals(type)) { - - Entity e = world.getEntityByID(data.getInteger("entity")); - int count = data.getInteger("count") / (particleSetting + 1); - - if(e instanceof EntityLivingBase) { - - double ix = e.posX; - double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0); - double iz = e.posZ; - - Vec3 vec = e.getLookVec(); - - for(int i = 0; i < count; i++) { - - if("normal".equals(data.getString("mode"))) { - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13)); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - - if("blood".equals(data.getString("mode"))) { - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.redstone_block, 0); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - - if("smoke".equals(data.getString("mode"))) { - EntityFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.yCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.zCoord + rand.nextGaussian() * 0.1) * 0.05, 0.2F); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(10), "particleMaxAge", "field_70547_e"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - } - } - - if("radiation".equals(type)) { - - for(int i = 0; i < data.getInteger("count"); i++) { - - EntityAuraFX flash = new EntityAuraFX(world, - player.posX + rand.nextGaussian() * 4, - player.posY + rand.nextGaussian() * 2, - player.posZ + rand.nextGaussian() * 4, - 0, 0, 0); - - flash.setRBGColorF(0F, 0.75F, 1F); - flash.setVelocity(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian()); - Minecraft.getMinecraft().effectRenderer.addEffect(flash); - } - } - - if("schrabfog".equals(type)) { - - EntityAuraFX flash = new EntityAuraFX(world, x, y, z, 0, 0, 0); - flash.setRBGColorF(0F, 1F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(flash); - } - - if("hadron".equals(type)) { - - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); - } - - if("rift".equals(type)) { - - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z)); - } - - if("rbmkflame".equals(type)) { - int maxAge = data.getInteger("maxAge"); - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge)); - } - - if("rbmkmush".equals(type)) { - float scale = data.getFloat("scale"); - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale)); - } - - if("tower".equals(type)) { - if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { - ParticleCoolingTower fx = new ParticleCoolingTower(man, world, x, y, z); - fx.setLift(data.getFloat("lift")); - fx.setBaseScale(data.getFloat("base")); - fx.setMaxScale(data.getFloat("max")); - fx.setLife(data.getInteger("life") / (particleSetting + 1)); - if(data.hasKey("noWind")) fx.noWind(); - if(data.hasKey("strafe")) fx.setStrafe(data.getFloat("strafe")); - if(data.hasKey("alpha")) fx.alphaMod(data.getFloat("alpha")); - - if(data.hasKey("color")) { - Color color = new Color(data.getInteger("color")); - fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - } - - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("splash".equals(type)) { - if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { - ParticleSplash fx = new ParticleSplash(man, world, x, y, z); - - if(data.hasKey("color")) { - Color color = new Color(data.getInteger("color")); - float f = 1F - rand.nextFloat() * 0.2F; - fx.setRBGColorF(color.getRed() / 255F * f, color.getGreen() / 255F * f, color.getBlue() / 255F * f); - } - - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - - if("fluidfill".equals(type)) { - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - - EntityFX fx = new net.minecraft.client.particle.EntityCritFX(world, x, y, z, mX, mY, mZ); - fx.nextTextureIndexX(); - - if(data.hasKey("color")) { - Color color = new Color(data.getInteger("color")); - fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - } - - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - - if("deadleaf".equals(type)) { - if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); - } - - if("anim".equals(type)) { - - String mode = data.getString("mode"); - - /* crucible deploy */ - if("crucible".equals(mode) && player.getHeldItem() != null) { - - BusAnimation animation = new BusAnimation() - .addBus("GUARD_ROT", new BusAnimationSequence() - .addPos(90, 0, 1, 0) - .addPos(90, 0, 1, 800) - .addPos(0, 0, 1, 50)); - - HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); - } - - /* crucible swing */ - if("cSwing".equals(mode)) { - - if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) { - - int offset = rand.nextInt(80) - 20; - - BusAnimation animation = new BusAnimation() - .addBus("SWING_ROT", new BusAnimationSequence() - .addPos(90 - offset, 90 - offset, 35, 75) - .addPos(90 + offset, 90 - offset, -45, 150) - .addPos(0, 0, 0, 500)) - .addBus("SWING_TRANS", new BusAnimationSequence() - .addPos(-3, 0, 0, 75) - .addPos(8, 0, 0, 150) - .addPos(0, 0, 0, 500)); - - Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F)); - - HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); - } - } - - /* chainsaw swing */ - if("sSwing".equals(mode) || "lSwing".equals(mode)) { //temp for lance - - int forward = 150; - int sideways = 100; - int retire = 200; - - if(HbmAnimations.getRelevantAnim() == null) { - - BusAnimation animation = new BusAnimation() - .addBus("SWING_ROT", new BusAnimationSequence() - .addPos(0, 0, 90, forward) - .addPos(45, 0, 90, sideways) - .addPos(0, 0, 0, retire)) - .addBus("SWING_TRANS", new BusAnimationSequence() - .addPos(0, 0, 3, forward) - .addPos(2, 0, 2, sideways) - .addPos(0, 0, 0, retire)); - - - HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); - - } else { - - double[] rot = HbmAnimations.getRelevantTransformation("SWING_ROT"); - double[] trans = HbmAnimations.getRelevantTransformation("SWING_TRANS"); - - if(System.currentTimeMillis() - HbmAnimations.getRelevantAnim().startMillis < 50) return; - - BusAnimation animation = new BusAnimation() - .addBus("SWING_ROT", new BusAnimationSequence() - .addPos(rot[0], rot[1], rot[2], 0) - .addPos(0, 0, 90, forward) - .addPos(45, 0, 90, sideways) - .addPos(0, 0, 0, retire)) - .addBus("SWING_TRANS", new BusAnimationSequence() - .addPos(trans[0], trans[1], trans[2], 0) - .addPos(0, 0, 3, forward) - .addPos(2, 0, 2, sideways) - .addPos(0, 0, 0, retire)); - - HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); - } - } - - if("generic".equals(mode)) { - ItemStack stack = player.getHeldItem(); - - if(stack != null && stack.getItem() instanceof IAnimatedItem) { - IAnimatedItem item = (IAnimatedItem) stack.getItem(); - BusAnimation anim = item.getAnimation(data, stack); - - if(anim != null) { - HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim, null); - } - } - } - } - - if("tau".equals(type)) { - - for(int i = 0; i < data.getByte("count"); i++) - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05)); - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); - } - - if("vanish".equals(type)) { - int ent = data.getInteger("ent"); - this.vanish(ent); - } - - if("giblets".equals(type)) { - int ent = data.getInteger("ent"); - this.vanish(ent); - Entity e = world.getEntityByID(ent); - - if(e == null) - return; - - float width = e.width; - float height = e.height; - int gW = (int)(width / 0.25F); - int gH = (int)(height / 0.25F); - - int count = (int) (gW * 1.5 * gH); - - if(data.hasKey("cDiv")) - count = (int) Math.ceil(count / (double)data.getInteger("cDiv")); - - boolean blowMeIntoTheGodDamnStratosphere = rand.nextInt(15) == 0; - double mult = 1D; - - if(blowMeIntoTheGodDamnStratosphere) - mult *= 10; - - for(int i = 0; i < count; i++) { - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleGiblet(man, world, x, y, z, rand.nextGaussian() * 0.25 * mult, rand.nextDouble() * mult, rand.nextGaussian() * 0.25 * mult)); - } - } - - if("amat".equals(type)) { - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); - } - - if("debug".equals(type)) { - String t = data.getString("text"); - int color = data.getInteger("color"); - float scale = data.getFloat("scale"); - ParticleText text = new ParticleText(world, x, y, z, color, t); - text.multipleParticleScaleBy(scale); - Minecraft.getMinecraft().effectRenderer.addEffect(text); - } - - if("debugline".equals(type)) { - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - int color = data.getInteger("color"); - ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); - Minecraft.getMinecraft().effectRenderer.addEffect(text); - } - - if("debugdrone".equals(type)) { - Item held = player.getHeldItem() == null ? null : player.getHeldItem().getItem(); - - if(held == ModItems.drone || - held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || - held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || - held == Item.getItemFromBlock(ModBlocks.drone_dock) || - held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request) || - held == Item.getItemFromBlock(ModBlocks.drone_waypoint) || - held == ModItems.drone_linker) { - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - int color = data.getInteger("color"); - ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); - Minecraft.getMinecraft().effectRenderer.addEffect(text); - } - } - - if("network".equals(type)) { - ParticleDebug debug = null; - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - - if("power".equals(data.getString("mode"))) { - debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ); - } - if("fluid".equals(data.getString("mode"))) { - int color = data.getInteger("color"); - debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ, color); - } - Minecraft.getMinecraft().effectRenderer.addEffect(debug); - } - - if("gasfire".equals(type)) { - double mX = data.getDouble("mX"); - double mY = data.getDouble("mY"); - double mZ = data.getDouble("mZ"); - float scale = data.getFloat("scale"); - ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, scale > 0 ? scale : 6.5F); - Minecraft.getMinecraft().effectRenderer.addEffect(text); - } - - if("marker".equals(type)) { - int color = data.getInteger("color"); - String label = data.getString("label"); - int expires = data.getInteger("expires"); - double dist = data.getDouble("dist"); - - RenderOverhead.queuedMarkers.put(new BlockPos(x, y, z), new Marker(color).setDist(dist).setExpire(expires > 0 ? System.currentTimeMillis() + expires : 0).withLabel(label.isEmpty() ? null : label)); - } - - if("casing".equals(type)) { - CasingEjector ejector = CasingEjector.fromId(data.getInteger("ej")); - if(ejector == null) return; - SpentCasing casingConfig = SpentCasing.fromName((data.getString("name"))); - if(casingConfig == null) return; - - for(int i = 0; i < ejector.getAmount(); i++) { - ejector.spawnCasing(man, casingConfig, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); - } - } - - if("foundry".equals(type)) { - int color = data.getInteger("color"); - byte dir = data.getByte("dir"); - float length = data.getFloat("len"); - float base = data.getFloat("base"); - float offset = data.getFloat("off"); - - ParticleFoundry sploosh = new ParticleFoundry(man, world, x, y, z, color, dir, length, base, offset); - Minecraft.getMinecraft().effectRenderer.addEffect(sploosh); - } - - if("frozen".equals(type)) { - player.motionX = 0; - player.motionZ = 0; - player.motionY = Math.min(player.motionY, 0); - player.moveForward = 0; - player.moveStrafing = 0; - } - } - - private static HashMap vanished = new HashMap(); - public static void vanish(int ent) { vanished.put(ent, System.currentTimeMillis() + 2000); } - public static void vanish(int ent, int duration) { vanished.put(ent, System.currentTimeMillis() + duration); } - - @Override - public boolean isVanished(Entity e) { - if(e == null) return false; - if(!this.vanished.containsKey(e.getEntityId())) return false; - return this.vanished.get(e.getEntityId()) > System.currentTimeMillis(); - } - - @Override - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { - - AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound)); - audio.updatePosition(x, y, z); - audio.updateVolume(volume); - audio.updateRange(range); - return audio; - } - - @Override - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { - AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch); - audio.setKeepAlive(keepAlive); - return audio; - } - - @Override - public void playSound(String sound, Object data) { } - - @Override - public void displayTooltip(String msg, int time, int id) { - - if(id != 0) - this.theInfoSystem.push(new InfoEntry(msg, time), id); - else - this.theInfoSystem.push(new InfoEntry(msg, time)); - } - - @Override - public boolean getIsKeyPressed(EnumKeybind key) { - - switch(key){ - case JETPACK: return Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); - case TOGGLE_JETPACK: return HbmKeybinds.jetpackKey.getIsKeyPressed(); - case TOGGLE_MAGNET: return HbmKeybinds.magnetKey.getIsKeyPressed(); - case TOGGLE_HEAD: return HbmKeybinds.hudKey.getIsKeyPressed(); - case RELOAD: return HbmKeybinds.reloadKey.getIsKeyPressed(); - case DASH: return HbmKeybinds.dashKey.getIsKeyPressed(); - case TRAIN: return HbmKeybinds.trainKey.getIsKeyPressed(); - case CRANE_UP: return HbmKeybinds.craneUpKey.getIsKeyPressed(); - case CRANE_DOWN: return HbmKeybinds.craneDownKey.getIsKeyPressed(); - case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); - case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed(); - case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed(); - case TOOL_ALT: return HbmKeybinds.copyToolAlt.getIsKeyPressed(); - case TOOL_CTRL: return HbmKeybinds.copyToolCtrl.getIsKeyPressed(); - case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed(); - case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed(); - case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed(); - } - - return false; - } - - @Override - public EntityPlayer me() { - return Minecraft.getMinecraft().thePlayer; - } - - @Override - public void openLink(String url) { - try { - Desktop.getDesktop().browse(new URI(url)); - } catch (Exception e) { } - } - - @Override - public List getSubItems(ItemStack stack) { - - List list = new ArrayList(); - stack.getItem().getSubItems(stack.getItem(), stack.getItem().getCreativeTab(), list); - for(ItemStack sta : list) { - sta.stackSize = stack.stackSize; - } - return list; - } - - @Override - public float getImpactDust(World world) { - return ImpactWorldHandler.getDustForClient(world); - } - - @Override - public float getImpactFire(World world) { - return ImpactWorldHandler.getFireForClient(world); - } - - @Override - public boolean getImpact(World world) { - return ImpactWorldHandler.getImpactForClient(world); - } - - @Override - public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { - Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z)); - } - - @Override - public String getLanguageCode() { - Language lang = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage(); - return lang.getLanguageCode(); - } - - @Override - public int getStackColor(ItemStack stack, boolean amplify) { - if(stack == null) return 0x000000; - if(stack.getItem() instanceof ItemBlock) { - Block b = Block.getBlockFromItem(stack.getItem()); - return b.getMaterial().getMaterialMapColor().colorValue; - } - int color = ColorUtil.getAverageColorFromStack(stack); - if(amplify) color = ColorUtil.amplifyColor(color); - return color; - } -} + package com.hbm.main; + + import com.hbm.blocks.ModBlocks; + import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; + import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; + import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; + import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; + import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; +import com.hbm.blocks.generic.BlockSkeletonHolder.TileEntitySkeletonHolder; +import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; + import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; + import com.hbm.blocks.machine.MachineFan.TileEntityFan; + import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; + import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; + import com.hbm.config.GeneralConfig; + import com.hbm.entity.cart.EntityMinecartCrate; + import com.hbm.entity.cart.EntityMinecartNTM; + import com.hbm.entity.effect.*; + import com.hbm.entity.grenade.*; + import com.hbm.entity.item.*; + import com.hbm.entity.logic.*; + import com.hbm.entity.missile.*; + import com.hbm.entity.missile.EntityMissileTier0.*; + import com.hbm.entity.missile.EntityMissileTier1.*; + import com.hbm.entity.missile.EntityMissileTier2.*; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileBurst; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileDrill; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileInferno; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileRain; + import com.hbm.entity.missile.EntityMissileTier4.*; + import com.hbm.entity.mob.*; + import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; + import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; + import com.hbm.entity.mob.glyphid.*; + import com.hbm.entity.mob.siege.*; + import com.hbm.entity.particle.*; + import com.hbm.entity.projectile.*; + import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; + import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; + import com.hbm.entity.train.TrainCargoTram; + import com.hbm.entity.train.TrainCargoTramTrailer; + import com.hbm.entity.train.TrainTunnelBore; + import com.hbm.handler.CasingEjector; + import com.hbm.handler.HbmKeybinds; + import com.hbm.handler.HbmKeybinds.EnumKeybind; + import com.hbm.handler.ImpactWorldHandler; + import com.hbm.handler.imc.IMCHandlerNHNEI; + import com.hbm.items.IAnimatedItem; + import com.hbm.items.ModItems; + import com.hbm.items.weapon.sedna.factory.GunFactoryClient; + import com.hbm.lib.RefStrings; + import com.hbm.particle.*; + import com.hbm.particle.helper.ParticleCreators; + import com.hbm.particle.psys.engine.EventHandlerParticleEngine; +import com.hbm.qmaw.QMAWLoader; +import com.hbm.render.anim.BusAnimation; + import com.hbm.render.anim.BusAnimationSequence; + import com.hbm.render.anim.HbmAnimations; + import com.hbm.render.anim.HbmAnimations.Animation; + import com.hbm.render.block.*; + import com.hbm.render.entity.RenderEmpty; + import com.hbm.render.entity.effect.*; + import com.hbm.render.entity.item.*; + import com.hbm.render.entity.mob.*; + import com.hbm.render.entity.projectile.*; + import com.hbm.render.entity.rocket.*; + import com.hbm.render.item.*; + import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType; + import com.hbm.render.item.block.ItemRenderDecoBlock; + import com.hbm.render.item.weapon.*; + import com.hbm.render.loader.HmfModelLoader; + import com.hbm.render.model.ModelPigeon; + import com.hbm.render.tileentity.*; + import com.hbm.render.util.MissilePart; + import com.hbm.render.util.RenderInfoSystem; + import com.hbm.render.util.RenderInfoSystem.InfoEntry; + import com.hbm.render.util.RenderOverhead; + import com.hbm.render.util.RenderOverhead.Marker; + import com.hbm.sound.AudioWrapper; + import com.hbm.sound.AudioWrapperClient; + import com.hbm.tileentity.TileEntityDoorGeneric; + import com.hbm.tileentity.bomb.*; + import com.hbm.tileentity.deco.*; + import com.hbm.tileentity.machine.*; +import com.hbm.tileentity.machine.albion.*; +import com.hbm.tileentity.machine.oil.*; + import com.hbm.tileentity.machine.rbmk.*; + import com.hbm.tileentity.machine.storage.*; + import com.hbm.tileentity.network.*; + import com.hbm.tileentity.turret.*; + import com.hbm.util.BobMathUtil; + import com.hbm.util.ColorUtil; + import com.hbm.util.fauxpointtwelve.BlockPos; + import com.hbm.wiaj.cannery.Jars; + import cpw.mods.fml.client.registry.ClientRegistry; + import cpw.mods.fml.client.registry.RenderingRegistry; + import cpw.mods.fml.common.FMLCommonHandler; + import cpw.mods.fml.relauncher.ReflectionHelper; + import net.minecraft.block.Block; + import net.minecraft.client.Minecraft; + import net.minecraft.client.audio.PositionedSoundRecord; + import net.minecraft.client.model.ModelChicken; + import net.minecraft.client.particle.EntityCloudFX; + import net.minecraft.client.particle.*; + import net.minecraft.client.renderer.entity.RenderMinecart; + import net.minecraft.client.renderer.entity.RenderSnowball; + import net.minecraft.client.renderer.texture.TextureManager; + import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; + import net.minecraft.client.resources.IReloadableResourceManager; + import net.minecraft.client.resources.Language; + import net.minecraft.entity.Entity; + import net.minecraft.entity.EntityLivingBase; + import net.minecraft.entity.player.EntityPlayer; + import net.minecraft.init.Blocks; + import net.minecraft.init.Items; + import net.minecraft.item.Item; + import net.minecraft.item.ItemBlock; + import net.minecraft.item.ItemStack; + import net.minecraft.nbt.NBTTagCompound; + import net.minecraft.util.MovingObjectPosition; + import net.minecraft.util.MovingObjectPosition.MovingObjectType; + import net.minecraft.util.ResourceLocation; + import net.minecraft.util.Vec3; + import net.minecraft.world.World; + import net.minecraftforge.client.MinecraftForgeClient; + import net.minecraftforge.client.model.AdvancedModelLoader; + import net.minecraftforge.common.MinecraftForge; + import paulscode.sound.SoundSystemConfig; + + import java.awt.*; + import java.net.URI; + import java.util.List; + import java.util.*; + import java.util.Map.Entry; + +public class ClientProxy extends ServerProxy { + + public RenderInfoSystem theInfoSystem = new RenderInfoSystem(); + + /** Runs just before item an block init */ + @Override + public void registerPreRenderInfo() { + AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); + } + + /** Runs right after item and block init */ + @Override + public void registerRenderInfo() { + + registerClientEventHandler(new ModEventHandlerClient()); + registerClientEventHandler(new ModEventHandlerRenderer()); + registerClientEventHandler(new EventHandlerParticleEngine()); + registerClientEventHandler(theInfoSystem); + + registerTileEntitySpecialRenderer(); + registerItemRenderer(); + registerEntityRenderer(); + registerBlockRenderer(); + + Jars.initJars(); + + ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(new QMAWLoader()); + + if(GeneralConfig.enableSoundExtension) { + SoundSystemConfig.setNumberNormalChannels(GeneralConfig.normalSoundChannels); + SoundSystemConfig.setNumberStreamingChannels(50); + } + } + + private void registerClientEventHandler(Object handler) { + MinecraftForge.EVENT_BUS.register(handler); + FMLCommonHandler.instance().bus().register(handler); + } + + @Override + public void handleNHNEICompat(){ + IMCHandlerNHNEI.IMCSender(); + } + + @Override + public void registerGunCfg() { + GunFactoryClient.init(); + } + + @Override + public void registerTileEntitySpecialRenderer() { + //test crap + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityObjTester.class, new RendererObjTester()); + //deco + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoPoleSatelliteReceiver.class, new RenderPoleSatelliteReceiver()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlock.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBroadcaster.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGeiger.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioRec.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadiobox.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatDock.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAlt.class, new RenderDecoBlockAlt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltG.class, new RenderDecoBlockAlt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFloodlight.class, new RenderFloodlight()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySkeletonHolder.class, new RenderSkeletonHolder()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlushie.class, new RenderPlushie()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth()); + //bombs + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeCustom.class, new RenderNukeCustom()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeSolinium.class, new RenderNukeSolinium()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN2.class, new RenderNukeN2()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMan.class, new RenderNukeMan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBalefire.class, new RenderNukeFstbmb()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMike.class, new RenderNukeMike()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeTsar.class, new RenderNukeTsar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeFleija.class, new RenderNukeFleija()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrashedBomb.class, new RenderCrashedBomb()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukePrototype.class, new RenderNukePrototype()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharge.class, new RenderExplosiveCharge()); + //turrets + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretChekhov.class, new RenderTurretChekhov()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFriendly.class, new RenderTurretFriendly()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretJeremy.class, new RenderTurretJeremy()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretTauon.class, new RenderTurretTauon()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretRichard.class, new RenderTurretRichard()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHoward.class, new RenderTurretHoward()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHowardDamaged.class, new RenderTurretHowardDamaged()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretMaxwell.class, new RenderTurretMaxwell()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretFritz.class, new RenderTurretFritz()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretBrandon.class, new RenderTurretBrandon()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretArty.class, new RenderTurretArty()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHIMARS.class, new RenderTurretHIMARS()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentry.class, new RenderTurretSentry()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentryDamaged.class, new RenderTurretSentry()); + //mines + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLandmine.class, new RenderLandmine()); + //machines + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCentrifuge.class, new RenderCentrifuge()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasCent.class, new RenderCentrifuge()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFEL.class, new RenderFEL()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySILEX.class, new RenderSILEX()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineUF6Tank.class, new RenderUF6Tank()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePuF6Tank.class, new RenderPuF6Tank()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineIGenerator.class, new RenderIGenerator()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPASource.class, new RenderPASource()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPABeamline.class, new RenderPABeamline()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPARFC.class, new RenderPARFC()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPAQuadrupole.class, new RenderPAQuadrupole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADipole.class, new RenderPADipole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADetector.class, new RenderPADetector()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExposureChamber.class, new RenderExposureChamber()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemfac.class, new RenderAssemfac()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineChemplant.class, new RenderChemplant()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineChemfac.class, new RenderChemfac()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFluidTank.class, new RenderFluidTank()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineBAT9000.class, new RenderBAT9000()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOrbus.class, new RenderOrbus()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRefinery.class, new RenderRefinery()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFractionTower.class, new RenderFractionTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySpacer.class, new RenderSpacer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpjack.class, new RenderPumpjack()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFrackingTower.class, new RenderFrackingTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbofan.class, new RenderTurbofan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbineGas.class, new RenderTurbineGas()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLPW2.class, new RenderLPW2()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAmmoPress.class, new RenderAmmoPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRotaryFurnace.class, new RenderRotaryFurnace()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCrystallizer.class, new RenderCrystallizer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMicrowave.class, new RenderMicrowave()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRTG.class, new RenderRTG()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiniRTG.class, new RenderRTG()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFF.class, new RenderForceField()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForceField.class, new RenderMachineForceField()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFENSU.class, new RenderFENSU()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLargeTurbine.class, new RenderBigTurbine()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineReactorBreeding.class, new RenderBreeder()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarBoiler.class, new RenderSolarBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStorageDrum.class, new RenderStorageDrum()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChungus.class, new RenderChungus()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerLarge.class, new RenderLargeTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTowerSmall.class, new RenderSmallTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCondenserPowered.class, new RenderCondenser()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDeuteriumTower.class, new RenderDeuteriumTower()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolidifier.class, new RenderSolidifier()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCompressor.class, new RenderCompressor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDrain.class, new RenderDrain()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadiolysis.class, new RenderRadiolysis()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityElectrolyser.class, new RenderElectrolyser()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceIron.class, new RenderFurnaceIron()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceSteel.class, new RenderFurnaceSteel()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceCombination.class, new RenderFurnaceCombination()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAshpit.class, new RenderAshpit()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterHeatex.class, new RenderHeaterHeatex()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStirling.class, new RenderStirling()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySawmill.class, new RenderSawmill()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrucible.class, new RenderCrucible()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoiler.class, new RenderBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoilerIndustrial.class, new RenderIndustrialBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine()); + 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()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHydrotreater.class, new RenderHydrotreater()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePyroOven.class, new RenderPyroOven()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRadioTelex.class, new RenderTelex()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpSteam.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePumpElectric.class, new RenderPump()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcWelder.class, new RenderArcWelder()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolderingStation.class, new RenderSolderingStation()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineArcFurnaceLarge.class, new RenderArcFurnace()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineWoodBurner.class, new RenderWoodBurner()); + //Foundry + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineStrandCaster.class, new RenderStrandCaster()); + //ZIRNOX + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorZirnox.class, new RenderZirnox()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityZirnoxDestroyed.class, new RenderZirnoxDestroyed()); + //DFC + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreEmitter.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreReceiver.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreInjector.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCoreStabilizer.class, new RenderCoreComponent()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCore.class, new RenderCore()); + //missile blocks + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPad.class, new RenderLaunchPad()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPadRusted.class, new RenderLaunchPadRusted()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchPadLarge.class, new RenderLaunchPadLarge()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMissileAssembly.class, new RenderMissileAssembly()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCompactLauncher.class, new RenderCompactLauncher()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaunchTable.class, new RenderLaunchTable()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzLauncher.class, new RenderSoyuzLauncher()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzCapsule.class, new RenderCapsule()); + //network + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConnector.class, new RenderConnector()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonMedium.class, new RenderPylonMedium()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonLarge.class, new RenderPylonLarge()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); + //chargers + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler()); + //DecoContainer + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); + //multiblocks + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzStruct.class, new RenderWatzMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFStruct.class, new RenderICFMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCustomMachine.class, new RenderCustomMachine()); + //RBMK + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlManual.class, new RenderRBMKControlRod()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlAuto.class, new RenderRBMKControlRod()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCraneConsole.class, new RenderCraneConsole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAbsorber.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKBlank.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKBoiler.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKModerator.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKOutgasser.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKReflector.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKCooler.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKStorage.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKHeater.class, new RenderRBMKLid()); + //ITER + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICF.class, new RenderICF()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFController.class, new RenderICFController()); + //Watz + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); + //doors + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDoorGeneric.class, new RenderDoorGeneric()); + } + + @Override + public void registerItemRenderer() { + + ItemRenderLibrary.init(); + + for(Entry entry : ItemRenderLibrary.renderers.entrySet()) + MinecraftForgeClient.registerItemRenderer(entry.getKey(), entry.getValue()); + + //this bit registers an item renderer for every existing tile entity renderer that implements IItemRendererProvider + Iterator iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator(); + while(iterator.hasNext()) { + Object renderer = iterator.next(); + if(renderer instanceof IItemRendererProvider) { + IItemRendererProvider prov = (IItemRendererProvider) renderer; + for(Item item : prov.getItemsForRenderer()) { + MinecraftForgeClient.registerItemRenderer(item, prov.getRenderer()); + } + } + } + + //universal JSON translated items + double[] rtp = new double[] {0, 180, -90}; + double[] ttp_high = new double[] {0.125, 0.625, 0}; + double[] ttp_low = new double[] {0, 0.75, 0}; + double[] stp = new double[] {1.7, 1.7, 0.85}; + double[] rfp = new double[] {0, 180, -90}; + double[] tfp = new double[] {1.13, 5.2, -0.26}; + double[] sfp = new double[] {1.36, 1.36, 0.68}; + double[] rir = new double[] {0, 0, 0}; + double[] tir = new double[] {0, 0, 0}; + double[] sir = new double[] {1, 1, 1}; + + MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.desh_sword, new ItemRenderTransformer(rtp, ttp_low, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.cobalt_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.cobalt_decorated_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.starmetal_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.schrabidium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.cmb_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + MinecraftForgeClient.registerItemRenderer(ModItems.dnt_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); + + double[] sfp_default = new double[] {1, 1, 1}; + double[] tfp_default = new double[] {0, 0, 0}; + double[] sir_default = new double[] {1, 1, 1}; + + MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.volcanic_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.volcanic_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.chlorophyte_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.chlorophyte_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.mese_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + MinecraftForgeClient.registerItemRenderer(ModItems.mese_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); + + ItemRenderMissileGeneric.init(); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_test, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_taint, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_micro, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_bhole, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_schrabidium, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_emp, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_stealth, new ItemRenderMissileGeneric(RenderMissileType.TYPE_STEALTH)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_generic, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_incendiary, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_cluster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_buster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_decoy, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER1)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_anti_ballistic, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ABM)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_incendiary_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_cluster_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_buster_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_emp_strong, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER2)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_burst, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_inferno, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_rain, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_drill, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER3)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_nuclear_cluster, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_volcano, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); + + //templates + MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); + MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); + MinecraftForgeClient.registerItemRenderer(ModItems.crucible_template, new ItemRenderTemplate()); + //hot stuff + MinecraftForgeClient.registerItemRenderer(ModItems.ingot_steel_dusted, new ItemRendererHot()); + MinecraftForgeClient.registerItemRenderer(ModItems.ingot_chainsteel, new ItemRendererHot()); + MinecraftForgeClient.registerItemRenderer(ModItems.ingot_meteorite, new ItemRendererHot()); + MinecraftForgeClient.registerItemRenderer(ModItems.ingot_meteorite_forged, new ItemRendererHot()); + MinecraftForgeClient.registerItemRenderer(ModItems.blade_meteorite, new ItemRendererHot()); + //meteorite swords + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_seared, new ItemRendererMeteorSword(1.0F, 0.5F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_reforged, new ItemRendererMeteorSword(0.5F, 1.0F, 1.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_hardened, new ItemRendererMeteorSword(0.25F, 0.25F, 0.25F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_alloyed, new ItemRendererMeteorSword(0.0F, 0.5F, 1.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_machined, new ItemRendererMeteorSword(1.0F, 1.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_treated, new ItemRendererMeteorSword(0.5F, 1.0F, 0.5F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_etched, new ItemRendererMeteorSword(1.0F, 1.0F, 0.5F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_bred, new ItemRendererMeteorSword(0.5F, 0.5F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_irradiated, new ItemRendererMeteorSword(0.75F, 1.0F, 0.0F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_fused, new ItemRendererMeteorSword(1.0F, 0.0F, 0.5F)); + MinecraftForgeClient.registerItemRenderer(ModItems.meteorite_sword_baleful, new ItemRendererMeteorSword(0.0F, 1.0F, 0.0F)); + //swords and hammers + MinecraftForgeClient.registerItemRenderer(ModItems.redstone_sword, new ItemRenderRedstoneSword()); + MinecraftForgeClient.registerItemRenderer(ModItems.big_sword, new ItemRenderBigSword()); + MinecraftForgeClient.registerItemRenderer(ModItems.shimmer_sledge, new ItemRenderShim()); + MinecraftForgeClient.registerItemRenderer(ModItems.shimmer_axe, new ItemRenderShim()); + MinecraftForgeClient.registerItemRenderer(ModItems.stopsign, new ItemRenderShim()); + MinecraftForgeClient.registerItemRenderer(ModItems.sopsign, new ItemRenderShim()); + MinecraftForgeClient.registerItemRenderer(ModItems.chernobylsign, new ItemRenderShim()); + MinecraftForgeClient.registerItemRenderer(ModItems.wood_gavel, new ItemRenderGavel()); + MinecraftForgeClient.registerItemRenderer(ModItems.lead_gavel, new ItemRenderGavel()); + MinecraftForgeClient.registerItemRenderer(ModItems.diamond_gavel, new ItemRenderGavel()); + MinecraftForgeClient.registerItemRenderer(ModItems.mese_gavel, new ItemRenderGavel()); + MinecraftForgeClient.registerItemRenderer(ModItems.crucible, new ItemRenderCrucible()); + MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); + MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); + //guns + MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); + //multitool + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_ext, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_miner, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_hit, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_beam, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_sky, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_mega, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_joule, new ItemRenderMultitool()); + MinecraftForgeClient.registerItemRenderer(ModItems.multitool_decon, new ItemRenderMultitool()); + //blocks + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_roof), new ItemRenderDecoBlock()); + } + + @Override + public void registerEntityRenderer() { + //projectiles + RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); + RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); + RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); + RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); + RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); + RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); + RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); + RenderingRegistry.registerEntityRenderingHandler(EntityExplosiveBeam.class, new RenderBeam5()); + RenderingRegistry.registerEntityRenderingHandler(EntityModBeam.class, new RenderBeam6()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeLaser.class, new RenderSiegeLaser()); + RenderingRegistry.registerEntityRenderingHandler(EntityBombletZeta.class, new RenderBombletTheta()); + RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new RenderMeteor()); + RenderingRegistry.registerEntityRenderingHandler(EntityBoxcar.class, new RenderBoxcar()); + RenderingRegistry.registerEntityRenderingHandler(EntityDuchessGambit.class, new RenderBoxcar()); + RenderingRegistry.registerEntityRenderingHandler(EntityBuilding.class, new RenderBoxcar()); + RenderingRegistry.registerEntityRenderingHandler(EntityTorpedo.class, new RenderBoxcar()); + RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber()); + RenderingRegistry.registerEntityRenderingHandler(EntityC130.class, new RenderC130()); + RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); + RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); + RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityBobmazon.class, new RenderMinerRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityTom.class, new RenderTom()); + RenderingRegistry.registerEntityRenderingHandler(EntityAAShell.class, new RenderMirv()); + RenderingRegistry.registerEntityRenderingHandler(EntityChopperMine.class, new RenderChopperMine()); + RenderingRegistry.registerEntityRenderingHandler(EntityRubble.class, new RenderRubble()); + RenderingRegistry.registerEntityRenderingHandler(EntityShrapnel.class, new RenderShrapnel()); + RenderingRegistry.registerEntityRenderingHandler(EntityFireworks.class, new RenderShrapnel()); + RenderingRegistry.registerEntityRenderingHandler(EntityWaterSplash.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(EntityEMP.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(EntityBeamVortex.class, new RenderVortexBeam()); + RenderingRegistry.registerEntityRenderingHandler(EntityRBMKDebris.class, new RenderRBMKDebris()); + RenderingRegistry.registerEntityRenderingHandler(EntityZirnoxDebris.class, new RenderZirnoxDebris()); + RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryShell.class, new RenderArtilleryShell()); + RenderingRegistry.registerEntityRenderingHandler(EntityArtilleryRocket.class, new RenderArtilleryRocket()); + RenderingRegistry.registerEntityRenderingHandler(EntityCog.class, new RenderCog()); + RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); + RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); + RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityFireLingering.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityWaypoint.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); + //grenades + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGeneric.class, new RenderSnowball(ModItems.grenade_generic)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeStrong.class, new RenderSnowball(ModItems.grenade_strong)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFrag.class, new RenderSnowball(ModItems.grenade_frag)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFire.class, new RenderSnowball(ModItems.grenade_fire)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeCluster.class, new RenderSnowball(ModItems.grenade_cluster)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeFlare.class, new RenderFlare()); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeElectric.class, new RenderSnowball(ModItems.grenade_electric)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePoison.class, new RenderSnowball(ModItems.grenade_poison)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGas.class, new RenderSnowball(ModItems.grenade_gas)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeSchrabidium.class, new RenderSnowball(ModItems.grenade_schrabidium)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeNuke.class, new RenderSnowball(ModItems.grenade_nuke)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeNuclear.class, new RenderSnowball(ModItems.grenade_nuclear)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePlasma.class, new RenderSnowball(ModItems.grenade_plasma)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeTau.class, new RenderSnowball(ModItems.grenade_tau)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeLemon.class, new RenderSnowball(ModItems.grenade_lemon)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeMk2.class, new RenderGrenade()); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeZOMG.class, new RenderSnowball(ModItems.grenade_zomg)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeASchrab.class, new RenderGrenade()); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePulse.class, new RenderSnowball(ModItems.grenade_pulse)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeShrapnel.class, new RenderSnowball(ModItems.grenade_shrapnel)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBlackHole.class, new RenderSnowball(ModItems.grenade_black_hole)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGascan.class, new RenderSnowball(ModItems.grenade_gascan)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeCloud.class, new RenderSnowball(ModItems.grenade_cloud)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadePC.class, new RenderSnowball(ModItems.grenade_pink_cloud)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeSmart.class, new RenderSnowball(ModItems.grenade_smart)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeMIRV.class, new RenderSnowball(ModItems.grenade_mirv)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBreach.class, new RenderSnowball(ModItems.grenade_breach)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBurst.class, new RenderSnowball(ModItems.grenade_burst)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFGeneric.class, new RenderSnowball(ModItems.grenade_if_generic)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHE.class, new RenderSnowball(ModItems.grenade_if_he)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBouncy.class, new RenderSnowball(ModItems.grenade_if_bouncy)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSticky.class, new RenderSnowball(ModItems.grenade_if_sticky)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFImpact.class, new RenderSnowball(ModItems.grenade_if_impact)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFIncendiary.class, new RenderSnowball(ModItems.grenade_if_incendiary)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFToxic.class, new RenderSnowball(ModItems.grenade_if_toxic)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFConcussion.class, new RenderSnowball(ModItems.grenade_if_concussion)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBrimstone.class, new RenderSnowball(ModItems.grenade_if_brimstone)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFMystery.class, new RenderSnowball(ModItems.grenade_if_mystery)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSpark.class, new RenderSnowball(ModItems.grenade_if_spark)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHopwire.class, new RenderSnowball(ModItems.grenade_if_hopwire)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFNull.class, new RenderSnowball(ModItems.grenade_if_null)); + RenderingRegistry.registerEntityRenderingHandler(EntityWastePearl.class, new RenderSnowball(ModItems.nuclear_waste_pearl)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeDynamite.class, new RenderSnowball(ModItems.stick_dynamite)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBouncyGeneric.class, new RenderGenericGrenade()); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeImpactGeneric.class, new RenderGenericGrenade()); + RenderingRegistry.registerEntityRenderingHandler(EntityDisperserCanister.class, new RenderGenericGrenade()); + //missiles + RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileStealth.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileBunkerBuster.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileStrong.class, new RenderMissileStrong()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiaryStrong.class, new RenderMissileStrong()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileClusterStrong.class, new RenderMissileStrong()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileBusterStrong.class, new RenderMissileStrong()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileEMPStrong.class, new RenderMissileStrong()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileBurst.class, new RenderMissileHuge()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileInferno.class, new RenderMissileHuge()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileRain.class, new RenderMissileHuge()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDrill.class, new RenderMissileHuge()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileNuclear.class, new RenderMissileNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileMirv.class, new RenderMissileNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileVolcano.class, new RenderMissileNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); + RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); + RenderingRegistry.registerEntityRenderingHandler(EntityParachuteCrate.class, new RenderParachuteCrate()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileBHole.class, new RenderMissileTaint()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileSchrabidium.class, new RenderMissileTaint()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileEMP.class, new RenderMissileTaint()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileShuttle.class, new RenderMissileShuttle()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileTest.class, new RenderMissileTaint()); + //effects + RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleija.class, new RenderCloudFleija()); + RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleijaRainbow.class, new RenderCloudRainbow()); + RenderingRegistry.registerEntityRenderingHandler(EntityCloudSolinium.class, new RenderCloudSolinium()); + RenderingRegistry.registerEntityRenderingHandler(EntityCloudTom.class, new RenderCloudTom()); + RenderingRegistry.registerEntityRenderingHandler(EntityFalloutRain.class, new RenderFallout()); + RenderingRegistry.registerEntityRenderingHandler(EntityBlackHole.class, new RenderBlackHole()); + RenderingRegistry.registerEntityRenderingHandler(EntityVortex.class, new RenderBlackHole()); + RenderingRegistry.registerEntityRenderingHandler(EntityRagingVortex.class, new RenderBlackHole()); + RenderingRegistry.registerEntityRenderingHandler(EntityQuasar.class, new RenderQuasar()); + RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast()); + RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear()); + RenderingRegistry.registerEntityRenderingHandler(EntityNukeTorex.class, new RenderTorex()); + //minecarts + RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); + RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); + RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); + RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + RenderingRegistry.registerEntityRenderingHandler(EntityBoatRubber.class, new RenderBoatRubber()); + //trains + RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(BoundingBoxDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTramTrailer.class, new RenderTrainCargoTramTrailer()); + RenderingRegistry.registerEntityRenderingHandler(TrainTunnelBore.class, new RenderTunnelBore()); + //items + RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); + RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); + RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); + RenderingRegistry.registerEntityRenderingHandler(EntityDeliveryDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityRequestDrone.class, new RenderDeliveryDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityFallingBlockNT.class, new RenderFallingBlockNT()); + //mobs + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperPhosgene.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_phosgene.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperVolatile.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_volatile.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperGold.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_gold.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); + RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityTaintCrab.class, new RenderTaintCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityMaskMan.class, new RenderMaskMan()); + RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeHead.class, new RenderWormHead()); + RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeBody.class, new RenderWormBody()); + RenderingRegistry.registerEntityRenderingHandler(EntityDuck.class, new RenderDuck(new ModelChicken(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityQuackos.class, new RenderQuacc(new ModelChicken(), 7.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityFBI.class, new RenderFBI()); + RenderingRegistry.registerEntityRenderingHandler(EntityRADBeast.class, new RenderRADBeast()); + RenderingRegistry.registerEntityRenderingHandler(EntityBlockSpider.class, new RenderBlockSpider()); + RenderingRegistry.registerEntityRenderingHandler(EntityUFO.class, new RenderUFO()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeCraft.class, new RenderSiegeCraft()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); + RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphid.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrawler.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBehemoth.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrenda.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBombardier.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityParasiteMaggot.class, new RenderMaggot()); + RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); + RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); + RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityDummy.class, new RenderDummy()); + RenderingRegistry.registerEntityRenderingHandler(EntityUndeadSoldier.class, new RenderUndeadSoldier()); + //"particles" + RenderingRegistry.registerEntityRenderingHandler(EntityChlorineFX.class, new MultiCloudRenderer(new Item[] { ModItems.chlorine1, ModItems.chlorine2, ModItems.chlorine3, ModItems.chlorine4, ModItems.chlorine5, ModItems.chlorine6, ModItems.chlorine7, ModItems.chlorine8 })); + RenderingRegistry.registerEntityRenderingHandler(EntityPinkCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.pc1, ModItems.pc2, ModItems.pc3, ModItems.pc4, ModItems.pc5, ModItems.pc6, ModItems.pc7, ModItems.pc8 })); + RenderingRegistry.registerEntityRenderingHandler(com.hbm.entity.particle.EntityCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.cloud1, ModItems.cloud2, ModItems.cloud3, ModItems.cloud4, ModItems.cloud5, ModItems.cloud6, ModItems.cloud7, ModItems.cloud8 })); + RenderingRegistry.registerEntityRenderingHandler(EntityOrangeFX.class, new MultiCloudRenderer(new Item[] { ModItems.orange1, ModItems.orange2, ModItems.orange3, ModItems.orange4, ModItems.orange5, ModItems.orange6, ModItems.orange7, ModItems.orange8 })); + RenderingRegistry.registerEntityRenderingHandler(EntityFogFX.class, new FogRenderer()); + RenderingRegistry.registerEntityRenderingHandler(EntityEMPBlast.class, new RenderEMPBlast()); + } + + @Override + public void registerBlockRenderer() { + + RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); + RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); + RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); + RenderingRegistry.registerBlockHandler(new RenderSteelWall()); + RenderingRegistry.registerBlockHandler(new RenderSteelCorner()); + RenderingRegistry.registerBlockHandler(new RenderBarrel()); + RenderingRegistry.registerBlockHandler(new RenderFence()); + RenderingRegistry.registerBlockHandler(new RenderBarbedWire()); + RenderingRegistry.registerBlockHandler(new RenderAntennaTop()); + RenderingRegistry.registerBlockHandler(new RenderConserve()); + RenderingRegistry.registerBlockHandler(new RenderConveyor()); + RenderingRegistry.registerBlockHandler(new RenderConveyorChute()); + RenderingRegistry.registerBlockHandler(new RenderConveyorLift()); + RenderingRegistry.registerBlockHandler(new RenderRTGBlock()); + RenderingRegistry.registerBlockHandler(new RenderSpikeBlock()); + RenderingRegistry.registerBlockHandler(new RenderChain()); + RenderingRegistry.registerBlockHandler(new RenderMirror()); + RenderingRegistry.registerBlockHandler(new RenderGrate()); + RenderingRegistry.registerBlockHandler(new RenderPipe()); + RenderingRegistry.registerBlockHandler(new RenderBattery()); + RenderingRegistry.registerBlockHandler(new RenderAnvil()); + RenderingRegistry.registerBlockHandler(new RenderCable()); + RenderingRegistry.registerBlockHandler(new RenderCableClassic()); + RenderingRegistry.registerBlockHandler(new RenderTestPipe()); + RenderingRegistry.registerBlockHandler(new RenderBlockCT()); + RenderingRegistry.registerBlockHandler(new RenderDetCord()); + RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); + RenderingRegistry.registerBlockHandler(new RenderBlockSideRotation()); + RenderingRegistry.registerBlockHandler(new RenderDiode()); + RenderingRegistry.registerBlockHandler(new RenderBoxDuct()); + RenderingRegistry.registerBlockHandler(new RenderBlockDecoModel(ModBlocks.deco_computer.getRenderType(), ResourceManager.deco_computer)); + RenderingRegistry.registerBlockHandler(new RenderReeds()); + RenderingRegistry.registerBlockHandler(new RenderHangingVine()); + RenderingRegistry.registerBlockHandler(new RenderRTTY()); + RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); + RenderingRegistry.registerBlockHandler(new RenderSplitter()); + RenderingRegistry.registerBlockHandler(new RenderCapacitor()); + RenderingRegistry.registerBlockHandler(new RenderPedestal()); + RenderingRegistry.registerBlockHandler(new RenderLight()); + RenderingRegistry.registerBlockHandler(new RenderCRT()); + RenderingRegistry.registerBlockHandler(new RenderToaster()); + RenderingRegistry.registerBlockHandler(new RenderPartitioner()); + + RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); + RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); + RenderingRegistry.registerBlockHandler(new RenderFoundryChannel()); + RenderingRegistry.registerBlockHandler(new RenderFoundryTank()); + RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); + + RenderingRegistry.registerBlockHandler(new RenderRail()); + + RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); + RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); + + RenderingRegistry.registerBlockHandler(new RenderRBMKRod()); + RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); + RenderingRegistry.registerBlockHandler(new RenderRBMKControl()); + RenderingRegistry.registerBlockHandler(new RenderPribris()); + + RenderingRegistry.registerBlockHandler(new RenderBlockWand()); + } + + @Override + public void registerMissileItems() { + + MissilePart.registerAllParts(); + + Iterator it = MissilePart.parts.entrySet().iterator(); + + while(it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + MissilePart part = (MissilePart) pair.getValue(); + MinecraftForgeClient.registerItemRenderer(part.part, new ItemRenderMissilePart(part)); + } + + MinecraftForgeClient.registerItemRenderer(ModItems.missile_custom, new ItemRenderMissile()); + } + + //mk3, only use this one + @Override + public void effectNT(NBTTagCompound data) { + + World world = Minecraft.getMinecraft().theWorld; + + if(world == null) //might i ask why? + return; + + TextureManager man = Minecraft.getMinecraft().renderEngine; + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + int particleSetting = Minecraft.getMinecraft().gameSettings.particleSetting; + Random rand = world.rand; + String type = data.getString("type"); + double x = data.getDouble("posX"); + double y = data.getDouble("posY"); + double z = data.getDouble("posZ"); + + if(ParticleCreators.particleCreators.containsKey(type)) { + ParticleCreators.particleCreators.get(type).makeParticle(world, player, man, rand, x, y, z, data); + return; + } + + // Old MK1 system ported to MK3: + + if("waterSplash".equals(type)) { + for (int i = 0; i < 10; i++) { + EntityCloudFX smoke = new EntityCloudFX(world, x + world.rand.nextGaussian(), y + world.rand.nextGaussian(), z + world.rand.nextGaussian(), 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + } + } + + if("cloudFX2".equals(type)) { // i have genuinely no idea what used this + EntityCloudFX smoke = new EntityCloudFX(world, x, y, z, 0.0, 0.1, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + } + + if("ABMContrail".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + // End MK1 porting. + + // Old MK2 system ported to MK3: + + if("launchSmoke".equals(type)) { + ParticleSmokePlume contrail = new ParticleSmokePlume(man, world, x, y, z); + contrail.motionX = data.getDouble("moX"); + contrail.motionY = data.getDouble("moY"); + contrail.motionZ = data.getDouble("moZ"); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exKerosene".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0F, 0F, 0F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exSolid".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.3F, 0.2F, 0.05F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exHydrogen".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.7F, 0.7F, 0.7F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exBalefire".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.2F, 0.7F, 0.2F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("radFog".equals(type)) { + ParticleRadiationFog contrail = new ParticleRadiationFog(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + // End MK2 porting. + + if("missileContrail".equals(type)) { + + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) return; + + float scale = data.hasKey("scale") ? data.getFloat("scale") : 1F; + double mX = data.getDouble("moX"); + double mY = data.getDouble("moY"); + double mZ = data.getDouble("moZ"); + + /*ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0, 0, 0, scale); + contrail.motionX = mX; + contrail.motionY = mY; + contrail.motionZ = mZ; + Minecraft.getMinecraft().effectRenderer.addEffect(contrail);*/ + + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x, y, z).setScale(scale); + fx.motionX = mX; + fx.motionY = mY; + fx.motionZ = mZ; + if(data.hasKey("maxAge")) fx.setMaxAge(data.getInteger("maxAge")); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("smoke".equals(type)) { + + String mode = data.getString("mode"); + int count = Math.max(1, data.getInteger("count")); + + if("cloud".equals(mode)) { + + for(int i = 0; i < count; i++) { + ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); + fx.motionY = rand.nextGaussian() * (1 + (count / 100)); + fx.motionX = rand.nextGaussian() * (1 + (count / 150)); + fx.motionZ = rand.nextGaussian() * (1 + (count / 150)); + if(rand.nextBoolean()) fx.motionY = Math.abs(fx.motionY); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("radial".equals(mode)) { + + for(int i = 0; i < count; i++) { + ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); + fx.motionY = rand.nextGaussian() * (1 + (count / 50)); + fx.motionX = rand.nextGaussian() * (1 + (count / 50)); + fx.motionZ = rand.nextGaussian() * (1 + (count / 50)); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("radialDigamma".equals(mode)) { + + Vec3 vec = Vec3.createVectorHelper(2, 0, 0); + vec.rotateAroundY(rand.nextFloat() * (float)Math.PI * 2F); + + for(int i = 0; i < count; i++) { + ParticleDigammaSmoke fx = new ParticleDigammaSmoke(man, world, x, y, z); + fx.motionY = 0; + fx.motionX = vec.xCoord; + fx.motionZ = vec.zCoord; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY((float)Math.PI * 2F / (float)count); + } + } + + if("shock".equals(mode)) { + + double strength = data.getDouble("strength"); + + Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); + vec.rotateAroundY(rand.nextInt(360)); + + for(int i = 0; i < count; i++) { + ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); + fx.motionY = 0; + fx.motionX = vec.xCoord; + fx.motionZ = vec.zCoord; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY((float)Math.PI * 2F / (float)count); + } + } + + if("shockRand".equals(mode)) { + + double strength = data.getDouble("strength"); + + Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); + vec.rotateAroundY(rand.nextInt(360)); + double r; + + for(int i = 0; i < count; i++) { + r = rand.nextDouble(); + ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); + fx.motionY = 0; + fx.motionX = vec.xCoord * r; + fx.motionZ = vec.zCoord * r; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY(360 / count); + } + } + + if("wave".equals(mode)) { + + double strength = data.getDouble("range"); + + Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); + + for(int i = 0; i < count; i++) { + + vec.rotateAroundY((float) Math.toRadians(rand.nextFloat() * 360F)); + + ParticleExSmoke fx = new ParticleExSmoke(man, world, x + vec.xCoord, y, z + vec.zCoord); + fx.maxAge = 50; + fx.motionY = 0; + fx.motionX = 0; + fx.motionZ = 0; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY(360 / count); + } + } + + if("foamSplash".equals(mode)) { + + double strength = data.getDouble("range"); + + Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); + + for(int i = 0; i < count; i++) { + + vec.rotateAroundY((float) Math.toRadians(rand.nextFloat() * 360F)); + + ParticleFoam fx = new ParticleFoam(man, world, x + vec.xCoord, y, z + vec.zCoord); + fx.maxAge = 50; + fx.motionY = 0; + fx.motionX = 0; + fx.motionZ = 0; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY(360 / count); + } + } + } + + + + if("exhaust".equals(type)) { + + String mode = data.getString("mode"); + + if("soyuz".equals(mode)) { + + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) + return; + + int count = Math.max(1, data.getInteger("count")); + double width = data.getDouble("width"); + + for(int i = 0; i < count; i++) { + + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y, z + rand.nextGaussian() * width); + fx.motionY = -0.75 + rand.nextDouble() * 0.5; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("meteor".equals(mode)) { + + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) + return; + + int count = Math.max(1, data.getInteger("count")); + double width = data.getDouble("width"); + + for(int i = 0; i < count; i++) { + + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y + rand.nextGaussian() * width, z + rand.nextGaussian() * width); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + } + + if("fireworks".equals(type)) { + int color = data.getInteger("color"); + char c = (char)data.getInteger("char"); + + ParticleLetter fx = new ParticleLetter(world, x, y, z, color, c); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + for(int i = 0; i < 50; i++) { + EntityFireworkSparkFX blast = new EntityFireworkSparkFX(world, x, y, z, + 0.4 * world.rand.nextGaussian(), + 0.4 * world.rand.nextGaussian(), + 0.4 * world.rand.nextGaussian(), Minecraft.getMinecraft().effectRenderer); + blast.setColour(color); + Minecraft.getMinecraft().effectRenderer.addEffect(blast); + } + } + + if("vanillaburst".equals(type)) { + + double motion = data.getDouble("motion"); + + for(int i = 0; i < data.getInteger("count"); i++) { + + double mX = rand.nextGaussian() * motion; + double mY = rand.nextGaussian() * motion; + double mZ = rand.nextGaussian() * motion; + + EntityFX fx = null; + + if("flame".equals(data.getString("mode"))) { + fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); + } + + if("cloud".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); + } + + if("reddust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.0F, 0.0F, 0.0F); + fx.motionX = mX; + fx.motionY = mY; + fx.motionZ = mZ; + } + + if("bluedust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); + } + + if("greendust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); + } + + if("blockdust".equals(data.getString("mode"))) { + + Block b = Block.getBlockById(data.getInteger("block")); + fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 50 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + } + + if(fx != null) + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("vanillaExt".equals(type)) { + + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + + EntityFX fx = null; + + if("flame".equals(data.getString("mode"))) { + fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); + } + + if("smoke".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); + } + + if("volcano".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); + float scale = 100; + ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a"); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 200 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + fx.noClip = true; + fx.motionY = 2.5 + rand.nextDouble(); + fx.motionX = rand.nextGaussian() * 0.2; + fx.motionZ = rand.nextGaussian() * 0.2; + } + + if("cloud".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); + + if(data.hasKey("r")) { + float rng = rand.nextFloat() * 0.1F; + fx.setRBGColorF(data.getFloat("r") + rng, data.getFloat("g") + rng, data.getFloat("b") + rng); + ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntityCloudFX.class, (EntityCloudFX)fx, 7.5F, "field_70569_a"); + fx.motionX = 0; + fx.motionY = 0; + fx.motionZ = 0; + } + } + + if("reddust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, (float)mX, (float)mY, (float)mZ); + } + + if("bluedust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); + } + + if("greendust".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); + } + + if("fireworks".equals(data.getString("mode"))) { + fx = new EntityFireworkSparkFX(world, x, y, z, 0, 0, 0, Minecraft.getMinecraft().effectRenderer); + } + + if("largeexplode".equals(data.getString("mode"))) { + + + fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, data.getFloat("size"), 0.0F, 0.0F); + float r = 1.0F - rand.nextFloat() * 0.2F; + fx.setRBGColorF(1F * r, 0.9F * r, 0.5F * r); + + for(int i = 0; i < data.getByte("count"); i++) { + net.minecraft.client.particle.EntityExplodeFX sec = new net.minecraft.client.particle.EntityExplodeFX(world, x, y, z, 0.0F, 0.0F, 0.0F); + float r2 = 1.0F - rand.nextFloat() * 0.5F; + sec.setRBGColorF(0.5F * r2, 0.5F * r2, 0.5F * r2); + sec.multipleParticleScaleBy(i + 1); + Minecraft.getMinecraft().effectRenderer.addEffect(sec); + } + } + + if("townaura".equals(data.getString("mode"))) { + fx = new EntityAuraFX(world, x, y, z, 0, 0, 0); + float color = 0.5F + rand.nextFloat() * 0.5F; + fx.setRBGColorF(0.8F * color, 0.9F * color, 1.0F * color); + fx.setVelocity(mX, mY, mZ); + } + + if("blockdust".equals(data.getString("mode"))) { + + Block b = Block.getBlockById(data.getInteger("block")); + fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); + } + + if("colordust".equals(data.getString("mode"))) { + + Block b = Blocks.wool; + fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); + fx.setRBGColorF(data.getFloat("r"), data.getFloat("g"), data.getFloat("b")); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); + } + + if(fx != null) { + + if(data.getBoolean("noclip")) { + fx.noClip = true; + } + + if(data.getInteger("overrideAge") > 0) { + ReflectionHelper.setPrivateValue(EntityFX.class, fx, data.getInteger("overrideAge"), "particleMaxAge", "field_70547_e"); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("vanilla".equals(type)) { + + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + world.spawnParticle(data.getString("mode"), x, y, z, mX, mY, mZ); + } + + if("jetpack".equals(type)) { + + if(particleSetting == 2) + return; + + Entity ent = world.getEntityByID(data.getInteger("player")); + + if(ent instanceof EntityPlayer) { + + EntityPlayer p = (EntityPlayer)ent; + + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.25); + Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); + float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); + + vec.rotateAroundY(angle); + offset.rotateAroundY(angle); + + double ix = p.posX + vec.xCoord; + double iy = p.posY + p.eyeHeight - 1; + double iz = p.posZ + vec.zCoord; + double ox = offset.xCoord; + double oz = offset.zCoord; + + double moX = 0; + double moY = 0; + double moZ = 0; + + int mode = data.getInteger("mode"); + + if(mode == 0) { + moY -= 0.2; + } + + if(mode == 1) { + Vec3 look = p.getLookVec(); + + moX -= look.xCoord * 0.1D; + moY -= look.yCoord * 0.1D; + moZ -= look.zCoord * 0.1D; + } + + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ); + thrust = thrust.normalize(); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); + + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } + } + } + + double mX2 = BobMathUtil.safeClamp(p.motionX + moX * 2, -5, 5); + double mY2 = BobMathUtil.safeClamp(p.motionY + moY * 2, -5, 5); + double mZ2 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -5, 5); + double mX3 = BobMathUtil.safeClamp(p.motionX + moX * 2, -10, 10); + double mY3 = BobMathUtil.safeClamp(p.motionY + moY * 2, -10, 10); + double mZ3 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -10, 10); + + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, mX2, mY2, mZ2)); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2)); + + if(particleSetting == 0) { + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, mX3, mY3, mZ3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3)); + } + } + } + + if("bnuuy".equals(type)) { + + if(particleSetting == 2) + return; + + Entity ent = world.getEntityByID(data.getInteger("player")); + + if(ent instanceof EntityPlayer) { + + EntityPlayer p = (EntityPlayer)ent; + + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.6); + Vec3 offset = Vec3.createVectorHelper(0.275, 0, 0); + float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); + + vec.rotateAroundY(angle); + offset.rotateAroundY(angle); + + double ix = p.posX + vec.xCoord; + double iy = p.posY + p.eyeHeight - 1 + 0.4; + double iz = p.posZ + vec.zCoord; + double ox = offset.xCoord; + double oz = offset.zCoord; + + if(player.isSneaking()) { + iy += 0.25; + } + + vec = vec.normalize(); + double mult = 0.025D; + double mX = vec.xCoord * mult; + double mZ = vec.zCoord * mult; + + //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, 0, 0, 0)); + //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, 0, 0, 0)); + + for(int i = 0; i < 2; i++) { + net.minecraft.client.particle.EntitySmokeFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox * (i == 0 ? -1 : 1), iy, iz + oz * (i == 0 ? -1 : 1), mX, 0, mZ); + float scale = 0.5F; + ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + } + + if("jetpack_bj".equals(type)) { + + if(particleSetting == 2) + return; + + Entity ent = world.getEntityByID(data.getInteger("player")); + + if(ent instanceof EntityPlayer) { + + EntityPlayer p = (EntityPlayer)ent; + + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.3125); + Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); + float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); + + vec.rotateAroundY(angle); + offset.rotateAroundY(angle); + + double ix = p.posX + vec.xCoord; + double iy = p.posY + p.eyeHeight - 0.9375; + double iz = p.posZ + vec.zCoord; + double ox = offset.xCoord; + double oz = offset.zCoord; + + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); + + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } + } + } + + EntityReddustFX dust1 = new EntityReddustFX(world, ix + ox, iy, iz + oz, 0.8F, 0.5F, 1.0F); + EntityReddustFX dust2 = new EntityReddustFX(world, ix - ox, iy, iz - oz, 0.8F, 0.5F, 1.0F); + dust1.setVelocity(p.motionX, p.motionY, p.motionZ); + dust2.setVelocity(p.motionX, p.motionY, p.motionZ); + Minecraft.getMinecraft().effectRenderer.addEffect(dust1); + Minecraft.getMinecraft().effectRenderer.addEffect(dust2); + } + } + + if("jetpack_dns".equals(type)) { + + if(particleSetting == 2) + return; + + Entity ent = world.getEntityByID(data.getInteger("player")); + + if(ent instanceof EntityPlayer) { + + EntityPlayer p = (EntityPlayer)ent; + + Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); + float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); + + offset.rotateAroundY(angle); + + double ix = p.posX; + double iy = p.posY - p.getYOffset() - 0.5D; + double iz = p.posZ; + double ox = offset.xCoord; + double oz = offset.zCoord; + + if(particleSetting == 0) { + Vec3 pos = Vec3.createVectorHelper(ix, iy, iz); + Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); + Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); + MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); + + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { + + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); + Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); + + for(int i = 0; i < (10 - delta.lengthVector()); i++) { + vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); + } + } + } + + EntityReddustFX dust1 = new EntityReddustFX(world, ix + ox, iy, iz + oz, 0.01F, 1.0F, 1.0F); + EntityReddustFX dust2 = new EntityReddustFX(world, ix - ox, iy, iz - oz, 0.01F, 1.0F, 1.0F); + dust1.setVelocity(p.motionX, p.motionY, p.motionZ); + dust2.setVelocity(p.motionX, p.motionY, p.motionZ); + Minecraft.getMinecraft().effectRenderer.addEffect(dust1); + Minecraft.getMinecraft().effectRenderer.addEffect(dust2); + } + } + + if("muke".equals(type)) { + + ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); + ParticleMukeFlash flash = new ParticleMukeFlash(man, world, x, y, z, data.getBoolean("balefire")); + + Minecraft.getMinecraft().effectRenderer.addEffect(wave); + Minecraft.getMinecraft().effectRenderer.addEffect(flash); + + //single swing: HT 15, MHT 15 + //double swing: HT 60, MHT 50 + + player.hurtTime = 15; + player.maxHurtTime = 15; + player.attackedAtYaw = 0F; + } + + if("tinytot".equals(type)) { + + ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(wave); + + for(double d = 0.0D; d <= 1.6D; d += 0.1) { + ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * 0.05, d + rand.nextGaussian() * 0.02, rand.nextGaussian() * 0.05); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + for(int i = 0; i < 50; i++) { + ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y + 0.5, z, rand.nextGaussian() * 0.5, rand.nextInt(5) == 0 ? 0.02 : 0, rand.nextGaussian() * 0.5); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + for(int i = 0; i < 15; i++) { + double ix = rand.nextGaussian() * 0.2; + double iz = rand.nextGaussian() * 0.2; + + if(ix * ix + iz * iz > 0.75) { + ix *= 0.5; + iz *= 0.5; + } + + double iy = 1.6 + (rand.nextDouble() * 2 - 1) * (0.75 - (ix * ix + iz * iz)) * 0.5; + + ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, ix, iy + rand.nextGaussian() * 0.02, iz); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + player.hurtTime = 15; + player.maxHurtTime = 15; + player.attackedAtYaw = 0F; + } + + if("ufo".equals(type)) { + double motion = data.getDouble("motion"); + ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * motion, 0, rand.nextGaussian() * motion); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + + if("bf".equals(type)) { + ParticleMukeCloud cloud = new ParticleMukeCloudBF(man, world, x, y, z, 0, 0, 0); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + + if("haze".equals(type)) { + + ParticleHaze fog = new ParticleHaze(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(fog); + } + + if("plasmablast".equals(type)) { + + ParticlePlasmaBlast cloud = new ParticlePlasmaBlast(man, world, x, y, z, data.getFloat("r"), data.getFloat("g"), data.getFloat("b"), data.getFloat("pitch"), data.getFloat("yaw")); + cloud.setScale(data.getFloat("scale")); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + + if("justTilt".equals(type)) { + + player.hurtTime = player.maxHurtTime = data.getInteger("time"); + player.attackedAtYaw = 0F; + } + + if("properJolt".equals(type)) { + + player.hurtTime = data.getInteger("time"); + player.maxHurtTime = data.getInteger("maxTime"); + player.attackedAtYaw = 0F; + } + + if("sweat".equals(type)) { + + Entity e = world.getEntityByID(data.getInteger("entity")); + Block b = Block.getBlockById(data.getInteger("block")); + int meta = data.getInteger("meta"); + + if(e instanceof EntityLivingBase) { + + for(int i = 0; i < data.getInteger("count"); i++) { + + double ix = e.boundingBox.minX - 0.2 + (e.boundingBox.maxX - e.boundingBox.minX + 0.4) * rand.nextDouble(); + double iy = e.boundingBox.minY + (e.boundingBox.maxY - e.boundingBox.minY + 0.2) * rand.nextDouble(); + double iz = e.boundingBox.minZ - 0.2 + (e.boundingBox.maxZ - e.boundingBox.minZ + 0.4) * rand.nextDouble(); + + + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, b, meta); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + } + + if("vomit".equals(type)) { + + Entity e = world.getEntityByID(data.getInteger("entity")); + int count = data.getInteger("count") / (particleSetting + 1); + + if(e instanceof EntityLivingBase) { + + double ix = e.posX; + double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0); + double iz = e.posZ; + + Vec3 vec = e.getLookVec(); + + for(int i = 0; i < count; i++) { + + if("normal".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13)); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("blood".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.redstone_block, 0); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("smoke".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.yCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.zCoord + rand.nextGaussian() * 0.1) * 0.05, 0.2F); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(10), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + } + } + + if("radiation".equals(type)) { + + for(int i = 0; i < data.getInteger("count"); i++) { + + EntityAuraFX flash = new EntityAuraFX(world, + player.posX + rand.nextGaussian() * 4, + player.posY + rand.nextGaussian() * 2, + player.posZ + rand.nextGaussian() * 4, + 0, 0, 0); + + flash.setRBGColorF(0F, 0.75F, 1F); + flash.setVelocity(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian()); + Minecraft.getMinecraft().effectRenderer.addEffect(flash); + } + } + + if("schrabfog".equals(type)) { + + EntityAuraFX flash = new EntityAuraFX(world, x, y, z, 0, 0, 0); + flash.setRBGColorF(0F, 1F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(flash); + } + + if("hadron".equals(type)) { + + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); + } + + if("rift".equals(type)) { + + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z)); + } + + if("rbmkflame".equals(type)) { + int maxAge = data.getInteger("maxAge"); + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge)); + } + + if("rbmkmush".equals(type)) { + float scale = data.getFloat("scale"); + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale)); + } + + if("tower".equals(type)) { + if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { + ParticleCoolingTower fx = new ParticleCoolingTower(man, world, x, y, z); + fx.setLift(data.getFloat("lift")); + fx.setBaseScale(data.getFloat("base")); + fx.setMaxScale(data.getFloat("max")); + fx.setLife(data.getInteger("life") / (particleSetting + 1)); + if(data.hasKey("noWind")) fx.noWind(); + if(data.hasKey("strafe")) fx.setStrafe(data.getFloat("strafe")); + if(data.hasKey("alpha")) fx.alphaMod(data.getFloat("alpha")); + + if(data.hasKey("color")) { + Color color = new Color(data.getInteger("color")); + fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("splash".equals(type)) { + if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { + ParticleSplash fx = new ParticleSplash(man, world, x, y, z); + + if(data.hasKey("color")) { + Color color = new Color(data.getInteger("color")); + float f = 1F - rand.nextFloat() * 0.2F; + fx.setRBGColorF(color.getRed() / 255F * f, color.getGreen() / 255F * f, color.getBlue() / 255F * f); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } + + if("fluidfill".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + + EntityFX fx = new net.minecraft.client.particle.EntityCritFX(world, x, y, z, mX, mY, mZ); + fx.nextTextureIndexX(); + + if(data.hasKey("color")) { + Color color = new Color(data.getInteger("color")); + fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("deadleaf".equals(type)) { + if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); + } + + if("anim".equals(type)) { + + String mode = data.getString("mode"); + + /* crucible deploy */ + if("crucible".equals(mode) && player.getHeldItem() != null) { + + BusAnimation animation = new BusAnimation() + .addBus("GUARD_ROT", new BusAnimationSequence() + .addPos(90, 0, 1, 0) + .addPos(90, 0, 1, 800) + .addPos(0, 0, 1, 50)); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); + } + + /* crucible swing */ + if("cSwing".equals(mode)) { + + if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) { + + int offset = rand.nextInt(80) - 20; + + BusAnimation animation = new BusAnimation() + .addBus("SWING_ROT", new BusAnimationSequence() + .addPos(90 - offset, 90 - offset, 35, 75) + .addPos(90 + offset, 90 - offset, -45, 150) + .addPos(0, 0, 0, 500)) + .addBus("SWING_TRANS", new BusAnimationSequence() + .addPos(-3, 0, 0, 75) + .addPos(8, 0, 0, 150) + .addPos(0, 0, 0, 500)); + + Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F)); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); + } + } + + /* chainsaw swing */ + if("sSwing".equals(mode) || "lSwing".equals(mode)) { //temp for lance + + int forward = 150; + int sideways = 100; + int retire = 200; + + if(HbmAnimations.getRelevantAnim() == null) { + + BusAnimation animation = new BusAnimation() + .addBus("SWING_ROT", new BusAnimationSequence() + .addPos(0, 0, 90, forward) + .addPos(45, 0, 90, sideways) + .addPos(0, 0, 0, retire)) + .addBus("SWING_TRANS", new BusAnimationSequence() + .addPos(0, 0, 3, forward) + .addPos(2, 0, 2, sideways) + .addPos(0, 0, 0, retire)); + + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); + + } else { + + double[] rot = HbmAnimations.getRelevantTransformation("SWING_ROT"); + double[] trans = HbmAnimations.getRelevantTransformation("SWING_TRANS"); + + if(System.currentTimeMillis() - HbmAnimations.getRelevantAnim().startMillis < 50) return; + + BusAnimation animation = new BusAnimation() + .addBus("SWING_ROT", new BusAnimationSequence() + .addPos(rot[0], rot[1], rot[2], 0) + .addPos(0, 0, 90, forward) + .addPos(45, 0, 90, sideways) + .addPos(0, 0, 0, retire)) + .addBus("SWING_TRANS", new BusAnimationSequence() + .addPos(trans[0], trans[1], trans[2], 0) + .addPos(0, 0, 3, forward) + .addPos(2, 0, 2, sideways) + .addPos(0, 0, 0, retire)); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null); + } + } + + if("generic".equals(mode)) { + ItemStack stack = player.getHeldItem(); + + if(stack != null && stack.getItem() instanceof IAnimatedItem) { + IAnimatedItem item = (IAnimatedItem) stack.getItem(); + BusAnimation anim = item.getAnimation(data, stack); + + if(anim != null) { + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim, null); + } + } + } + } + + if("tau".equals(type)) { + + for(int i = 0; i < data.getByte("count"); i++) + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05)); + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); + } + + if("vanish".equals(type)) { + int ent = data.getInteger("ent"); + this.vanish(ent); + } + + if("giblets".equals(type)) { + int ent = data.getInteger("ent"); + this.vanish(ent); + Entity e = world.getEntityByID(ent); + + if(e == null) + return; + + float width = e.width; + float height = e.height; + int gW = (int)(width / 0.25F); + int gH = (int)(height / 0.25F); + + int count = (int) (gW * 1.5 * gH); + + if(data.hasKey("cDiv")) + count = (int) Math.ceil(count / (double)data.getInteger("cDiv")); + + boolean blowMeIntoTheGodDamnStratosphere = rand.nextInt(15) == 0; + double mult = 1D; + + if(blowMeIntoTheGodDamnStratosphere) + mult *= 10; + + for(int i = 0; i < count; i++) { + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleGiblet(man, world, x, y, z, rand.nextGaussian() * 0.25 * mult, rand.nextDouble() * mult, rand.nextGaussian() * 0.25 * mult)); + } + } + + if("amat".equals(type)) { + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); + } + + if("debug".equals(type)) { + String t = data.getString("text"); + int color = data.getInteger("color"); + float scale = data.getFloat("scale"); + ParticleText text = new ParticleText(world, x, y, z, color, t); + text.multipleParticleScaleBy(scale); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + + if("debugline".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + int color = data.getInteger("color"); + ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + + if("debugdrone".equals(type)) { + Item held = player.getHeldItem() == null ? null : player.getHeldItem().getItem(); + + if(held == ModItems.drone || + held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || + held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || + held == Item.getItemFromBlock(ModBlocks.drone_dock) || + held == Item.getItemFromBlock(ModBlocks.drone_waypoint_request) || + held == Item.getItemFromBlock(ModBlocks.drone_waypoint) || + held == ModItems.drone_linker) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + int color = data.getInteger("color"); + ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + } + + if("network".equals(type)) { + ParticleDebug debug = null; + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + + if("power".equals(data.getString("mode"))) { + debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ); + } + if("fluid".equals(data.getString("mode"))) { + int color = data.getInteger("color"); + debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ, color); + } + Minecraft.getMinecraft().effectRenderer.addEffect(debug); + } + + if("gasfire".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + float scale = data.getFloat("scale"); + ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, scale > 0 ? scale : 6.5F); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } + + if("marker".equals(type)) { + int color = data.getInteger("color"); + String label = data.getString("label"); + int expires = data.getInteger("expires"); + double dist = data.getDouble("dist"); + + RenderOverhead.queuedMarkers.put(new BlockPos(x, y, z), new Marker(color).setDist(dist).setExpire(expires > 0 ? System.currentTimeMillis() + expires : 0).withLabel(label.isEmpty() ? null : label)); + } + + if("casing".equals(type)) { + CasingEjector ejector = CasingEjector.fromId(data.getInteger("ej")); + if(ejector == null) return; + SpentCasing casingConfig = SpentCasing.fromName((data.getString("name"))); + if(casingConfig == null) return; + + for(int i = 0; i < ejector.getAmount(); i++) { + ejector.spawnCasing(man, casingConfig, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); + } + } + + if("foundry".equals(type)) { + int color = data.getInteger("color"); + byte dir = data.getByte("dir"); + float length = data.getFloat("len"); + float base = data.getFloat("base"); + float offset = data.getFloat("off"); + + ParticleFoundry sploosh = new ParticleFoundry(man, world, x, y, z, color, dir, length, base, offset); + Minecraft.getMinecraft().effectRenderer.addEffect(sploosh); + } + + if("frozen".equals(type)) { + player.motionX = 0; + player.motionZ = 0; + player.motionY = Math.min(player.motionY, 0); + player.moveForward = 0; + player.moveStrafing = 0; + } + } + + private static HashMap vanished = new HashMap(); + public static void vanish(int ent) { vanished.put(ent, System.currentTimeMillis() + 2000); } + public static void vanish(int ent, int duration) { vanished.put(ent, System.currentTimeMillis() + duration); } + + @Override + public boolean isVanished(Entity e) { + if(e == null) return false; + if(!this.vanished.containsKey(e.getEntityId())) return false; + return this.vanished.get(e.getEntityId()) > System.currentTimeMillis(); + } + + @Override + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { + + AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound)); + audio.updatePosition(x, y, z); + audio.updateVolume(volume); + audio.updateRange(range); + return audio; + } + + @Override + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { + AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch); + audio.setKeepAlive(keepAlive); + return audio; + } + + @Override + public void playSound(String sound, Object data) { } + + @Override + public void displayTooltip(String msg, int time, int id) { + + if(id != 0) + this.theInfoSystem.push(new InfoEntry(msg, time), id); + else + this.theInfoSystem.push(new InfoEntry(msg, time)); + } + + @Override + public boolean getIsKeyPressed(EnumKeybind key) { + + switch(key){ + case JETPACK: return Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed(); + case TOGGLE_JETPACK: return HbmKeybinds.jetpackKey.getIsKeyPressed(); + case TOGGLE_MAGNET: return HbmKeybinds.magnetKey.getIsKeyPressed(); + case TOGGLE_HEAD: return HbmKeybinds.hudKey.getIsKeyPressed(); + case RELOAD: return HbmKeybinds.reloadKey.getIsKeyPressed(); + case DASH: return HbmKeybinds.dashKey.getIsKeyPressed(); + case TRAIN: return HbmKeybinds.trainKey.getIsKeyPressed(); + case CRANE_UP: return HbmKeybinds.craneUpKey.getIsKeyPressed(); + case CRANE_DOWN: return HbmKeybinds.craneDownKey.getIsKeyPressed(); + case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); + case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed(); + case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed(); + case TOOL_ALT: return HbmKeybinds.copyToolAlt.getIsKeyPressed(); + case TOOL_CTRL: return HbmKeybinds.copyToolCtrl.getIsKeyPressed(); + case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed(); + case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed(); + case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed(); + } + + return false; + } + + @Override + public EntityPlayer me() { + return Minecraft.getMinecraft().thePlayer; + } + + @Override + public void openLink(String url) { + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (Exception e) { } + } + + @Override + public List getSubItems(ItemStack stack) { + + List list = new ArrayList(); + stack.getItem().getSubItems(stack.getItem(), stack.getItem().getCreativeTab(), list); + for(ItemStack sta : list) { + sta.stackSize = stack.stackSize; + } + return list; + } + + @Override + public float getImpactDust(World world) { + return ImpactWorldHandler.getDustForClient(world); + } + + @Override + public float getImpactFire(World world) { + return ImpactWorldHandler.getFireForClient(world); + } + + @Override + public boolean getImpact(World world) { + return ImpactWorldHandler.getImpactForClient(world); + } + + @Override + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { + Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z)); + } + + @Override + public String getLanguageCode() { + Language lang = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage(); + return lang.getLanguageCode(); + } + + @Override + public int getStackColor(ItemStack stack, boolean amplify) { + if(stack == null) return 0x000000; + if(stack.getItem() instanceof ItemBlock) { + Block b = Block.getBlockFromItem(stack.getItem()); + return b.getMaterial().getMaterialMapColor().colorValue; + } + int color = ColorUtil.getAverageColorFromStack(stack); + if(amplify) color = ColorUtil.amplifyColor(color); + return color; + } +} diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c7cb82715..785ce9223 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -61,6 +61,8 @@ public class ResourceManager { public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO(); public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO(); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); + public static final IModelCustom mine_naval = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/NMine.obj")); + //Oil Pumps public static final IModelCustom derrick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/derrick.obj")).asVBO(); @@ -447,6 +449,7 @@ public class ResourceManager { public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_shrapnel.png"); public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png"); + public static final ResourceLocation mine_naval_tex = new ResourceLocation(RefStrings.MODID, "textures/models/NMine.png"); //Heaters public static final ResourceLocation heater_firebox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/firebox.png"); diff --git a/src/main/java/com/hbm/particle/ParticleFoam.java b/src/main/java/com/hbm/particle/ParticleFoam.java new file mode 100644 index 000000000..81579833b --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleFoam.java @@ -0,0 +1,189 @@ +package com.hbm.particle; + +import com.hbm.main.ModEventHandlerClient; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@SideOnly(Side.CLIENT) +public class ParticleFoam extends EntityFX { + + private int age; + public int maxAge; + private float baseScale = 1.0F; + private float maxScale = 1.5F; + + // Parameters for the trail effect + private List trail = new ArrayList(); + private int trailLength = 15; + private float initialVelocity; + private float buoyancy = 0.05F; + private float jitter = 0.15F; + private float drag = 0.96F; + private int explosionPhase; // 0=burst up, 1=peak, 2=settle + + private static class TrailPoint { + double x, y, z; + float alpha; + + public TrailPoint(double x, double y, double z, float alpha) { + this.x = x; + this.y = y; + this.z = z; + this.alpha = alpha; + } + } + + public ParticleFoam(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { + super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); + particleIcon = ModEventHandlerClient.particleBase; + + maxAge = 60 + rand.nextInt(60); + particleGravity = 0.005F + rand.nextFloat() * 0.015F; + + initialVelocity = 2.0F + rand.nextFloat() * 3.0F; + motionY = initialVelocity; + + double angle = rand.nextDouble() * Math.PI * 2; + double strength = rand.nextDouble() * 0.5; + motionX = Math.cos(angle) * strength; + motionZ = Math.sin(angle) * strength; + + explosionPhase = 0; // Start in burst phase + + particleScale = 0.3F + rand.nextFloat() * 0.7F; + } + + public void setBaseScale(float f) { this.baseScale = f; } + public void setMaxScale(float f) { this.maxScale = f; } + public void setTrailLength(int length) { this.trailLength = length; } + public void setBuoyancy(float buoyancy) { this.buoyancy = buoyancy; } + + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + trail.add(0, new TrailPoint(posX, posY, posZ, particleAlpha)); + + while (trail.size() > trailLength) { + trail.remove(trail.size() - 1); + } + + // Update age and phase + ++this.age; + + if (this.age == this.maxAge) { + this.setDead(); + } + + float phaseRatio = (float) age / (float) maxAge; + if (phaseRatio < 0.3F) { + explosionPhase = 0; + + if (phaseRatio < 0.15F) { + motionY += buoyancy * 6.0F; + } else { + motionY += buoyancy * (1.0F - (phaseRatio / 0.3F)) * 2.0F; + } + + particleScale = baseScale + (maxScale - baseScale) * (phaseRatio / 0.3F); + } else if (phaseRatio < 0.6F) { + explosionPhase = 1; + motionY *= 0.98F; + + particleScale = maxScale; + } else { + explosionPhase = 2; + motionY -= particleGravity; + + particleScale = maxScale * (1.0F - ((phaseRatio - 0.6F) / 0.4F) * 0.7F); + } + + particleAlpha = 0.8F * (1.0F - phaseRatio * phaseRatio); + + motionX += (rand.nextFloat() - 0.5F) * jitter; + motionZ += (rand.nextFloat() - 0.5F) * jitter; + + // drag like ninja drags the low taper fade + motionX *= drag; + motionY *= drag; + motionZ *= drag; + + this.moveEntity(this.motionX, motionY, this.motionZ); + + // Kill particle if it hits ground + if (this.onGround || this.isInWeb) { + this.setDead(); + } + } + + public int getFXLayer() { + return 1; + } + + // ty kercig cuz id kms lol + + public void renderParticle(Tessellator p_70539_1_, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) { + renderFoamBubbles(p_70539_1_, p_70539_2_, p_70539_3_, p_70539_4_, p_70539_5_, p_70539_6_, p_70539_7_, + posX, posY, posZ, particleScale, particleAlpha); + + for (int i = 1; i < trail.size(); i++) { + TrailPoint point = trail.get(i); + float trailScale = particleScale * (1.0F - (float)i / trailLength); + float trailAlpha = particleAlpha * (1.0F - (float)i / trailLength) * 0.7F; + + renderFoamBubbles(p_70539_1_, p_70539_2_, p_70539_3_, p_70539_4_, p_70539_5_, p_70539_6_, p_70539_7_, + point.x, point.y, point.z, trailScale, trailAlpha); + } + } + + private void renderFoamBubbles(Tessellator tessellator, float p_70539_2_, float p_70539_3_, float p_70539_4_, + float p_70539_5_, float p_70539_6_, float p_70539_7_, double x, double y, double z, float scale, float alpha) { + + Random urandom = new Random(this.getEntityId() + (long)(x * 100) + (long)(y * 10) + (long)z); + + int bubbleCount = explosionPhase == 0 ? 8 : (explosionPhase == 1 ? 6 : 4); + + for (int i = 0; i < bubbleCount; i++) { + float whiteness = 0.9F + urandom.nextFloat() * 0.1F; + tessellator.setColorRGBA_F(whiteness, whiteness, whiteness, alpha); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + + float bubbleScale = scale * (urandom.nextFloat() * 0.5F + 0.75F); + float offset = explosionPhase == 0 ? 0.4F : (explosionPhase == 1 ? 0.6F : 0.9F); + + float pX = (float) ((x - interpPosX) + (urandom.nextGaussian()) * offset); + float pY = (float) ((y - interpPosY) + (urandom.nextGaussian()) * offset * 0.7F); + float pZ = (float) ((z - interpPosZ) + (urandom.nextGaussian()) * offset); + + tessellator.addVertexWithUV( + (double)(pX - p_70539_3_ * bubbleScale - p_70539_6_ * bubbleScale), + (double)(pY - p_70539_4_ * bubbleScale), + (double)(pZ - p_70539_5_ * bubbleScale - p_70539_7_ * bubbleScale), + particleIcon.getMaxU(), particleIcon.getMaxV()); + tessellator.addVertexWithUV( + (double)(pX - p_70539_3_ * bubbleScale + p_70539_6_ * bubbleScale), + (double)(pY + p_70539_4_ * bubbleScale), + (double)(pZ - p_70539_5_ * bubbleScale + p_70539_7_ * bubbleScale), + particleIcon.getMaxU(), particleIcon.getMinV()); + tessellator.addVertexWithUV( + (double)(pX + p_70539_3_ * bubbleScale + p_70539_6_ * bubbleScale), + (double)(pY + p_70539_4_ * bubbleScale), + (double)(pZ + p_70539_5_ * bubbleScale + p_70539_7_ * bubbleScale), + particleIcon.getMinU(), particleIcon.getMinV()); + tessellator.addVertexWithUV( + (double)(pX + p_70539_3_ * bubbleScale - p_70539_6_ * bubbleScale), + (double)(pY - p_70539_4_ * bubbleScale), + (double)(pZ + p_70539_5_ * bubbleScale - p_70539_7_ * bubbleScale), + particleIcon.getMinU(), particleIcon.getMaxV()); + } + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index 4e8ee9def..d544d25e0 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -54,6 +54,12 @@ public class RenderLandmine extends TileEntitySpecialRenderer { bindTexture(ResourceManager.mine_fat_tex); ResourceManager.mine_fat.renderAll(); } + if(block == ModBlocks.mine_naval) { + GL11.glScaled(1D, 1D, 1D); + GL11.glTranslated(0,0.5,0); + bindTexture(ResourceManager.mine_naval_tex); + ResourceManager.mine_naval.renderAll(); + } GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/world/gen/NBTStructure.java b/src/main/java/com/hbm/world/gen/NBTStructure.java index e7e03185c..f994a0049 100644 --- a/src/main/java/com/hbm/world/gen/NBTStructure.java +++ b/src/main/java/com/hbm/world/gen/NBTStructure.java @@ -794,6 +794,7 @@ public class NBTStructure { } + // Each jigsaw block in a structure will instance one of these private static class JigsawConnection { diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 3063545d8..a10b635ca 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5337,6 +5337,7 @@ tile.deco_pipe_rim_green_rusted.name=Rusty Green Steel Pipe (Rimmed) tile.deco_pipe_rim_red.name=Red Steel Pipe (Rimmed) tile.deco_pipe_rim_marked.name=Gas Pipe (Rimmed) tile.deco_steel.name=Steel Deco Block +tile.deco_rusty_steel.name=Rusty Steel Deco Block tile.deco_titanium.name=Titanium Deco Block tile.deco_toaster.name=Broken Toaster tile.deco_tungsten.name=Tungsten Deco Block @@ -5739,6 +5740,7 @@ tile.meteor_polished.name=Polished Meteor Block tile.meteor_spawner.name=Cyber Crab Assembler tile.mine_ap.name=Anti-Personell Mine tile.mine_fat.name=Fat Mine +tile.mine_naval.name=Naval Mine tile.mine_he.name=Anti-Tank Mine tile.mine_shrap.name=Shrapnel Mine tile.moon_turf.name=Moon Turf diff --git a/src/main/resources/assets/hbm/models/NMine.obj b/src/main/resources/assets/hbm/models/NMine.obj new file mode 100644 index 000000000..865481154 --- /dev/null +++ b/src/main/resources/assets/hbm/models/NMine.obj @@ -0,0 +1,7212 @@ +# Blender 4.0.2 +# www.blender.org +mtllib NMine.mtl +o Cylinder +v 0.000000 -0.062500 -0.937500 +v 0.000000 0.062500 -0.937500 +v 0.358766 -0.062500 -0.866137 +v 0.358766 0.062500 -0.866137 +v 0.662913 -0.062500 -0.662913 +v 0.662913 0.062500 -0.662913 +v 0.866137 -0.062500 -0.358766 +v 0.866137 0.062500 -0.358766 +v 0.937500 -0.062500 0.000000 +v 0.937500 0.062500 0.000000 +v 0.866137 -0.062500 0.358766 +v 0.866137 0.062500 0.358766 +v 0.662913 -0.062500 0.662913 +v 0.662913 0.062500 0.662913 +v 0.358766 -0.062500 0.866137 +v 0.358766 0.062500 0.866137 +v 0.000000 -0.062500 0.937500 +v 0.000000 0.062500 0.937500 +v -0.358766 -0.062500 0.866137 +v -0.358766 0.062500 0.866137 +v -0.662913 -0.062500 0.662913 +v -0.662913 0.062500 0.662913 +v -0.866137 -0.062500 0.358766 +v -0.866137 0.062500 0.358766 +v -0.937500 -0.062500 0.000000 +v -0.937500 0.062500 0.000000 +v -0.866137 -0.062500 -0.358766 +v -0.866137 0.062500 -0.358766 +v -0.662913 -0.062500 -0.662913 +v -0.662913 0.062500 -0.662913 +v -0.358766 -0.062500 -0.866137 +v -0.358766 0.062500 -0.866137 +v 0.000000 -0.062500 -1.125000 +v 0.430519 -0.062500 -1.039364 +v 0.430519 0.062500 -1.039364 +v 0.000000 0.062500 -1.125000 +v 0.795495 -0.062500 -0.795495 +v 0.795495 0.062500 -0.795495 +v 1.039364 -0.062500 -0.430519 +v 1.039364 0.062500 -0.430519 +v 1.125000 -0.062500 0.000000 +v 1.125000 0.062500 0.000000 +v 1.039364 -0.062500 0.430519 +v 1.039364 0.062500 0.430519 +v 0.795495 -0.062500 0.795495 +v 0.795495 0.062500 0.795495 +v 0.430519 -0.062500 1.039364 +v 0.430519 0.062500 1.039364 +v 0.000000 -0.062500 1.125000 +v 0.000000 0.062500 1.125000 +v -0.430519 -0.062500 1.039364 +v -0.430519 0.062500 1.039364 +v -0.795495 -0.062500 0.795495 +v -0.795495 0.062500 0.795495 +v -1.039364 -0.062500 0.430519 +v -1.039364 0.062500 0.430519 +v -1.125000 -0.062500 0.000000 +v -1.125000 0.062500 0.000000 +v -1.039364 -0.062500 -0.430519 +v -1.039364 0.062500 -0.430519 +v -0.795495 -0.062500 -0.795495 +v -0.795495 0.062500 -0.795495 +v -0.430519 -0.062500 -1.039364 +v -0.430519 0.062500 -1.039364 +v -0.577350 -0.577350 0.577350 +v -0.577350 0.577350 0.577350 +v -0.577350 -0.577350 -0.577350 +v -0.577350 0.577350 -0.577350 +v 0.577350 -0.577350 0.577350 +v 0.577350 0.577350 0.577350 +v 0.577350 -0.577350 -0.577350 +v 0.577350 0.577350 -0.577350 +v -0.618670 -0.618670 -0.484248 +v -0.664003 -0.664003 -0.343804 +v -0.695814 -0.695814 -0.178005 +v -0.707107 -0.707107 -0.000000 +v -0.695814 -0.695814 0.178005 +v -0.664003 -0.664003 0.343804 +v -0.618670 -0.618670 0.484248 +v -0.618670 -0.484248 0.618670 +v -0.664003 -0.343804 0.664003 +v -0.695814 -0.178005 0.695814 +v -0.707107 -0.000000 0.707107 +v -0.695814 0.178005 0.695814 +v -0.664003 0.343804 0.664003 +v -0.618670 0.484248 0.618670 +v -0.618670 0.618670 0.484248 +v -0.664003 0.664003 0.343804 +v -0.695814 0.695814 0.178005 +v -0.707107 0.707107 0.000000 +v -0.695814 0.695814 -0.178005 +v -0.664003 0.664003 -0.343804 +v -0.618670 0.618670 -0.484248 +v -0.618670 0.484248 -0.618670 +v -0.664003 0.343804 -0.664003 +v -0.695814 0.178005 -0.695814 +v -0.707107 -0.000000 -0.707107 +v -0.695814 -0.178005 -0.695814 +v -0.664003 -0.343804 -0.664003 +v -0.618670 -0.484248 -0.618670 +v 0.484248 -0.618670 -0.618670 +v 0.343804 -0.664003 -0.664003 +v 0.178005 -0.695814 -0.695814 +v 0.000000 -0.707107 -0.707107 +v -0.178005 -0.695814 -0.695814 +v -0.343804 -0.664003 -0.664003 +v -0.484248 -0.618670 -0.618670 +v -0.484248 0.618670 -0.618670 +v -0.343804 0.664003 -0.664003 +v -0.178005 0.695814 -0.695814 +v -0.000000 0.707107 -0.707107 +v 0.178005 0.695814 -0.695814 +v 0.343804 0.664003 -0.664003 +v 0.484248 0.618670 -0.618670 +v 0.618670 0.484248 -0.618670 +v 0.664003 0.343804 -0.664003 +v 0.695814 0.178005 -0.695814 +v 0.707107 -0.000000 -0.707107 +v 0.695814 -0.178005 -0.695814 +v 0.664003 -0.343804 -0.664003 +v 0.618670 -0.484248 -0.618670 +v 0.618670 -0.618670 0.484248 +v 0.664003 -0.664003 0.343804 +v 0.695814 -0.695814 0.178005 +v 0.707107 -0.707107 0.000000 +v 0.695814 -0.695814 -0.178005 +v 0.664003 -0.664003 -0.343804 +v 0.618670 -0.618670 -0.484248 +v 0.618670 0.618670 -0.484248 +v 0.664003 0.664003 -0.343804 +v 0.695814 0.695814 -0.178005 +v 0.707107 0.707107 0.000000 +v 0.695814 0.695814 0.178005 +v 0.664003 0.664003 0.343804 +v 0.618670 0.618670 0.484248 +v 0.618670 0.484248 0.618670 +v 0.664003 0.343804 0.664003 +v 0.695814 0.178005 0.695814 +v 0.707107 -0.000000 0.707107 +v 0.695814 -0.178005 0.695814 +v 0.664003 -0.343804 0.664003 +v 0.618670 -0.484248 0.618670 +v -0.484248 -0.618670 0.618670 +v -0.343804 -0.664003 0.664003 +v -0.178005 -0.695814 0.695814 +v -0.000000 -0.707107 0.707107 +v 0.178005 -0.695814 0.695814 +v 0.343804 -0.664003 0.664003 +v 0.484248 -0.618670 0.618670 +v 0.484248 0.618670 0.618670 +v 0.343804 0.664003 0.664003 +v 0.178005 0.695814 0.695814 +v -0.000000 0.707107 0.707107 +v -0.178005 0.695814 0.695814 +v -0.343804 0.664003 0.664003 +v -0.484248 0.618670 0.618670 +v -0.707027 -0.500057 0.500057 +v -0.771950 -0.352170 0.529217 +v -0.813276 -0.181863 0.552728 +v -0.827348 -0.000000 0.561691 +v -0.813276 0.181863 0.552728 +v -0.771950 0.352170 0.529217 +v -0.707027 0.500057 0.500057 +v -0.771950 -0.529217 0.352169 +v -0.852438 -0.369696 0.369696 +v -0.902895 -0.190245 0.385471 +v -0.919965 -0.000000 0.392001 +v -0.902895 0.190245 0.385471 +v -0.852438 0.369696 0.369696 +v -0.771950 0.529217 0.352169 +v -0.813276 -0.552728 0.181863 +v -0.902895 -0.385471 0.190245 +v -0.959842 -0.198372 0.198372 +v -0.979399 0.000000 0.201936 +v -0.959842 0.198372 0.198372 +v -0.902895 0.385471 0.190245 +v -0.813276 0.552728 0.181863 +v -0.827348 -0.561691 -0.000000 +v -0.919965 -0.392001 -0.000000 +v -0.979399 -0.201936 0.000000 +v -1.000000 0.000000 0.000000 +v -0.979399 0.201936 0.000000 +v -0.919965 0.392001 0.000000 +v -0.827348 0.561691 0.000000 +v -0.813276 -0.552728 -0.181863 +v -0.902895 -0.385471 -0.190245 +v -0.959842 -0.198372 -0.198372 +v -0.979399 0.000000 -0.201936 +v -0.959843 0.198372 -0.198372 +v -0.902895 0.385471 -0.190245 +v -0.813276 0.552728 -0.181863 +v -0.771950 -0.529217 -0.352169 +v -0.852438 -0.369696 -0.369696 +v -0.902895 -0.190245 -0.385471 +v -0.919965 0.000000 -0.392001 +v -0.902895 0.190245 -0.385471 +v -0.852438 0.369696 -0.369696 +v -0.771950 0.529217 -0.352170 +v -0.707027 -0.500057 -0.500057 +v -0.771950 -0.352169 -0.529217 +v -0.813276 -0.181863 -0.552728 +v -0.827348 0.000000 -0.561690 +v -0.813276 0.181863 -0.552728 +v -0.771950 0.352170 -0.529217 +v -0.707027 0.500057 -0.500057 +v -0.500057 -0.500057 -0.707027 +v -0.529217 -0.352170 -0.771950 +v -0.552728 -0.181863 -0.813276 +v -0.561690 -0.000000 -0.827348 +v -0.552728 0.181863 -0.813276 +v -0.529217 0.352169 -0.771950 +v -0.500057 0.500057 -0.707027 +v -0.352169 -0.529217 -0.771950 +v -0.369696 -0.369696 -0.852438 +v -0.385471 -0.190245 -0.902895 +v -0.392001 -0.000000 -0.919965 +v -0.385471 0.190245 -0.902895 +v -0.369696 0.369696 -0.852438 +v -0.352169 0.529217 -0.771950 +v -0.181863 -0.552728 -0.813276 +v -0.190245 -0.385471 -0.902895 +v -0.198372 -0.198372 -0.959843 +v -0.201936 -0.000000 -0.979399 +v -0.198372 0.198372 -0.959842 +v -0.190245 0.385471 -0.902895 +v -0.181863 0.552728 -0.813276 +v 0.000000 -0.561691 -0.827348 +v 0.000000 -0.392001 -0.919965 +v 0.000000 -0.201936 -0.979399 +v 0.000000 0.000000 -1.000000 +v 0.000000 0.201936 -0.979399 +v -0.000000 0.392001 -0.919965 +v -0.000000 0.561691 -0.827348 +v 0.181863 -0.552728 -0.813276 +v 0.190245 -0.385471 -0.902895 +v 0.198372 -0.198372 -0.959842 +v 0.201936 0.000000 -0.979399 +v 0.198372 0.198372 -0.959843 +v 0.190245 0.385471 -0.902895 +v 0.181863 0.552728 -0.813276 +v 0.352169 -0.529217 -0.771950 +v 0.369696 -0.369696 -0.852438 +v 0.385471 -0.190245 -0.902895 +v 0.392001 0.000000 -0.919965 +v 0.385471 0.190245 -0.902895 +v 0.369696 0.369696 -0.852438 +v 0.352170 0.529217 -0.771950 +v 0.500057 -0.500057 -0.707027 +v 0.529217 -0.352169 -0.771950 +v 0.552728 -0.181863 -0.813276 +v 0.561690 0.000000 -0.827348 +v 0.552728 0.181863 -0.813276 +v 0.529217 0.352170 -0.771950 +v 0.500057 0.500057 -0.707027 +v 0.707027 -0.500057 -0.500057 +v 0.771950 -0.352170 -0.529217 +v 0.813276 -0.181863 -0.552728 +v 0.827348 -0.000000 -0.561690 +v 0.813276 0.181863 -0.552728 +v 0.771950 0.352169 -0.529217 +v 0.707027 0.500057 -0.500057 +v 0.771950 -0.529217 -0.352169 +v 0.852438 -0.369696 -0.369696 +v 0.902895 -0.190245 -0.385471 +v 0.919965 -0.000000 -0.392001 +v 0.902895 0.190245 -0.385471 +v 0.852438 0.369696 -0.369696 +v 0.771950 0.529217 -0.352169 +v 0.813276 -0.552728 -0.181863 +v 0.902895 -0.385471 -0.190245 +v 0.959843 -0.198372 -0.198372 +v 0.979399 -0.000000 -0.201936 +v 0.959842 0.198372 -0.198372 +v 0.902895 0.385471 -0.190245 +v 0.813276 0.552728 -0.181863 +v 0.827348 -0.561691 0.000000 +v 0.919965 -0.392001 0.000000 +v 0.979399 -0.201936 0.000000 +v 1.000000 0.000000 0.000000 +v 0.979399 0.201936 0.000000 +v 0.919965 0.392001 -0.000000 +v 0.827348 0.561691 -0.000000 +v 0.813276 -0.552728 0.181863 +v 0.902895 -0.385471 0.190245 +v 0.959842 -0.198372 0.198372 +v 0.979399 0.000000 0.201936 +v 0.959843 0.198372 0.198372 +v 0.902895 0.385471 0.190245 +v 0.813276 0.552728 0.181863 +v 0.771950 -0.529217 0.352169 +v 0.852438 -0.369696 0.369696 +v 0.902895 -0.190245 0.385471 +v 0.919965 0.000000 0.392001 +v 0.902895 0.190245 0.385471 +v 0.852438 0.369696 0.369696 +v 0.771950 0.529217 0.352170 +v 0.707027 -0.500057 0.500057 +v 0.771950 -0.352169 0.529217 +v 0.813276 -0.181863 0.552728 +v 0.827348 0.000000 0.561691 +v 0.813276 0.181863 0.552728 +v 0.771950 0.352170 0.529217 +v 0.707027 0.500057 0.500057 +v 0.500057 -0.500057 0.707027 +v 0.529217 -0.352170 0.771950 +v 0.552728 -0.181863 0.813276 +v 0.561690 -0.000000 0.827348 +v 0.552728 0.181863 0.813276 +v 0.529217 0.352169 0.771950 +v 0.500057 0.500057 0.707027 +v 0.352169 -0.529217 0.771950 +v 0.369696 -0.369696 0.852438 +v 0.385471 -0.190245 0.902895 +v 0.392001 -0.000000 0.919965 +v 0.385471 0.190245 0.902895 +v 0.369696 0.369696 0.852438 +v 0.352169 0.529217 0.771950 +v 0.181863 -0.552728 0.813276 +v 0.190245 -0.385471 0.902895 +v 0.198372 -0.198372 0.959843 +v 0.201936 -0.000000 0.979399 +v 0.198372 0.198372 0.959842 +v 0.190245 0.385471 0.902895 +v 0.181863 0.552728 0.813276 +v -0.000000 -0.561691 0.827348 +v -0.000000 -0.392001 0.919965 +v -0.000000 -0.201936 0.979399 +v -0.000000 0.000000 1.000000 +v -0.000000 0.201936 0.979399 +v 0.000000 0.392001 0.919965 +v 0.000000 0.561691 0.827348 +v -0.181863 -0.552728 0.813276 +v -0.190245 -0.385471 0.902895 +v -0.198372 -0.198372 0.959842 +v -0.201936 0.000000 0.979399 +v -0.198372 0.198372 0.959843 +v -0.190245 0.385471 0.902895 +v -0.181863 0.552728 0.813276 +v -0.352169 -0.529217 0.771950 +v -0.369696 -0.369696 0.852438 +v -0.385471 -0.190245 0.902895 +v -0.392001 0.000000 0.919965 +v -0.385471 0.190245 0.902895 +v -0.369696 0.369696 0.852438 +v -0.352170 0.529217 0.771950 +v -0.500057 -0.500057 0.707027 +v -0.529217 -0.352169 0.771950 +v -0.552728 -0.181863 0.813276 +v -0.561690 0.000000 0.827348 +v -0.552728 0.181863 0.813276 +v -0.529217 0.352170 0.771950 +v -0.500057 0.500057 0.707027 +v -0.500057 -0.707027 -0.500057 +v -0.352170 -0.771950 -0.529217 +v -0.181863 -0.813276 -0.552728 +v -0.000000 -0.827348 -0.561691 +v 0.181863 -0.813276 -0.552728 +v 0.352169 -0.771950 -0.529217 +v 0.500057 -0.707027 -0.500057 +v -0.529217 -0.771950 -0.352169 +v -0.369696 -0.852438 -0.369696 +v -0.190245 -0.902895 -0.385471 +v -0.000000 -0.919965 -0.392001 +v 0.190245 -0.902895 -0.385471 +v 0.369696 -0.852438 -0.369696 +v 0.529217 -0.771950 -0.352169 +v -0.552728 -0.813276 -0.181863 +v -0.385471 -0.902895 -0.190245 +v -0.198372 -0.959843 -0.198372 +v -0.000000 -0.979399 -0.201936 +v 0.198372 -0.959842 -0.198372 +v 0.385471 -0.902895 -0.190245 +v 0.552728 -0.813276 -0.181863 +v -0.561690 -0.827348 0.000000 +v -0.392001 -0.919965 0.000000 +v -0.201936 -0.979399 0.000000 +v 0.000000 -1.000000 0.000000 +v 0.201936 -0.979399 0.000000 +v 0.392001 -0.919965 -0.000000 +v 0.561691 -0.827348 0.000000 +v -0.552728 -0.813276 0.181863 +v -0.385471 -0.902895 0.190245 +v -0.198372 -0.959842 0.198372 +v 0.000000 -0.979399 0.201936 +v 0.198372 -0.959843 0.198372 +v 0.385471 -0.902895 0.190245 +v 0.552728 -0.813276 0.181863 +v -0.529217 -0.771950 0.352169 +v -0.369696 -0.852438 0.369696 +v -0.190245 -0.902895 0.385471 +v 0.000000 -0.919965 0.392001 +v 0.190245 -0.902895 0.385471 +v 0.369696 -0.852438 0.369696 +v 0.529217 -0.771950 0.352170 +v -0.500057 -0.707027 0.500057 +v -0.352169 -0.771950 0.529217 +v -0.181863 -0.813276 0.552728 +v 0.000000 -0.827348 0.561690 +v 0.181863 -0.813276 0.552728 +v 0.352170 -0.771950 0.529217 +v 0.500057 -0.707027 0.500057 +v 0.500057 0.707027 -0.500057 +v 0.352169 0.771950 -0.529217 +v 0.181863 0.813276 -0.552728 +v 0.000000 0.827348 -0.561690 +v -0.181863 0.813276 -0.552728 +v -0.352169 0.771950 -0.529217 +v -0.500057 0.707027 -0.500057 +v 0.529217 0.771950 -0.352169 +v 0.369696 0.852438 -0.369696 +v 0.190245 0.902895 -0.385471 +v 0.000000 0.919965 -0.392001 +v -0.190245 0.902895 -0.385471 +v -0.369696 0.852438 -0.369696 +v -0.529217 0.771950 -0.352169 +v 0.552728 0.813276 -0.181863 +v 0.385471 0.902895 -0.190245 +v 0.198372 0.959843 -0.198372 +v 0.000000 0.979399 -0.201936 +v -0.198372 0.959842 -0.198372 +v -0.385471 0.902895 -0.190245 +v -0.552728 0.813276 -0.181863 +v 0.561690 0.827348 0.000000 +v 0.392001 0.919965 0.000000 +v 0.201936 0.979399 0.000000 +v -0.000000 1.000000 0.000000 +v -0.201936 0.979399 0.000000 +v -0.392001 0.919965 -0.000000 +v -0.561691 0.827348 0.000000 +v 0.552728 0.813276 0.181863 +v 0.385471 0.902895 0.190245 +v 0.198372 0.959843 0.198372 +v -0.000000 0.979399 0.201936 +v -0.198372 0.959843 0.198372 +v -0.385471 0.902895 0.190245 +v -0.552728 0.813276 0.181863 +v 0.529217 0.771950 0.352169 +v 0.369696 0.852438 0.369696 +v 0.190245 0.902895 0.385471 +v -0.000000 0.919965 0.392001 +v -0.190245 0.902895 0.385471 +v -0.369696 0.852438 0.369696 +v -0.529217 0.771950 0.352170 +v 0.500057 0.707027 0.500057 +v 0.352169 0.771950 0.529217 +v 0.181863 0.813276 0.552728 +v -0.000000 0.827348 0.561690 +v -0.181863 0.813276 0.552728 +v -0.352170 0.771950 0.529217 +v -0.500057 0.707027 0.500057 +v 0.000000 -1.062500 -0.187500 +v 0.000000 -0.937500 -0.250000 +v 0.132583 -1.062500 -0.132583 +v 0.176777 -0.937500 -0.176777 +v 0.187500 -1.062500 0.000000 +v 0.250000 -0.937500 0.000000 +v 0.132583 -1.062500 0.132583 +v 0.176777 -0.937500 0.176777 +v 0.000000 -1.062500 0.187500 +v 0.000000 -0.937500 0.250000 +v -0.132583 -1.062500 0.132583 +v -0.176777 -0.937500 0.176777 +v -0.187500 -1.062500 0.000000 +v -0.250000 -0.937500 0.000000 +v -0.132583 -1.062500 -0.132583 +v -0.176777 -0.937500 -0.176777 +v 0.000000 -1.062500 -0.250000 +v 0.176777 -1.062500 -0.176777 +v 0.250000 -1.062500 0.000000 +v 0.176777 -1.062500 0.176777 +v 0.000000 -1.062500 0.250000 +v -0.176777 -1.062500 0.176777 +v -0.250000 -1.062500 0.000000 +v -0.176777 -1.062500 -0.176777 +v 0.000000 -1.125000 -0.151562 +v 0.107171 -1.125000 -0.107171 +v 0.151562 -1.125000 0.000000 +v 0.107171 -1.125000 0.107171 +v 0.000000 -1.125000 0.151562 +v -0.107171 -1.125000 0.107171 +v -0.151562 -1.125000 0.000000 +v -0.107171 -1.125000 -0.107171 +v -0.062500 -1.250000 0.062500 +v -0.062500 -1.125000 0.062500 +v -0.062500 -1.250000 -0.062500 +v -0.062500 -1.125000 -0.062500 +v 0.062500 -1.250000 0.062500 +v 0.062500 -1.125000 0.062500 +v 0.062500 -1.250000 -0.062500 +v 0.062500 -1.125000 -0.062500 +v -0.062500 -1.250000 -0.125000 +v -0.062500 -1.312500 -0.062500 +v -0.062500 -1.312500 0.062500 +v -0.062500 -1.250000 0.125000 +v -0.062500 -1.125000 0.125000 +v -0.062500 -1.125000 -0.125000 +v 0.062500 -1.125000 -0.125000 +v 0.062500 -1.312500 -0.062500 +v 0.062500 -1.250000 -0.125000 +v 0.062500 -1.250000 0.125000 +v 0.062500 -1.312500 0.062500 +v 0.062500 -1.125000 0.125000 +v 0.524138 1.183721 -0.031250 +v 0.536097 1.178767 0.000000 +v 0.524138 1.183721 0.031250 +v 0.495267 1.195680 0.044194 +v 0.466395 1.207638 0.031250 +v 0.454437 1.212592 0.000000 +v 0.466395 1.207638 -0.031250 +v 0.502272 1.212592 0.000000 +v 0.495267 1.195680 -0.044194 +v 0.358766 0.866137 -0.187500 +v 0.382683 0.923880 -0.125000 +v 0.481256 0.815400 -0.132583 +v 0.464344 0.890055 -0.088388 +v 0.531993 0.794384 0.000000 +v 0.498168 0.876044 0.000000 +v 0.481256 0.815400 0.132583 +v 0.464344 0.890055 0.088388 +v 0.358766 0.866137 0.187500 +v 0.382683 0.923880 0.125000 +v 0.236275 0.916874 0.132583 +v 0.301023 0.957704 0.088388 +v 0.185538 0.937890 0.000000 +v 0.267199 0.971715 0.000000 +v 0.236275 0.916874 -0.132583 +v 0.301023 0.957704 -0.088388 +v 0.505174 0.873142 -0.132583 +v 0.382683 0.923880 -0.187500 +v 0.555911 0.852126 0.000000 +v 0.505174 0.873142 0.132583 +v 0.382683 0.923880 0.187500 +v 0.260193 0.974617 0.132583 +v 0.209456 0.995633 0.000000 +v 0.260193 0.974617 -0.132583 +v 0.447431 0.964710 -0.044194 +v 0.406601 0.981622 -0.062500 +v 0.464344 0.957704 0.000000 +v 0.447431 0.964710 0.044194 +v 0.406601 0.981622 0.062500 +v 0.365771 0.998534 0.044194 +v 0.348859 1.005540 0.000000 +v 0.365771 0.998534 -0.044194 +v 0.519184 1.137937 -0.044194 +v 0.478354 1.154849 -0.062500 +v 0.536097 1.130932 0.000000 +v 0.519184 1.137937 0.044194 +v 0.478354 1.154849 0.062500 +v 0.437524 1.171762 0.044194 +v 0.420612 1.178767 0.000000 +v 0.437524 1.171762 -0.044194 +v -0.235006 1.183721 0.469542 +v -0.268048 1.178767 0.464273 +v -0.289132 1.183721 0.438292 +v -0.285907 1.195679 0.406816 +v -0.260261 1.207638 0.388285 +v -0.227218 1.212592 0.393554 +v -0.206134 1.207638 0.419535 +v -0.251136 1.212592 0.434980 +v -0.209360 1.195679 0.451011 +v -0.017003 0.866137 0.404450 +v -0.083089 0.923879 0.393914 +v -0.125808 0.815400 0.483071 +v -0.155625 0.890055 0.446328 +v -0.265997 0.794384 0.460720 +v -0.249084 0.876044 0.431426 +v -0.355448 0.815400 0.350489 +v -0.308718 0.890055 0.357939 +v -0.341763 0.866137 0.216950 +v -0.299595 0.923879 0.268914 +v -0.232958 0.916874 0.138329 +v -0.227058 0.957704 0.216500 +v -0.092769 0.937890 0.160681 +v -0.133599 0.971715 0.231401 +v -0.003318 0.916874 0.270912 +v -0.073965 0.957704 0.304888 +v -0.137767 0.873142 0.503785 +v -0.028962 0.923879 0.425164 +v -0.277955 0.852126 0.481433 +v -0.367407 0.873142 0.371202 +v -0.353721 0.923879 0.237664 +v -0.244916 0.974617 0.159043 +v -0.104728 0.995633 0.181394 +v -0.015277 0.974617 0.291625 +v -0.185442 0.964709 0.409584 +v -0.149174 0.981622 0.383377 +v -0.232172 0.957704 0.402133 +v -0.261989 0.964710 0.365390 +v -0.257427 0.981622 0.320877 +v -0.221159 0.998534 0.294670 +v -0.174429 1.005540 0.302121 +v -0.144612 0.998534 0.338864 +v -0.221319 1.137937 0.471724 +v -0.185051 1.154849 0.445517 +v -0.268048 1.130931 0.464273 +v -0.297866 1.137937 0.427530 +v -0.293304 1.154849 0.383017 +v -0.257035 1.171762 0.356810 +v -0.210306 1.178767 0.364261 +v -0.180489 1.171762 0.401004 +v -0.289132 1.183720 -0.438292 +v -0.268048 1.178767 -0.464274 +v -0.235006 1.183720 -0.469542 +v -0.209360 1.195679 -0.451011 +v -0.206134 1.207638 -0.419535 +v -0.227218 1.212592 -0.393554 +v -0.260261 1.207638 -0.388285 +v -0.251136 1.212592 -0.434980 +v -0.285907 1.195679 -0.406817 +v -0.341763 0.866137 -0.216950 +v -0.299595 0.923879 -0.268914 +v -0.355448 0.815400 -0.350489 +v -0.308718 0.890055 -0.357939 +v -0.265997 0.794384 -0.460720 +v -0.249084 0.876044 -0.431427 +v -0.125808 0.815400 -0.483071 +v -0.155625 0.890055 -0.446328 +v -0.017003 0.866137 -0.404450 +v -0.083089 0.923879 -0.393914 +v -0.003318 0.916874 -0.270912 +v -0.073965 0.957704 -0.304888 +v -0.092769 0.937890 -0.160681 +v -0.133599 0.971715 -0.231401 +v -0.232958 0.916874 -0.138329 +v -0.227058 0.957704 -0.216500 +v -0.367407 0.873142 -0.371202 +v -0.353721 0.923879 -0.237664 +v -0.277955 0.852126 -0.481433 +v -0.137767 0.873142 -0.503785 +v -0.028962 0.923879 -0.425164 +v -0.015277 0.974616 -0.291625 +v -0.104728 0.995632 -0.181394 +v -0.244916 0.974616 -0.159043 +v -0.261989 0.964709 -0.365390 +v -0.257427 0.981622 -0.320877 +v -0.232172 0.957704 -0.402133 +v -0.185442 0.964709 -0.409584 +v -0.149174 0.981622 -0.383377 +v -0.144612 0.998534 -0.338864 +v -0.174429 1.005539 -0.302121 +v -0.221159 0.998534 -0.294670 +v -0.297865 1.137937 -0.427530 +v -0.293304 1.154849 -0.383017 +v -0.268048 1.130931 -0.464273 +v -0.221319 1.137937 -0.471724 +v -0.185051 1.154849 -0.445517 +v -0.180489 1.171762 -0.401004 +v -0.210306 1.178767 -0.364261 +v -0.257035 1.171762 -0.356810 +v 0.827290 0.893036 0.441552 +v 0.819592 0.883883 0.473192 +v 0.796040 0.893036 0.495679 +v 0.770432 0.915133 0.495840 +v 0.757767 0.937230 0.473582 +v 0.765465 0.946383 0.441942 +v 0.789017 0.937230 0.419455 +v 0.803739 0.928078 0.464039 +v 0.814626 0.915133 0.419294 +v 0.667849 0.662912 0.169077 +v 0.674872 0.707107 0.245300 +v 0.721580 0.569162 0.263512 +v 0.710693 0.644607 0.308257 +v 0.688919 0.530330 0.397748 +v 0.688919 0.618718 0.397748 +v 0.588998 0.569162 0.493151 +v 0.622305 0.644607 0.461350 +v 0.480349 0.662912 0.493836 +v 0.549872 0.707107 0.461807 +v 0.426618 0.756662 0.399401 +v 0.514052 0.769607 0.398850 +v 0.459279 0.795495 0.265165 +v 0.535826 0.795495 0.309359 +v 0.559201 0.756662 0.169762 +v 0.602440 0.769607 0.245757 +v 0.759853 0.613357 0.285609 +v 0.706122 0.707107 0.191174 +v 0.727192 0.574524 0.419845 +v 0.627271 0.613357 0.515248 +v 0.518622 0.707107 0.515933 +v 0.464891 0.800857 0.421498 +v 0.497553 0.839689 0.287262 +v 0.597474 0.800857 0.191859 +v 0.699806 0.720051 0.353002 +v 0.681896 0.751301 0.321524 +v 0.688919 0.707107 0.397748 +v 0.655612 0.720051 0.429549 +v 0.619396 0.751301 0.429777 +v 0.601485 0.782551 0.398299 +v 0.612372 0.795495 0.353553 +v 0.645679 0.782551 0.321752 +v 0.814626 0.852633 0.419293 +v 0.796715 0.883883 0.387815 +v 0.803739 0.839689 0.464039 +v 0.770432 0.852633 0.495840 +v 0.734215 0.883883 0.496068 +v 0.716305 0.915133 0.464590 +v 0.727192 0.928077 0.419845 +v 0.760499 0.915133 0.388043 +v 0.031250 0.893036 0.937231 +v -0.000000 0.883883 0.946384 +v -0.031250 0.893036 0.937231 +v -0.044194 0.915133 0.915134 +v -0.031250 0.937230 0.893036 +v -0.000000 0.946383 0.883884 +v 0.031250 0.937230 0.893036 +v -0.000000 0.928077 0.928078 +v 0.044194 0.915133 0.915134 +v 0.187500 0.662912 0.662913 +v 0.125000 0.707107 0.707107 +v 0.132582 0.569162 0.756663 +v 0.088388 0.644607 0.769607 +v -0.000000 0.530330 0.795495 +v -0.000000 0.618718 0.795495 +v -0.132583 0.569162 0.756663 +v -0.088388 0.644607 0.769607 +v -0.187500 0.662912 0.662913 +v -0.125000 0.707107 0.707107 +v -0.132583 0.756662 0.569163 +v -0.088389 0.769607 0.644607 +v -0.000000 0.795495 0.530330 +v -0.000000 0.795495 0.618719 +v 0.132582 0.756662 0.569163 +v 0.088388 0.769607 0.644607 +v 0.132582 0.613357 0.800857 +v 0.187500 0.707107 0.707107 +v -0.000000 0.574524 0.839689 +v -0.132583 0.613357 0.800857 +v -0.187500 0.707107 0.707107 +v -0.132583 0.800857 0.613357 +v -0.000000 0.839689 0.574524 +v 0.132582 0.800857 0.613357 +v 0.044194 0.720051 0.782551 +v 0.062500 0.751301 0.751301 +v -0.000000 0.707107 0.795495 +v -0.044194 0.720051 0.782551 +v -0.062500 0.751301 0.751301 +v -0.044194 0.782551 0.720051 +v -0.000000 0.795495 0.707107 +v 0.044194 0.782551 0.720051 +v 0.044194 0.852633 0.915133 +v 0.062500 0.883883 0.883883 +v -0.000000 0.839689 0.928078 +v -0.044194 0.852633 0.915133 +v -0.062500 0.883883 0.883884 +v -0.044194 0.915133 0.852633 +v -0.000000 0.928077 0.839689 +v 0.044194 0.915133 0.852634 +v -0.796041 0.893036 0.495678 +v -0.819592 0.883883 0.473192 +v -0.827291 0.893036 0.441552 +v -0.814626 0.915133 0.419293 +v -0.789017 0.937230 0.419455 +v -0.765466 0.946383 0.441942 +v -0.757767 0.937230 0.473581 +v -0.803739 0.928077 0.464039 +v -0.770432 0.915133 0.495840 +v -0.480349 0.662912 0.493836 +v -0.549873 0.707107 0.461806 +v -0.588998 0.569162 0.493151 +v -0.622305 0.644607 0.461350 +v -0.688919 0.530330 0.397747 +v -0.688919 0.618718 0.397747 +v -0.721580 0.569162 0.263511 +v -0.710693 0.644607 0.308257 +v -0.667849 0.662912 0.169076 +v -0.674873 0.707107 0.245300 +v -0.559201 0.756662 0.169761 +v -0.602440 0.769607 0.245757 +v -0.459279 0.795495 0.265165 +v -0.535826 0.795495 0.309359 +v -0.426618 0.756662 0.399401 +v -0.514052 0.769607 0.398850 +v -0.627271 0.613357 0.515248 +v -0.518623 0.707107 0.515933 +v -0.727192 0.574524 0.419845 +v -0.759854 0.613357 0.285608 +v -0.706123 0.707107 0.191174 +v -0.597474 0.800857 0.191858 +v -0.497553 0.839689 0.287262 +v -0.464891 0.800857 0.421498 +v -0.655612 0.720051 0.429549 +v -0.619396 0.751301 0.429777 +v -0.688919 0.707107 0.397747 +v -0.699806 0.720051 0.353002 +v -0.681896 0.751301 0.321524 +v -0.645680 0.782551 0.321752 +v -0.612373 0.795495 0.353553 +v -0.601486 0.782551 0.398299 +v -0.770432 0.852633 0.495840 +v -0.734216 0.883883 0.496068 +v -0.803739 0.839689 0.464039 +v -0.814626 0.852633 0.419293 +v -0.796716 0.883883 0.387815 +v -0.760499 0.915133 0.388043 +v -0.727192 0.928077 0.419845 +v -0.716305 0.915133 0.464590 +v -0.827291 0.893036 -0.441552 +v -0.819592 0.883883 -0.473192 +v -0.796040 0.893036 -0.495679 +v -0.770432 0.915133 -0.495840 +v -0.757767 0.937230 -0.473582 +v -0.765465 0.946383 -0.441942 +v -0.789017 0.937230 -0.419455 +v -0.803739 0.928077 -0.464039 +v -0.814626 0.915133 -0.419294 +v -0.667849 0.662912 -0.169077 +v -0.674872 0.707106 -0.245300 +v -0.721580 0.569162 -0.263512 +v -0.710693 0.644607 -0.308257 +v -0.688919 0.530330 -0.397748 +v -0.688919 0.618718 -0.397748 +v -0.588998 0.569162 -0.493151 +v -0.622305 0.644607 -0.461350 +v -0.480349 0.662912 -0.493836 +v -0.549872 0.707106 -0.461807 +v -0.426618 0.756662 -0.399401 +v -0.514052 0.769607 -0.398850 +v -0.459279 0.795495 -0.265165 +v -0.535826 0.795495 -0.309359 +v -0.559201 0.756662 -0.169762 +v -0.602440 0.769607 -0.245757 +v -0.759854 0.613357 -0.285609 +v -0.706122 0.707107 -0.191174 +v -0.727192 0.574524 -0.419845 +v -0.627271 0.613356 -0.515248 +v -0.518622 0.707107 -0.515933 +v -0.464891 0.800856 -0.421498 +v -0.497553 0.839689 -0.287262 +v -0.597474 0.800857 -0.191859 +v -0.699806 0.720051 -0.353002 +v -0.681896 0.751301 -0.321524 +v -0.688919 0.707107 -0.397748 +v -0.655612 0.720051 -0.429549 +v -0.619396 0.751301 -0.429777 +v -0.601485 0.782551 -0.398299 +v -0.612372 0.795495 -0.353554 +v -0.645680 0.782551 -0.321752 +v -0.814626 0.852633 -0.419294 +v -0.796716 0.883883 -0.387815 +v -0.803739 0.839689 -0.464039 +v -0.770432 0.852633 -0.495840 +v -0.734216 0.883883 -0.496069 +v -0.716305 0.915133 -0.464590 +v -0.727192 0.928077 -0.419845 +v -0.760499 0.915133 -0.388044 +v -0.031250 0.893036 -0.937231 +v 0.000000 0.883883 -0.946384 +v 0.031250 0.893036 -0.937231 +v 0.044194 0.915133 -0.915134 +v 0.031250 0.937230 -0.893036 +v 0.000000 0.946383 -0.883884 +v -0.031250 0.937230 -0.893037 +v 0.000000 0.928077 -0.928078 +v -0.044194 0.915133 -0.915134 +v -0.187500 0.662912 -0.662913 +v -0.125000 0.707106 -0.707107 +v -0.132582 0.569162 -0.756663 +v -0.088388 0.644606 -0.769607 +v 0.000000 0.530330 -0.795495 +v 0.000000 0.618718 -0.795495 +v 0.132583 0.569162 -0.756663 +v 0.088389 0.644606 -0.769607 +v 0.187500 0.662912 -0.662913 +v 0.125000 0.707107 -0.707107 +v 0.132583 0.756662 -0.569163 +v 0.088389 0.769606 -0.644607 +v 0.000000 0.795495 -0.530330 +v 0.000000 0.795495 -0.618719 +v -0.132582 0.756662 -0.569163 +v -0.088388 0.769607 -0.644607 +v -0.132582 0.613356 -0.800857 +v -0.187500 0.707106 -0.707107 +v 0.000000 0.574524 -0.839689 +v 0.132583 0.613357 -0.800857 +v 0.187500 0.707107 -0.707107 +v 0.132583 0.800856 -0.613357 +v 0.000000 0.839689 -0.574524 +v -0.132582 0.800856 -0.613357 +v -0.044194 0.720051 -0.782551 +v -0.062500 0.751301 -0.751301 +v 0.000000 0.707107 -0.795495 +v 0.044194 0.720051 -0.782551 +v 0.062500 0.751301 -0.751301 +v 0.044194 0.782551 -0.720051 +v 0.000000 0.795495 -0.707107 +v -0.044194 0.782551 -0.720051 +v -0.044194 0.852633 -0.915134 +v -0.062500 0.883883 -0.883884 +v 0.000000 0.839689 -0.928078 +v 0.044194 0.852633 -0.915134 +v 0.062500 0.883883 -0.883884 +v 0.044194 0.915133 -0.852634 +v 0.000000 0.928077 -0.839689 +v -0.044194 0.915133 -0.852634 +v 0.796041 0.893036 -0.495678 +v 0.819592 0.883883 -0.473192 +v 0.827291 0.893036 -0.441552 +v 0.814626 0.915133 -0.419293 +v 0.789017 0.937230 -0.419455 +v 0.765466 0.946383 -0.441941 +v 0.757767 0.937230 -0.473581 +v 0.803739 0.928077 -0.464039 +v 0.770432 0.915133 -0.495840 +v 0.480349 0.662912 -0.493836 +v 0.549873 0.707106 -0.461806 +v 0.588998 0.569162 -0.493151 +v 0.622305 0.644607 -0.461350 +v 0.688919 0.530330 -0.397747 +v 0.688919 0.618718 -0.397747 +v 0.721580 0.569162 -0.263511 +v 0.710693 0.644606 -0.308257 +v 0.667849 0.662912 -0.169077 +v 0.674872 0.707106 -0.245300 +v 0.559201 0.756662 -0.169761 +v 0.602440 0.769606 -0.245757 +v 0.459279 0.795495 -0.265165 +v 0.535826 0.795495 -0.309359 +v 0.426618 0.756662 -0.399401 +v 0.514052 0.769607 -0.398850 +v 0.627271 0.613356 -0.515248 +v 0.518622 0.707106 -0.515933 +v 0.727192 0.574524 -0.419845 +v 0.759854 0.613356 -0.285608 +v 0.706123 0.707107 -0.191173 +v 0.597474 0.800856 -0.191858 +v 0.497553 0.839689 -0.287262 +v 0.464891 0.800857 -0.421498 +v 0.655612 0.720051 -0.429549 +v 0.619396 0.751301 -0.429777 +v 0.688919 0.707107 -0.397747 +v 0.699806 0.720051 -0.353002 +v 0.681896 0.751301 -0.321524 +v 0.645680 0.782551 -0.321752 +v 0.612373 0.795495 -0.353553 +v 0.601485 0.782551 -0.398299 +v 0.770432 0.852633 -0.495840 +v 0.734216 0.883883 -0.496068 +v 0.803739 0.839689 -0.464039 +v 0.814626 0.852633 -0.419293 +v 0.796716 0.883883 -0.387815 +v 0.760499 0.915133 -0.388043 +v 0.727192 0.928077 -0.419845 +v 0.716305 0.915133 -0.464590 +v 1.207638 0.466395 -0.031250 +v 1.212592 0.454437 0.000000 +v 1.207638 0.466395 0.031250 +v 1.195679 0.495267 0.044194 +v 1.183721 0.524138 0.031250 +v 1.178767 0.536097 0.000000 +v 1.183721 0.524138 -0.031250 +v 1.212592 0.502272 0.000000 +v 1.195679 0.495267 -0.044194 +v 0.866137 0.358766 -0.187500 +v 0.923880 0.382683 -0.125000 +v 0.916874 0.236275 -0.132583 +v 0.957704 0.301023 -0.088388 +v 0.937890 0.185538 0.000000 +v 0.971715 0.267199 0.000000 +v 0.916874 0.236275 0.132583 +v 0.957704 0.301023 0.088388 +v 0.866137 0.358766 0.187500 +v 0.923880 0.382683 0.125000 +v 0.815400 0.481256 0.132583 +v 0.890055 0.464344 0.088388 +v 0.794384 0.531993 0.000000 +v 0.876044 0.498168 0.000000 +v 0.815400 0.481256 -0.132583 +v 0.890055 0.464344 -0.088388 +v 0.974617 0.260193 -0.132583 +v 0.923880 0.382683 -0.187500 +v 0.995633 0.209456 0.000000 +v 0.974617 0.260193 0.132583 +v 0.923880 0.382683 0.187500 +v 0.873142 0.505174 0.132583 +v 0.852126 0.555911 0.000000 +v 0.873142 0.505174 -0.132583 +v 0.998534 0.365771 -0.044194 +v 0.981622 0.406601 -0.062500 +v 1.005540 0.348859 0.000000 +v 0.998534 0.365771 0.044194 +v 0.981622 0.406601 0.062500 +v 0.964710 0.447431 0.044194 +v 0.957704 0.464344 0.000000 +v 0.964710 0.447431 -0.044194 +v 1.171762 0.437524 -0.044194 +v 1.154849 0.478354 -0.062500 +v 1.178767 0.420612 0.000000 +v 1.171762 0.437524 0.044194 +v 1.154849 0.478354 0.062500 +v 1.137937 0.519184 0.044194 +v 1.130932 0.536097 0.000000 +v 1.137937 0.519184 -0.044194 +v 0.630883 0.466395 1.030221 +v 0.606296 0.454437 1.050135 +v 0.576756 0.466396 1.061471 +v 0.559566 0.495267 1.057586 +v 0.564797 0.524138 1.040757 +v 0.589384 0.536097 1.020842 +v 0.618924 0.524138 1.009507 +v 0.606296 0.502272 1.050135 +v 0.636113 0.495267 1.013392 +v 0.595448 0.358766 0.656347 +v 0.570193 0.382683 0.737603 +v 0.573257 0.236275 0.727745 +v 0.555399 0.301023 0.785202 +v 0.468945 0.185538 0.812237 +v 0.485857 0.267199 0.841530 +v 0.343617 0.236276 0.860328 +v 0.402306 0.301023 0.873590 +v 0.270689 0.358766 0.843847 +v 0.353687 0.382683 0.862603 +v 0.292880 0.481256 0.772448 +v 0.368481 0.464344 0.815004 +v 0.397192 0.531993 0.687957 +v 0.438022 0.498168 0.758676 +v 0.522520 0.481256 0.639866 +v 0.521574 0.464344 0.726616 +v 0.602128 0.260193 0.777752 +v 0.624320 0.382683 0.706353 +v 0.497816 0.209456 0.862243 +v 0.372488 0.260193 0.910334 +v 0.299560 0.382683 0.893853 +v 0.321751 0.505174 0.822455 +v 0.426063 0.555911 0.737963 +v 0.551391 0.505174 0.689872 +v 0.537540 0.365771 0.842659 +v 0.544938 0.406601 0.818860 +v 0.502770 0.348859 0.870823 +v 0.460994 0.365771 0.886853 +v 0.436684 0.406601 0.881360 +v 0.444081 0.447431 0.857560 +v 0.478852 0.464344 0.829396 +v 0.520628 0.447431 0.813366 +v 0.624154 0.437524 0.992678 +v 0.631551 0.478354 0.968879 +v 0.589384 0.420612 1.020842 +v 0.547608 0.437524 1.036873 +v 0.523298 0.478354 1.031379 +v 0.530695 0.519184 1.007580 +v 0.565466 0.536097 0.979416 +v 0.607242 0.519184 0.963385 +v -0.576756 0.466395 1.061471 +v -0.606296 0.454437 1.050135 +v -0.630883 0.466396 1.030221 +v -0.636113 0.495267 1.013392 +v -0.618924 0.524138 1.009507 +v -0.589384 0.536097 1.020842 +v -0.564797 0.524138 1.040757 +v -0.606296 0.502272 1.050135 +v -0.559567 0.495267 1.057586 +v -0.270689 0.358766 0.843847 +v -0.353687 0.382683 0.862603 +v -0.343617 0.236275 0.860328 +v -0.402306 0.301023 0.873590 +v -0.468945 0.185538 0.812237 +v -0.485858 0.267199 0.841530 +v -0.573257 0.236275 0.727745 +v -0.555399 0.301023 0.785202 +v -0.595448 0.358766 0.656347 +v -0.570193 0.382683 0.737603 +v -0.522520 0.481256 0.639866 +v -0.521574 0.464344 0.726616 +v -0.397192 0.531993 0.687957 +v -0.438022 0.498169 0.758677 +v -0.292880 0.481256 0.772448 +v -0.368481 0.464344 0.815004 +v -0.372489 0.260193 0.910334 +v -0.299560 0.382683 0.893853 +v -0.497816 0.209456 0.862243 +v -0.602128 0.260193 0.777752 +v -0.624320 0.382683 0.706353 +v -0.551391 0.505174 0.689872 +v -0.426063 0.555911 0.737963 +v -0.321751 0.505174 0.822455 +v -0.460994 0.365771 0.886853 +v -0.436684 0.406601 0.881360 +v -0.502770 0.348859 0.870823 +v -0.537541 0.365771 0.842659 +v -0.544938 0.406601 0.818860 +v -0.520628 0.447431 0.813366 +v -0.478852 0.464344 0.829396 +v -0.444082 0.447431 0.857560 +v -0.547608 0.437524 1.036873 +v -0.523298 0.478354 1.031379 +v -0.589384 0.420612 1.020842 +v -0.624154 0.437524 0.992678 +v -0.631551 0.478354 0.968879 +v -0.607242 0.519184 0.963385 +v -0.565466 0.536097 0.979416 +v -0.530695 0.519184 1.007580 +v -1.207639 0.466395 0.031250 +v -1.212592 0.454437 -0.000000 +v -1.207639 0.466396 -0.031250 +v -1.195680 0.495267 -0.044194 +v -1.183721 0.524138 -0.031250 +v -1.178767 0.536097 -0.000000 +v -1.183721 0.524138 0.031250 +v -1.212592 0.502272 -0.000000 +v -1.195680 0.495267 0.044194 +v -0.866137 0.358766 0.187500 +v -0.923880 0.382683 0.125000 +v -0.916874 0.236275 0.132582 +v -0.957705 0.301023 0.088388 +v -0.937890 0.185538 -0.000000 +v -0.971715 0.267199 -0.000000 +v -0.916874 0.236275 -0.132583 +v -0.957705 0.301023 -0.088388 +v -0.866137 0.358766 -0.187500 +v -0.923880 0.382683 -0.125000 +v -0.815400 0.481256 -0.132583 +v -0.890055 0.464344 -0.088388 +v -0.794384 0.531993 -0.000000 +v -0.876044 0.498168 -0.000000 +v -0.815400 0.481256 0.132582 +v -0.890055 0.464344 0.088388 +v -0.974617 0.260193 0.132582 +v -0.923880 0.382683 0.187500 +v -0.995633 0.209456 -0.000000 +v -0.974617 0.260193 -0.132583 +v -0.923880 0.382683 -0.187500 +v -0.873142 0.505174 -0.132583 +v -0.852127 0.555911 -0.000000 +v -0.873143 0.505174 0.132582 +v -0.998535 0.365771 0.044194 +v -0.981622 0.406601 0.062500 +v -1.005540 0.348859 -0.000000 +v -0.998535 0.365771 -0.044194 +v -0.981622 0.406601 -0.062500 +v -0.964710 0.447431 -0.044194 +v -0.957705 0.464344 -0.000000 +v -0.964710 0.447431 0.044194 +v -1.171762 0.437524 0.044194 +v -1.154850 0.478354 0.062500 +v -1.178767 0.420612 -0.000000 +v -1.171762 0.437524 -0.044194 +v -1.154850 0.478354 -0.062500 +v -1.137937 0.519185 -0.044194 +v -1.130932 0.536097 -0.000000 +v -1.137937 0.519185 0.044194 +v -0.630883 0.466396 -1.030221 +v -0.606296 0.454437 -1.050136 +v -0.576756 0.466396 -1.061471 +v -0.559567 0.495267 -1.057586 +v -0.564797 0.524138 -1.040758 +v -0.589383 0.536097 -1.020843 +v -0.618924 0.524138 -1.009507 +v -0.606296 0.502272 -1.050136 +v -0.636113 0.495267 -1.013392 +v -0.595448 0.358766 -0.656347 +v -0.570193 0.382683 -0.737603 +v -0.573257 0.236276 -0.727745 +v -0.555399 0.301023 -0.785202 +v -0.468945 0.185538 -0.812237 +v -0.485857 0.267199 -0.841530 +v -0.343617 0.236275 -0.860328 +v -0.402306 0.301023 -0.873591 +v -0.270689 0.358766 -0.843847 +v -0.353687 0.382684 -0.862603 +v -0.292880 0.481256 -0.772449 +v -0.368481 0.464344 -0.815004 +v -0.397192 0.531993 -0.687957 +v -0.438022 0.498169 -0.758677 +v -0.522520 0.481256 -0.639866 +v -0.521574 0.464344 -0.726616 +v -0.602128 0.260193 -0.777752 +v -0.624320 0.382683 -0.706353 +v -0.497816 0.209456 -0.862243 +v -0.372489 0.260193 -0.910334 +v -0.299560 0.382684 -0.893853 +v -0.321751 0.505174 -0.822455 +v -0.426063 0.555911 -0.737963 +v -0.551391 0.505174 -0.689873 +v -0.537540 0.365771 -0.842659 +v -0.544938 0.406601 -0.818860 +v -0.502770 0.348859 -0.870823 +v -0.460994 0.365771 -0.886853 +v -0.436684 0.406601 -0.881360 +v -0.444082 0.447431 -0.857560 +v -0.478852 0.464344 -0.829397 +v -0.520628 0.447431 -0.813366 +v -0.624154 0.437524 -0.992679 +v -0.631551 0.478355 -0.968879 +v -0.589384 0.420612 -1.020843 +v -0.547608 0.437524 -1.036873 +v -0.523298 0.478354 -1.031379 +v -0.530695 0.519185 -1.007580 +v -0.565466 0.536097 -0.979416 +v -0.607242 0.519185 -0.963386 +v 0.576756 0.466396 -1.061471 +v 0.606296 0.454437 -1.050136 +v 0.630883 0.466396 -1.030221 +v 0.636114 0.495267 -1.013392 +v 0.618924 0.524138 -1.009507 +v 0.589384 0.536097 -1.020842 +v 0.564797 0.524138 -1.040757 +v 0.606296 0.502272 -1.050135 +v 0.559567 0.495267 -1.057586 +v 0.270689 0.358766 -0.843847 +v 0.353687 0.382684 -0.862603 +v 0.343618 0.236276 -0.860328 +v 0.402306 0.301023 -0.873591 +v 0.468945 0.185538 -0.812237 +v 0.485858 0.267199 -0.841530 +v 0.573257 0.236276 -0.727745 +v 0.555399 0.301023 -0.785202 +v 0.595449 0.358766 -0.656347 +v 0.570193 0.382684 -0.737603 +v 0.522520 0.481256 -0.639866 +v 0.521574 0.464344 -0.726616 +v 0.397192 0.531993 -0.687957 +v 0.438022 0.498169 -0.758677 +v 0.292880 0.481256 -0.772448 +v 0.368481 0.464344 -0.815004 +v 0.372489 0.260193 -0.910334 +v 0.299560 0.382684 -0.893853 +v 0.497817 0.209456 -0.862243 +v 0.602128 0.260193 -0.777752 +v 0.624320 0.382684 -0.706353 +v 0.551391 0.505174 -0.689872 +v 0.426063 0.555911 -0.737963 +v 0.321752 0.505174 -0.822455 +v 0.460994 0.365771 -0.886853 +v 0.436685 0.406601 -0.881360 +v 0.502770 0.348859 -0.870823 +v 0.537541 0.365771 -0.842659 +v 0.544938 0.406601 -0.818860 +v 0.520628 0.447432 -0.813366 +v 0.478852 0.464344 -0.829396 +v 0.444082 0.447431 -0.857560 +v 0.547608 0.437524 -1.036873 +v 0.523298 0.478355 -1.031379 +v 0.589384 0.420612 -1.020843 +v 0.624154 0.437524 -0.992679 +v 0.631552 0.478355 -0.968879 +v 0.607242 0.519185 -0.963385 +v 0.565466 0.536097 -0.979416 +v 0.530695 0.519185 -1.007580 +v -0.524138 -1.183721 0.031250 +v -0.536097 -1.178767 0.000000 +v -0.524138 -1.183721 -0.031250 +v -0.495267 -1.195680 -0.044194 +v -0.466395 -1.207638 -0.031250 +v -0.454437 -1.212592 0.000000 +v -0.466395 -1.207638 0.031250 +v -0.502272 -1.212592 0.000000 +v -0.495267 -1.195680 0.044194 +v -0.358766 -0.866137 0.187500 +v -0.382683 -0.923880 0.125000 +v -0.481256 -0.815400 0.132583 +v -0.464344 -0.890055 0.088388 +v -0.531993 -0.794384 0.000000 +v -0.498168 -0.876044 0.000000 +v -0.481256 -0.815400 -0.132583 +v -0.464344 -0.890055 -0.088388 +v -0.358766 -0.866137 -0.187500 +v -0.382683 -0.923880 -0.125000 +v -0.236275 -0.916874 -0.132583 +v -0.301023 -0.957704 -0.088388 +v -0.185538 -0.937890 0.000000 +v -0.267199 -0.971715 0.000000 +v -0.236275 -0.916874 0.132583 +v -0.301023 -0.957704 0.088388 +v -0.505174 -0.873142 0.132583 +v -0.382683 -0.923880 0.187500 +v -0.555911 -0.852126 0.000000 +v -0.505174 -0.873142 -0.132583 +v -0.382683 -0.923880 -0.187500 +v -0.260193 -0.974617 -0.132583 +v -0.209456 -0.995633 0.000000 +v -0.260193 -0.974617 0.132583 +v -0.447431 -0.964710 0.044194 +v -0.406601 -0.981622 0.062500 +v -0.464344 -0.957704 0.000000 +v -0.447431 -0.964710 -0.044194 +v -0.406601 -0.981622 -0.062500 +v -0.365771 -0.998534 -0.044194 +v -0.348859 -1.005540 0.000000 +v -0.365771 -0.998534 0.044194 +v -0.519184 -1.137937 0.044194 +v -0.478354 -1.154849 0.062500 +v -0.536097 -1.130932 0.000000 +v -0.519184 -1.137937 -0.044194 +v -0.478354 -1.154849 -0.062500 +v -0.437524 -1.171762 -0.044194 +v -0.420612 -1.178767 0.000000 +v -0.437524 -1.171762 0.044194 +v 0.235006 -1.183721 -0.469542 +v 0.268048 -1.178767 -0.464273 +v 0.289132 -1.183721 -0.438292 +v 0.285907 -1.195679 -0.406816 +v 0.260261 -1.207638 -0.388285 +v 0.227218 -1.212592 -0.393554 +v 0.206134 -1.207638 -0.419535 +v 0.251136 -1.212592 -0.434980 +v 0.209360 -1.195679 -0.451011 +v 0.017003 -0.866137 -0.404450 +v 0.083089 -0.923879 -0.393914 +v 0.125808 -0.815400 -0.483071 +v 0.155625 -0.890055 -0.446328 +v 0.265997 -0.794384 -0.460720 +v 0.249084 -0.876044 -0.431426 +v 0.355448 -0.815400 -0.350489 +v 0.308718 -0.890055 -0.357939 +v 0.341763 -0.866137 -0.216950 +v 0.299595 -0.923879 -0.268914 +v 0.232958 -0.916874 -0.138329 +v 0.227058 -0.957704 -0.216500 +v 0.092769 -0.937890 -0.160681 +v 0.133599 -0.971715 -0.231401 +v 0.003318 -0.916874 -0.270912 +v 0.073965 -0.957704 -0.304888 +v 0.137767 -0.873142 -0.503785 +v 0.028962 -0.923879 -0.425164 +v 0.277955 -0.852126 -0.481433 +v 0.367407 -0.873142 -0.371202 +v 0.353721 -0.923879 -0.237664 +v 0.244916 -0.974617 -0.159043 +v 0.104728 -0.995633 -0.181394 +v 0.015277 -0.974617 -0.291625 +v 0.185442 -0.964709 -0.409584 +v 0.149174 -0.981622 -0.383377 +v 0.232172 -0.957704 -0.402133 +v 0.261989 -0.964710 -0.365390 +v 0.257427 -0.981622 -0.320877 +v 0.221159 -0.998534 -0.294670 +v 0.174429 -1.005540 -0.302121 +v 0.144612 -0.998534 -0.338864 +v 0.221319 -1.137937 -0.471724 +v 0.185051 -1.154849 -0.445517 +v 0.268048 -1.130931 -0.464273 +v 0.297866 -1.137937 -0.427530 +v 0.293304 -1.154849 -0.383017 +v 0.257035 -1.171762 -0.356810 +v 0.210306 -1.178767 -0.364261 +v 0.180489 -1.171762 -0.401004 +v 0.289132 -1.183720 0.438292 +v 0.268048 -1.178767 0.464274 +v 0.235006 -1.183720 0.469542 +v 0.209360 -1.195679 0.451011 +v 0.206134 -1.207638 0.419535 +v 0.227218 -1.212592 0.393554 +v 0.260261 -1.207638 0.388285 +v 0.251136 -1.212592 0.434980 +v 0.285907 -1.195679 0.406817 +v 0.341763 -0.866137 0.216950 +v 0.299595 -0.923879 0.268914 +v 0.355448 -0.815400 0.350489 +v 0.308718 -0.890055 0.357939 +v 0.265997 -0.794384 0.460720 +v 0.249084 -0.876044 0.431427 +v 0.125808 -0.815400 0.483071 +v 0.155625 -0.890055 0.446328 +v 0.017003 -0.866137 0.404450 +v 0.083089 -0.923879 0.393914 +v 0.003318 -0.916874 0.270912 +v 0.073965 -0.957704 0.304888 +v 0.092769 -0.937890 0.160681 +v 0.133599 -0.971715 0.231401 +v 0.232958 -0.916874 0.138329 +v 0.227058 -0.957704 0.216500 +v 0.367407 -0.873142 0.371202 +v 0.353721 -0.923879 0.237664 +v 0.277955 -0.852126 0.481433 +v 0.137767 -0.873142 0.503785 +v 0.028962 -0.923879 0.425164 +v 0.015277 -0.974616 0.291625 +v 0.104728 -0.995632 0.181394 +v 0.244916 -0.974616 0.159043 +v 0.261989 -0.964709 0.365390 +v 0.257427 -0.981622 0.320877 +v 0.232172 -0.957704 0.402133 +v 0.185442 -0.964709 0.409584 +v 0.149174 -0.981622 0.383377 +v 0.144612 -0.998534 0.338864 +v 0.174429 -1.005539 0.302121 +v 0.221159 -0.998534 0.294670 +v 0.297865 -1.137937 0.427530 +v 0.293304 -1.154849 0.383017 +v 0.268048 -1.130931 0.464273 +v 0.221319 -1.137937 0.471724 +v 0.185051 -1.154849 0.445517 +v 0.180489 -1.171762 0.401004 +v 0.210306 -1.178767 0.364261 +v 0.257035 -1.171762 0.356810 +v -0.827290 -0.893036 -0.441552 +v -0.819592 -0.883883 -0.473192 +v -0.796040 -0.893036 -0.495679 +v -0.770432 -0.915133 -0.495840 +v -0.757767 -0.937230 -0.473582 +v -0.765465 -0.946383 -0.441942 +v -0.789017 -0.937230 -0.419455 +v -0.803739 -0.928078 -0.464039 +v -0.814626 -0.915133 -0.419294 +v -0.667849 -0.662912 -0.169077 +v -0.674872 -0.707107 -0.245300 +v -0.721580 -0.569162 -0.263512 +v -0.710693 -0.644607 -0.308257 +v -0.688919 -0.530330 -0.397748 +v -0.688919 -0.618718 -0.397748 +v -0.588998 -0.569162 -0.493151 +v -0.622305 -0.644607 -0.461350 +v -0.480349 -0.662912 -0.493836 +v -0.549872 -0.707107 -0.461807 +v -0.426618 -0.756662 -0.399401 +v -0.514052 -0.769607 -0.398850 +v -0.459279 -0.795495 -0.265165 +v -0.535826 -0.795495 -0.309359 +v -0.559201 -0.756662 -0.169762 +v -0.602440 -0.769607 -0.245757 +v -0.759853 -0.613357 -0.285609 +v -0.706122 -0.707107 -0.191174 +v -0.727192 -0.574524 -0.419845 +v -0.627271 -0.613357 -0.515248 +v -0.518622 -0.707107 -0.515933 +v -0.464891 -0.800857 -0.421498 +v -0.497553 -0.839689 -0.287262 +v -0.597474 -0.800857 -0.191859 +v -0.699806 -0.720051 -0.353002 +v -0.681896 -0.751301 -0.321524 +v -0.688919 -0.707107 -0.397748 +v -0.655612 -0.720051 -0.429549 +v -0.619396 -0.751301 -0.429777 +v -0.601485 -0.782551 -0.398299 +v -0.612372 -0.795495 -0.353553 +v -0.645679 -0.782551 -0.321752 +v -0.814626 -0.852633 -0.419293 +v -0.796715 -0.883883 -0.387815 +v -0.803739 -0.839689 -0.464039 +v -0.770432 -0.852633 -0.495840 +v -0.734215 -0.883883 -0.496068 +v -0.716305 -0.915133 -0.464590 +v -0.727192 -0.928077 -0.419845 +v -0.760499 -0.915133 -0.388043 +v -0.031250 -0.893036 -0.937231 +v 0.000000 -0.883883 -0.946384 +v 0.031250 -0.893036 -0.937231 +v 0.044194 -0.915133 -0.915134 +v 0.031250 -0.937230 -0.893036 +v 0.000000 -0.946383 -0.883884 +v -0.031250 -0.937230 -0.893036 +v 0.000000 -0.928077 -0.928078 +v -0.044194 -0.915133 -0.915134 +v -0.187500 -0.662912 -0.662913 +v -0.125000 -0.707107 -0.707107 +v -0.132582 -0.569162 -0.756663 +v -0.088388 -0.644607 -0.769607 +v 0.000000 -0.530330 -0.795495 +v 0.000000 -0.618718 -0.795495 +v 0.132583 -0.569162 -0.756663 +v 0.088388 -0.644607 -0.769607 +v 0.187500 -0.662912 -0.662913 +v 0.125000 -0.707107 -0.707107 +v 0.132583 -0.756662 -0.569163 +v 0.088389 -0.769607 -0.644607 +v 0.000000 -0.795495 -0.530330 +v 0.000000 -0.795495 -0.618719 +v -0.132582 -0.756662 -0.569163 +v -0.088388 -0.769607 -0.644607 +v -0.132582 -0.613357 -0.800857 +v -0.187500 -0.707107 -0.707107 +v 0.000000 -0.574524 -0.839689 +v 0.132583 -0.613357 -0.800857 +v 0.187500 -0.707107 -0.707107 +v 0.132583 -0.800857 -0.613357 +v 0.000000 -0.839689 -0.574524 +v -0.132582 -0.800857 -0.613357 +v -0.044194 -0.720051 -0.782551 +v -0.062500 -0.751301 -0.751301 +v 0.000000 -0.707107 -0.795495 +v 0.044194 -0.720051 -0.782551 +v 0.062500 -0.751301 -0.751301 +v 0.044194 -0.782551 -0.720051 +v 0.000000 -0.795495 -0.707107 +v -0.044194 -0.782551 -0.720051 +v -0.044194 -0.852633 -0.915133 +v -0.062500 -0.883883 -0.883883 +v 0.000000 -0.839689 -0.928078 +v 0.044194 -0.852633 -0.915133 +v 0.062500 -0.883883 -0.883884 +v 0.044194 -0.915133 -0.852633 +v 0.000000 -0.928077 -0.839689 +v -0.044194 -0.915133 -0.852634 +v 0.796041 -0.893036 -0.495678 +v 0.819592 -0.883883 -0.473192 +v 0.827291 -0.893036 -0.441552 +v 0.814626 -0.915133 -0.419293 +v 0.789017 -0.937230 -0.419455 +v 0.765466 -0.946383 -0.441942 +v 0.757767 -0.937230 -0.473581 +v 0.803739 -0.928077 -0.464039 +v 0.770432 -0.915133 -0.495840 +v 0.480349 -0.662912 -0.493836 +v 0.549873 -0.707107 -0.461806 +v 0.588998 -0.569162 -0.493151 +v 0.622305 -0.644607 -0.461350 +v 0.688919 -0.530330 -0.397747 +v 0.688919 -0.618718 -0.397747 +v 0.721580 -0.569162 -0.263511 +v 0.710693 -0.644607 -0.308257 +v 0.667849 -0.662912 -0.169076 +v 0.674873 -0.707107 -0.245300 +v 0.559201 -0.756662 -0.169761 +v 0.602440 -0.769607 -0.245757 +v 0.459279 -0.795495 -0.265165 +v 0.535826 -0.795495 -0.309359 +v 0.426618 -0.756662 -0.399401 +v 0.514052 -0.769607 -0.398850 +v 0.627271 -0.613357 -0.515248 +v 0.518623 -0.707107 -0.515933 +v 0.727192 -0.574524 -0.419845 +v 0.759854 -0.613357 -0.285608 +v 0.706123 -0.707107 -0.191174 +v 0.597474 -0.800857 -0.191858 +v 0.497553 -0.839689 -0.287262 +v 0.464891 -0.800857 -0.421498 +v 0.655612 -0.720051 -0.429549 +v 0.619396 -0.751301 -0.429777 +v 0.688919 -0.707107 -0.397747 +v 0.699806 -0.720051 -0.353002 +v 0.681896 -0.751301 -0.321524 +v 0.645680 -0.782551 -0.321752 +v 0.612373 -0.795495 -0.353553 +v 0.601486 -0.782551 -0.398299 +v 0.770432 -0.852633 -0.495840 +v 0.734216 -0.883883 -0.496068 +v 0.803739 -0.839689 -0.464039 +v 0.814626 -0.852633 -0.419293 +v 0.796716 -0.883883 -0.387815 +v 0.760499 -0.915133 -0.388043 +v 0.727192 -0.928077 -0.419845 +v 0.716305 -0.915133 -0.464590 +v 0.827291 -0.893036 0.441552 +v 0.819592 -0.883883 0.473192 +v 0.796040 -0.893036 0.495679 +v 0.770432 -0.915133 0.495840 +v 0.757767 -0.937230 0.473582 +v 0.765465 -0.946383 0.441942 +v 0.789017 -0.937230 0.419455 +v 0.803739 -0.928077 0.464039 +v 0.814626 -0.915133 0.419294 +v 0.667849 -0.662912 0.169077 +v 0.674872 -0.707106 0.245300 +v 0.721580 -0.569162 0.263512 +v 0.710693 -0.644607 0.308257 +v 0.688919 -0.530330 0.397748 +v 0.688919 -0.618718 0.397748 +v 0.588998 -0.569162 0.493151 +v 0.622305 -0.644607 0.461350 +v 0.480349 -0.662912 0.493836 +v 0.549872 -0.707106 0.461807 +v 0.426618 -0.756662 0.399401 +v 0.514052 -0.769607 0.398850 +v 0.459279 -0.795495 0.265165 +v 0.535826 -0.795495 0.309359 +v 0.559201 -0.756662 0.169762 +v 0.602440 -0.769607 0.245757 +v 0.759854 -0.613357 0.285609 +v 0.706122 -0.707107 0.191174 +v 0.727192 -0.574524 0.419845 +v 0.627271 -0.613356 0.515248 +v 0.518622 -0.707107 0.515933 +v 0.464891 -0.800856 0.421498 +v 0.497553 -0.839689 0.287262 +v 0.597474 -0.800857 0.191859 +v 0.699806 -0.720051 0.353002 +v 0.681896 -0.751301 0.321524 +v 0.688919 -0.707107 0.397748 +v 0.655612 -0.720051 0.429549 +v 0.619396 -0.751301 0.429777 +v 0.601485 -0.782551 0.398299 +v 0.612372 -0.795495 0.353554 +v 0.645680 -0.782551 0.321752 +v 0.814626 -0.852633 0.419294 +v 0.796716 -0.883883 0.387815 +v 0.803739 -0.839689 0.464039 +v 0.770432 -0.852633 0.495840 +v 0.734216 -0.883883 0.496069 +v 0.716305 -0.915133 0.464590 +v 0.727192 -0.928077 0.419845 +v 0.760499 -0.915133 0.388044 +v 0.031250 -0.893036 0.937231 +v -0.000000 -0.883883 0.946384 +v -0.031250 -0.893036 0.937231 +v -0.044194 -0.915133 0.915134 +v -0.031250 -0.937230 0.893036 +v -0.000000 -0.946383 0.883884 +v 0.031250 -0.937230 0.893037 +v -0.000000 -0.928077 0.928078 +v 0.044194 -0.915133 0.915134 +v 0.187500 -0.662912 0.662913 +v 0.125000 -0.707106 0.707107 +v 0.132582 -0.569162 0.756663 +v 0.088388 -0.644606 0.769607 +v -0.000000 -0.530330 0.795495 +v -0.000000 -0.618718 0.795495 +v -0.132583 -0.569162 0.756663 +v -0.088389 -0.644606 0.769607 +v -0.187500 -0.662912 0.662913 +v -0.125000 -0.707107 0.707107 +v -0.132583 -0.756662 0.569163 +v -0.088389 -0.769606 0.644607 +v -0.000000 -0.795495 0.530330 +v -0.000000 -0.795495 0.618719 +v 0.132582 -0.756662 0.569163 +v 0.088388 -0.769607 0.644607 +v 0.132582 -0.613356 0.800857 +v 0.187500 -0.707106 0.707107 +v -0.000000 -0.574524 0.839689 +v -0.132583 -0.613357 0.800857 +v -0.187500 -0.707107 0.707107 +v -0.132583 -0.800856 0.613357 +v -0.000000 -0.839689 0.574524 +v 0.132582 -0.800856 0.613357 +v 0.044194 -0.720051 0.782551 +v 0.062500 -0.751301 0.751301 +v -0.000000 -0.707107 0.795495 +v -0.044194 -0.720051 0.782551 +v -0.062500 -0.751301 0.751301 +v -0.044194 -0.782551 0.720051 +v -0.000000 -0.795495 0.707107 +v 0.044194 -0.782551 0.720051 +v 0.044194 -0.852633 0.915134 +v 0.062500 -0.883883 0.883884 +v -0.000000 -0.839689 0.928078 +v -0.044194 -0.852633 0.915134 +v -0.062500 -0.883883 0.883884 +v -0.044194 -0.915133 0.852634 +v -0.000000 -0.928077 0.839689 +v 0.044194 -0.915133 0.852634 +v -0.796041 -0.893036 0.495678 +v -0.819592 -0.883883 0.473192 +v -0.827291 -0.893036 0.441552 +v -0.814626 -0.915133 0.419293 +v -0.789017 -0.937230 0.419455 +v -0.765466 -0.946383 0.441941 +v -0.757767 -0.937230 0.473581 +v -0.803739 -0.928077 0.464039 +v -0.770432 -0.915133 0.495840 +v -0.480349 -0.662912 0.493836 +v -0.549873 -0.707106 0.461806 +v -0.588998 -0.569162 0.493151 +v -0.622305 -0.644607 0.461350 +v -0.688919 -0.530330 0.397747 +v -0.688919 -0.618718 0.397747 +v -0.721580 -0.569162 0.263511 +v -0.710693 -0.644606 0.308257 +v -0.667849 -0.662912 0.169077 +v -0.674872 -0.707106 0.245300 +v -0.559201 -0.756662 0.169761 +v -0.602440 -0.769606 0.245757 +v -0.459279 -0.795495 0.265165 +v -0.535826 -0.795495 0.309359 +v -0.426618 -0.756662 0.399401 +v -0.514052 -0.769607 0.398850 +v -0.627271 -0.613356 0.515248 +v -0.518622 -0.707106 0.515933 +v -0.727192 -0.574524 0.419845 +v -0.759854 -0.613356 0.285608 +v -0.706123 -0.707107 0.191173 +v -0.597474 -0.800856 0.191858 +v -0.497553 -0.839689 0.287262 +v -0.464891 -0.800857 0.421498 +v -0.655612 -0.720051 0.429549 +v -0.619396 -0.751301 0.429777 +v -0.688919 -0.707107 0.397747 +v -0.699806 -0.720051 0.353002 +v -0.681896 -0.751301 0.321524 +v -0.645680 -0.782551 0.321752 +v -0.612373 -0.795495 0.353553 +v -0.601485 -0.782551 0.398299 +v -0.770432 -0.852633 0.495840 +v -0.734216 -0.883883 0.496068 +v -0.803739 -0.839689 0.464039 +v -0.814626 -0.852633 0.419293 +v -0.796716 -0.883883 0.387815 +v -0.760499 -0.915133 0.388043 +v -0.727192 -0.928077 0.419845 +v -0.716305 -0.915133 0.464590 +v -1.207638 -0.466395 0.031250 +v -1.212592 -0.454437 0.000000 +v -1.207638 -0.466395 -0.031250 +v -1.195679 -0.495267 -0.044194 +v -1.183721 -0.524138 -0.031250 +v -1.178767 -0.536097 0.000000 +v -1.183721 -0.524138 0.031250 +v -1.212592 -0.502272 0.000000 +v -1.195679 -0.495267 0.044194 +v -0.866137 -0.358766 0.187500 +v -0.923880 -0.382683 0.125000 +v -0.916874 -0.236275 0.132583 +v -0.957704 -0.301023 0.088388 +v -0.937890 -0.185538 0.000000 +v -0.971715 -0.267199 0.000000 +v -0.916874 -0.236275 -0.132583 +v -0.957704 -0.301023 -0.088388 +v -0.866137 -0.358766 -0.187500 +v -0.923880 -0.382683 -0.125000 +v -0.815400 -0.481256 -0.132583 +v -0.890055 -0.464344 -0.088388 +v -0.794384 -0.531993 0.000000 +v -0.876044 -0.498168 0.000000 +v -0.815400 -0.481256 0.132583 +v -0.890055 -0.464344 0.088388 +v -0.974617 -0.260193 0.132583 +v -0.923880 -0.382683 0.187500 +v -0.995633 -0.209456 0.000000 +v -0.974617 -0.260193 -0.132583 +v -0.923880 -0.382683 -0.187500 +v -0.873142 -0.505174 -0.132583 +v -0.852126 -0.555911 0.000000 +v -0.873142 -0.505174 0.132583 +v -0.998534 -0.365771 0.044194 +v -0.981622 -0.406601 0.062500 +v -1.005540 -0.348859 0.000000 +v -0.998534 -0.365771 -0.044194 +v -0.981622 -0.406601 -0.062500 +v -0.964710 -0.447431 -0.044194 +v -0.957704 -0.464344 0.000000 +v -0.964710 -0.447431 0.044194 +v -1.171762 -0.437524 0.044194 +v -1.154849 -0.478354 0.062500 +v -1.178767 -0.420612 0.000000 +v -1.171762 -0.437524 -0.044194 +v -1.154849 -0.478354 -0.062500 +v -1.137937 -0.519184 -0.044194 +v -1.130932 -0.536097 0.000000 +v -1.137937 -0.519184 0.044194 +v -0.630883 -0.466395 -1.030221 +v -0.606296 -0.454437 -1.050135 +v -0.576756 -0.466396 -1.061471 +v -0.559566 -0.495267 -1.057586 +v -0.564797 -0.524138 -1.040757 +v -0.589384 -0.536097 -1.020842 +v -0.618924 -0.524138 -1.009507 +v -0.606296 -0.502272 -1.050135 +v -0.636113 -0.495267 -1.013392 +v -0.595448 -0.358766 -0.656347 +v -0.570193 -0.382683 -0.737603 +v -0.573257 -0.236275 -0.727745 +v -0.555399 -0.301023 -0.785202 +v -0.468945 -0.185538 -0.812237 +v -0.485857 -0.267199 -0.841530 +v -0.343617 -0.236276 -0.860328 +v -0.402306 -0.301023 -0.873590 +v -0.270689 -0.358766 -0.843847 +v -0.353687 -0.382683 -0.862603 +v -0.292880 -0.481256 -0.772448 +v -0.368481 -0.464344 -0.815004 +v -0.397192 -0.531993 -0.687957 +v -0.438022 -0.498168 -0.758676 +v -0.522520 -0.481256 -0.639866 +v -0.521574 -0.464344 -0.726616 +v -0.602128 -0.260193 -0.777752 +v -0.624320 -0.382683 -0.706353 +v -0.497816 -0.209456 -0.862243 +v -0.372488 -0.260193 -0.910334 +v -0.299560 -0.382683 -0.893853 +v -0.321751 -0.505174 -0.822455 +v -0.426063 -0.555911 -0.737963 +v -0.551391 -0.505174 -0.689872 +v -0.537540 -0.365771 -0.842659 +v -0.544938 -0.406601 -0.818860 +v -0.502770 -0.348859 -0.870823 +v -0.460994 -0.365771 -0.886853 +v -0.436684 -0.406601 -0.881360 +v -0.444081 -0.447431 -0.857560 +v -0.478852 -0.464344 -0.829396 +v -0.520628 -0.447431 -0.813366 +v -0.624154 -0.437524 -0.992678 +v -0.631551 -0.478354 -0.968879 +v -0.589384 -0.420612 -1.020842 +v -0.547608 -0.437524 -1.036873 +v -0.523298 -0.478354 -1.031379 +v -0.530695 -0.519184 -1.007580 +v -0.565466 -0.536097 -0.979416 +v -0.607242 -0.519184 -0.963385 +v 0.576756 -0.466395 -1.061471 +v 0.606296 -0.454437 -1.050135 +v 0.630883 -0.466396 -1.030221 +v 0.636113 -0.495267 -1.013392 +v 0.618924 -0.524138 -1.009507 +v 0.589384 -0.536097 -1.020842 +v 0.564797 -0.524138 -1.040757 +v 0.606296 -0.502272 -1.050135 +v 0.559567 -0.495267 -1.057586 +v 0.270689 -0.358766 -0.843847 +v 0.353687 -0.382683 -0.862603 +v 0.343617 -0.236275 -0.860328 +v 0.402306 -0.301023 -0.873590 +v 0.468945 -0.185538 -0.812237 +v 0.485858 -0.267199 -0.841530 +v 0.573257 -0.236275 -0.727745 +v 0.555399 -0.301023 -0.785202 +v 0.595448 -0.358766 -0.656347 +v 0.570193 -0.382683 -0.737603 +v 0.522520 -0.481256 -0.639866 +v 0.521574 -0.464344 -0.726616 +v 0.397192 -0.531993 -0.687957 +v 0.438022 -0.498169 -0.758677 +v 0.292880 -0.481256 -0.772448 +v 0.368481 -0.464344 -0.815004 +v 0.372489 -0.260193 -0.910334 +v 0.299560 -0.382683 -0.893853 +v 0.497816 -0.209456 -0.862243 +v 0.602128 -0.260193 -0.777752 +v 0.624320 -0.382683 -0.706353 +v 0.551391 -0.505174 -0.689872 +v 0.426063 -0.555911 -0.737963 +v 0.321751 -0.505174 -0.822455 +v 0.460994 -0.365771 -0.886853 +v 0.436684 -0.406601 -0.881360 +v 0.502770 -0.348859 -0.870823 +v 0.537541 -0.365771 -0.842659 +v 0.544938 -0.406601 -0.818860 +v 0.520628 -0.447431 -0.813366 +v 0.478852 -0.464344 -0.829396 +v 0.444082 -0.447431 -0.857560 +v 0.547608 -0.437524 -1.036873 +v 0.523298 -0.478354 -1.031379 +v 0.589384 -0.420612 -1.020842 +v 0.624154 -0.437524 -0.992678 +v 0.631551 -0.478354 -0.968879 +v 0.607242 -0.519184 -0.963385 +v 0.565466 -0.536097 -0.979416 +v 0.530695 -0.519184 -1.007580 +v 1.207639 -0.466395 -0.031250 +v 1.212592 -0.454437 0.000000 +v 1.207639 -0.466396 0.031250 +v 1.195680 -0.495267 0.044194 +v 1.183721 -0.524138 0.031250 +v 1.178767 -0.536097 0.000000 +v 1.183721 -0.524138 -0.031250 +v 1.212592 -0.502272 0.000000 +v 1.195680 -0.495267 -0.044194 +v 0.866137 -0.358766 -0.187500 +v 0.923880 -0.382683 -0.125000 +v 0.916874 -0.236275 -0.132582 +v 0.957705 -0.301023 -0.088388 +v 0.937890 -0.185538 0.000000 +v 0.971715 -0.267199 0.000000 +v 0.916874 -0.236275 0.132583 +v 0.957705 -0.301023 0.088388 +v 0.866137 -0.358766 0.187500 +v 0.923880 -0.382683 0.125000 +v 0.815400 -0.481256 0.132583 +v 0.890055 -0.464344 0.088388 +v 0.794384 -0.531993 0.000000 +v 0.876044 -0.498168 0.000000 +v 0.815400 -0.481256 -0.132582 +v 0.890055 -0.464344 -0.088388 +v 0.974617 -0.260193 -0.132582 +v 0.923880 -0.382683 -0.187500 +v 0.995633 -0.209456 0.000000 +v 0.974617 -0.260193 0.132583 +v 0.923880 -0.382683 0.187500 +v 0.873142 -0.505174 0.132583 +v 0.852127 -0.555911 0.000000 +v 0.873143 -0.505174 -0.132582 +v 0.998535 -0.365771 -0.044194 +v 0.981622 -0.406601 -0.062500 +v 1.005540 -0.348859 0.000000 +v 0.998535 -0.365771 0.044194 +v 0.981622 -0.406601 0.062500 +v 0.964710 -0.447431 0.044194 +v 0.957705 -0.464344 0.000000 +v 0.964710 -0.447431 -0.044194 +v 1.171762 -0.437524 -0.044194 +v 1.154850 -0.478354 -0.062500 +v 1.178767 -0.420612 0.000000 +v 1.171762 -0.437524 0.044194 +v 1.154850 -0.478354 0.062500 +v 1.137937 -0.519185 0.044194 +v 1.130932 -0.536097 0.000000 +v 1.137937 -0.519185 -0.044194 +v 0.630883 -0.466396 1.030221 +v 0.606296 -0.454437 1.050136 +v 0.576756 -0.466396 1.061471 +v 0.559567 -0.495267 1.057586 +v 0.564797 -0.524138 1.040758 +v 0.589383 -0.536097 1.020843 +v 0.618924 -0.524138 1.009507 +v 0.606296 -0.502272 1.050136 +v 0.636113 -0.495267 1.013392 +v 0.595448 -0.358766 0.656347 +v 0.570193 -0.382683 0.737603 +v 0.573257 -0.236276 0.727745 +v 0.555399 -0.301023 0.785202 +v 0.468945 -0.185538 0.812237 +v 0.485857 -0.267199 0.841530 +v 0.343617 -0.236275 0.860328 +v 0.402306 -0.301023 0.873591 +v 0.270689 -0.358766 0.843847 +v 0.353687 -0.382684 0.862603 +v 0.292880 -0.481256 0.772449 +v 0.368481 -0.464344 0.815004 +v 0.397192 -0.531993 0.687957 +v 0.438022 -0.498169 0.758677 +v 0.522520 -0.481256 0.639866 +v 0.521574 -0.464344 0.726616 +v 0.602128 -0.260193 0.777752 +v 0.624320 -0.382683 0.706353 +v 0.497816 -0.209456 0.862243 +v 0.372489 -0.260193 0.910334 +v 0.299560 -0.382684 0.893853 +v 0.321751 -0.505174 0.822455 +v 0.426063 -0.555911 0.737963 +v 0.551391 -0.505174 0.689873 +v 0.537540 -0.365771 0.842659 +v 0.544938 -0.406601 0.818860 +v 0.502770 -0.348859 0.870823 +v 0.460994 -0.365771 0.886853 +v 0.436684 -0.406601 0.881360 +v 0.444082 -0.447431 0.857560 +v 0.478852 -0.464344 0.829397 +v 0.520628 -0.447431 0.813366 +v 0.624154 -0.437524 0.992679 +v 0.631551 -0.478355 0.968879 +v 0.589384 -0.420612 1.020843 +v 0.547608 -0.437524 1.036873 +v 0.523298 -0.478354 1.031379 +v 0.530695 -0.519185 1.007580 +v 0.565466 -0.536097 0.979416 +v 0.607242 -0.519185 0.963386 +v -0.576756 -0.466396 1.061471 +v -0.606296 -0.454437 1.050136 +v -0.630883 -0.466396 1.030221 +v -0.636114 -0.495267 1.013392 +v -0.618924 -0.524138 1.009507 +v -0.589384 -0.536097 1.020842 +v -0.564797 -0.524138 1.040757 +v -0.606296 -0.502272 1.050135 +v -0.559567 -0.495267 1.057586 +v -0.270689 -0.358766 0.843847 +v -0.353687 -0.382684 0.862603 +v -0.343618 -0.236276 0.860328 +v -0.402306 -0.301023 0.873591 +v -0.468945 -0.185538 0.812237 +v -0.485858 -0.267199 0.841530 +v -0.573257 -0.236276 0.727745 +v -0.555399 -0.301023 0.785202 +v -0.595449 -0.358766 0.656347 +v -0.570193 -0.382684 0.737603 +v -0.522520 -0.481256 0.639866 +v -0.521574 -0.464344 0.726616 +v -0.397192 -0.531993 0.687957 +v -0.438022 -0.498169 0.758677 +v -0.292880 -0.481256 0.772448 +v -0.368481 -0.464344 0.815004 +v -0.372489 -0.260193 0.910334 +v -0.299560 -0.382684 0.893853 +v -0.497817 -0.209456 0.862243 +v -0.602128 -0.260193 0.777752 +v -0.624320 -0.382684 0.706353 +v -0.551391 -0.505174 0.689872 +v -0.426063 -0.555911 0.737963 +v -0.321752 -0.505174 0.822455 +v -0.460994 -0.365771 0.886853 +v -0.436685 -0.406601 0.881360 +v -0.502770 -0.348859 0.870823 +v -0.537541 -0.365771 0.842659 +v -0.544938 -0.406601 0.818860 +v -0.520628 -0.447432 0.813366 +v -0.478852 -0.464344 0.829396 +v -0.444082 -0.447431 0.857560 +v -0.547608 -0.437524 1.036873 +v -0.523298 -0.478355 1.031379 +v -0.589384 -0.420612 1.020843 +v -0.624154 -0.437524 0.992679 +v -0.631552 -0.478355 0.968879 +v -0.607242 -0.519185 0.963385 +v -0.565466 -0.536097 0.979416 +v -0.530695 -0.519185 1.007580 +vn -0.0000 -0.0000 -1.0000 +vn 0.3827 -0.0000 -0.9239 +vn 0.7071 -0.0000 -0.7071 +vn 0.9239 -0.0000 -0.3827 +vn 1.0000 -0.0000 -0.0000 +vn 0.9239 -0.0000 0.3827 +vn 0.7071 -0.0000 0.7071 +vn 0.3827 -0.0000 0.9239 +vn -0.0000 -0.0000 1.0000 +vn -0.3827 -0.0000 0.9239 +vn -0.7071 -0.0000 0.7071 +vn -0.9239 -0.0000 0.3827 +vn -1.0000 -0.0000 -0.0000 +vn -0.9239 -0.0000 -0.3827 +vn -0.7071 -0.0000 -0.7071 +vn -0.3827 -0.0000 -0.9239 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.7152 -0.4942 0.4942 +vn -0.8554 -0.3662 0.3662 +vn -0.7756 -0.5276 0.3466 +vn -0.7756 -0.3466 0.5276 +vn -0.9045 -0.1876 0.3829 +vn -0.8149 -0.1788 0.5514 +vn -0.9210 -0.0000 0.3896 +vn -0.8149 0.1788 0.5514 +vn -0.8283 -0.0000 0.5603 +vn -0.7756 0.3466 0.5276 +vn -0.9045 0.1876 0.3829 +vn -0.7152 0.4942 0.4942 +vn -0.8554 0.3662 0.3662 +vn -0.9045 -0.3829 0.1876 +vn -0.8149 -0.5514 0.1788 +vn -0.9607 -0.1962 0.1962 +vn -0.9798 -0.0000 0.2000 +vn -0.9607 0.1962 0.1962 +vn -0.7756 0.5276 0.3466 +vn -0.9045 0.3829 0.1876 +vn -0.9210 -0.3896 -0.0000 +vn -0.8283 -0.5603 -0.0000 +vn -0.9798 -0.2000 -0.0000 +vn -0.9798 0.2000 -0.0000 +vn -0.8149 0.5514 0.1788 +vn -0.9210 0.3896 -0.0000 +vn -0.8149 -0.5514 -0.1788 +vn -0.9045 -0.3829 -0.1876 +vn -0.9607 -0.1962 -0.1962 +vn -0.9607 0.1962 -0.1962 +vn -0.9798 -0.0000 -0.2000 +vn -0.9045 0.3829 -0.1876 +vn -0.8149 0.5514 -0.1788 +vn -0.7756 -0.5276 -0.3466 +vn -0.8554 -0.3662 -0.3662 +vn -0.9045 -0.1876 -0.3829 +vn -0.9045 0.1876 -0.3829 +vn -0.9210 -0.0000 -0.3896 +vn -0.8554 0.3662 -0.3662 +vn -0.7756 0.5276 -0.3466 +vn -0.7152 -0.4942 -0.4942 +vn -0.7756 -0.3466 -0.5276 +vn -0.8149 -0.1788 -0.5514 +vn -0.8149 0.1788 -0.5514 +vn -0.8283 -0.0000 -0.5603 +vn -0.7756 0.3466 -0.5276 +vn -0.7152 0.4942 -0.4942 +vn -0.5774 -0.5774 0.5773 +vn -0.6240 -0.6240 0.4704 +vn -0.6240 -0.4704 0.6240 +vn -0.6658 -0.3368 0.6658 +vn -0.6962 -0.1747 0.6962 +vn -0.6962 0.1747 0.6962 +vn -0.6658 0.3368 0.6658 +vn -0.6240 0.4704 0.6240 +vn -0.5774 0.5774 0.5773 +vn -0.6240 0.6240 0.4704 +vn -0.6658 0.6658 0.3368 +vn -0.6962 0.6962 0.1747 +vn -0.8283 0.5603 -0.0000 +vn -0.6962 0.6962 -0.1747 +vn -0.6658 0.6658 -0.3368 +vn -0.6240 0.6240 -0.4704 +vn -0.5773 0.5774 -0.5774 +vn -0.6240 0.4704 -0.6240 +vn -0.6658 0.3368 -0.6658 +vn -0.6962 0.1747 -0.6962 +vn -0.6962 -0.1747 -0.6962 +vn -0.6658 -0.3368 -0.6658 +vn -0.6240 -0.4704 -0.6240 +vn -0.5774 -0.5774 -0.5773 +vn -0.6240 -0.6240 -0.4704 +vn -0.6658 -0.6658 -0.3368 +vn -0.6962 -0.6962 -0.1747 +vn -0.7071 -0.7071 -0.0000 +vn -0.6962 -0.6962 0.1747 +vn -0.6658 -0.6658 0.3368 +vn -0.4942 -0.4942 -0.7152 +vn -0.3662 -0.3662 -0.8554 +vn -0.3466 -0.5276 -0.7756 +vn -0.5276 -0.3466 -0.7756 +vn -0.3829 -0.1876 -0.9045 +vn -0.5514 -0.1788 -0.8149 +vn -0.3896 -0.0000 -0.9210 +vn -0.5514 0.1788 -0.8149 +vn -0.5603 -0.0000 -0.8283 +vn -0.5276 0.3466 -0.7756 +vn -0.3829 0.1876 -0.9045 +vn -0.4942 0.4942 -0.7152 +vn -0.3662 0.3662 -0.8554 +vn -0.1876 -0.3829 -0.9045 +vn -0.1788 -0.5514 -0.8149 +vn -0.1962 -0.1962 -0.9607 +vn -0.2000 -0.0000 -0.9798 +vn -0.1962 0.1962 -0.9607 +vn -0.3466 0.5276 -0.7756 +vn -0.1876 0.3829 -0.9045 +vn -0.0000 -0.3896 -0.9210 +vn -0.0000 -0.5603 -0.8283 +vn -0.0000 -0.2000 -0.9798 +vn -0.0000 0.2000 -0.9798 +vn -0.1788 0.5514 -0.8149 +vn -0.0000 0.3896 -0.9210 +vn 0.1788 -0.5514 -0.8149 +vn 0.1876 -0.3829 -0.9045 +vn 0.1962 -0.1962 -0.9607 +vn 0.1962 0.1962 -0.9607 +vn 0.2000 -0.0000 -0.9798 +vn 0.1876 0.3829 -0.9045 +vn 0.1788 0.5514 -0.8149 +vn 0.3466 -0.5276 -0.7756 +vn 0.3662 -0.3662 -0.8554 +vn 0.3829 -0.1876 -0.9045 +vn 0.3829 0.1876 -0.9045 +vn 0.3896 -0.0000 -0.9210 +vn 0.3662 0.3662 -0.8554 +vn 0.3466 0.5276 -0.7756 +vn 0.4942 -0.4942 -0.7152 +vn 0.5276 -0.3466 -0.7756 +vn 0.5514 -0.1788 -0.8149 +vn 0.5514 0.1788 -0.8149 +vn 0.5603 -0.0000 -0.8283 +vn 0.5276 0.3466 -0.7756 +vn 0.4942 0.4942 -0.7152 +vn -0.4704 -0.6240 -0.6240 +vn -0.4704 0.6240 -0.6240 +vn -0.3368 0.6658 -0.6658 +vn -0.1747 0.6962 -0.6962 +vn -0.0000 0.5603 -0.8283 +vn 0.1747 0.6962 -0.6962 +vn 0.3368 0.6658 -0.6658 +vn 0.4704 0.6240 -0.6240 +vn 0.5774 0.5774 -0.5773 +vn 0.6240 0.4704 -0.6240 +vn 0.6658 0.3368 -0.6658 +vn 0.6962 0.1747 -0.6962 +vn 0.6962 -0.1747 -0.6962 +vn 0.6658 -0.3368 -0.6658 +vn 0.6240 -0.4704 -0.6240 +vn 0.5774 -0.5774 -0.5774 +vn 0.4704 -0.6240 -0.6240 +vn 0.3368 -0.6658 -0.6658 +vn 0.1747 -0.6962 -0.6962 +vn -0.0000 -0.7071 -0.7071 +vn -0.1747 -0.6962 -0.6962 +vn -0.3368 -0.6658 -0.6658 +vn 0.7152 -0.4942 -0.4942 +vn 0.8554 -0.3662 -0.3662 +vn 0.7756 -0.5276 -0.3466 +vn 0.7756 -0.3466 -0.5276 +vn 0.9045 -0.1876 -0.3829 +vn 0.8149 -0.1788 -0.5514 +vn 0.9210 -0.0000 -0.3896 +vn 0.8149 0.1788 -0.5514 +vn 0.8283 -0.0000 -0.5603 +vn 0.7756 0.3466 -0.5276 +vn 0.9045 0.1876 -0.3829 +vn 0.7152 0.4942 -0.4942 +vn 0.8554 0.3662 -0.3662 +vn 0.9045 -0.3829 -0.1876 +vn 0.8149 -0.5514 -0.1788 +vn 0.9607 -0.1962 -0.1962 +vn 0.9798 -0.0000 -0.2000 +vn 0.9607 0.1962 -0.1962 +vn 0.7756 0.5276 -0.3466 +vn 0.9045 0.3829 -0.1876 +vn 0.9210 -0.3896 -0.0000 +vn 0.8283 -0.5603 -0.0000 +vn 0.9798 -0.2000 -0.0000 +vn 0.9798 0.2000 -0.0000 +vn 0.8149 0.5514 -0.1788 +vn 0.9210 0.3896 -0.0000 +vn 0.8149 -0.5514 0.1788 +vn 0.9045 -0.3829 0.1876 +vn 0.9607 -0.1962 0.1962 +vn 0.9607 0.1962 0.1962 +vn 0.9798 -0.0000 0.2000 +vn 0.9045 0.3829 0.1876 +vn 0.8149 0.5514 0.1788 +vn 0.7756 -0.5276 0.3466 +vn 0.8554 -0.3662 0.3662 +vn 0.9045 -0.1876 0.3829 +vn 0.9045 0.1876 0.3829 +vn 0.9210 -0.0000 0.3896 +vn 0.8554 0.3662 0.3662 +vn 0.7756 0.5276 0.3466 +vn 0.7152 -0.4942 0.4942 +vn 0.7756 -0.3466 0.5276 +vn 0.8149 -0.1788 0.5514 +vn 0.8149 0.1788 0.5514 +vn 0.8283 -0.0000 0.5603 +vn 0.7756 0.3466 0.5276 +vn 0.7152 0.4942 0.4942 +vn 0.6240 -0.6240 -0.4704 +vn 0.6240 0.6240 -0.4704 +vn 0.6658 0.6658 -0.3368 +vn 0.6962 0.6962 -0.1747 +vn 0.8283 0.5603 -0.0000 +vn 0.6962 0.6962 0.1747 +vn 0.6658 0.6658 0.3368 +vn 0.6240 0.6240 0.4704 +vn 0.5774 0.5774 0.5774 +vn 0.6240 0.4704 0.6240 +vn 0.6658 0.3368 0.6658 +vn 0.6962 0.1747 0.6962 +vn 0.6962 -0.1747 0.6962 +vn 0.6658 -0.3368 0.6658 +vn 0.6240 -0.4704 0.6240 +vn 0.5774 -0.5774 0.5774 +vn 0.6240 -0.6240 0.4704 +vn 0.6658 -0.6658 0.3368 +vn 0.6962 -0.6962 0.1747 +vn 0.7071 -0.7071 -0.0000 +vn 0.6962 -0.6962 -0.1747 +vn 0.6658 -0.6658 -0.3368 +vn 0.4942 -0.4942 0.7152 +vn 0.3662 -0.3662 0.8554 +vn 0.3466 -0.5276 0.7756 +vn 0.5276 -0.3466 0.7756 +vn 0.3829 -0.1876 0.9045 +vn 0.5514 -0.1788 0.8149 +vn 0.3896 -0.0000 0.9210 +vn 0.5514 0.1788 0.8149 +vn 0.5603 -0.0000 0.8283 +vn 0.5276 0.3466 0.7756 +vn 0.3829 0.1876 0.9045 +vn 0.4942 0.4942 0.7152 +vn 0.3662 0.3662 0.8554 +vn 0.1876 -0.3829 0.9045 +vn 0.1788 -0.5514 0.8149 +vn 0.1962 -0.1962 0.9607 +vn 0.2000 -0.0000 0.9798 +vn 0.1962 0.1962 0.9607 +vn 0.3466 0.5276 0.7756 +vn 0.1876 0.3829 0.9045 +vn -0.0000 -0.3896 0.9210 +vn -0.0000 -0.5603 0.8283 +vn -0.0000 -0.2000 0.9798 +vn -0.0000 0.2000 0.9798 +vn 0.1788 0.5514 0.8149 +vn -0.0000 0.3896 0.9210 +vn -0.1788 -0.5514 0.8149 +vn -0.1876 -0.3829 0.9045 +vn -0.1962 -0.1962 0.9607 +vn -0.1962 0.1962 0.9607 +vn -0.2000 -0.0000 0.9798 +vn -0.1876 0.3829 0.9045 +vn -0.1788 0.5514 0.8149 +vn -0.3466 -0.5276 0.7756 +vn -0.3662 -0.3662 0.8554 +vn -0.3829 -0.1876 0.9045 +vn -0.3829 0.1876 0.9045 +vn -0.3896 -0.0000 0.9210 +vn -0.3662 0.3662 0.8554 +vn -0.3466 0.5276 0.7756 +vn -0.4942 -0.4942 0.7152 +vn -0.5276 -0.3466 0.7756 +vn -0.5514 -0.1788 0.8149 +vn -0.5514 0.1788 0.8149 +vn -0.5603 -0.0000 0.8283 +vn -0.5276 0.3466 0.7756 +vn -0.4942 0.4942 0.7152 +vn 0.4704 -0.6240 0.6240 +vn 0.4704 0.6240 0.6240 +vn 0.3368 0.6658 0.6658 +vn 0.1747 0.6962 0.6962 +vn -0.0000 0.5603 0.8283 +vn -0.1747 0.6962 0.6962 +vn -0.3368 0.6658 0.6658 +vn -0.4704 0.6240 0.6240 +vn -0.4704 -0.6240 0.6240 +vn -0.3368 -0.6658 0.6658 +vn -0.1747 -0.6962 0.6962 +vn -0.0000 -0.7071 0.7071 +vn 0.1747 -0.6962 0.6962 +vn 0.3368 -0.6658 0.6658 +vn -0.4942 -0.7152 -0.4942 +vn -0.3662 -0.8554 -0.3662 +vn -0.5276 -0.7756 -0.3466 +vn -0.3466 -0.7756 -0.5276 +vn -0.1876 -0.9045 -0.3829 +vn -0.1788 -0.8149 -0.5514 +vn -0.0000 -0.9210 -0.3896 +vn 0.1788 -0.8149 -0.5514 +vn -0.0000 -0.8283 -0.5603 +vn 0.3466 -0.7756 -0.5276 +vn 0.1876 -0.9045 -0.3829 +vn 0.4942 -0.7152 -0.4942 +vn 0.3662 -0.8554 -0.3662 +vn -0.3829 -0.9045 -0.1876 +vn -0.5514 -0.8149 -0.1788 +vn -0.1962 -0.9607 -0.1962 +vn -0.0000 -0.9798 -0.2000 +vn 0.1962 -0.9607 -0.1962 +vn 0.5276 -0.7756 -0.3466 +vn 0.3829 -0.9045 -0.1876 +vn -0.3896 -0.9210 -0.0000 +vn -0.5603 -0.8283 -0.0000 +vn -0.2000 -0.9798 -0.0000 +vn 0.2000 -0.9798 -0.0000 +vn 0.5514 -0.8149 -0.1788 +vn 0.3896 -0.9210 -0.0000 +vn -0.5514 -0.8149 0.1788 +vn -0.3829 -0.9045 0.1876 +vn -0.1962 -0.9607 0.1962 +vn 0.1962 -0.9607 0.1962 +vn -0.0000 -0.9798 0.2000 +vn 0.3829 -0.9045 0.1876 +vn 0.5514 -0.8149 0.1788 +vn -0.5276 -0.7756 0.3466 +vn -0.3662 -0.8554 0.3662 +vn -0.1876 -0.9045 0.3829 +vn 0.1876 -0.9045 0.3829 +vn -0.0000 -0.9210 0.3896 +vn 0.3662 -0.8554 0.3662 +vn 0.5276 -0.7756 0.3466 +vn -0.4942 -0.7152 0.4942 +vn -0.3466 -0.7756 0.5276 +vn -0.1788 -0.8149 0.5514 +vn 0.1788 -0.8149 0.5514 +vn -0.0000 -0.8283 0.5603 +vn 0.3466 -0.7756 0.5276 +vn 0.4942 -0.7152 0.4942 +vn 0.5603 -0.8283 -0.0000 +vn 0.4942 0.7152 -0.4942 +vn 0.3662 0.8554 -0.3662 +vn 0.5276 0.7756 -0.3466 +vn 0.3466 0.7756 -0.5276 +vn 0.1876 0.9045 -0.3829 +vn 0.1788 0.8149 -0.5514 +vn -0.0000 0.9210 -0.3896 +vn -0.1788 0.8149 -0.5514 +vn -0.0000 0.8283 -0.5603 +vn -0.3466 0.7756 -0.5276 +vn -0.1876 0.9045 -0.3829 +vn -0.4942 0.7152 -0.4942 +vn -0.3662 0.8554 -0.3662 +vn 0.3829 0.9045 -0.1876 +vn 0.5514 0.8149 -0.1788 +vn 0.1962 0.9607 -0.1962 +vn -0.0000 0.9798 -0.2000 +vn -0.1962 0.9607 -0.1962 +vn -0.5276 0.7756 -0.3466 +vn -0.3829 0.9045 -0.1876 +vn 0.3896 0.9210 -0.0000 +vn 0.5603 0.8283 -0.0000 +vn 0.2000 0.9798 -0.0000 +vn -0.2000 0.9798 -0.0000 +vn -0.5514 0.8149 -0.1788 +vn -0.3896 0.9210 -0.0000 +vn 0.5514 0.8149 0.1788 +vn 0.3829 0.9045 0.1876 +vn 0.1962 0.9607 0.1962 +vn -0.1962 0.9607 0.1962 +vn -0.0000 0.9798 0.2000 +vn -0.3829 0.9045 0.1876 +vn -0.5514 0.8149 0.1788 +vn 0.5276 0.7756 0.3466 +vn 0.3662 0.8554 0.3662 +vn 0.1876 0.9045 0.3829 +vn -0.1876 0.9045 0.3829 +vn -0.0000 0.9210 0.3896 +vn -0.3662 0.8554 0.3662 +vn -0.5276 0.7756 0.3466 +vn 0.4942 0.7152 0.4942 +vn 0.3466 0.7756 0.5276 +vn 0.1788 0.8149 0.5514 +vn -0.1788 0.8149 0.5514 +vn -0.0000 0.8283 0.5603 +vn -0.3466 0.7756 0.5276 +vn -0.4942 0.7152 0.4942 +vn -0.0000 0.7071 -0.7071 +vn -0.5603 0.8283 -0.0000 +vn -0.0000 0.7071 0.7071 +vn 0.7071 0.7071 -0.0000 +vn -0.0000 -0.4985 0.8669 +vn 0.6130 -0.4985 0.6130 +vn 0.8669 -0.4985 -0.0000 +vn 0.6130 -0.4985 -0.6130 +vn -0.8669 -0.4985 -0.0000 +vn -0.6130 -0.4985 -0.6130 +vn -0.6130 -0.4985 0.6130 +vn -0.0000 -0.4985 -0.8669 +vn 0.2537 0.6125 -0.7486 +vn 0.3827 0.9239 -0.0000 +vn 0.7428 0.4100 -0.5294 +vn 0.7132 -0.0935 -0.6947 +vn 0.0714 0.1724 -0.9824 +vn 0.9791 -0.2036 -0.0000 +vn 0.9454 0.3261 -0.0000 +vn 0.7428 0.4100 0.5294 +vn 0.7132 -0.0935 0.6947 +vn 0.2537 0.6125 0.7486 +vn 0.0714 0.1724 0.9824 +vn -0.2353 0.8151 0.5294 +vn -0.5704 0.4382 0.6947 +vn -0.4379 0.8990 -0.0000 +vn -0.8363 0.5483 -0.0000 +vn -0.2353 0.8151 -0.5294 +vn -0.5704 0.4382 -0.6947 +vn 0.6533 -0.2706 -0.7071 +vn 0.9239 -0.3827 -0.0000 +vn 0.6533 -0.2706 0.7071 +vn -0.6533 0.2706 0.7071 +vn -0.9239 0.3827 -0.0000 +vn 0.9239 0.3827 -0.0000 +vn 0.7325 0.4619 -0.5000 +vn -0.6533 0.2706 -0.7071 +vn -0.3827 0.9239 -0.0000 +vn -0.1913 0.8446 -0.5000 +vn -0.1913 0.8446 0.5000 +vn 0.2706 0.6533 0.7071 +vn 0.7325 0.4619 0.5000 +vn 0.2706 0.6533 -0.7071 +vn 0.5215 0.6125 0.5940 +vn -0.1913 0.9239 0.3314 +vn 0.0870 0.4100 0.9079 +vn 0.2450 -0.0935 0.9650 +vn 0.8151 0.1724 0.5531 +vn -0.4727 0.3261 0.8187 +vn -0.4895 -0.2036 0.8479 +vn -0.8298 0.4100 0.3786 +vn -0.9582 -0.0935 0.2703 +vn -0.7752 0.6125 -0.1546 +vn -0.8865 0.1724 -0.4294 +vn -0.3408 0.8151 -0.4685 +vn -0.3164 0.4382 -0.8413 +vn 0.2190 0.8990 -0.3792 +vn 0.4181 0.5483 -0.7242 +vn 0.5761 0.8151 0.0609 +vn 0.8868 0.4382 -0.1466 +vn 0.8660 -0.0000 0.5000 +vn 0.2857 -0.2706 0.9193 +vn -0.4619 -0.3827 0.8001 +vn -0.9390 -0.2706 0.2122 +vn -0.8660 -0.0000 -0.5000 +vn -0.2857 0.2706 -0.9193 +vn 0.4619 0.3827 -0.8001 +vn 0.0667 0.4619 0.8844 +vn -0.4619 0.3827 0.8001 +vn 0.9390 0.2706 -0.2122 +vn 0.5287 0.8446 0.0843 +vn 0.1913 0.9239 -0.3314 +vn -0.7477 0.6533 -0.1192 +vn -0.3373 0.8446 -0.4157 +vn -0.7993 0.4619 0.3844 +vn 0.4771 0.6533 0.5879 +vn -0.7752 0.6125 0.1546 +vn -0.1913 0.9239 -0.3314 +vn -0.8298 0.4100 -0.3786 +vn -0.9582 -0.0935 -0.2703 +vn -0.8865 0.1724 0.4294 +vn -0.4895 -0.2036 -0.8479 +vn -0.4727 0.3261 -0.8187 +vn 0.0870 0.4100 -0.9079 +vn 0.2450 -0.0935 -0.9650 +vn 0.5215 0.6125 -0.5940 +vn 0.8151 0.1724 -0.5531 +vn 0.5761 0.8151 -0.0609 +vn 0.8868 0.4382 0.1466 +vn 0.2190 0.8990 0.3792 +vn 0.4181 0.5483 0.7242 +vn -0.3408 0.8151 0.4685 +vn -0.3164 0.4382 0.8413 +vn -0.8660 -0.0000 0.5000 +vn -0.9390 -0.2706 -0.2122 +vn -0.4619 -0.3827 -0.8001 +vn 0.2857 -0.2706 -0.9193 +vn 0.8660 -0.0000 -0.5000 +vn 0.9390 0.2706 0.2122 +vn 0.4619 0.3827 0.8001 +vn -0.4619 0.3827 -0.8001 +vn -0.7993 0.4619 -0.3844 +vn -0.2857 0.2706 0.9193 +vn 0.1913 0.9239 0.3314 +vn -0.3373 0.8446 0.4157 +vn 0.4771 0.6533 -0.5879 +vn 0.5287 0.8446 -0.0843 +vn 0.0667 0.4619 -0.8844 +vn -0.7477 0.6533 0.1192 +vn 0.7803 0.4688 -0.4139 +vn 0.6124 0.7071 0.3536 +vn 0.9948 0.0945 -0.0369 +vn 0.6055 0.1319 -0.7849 +vn 0.8870 -0.3593 -0.2900 +vn 0.7159 -0.5628 0.4133 +vn 0.8644 -0.0605 0.4991 +vn 0.4655 0.0945 0.8800 +vn 0.1923 -0.3593 0.9132 +vn 0.0317 0.4688 0.8827 +vn -0.3770 0.1319 0.9168 +vn -0.1828 0.8431 0.5057 +vn -0.6585 0.6231 0.4220 +vn -0.0524 0.9982 -0.0303 +vn -0.4874 0.8266 -0.2814 +vn 0.3465 0.8431 -0.4112 +vn 0.0362 0.6231 -0.7813 +vn 0.5000 -0.0000 -0.8660 +vn 0.7866 -0.5000 -0.3624 +vn 0.6124 -0.7071 0.3536 +vn 0.0795 -0.5000 0.8624 +vn -0.5000 -0.0000 0.8660 +vn -0.7866 0.5000 0.3624 +vn -0.6124 0.7071 -0.3536 +vn 0.9892 0.1464 -0.0062 +vn -0.0795 0.5000 -0.8624 +vn 0.3768 0.8536 -0.3598 +vn 0.0795 0.5000 0.8624 +vn -0.1232 0.8536 0.5062 +vn 0.4892 0.1464 0.8598 +vn 0.7866 0.5000 -0.3624 +vn 0.7486 0.4688 0.4688 +vn 0.5294 0.0945 0.8431 +vn 0.6947 -0.3593 0.6231 +vn 0.9824 0.1319 0.1319 +vn -0.0000 -0.5628 0.8266 +vn -0.0000 -0.0605 0.9982 +vn -0.5294 0.0945 0.8431 +vn -0.6947 -0.3593 0.6231 +vn -0.7486 0.4688 0.4688 +vn -0.9824 0.1319 0.1319 +vn -0.5294 0.8431 0.0945 +vn -0.6947 0.6231 -0.3593 +vn -0.0000 0.9982 -0.0605 +vn -0.0000 0.8266 -0.5628 +vn 0.5294 0.8431 0.0945 +vn 0.6947 0.6231 -0.3593 +vn 0.7071 -0.5000 0.5000 +vn -0.7071 -0.5000 0.5000 +vn -0.7071 0.5000 -0.5000 +vn 0.5000 0.1464 0.8536 +vn 0.7071 0.5000 -0.5000 +vn 0.5000 0.8536 0.1464 +vn -0.7071 0.5000 0.5000 +vn -0.5000 0.8536 0.1464 +vn -0.5000 0.1464 0.8536 +vn 0.7071 0.5000 0.5000 +vn -0.0317 0.4688 0.8827 +vn -0.6124 0.7071 0.3536 +vn -0.4655 0.0945 0.8800 +vn -0.1923 -0.3593 0.9132 +vn 0.3770 0.1319 0.9168 +vn -0.8644 -0.0605 0.4991 +vn -0.7159 -0.5628 0.4133 +vn -0.9948 0.0945 -0.0369 +vn -0.8870 -0.3593 -0.2900 +vn -0.7803 0.4688 -0.4139 +vn -0.6055 0.1319 -0.7849 +vn -0.3465 0.8431 -0.4112 +vn -0.0362 0.6231 -0.7813 +vn 0.0524 0.9982 -0.0303 +vn 0.4874 0.8266 -0.2814 +vn 0.1828 0.8431 0.5057 +vn 0.6585 0.6231 0.4220 +vn 0.5000 -0.0000 0.8660 +vn -0.0795 -0.5000 0.8624 +vn -0.6124 -0.7071 0.3536 +vn -0.7866 -0.5000 -0.3624 +vn -0.5000 -0.0000 -0.8660 +vn 0.0795 0.5000 -0.8624 +vn 0.6124 0.7071 -0.3536 +vn -0.4892 0.1464 0.8598 +vn 0.7866 0.5000 0.3624 +vn 0.1232 0.8536 0.5062 +vn -0.3768 0.8536 -0.3598 +vn -0.7866 0.5000 -0.3624 +vn -0.9892 0.1464 -0.0062 +vn -0.0795 0.5000 0.8624 +vn -0.7803 0.4688 0.4139 +vn -0.9948 0.0945 0.0369 +vn -0.8870 -0.3593 0.2901 +vn -0.6055 0.1319 0.7849 +vn -0.8644 -0.0605 -0.4991 +vn -0.7159 -0.5628 -0.4133 +vn -0.4655 0.0945 -0.8800 +vn -0.1923 -0.3593 -0.9132 +vn -0.0317 0.4688 -0.8827 +vn 0.3770 0.1319 -0.9168 +vn 0.1828 0.8431 -0.5057 +vn 0.6585 0.6231 -0.4220 +vn 0.0524 0.9982 0.0303 +vn 0.4874 0.8266 0.2814 +vn -0.3465 0.8431 0.4112 +vn -0.0362 0.6231 0.7813 +vn -0.7866 -0.5000 0.3624 +vn -0.6124 -0.7071 -0.3536 +vn -0.0795 -0.5000 -0.8624 +vn -0.9892 0.1464 0.0062 +vn -0.3768 0.8536 0.3598 +vn 0.1232 0.8536 -0.5062 +vn -0.4892 0.1464 -0.8598 +vn -0.7486 0.4688 -0.4688 +vn -0.5293 0.0945 -0.8431 +vn -0.6947 -0.3593 -0.6231 +vn -0.9824 0.1319 -0.1319 +vn -0.0000 -0.5628 -0.8266 +vn -0.0000 -0.0605 -0.9982 +vn 0.5294 0.0945 -0.8431 +vn 0.6947 -0.3593 -0.6231 +vn 0.7486 0.4688 -0.4688 +vn 0.9824 0.1319 -0.1319 +vn 0.5294 0.8431 -0.0945 +vn 0.6947 0.6231 0.3593 +vn -0.0000 0.9982 0.0605 +vn -0.0000 0.8266 0.5628 +vn -0.5293 0.8431 -0.0945 +vn -0.6947 0.6231 0.3593 +vn -0.7071 -0.5000 -0.5000 +vn 0.7071 -0.5000 -0.5000 +vn -0.5000 0.1464 -0.8536 +vn -0.5000 0.8536 -0.1464 +vn 0.5000 0.8536 -0.1464 +vn 0.5000 0.1464 -0.8536 +vn 0.0317 0.4688 -0.8827 +vn 0.4655 0.0945 -0.8800 +vn 0.1923 -0.3593 -0.9132 +vn -0.3770 0.1319 -0.9168 +vn 0.7159 -0.5628 -0.4133 +vn 0.8644 -0.0605 -0.4991 +vn 0.9948 0.0945 0.0369 +vn 0.8870 -0.3593 0.2901 +vn 0.7803 0.4688 0.4139 +vn 0.6055 0.1319 0.7849 +vn 0.3465 0.8431 0.4112 +vn 0.0362 0.6231 0.7813 +vn -0.0524 0.9982 0.0303 +vn -0.4874 0.8266 0.2814 +vn -0.1828 0.8431 -0.5057 +vn -0.6585 0.6231 -0.4220 +vn 0.0795 -0.5000 -0.8624 +vn 0.6124 -0.7071 -0.3536 +vn 0.7866 -0.5000 0.3624 +vn 0.4892 0.1464 -0.8598 +vn -0.1232 0.8536 -0.5062 +vn 0.3768 0.8536 0.3598 +vn 0.9892 0.1464 0.0062 +vn 0.6125 0.2537 -0.7486 +vn 0.8151 -0.2353 -0.5294 +vn 0.1724 0.0714 -0.9824 +vn 0.4382 -0.5704 -0.6947 +vn 0.5483 -0.8363 -0.0000 +vn 0.8990 -0.4379 -0.0000 +vn 0.8151 -0.2353 0.5294 +vn 0.4382 -0.5704 0.6947 +vn 0.6125 0.2537 0.7486 +vn 0.1724 0.0714 0.9824 +vn 0.4100 0.7428 0.5294 +vn -0.0935 0.7132 0.6947 +vn 0.3261 0.9454 -0.0000 +vn -0.2036 0.9791 -0.0000 +vn 0.4100 0.7428 -0.5294 +vn -0.0935 0.7132 -0.6947 +vn 0.2706 -0.6533 -0.7071 +vn 0.3827 -0.9239 -0.0000 +vn 0.2706 -0.6533 0.7071 +vn -0.2706 0.6533 0.7071 +vn 0.8446 -0.1913 -0.5000 +vn -0.2706 0.6533 -0.7071 +vn 0.4619 0.7325 -0.5000 +vn 0.6533 0.2706 0.7071 +vn 0.4619 0.7325 0.5000 +vn 0.8446 -0.1913 0.5000 +vn 0.6533 0.2706 -0.7071 +vn 0.9546 0.2537 0.1562 +vn 0.8660 -0.2353 0.4412 +vn 0.9370 0.0714 -0.3420 +vn 0.8207 -0.5704 0.0322 +vn 0.2742 -0.8363 0.4749 +vn 0.4495 -0.4379 0.7786 +vn -0.0509 -0.2353 0.9706 +vn -0.3825 -0.5704 0.7268 +vn -0.3421 0.2537 0.9048 +vn -0.7646 0.0714 0.6405 +vn -0.2535 0.7428 0.6197 +vn -0.6484 0.7132 0.2664 +vn 0.1630 0.9454 0.2824 +vn -0.1018 0.9791 -0.1763 +vn 0.6634 0.7428 0.0904 +vn 0.5549 0.7132 -0.4283 +vn 0.7477 -0.6533 -0.1192 +vn 0.1913 -0.9239 0.3314 +vn -0.4771 -0.6533 0.5879 +vn 0.8553 -0.1913 0.4815 +vn 0.4619 -0.3827 0.8001 +vn 0.6640 0.7325 0.1501 +vn -0.2020 0.7325 0.6501 +vn -0.0107 -0.1913 0.9815 +vn 0.3421 0.2537 0.9048 +vn 0.0509 -0.2353 0.9706 +vn 0.3825 -0.5704 0.7268 +vn 0.7646 0.0714 0.6405 +vn -0.4495 -0.4379 0.7786 +vn -0.2742 -0.8363 0.4749 +vn -0.8660 -0.2353 0.4412 +vn -0.8207 -0.5704 0.0322 +vn -0.9546 0.2537 0.1562 +vn -0.9370 0.0714 -0.3420 +vn -0.6634 0.7428 0.0904 +vn -0.5549 0.7132 -0.4283 +vn -0.1630 0.9454 0.2824 +vn 0.1018 0.9791 -0.1763 +vn 0.2535 0.7428 0.6197 +vn 0.6484 0.7132 0.2664 +vn 0.4771 -0.6533 0.5879 +vn -0.1913 -0.9239 0.3314 +vn -0.7477 -0.6533 -0.1192 +vn -0.4771 0.6533 -0.5879 +vn 0.0107 -0.1913 0.9815 +vn 0.7477 0.6533 0.1192 +vn 0.2020 0.7325 0.6501 +vn -0.6640 0.7325 0.1501 +vn -0.9390 0.2706 0.2122 +vn -0.8553 -0.1913 0.4815 +vn 0.2857 0.2706 0.9193 +vn -0.6125 0.2537 0.7486 +vn -0.8151 -0.2353 0.5294 +vn -0.4382 -0.5704 0.6947 +vn -0.1724 0.0714 0.9824 +vn -0.5483 -0.8363 -0.0000 +vn -0.8990 -0.4379 -0.0000 +vn -0.8151 -0.2353 -0.5294 +vn -0.4382 -0.5704 -0.6947 +vn -0.6125 0.2537 -0.7486 +vn -0.1724 0.0714 -0.9824 +vn -0.4100 0.7428 -0.5293 +vn 0.0935 0.7132 -0.6947 +vn -0.3261 0.9454 -0.0000 +vn 0.2036 0.9791 -0.0000 +vn -0.4100 0.7428 0.5293 +vn 0.0935 0.7132 0.6947 +vn -0.2706 -0.6533 0.7071 +vn -0.3827 -0.9239 -0.0000 +vn -0.2706 -0.6533 -0.7071 +vn -0.8446 -0.1913 0.5000 +vn -0.9239 -0.3827 -0.0000 +vn -0.4619 0.7325 0.5000 +vn -0.4619 0.7325 -0.5000 +vn -0.8446 -0.1913 -0.5000 +vn -0.9546 0.2537 -0.1562 +vn -0.8660 -0.2353 -0.4412 +vn -0.8207 -0.5704 -0.0322 +vn -0.9370 0.0714 0.3420 +vn -0.2742 -0.8363 -0.4749 +vn -0.4495 -0.4379 -0.7786 +vn 0.0509 -0.2353 -0.9706 +vn 0.3825 -0.5704 -0.7268 +vn 0.3421 0.2537 -0.9048 +vn 0.7646 0.0714 -0.6405 +vn 0.2535 0.7428 -0.6197 +vn 0.6484 0.7132 -0.2664 +vn -0.1630 0.9454 -0.2824 +vn 0.1018 0.9791 0.1763 +vn -0.6634 0.7428 -0.0904 +vn -0.5549 0.7132 0.4283 +vn -0.7477 -0.6533 0.1192 +vn -0.1913 -0.9239 -0.3314 +vn 0.4771 -0.6533 -0.5879 +vn 0.7477 0.6533 -0.1192 +vn -0.8553 -0.1913 -0.4815 +vn -0.4771 0.6533 0.5879 +vn -0.6640 0.7325 -0.1501 +vn 0.2857 0.2706 -0.9193 +vn 0.2020 0.7325 -0.6501 +vn 0.0107 -0.1913 -0.9815 +vn -0.9390 0.2706 -0.2122 +vn -0.3421 0.2537 -0.9048 +vn -0.0509 -0.2353 -0.9706 +vn -0.3825 -0.5704 -0.7268 +vn -0.7646 0.0714 -0.6405 +vn 0.2742 -0.8363 -0.4749 +vn 0.4495 -0.4379 -0.7786 +vn 0.8660 -0.2353 -0.4412 +vn 0.8207 -0.5704 -0.0322 +vn 0.9546 0.2537 -0.1562 +vn 0.9370 0.0714 0.3420 +vn 0.6634 0.7428 -0.0904 +vn 0.5549 0.7132 0.4283 +vn 0.1630 0.9454 -0.2824 +vn -0.1018 0.9791 0.1763 +vn -0.2534 0.7428 -0.6197 +vn -0.6484 0.7132 -0.2664 +vn -0.4771 -0.6533 -0.5879 +vn 0.1913 -0.9239 -0.3314 +vn 0.7477 -0.6533 0.1192 +vn -0.0107 -0.1913 -0.9815 +vn 0.4619 -0.3827 -0.8001 +vn -0.2020 0.7325 -0.6501 +vn 0.6640 0.7325 -0.1501 +vn 0.8553 -0.1913 -0.4815 +vn -0.2537 -0.6125 0.7486 +vn -0.7428 -0.4100 0.5294 +vn -0.7132 0.0935 0.6947 +vn -0.0714 -0.1724 0.9824 +vn -0.9791 0.2036 -0.0000 +vn -0.9454 -0.3261 -0.0000 +vn -0.7428 -0.4100 -0.5294 +vn -0.2537 -0.6125 -0.7486 +vn -0.7132 0.0935 -0.6947 +vn 0.2353 -0.8151 -0.5294 +vn 0.5704 -0.4382 -0.6947 +vn -0.0714 -0.1724 -0.9824 +vn 0.4379 -0.8990 -0.0000 +vn 0.2353 -0.8151 0.5294 +vn 0.5704 -0.4382 0.6947 +vn 0.8363 -0.5483 -0.0000 +vn -0.7325 -0.4619 0.5000 +vn 0.1913 -0.8446 0.5000 +vn 0.1913 -0.8446 -0.5000 +vn -0.7325 -0.4619 -0.5000 +vn -0.5215 -0.6125 -0.5940 +vn -0.0870 -0.4100 -0.9079 +vn -0.2450 0.0935 -0.9650 +vn -0.8151 -0.1724 -0.5531 +vn 0.4727 -0.3261 -0.8187 +vn 0.8298 -0.4100 -0.3786 +vn 0.9582 0.0935 -0.2703 +vn 0.4895 0.2036 -0.8479 +vn 0.7752 -0.6125 0.1546 +vn 0.8865 -0.1724 0.4294 +vn 0.3408 -0.8151 0.4685 +vn 0.3164 -0.4382 0.8413 +vn -0.2190 -0.8990 0.3792 +vn -0.4181 -0.5483 0.7242 +vn -0.5761 -0.8151 -0.0609 +vn -0.8868 -0.4382 0.1466 +vn -0.0667 -0.4619 -0.8844 +vn -0.5287 -0.8446 -0.0843 +vn 0.3373 -0.8446 0.4157 +vn 0.7993 -0.4619 -0.3844 +vn 0.7752 -0.6125 -0.1546 +vn 0.8298 -0.4100 0.3786 +vn 0.9582 0.0935 0.2703 +vn 0.8865 -0.1724 -0.4294 +vn 0.4895 0.2036 0.8479 +vn 0.4727 -0.3261 0.8187 +vn -0.0870 -0.4100 0.9079 +vn -0.5215 -0.6125 0.5940 +vn -0.2450 0.0935 0.9650 +vn -0.5761 -0.8151 0.0609 +vn -0.8868 -0.4382 -0.1466 +vn -0.8151 -0.1724 0.5531 +vn -0.2190 -0.8990 -0.3792 +vn -0.4181 -0.5483 -0.7242 +vn 0.3408 -0.8151 -0.4685 +vn 0.3164 -0.4382 -0.8413 +vn 0.7993 -0.4619 0.3844 +vn 0.3373 -0.8446 -0.4157 +vn -0.5287 -0.8446 0.0843 +vn -0.0667 -0.4619 0.8844 +vn -0.7803 -0.4688 0.4139 +vn -0.9948 -0.0945 0.0369 +vn -0.6055 -0.1319 0.7849 +vn -0.7159 0.5628 -0.4133 +vn -0.8870 0.3593 0.2901 +vn -0.8644 0.0605 -0.4991 +vn -0.4655 -0.0945 -0.8800 +vn -0.0317 -0.4688 -0.8827 +vn 0.3770 -0.1319 -0.9168 +vn -0.1923 0.3593 -0.9132 +vn 0.1828 -0.8431 -0.5057 +vn 0.6585 -0.6231 -0.4220 +vn 0.0524 -0.9982 0.0303 +vn -0.3465 -0.8431 0.4112 +vn -0.0362 -0.6231 0.7813 +vn 0.4874 -0.8266 0.2814 +vn -0.9892 -0.1464 0.0062 +vn -0.3768 -0.8536 0.3598 +vn 0.1232 -0.8536 -0.5062 +vn -0.4892 -0.1464 -0.8598 +vn -0.7486 -0.4688 -0.4688 +vn -0.5294 -0.0945 -0.8431 +vn -0.6947 0.3593 -0.6231 +vn -0.9824 -0.1319 -0.1319 +vn -0.0000 0.5628 -0.8266 +vn -0.0000 0.0605 -0.9982 +vn 0.5294 -0.0945 -0.8431 +vn 0.7486 -0.4688 -0.4688 +vn 0.9824 -0.1319 -0.1319 +vn 0.6947 0.3593 -0.6231 +vn 0.5294 -0.8431 -0.0945 +vn -0.0000 -0.9982 0.0605 +vn -0.0000 -0.8266 0.5628 +vn 0.6947 -0.6231 0.3593 +vn -0.5294 -0.8431 -0.0945 +vn -0.6947 -0.6231 0.3593 +vn -0.5000 -0.1464 -0.8536 +vn -0.5000 -0.8536 -0.1464 +vn 0.5000 -0.8536 -0.1464 +vn 0.5000 -0.1464 -0.8536 +vn 0.0317 -0.4688 -0.8827 +vn 0.4655 -0.0945 -0.8800 +vn 0.1923 0.3593 -0.9132 +vn -0.3770 -0.1319 -0.9168 +vn 0.7159 0.5628 -0.4133 +vn 0.8644 0.0605 -0.4991 +vn 0.9948 -0.0945 0.0369 +vn 0.8870 0.3593 0.2900 +vn 0.7803 -0.4688 0.4139 +vn 0.3465 -0.8431 0.4112 +vn 0.0362 -0.6231 0.7813 +vn 0.6055 -0.1319 0.7849 +vn -0.0524 -0.9982 0.0303 +vn -0.1828 -0.8431 -0.5057 +vn -0.4874 -0.8266 0.2814 +vn -0.6585 -0.6231 -0.4220 +vn 0.4892 -0.1464 -0.8598 +vn -0.1232 -0.8536 -0.5062 +vn 0.3768 -0.8536 0.3598 +vn 0.9892 -0.1464 0.0062 +vn 0.7803 -0.4688 -0.4139 +vn 0.9948 -0.0945 -0.0369 +vn 0.8870 0.3593 -0.2900 +vn 0.6055 -0.1319 -0.7849 +vn 0.7159 0.5628 0.4133 +vn 0.8644 0.0605 0.4991 +vn 0.4655 -0.0945 0.8800 +vn 0.1923 0.3593 0.9132 +vn 0.0317 -0.4688 0.8827 +vn -0.3770 -0.1319 0.9168 +vn -0.1828 -0.8431 0.5057 +vn -0.0524 -0.9982 -0.0303 +vn -0.4874 -0.8266 -0.2814 +vn -0.6585 -0.6231 0.4220 +vn 0.3465 -0.8431 -0.4112 +vn 0.0362 -0.6231 -0.7813 +vn 0.9892 -0.1464 -0.0062 +vn 0.3768 -0.8536 -0.3598 +vn -0.1232 -0.8536 0.5062 +vn 0.4892 -0.1464 0.8598 +vn 0.7486 -0.4688 0.4688 +vn 0.5293 -0.0945 0.8431 +vn 0.6947 0.3593 0.6231 +vn 0.9824 -0.1319 0.1319 +vn -0.0000 0.5628 0.8266 +vn -0.0000 0.0605 0.9982 +vn -0.5294 -0.0945 0.8431 +vn -0.7486 -0.4688 0.4688 +vn -0.6947 0.3593 0.6231 +vn -0.5294 -0.8431 0.0945 +vn -0.9824 -0.1319 0.1319 +vn -0.0000 -0.9982 -0.0605 +vn -0.6947 -0.6231 -0.3593 +vn 0.5293 -0.8431 0.0945 +vn 0.6947 -0.6231 -0.3593 +vn -0.0000 -0.8266 -0.5628 +vn 0.5000 -0.1464 0.8536 +vn 0.5000 -0.8536 0.1464 +vn -0.5000 -0.8536 0.1464 +vn -0.5000 -0.1464 0.8536 +vn -0.0317 -0.4688 0.8827 +vn -0.4655 -0.0945 0.8800 +vn -0.1923 0.3593 0.9132 +vn 0.3770 -0.1319 0.9168 +vn -0.7159 0.5628 0.4133 +vn -0.8644 0.0605 0.4991 +vn -0.9948 -0.0945 -0.0369 +vn -0.8870 0.3593 -0.2901 +vn -0.7803 -0.4688 -0.4139 +vn -0.3465 -0.8431 -0.4112 +vn -0.6055 -0.1319 -0.7849 +vn 0.0524 -0.9982 -0.0303 +vn -0.0362 -0.6231 -0.7813 +vn 0.1828 -0.8431 0.5057 +vn 0.6585 -0.6231 0.4220 +vn 0.4874 -0.8266 -0.2814 +vn -0.4892 -0.1464 0.8598 +vn 0.1232 -0.8536 0.5062 +vn -0.3768 -0.8536 -0.3598 +vn -0.9892 -0.1464 -0.0062 +vn -0.6125 -0.2537 0.7486 +vn -0.8151 0.2353 0.5294 +vn -0.4382 0.5704 0.6947 +vn -0.1724 -0.0714 0.9824 +vn -0.8990 0.4379 -0.0000 +vn -0.8151 0.2353 -0.5294 +vn -0.5483 0.8363 -0.0000 +vn -0.6125 -0.2537 -0.7486 +vn -0.4382 0.5704 -0.6947 +vn -0.4100 -0.7428 -0.5294 +vn 0.0935 -0.7132 -0.6947 +vn -0.1724 -0.0714 -0.9824 +vn -0.3261 -0.9454 -0.0000 +vn -0.4100 -0.7428 0.5294 +vn 0.0935 -0.7132 0.6947 +vn 0.2036 -0.9791 -0.0000 +vn -0.8446 0.1913 0.5000 +vn -0.4619 -0.7325 0.5000 +vn -0.4619 -0.7325 -0.5000 +vn -0.6533 -0.2706 -0.7071 +vn -0.8446 0.1913 -0.5000 +vn -0.6533 -0.2706 0.7071 +vn -0.9546 -0.2537 -0.1562 +vn -0.8660 0.2353 -0.4412 +vn -0.9370 -0.0714 0.3420 +vn -0.2742 0.8363 -0.4749 +vn -0.8207 0.5704 -0.0322 +vn -0.4495 0.4379 -0.7786 +vn 0.0509 0.2353 -0.9706 +vn 0.3825 0.5704 -0.7268 +vn 0.3421 -0.2537 -0.9048 +vn 0.2535 -0.7428 -0.6197 +vn 0.7646 -0.0714 -0.6405 +vn -0.1630 -0.9454 -0.2824 +vn 0.1018 -0.9791 0.1763 +vn 0.6484 -0.7132 -0.2664 +vn -0.6634 -0.7428 -0.0904 +vn -0.5549 -0.7132 0.4283 +vn -0.8553 0.1913 -0.4815 +vn -0.6640 -0.7325 -0.1501 +vn 0.2020 -0.7325 -0.6501 +vn 0.0107 0.1913 -0.9815 +vn -0.3421 -0.2537 -0.9048 +vn -0.0509 0.2353 -0.9706 +vn -0.3825 0.5704 -0.7268 +vn -0.7646 -0.0714 -0.6405 +vn 0.4495 0.4379 -0.7786 +vn 0.8660 0.2353 -0.4412 +vn 0.2742 0.8363 -0.4749 +vn 0.9546 -0.2537 -0.1562 +vn 0.8207 0.5704 -0.0322 +vn 0.6634 -0.7428 -0.0904 +vn 0.9370 -0.0714 0.3420 +vn 0.1630 -0.9454 -0.2824 +vn 0.5549 -0.7132 0.4283 +vn -0.2535 -0.7428 -0.6197 +vn -0.1018 -0.9791 0.1763 +vn -0.6484 -0.7132 -0.2664 +vn -0.0107 0.1913 -0.9815 +vn -0.2020 -0.7325 -0.6501 +vn 0.6640 -0.7325 -0.1501 +vn 0.9390 -0.2706 -0.2122 +vn 0.8553 0.1913 -0.4815 +vn -0.2857 -0.2706 -0.9193 +vn 0.6125 -0.2537 -0.7486 +vn 0.8151 0.2353 -0.5294 +vn 0.4382 0.5704 -0.6947 +vn 0.1724 -0.0714 -0.9824 +vn 0.5483 0.8363 -0.0000 +vn 0.8990 0.4379 -0.0000 +vn 0.8151 0.2353 0.5294 +vn 0.4382 0.5704 0.6947 +vn 0.6125 -0.2537 0.7486 +vn 0.4100 -0.7428 0.5293 +vn 0.1724 -0.0714 0.9824 +vn 0.3261 -0.9454 -0.0000 +vn -0.0935 -0.7132 0.6947 +vn 0.4100 -0.7428 -0.5293 +vn -0.2036 -0.9791 -0.0000 +vn -0.0935 -0.7132 -0.6947 +vn 0.8446 0.1913 -0.5000 +vn 0.4619 -0.7325 -0.5000 +vn 0.4619 -0.7325 0.5000 +vn 0.8446 0.1913 0.5000 +vn 0.9546 -0.2537 0.1562 +vn 0.8660 0.2353 0.4412 +vn 0.8207 0.5704 0.0322 +vn 0.9370 -0.0714 -0.3420 +vn 0.2742 0.8363 0.4749 +vn 0.4495 0.4379 0.7786 +vn -0.0509 0.2353 0.9706 +vn -0.3421 -0.2537 0.9048 +vn -0.7646 -0.0714 0.6405 +vn -0.3825 0.5704 0.7268 +vn -0.2535 -0.7428 0.6197 +vn 0.1630 -0.9454 0.2824 +vn -0.6484 -0.7132 0.2664 +vn 0.6634 -0.7428 0.0904 +vn -0.1018 -0.9791 -0.1763 +vn 0.5549 -0.7132 -0.4283 +vn 0.8553 0.1913 0.4815 +vn 0.6640 -0.7325 0.1501 +vn -0.2020 -0.7325 0.6501 +vn -0.2857 -0.2706 0.9193 +vn -0.0107 0.1913 0.9815 +vn 0.9390 -0.2706 0.2122 +vn 0.3421 -0.2537 0.9048 +vn 0.0509 0.2353 0.9706 +vn 0.3825 0.5704 0.7268 +vn 0.7646 -0.0714 0.6405 +vn -0.4495 0.4379 0.7786 +vn -0.8660 0.2353 0.4412 +vn -0.2742 0.8363 0.4749 +vn -0.9546 -0.2537 0.1562 +vn -0.9370 -0.0714 -0.3420 +vn -0.8207 0.5704 0.0322 +vn -0.6634 -0.7428 0.0904 +vn -0.1630 -0.9454 0.2824 +vn -0.5549 -0.7132 -0.4283 +vn 0.2534 -0.7428 0.6197 +vn 0.1018 -0.9791 -0.1763 +vn 0.6484 -0.7132 0.2664 +vn 0.0107 0.1913 0.9815 +vn 0.2020 -0.7325 0.6501 +vn -0.6640 -0.7325 0.1501 +vn -0.8553 0.1913 0.4815 +vn -0.7071 0.7071 -0.0000 +vt 0.848485 0.636364 +vt 0.742424 0.606061 +vt 0.848485 0.606061 +vt 0.742424 0.636364 +vt 0.636364 0.606061 +vt 0.636364 0.636364 +vt 0.530303 0.606061 +vt 0.530303 0.636364 +vt 0.424242 0.606061 +vt 0.424242 0.636364 +vt 0.318182 0.606061 +vt 0.318182 0.636364 +vt 0.212121 0.606061 +vt 0.212121 0.636364 +vt 0.106061 0.606061 +vt 0.106061 0.636364 +vt 0.000000 0.606061 +vt 0.848485 0.500000 +vt 0.742424 0.469697 +vt 0.848485 0.469697 +vt 0.742424 0.500000 +vt 0.636364 0.469697 +vt 0.636364 0.500000 +vt 0.530303 0.469697 +vt 0.530303 0.500000 +vt 0.424242 0.469697 +vt 0.424242 0.500000 +vt 0.318182 0.469697 +vt 0.318182 0.500000 +vt 0.212121 0.469697 +vt 0.212121 0.500000 +vt 0.106061 0.469697 +vt 0.106061 0.500000 +vt 0.000000 0.469697 +vt 0.842172 0.560606 +vt 0.748737 0.560606 +vt 0.748737 0.681818 +vt 0.842172 0.681818 +vt 0.736111 0.560606 +vt 0.642677 0.560606 +vt 0.642677 0.681818 +vt 0.736111 0.681818 +vt 0.630050 0.560606 +vt 0.536616 0.560606 +vt 0.536616 0.681818 +vt 0.630050 0.681818 +vt 0.523990 0.560606 +vt 0.430556 0.560606 +vt 0.430556 0.681818 +vt 0.523990 0.681818 +vt 0.417929 0.560606 +vt 0.324495 0.560606 +vt 0.324495 0.681818 +vt 0.417929 0.681818 +vt 0.311869 0.560606 +vt 0.218434 0.560606 +vt 0.218434 0.681818 +vt 0.311869 0.681818 +vt 0.205808 0.560606 +vt 0.112374 0.560606 +vt 0.112374 0.681818 +vt 0.205808 0.681818 +vt 0.099747 0.560606 +vt 0.006313 0.560606 +vt 0.006313 0.681818 +vt 0.099747 0.681818 +vt 0.842172 0.424242 +vt 0.742424 0.469697 +vt 0.748737 0.424242 +vt 0.748737 0.545455 +vt 0.842172 0.545455 +vt 0.736111 0.424242 +vt 0.642677 0.424242 +vt 0.642677 0.545455 +vt 0.736111 0.545455 +vt 0.630050 0.424242 +vt 0.530303 0.469697 +vt 0.536616 0.424242 +vt 0.536616 0.545455 +vt 0.630050 0.545455 +vt 0.523990 0.424242 +vt 0.430556 0.424242 +vt 0.430556 0.545455 +vt 0.523990 0.545455 +vt 0.417929 0.424242 +vt 0.318182 0.469697 +vt 0.324495 0.424242 +vt 0.324495 0.545455 +vt 0.417929 0.545455 +vt 0.311869 0.424242 +vt 0.218434 0.424242 +vt 0.218434 0.545455 +vt 0.311869 0.545455 +vt 0.205808 0.424242 +vt 0.106061 0.469697 +vt 0.112374 0.424242 +vt 0.112374 0.545455 +vt 0.205808 0.545455 +vt 0.099747 0.424242 +vt 0.006313 0.424242 +vt 0.006313 0.545455 +vt 0.099747 0.545455 +vt 0.037879 0.962119 +vt 0.075758 0.924240 +vt 0.075758 0.962119 +vt 0.037879 0.924240 +vt 0.075758 0.886361 +vt 0.037879 0.886361 +vt 0.075758 0.848482 +vt 0.037879 0.810603 +vt 0.037879 0.848482 +vt 0.037879 0.772725 +vt 0.075758 0.810603 +vt 0.037879 0.734846 +vt 0.075758 0.772725 +vt 0.113637 0.924240 +vt 0.113637 0.962119 +vt 0.113637 0.886361 +vt 0.113637 0.848482 +vt 0.113637 0.810603 +vt 0.075758 0.734846 +vt 0.113637 0.772725 +vt 0.151516 0.924240 +vt 0.151516 0.962119 +vt 0.151516 0.886361 +vt 0.151516 0.848482 +vt 0.151516 0.810603 +vt 0.113637 0.734846 +vt 0.151516 0.772725 +vt 0.189394 0.962119 +vt 0.189394 0.924240 +vt 0.189394 0.886361 +vt 0.189394 0.810603 +vt 0.189394 0.848482 +vt 0.189394 0.772725 +vt 0.189394 0.734846 +vt 0.227273 0.962119 +vt 0.227273 0.924240 +vt 0.227273 0.886361 +vt 0.227273 0.810603 +vt 0.227273 0.848482 +vt 0.227273 0.772725 +vt 0.227273 0.734846 +vt 0.265152 0.962119 +vt 0.265152 0.924240 +vt 0.265152 0.886361 +vt 0.265152 0.810603 +vt 0.265152 0.848482 +vt 0.265152 0.772725 +vt 0.265152 0.734846 +vt 0.000000 0.999998 +vt 0.037879 0.999998 +vt 0.000000 0.962119 +vt 0.000000 0.924240 +vt 0.000000 0.886361 +vt 0.000000 0.810603 +vt 0.000000 0.848482 +vt 0.000000 0.772725 +vt 0.000000 0.734846 +vt 0.000000 0.696967 +vt 0.037879 0.696967 +vt 0.075758 0.696967 +vt 0.113637 0.696967 +vt 0.151516 0.734846 +vt 0.189394 0.696967 +vt 0.227273 0.696967 +vt 0.265152 0.696967 +vt 0.303031 0.696967 +vt 0.303031 0.734846 +vt 0.303031 0.772725 +vt 0.303031 0.810603 +vt 0.303031 0.848482 +vt 0.303031 0.886361 +vt 0.303031 0.924240 +vt 0.303031 0.962119 +vt 0.303031 0.999998 +vt 0.265152 0.999998 +vt 0.227273 0.999998 +vt 0.189394 0.999998 +vt 0.151516 0.999998 +vt 0.113637 0.999998 +vt 0.075758 0.999998 +vt 0.037879 0.924240 +vt 0.075758 0.886361 +vt 0.037879 0.886361 +vt 0.037879 0.772725 +vt 0.113637 0.924240 +vt 0.113637 0.962119 +vt 0.113637 0.886361 +vt 0.151516 0.886361 +vt 0.189394 0.962119 +vt 0.189394 0.924240 +vt 0.189394 0.886361 +vt 0.227273 0.886361 +vt 0.227273 0.772725 +vt 0.265152 0.924240 +vt 0.265152 0.886361 +vt 0.265152 0.772725 +vt 0.265152 0.734846 +vt 0.000000 0.886361 +vt 0.000000 0.772725 +vt 0.303031 0.772725 +vt 0.303031 0.886361 +vt 0.151516 0.999997 +vt 0.075758 0.999997 +vt 0.356061 0.734846 +vt 0.393940 0.772725 +vt 0.356061 0.772725 +vt 0.393940 0.734846 +vt 0.431819 0.772725 +vt 0.431819 0.734846 +vt 0.469697 0.772725 +vt 0.507576 0.734846 +vt 0.469697 0.734846 +vt 0.545455 0.734846 +vt 0.507576 0.772725 +vt 0.583334 0.734846 +vt 0.545455 0.772725 +vt 0.393940 0.810603 +vt 0.356061 0.810603 +vt 0.431819 0.810603 +vt 0.469697 0.810603 +vt 0.507576 0.810603 +vt 0.583334 0.772725 +vt 0.545455 0.810603 +vt 0.393940 0.848482 +vt 0.356061 0.848482 +vt 0.431819 0.848482 +vt 0.469697 0.848482 +vt 0.507576 0.848482 +vt 0.583334 0.810603 +vt 0.545455 0.848482 +vt 0.356061 0.886361 +vt 0.393940 0.886361 +vt 0.431819 0.886361 +vt 0.507576 0.886361 +vt 0.469697 0.886361 +vt 0.545455 0.886361 +vt 0.583334 0.886361 +vt 0.356061 0.924240 +vt 0.393940 0.924240 +vt 0.431819 0.924240 +vt 0.507576 0.924240 +vt 0.469697 0.924240 +vt 0.545455 0.924240 +vt 0.583334 0.924240 +vt 0.356061 0.962119 +vt 0.393940 0.962119 +vt 0.431819 0.962119 +vt 0.507576 0.962119 +vt 0.469697 0.962119 +vt 0.545455 0.962119 +vt 0.583334 0.962119 +vt 0.318182 0.696967 +vt 0.318182 0.734846 +vt 0.356061 0.696967 +vt 0.393940 0.696967 +vt 0.431819 0.696967 +vt 0.507576 0.696967 +vt 0.469697 0.696967 +vt 0.545455 0.696967 +vt 0.583334 0.696967 +vt 0.621213 0.696967 +vt 0.621213 0.734846 +vt 0.621213 0.772725 +vt 0.621213 0.810603 +vt 0.583334 0.848482 +vt 0.621213 0.886361 +vt 0.621213 0.924240 +vt 0.621213 0.962119 +vt 0.621213 0.999998 +vt 0.583334 0.999998 +vt 0.545455 0.999998 +vt 0.507576 0.999998 +vt 0.469697 0.999998 +vt 0.431819 0.999998 +vt 0.393940 0.999998 +vt 0.356061 0.999998 +vt 0.318182 0.999998 +vt 0.318182 0.962119 +vt 0.318182 0.924240 +vt 0.318182 0.886361 +vt 0.318182 0.848482 +vt 0.318182 0.810603 +vt 0.318182 0.772725 +vt 0.772727 0.696970 +vt 0.818182 0.727273 +vt 0.772727 0.727273 +vt 0.727273 0.696970 +vt 0.727273 0.727273 +vt 0.681818 0.696970 +vt 0.681818 0.727273 +vt 0.636364 0.696970 +vt 0.636364 0.727273 +vt 0.954546 0.696970 +vt 1.000000 0.727273 +vt 0.954546 0.727273 +vt 0.909091 0.696970 +vt 0.909091 0.727273 +vt 0.863636 0.696970 +vt 0.863636 0.727273 +vt 0.818182 0.696970 +vt 0.676136 0.742424 +vt 0.645076 0.757576 +vt 0.642045 0.742424 +vt 0.778409 0.742424 +vt 0.812500 0.742424 +vt 0.732955 0.742424 +vt 0.767045 0.742424 +vt 0.687500 0.742424 +vt 0.721591 0.742424 +vt 0.960227 0.742424 +vt 0.994318 0.742424 +vt 0.914773 0.742424 +vt 0.948864 0.742424 +vt 0.869318 0.742424 +vt 0.903409 0.742424 +vt 0.823864 0.742424 +vt 0.857955 0.742424 +vt 0.701027 0.783822 +vt 0.647458 0.783822 +vt 0.647458 0.837390 +vt 0.735985 0.757576 +vt 0.900379 0.757576 +vt 0.872349 0.757576 +vt 0.991288 0.757576 +vt 0.963258 0.757576 +vt 0.718561 0.757576 +vt 0.690530 0.757576 +vt 0.809470 0.757576 +vt 0.781439 0.757576 +vt 0.826894 0.757576 +vt 0.917803 0.757576 +vt 0.803030 0.833333 +vt 0.833333 0.803030 +vt 0.833333 0.833333 +vt 0.833333 0.878788 +vt 0.803030 0.848485 +vt 0.833333 0.848485 +vt 0.803030 0.757576 +vt 0.833333 0.787879 +vt 0.803030 0.787879 +vt 0.878788 0.878788 +vt 0.848485 0.848485 +vt 0.878788 0.848485 +vt 0.878788 0.787879 +vt 0.848485 0.757576 +vt 0.878788 0.757576 +vt 0.878788 0.833333 +vt 0.848485 0.803030 +vt 0.878788 0.803030 +vt 0.772727 0.818182 +vt 0.742424 0.803030 +vt 0.772727 0.803030 +vt 0.803030 0.803030 +vt 0.787879 0.772727 +vt 0.772727 0.772727 +vt 0.727273 0.803030 +vt 0.742424 0.772727 +vt 0.787879 0.803030 +vt 0.742424 0.818182 +vt 0.772727 0.863636 +vt 0.742424 0.878788 +vt 0.742424 0.863636 +vt 0.787879 0.833333 +vt 0.772727 0.833333 +vt 0.727273 0.833333 +vt 0.742424 0.833333 +vt 0.787879 0.863636 +vt 0.772727 0.878788 +vt 0.727273 0.863636 +vt 0.742424 0.984848 +vt 0.734848 1.000000 +vt 0.727273 0.984848 +vt 0.742424 0.984848 +vt 0.727273 0.969697 +vt 0.742424 0.969697 +vt 0.712121 0.984848 +vt 0.696970 0.969697 +vt 0.712121 0.969697 +vt 0.712121 0.984848 +vt 0.704545 1.000000 +vt 0.696970 0.984848 +vt 0.681818 0.984848 +vt 0.674242 1.000000 +vt 0.666667 0.984848 +vt 0.681818 0.969697 +vt 0.666667 0.984848 +vt 0.666667 0.969697 +vt 0.651515 0.984848 +vt 0.643939 1.000000 +vt 0.636364 0.984848 +vt 0.651515 0.969697 +vt 0.636364 0.969697 +vt 0.863636 0.984848 +vt 0.856060 1.000000 +vt 0.848485 0.984848 +vt 0.863636 0.969697 +vt 0.848485 0.984848 +vt 0.848485 0.969697 +vt 0.833333 0.984848 +vt 0.825757 1.000000 +vt 0.818182 0.984848 +vt 0.833333 0.969697 +vt 0.818182 0.984848 +vt 0.818182 0.969697 +vt 0.803030 0.984848 +vt 0.795454 1.000000 +vt 0.787879 0.984848 +vt 0.803030 0.984848 +vt 0.787879 0.969697 +vt 0.803030 0.969697 +vt 0.772727 0.984848 +vt 0.765151 1.000000 +vt 0.757576 0.984848 +vt 0.772727 0.984848 +vt 0.757576 0.969697 +vt 0.772727 0.969697 +vt 0.757576 0.878788 +vt 0.727273 0.893939 +vt 0.727273 0.878788 +vt 0.696970 0.893939 +vt 0.696970 0.878788 +vt 0.666667 0.878788 +vt 0.666667 0.893939 +vt 0.636364 0.878788 +vt 0.848485 0.893939 +vt 0.848485 0.878788 +vt 0.818182 0.893939 +vt 0.818182 0.878788 +vt 0.696970 0.909091 +vt 0.719697 0.924242 +vt 0.704545 0.924242 +vt 0.787879 0.878788 +vt 0.787879 0.893939 +vt 0.752525 0.909091 +vt 0.727273 0.893939 +vt 0.757576 0.893939 +vt 0.722222 0.909091 +vt 0.691919 0.909091 +vt 0.666667 0.893939 +vt 0.696970 0.893939 +vt 0.641414 0.909091 +vt 0.661616 0.909091 +vt 0.873737 0.909091 +vt 0.848485 0.893939 +vt 0.878788 0.893939 +vt 0.823232 0.909091 +vt 0.843434 0.909091 +vt 0.813131 0.909091 +vt 0.787879 0.893939 +vt 0.818182 0.893939 +vt 0.762626 0.909091 +vt 0.782828 0.909091 +vt 0.863636 0.924242 +vt 0.848485 0.924242 +vt 0.818182 0.909091 +vt 0.795455 0.924242 +vt 0.787879 0.909091 +vt 0.848485 0.909091 +vt 0.871212 0.924242 +vt 0.856061 0.924242 +vt 0.666667 0.909091 +vt 0.689394 0.924242 +vt 0.674242 0.924242 +vt 0.727273 0.909091 +vt 0.750000 0.924242 +vt 0.734848 0.924242 +vt 0.765152 0.924242 +vt 0.757576 0.909091 +vt 0.825758 0.924242 +vt 0.643939 0.924242 +vt 0.636364 0.909091 +vt 0.681818 0.924242 +vt 0.666667 0.924242 +vt 0.742424 0.924242 +vt 0.727273 0.924242 +vt 0.772727 0.924242 +vt 0.757576 0.924242 +vt 0.833333 0.924242 +vt 0.818182 0.924242 +vt 0.651515 0.924242 +vt 0.636364 0.924242 +vt 0.696970 0.924242 +vt 0.787879 0.924242 +vt 0.696970 0.984848 +vt 0.681818 0.984848 +vt 0.863636 0.984848 +vt 0.757576 0.893939 +vt 0.636364 0.893939 +vt 0.732323 0.909091 +vt 0.702020 0.909091 +vt 0.853535 0.909091 +vt 0.792929 0.909091 +vt 0.810606 0.924242 +vt 0.878788 0.909091 +vt 0.780303 0.924242 +vt 0.659091 0.924242 +vt 0.712121 0.924242 +vt 0.803030 0.924242 +vt 0.833333 0.984848 +vt 0.787879 0.984848 +vt 0.757576 0.984848 +vt 0.727273 0.984848 +vt 0.878788 0.893939 +vt 0.840909 0.924242 +vt 0.671717 0.909091 +vt 0.000000 0.636364 +vt 0.000000 0.500000 +vt 0.848485 0.469697 +vt 0.636364 0.469697 +vt 0.424242 0.469697 +vt 0.212121 0.469697 +vt 0.151516 0.696967 +vt 0.621213 0.848482 +vt 1.000000 0.696970 +vt 0.673106 0.757576 +vt 0.674242 0.848485 +vt 0.701027 0.837390 +vt 0.712121 0.810606 +vt 0.674242 0.772727 +vt 0.636364 0.810606 +vt 0.764015 0.757576 +vt 0.854924 0.757576 +vt 0.945833 0.757576 +vt 0.803030 0.878788 +vt 0.833333 0.757576 +vt 0.848485 0.787879 +vt 0.848485 0.833333 +vt 0.727273 0.772727 +s 1 +usemtl Material +f 36/1/1 34/2/2 33/3/1 +f 35/4/2 37/5/3 34/2/2 +f 38/6/3 39/7/4 37/5/3 +f 40/8/4 41/9/5 39/7/4 +f 42/10/5 43/11/6 41/9/5 +f 44/12/6 45/13/7 43/11/6 +f 46/14/7 47/15/8 45/13/7 +f 48/16/8 49/17/9 47/15/8 +f 50/18/9 51/19/10 49/20/9 +f 52/21/10 53/22/11 51/19/10 +f 54/23/11 55/24/12 53/22/11 +f 56/25/12 57/26/13 55/24/12 +f 58/27/13 59/28/14 57/26/13 +f 60/29/14 61/30/15 59/28/14 +f 62/31/15 63/32/16 61/30/15 +f 64/33/16 33/34/1 63/32/16 +f 1/35/17 34/2/17 3/36/17 +f 4/37/18 36/1/18 2/38/18 +f 3/39/17 37/5/17 5/40/17 +f 6/41/18 35/4/18 4/42/18 +f 5/43/17 39/7/17 7/44/17 +f 8/45/18 38/6/18 6/46/18 +f 7/47/17 41/9/17 9/48/17 +f 10/49/18 40/8/18 8/50/18 +f 9/51/17 43/11/17 11/52/17 +f 12/53/18 42/10/18 10/54/18 +f 11/55/17 45/13/17 13/56/17 +f 14/57/18 44/12/18 12/58/18 +f 13/59/17 47/15/17 15/60/17 +f 16/61/18 46/14/18 14/62/18 +f 15/63/17 49/17/17 17/64/17 +f 18/65/18 48/16/18 16/66/18 +f 17/67/17 51/68/17 19/69/17 +f 20/70/18 50/18/18 18/71/18 +f 19/72/17 53/22/17 21/73/17 +f 22/74/18 52/21/18 20/75/18 +f 21/76/17 55/77/17 23/78/17 +f 24/79/18 54/23/18 22/80/18 +f 23/81/17 57/26/17 25/82/17 +f 26/83/18 56/25/18 24/84/18 +f 25/85/17 59/86/17 27/87/17 +f 28/88/18 58/27/18 26/89/18 +f 27/90/17 61/30/17 29/91/17 +f 30/92/18 60/29/18 28/93/18 +f 29/94/17 63/95/17 31/96/17 +f 32/97/18 62/31/18 30/98/18 +f 31/99/17 33/34/17 1/100/17 +f 2/101/18 64/33/18 32/102/18 +f 157/103/19 165/104/20 164/105/21 +f 158/106/22 166/107/23 165/104/20 +f 159/108/24 167/109/25 166/107/23 +f 161/110/26 167/109/25 160/111/27 +f 162/112/28 168/113/29 161/110/26 +f 163/114/30 169/115/31 162/112/28 +f 164/105/21 172/116/32 171/117/33 +f 165/104/20 173/118/34 172/116/32 +f 166/107/23 174/119/35 173/118/34 +f 168/113/29 174/119/35 167/109/25 +f 169/115/31 175/120/36 168/113/29 +f 170/121/37 176/122/38 169/115/31 +f 171/117/33 179/123/39 178/124/40 +f 172/116/32 180/125/41 179/123/39 +f 173/118/34 181/126/13 180/125/41 +f 175/120/36 181/126/13 174/119/35 +f 176/122/38 182/127/42 175/120/36 +f 177/128/43 183/129/44 176/122/38 +f 179/123/39 185/130/45 178/124/40 +f 180/125/41 186/131/46 179/123/39 +f 181/126/13 187/132/47 180/125/41 +f 181/126/13 189/133/48 188/134/49 +f 182/127/42 190/135/50 189/133/48 +f 183/129/44 191/136/51 190/135/50 +f 186/131/46 192/137/52 185/130/45 +f 187/132/47 193/138/53 186/131/46 +f 188/134/49 194/139/54 187/132/47 +f 188/134/49 196/140/55 195/141/56 +f 189/133/48 197/142/57 196/140/55 +f 190/135/50 198/143/58 197/142/57 +f 193/138/53 199/144/59 192/137/52 +f 194/139/54 200/145/60 193/138/53 +f 195/141/56 201/146/61 194/139/54 +f 195/141/56 203/147/62 202/148/63 +f 196/140/55 204/149/64 203/147/62 +f 197/142/57 205/150/65 204/149/64 +f 65/151/66 157/103/19 79/152/67 +f 80/153/68 158/106/22 157/103/19 +f 81/154/69 159/108/24 158/106/22 +f 82/155/70 160/111/27 159/108/24 +f 84/156/71 160/111/27 83/157/11 +f 85/158/72 161/110/26 84/156/71 +f 86/159/73 162/112/28 85/158/72 +f 66/160/74 163/114/30 86/159/73 +f 87/161/75 170/121/37 163/114/30 +f 88/162/76 177/128/43 170/121/37 +f 89/163/77 184/164/78 177/128/43 +f 184/164/78 91/165/79 191/136/51 +f 191/136/51 92/166/80 198/143/58 +f 198/143/58 93/167/81 205/150/65 +f 205/150/65 68/168/82 94/169/83 +f 204/149/64 94/169/83 95/170/84 +f 203/147/62 95/170/84 96/171/85 +f 202/148/63 96/171/85 97/172/15 +f 202/148/63 98/173/86 201/146/61 +f 201/146/61 99/174/87 200/145/60 +f 200/145/60 100/175/88 199/144/59 +f 199/144/59 67/176/89 73/177/90 +f 192/137/52 73/177/90 74/178/91 +f 185/130/45 74/178/91 75/179/92 +f 178/124/40 75/179/92 76/180/93 +f 77/181/94 178/124/40 76/180/93 +f 78/182/95 171/117/33 77/181/94 +f 79/152/67 164/105/21 78/182/95 +f 206/103/96 214/104/97 213/105/98 +f 207/106/99 215/107/100 214/104/97 +f 208/108/101 216/109/102 215/107/100 +f 210/110/103 216/109/102 209/111/104 +f 211/112/105 217/113/106 210/110/103 +f 212/114/107 218/115/108 211/112/105 +f 213/105/98 221/116/109 220/117/110 +f 214/104/97 222/118/111 221/116/109 +f 215/107/100 223/119/112 222/118/111 +f 217/113/106 223/119/112 216/109/102 +f 218/115/108 224/120/113 217/113/106 +f 219/121/114 225/122/115 218/115/108 +f 220/117/110 228/123/116 227/124/117 +f 221/116/109 229/125/118 228/123/116 +f 222/118/111 230/126/1 229/125/118 +f 224/120/113 230/126/1 223/119/112 +f 225/122/115 231/127/119 224/120/113 +f 226/128/120 232/129/121 225/122/115 +f 228/123/116 234/130/122 227/124/117 +f 229/125/118 235/131/123 228/123/116 +f 230/126/1 236/132/124 229/125/118 +f 230/126/1 238/133/125 237/134/126 +f 231/127/119 239/135/127 238/133/125 +f 232/129/121 240/136/128 239/135/127 +f 235/131/123 241/137/129 234/130/122 +f 236/132/124 242/138/130 235/131/123 +f 237/134/126 243/139/131 236/132/124 +f 237/134/126 245/140/132 244/141/133 +f 238/133/125 246/142/134 245/140/132 +f 239/135/127 247/143/135 246/142/134 +f 242/138/130 248/144/136 241/137/129 +f 243/139/131 249/145/137 242/138/130 +f 244/141/133 250/146/138 243/139/131 +f 244/141/133 252/147/139 251/148/140 +f 245/140/132 253/149/141 252/147/139 +f 246/142/134 254/150/142 253/149/141 +f 67/151/89 206/103/96 107/152/143 +f 100/153/88 207/106/99 206/103/96 +f 99/154/87 208/108/101 207/106/99 +f 98/155/86 209/111/104 208/108/101 +f 96/156/85 209/111/104 97/157/15 +f 95/158/84 210/110/103 96/156/85 +f 94/159/83 211/112/105 95/158/84 +f 68/160/82 212/114/107 94/159/83 +f 108/161/144 219/121/114 212/114/107 +f 109/162/145 226/128/120 219/121/114 +f 110/163/146 233/164/147 226/128/120 +f 233/164/147 112/165/148 240/136/128 +f 240/136/128 113/166/149 247/143/135 +f 247/143/135 114/167/150 254/150/142 +f 254/150/142 72/168/151 115/169/152 +f 253/149/141 115/169/152 116/170/153 +f 252/147/139 116/170/153 117/171/154 +f 251/148/140 117/171/154 118/172/3 +f 251/148/140 119/173/155 250/146/138 +f 250/146/138 120/174/156 249/145/137 +f 249/145/137 121/175/157 248/144/136 +f 248/144/136 71/176/158 101/177/159 +f 241/137/129 101/177/159 102/178/160 +f 234/130/122 102/178/160 103/179/161 +f 227/124/117 103/179/161 104/180/162 +f 105/181/163 227/124/117 104/180/162 +f 106/182/164 220/117/110 105/181/163 +f 107/152/143 213/105/98 106/182/164 +f 255/103/165 263/104/166 262/105/167 +f 256/183/168 264/184/169 263/104/166 +f 257/185/170 265/109/171 264/184/169 +f 259/110/172 265/109/171 258/111/173 +f 260/186/174 266/113/175 259/110/172 +f 261/114/176 267/115/177 260/186/174 +f 262/105/167 270/187/178 269/188/179 +f 263/104/166 271/189/180 270/187/178 +f 264/184/169 272/119/181 271/189/180 +f 266/113/175 272/119/181 265/109/171 +f 267/115/177 273/120/182 266/113/175 +f 268/121/183 274/122/184 267/115/177 +f 269/188/179 277/123/185 276/124/186 +f 270/187/178 278/190/187 277/123/185 +f 271/189/180 279/126/5 278/190/187 +f 273/120/182 279/126/5 272/119/181 +f 274/122/184 280/127/188 273/120/182 +f 275/128/189 281/129/190 274/122/184 +f 277/123/185 283/191/191 276/124/186 +f 278/190/187 284/192/192 277/123/185 +f 279/126/5 285/193/193 278/190/187 +f 279/126/5 287/133/194 286/134/195 +f 280/127/188 288/135/196 287/133/194 +f 281/129/190 289/136/197 288/135/196 +f 284/192/192 290/137/198 283/191/191 +f 285/193/193 291/138/199 284/192/192 +f 286/134/195 292/194/200 285/193/193 +f 286/134/195 294/140/201 293/141/202 +f 287/133/194 295/195/203 294/140/201 +f 288/135/196 296/143/204 295/195/203 +f 291/138/199 297/144/205 290/137/198 +f 292/194/200 298/196/206 291/138/199 +f 293/141/202 299/197/207 292/194/200 +f 293/141/202 301/147/208 300/148/209 +f 294/140/201 302/198/210 301/147/208 +f 295/195/203 303/199/211 302/198/210 +f 71/151/158 255/103/165 128/152/212 +f 121/153/157 256/183/168 255/103/165 +f 120/154/156 257/185/170 256/183/168 +f 119/200/155 258/111/173 257/185/170 +f 117/156/154 258/111/173 118/157/3 +f 116/201/153 259/110/172 117/156/154 +f 115/159/152 260/186/174 116/201/153 +f 72/160/151 261/114/176 115/159/152 +f 129/161/213 268/121/183 261/114/176 +f 130/162/214 275/128/189 268/121/183 +f 131/163/215 282/164/216 275/128/189 +f 282/164/216 133/165/217 289/136/197 +f 289/136/197 134/166/218 296/143/204 +f 296/143/204 135/167/219 303/199/211 +f 303/199/211 70/168/220 136/169/221 +f 302/198/210 136/169/221 137/202/222 +f 301/147/208 137/202/222 138/171/223 +f 300/148/209 138/171/223 139/172/7 +f 300/148/209 140/203/224 299/197/207 +f 299/197/207 141/174/225 298/196/206 +f 298/196/206 142/175/226 297/144/205 +f 297/144/205 69/176/227 122/177/228 +f 290/137/198 122/177/228 123/178/229 +f 283/191/191 123/178/229 124/179/230 +f 276/124/186 124/179/230 125/204/231 +f 126/181/232 276/124/186 125/204/231 +f 127/205/233 269/188/179 126/181/232 +f 128/152/212 262/105/167 127/205/233 +f 304/103/234 312/104/235 311/105/236 +f 305/106/237 313/107/238 312/104/235 +f 306/108/239 314/109/240 313/107/238 +f 308/110/241 314/109/240 307/111/242 +f 309/112/243 315/113/244 308/110/241 +f 310/114/245 316/115/246 309/112/243 +f 311/105/236 319/116/247 318/117/248 +f 312/104/235 320/118/249 319/116/247 +f 313/107/238 321/119/250 320/118/249 +f 315/113/244 321/119/250 314/109/240 +f 316/115/246 322/120/251 315/113/244 +f 317/121/252 323/122/253 316/115/246 +f 318/117/248 326/123/254 325/124/255 +f 319/116/247 327/125/256 326/123/254 +f 320/118/249 328/126/9 327/125/256 +f 322/120/251 328/126/9 321/119/250 +f 323/122/253 329/127/257 322/120/251 +f 324/128/258 330/129/259 323/122/253 +f 326/123/254 332/130/260 325/124/255 +f 327/125/256 333/131/261 326/123/254 +f 328/126/9 334/132/262 327/125/256 +f 328/126/9 336/133/263 335/134/264 +f 329/127/257 337/135/265 336/133/263 +f 330/129/259 338/136/266 337/135/265 +f 333/131/261 339/137/267 332/130/260 +f 334/132/262 340/138/268 333/131/261 +f 335/134/264 341/139/269 334/132/262 +f 335/134/264 343/140/270 342/141/271 +f 336/133/263 344/142/272 343/140/270 +f 337/135/265 345/143/273 344/142/272 +f 340/138/268 346/144/274 339/137/267 +f 341/139/269 347/145/275 340/138/268 +f 342/141/271 348/146/276 341/139/269 +f 342/141/271 350/147/277 349/148/278 +f 343/140/270 351/149/279 350/147/277 +f 344/142/272 352/150/280 351/149/279 +f 69/151/227 304/103/234 149/152/281 +f 142/153/226 305/106/237 304/103/234 +f 141/154/225 306/108/239 305/106/237 +f 140/155/224 307/111/242 306/108/239 +f 138/156/223 307/111/242 139/157/7 +f 137/158/222 308/110/241 138/156/223 +f 136/159/221 309/112/243 137/158/222 +f 70/160/220 310/114/245 136/159/221 +f 150/161/282 317/121/252 310/114/245 +f 151/162/283 324/128/258 317/121/252 +f 152/163/284 331/164/285 324/128/258 +f 331/164/285 154/165/286 338/136/266 +f 338/136/266 155/166/287 345/143/273 +f 345/143/273 156/167/288 352/150/280 +f 352/150/280 66/168/74 86/169/73 +f 351/149/279 86/169/73 85/170/72 +f 350/147/277 85/170/72 84/171/71 +f 349/148/278 84/171/71 83/172/11 +f 349/148/278 82/173/70 348/146/276 +f 348/146/276 81/174/69 347/145/275 +f 347/145/275 80/175/68 346/144/274 +f 346/144/274 65/176/66 143/177/289 +f 339/137/267 143/177/289 144/178/290 +f 332/130/260 144/178/290 145/179/291 +f 325/124/255 145/179/291 146/180/292 +f 147/181/293 325/124/255 146/180/292 +f 148/182/294 318/117/248 147/181/293 +f 149/152/281 311/105/236 148/182/294 +f 353/206/295 361/207/296 360/208/297 +f 354/209/298 362/210/299 361/207/296 +f 355/211/300 363/212/301 362/210/299 +f 357/213/302 363/212/301 356/214/303 +f 358/215/304 364/216/305 357/213/302 +f 359/217/306 365/218/307 358/215/304 +f 360/208/297 368/219/308 367/220/309 +f 361/207/296 369/221/310 368/219/308 +f 362/210/299 370/222/311 369/221/310 +f 364/216/305 370/222/311 363/212/301 +f 365/218/307 371/223/312 364/216/305 +f 366/224/313 372/225/314 365/218/307 +f 367/220/309 375/226/315 374/227/316 +f 368/219/308 376/228/317 375/226/315 +f 369/221/310 377/229/17 376/228/317 +f 371/223/312 377/229/17 370/222/311 +f 372/225/314 378/230/318 371/223/312 +f 373/231/319 379/232/320 372/225/314 +f 375/226/315 381/233/321 374/227/316 +f 376/228/317 382/234/322 375/226/315 +f 377/229/17 383/235/323 376/228/317 +f 377/229/17 385/236/324 384/237/325 +f 378/230/318 386/238/326 385/236/324 +f 379/232/320 387/239/327 386/238/326 +f 382/234/322 388/240/328 381/233/321 +f 383/235/323 389/241/329 382/234/322 +f 384/237/325 390/242/330 383/235/323 +f 384/237/325 392/243/331 391/244/332 +f 385/236/324 393/245/333 392/243/331 +f 386/238/326 394/246/334 393/245/333 +f 389/241/329 395/247/335 388/240/328 +f 390/242/330 396/248/336 389/241/329 +f 391/244/332 397/249/337 390/242/330 +f 391/244/332 399/250/338 398/251/339 +f 392/243/331 400/252/340 399/250/338 +f 393/245/333 401/253/341 400/252/340 +f 67/254/89 353/206/295 73/255/90 +f 107/256/143 354/209/298 353/206/295 +f 106/257/164 355/211/300 354/209/298 +f 105/258/163 356/214/303 355/211/300 +f 103/259/161 356/214/303 104/260/162 +f 102/261/160 357/213/302 103/259/161 +f 101/262/159 358/215/304 102/261/160 +f 71/263/158 359/217/306 101/262/159 +f 128/264/212 366/224/313 359/217/306 +f 127/265/233 373/231/319 366/224/313 +f 126/266/232 380/267/342 373/231/319 +f 380/267/342 124/268/230 387/239/327 +f 387/239/327 123/269/229 394/246/334 +f 394/246/334 122/270/228 401/253/341 +f 401/253/341 69/271/227 149/272/281 +f 400/252/340 149/272/281 148/273/294 +f 399/250/338 148/273/294 147/274/293 +f 398/251/339 147/274/293 146/275/292 +f 398/251/339 145/276/291 397/249/337 +f 397/249/337 144/277/290 396/248/336 +f 396/248/336 143/278/289 395/247/335 +f 395/247/335 65/279/66 79/280/67 +f 388/240/328 79/280/67 78/281/95 +f 381/233/321 78/281/95 77/282/94 +f 374/227/316 77/282/94 76/283/93 +f 75/284/92 374/227/316 76/283/93 +f 74/285/91 367/220/309 75/284/92 +f 73/255/90 360/208/297 74/285/91 +f 402/206/343 410/207/344 409/208/345 +f 403/209/346 411/210/347 410/207/344 +f 404/211/348 412/212/349 411/210/347 +f 406/213/350 412/212/349 405/214/351 +f 407/215/352 413/216/353 406/213/350 +f 408/217/354 414/218/355 407/215/352 +f 409/208/345 417/219/356 416/220/357 +f 410/207/344 418/221/358 417/219/356 +f 411/210/347 419/222/359 418/221/358 +f 413/216/353 419/222/359 412/212/349 +f 414/218/355 420/223/360 413/216/353 +f 415/224/361 421/225/362 414/218/355 +f 416/220/357 424/226/363 423/227/364 +f 417/219/356 425/228/365 424/226/363 +f 418/221/358 426/229/18 425/228/365 +f 420/223/360 426/229/18 419/222/359 +f 421/225/362 427/230/366 420/223/360 +f 422/231/367 428/232/368 421/225/362 +f 424/226/363 430/233/369 423/227/364 +f 425/228/365 431/234/370 424/226/363 +f 426/229/18 432/235/371 425/228/365 +f 426/229/18 434/236/372 433/237/373 +f 427/230/366 435/238/374 434/236/372 +f 428/232/368 436/239/375 435/238/374 +f 431/234/370 437/240/376 430/233/369 +f 432/235/371 438/241/377 431/234/370 +f 433/237/373 439/242/378 432/235/371 +f 433/237/373 441/243/379 440/244/380 +f 434/236/372 442/245/381 441/243/379 +f 435/238/374 443/246/382 442/245/381 +f 438/241/377 444/247/383 437/240/376 +f 439/242/378 445/248/384 438/241/377 +f 440/244/380 446/249/385 439/242/378 +f 440/244/380 448/250/386 447/251/387 +f 441/243/379 449/252/388 448/250/386 +f 442/245/381 450/253/389 449/252/388 +f 72/254/151 402/206/343 129/255/213 +f 114/256/150 403/209/346 402/206/343 +f 113/257/149 404/211/348 403/209/346 +f 112/258/148 405/214/351 404/211/348 +f 110/259/146 405/214/351 111/260/390 +f 109/261/145 406/213/350 110/259/146 +f 108/262/144 407/215/352 109/261/145 +f 68/263/82 408/217/354 108/262/144 +f 93/264/81 415/224/361 408/217/354 +f 92/265/80 422/231/367 415/224/361 +f 91/266/79 429/267/391 422/231/367 +f 429/267/391 89/268/77 436/239/375 +f 436/239/375 88/269/76 443/246/382 +f 443/246/382 87/270/75 450/253/389 +f 450/253/389 66/271/74 156/272/288 +f 449/252/388 156/272/288 155/273/287 +f 448/250/386 155/273/287 154/274/286 +f 447/251/387 154/274/286 153/275/392 +f 447/251/387 152/276/284 446/249/385 +f 446/249/385 151/277/283 445/248/384 +f 445/248/384 150/278/282 444/247/383 +f 444/247/383 70/279/220 135/280/219 +f 437/240/376 135/280/219 134/281/218 +f 430/233/369 134/281/218 133/282/217 +f 423/227/364 133/282/217 132/283/393 +f 131/284/215 423/227/364 132/283/393 +f 130/285/214 416/220/357 131/284/215 +f 129/255/213 409/208/345 130/285/214 +f 452/286/1 468/287/3 467/288/1 +f 454/289/3 469/288/5 468/290/3 +f 456/291/5 470/290/7 469/292/5 +f 458/293/7 471/292/9 470/294/7 +f 460/295/9 472/296/11 471/297/9 +f 462/298/11 473/297/13 472/299/11 +f 464/300/13 474/299/15 473/301/13 +f 466/302/15 467/301/1 474/287/15 +f 459/303/394 478/304/395 457/305/395 +f 451/306/17 468/287/17 453/307/17 +f 453/308/17 469/288/17 455/309/17 +f 455/310/17 470/290/17 457/311/17 +f 457/305/17 471/292/17 459/303/17 +f 459/312/17 472/296/17 461/313/17 +f 461/314/17 473/297/17 463/315/17 +f 463/316/17 474/299/17 465/317/17 +f 465/318/17 467/301/17 451/319/17 +f 478/320/17 480/321/17 482/322/17 +f 455/309/396 476/323/397 453/308/397 +f 463/316/398 482/324/399 481/325/398 +f 459/312/394 480/326/400 479/327/394 +f 455/310/396 478/328/395 477/329/396 +f 451/306/401 476/330/397 475/331/401 +f 451/319/401 482/332/399 465/318/399 +f 463/315/398 480/333/400 461/314/400 +f 498/334/17 493/335/17 492/336/17 +f 496/337/1 499/338/1 491/339/1 +f 502/340/9 494/341/9 500/342/9 +f 490/343/9 485/344/9 489/345/9 +f 487/346/1 484/347/1 488/348/1 +f 489/349/18 483/350/18 487/351/18 +f 501/352/5 489/353/5 487/354/5 +f 492/355/162 499/341/162 498/335/162 +f 501/336/292 494/338/292 493/334/292 +f 502/356/5 487/354/5 488/357/5 +f 499/358/5 490/359/5 489/353/5 +f 500/360/5 501/352/5 487/354/5 +f 498/361/5 499/358/5 489/353/5 +f 485/362/13 493/363/13 483/364/13 +f 496/365/13 485/362/13 486/366/13 +f 483/364/13 495/367/13 484/368/13 +f 491/369/13 492/370/13 485/362/13 +f 493/363/13 494/371/13 483/364/13 +f 511/372/402 510/373/403 503/374/404 +f 511/375/402 544/376/405 545/377/406 +f 503/378/404 546/379/407 544/380/405 +f 503/381/404 510/382/403 504/383/408 +f 504/384/408 510/385/403 505/386/409 +f 546/387/407 505/388/409 547/389/410 +f 505/390/409 510/391/403 506/392/411 +f 547/393/410 506/392/411 548/394/412 +f 506/395/411 510/396/403 507/397/413 +f 548/398/412 507/399/413 549/400/414 +f 507/401/413 510/402/403 508/403/415 +f 549/404/414 508/405/415 550/406/416 +f 508/407/415 510/408/403 509/409/417 +f 508/410/415 551/411/418 550/412/416 +f 509/413/417 510/414/403 511/415/402 +f 509/416/417 545/417/406 551/418/418 +f 512/419/1 528/420/419 514/421/419 +f 514/421/419 530/422/420 516/423/420 +f 530/422/420 518/424/421 516/423/420 +f 531/425/421 520/426/9 518/424/421 +f 520/343/9 533/427/422 522/428/422 +f 522/428/422 534/429/423 524/430/423 +f 517/431/424 536/432/425 538/433/424 +f 534/429/423 526/434/426 524/430/423 +f 535/435/426 512/419/1 526/434/426 +f 513/436/403 528/437/403 529/438/403 +f 515/439/403 530/422/403 528/420/403 +f 517/440/403 531/441/403 530/442/403 +f 521/443/403 531/425/403 519/444/403 +f 521/445/403 533/446/403 532/447/403 +f 525/448/403 533/427/403 523/449/403 +f 525/450/403 535/451/403 534/452/403 +f 513/453/403 535/435/403 527/454/403 +f 540/455/9 549/400/414 541/456/422 +f 525/457/427 543/458/428 527/459/428 +f 523/460/429 540/461/430 541/462/429 +f 519/463/431 538/464/424 539/465/431 +f 515/466/425 537/467/432 536/468/425 +f 527/459/428 537/469/432 513/470/432 +f 523/460/429 542/471/427 525/457/427 +f 519/463/431 540/472/430 521/473/430 +f 538/474/420 547/389/410 539/475/421 +f 537/476/1 544/376/405 536/477/419 +f 543/478/426 545/417/406 537/479/1 +f 541/480/422 550/406/416 542/481/423 +f 539/482/421 548/394/412 540/483/9 +f 538/484/420 544/380/405 546/379/407 +f 543/485/426 550/412/416 551/411/418 +f 560/372/433 559/373/434 552/374/435 +f 560/375/433 593/376/436 594/377/437 +f 593/380/436 553/486/438 595/379/439 +f 552/381/435 559/382/434 553/383/438 +f 553/384/438 559/385/434 554/386/440 +f 553/487/438 596/389/441 595/387/439 +f 554/390/440 559/391/434 555/392/442 +f 554/390/440 597/394/443 596/393/441 +f 555/395/442 559/396/434 556/397/444 +f 555/488/442 598/400/445 597/398/443 +f 556/401/444 559/402/434 557/403/446 +f 598/404/445 557/405/446 599/406/447 +f 557/407/446 559/408/434 558/409/448 +f 557/410/446 600/411/449 599/412/447 +f 558/413/448 559/414/434 560/415/433 +f 558/416/448 594/417/437 600/418/449 +f 578/489/450 563/421/451 561/419/450 +f 577/420/451 565/423/452 563/421/451 +f 579/422/452 567/424/453 565/423/452 +f 567/424/453 581/490/454 569/426/454 +f 569/343/454 582/427/455 571/428/455 +f 582/427/455 573/430/456 571/428/455 +f 564/466/457 587/433/458 566/431/458 +f 583/429/456 575/434/459 573/430/456 +f 584/435/459 561/419/450 575/434/459 +f 564/491/434 578/438/434 562/436/434 +f 566/492/434 577/420/434 564/439/434 +f 566/440/434 580/441/434 579/442/434 +f 570/443/434 580/425/434 568/444/434 +f 572/493/434 581/447/434 570/445/434 +f 574/448/434 582/427/434 572/449/434 +f 576/494/434 583/452/434 574/450/434 +f 562/453/434 584/435/434 576/454/434 +f 589/455/454 598/400/445 590/456/455 +f 576/459/460 591/495/461 592/458/460 +f 570/496/462 590/462/463 572/460/463 +f 568/463/464 587/464/458 588/465/464 +f 562/470/465 585/468/457 564/466/457 +f 562/470/465 592/497/460 586/469/465 +f 572/460/463 591/471/461 574/457/461 +f 570/473/462 588/498/464 589/472/462 +f 588/475/453 595/387/439 596/389/441 +f 586/476/450 593/376/436 585/477/451 +f 586/479/450 600/418/449 594/417/437 +f 591/481/456 598/404/445 599/406/447 +f 588/482/453 597/394/443 589/483/454 +f 585/499/451 595/379/439 587/484/452 +f 591/500/456 600/411/449 592/485/459 +f 609/372/466 608/373/467 601/374/468 +f 609/375/466 642/376/469 643/377/470 +f 601/378/468 644/379/471 642/380/469 +f 601/381/468 608/382/467 602/383/472 +f 602/384/472 608/385/467 603/386/473 +f 644/387/471 603/388/473 645/389/474 +f 603/390/473 608/391/467 604/392/475 +f 603/390/473 646/394/476 645/393/474 +f 604/395/475 608/396/467 605/397/477 +f 604/488/475 647/400/478 646/398/476 +f 605/401/477 608/402/467 606/403/479 +f 605/501/477 648/406/480 647/404/478 +f 606/407/479 608/408/467 607/409/481 +f 648/412/480 607/502/481 649/411/482 +f 607/413/481 608/414/467 609/415/466 +f 649/418/482 609/503/466 643/417/470 +f 627/489/483 612/421/484 610/419/483 +f 626/420/484 614/423/485 612/421/484 +f 628/422/485 616/424/486 614/423/485 +f 616/424/486 630/490/487 618/426/487 +f 618/343/487 631/427/488 620/428/488 +f 631/427/488 622/430/489 620/428/488 +f 615/431/490 634/432/491 636/433/490 +f 622/430/489 633/435/492 624/434/492 +f 633/435/492 610/419/483 624/434/492 +f 613/491/467 627/438/467 611/436/467 +f 615/492/467 626/420/467 613/439/467 +f 615/440/467 629/441/467 628/442/467 +f 619/443/467 629/425/467 617/444/467 +f 621/493/467 630/447/467 619/445/467 +f 623/448/467 631/427/467 621/449/467 +f 625/494/467 632/452/467 623/450/467 +f 625/454/467 627/489/467 633/435/467 +f 638/455/487 647/400/478 639/456/488 +f 623/457/493 641/458/494 625/459/494 +f 619/496/495 639/462/496 621/460/496 +f 617/463/497 636/464/490 637/465/497 +f 613/466/491 635/467/498 634/468/491 +f 625/459/494 635/469/498 611/470/498 +f 621/460/496 640/471/493 623/457/493 +f 619/473/495 637/498/497 638/472/495 +f 636/474/485 645/389/474 637/475/486 +f 634/477/484 643/377/470 642/376/469 +f 641/478/492 643/417/470 635/479/483 +f 639/480/488 648/406/480 640/481/489 +f 638/483/487 645/393/474 646/394/476 +f 634/499/484 644/379/471 636/484/485 +f 640/500/489 649/411/482 641/485/492 +f 658/372/499 657/373/500 650/374/501 +f 692/377/502 650/504/501 691/376/503 +f 650/378/501 693/379/504 691/380/503 +f 650/381/501 657/382/500 651/383/505 +f 651/384/505 657/385/500 652/386/506 +f 693/387/504 652/388/506 694/389/507 +f 652/390/506 657/391/500 653/392/508 +f 652/390/506 695/394/509 694/393/507 +f 653/395/508 657/396/500 654/397/510 +f 695/398/509 654/399/510 696/400/511 +f 654/401/510 657/402/500 655/403/512 +f 696/404/511 655/405/512 697/406/513 +f 655/407/512 657/408/500 656/409/514 +f 655/410/512 698/411/515 697/412/513 +f 656/413/514 657/414/500 658/415/499 +f 698/418/515 658/503/499 692/417/502 +f 659/419/516 675/420/517 661/421/517 +f 661/421/517 677/422/518 663/423/518 +f 677/422/518 665/424/519 663/423/518 +f 665/424/519 679/490/520 667/426/520 +f 679/505/520 669/428/521 667/343/520 +f 680/427/521 671/430/522 669/428/521 +f 664/431/450 683/432/523 685/433/450 +f 671/430/522 682/435/524 673/434/524 +f 682/435/524 659/419/516 673/434/524 +f 660/436/500 675/437/500 676/438/500 +f 662/439/500 677/422/500 675/420/500 +f 664/440/500 678/441/500 677/442/500 +f 666/444/500 679/490/500 678/425/500 +f 670/493/500 679/447/500 668/445/500 +f 672/448/500 680/427/500 670/449/500 +f 674/494/500 681/452/500 672/450/500 +f 660/453/500 682/435/500 674/454/500 +f 687/455/520 696/400/511 688/456/521 +f 672/457/18 690/458/525 674/459/525 +f 668/496/526 688/462/527 670/460/527 +f 664/431/450 686/465/528 666/463/528 +f 662/466/523 684/467/529 683/468/523 +f 674/459/525 684/469/529 660/470/529 +f 670/460/527 689/471/18 672/457/18 +f 668/473/526 686/498/528 687/472/526 +f 685/474/518 694/389/507 686/475/519 +f 684/476/516 691/376/503 683/477/517 +f 684/479/516 698/418/515 692/417/502 +f 689/481/522 696/404/511 697/406/513 +f 687/483/520 694/393/507 695/394/509 +f 683/499/517 693/379/504 685/484/518 +f 690/485/524 697/412/513 698/411/515 +f 707/372/530 706/373/392 699/374/531 +f 707/375/530 740/376/532 741/377/533 +f 699/378/531 742/379/534 740/380/532 +f 699/381/531 706/382/392 700/383/535 +f 700/384/535 706/385/392 701/386/536 +f 742/387/534 701/388/536 743/389/537 +f 701/390/536 706/391/392 702/392/538 +f 701/390/536 744/394/539 743/393/537 +f 702/395/538 706/396/392 703/397/540 +f 744/398/539 703/399/540 745/400/541 +f 703/401/540 706/402/392 704/403/542 +f 703/501/540 746/406/543 745/404/541 +f 704/407/542 706/408/392 705/409/544 +f 746/412/543 705/502/544 747/411/545 +f 705/413/544 706/414/392 707/415/530 +f 705/416/544 741/417/533 747/418/545 +f 725/489/5 710/421/546 708/419/5 +f 724/420/546 712/423/292 710/421/546 +f 712/423/292 727/425/547 714/424/547 +f 714/424/547 728/490/13 716/426/13 +f 716/343/13 729/427/548 718/428/548 +f 729/427/548 720/430/390 718/428/548 +f 711/466/549 734/433/9 713/431/9 +f 720/430/390 731/435/550 722/434/550 +f 722/434/550 725/489/5 708/419/5 +f 709/436/392 724/437/392 725/438/392 +f 713/492/392 724/420/392 711/439/392 +f 713/440/392 727/441/392 726/442/392 +f 717/443/392 727/425/392 715/444/392 +f 719/493/392 728/447/392 717/445/392 +f 719/449/392 730/429/392 729/427/392 +f 721/450/392 731/451/392 730/452/392 +f 709/453/392 731/435/392 723/454/392 +f 736/455/13 745/400/541 737/456/548 +f 723/459/551 738/495/18 739/458/551 +f 717/496/552 737/462/553 719/460/553 +f 715/463/554 734/464/9 735/465/554 +f 711/466/549 733/467/555 732/468/549 +f 723/459/551 733/469/555 709/470/555 +f 721/457/18 737/506/553 738/471/18 +f 715/463/554 736/472/552 717/473/552 +f 734/474/292 743/389/537 735/475/547 +f 732/477/546 741/377/533 740/376/532 +f 739/478/550 741/417/533 733/479/5 +f 738/481/390 745/404/541 746/406/543 +f 735/482/547 744/394/539 736/483/13 +f 734/484/292 740/380/532 742/379/534 +f 739/485/550 746/412/543 747/411/545 +f 756/372/556 755/373/557 748/374/558 +f 756/375/556 789/376/559 790/377/560 +f 789/380/559 749/486/561 791/379/562 +f 748/381/558 755/382/557 749/383/561 +f 749/384/561 755/385/557 750/386/563 +f 749/487/561 792/389/564 791/387/562 +f 750/390/563 755/391/557 751/392/565 +f 792/393/564 751/392/565 793/394/566 +f 751/395/565 755/396/557 752/397/567 +f 751/488/565 794/400/568 793/398/566 +f 752/401/567 755/402/557 753/403/569 +f 794/404/568 753/405/569 795/406/570 +f 753/407/569 755/408/557 754/409/571 +f 795/412/570 754/502/571 796/411/572 +f 754/413/571 755/414/557 756/415/556 +f 796/418/572 756/503/556 790/417/560 +f 774/489/573 759/421/574 757/419/573 +f 759/421/574 775/422/575 761/423/575 +f 761/423/575 776/425/576 763/424/576 +f 763/424/576 777/490/577 765/426/577 +f 765/343/577 778/427/578 767/428/578 +f 778/427/578 769/430/579 767/428/578 +f 762/431/483 781/432/580 783/433/483 +f 779/429/579 771/434/581 769/430/579 +f 771/434/581 774/489/573 757/419/573 +f 758/436/557 773/437/557 774/438/557 +f 762/492/557 773/420/557 760/439/557 +f 764/507/557 775/442/557 762/440/557 +f 764/444/557 777/490/557 776/425/557 +f 766/445/557 778/446/557 777/447/557 +f 768/449/557 779/429/557 778/427/557 +f 772/494/557 779/452/557 770/450/557 +f 772/454/557 774/489/557 780/435/557 +f 786/456/578 793/398/566 794/400/568 +f 772/459/582 787/495/18 788/458/582 +f 768/460/583 785/461/584 786/462/583 +f 762/431/483 784/465/585 764/463/585 +f 760/466/580 782/467/586 781/468/580 +f 772/459/582 782/469/586 758/470/586 +f 768/460/583 787/471/18 770/457/18 +f 766/473/584 784/498/585 785/472/584 +f 783/474/575 792/389/564 784/475/576 +f 782/476/573 789/376/559 781/477/574 +f 788/478/581 790/417/560 782/479/573 +f 786/480/578 795/406/570 787/481/579 +f 784/482/576 793/394/566 785/483/577 +f 781/499/574 791/379/562 783/484/575 +f 788/485/581 795/412/570 796/411/572 +f 805/372/587 804/373/522 797/374/588 +f 805/375/587 838/376/589 839/377/590 +f 838/380/589 798/486/591 840/379/592 +f 797/381/588 804/382/522 798/383/591 +f 798/384/591 804/385/522 799/386/593 +f 798/487/591 841/389/594 840/387/592 +f 799/390/593 804/391/522 800/392/595 +f 799/390/593 842/394/596 841/393/594 +f 800/395/595 804/396/522 801/397/597 +f 842/398/596 801/399/597 843/400/598 +f 801/401/597 804/402/522 802/403/599 +f 801/501/597 844/406/600 843/404/598 +f 802/407/599 804/408/522 803/409/601 +f 844/412/600 803/502/601 845/411/602 +f 803/413/601 804/414/522 805/415/587 +f 845/418/602 805/503/587 839/417/590 +f 823/489/520 808/421/603 806/419/520 +f 808/421/603 824/422/604 810/423/604 +f 810/423/604 825/425/605 812/424/605 +f 825/425/605 814/426/516 812/424/605 +f 814/343/516 827/427/529 816/428/529 +f 816/428/529 828/429/500 818/430/500 +f 811/431/454 830/432/606 832/433/454 +f 828/429/500 820/434/526 818/430/500 +f 820/434/526 823/489/520 806/419/520 +f 807/436/522 822/437/522 823/438/522 +f 809/439/522 824/422/522 822/420/522 +f 813/507/522 824/442/522 811/440/522 +f 813/444/522 826/490/522 825/425/522 +f 815/445/522 827/446/522 826/447/522 +f 817/449/522 828/429/522 827/427/522 +f 819/450/522 829/451/522 828/452/522 +f 821/454/522 823/489/522 829/435/522 +f 834/455/516 843/400/598 835/456/529 +f 821/459/607 836/495/18 837/458/607 +f 817/460/608 834/461/524 835/462/608 +f 811/431/454 833/465/609 813/463/609 +f 809/466/606 831/467/521 830/468/606 +f 821/459/607 831/469/521 807/470/521 +f 817/460/608 836/471/18 819/457/18 +f 813/463/609 834/472/524 815/473/524 +f 832/474/604 841/389/594 833/475/605 +f 831/476/520 838/376/589 830/477/603 +f 837/478/526 839/417/590 831/479/520 +f 835/480/529 844/406/600 836/481/500 +f 834/483/516 841/393/594 842/394/596 +f 830/499/603 840/379/592 832/484/604 +f 837/485/526 844/412/600 845/411/602 +f 854/372/610 853/373/390 846/374/611 +f 854/375/610 887/376/612 888/377/613 +f 846/378/611 889/379/614 887/380/612 +f 846/381/611 853/382/390 847/383/615 +f 847/384/615 853/385/390 848/386/616 +f 847/487/615 890/389/617 889/387/614 +f 848/390/616 853/391/390 849/392/618 +f 890/393/617 849/392/618 891/394/619 +f 849/395/618 853/396/390 850/397/620 +f 891/398/619 850/399/620 892/400/621 +f 850/401/620 853/402/390 851/403/622 +f 892/404/621 851/405/622 893/406/623 +f 851/407/622 853/408/390 852/409/624 +f 851/410/622 894/411/625 893/412/623 +f 852/413/624 853/414/390 854/415/610 +f 894/418/625 854/503/610 888/417/613 +f 872/489/13 857/421/626 855/419/13 +f 857/421/626 873/422/162 859/423/162 +f 859/423/162 874/425/627 861/424/627 +f 874/425/627 863/426/5 861/424/627 +f 863/343/5 876/427/555 865/428/555 +f 876/427/555 867/430/392 865/428/555 +f 860/431/1 879/432/628 881/433/1 +f 877/429/392 869/434/552 867/430/392 +f 869/434/552 872/489/13 855/419/13 +f 856/436/390 871/437/390 872/438/390 +f 858/439/390 873/422/390 871/420/390 +f 862/507/390 873/442/390 860/440/390 +f 862/444/390 875/490/390 874/425/390 +f 864/445/390 876/446/390 875/447/390 +f 868/448/390 876/427/390 866/449/390 +f 870/494/390 877/452/390 868/450/390 +f 856/453/390 878/435/390 870/454/390 +f 883/455/5 892/400/621 884/456/555 +f 870/459/629 885/495/18 886/458/629 +f 864/496/550 884/462/630 866/460/630 +f 860/431/1 882/465/631 862/463/631 +f 856/470/548 879/468/628 858/466/628 +f 870/459/629 880/469/548 856/470/548 +f 868/457/18 884/506/630 885/471/18 +f 862/463/631 883/472/550 864/473/550 +f 881/474/162 890/389/617 882/475/627 +f 880/476/13 887/376/612 879/477/626 +f 886/478/552 888/417/613 880/479/13 +f 884/480/555 893/406/623 885/481/392 +f 882/482/627 891/394/619 883/483/5 +f 879/499/626 889/379/614 881/484/162 +f 886/485/552 893/412/623 894/411/625 +f 903/372/632 902/373/579 895/374/633 +f 903/375/632 936/376/634 937/377/635 +f 895/378/633 938/379/636 936/380/634 +f 895/381/633 902/382/579 896/383/637 +f 896/384/637 902/385/579 897/386/638 +f 896/487/637 939/389/639 938/387/636 +f 897/390/638 902/391/579 898/392/640 +f 939/393/639 898/392/640 940/394/641 +f 898/395/640 902/396/579 899/397/642 +f 940/398/641 899/399/642 941/400/643 +f 899/401/642 902/402/579 900/403/644 +f 941/404/643 900/405/644 942/406/645 +f 900/407/644 902/408/579 901/409/646 +f 900/410/644 943/411/647 942/412/645 +f 901/413/646 902/414/579 903/415/632 +f 943/418/647 903/503/632 937/417/635 +f 921/489/577 906/421/648 904/419/577 +f 906/421/648 922/422/649 908/423/649 +f 908/423/649 923/425/650 910/424/650 +f 923/425/650 912/426/573 910/424/650 +f 912/343/573 925/427/586 914/428/586 +f 925/427/586 916/430/557 914/428/586 +f 909/431/487 928/432/651 930/433/487 +f 926/429/557 918/434/584 916/430/557 +f 918/434/584 921/489/577 904/419/577 +f 907/491/579 921/438/579 905/436/579 +f 909/492/579 920/420/579 907/439/579 +f 911/507/579 922/442/579 909/440/579 +f 911/444/579 924/490/579 923/425/579 +f 913/445/579 925/446/579 924/447/579 +f 915/449/579 926/429/579 925/427/579 +f 919/494/579 926/452/579 917/450/579 +f 919/454/579 921/489/579 927/435/579 +f 933/456/586 940/398/641 941/400/643 +f 919/459/652 934/495/18 935/458/652 +f 913/496/581 933/462/653 915/460/653 +f 909/431/487 931/465/654 911/463/654 +f 905/470/578 928/468/651 907/466/651 +f 905/470/578 935/497/652 929/469/578 +f 915/460/653 934/471/18 917/457/18 +f 911/463/654 932/472/581 913/473/581 +f 930/474/649 939/389/639 931/475/650 +f 929/476/577 936/376/634 928/477/648 +f 929/479/577 943/418/647 937/417/635 +f 933/480/586 942/406/645 934/481/557 +f 931/482/650 940/394/641 932/483/573 +f 930/484/649 936/380/634 938/379/636 +f 935/485/584 942/412/645 943/411/647 +f 952/372/655 951/373/424 944/374/656 +f 986/377/657 944/504/656 985/376/658 +f 944/378/656 987/379/659 985/380/658 +f 944/381/656 951/382/424 945/383/660 +f 945/384/660 951/385/424 946/386/661 +f 945/487/660 988/389/662 987/387/659 +f 946/390/661 951/391/424 947/392/663 +f 988/393/662 947/392/663 989/394/664 +f 947/395/663 951/396/424 948/397/665 +f 947/488/663 990/400/666 989/398/664 +f 948/401/665 951/402/424 949/403/667 +f 990/404/666 949/405/667 991/406/668 +f 949/407/667 951/408/424 950/409/669 +f 949/410/667 992/411/670 991/412/668 +f 950/413/669 951/414/424 952/415/655 +f 992/418/670 952/503/655 986/417/657 +f 970/489/1 955/421/671 953/419/1 +f 969/420/671 957/423/672 955/421/671 +f 957/423/672 972/425/673 959/424/673 +f 959/424/673 973/490/9 961/426/9 +f 961/343/9 974/427/674 963/428/674 +f 963/428/674 975/429/427 965/430/427 +f 958/431/420 977/432/675 979/433/420 +f 975/429/427 967/434/676 965/430/427 +f 976/435/676 953/419/1 967/434/676 +f 956/491/424 970/438/424 954/436/424 +f 958/492/424 969/420/424 956/439/424 +f 958/440/424 972/441/424 971/442/424 +f 962/443/424 972/425/424 960/444/424 +f 962/445/424 974/446/424 973/447/424 +f 964/449/424 975/429/424 974/427/424 +f 968/494/424 975/452/424 966/450/424 +f 954/453/424 976/435/424 968/454/424 +f 982/456/674 989/398/664 990/400/666 +f 966/457/403 984/458/677 968/459/677 +f 962/496/678 982/462/679 964/460/679 +f 960/463/680 979/464/420 980/465/680 +f 954/470/681 977/468/675 956/466/675 +f 954/470/681 984/497/677 978/469/681 +f 964/460/679 983/471/403 966/457/403 +f 960/463/680 981/472/678 962/473/678 +f 980/475/673 987/387/659 988/389/662 +f 977/477/671 986/377/657 985/376/658 +f 984/478/676 986/417/657 978/479/1 +f 983/481/427 990/404/666 991/406/668 +f 980/482/673 989/394/664 981/483/9 +f 977/499/671 987/379/659 979/484/672 +f 983/500/427 992/411/670 984/485/676 +f 1001/372/682 1000/373/489 993/374/683 +f 1035/377/684 993/504/683 1034/376/685 +f 993/378/683 1036/379/686 1034/380/685 +f 993/381/683 1000/382/489 994/383/687 +f 994/384/687 1000/385/489 995/386/688 +f 994/487/687 1037/389/689 1036/387/686 +f 995/390/688 1000/391/489 996/392/690 +f 995/390/688 1038/394/691 1037/393/689 +f 996/395/690 1000/396/489 997/397/692 +f 1038/398/691 997/399/692 1039/400/693 +f 997/401/692 1000/402/489 998/403/694 +f 997/501/692 1040/406/695 1039/404/693 +f 998/407/694 1000/408/489 999/409/696 +f 998/410/694 1041/411/697 1040/412/695 +f 999/413/696 1000/414/489 1001/415/682 +f 999/416/696 1035/417/684 1041/418/697 +f 1019/489/487 1004/421/698 1002/419/487 +f 1004/421/698 1020/422/699 1006/423/699 +f 1006/423/699 1021/425/700 1008/424/700 +f 1008/424/700 1022/490/483 1010/426/483 +f 1010/343/483 1023/427/498 1012/428/498 +f 1012/428/498 1024/429/467 1014/430/467 +f 1005/466/701 1028/433/702 1007/431/702 +f 1024/429/467 1016/434/495 1014/430/467 +f 1016/434/495 1019/489/487 1002/419/487 +f 1005/491/489 1019/438/489 1003/436/489 +f 1005/439/489 1020/422/489 1018/420/489 +f 1007/440/489 1021/441/489 1020/442/489 +f 1009/444/489 1022/490/489 1021/425/489 +f 1011/445/489 1023/446/489 1022/447/489 +f 1013/449/489 1024/429/489 1023/427/489 +f 1017/494/489 1024/452/489 1015/450/489 +f 1003/453/489 1025/435/489 1017/454/489 +f 1030/455/483 1039/400/693 1031/456/498 +f 1015/457/493 1033/458/703 1017/459/703 +f 1011/496/492 1031/462/704 1013/460/704 +f 1009/463/705 1028/464/702 1029/465/705 +f 1003/470/488 1026/468/701 1005/466/701 +f 1017/459/703 1027/469/488 1003/470/488 +f 1015/457/493 1031/506/704 1032/471/493 +f 1009/463/705 1030/472/492 1011/473/492 +f 1029/475/700 1036/387/686 1037/389/689 +f 1026/477/698 1035/377/684 1034/376/685 +f 1033/478/495 1035/417/684 1027/479/487 +f 1031/480/498 1040/406/695 1032/481/467 +f 1029/482/700 1038/394/691 1030/483/483 +f 1026/499/698 1036/379/686 1028/484/699 +f 1032/500/467 1041/411/697 1033/485/495 +f 1050/372/706 1049/373/458 1042/374/707 +f 1050/375/706 1083/376/708 1084/377/709 +f 1083/380/708 1043/486/710 1085/379/711 +f 1042/381/707 1049/382/458 1043/383/710 +f 1043/384/710 1049/385/458 1044/386/712 +f 1043/487/710 1086/389/713 1085/387/711 +f 1044/390/712 1049/391/458 1045/392/714 +f 1086/393/713 1045/392/714 1087/394/715 +f 1045/395/714 1049/396/458 1046/397/716 +f 1087/398/715 1046/399/716 1088/400/717 +f 1046/401/716 1049/402/458 1047/403/718 +f 1088/404/717 1047/405/718 1089/406/719 +f 1047/407/718 1049/408/458 1048/409/720 +f 1089/412/719 1048/502/720 1090/411/721 +f 1048/413/720 1049/414/458 1050/415/706 +f 1048/416/720 1084/417/709 1090/418/721 +f 1068/489/450 1053/421/722 1051/419/450 +f 1053/421/722 1069/422/723 1055/423/723 +f 1069/422/723 1057/424/724 1055/423/723 +f 1057/424/724 1071/490/454 1059/426/454 +f 1059/343/454 1072/427/725 1061/428/725 +f 1072/427/725 1063/430/461 1061/428/725 +f 1054/466/726 1077/433/452 1056/431/452 +f 1073/429/461 1065/434/727 1063/430/461 +f 1074/435/727 1051/419/450 1065/434/727 +f 1052/436/458 1067/437/458 1068/438/458 +f 1056/492/458 1067/420/458 1054/439/458 +f 1058/507/458 1069/442/458 1056/440/458 +f 1060/443/458 1070/425/458 1058/444/458 +f 1060/445/458 1072/446/458 1071/447/458 +f 1064/448/458 1072/427/458 1062/449/458 +f 1064/450/458 1074/451/458 1073/452/458 +f 1052/453/458 1074/435/458 1066/454/458 +f 1080/456/725 1087/398/715 1088/400/717 +f 1066/459/728 1081/495/434 1082/458/728 +f 1062/460/729 1079/461/730 1080/462/729 +f 1058/463/731 1077/464/452 1078/465/731 +f 1054/466/726 1076/467/732 1075/468/726 +f 1052/470/732 1082/497/728 1076/469/732 +f 1062/460/729 1081/471/434 1064/457/434 +f 1060/473/730 1078/498/731 1079/472/730 +f 1077/474/723 1086/389/713 1078/475/724 +f 1076/476/450 1083/376/708 1075/477/722 +f 1082/478/727 1084/417/709 1076/479/450 +f 1081/481/461 1088/404/717 1089/406/719 +f 1079/483/454 1086/393/713 1087/394/715 +f 1075/499/722 1085/379/711 1077/484/723 +f 1081/500/461 1090/411/721 1082/485/727 +f 1099/372/733 1098/373/423 1091/374/734 +f 1099/375/733 1132/376/735 1133/377/736 +f 1091/378/734 1134/379/737 1132/380/735 +f 1091/381/734 1098/382/423 1092/383/738 +f 1092/384/738 1098/385/423 1093/386/739 +f 1092/487/738 1135/389/740 1134/387/737 +f 1093/390/739 1098/391/423 1094/392/741 +f 1093/390/739 1136/394/742 1135/393/740 +f 1094/395/741 1098/396/423 1095/397/743 +f 1136/398/742 1095/399/743 1137/400/744 +f 1095/401/743 1098/402/423 1096/403/745 +f 1137/404/744 1096/405/745 1138/406/746 +f 1096/407/745 1098/408/423 1097/409/747 +f 1138/412/746 1097/502/747 1139/411/748 +f 1097/413/747 1098/414/423 1099/415/733 +f 1139/418/748 1099/503/733 1133/417/736 +f 1117/489/9 1102/421/749 1100/419/9 +f 1102/421/749 1118/422/750 1104/423/750 +f 1118/422/750 1106/424/751 1104/423/750 +f 1106/424/751 1120/490/1 1108/426/1 +f 1108/343/1 1121/427/432 1110/428/432 +f 1110/428/432 1122/429/403 1112/430/403 +f 1103/466/752 1126/433/753 1105/431/753 +f 1112/430/403 1123/435/430 1114/434/430 +f 1123/435/430 1100/419/9 1114/434/430 +f 1101/436/423 1116/437/423 1117/438/423 +f 1103/439/423 1118/422/423 1116/420/423 +f 1107/507/423 1118/442/423 1105/440/423 +f 1109/443/423 1119/425/423 1107/444/423 +f 1111/493/423 1120/447/423 1109/445/423 +f 1111/449/423 1122/429/423 1121/427/423 +f 1113/450/423 1123/451/423 1122/452/423 +f 1115/454/423 1117/489/423 1123/435/423 +f 1129/456/432 1136/398/742 1137/400/744 +f 1113/457/427 1131/458/754 1115/459/754 +f 1109/496/426 1129/462/755 1111/460/755 +f 1105/431/753 1127/465/756 1107/463/756 +f 1103/466/752 1125/467/422 1124/468/752 +f 1115/459/754 1125/469/422 1101/470/422 +f 1113/457/427 1129/506/755 1130/471/427 +f 1109/473/426 1127/498/756 1128/472/426 +f 1126/474/750 1135/389/740 1127/475/751 +f 1124/477/749 1133/377/736 1132/376/735 +f 1131/478/430 1133/417/736 1125/479/9 +f 1130/481/403 1137/404/744 1138/406/746 +f 1127/482/751 1136/394/742 1128/483/1 +f 1126/484/750 1132/380/735 1134/379/737 +f 1131/485/430 1138/412/746 1139/411/748 +f 1148/372/757 1147/373/490 1140/374/758 +f 1148/375/757 1181/376/759 1182/377/760 +f 1140/378/758 1183/379/761 1181/380/759 +f 1140/381/758 1147/382/490 1141/383/762 +f 1141/384/762 1147/385/490 1142/386/763 +f 1141/487/762 1184/389/764 1183/387/761 +f 1142/390/763 1147/391/490 1143/392/765 +f 1142/390/763 1185/394/766 1184/393/764 +f 1143/395/765 1147/396/490 1144/397/767 +f 1185/398/766 1144/399/767 1186/400/768 +f 1144/401/767 1147/402/490 1145/403/769 +f 1186/404/768 1145/405/769 1187/406/770 +f 1145/407/769 1147/408/490 1146/409/771 +f 1187/412/770 1146/502/771 1188/411/772 +f 1146/413/771 1147/414/490 1148/415/757 +f 1146/416/771 1182/417/760 1188/418/772 +f 1166/489/483 1151/421/773 1149/419/483 +f 1151/421/773 1167/422/774 1153/423/774 +f 1167/422/774 1155/424/775 1153/423/774 +f 1155/424/775 1169/490/487 1157/426/487 +f 1157/343/487 1170/427/776 1159/428/776 +f 1170/427/776 1161/430/493 1159/428/776 +f 1152/466/777 1175/433/485 1154/431/485 +f 1171/429/493 1163/434/778 1161/430/493 +f 1163/434/778 1166/489/483 1149/419/483 +f 1150/436/490 1165/437/490 1166/438/490 +f 1152/439/490 1167/422/490 1165/420/490 +f 1154/440/490 1168/441/490 1167/442/490 +f 1156/444/490 1169/490/490 1168/425/490 +f 1158/445/490 1170/446/490 1169/447/490 +f 1160/449/490 1171/429/490 1170/427/490 +f 1162/450/490 1172/451/490 1171/452/490 +f 1164/454/490 1166/489/490 1172/435/490 +f 1177/455/487 1186/400/768 1178/456/776 +f 1162/457/467 1180/458/779 1164/459/779 +f 1158/496/780 1178/462/781 1160/460/781 +f 1156/463/782 1175/464/485 1176/465/782 +f 1150/470/783 1173/468/777 1152/466/777 +f 1150/470/783 1180/497/779 1174/469/783 +f 1162/457/467 1178/506/781 1179/471/467 +f 1158/473/780 1176/498/782 1177/472/780 +f 1175/474/774 1184/389/764 1176/475/775 +f 1173/477/773 1182/377/760 1181/376/759 +f 1180/478/778 1182/417/760 1174/479/483 +f 1178/480/776 1187/406/770 1179/481/493 +f 1177/483/487 1184/393/764 1185/394/766 +f 1173/499/773 1183/379/761 1175/484/774 +f 1179/500/493 1188/411/772 1180/485/778 +f 1197/372/784 1196/373/456 1189/374/785 +f 1197/375/784 1230/376/786 1231/377/787 +f 1189/378/785 1232/379/788 1230/380/786 +f 1189/381/785 1196/382/456 1190/383/789 +f 1190/384/789 1196/385/456 1191/386/790 +f 1232/387/788 1191/388/790 1233/389/791 +f 1191/390/790 1196/391/456 1192/392/792 +f 1191/390/790 1234/394/793 1233/393/791 +f 1192/395/792 1196/396/456 1193/397/794 +f 1234/398/793 1193/399/794 1235/400/795 +f 1193/401/794 1196/402/456 1194/403/796 +f 1235/404/795 1194/405/796 1236/406/797 +f 1194/407/796 1196/408/456 1195/409/798 +f 1236/412/797 1195/502/798 1237/411/799 +f 1195/413/798 1196/414/456 1197/415/784 +f 1237/418/799 1197/503/784 1231/417/787 +f 1215/489/454 1200/421/800 1198/419/454 +f 1200/421/800 1216/422/801 1202/423/801 +f 1216/422/801 1204/424/802 1202/423/801 +f 1204/424/802 1218/490/450 1206/426/450 +f 1206/343/450 1219/427/465 1208/428/465 +f 1219/427/465 1210/430/434 1208/428/465 +f 1201/466/803 1224/433/804 1203/431/804 +f 1220/429/434 1212/434/462 1210/430/434 +f 1221/435/462 1198/419/454 1212/434/462 +f 1199/436/456 1214/437/456 1215/438/456 +f 1201/439/456 1216/422/456 1214/420/456 +f 1203/440/456 1217/441/456 1216/442/456 +f 1205/444/456 1218/490/456 1217/425/456 +f 1207/445/456 1219/446/456 1218/447/456 +f 1209/449/456 1220/429/456 1219/427/456 +f 1213/494/456 1220/452/456 1211/450/456 +f 1213/454/456 1215/489/456 1221/435/456 +f 1226/455/450 1235/400/795 1227/456/465 +f 1211/457/461 1229/458/805 1213/459/805 +f 1207/496/459 1227/462/806 1209/460/806 +f 1205/463/807 1224/464/804 1225/465/807 +f 1199/470/455 1222/468/803 1201/466/803 +f 1199/470/455 1229/497/805 1223/469/455 +f 1211/457/461 1227/506/806 1228/471/461 +f 1207/473/459 1225/498/807 1226/472/459 +f 1224/474/801 1233/389/791 1225/475/802 +f 1222/477/800 1231/377/787 1230/376/786 +f 1223/479/454 1237/418/799 1231/417/787 +f 1227/480/465 1236/406/797 1228/481/434 +f 1226/483/450 1233/393/791 1234/394/793 +f 1222/499/800 1232/379/788 1224/484/801 +f 1229/485/462 1236/412/797 1237/411/799 +f 1246/372/808 1238/374/809 1245/373/750 +f 1279/376/810 1246/375/808 1280/377/811 +f 1281/379/812 1238/378/809 1279/380/810 +f 1238/381/809 1239/383/813 1245/382/750 +f 1239/384/813 1240/386/814 1245/385/750 +f 1281/387/812 1240/388/814 1239/487/813 +f 1240/390/814 1241/392/815 1245/391/750 +f 1282/393/816 1241/392/815 1240/390/814 +f 1241/395/815 1242/397/817 1245/396/750 +f 1284/400/818 1241/488/815 1283/398/819 +f 1242/401/817 1243/403/820 1245/402/750 +f 1284/404/818 1243/405/820 1242/501/817 +f 1243/407/820 1244/409/821 1245/408/750 +f 1286/411/822 1243/410/820 1285/412/823 +f 1244/413/821 1246/415/808 1245/414/750 +f 1286/418/822 1246/503/808 1244/416/821 +f 1247/419/9 1263/420/422 1264/489/9 +f 1249/421/422 1265/422/423 1263/420/422 +f 1253/424/426 1265/422/423 1251/423/423 +f 1255/426/1 1266/425/426 1253/424/426 +f 1255/343/1 1268/427/419 1267/505/1 +f 1259/430/420 1268/427/419 1257/428/419 +f 1273/433/753 1250/466/824 1252/431/753 +f 1261/434/421 1269/429/420 1259/430/420 +f 1247/419/9 1270/435/421 1261/434/421 +f 1248/436/750 1263/437/750 1250/491/750 +f 1263/420/750 1252/492/750 1250/439/750 +f 1265/442/750 1254/507/750 1252/440/750 +f 1266/425/750 1256/443/750 1254/444/750 +f 1256/445/750 1268/446/750 1258/493/750 +f 1268/427/750 1260/448/750 1258/449/750 +f 1260/450/750 1270/451/750 1262/494/750 +f 1270/435/750 1248/453/750 1262/454/750 +f 1284/400/818 1275/455/1 1276/456/419 +f 1262/459/825 1277/495/672 1260/457/672 +f 1258/460/826 1275/461/751 1256/496/751 +f 1274/465/827 1252/431/753 1254/463/827 +f 1250/466/824 1272/467/749 1248/470/749 +f 1272/469/749 1262/459/825 1248/470/749 +f 1277/471/672 1258/460/826 1260/457/672 +f 1275/472/751 1254/463/827 1256/473/751 +f 1282/389/816 1273/474/423 1274/475/426 +f 1279/376/810 1272/476/9 1271/477/422 +f 1272/479/9 1286/418/822 1278/478/421 +f 1285/406/823 1276/480/419 1277/481/420 +f 1283/394/819 1274/482/426 1275/483/1 +f 1273/484/423 1279/380/810 1271/499/422 +f 1278/485/421 1285/412/823 1277/500/420 +f 1295/372/828 1287/374/829 1294/373/801 +f 1328/376/830 1295/375/828 1329/377/831 +f 1328/380/830 1288/486/832 1287/378/829 +f 1287/381/829 1288/383/832 1294/382/801 +f 1288/384/832 1289/386/833 1294/385/801 +f 1331/389/834 1288/487/832 1330/387/835 +f 1289/390/833 1290/392/836 1294/391/801 +f 1332/394/837 1289/390/833 1331/393/834 +f 1290/395/836 1291/397/838 1294/396/801 +f 1333/400/839 1290/488/836 1332/398/837 +f 1291/401/838 1292/403/840 1294/402/801 +f 1334/406/841 1291/501/838 1333/404/839 +f 1292/407/840 1293/409/842 1294/408/801 +f 1334/412/841 1293/502/842 1292/410/840 +f 1293/413/842 1295/415/828 1294/414/801 +f 1329/417/831 1293/416/842 1335/418/843 +f 1298/421/455 1313/489/454 1296/419/454 +f 1300/423/456 1312/420/455 1298/421/455 +f 1302/424/459 1314/422/456 1300/423/456 +f 1304/426/450 1315/425/459 1302/424/459 +f 1306/428/451 1316/505/450 1304/343/450 +f 1308/430/452 1317/427/451 1306/428/451 +f 1322/433/804 1299/466/844 1301/431/804 +f 1310/434/453 1318/429/452 1308/430/452 +f 1296/419/454 1319/435/453 1310/434/453 +f 1313/438/801 1299/491/801 1297/436/801 +f 1312/420/801 1301/492/801 1299/439/801 +f 1301/440/801 1315/441/801 1303/507/801 +f 1315/425/801 1305/443/801 1303/444/801 +f 1316/447/801 1307/493/801 1305/445/801 +f 1317/427/801 1309/448/801 1307/449/801 +f 1309/450/801 1319/451/801 1311/494/801 +f 1319/435/801 1297/453/801 1311/454/801 +f 1333/400/839 1324/455/450 1325/456/451 +f 1311/459/845 1326/495/723 1309/457/723 +f 1325/462/846 1305/496/802 1307/460/846 +f 1303/463/847 1322/464/804 1301/431/804 +f 1320/468/844 1297/470/800 1299/466/844 +f 1321/469/800 1311/459/845 1297/470/800 +f 1326/471/723 1307/460/846 1309/457/723 +f 1305/473/802 1323/498/847 1303/463/847 +f 1323/475/459 1330/387/835 1322/474/456 +f 1328/376/830 1321/476/454 1320/477/455 +f 1321/479/454 1335/418/843 1327/478/453 +f 1326/481/452 1333/404/839 1325/480/451 +f 1324/483/450 1331/393/834 1323/482/459 +f 1330/379/835 1320/499/455 1322/484/456 +f 1335/411/843 1326/500/452 1327/485/453 +f 1344/372/848 1336/374/849 1343/373/699 +f 1377/376/850 1344/375/848 1378/377/851 +f 1379/379/852 1336/378/849 1377/380/850 +f 1336/381/849 1337/383/853 1343/382/699 +f 1337/384/853 1338/386/854 1343/385/699 +f 1379/387/852 1338/388/854 1337/487/853 +f 1338/390/854 1339/392/855 1343/391/699 +f 1380/393/856 1339/392/855 1338/390/854 +f 1339/395/855 1340/397/857 1343/396/699 +f 1382/400/858 1339/488/855 1381/398/859 +f 1340/401/857 1341/403/860 1343/402/699 +f 1383/406/861 1340/501/857 1382/404/858 +f 1341/407/860 1342/409/862 1343/408/699 +f 1384/411/863 1341/410/860 1383/412/861 +f 1342/413/862 1344/415/848 1343/414/699 +f 1384/418/863 1344/503/848 1342/416/862 +f 1347/421/488 1362/489/487 1345/419/487 +f 1349/423/489 1361/420/488 1347/421/488 +f 1351/424/492 1363/422/489 1349/423/489 +f 1351/424/492 1365/490/483 1364/425/492 +f 1353/343/483 1366/427/484 1365/505/483 +f 1357/430/485 1366/427/484 1355/428/484 +f 1350/431/702 1369/432/864 1348/466/864 +f 1357/430/485 1368/435/486 1367/429/485 +f 1345/419/487 1368/435/486 1359/434/486 +f 1362/438/699 1348/491/699 1346/436/699 +f 1361/420/699 1350/492/699 1348/439/699 +f 1363/442/699 1352/507/699 1350/440/699 +f 1364/425/699 1354/443/699 1352/444/699 +f 1365/447/699 1356/493/699 1354/445/699 +f 1366/427/699 1358/448/699 1356/449/699 +f 1367/452/699 1360/494/699 1358/450/699 +f 1360/454/699 1362/489/699 1346/453/699 +f 1382/400/858 1373/455/483 1374/456/484 +f 1376/458/865 1358/457/774 1360/459/865 +f 1374/462/866 1354/496/700 1356/460/866 +f 1352/463/867 1371/464/702 1350/431/702 +f 1348/466/864 1370/467/698 1346/470/698 +f 1370/469/698 1360/459/865 1346/470/698 +f 1375/471/774 1356/460/866 1358/457/774 +f 1354/473/700 1372/498/867 1352/463/867 +f 1380/389/856 1371/474/489 1372/475/492 +f 1369/477/488 1378/377/851 1370/476/487 +f 1378/417/851 1376/478/486 1370/479/487 +f 1383/406/861 1374/480/484 1375/481/485 +f 1373/483/483 1380/393/856 1372/482/492 +f 1379/379/852 1369/499/488 1371/484/489 +f 1384/411/863 1375/500/485 1376/485/486 +f 1393/372/868 1385/374/869 1392/373/604 +f 1427/377/870 1385/504/869 1393/375/868 +f 1428/379/871 1385/378/869 1426/380/872 +f 1385/381/869 1386/383/873 1392/382/604 +f 1386/384/873 1387/386/874 1392/385/604 +f 1428/387/871 1387/388/874 1386/487/873 +f 1387/390/874 1388/392/875 1392/391/604 +f 1430/394/876 1387/390/874 1429/393/877 +f 1388/395/875 1389/397/878 1392/396/604 +f 1431/400/879 1388/488/875 1430/398/876 +f 1389/401/878 1390/403/880 1392/402/604 +f 1431/404/879 1390/405/880 1389/501/878 +f 1390/407/880 1391/409/881 1392/408/604 +f 1433/411/882 1390/410/880 1432/412/883 +f 1391/413/881 1393/415/868 1392/414/604 +f 1433/418/882 1393/503/868 1391/416/881 +f 1394/419/520 1410/420/521 1411/489/520 +f 1396/421/521 1412/422/522 1410/420/521 +f 1400/424/524 1412/422/522 1398/423/522 +f 1400/424/524 1414/490/516 1413/425/524 +f 1404/428/517 1414/505/516 1402/343/516 +f 1406/430/518 1415/427/517 1404/428/517 +f 1420/433/454 1397/466/884 1399/431/454 +f 1406/430/518 1417/435/519 1416/429/518 +f 1394/419/520 1417/435/519 1408/434/519 +f 1395/436/604 1410/437/604 1397/491/604 +f 1410/420/604 1399/492/604 1397/439/604 +f 1399/440/604 1413/441/604 1401/507/604 +f 1413/425/604 1403/443/604 1401/444/604 +f 1414/447/604 1405/493/604 1403/445/604 +f 1415/427/604 1407/448/604 1405/449/604 +f 1416/452/604 1409/494/604 1407/450/604 +f 1417/435/604 1395/453/604 1409/454/604 +f 1431/400/879 1422/455/516 1423/456/517 +f 1425/458/885 1407/457/17 1409/459/885 +f 1423/462/886 1403/496/605 1405/460/886 +f 1421/465/887 1399/431/454 1401/463/887 +f 1397/466/884 1419/467/603 1395/470/603 +f 1419/469/603 1409/459/885 1395/470/603 +f 1424/471/17 1405/460/886 1407/457/17 +f 1403/473/605 1421/498/887 1401/463/887 +f 1429/389/877 1420/474/522 1421/475/524 +f 1426/376/872 1419/476/520 1418/477/521 +f 1419/479/520 1433/418/882 1425/478/519 +f 1432/406/883 1423/480/517 1424/481/518 +f 1422/483/516 1429/393/877 1421/482/524 +f 1420/484/522 1426/380/872 1418/499/521 +f 1433/411/882 1424/500/518 1425/485/519 +f 1442/372/888 1434/374/889 1441/373/162 +f 1475/376/890 1442/375/888 1476/377/891 +f 1477/379/892 1434/378/889 1475/380/890 +f 1434/381/889 1435/383/893 1441/382/162 +f 1435/384/893 1436/386/894 1441/385/162 +f 1477/387/892 1436/388/894 1435/487/893 +f 1436/390/894 1437/392/895 1441/391/162 +f 1479/394/896 1436/390/894 1478/393/897 +f 1437/395/895 1438/397/898 1441/396/162 +f 1479/398/896 1438/399/898 1437/488/895 +f 1438/401/898 1439/403/899 1441/402/162 +f 1481/406/900 1438/501/898 1480/404/901 +f 1439/407/899 1440/409/902 1441/408/162 +f 1481/412/900 1440/502/902 1439/410/899 +f 1440/413/902 1442/415/888 1441/414/162 +f 1476/417/891 1440/416/902 1482/418/903 +f 1445/421/548 1460/489/13 1443/419/13 +f 1447/423/390 1459/420/548 1445/421/548 +f 1447/423/390 1462/425/550 1461/422/390 +f 1449/424/550 1463/490/5 1462/425/550 +f 1451/343/5 1464/427/546 1463/505/5 +f 1455/430/292 1464/427/546 1453/428/546 +f 1469/433/1 1446/466/904 1448/431/1 +f 1455/430/292 1466/435/547 1465/429/292 +f 1457/434/547 1460/489/13 1466/435/547 +f 1444/436/162 1459/437/162 1446/491/162 +f 1459/420/162 1448/492/162 1446/439/162 +f 1448/440/162 1462/441/162 1450/507/162 +f 1462/425/162 1452/443/162 1450/444/162 +f 1463/447/162 1454/493/162 1452/445/162 +f 1454/449/162 1465/429/162 1456/448/162 +f 1456/450/162 1466/451/162 1458/494/162 +f 1466/435/162 1444/453/162 1458/454/162 +f 1480/400/901 1471/455/5 1472/456/546 +f 1458/459/905 1473/495/17 1456/457/17 +f 1472/462/906 1452/496/627 1454/460/906 +f 1450/463/907 1469/464/1 1448/431/1 +f 1446/466/904 1468/467/626 1444/470/626 +f 1468/469/626 1458/459/905 1444/470/626 +f 1456/457/17 1472/506/906 1454/460/906 +f 1471/472/627 1450/463/907 1452/473/627 +f 1478/389/897 1469/474/390 1470/475/550 +f 1475/376/890 1468/476/13 1467/477/548 +f 1476/417/891 1474/478/547 1468/479/13 +f 1481/406/900 1472/480/546 1473/481/292 +f 1471/483/5 1478/393/897 1470/482/550 +f 1477/379/892 1467/499/548 1469/484/390 +f 1482/411/903 1473/500/292 1474/485/547 +f 1491/372/908 1483/374/909 1490/373/649 +f 1524/376/910 1491/375/908 1525/377/911 +f 1526/379/912 1483/378/909 1524/380/910 +f 1483/381/909 1484/383/913 1490/382/649 +f 1484/384/913 1485/386/914 1490/385/649 +f 1527/389/915 1484/487/913 1526/387/912 +f 1485/390/914 1486/392/916 1490/391/649 +f 1527/393/915 1486/392/916 1485/390/914 +f 1486/395/916 1487/397/917 1490/396/649 +f 1529/400/918 1486/488/916 1528/398/919 +f 1487/401/917 1488/403/920 1490/402/649 +f 1529/404/918 1488/405/920 1487/501/917 +f 1488/407/920 1489/409/921 1490/408/649 +f 1530/412/922 1489/502/921 1488/410/920 +f 1489/413/921 1491/415/908 1490/414/649 +f 1531/418/923 1491/503/908 1489/416/921 +f 1494/421/578 1509/489/577 1492/419/577 +f 1494/421/578 1510/422/579 1508/420/578 +f 1496/423/579 1511/425/581 1510/422/579 +f 1498/424/581 1512/490/573 1511/425/581 +f 1500/343/573 1513/427/574 1512/505/573 +f 1502/428/574 1514/429/575 1513/427/574 +f 1497/431/487 1516/432/924 1495/466/924 +f 1506/434/576 1514/429/575 1504/430/575 +f 1506/434/576 1509/489/577 1515/435/576 +f 1509/438/649 1495/491/649 1493/436/649 +f 1508/420/649 1497/492/649 1495/439/649 +f 1510/442/649 1499/507/649 1497/440/649 +f 1499/444/649 1512/490/649 1501/443/649 +f 1501/445/649 1513/446/649 1503/493/649 +f 1503/449/649 1514/429/649 1505/448/649 +f 1514/452/649 1507/494/649 1505/450/649 +f 1507/454/649 1509/489/649 1493/453/649 +f 1529/400/918 1520/455/573 1521/456/574 +f 1507/459/925 1522/495/17 1505/457/17 +f 1503/460/926 1520/461/650 1501/496/650 +f 1519/465/927 1497/431/487 1499/463/927 +f 1516/468/924 1493/470/648 1495/466/924 +f 1517/469/648 1507/459/925 1493/470/648 +f 1522/471/17 1503/460/926 1505/457/17 +f 1501/473/650 1519/498/927 1499/463/927 +f 1519/475/581 1526/387/912 1518/474/579 +f 1524/376/910 1517/476/577 1516/477/578 +f 1525/417/911 1523/478/576 1517/479/577 +f 1530/406/922 1521/480/574 1522/481/575 +f 1528/394/919 1519/482/581 1520/483/573 +f 1518/484/579 1524/380/910 1516/499/578 +f 1523/485/576 1530/412/922 1522/500/575 +f 1540/372/928 1532/374/929 1539/373/518 +f 1573/376/930 1540/375/928 1574/377/931 +f 1575/379/932 1532/378/929 1573/380/930 +f 1532/381/929 1533/383/933 1539/382/518 +f 1533/384/933 1534/386/934 1539/385/518 +f 1576/389/935 1533/487/933 1575/387/932 +f 1534/390/934 1535/392/936 1539/391/518 +f 1577/394/937 1534/390/934 1576/393/935 +f 1535/395/936 1536/397/938 1539/396/518 +f 1577/398/937 1536/399/938 1535/488/936 +f 1536/401/938 1537/403/939 1539/402/518 +f 1579/406/940 1536/501/938 1578/404/941 +f 1537/407/939 1538/409/942 1539/408/518 +f 1580/411/943 1537/410/939 1579/412/940 +f 1538/413/942 1540/415/928 1539/414/518 +f 1580/418/943 1540/503/928 1538/416/942 +f 1541/419/516 1557/420/529 1558/489/516 +f 1543/421/529 1559/422/500 1557/420/529 +f 1545/423/500 1560/425/526 1559/422/500 +f 1549/426/520 1560/425/526 1547/424/526 +f 1549/343/520 1562/427/603 1561/505/520 +f 1551/428/603 1563/429/604 1562/427/603 +f 1546/431/450 1565/432/944 1544/466/944 +f 1555/434/605 1563/429/604 1553/430/604 +f 1555/434/605 1558/489/516 1564/435/605 +f 1558/438/518 1544/491/518 1542/436/518 +f 1544/439/518 1559/422/518 1546/492/518 +f 1559/442/518 1548/507/518 1546/440/518 +f 1560/425/518 1550/443/518 1548/444/518 +f 1550/445/518 1562/446/518 1552/493/518 +f 1552/449/518 1563/429/518 1554/448/518 +f 1563/452/518 1556/494/518 1554/450/518 +f 1556/454/518 1558/489/518 1542/453/518 +f 1578/400/941 1569/455/520 1570/456/603 +f 1556/459/945 1571/495/17 1554/457/17 +f 1552/460/946 1569/461/519 1550/496/519 +f 1568/465/947 1546/431/450 1548/463/947 +f 1544/466/944 1566/467/517 1542/470/517 +f 1566/469/517 1556/459/945 1542/470/517 +f 1571/471/17 1552/460/946 1554/457/17 +f 1569/472/519 1548/463/947 1550/473/519 +f 1568/475/526 1575/387/932 1567/474/500 +f 1573/376/930 1566/476/516 1565/477/529 +f 1574/417/931 1572/478/605 1566/479/516 +f 1579/406/940 1570/480/603 1571/481/604 +f 1577/394/937 1568/482/526 1569/483/520 +f 1575/379/932 1565/499/529 1567/484/500 +f 1572/485/605 1579/412/940 1571/500/604 +f 1589/372/948 1581/374/949 1588/373/292 +f 1622/376/950 1589/375/948 1623/377/951 +f 1624/379/952 1581/378/949 1622/380/950 +f 1581/381/949 1582/383/953 1588/382/292 +f 1582/384/953 1583/386/954 1588/385/292 +f 1624/387/952 1583/388/954 1582/487/953 +f 1583/390/954 1584/392/955 1588/391/292 +f 1625/393/956 1584/392/955 1583/390/954 +f 1584/395/955 1585/397/957 1588/396/292 +f 1626/398/958 1585/399/957 1584/488/955 +f 1585/401/957 1586/403/959 1588/402/292 +f 1627/404/960 1586/405/959 1585/501/957 +f 1586/407/959 1587/409/961 1588/408/292 +f 1629/411/962 1586/410/959 1628/412/963 +f 1587/413/961 1589/415/948 1588/414/292 +f 1629/418/962 1589/503/948 1587/416/961 +f 1592/421/555 1607/489/5 1590/419/5 +f 1592/421/555 1608/422/392 1606/420/555 +f 1594/423/392 1609/425/552 1608/422/392 +f 1598/426/13 1609/425/552 1596/424/552 +f 1598/343/13 1611/427/626 1610/505/13 +f 1602/430/162 1611/427/626 1600/428/626 +f 1595/431/9 1614/432/964 1593/466/964 +f 1604/434/627 1612/429/162 1602/430/162 +f 1604/434/627 1607/489/5 1613/435/627 +f 1591/436/292 1606/437/292 1593/491/292 +f 1593/439/292 1608/422/292 1595/492/292 +f 1608/442/292 1597/507/292 1595/440/292 +f 1597/444/292 1610/490/292 1599/443/292 +f 1599/445/292 1611/446/292 1601/493/292 +f 1611/427/292 1603/448/292 1601/449/292 +f 1612/452/292 1605/494/292 1603/450/292 +f 1613/435/292 1591/453/292 1605/454/292 +f 1627/400/960 1618/455/13 1619/456/626 +f 1605/459/965 1620/495/17 1603/457/17 +f 1619/462/966 1599/496/547 1601/460/966 +f 1617/465/967 1595/431/9 1597/463/967 +f 1614/468/964 1591/470/546 1593/466/964 +f 1615/469/546 1605/459/965 1591/470/546 +f 1603/457/17 1619/506/966 1601/460/966 +f 1618/472/547 1597/463/967 1599/473/547 +f 1625/389/956 1616/474/392 1617/475/552 +f 1614/477/555 1623/377/951 1615/476/5 +f 1623/417/951 1621/478/627 1615/479/5 +f 1628/406/963 1619/480/626 1620/481/162 +f 1626/394/958 1617/482/552 1618/483/13 +f 1624/379/952 1614/499/555 1616/484/392 +f 1629/411/962 1620/500/162 1621/485/627 +f 1638/372/968 1630/374/969 1637/373/575 +f 1671/376/970 1638/375/968 1672/377/971 +f 1673/379/972 1630/378/969 1671/380/970 +f 1630/381/969 1631/383/973 1637/382/575 +f 1631/384/973 1632/386/974 1637/385/575 +f 1674/389/975 1631/487/973 1673/387/972 +f 1632/390/974 1633/392/976 1637/391/575 +f 1674/393/975 1633/392/976 1632/390/974 +f 1633/395/976 1634/397/977 1637/396/575 +f 1675/398/978 1634/399/977 1633/488/976 +f 1634/401/977 1635/403/979 1637/402/575 +f 1676/404/980 1635/405/979 1634/501/977 +f 1635/407/979 1636/409/981 1637/408/575 +f 1678/411/982 1635/410/979 1677/412/983 +f 1636/413/981 1638/415/968 1637/414/575 +f 1678/418/982 1638/503/968 1636/416/981 +f 1641/421/586 1656/489/573 1639/419/573 +f 1643/423/557 1655/420/586 1641/421/586 +f 1643/423/557 1658/425/584 1657/422/557 +f 1647/426/577 1658/425/584 1645/424/584 +f 1647/343/577 1660/427/648 1659/505/577 +f 1651/430/649 1660/427/648 1649/428/648 +f 1644/431/483 1663/432/984 1642/466/984 +f 1653/434/650 1661/429/649 1651/430/649 +f 1653/434/650 1656/489/573 1662/435/650 +f 1656/438/575 1642/491/575 1640/436/575 +f 1655/420/575 1644/492/575 1642/439/575 +f 1657/442/575 1646/507/575 1644/440/575 +f 1646/444/575 1659/490/575 1648/443/575 +f 1648/445/575 1660/446/575 1650/493/575 +f 1650/449/575 1661/429/575 1652/448/575 +f 1661/452/575 1654/494/575 1652/450/575 +f 1654/454/575 1656/489/575 1640/453/575 +f 1668/456/648 1675/398/978 1667/455/577 +f 1654/459/985 1669/495/17 1652/457/17 +f 1668/462/986 1648/496/576 1650/460/986 +f 1666/465/987 1644/431/483 1646/463/987 +f 1663/468/984 1640/470/574 1642/466/984 +f 1664/469/574 1654/459/985 1640/470/574 +f 1669/471/17 1650/460/986 1652/457/17 +f 1667/472/576 1646/463/987 1648/473/576 +f 1674/389/975 1665/474/557 1666/475/584 +f 1671/376/970 1664/476/573 1663/477/586 +f 1664/479/573 1678/418/982 1670/478/650 +f 1677/406/983 1668/480/648 1669/481/649 +f 1675/394/978 1666/482/584 1667/483/577 +f 1665/484/557 1671/380/970 1663/499/586 +f 1670/485/650 1677/412/983 1669/500/649 +f 1687/372/988 1679/374/989 1686/373/753 +f 1720/376/990 1687/375/988 1721/377/991 +f 1720/380/990 1680/486/992 1679/378/989 +f 1679/381/989 1680/383/992 1686/382/753 +f 1680/384/992 1681/386/993 1686/385/753 +f 1722/387/994 1681/388/993 1680/487/992 +f 1681/390/993 1682/392/995 1686/391/753 +f 1723/393/996 1682/392/995 1681/390/993 +f 1682/395/995 1683/397/997 1686/396/753 +f 1725/400/998 1682/488/995 1724/398/999 +f 1683/401/997 1684/403/1000 1686/402/753 +f 1725/404/998 1684/405/1000 1683/501/997 +f 1684/407/1000 1685/409/1001 1686/408/753 +f 1727/411/1002 1684/410/1000 1726/412/1003 +f 1685/413/1001 1687/415/988 1686/414/753 +f 1727/418/1002 1687/503/988 1685/416/1001 +f 1690/421/674 1705/489/9 1688/419/9 +f 1692/423/427 1704/420/674 1690/421/674 +f 1692/423/427 1707/425/676 1706/422/427 +f 1694/424/676 1708/490/1 1707/425/676 +f 1696/343/1 1709/427/671 1708/505/1 +f 1698/428/671 1710/429/672 1709/427/671 +f 1693/431/423 1712/432/1004 1691/466/1004 +f 1702/434/673 1710/429/672 1700/430/672 +f 1688/419/9 1711/435/673 1702/434/673 +f 1705/438/753 1691/491/753 1689/436/753 +f 1704/420/753 1693/492/753 1691/439/753 +f 1693/440/753 1707/441/753 1695/507/753 +f 1707/425/753 1697/443/753 1695/444/753 +f 1697/445/753 1709/446/753 1699/493/753 +f 1709/427/753 1701/448/753 1699/449/753 +f 1710/452/753 1703/494/753 1701/450/753 +f 1711/435/753 1689/453/753 1703/454/753 +f 1717/456/671 1724/398/999 1716/455/1 +f 1703/459/1005 1718/495/750 1701/457/750 +f 1717/462/1006 1697/496/1007 1699/460/1006 +f 1695/463/1008 1714/464/423 1693/431/423 +f 1712/468/1004 1689/470/1009 1691/466/1004 +f 1689/470/1009 1719/497/1005 1703/459/1005 +f 1718/471/750 1699/460/1006 1701/457/750 +f 1697/473/1007 1715/498/1008 1695/463/1008 +f 1715/475/676 1722/387/994 1714/474/427 +f 1712/477/674 1721/377/991 1713/476/9 +f 1721/417/991 1719/478/673 1713/479/9 +f 1718/481/672 1725/404/998 1717/480/671 +f 1724/394/999 1715/482/676 1716/483/1 +f 1722/379/994 1712/499/674 1714/484/427 +f 1727/411/1002 1718/500/672 1719/485/673 +f 1736/372/1010 1728/374/1011 1735/373/485 +f 1770/377/1012 1728/504/1011 1736/375/1010 +f 1771/379/1013 1728/378/1011 1769/380/1014 +f 1728/381/1011 1729/383/1015 1735/382/485 +f 1729/384/1015 1730/386/1016 1735/385/485 +f 1772/389/1017 1729/487/1015 1771/387/1013 +f 1730/390/1016 1731/392/1018 1735/391/485 +f 1772/393/1017 1731/392/1018 1730/390/1016 +f 1731/395/1018 1732/397/1019 1735/396/485 +f 1773/398/1020 1732/399/1019 1731/488/1018 +f 1732/401/1019 1733/403/1021 1735/402/485 +f 1775/406/1022 1732/501/1019 1774/404/1023 +f 1733/407/1021 1734/409/1024 1735/408/485 +f 1776/411/1025 1733/410/1021 1775/412/1022 +f 1734/413/1024 1736/415/1010 1735/414/485 +f 1770/417/1012 1734/416/1024 1776/418/1025 +f 1739/421/498 1754/489/483 1737/419/483 +f 1739/421/498 1755/422/467 1753/420/498 +f 1743/424/495 1755/422/467 1741/423/467 +f 1743/424/495 1757/490/487 1756/425/495 +f 1747/428/698 1757/505/487 1745/343/487 +f 1747/428/698 1759/429/699 1758/427/698 +f 1763/433/490 1740/466/1026 1742/431/490 +f 1751/434/700 1759/429/699 1749/430/699 +f 1751/434/700 1754/489/483 1760/435/700 +f 1754/438/485 1740/491/485 1738/436/485 +f 1740/439/485 1755/422/485 1742/492/485 +f 1742/440/485 1756/441/485 1744/507/485 +f 1756/425/485 1746/443/485 1744/444/485 +f 1746/445/485 1758/446/485 1748/493/485 +f 1748/449/485 1759/429/485 1750/448/485 +f 1759/452/485 1752/494/485 1750/450/485 +f 1760/435/485 1738/453/485 1752/454/485 +f 1766/456/698 1773/398/1020 1765/455/487 +f 1768/458/1027 1750/457/774 1752/459/1027 +f 1766/462/1028 1746/496/486 1748/460/1028 +f 1744/463/1029 1763/464/490 1742/431/490 +f 1761/468/1026 1738/470/484 1740/466/1026 +f 1762/469/484 1752/459/1027 1738/470/484 +f 1750/457/774 1766/506/1028 1748/460/1028 +f 1746/473/486 1764/498/1029 1744/463/1029 +f 1764/475/495 1771/387/1013 1763/474/467 +f 1761/477/498 1770/377/1012 1762/476/483 +f 1770/417/1012 1768/478/700 1762/479/483 +f 1775/406/1022 1766/480/698 1767/481/699 +f 1765/483/487 1772/393/1017 1764/482/495 +f 1771/379/1013 1761/499/498 1763/484/467 +f 1768/485/700 1775/412/1022 1767/500/699 +f 1785/372/1030 1777/374/1031 1784/373/804 +f 1818/376/1032 1785/375/1030 1819/377/1033 +f 1818/380/1032 1778/486/1034 1777/378/1031 +f 1777/381/1031 1778/383/1034 1784/382/804 +f 1778/384/1034 1779/386/1035 1784/385/804 +f 1820/387/1036 1779/388/1035 1778/487/1034 +f 1779/390/1035 1780/392/1037 1784/391/804 +f 1821/393/1038 1780/392/1037 1779/390/1035 +f 1780/395/1037 1781/397/1039 1784/396/804 +f 1822/398/1040 1781/399/1039 1780/488/1037 +f 1781/401/1039 1782/403/1041 1784/402/804 +f 1823/404/1042 1782/405/1041 1781/501/1039 +f 1782/407/1041 1783/409/1043 1784/408/804 +f 1824/412/1044 1783/502/1043 1782/410/1041 +f 1783/413/1043 1785/415/1030 1784/414/804 +f 1819/417/1033 1783/416/1043 1825/418/1045 +f 1788/421/725 1803/489/454 1786/419/454 +f 1788/421/725 1804/422/461 1802/420/725 +f 1792/424/727 1804/422/461 1790/423/461 +f 1792/424/727 1806/490/450 1805/425/727 +f 1794/343/450 1807/427/722 1806/505/450 +f 1798/430/723 1807/427/722 1796/428/722 +f 1812/433/456 1789/466/1046 1791/431/456 +f 1800/434/724 1808/429/723 1798/430/723 +f 1786/419/454 1809/435/724 1800/434/724 +f 1787/436/804 1802/437/804 1789/491/804 +f 1802/420/804 1791/492/804 1789/439/804 +f 1791/440/804 1805/441/804 1793/507/804 +f 1805/425/804 1795/443/804 1793/444/804 +f 1795/445/804 1807/446/804 1797/493/804 +f 1807/427/804 1799/448/804 1797/449/804 +f 1799/450/804 1809/451/804 1801/494/804 +f 1809/435/804 1787/453/804 1801/454/804 +f 1815/456/722 1822/398/1040 1814/455/450 +f 1801/459/1047 1816/495/801 1799/457/801 +f 1815/462/1048 1795/496/1049 1797/460/1048 +f 1793/463/1050 1812/464/456 1791/431/456 +f 1789/466/1046 1811/467/1051 1787/470/1051 +f 1787/470/1051 1817/497/1047 1801/459/1047 +f 1816/471/801 1797/460/1048 1799/457/801 +f 1795/473/1049 1813/498/1050 1793/463/1050 +f 1821/389/1038 1812/474/461 1813/475/727 +f 1818/376/1032 1811/476/454 1810/477/725 +f 1819/417/1033 1817/478/724 1811/479/454 +f 1824/406/1044 1815/480/722 1816/481/723 +f 1814/483/450 1821/393/1038 1813/482/727 +f 1820/379/1036 1810/499/725 1812/484/461 +f 1817/485/724 1824/412/1044 1816/500/723 +f 1834/372/1052 1826/374/1053 1833/373/420 +f 1867/376/1054 1834/375/1052 1868/377/1055 +f 1869/379/1056 1826/378/1053 1867/380/1054 +f 1826/381/1053 1827/383/1057 1833/382/420 +f 1827/384/1057 1828/386/1058 1833/385/420 +f 1870/389/1059 1827/487/1057 1869/387/1056 +f 1828/390/1058 1829/392/1060 1833/391/420 +f 1870/393/1059 1829/392/1060 1828/390/1058 +f 1829/395/1060 1830/397/1061 1833/396/420 +f 1871/398/1062 1830/399/1061 1829/488/1060 +f 1830/401/1061 1831/403/1063 1833/402/420 +f 1872/404/1064 1831/405/1063 1830/501/1061 +f 1831/407/1063 1832/409/1065 1833/408/420 +f 1873/412/1066 1832/502/1065 1831/410/1063 +f 1832/413/1065 1834/415/1052 1833/414/420 +f 1874/418/1067 1834/503/1052 1832/416/1065 +f 1837/421/432 1852/489/1 1835/419/1 +f 1837/421/432 1853/422/403 1851/420/432 +f 1841/424/430 1853/422/403 1839/423/403 +f 1841/424/430 1855/490/9 1854/425/430 +f 1843/343/9 1856/427/749 1855/505/9 +f 1847/430/750 1856/427/749 1845/428/749 +f 1861/433/424 1838/466/1068 1840/431/424 +f 1847/430/750 1858/435/751 1857/429/750 +f 1835/419/1 1858/435/751 1849/434/751 +f 1836/436/420 1851/437/420 1838/491/420 +f 1838/439/420 1853/422/420 1840/492/420 +f 1853/442/420 1842/507/420 1840/440/420 +f 1854/425/420 1844/443/420 1842/444/420 +f 1855/447/420 1846/493/420 1844/445/420 +f 1846/449/420 1857/429/420 1848/448/420 +f 1848/450/420 1858/451/420 1850/494/420 +f 1850/454/420 1852/489/420 1836/453/420 +f 1864/456/749 1871/398/1062 1863/455/9 +f 1866/458/1069 1848/457/672 1850/459/1069 +f 1864/462/1070 1844/496/421 1846/460/1070 +f 1862/465/1071 1840/431/424 1842/463/1071 +f 1838/466/1068 1860/467/419 1836/470/419 +f 1860/469/419 1850/459/1069 1836/470/419 +f 1848/457/672 1864/506/1070 1846/460/1070 +f 1844/473/421 1862/498/1071 1842/463/1071 +f 1870/389/1059 1861/474/403 1862/475/430 +f 1859/477/432 1868/377/1055 1860/476/1 +f 1868/417/1055 1866/478/751 1860/479/1 +f 1865/481/750 1872/404/1064 1864/480/749 +f 1871/394/1062 1862/482/430 1863/483/9 +f 1861/484/403 1867/380/1054 1859/499/432 +f 1866/485/751 1873/412/1066 1865/500/750 +f 1883/372/1072 1875/374/1073 1882/373/702 +f 1916/376/1074 1883/375/1072 1917/377/1075 +f 1918/379/1076 1875/378/1073 1916/380/1074 +f 1875/381/1073 1876/383/1077 1882/382/702 +f 1876/384/1077 1877/386/1078 1882/385/702 +f 1918/387/1076 1877/388/1078 1876/487/1077 +f 1877/390/1078 1878/392/1079 1882/391/702 +f 1920/394/1080 1877/390/1078 1919/393/1081 +f 1878/395/1079 1879/397/1082 1882/396/702 +f 1920/398/1080 1879/399/1082 1878/488/1079 +f 1879/401/1082 1880/403/1083 1882/402/702 +f 1921/404/1084 1880/405/1083 1879/501/1082 +f 1880/407/1083 1881/409/1085 1882/408/702 +f 1922/412/1086 1881/502/1085 1880/410/1083 +f 1881/413/1085 1883/415/1072 1882/414/702 +f 1917/417/1075 1881/416/1085 1923/418/1087 +f 1886/421/776 1901/489/487 1884/419/487 +f 1886/421/776 1902/422/493 1900/420/776 +f 1890/424/778 1902/422/493 1888/423/493 +f 1890/424/778 1904/490/483 1903/425/778 +f 1892/343/483 1905/427/773 1904/505/483 +f 1896/430/774 1905/427/773 1894/428/773 +f 1910/433/489 1887/466/1088 1889/431/489 +f 1896/430/774 1907/435/775 1906/429/774 +f 1884/419/487 1907/435/775 1898/434/775 +f 1885/436/702 1900/437/702 1887/491/702 +f 1887/439/702 1902/422/702 1889/492/702 +f 1889/440/702 1903/441/702 1891/507/702 +f 1891/444/702 1904/490/702 1893/443/702 +f 1893/445/702 1905/446/702 1895/493/702 +f 1895/449/702 1906/429/702 1897/448/702 +f 1906/452/702 1899/494/702 1897/450/702 +f 1899/454/702 1901/489/702 1885/453/702 +f 1921/400/1084 1912/455/483 1913/456/773 +f 1915/458/1089 1897/457/699 1899/459/1089 +f 1913/462/1090 1893/496/1091 1895/460/1090 +f 1891/463/1092 1910/464/489 1889/431/489 +f 1908/468/1088 1885/470/1093 1887/466/1088 +f 1885/470/1093 1915/497/1089 1899/459/1089 +f 1897/457/699 1913/506/1090 1895/460/1090 +f 1893/473/1091 1911/498/1092 1891/463/1092 +f 1911/475/778 1918/387/1076 1910/474/493 +f 1916/376/1074 1909/476/487 1908/477/776 +f 1917/417/1075 1915/478/775 1909/479/487 +f 1922/406/1086 1913/480/773 1914/481/774 +f 1912/483/483 1919/393/1081 1911/482/778 +f 1918/379/1076 1908/499/776 1910/484/493 +f 1915/485/775 1922/412/1086 1914/500/774 +f 1932/372/1094 1924/374/1095 1931/373/452 +f 1965/376/1096 1932/375/1094 1966/377/1097 +f 1965/380/1096 1925/486/1098 1924/378/1095 +f 1924/381/1095 1925/383/1098 1931/382/452 +f 1925/384/1098 1926/386/1099 1931/385/452 +f 1967/387/1100 1926/388/1099 1925/487/1098 +f 1926/390/1099 1927/392/1101 1931/391/452 +f 1969/394/1102 1926/390/1099 1968/393/1103 +f 1927/395/1101 1928/397/1104 1931/396/452 +f 1969/398/1102 1928/399/1104 1927/488/1101 +f 1928/401/1104 1929/403/1105 1931/402/452 +f 1970/404/1106 1929/405/1105 1928/501/1104 +f 1929/407/1105 1930/409/1107 1931/408/452 +f 1971/412/1108 1930/502/1107 1929/410/1105 +f 1930/413/1107 1932/415/1094 1931/414/452 +f 1972/418/1109 1932/503/1094 1930/416/1107 +f 1935/421/465 1950/489/450 1933/419/450 +f 1935/421/465 1951/422/434 1949/420/465 +f 1939/424/462 1951/422/434 1937/423/434 +f 1939/424/462 1953/490/454 1952/425/462 +f 1941/343/454 1954/427/800 1953/505/454 +f 1945/430/801 1954/427/800 1943/428/800 +f 1959/433/458 1936/466/1110 1938/431/458 +f 1947/434/802 1955/429/801 1945/430/801 +f 1933/419/450 1956/435/802 1947/434/802 +f 1934/436/452 1949/437/452 1936/491/452 +f 1936/439/452 1951/422/452 1938/492/452 +f 1938/440/452 1952/441/452 1940/507/452 +f 1940/444/452 1953/490/452 1942/443/452 +f 1942/445/452 1954/446/452 1944/493/452 +f 1944/449/452 1955/429/452 1946/448/452 +f 1955/452/452 1948/494/452 1946/450/452 +f 1948/454/452 1950/489/452 1934/453/452 +f 1970/400/1106 1961/455/454 1962/456/800 +f 1964/458/1111 1946/457/723 1948/459/1111 +f 1962/462/1112 1942/496/453 1944/460/1112 +f 1940/463/1113 1959/464/458 1938/431/458 +f 1957/468/1110 1934/470/451 1936/466/1110 +f 1958/469/451 1948/459/1111 1934/470/451 +f 1946/457/723 1962/506/1112 1944/460/1112 +f 1942/473/453 1960/498/1113 1940/463/1113 +f 1968/389/1103 1959/474/434 1960/475/462 +f 1957/477/465 1966/377/1097 1958/476/450 +f 1958/479/450 1972/418/1109 1964/478/802 +f 1971/406/1108 1962/480/800 1963/481/801 +f 1961/483/454 1968/393/1103 1960/482/462 +f 1967/379/1100 1957/499/465 1959/484/434 +f 1972/411/1109 1963/500/801 1964/485/802 +f 36/1/1 35/4/2 34/2/2 +f 35/4/2 38/6/3 37/5/3 +f 38/6/3 40/8/4 39/7/4 +f 40/8/4 42/10/5 41/9/5 +f 42/10/5 44/12/6 43/11/6 +f 44/12/6 46/14/7 45/13/7 +f 46/14/7 48/16/8 47/15/8 +f 48/16/8 50/508/9 49/17/9 +f 50/18/9 52/21/10 51/19/10 +f 52/21/10 54/23/11 53/22/11 +f 54/23/11 56/25/12 55/24/12 +f 56/25/12 58/27/13 57/26/13 +f 58/27/13 60/29/14 59/28/14 +f 60/29/14 62/31/15 61/30/15 +f 62/31/15 64/33/16 63/32/16 +f 64/33/16 36/509/1 33/34/1 +f 1/35/17 33/3/17 34/2/17 +f 4/37/18 35/4/18 36/1/18 +f 3/39/17 34/2/17 37/5/17 +f 6/41/18 38/6/18 35/4/18 +f 5/43/17 37/5/17 39/7/17 +f 8/45/18 40/8/18 38/6/18 +f 7/47/17 39/7/17 41/9/17 +f 10/49/18 42/10/18 40/8/18 +f 9/51/17 41/9/17 43/11/17 +f 12/53/18 44/12/18 42/10/18 +f 11/55/17 43/11/17 45/13/17 +f 14/57/18 46/14/18 44/12/18 +f 13/59/17 45/13/17 47/15/17 +f 16/61/18 48/16/18 46/14/18 +f 15/63/17 47/15/17 49/17/17 +f 18/65/18 50/508/18 48/16/18 +f 17/67/17 49/510/17 51/68/17 +f 20/70/18 52/21/18 50/18/18 +f 19/72/17 51/19/17 53/22/17 +f 22/74/18 54/23/18 52/21/18 +f 21/76/17 53/511/17 55/77/17 +f 24/79/18 56/25/18 54/23/18 +f 23/81/17 55/24/17 57/26/17 +f 26/83/18 58/27/18 56/25/18 +f 25/85/17 57/512/17 59/86/17 +f 28/88/18 60/29/18 58/27/18 +f 27/90/17 59/28/17 61/30/17 +f 30/92/18 62/31/18 60/29/18 +f 29/94/17 61/513/17 63/95/17 +f 32/97/18 64/33/18 62/31/18 +f 31/99/17 63/32/17 33/34/17 +f 2/101/18 36/509/18 64/33/18 +f 157/103/19 158/106/22 165/104/20 +f 158/106/22 159/108/24 166/107/23 +f 159/108/24 160/111/27 167/109/25 +f 161/110/26 168/113/29 167/109/25 +f 162/112/28 169/115/31 168/113/29 +f 163/114/30 170/121/37 169/115/31 +f 164/105/21 165/104/20 172/116/32 +f 165/104/20 166/107/23 173/118/34 +f 166/107/23 167/109/25 174/119/35 +f 168/113/29 175/120/36 174/119/35 +f 169/115/31 176/122/38 175/120/36 +f 170/121/37 177/128/43 176/122/38 +f 171/117/33 172/116/32 179/123/39 +f 172/116/32 173/118/34 180/125/41 +f 173/118/34 174/119/35 181/126/13 +f 175/120/36 182/127/42 181/126/13 +f 176/122/38 183/129/44 182/127/42 +f 177/128/43 184/164/78 183/129/44 +f 179/123/39 186/131/46 185/130/45 +f 180/125/41 187/132/47 186/131/46 +f 181/126/13 188/134/49 187/132/47 +f 181/126/13 182/127/42 189/133/48 +f 182/127/42 183/129/44 190/135/50 +f 183/129/44 184/164/78 191/136/51 +f 186/131/46 193/138/53 192/137/52 +f 187/132/47 194/139/54 193/138/53 +f 188/134/49 195/141/56 194/139/54 +f 188/134/49 189/133/48 196/140/55 +f 189/133/48 190/135/50 197/142/57 +f 190/135/50 191/136/51 198/143/58 +f 193/138/53 200/145/60 199/144/59 +f 194/139/54 201/146/61 200/145/60 +f 195/141/56 202/148/63 201/146/61 +f 195/141/56 196/140/55 203/147/62 +f 196/140/55 197/142/57 204/149/64 +f 197/142/57 198/143/58 205/150/65 +f 65/151/66 80/153/68 157/103/19 +f 80/153/68 81/154/69 158/106/22 +f 81/154/69 82/155/70 159/108/24 +f 82/155/70 83/157/11 160/111/27 +f 84/156/71 161/110/26 160/111/27 +f 85/158/72 162/112/28 161/110/26 +f 86/159/73 163/114/30 162/112/28 +f 66/160/74 87/161/75 163/114/30 +f 87/161/75 88/162/76 170/121/37 +f 88/162/76 89/163/77 177/128/43 +f 89/163/77 90/514/1114 184/164/78 +f 184/164/78 90/514/1114 91/165/79 +f 191/136/51 91/165/79 92/166/80 +f 198/143/58 92/166/80 93/167/81 +f 205/150/65 93/167/81 68/168/82 +f 204/149/64 205/150/65 94/169/83 +f 203/147/62 204/149/64 95/170/84 +f 202/148/63 203/147/62 96/171/85 +f 202/148/63 97/172/15 98/173/86 +f 201/146/61 98/173/86 99/174/87 +f 200/145/60 99/174/87 100/175/88 +f 199/144/59 100/175/88 67/176/89 +f 192/137/52 199/144/59 73/177/90 +f 185/130/45 192/137/52 74/178/91 +f 178/124/40 185/130/45 75/179/92 +f 77/181/94 171/117/33 178/124/40 +f 78/182/95 164/105/21 171/117/33 +f 79/152/67 157/103/19 164/105/21 +f 206/103/96 207/106/99 214/104/97 +f 207/106/99 208/108/101 215/107/100 +f 208/108/101 209/111/104 216/109/102 +f 210/110/103 217/113/106 216/109/102 +f 211/112/105 218/115/108 217/113/106 +f 212/114/107 219/121/114 218/115/108 +f 213/105/98 214/104/97 221/116/109 +f 214/104/97 215/107/100 222/118/111 +f 215/107/100 216/109/102 223/119/112 +f 217/113/106 224/120/113 223/119/112 +f 218/115/108 225/122/115 224/120/113 +f 219/121/114 226/128/120 225/122/115 +f 220/117/110 221/116/109 228/123/116 +f 221/116/109 222/118/111 229/125/118 +f 222/118/111 223/119/112 230/126/1 +f 224/120/113 231/127/119 230/126/1 +f 225/122/115 232/129/121 231/127/119 +f 226/128/120 233/164/147 232/129/121 +f 228/123/116 235/131/123 234/130/122 +f 229/125/118 236/132/124 235/131/123 +f 230/126/1 237/134/126 236/132/124 +f 230/126/1 231/127/119 238/133/125 +f 231/127/119 232/129/121 239/135/127 +f 232/129/121 233/164/147 240/136/128 +f 235/131/123 242/138/130 241/137/129 +f 236/132/124 243/139/131 242/138/130 +f 237/134/126 244/141/133 243/139/131 +f 237/134/126 238/133/125 245/140/132 +f 238/133/125 239/135/127 246/142/134 +f 239/135/127 240/136/128 247/143/135 +f 242/138/130 249/145/137 248/144/136 +f 243/139/131 250/146/138 249/145/137 +f 244/141/133 251/148/140 250/146/138 +f 244/141/133 245/140/132 252/147/139 +f 245/140/132 246/142/134 253/149/141 +f 246/142/134 247/143/135 254/150/142 +f 67/151/89 100/153/88 206/103/96 +f 100/153/88 99/154/87 207/106/99 +f 99/154/87 98/155/86 208/108/101 +f 98/155/86 97/157/15 209/111/104 +f 96/156/85 210/110/103 209/111/104 +f 95/158/84 211/112/105 210/110/103 +f 94/159/83 212/114/107 211/112/105 +f 68/160/82 108/161/144 212/114/107 +f 108/161/144 109/162/145 219/121/114 +f 109/162/145 110/163/146 226/128/120 +f 110/163/146 111/514/390 233/164/147 +f 233/164/147 111/514/390 112/165/148 +f 240/136/128 112/165/148 113/166/149 +f 247/143/135 113/166/149 114/167/150 +f 254/150/142 114/167/150 72/168/151 +f 253/149/141 254/150/142 115/169/152 +f 252/147/139 253/149/141 116/170/153 +f 251/148/140 252/147/139 117/171/154 +f 251/148/140 118/172/3 119/173/155 +f 250/146/138 119/173/155 120/174/156 +f 249/145/137 120/174/156 121/175/157 +f 248/144/136 121/175/157 71/176/158 +f 241/137/129 248/144/136 101/177/159 +f 234/130/122 241/137/129 102/178/160 +f 227/124/117 234/130/122 103/179/161 +f 105/181/163 220/117/110 227/124/117 +f 106/182/164 213/105/98 220/117/110 +f 107/152/143 206/103/96 213/105/98 +f 255/103/165 256/183/168 263/104/166 +f 256/183/168 257/185/170 264/184/169 +f 257/185/170 258/111/173 265/109/171 +f 259/110/172 266/113/175 265/109/171 +f 260/186/174 267/115/177 266/113/175 +f 261/114/176 268/121/183 267/115/177 +f 262/105/167 263/104/166 270/187/178 +f 263/104/166 264/184/169 271/189/180 +f 264/184/169 265/109/171 272/119/181 +f 266/113/175 273/120/182 272/119/181 +f 267/115/177 274/122/184 273/120/182 +f 268/121/183 275/128/189 274/122/184 +f 269/188/179 270/187/178 277/123/185 +f 270/187/178 271/189/180 278/190/187 +f 271/189/180 272/119/181 279/126/5 +f 273/120/182 280/127/188 279/126/5 +f 274/122/184 281/129/190 280/127/188 +f 275/128/189 282/164/216 281/129/190 +f 277/123/185 284/192/192 283/191/191 +f 278/190/187 285/193/193 284/192/192 +f 279/126/5 286/134/195 285/193/193 +f 279/126/5 280/127/188 287/133/194 +f 280/127/188 281/129/190 288/135/196 +f 281/129/190 282/164/216 289/136/197 +f 284/192/192 291/138/199 290/137/198 +f 285/193/193 292/194/200 291/138/199 +f 286/134/195 293/141/202 292/194/200 +f 286/134/195 287/133/194 294/140/201 +f 287/133/194 288/135/196 295/195/203 +f 288/135/196 289/136/197 296/143/204 +f 291/138/199 298/196/206 297/144/205 +f 292/194/200 299/197/207 298/196/206 +f 293/141/202 300/148/209 299/197/207 +f 293/141/202 294/140/201 301/147/208 +f 294/140/201 295/195/203 302/198/210 +f 295/195/203 296/143/204 303/199/211 +f 71/151/158 121/153/157 255/103/165 +f 121/153/157 120/154/156 256/183/168 +f 120/154/156 119/200/155 257/185/170 +f 119/200/155 118/157/3 258/111/173 +f 117/156/154 259/110/172 258/111/173 +f 116/201/153 260/186/174 259/110/172 +f 115/159/152 261/114/176 260/186/174 +f 72/160/151 129/161/213 261/114/176 +f 129/161/213 130/162/214 268/121/183 +f 130/162/214 131/163/215 275/128/189 +f 131/163/215 132/514/393 282/164/216 +f 282/164/216 132/514/393 133/165/217 +f 289/136/197 133/165/217 134/166/218 +f 296/143/204 134/166/218 135/167/219 +f 303/199/211 135/167/219 70/168/220 +f 302/198/210 303/199/211 136/169/221 +f 301/147/208 302/198/210 137/202/222 +f 300/148/209 301/147/208 138/171/223 +f 300/148/209 139/172/7 140/203/224 +f 299/197/207 140/203/224 141/174/225 +f 298/196/206 141/174/225 142/175/226 +f 297/144/205 142/175/226 69/176/227 +f 290/137/198 297/144/205 122/177/228 +f 283/191/191 290/137/198 123/178/229 +f 276/124/186 283/191/191 124/179/230 +f 126/181/232 269/188/179 276/124/186 +f 127/205/233 262/105/167 269/188/179 +f 128/152/212 255/103/165 262/105/167 +f 304/103/234 305/106/237 312/104/235 +f 305/106/237 306/108/239 313/107/238 +f 306/108/239 307/111/242 314/109/240 +f 308/110/241 315/113/244 314/109/240 +f 309/112/243 316/115/246 315/113/244 +f 310/114/245 317/121/252 316/115/246 +f 311/105/236 312/104/235 319/116/247 +f 312/104/235 313/107/238 320/118/249 +f 313/107/238 314/109/240 321/119/250 +f 315/113/244 322/120/251 321/119/250 +f 316/115/246 323/122/253 322/120/251 +f 317/121/252 324/128/258 323/122/253 +f 318/117/248 319/116/247 326/123/254 +f 319/116/247 320/118/249 327/125/256 +f 320/118/249 321/119/250 328/126/9 +f 322/120/251 329/127/257 328/126/9 +f 323/122/253 330/129/259 329/127/257 +f 324/128/258 331/164/285 330/129/259 +f 326/123/254 333/131/261 332/130/260 +f 327/125/256 334/132/262 333/131/261 +f 328/126/9 335/134/264 334/132/262 +f 328/126/9 329/127/257 336/133/263 +f 329/127/257 330/129/259 337/135/265 +f 330/129/259 331/164/285 338/136/266 +f 333/131/261 340/138/268 339/137/267 +f 334/132/262 341/139/269 340/138/268 +f 335/134/264 342/141/271 341/139/269 +f 335/134/264 336/133/263 343/140/270 +f 336/133/263 337/135/265 344/142/272 +f 337/135/265 338/136/266 345/143/273 +f 340/138/268 347/145/275 346/144/274 +f 341/139/269 348/146/276 347/145/275 +f 342/141/271 349/148/278 348/146/276 +f 342/141/271 343/140/270 350/147/277 +f 343/140/270 344/142/272 351/149/279 +f 344/142/272 345/143/273 352/150/280 +f 69/151/227 142/153/226 304/103/234 +f 142/153/226 141/154/225 305/106/237 +f 141/154/225 140/155/224 306/108/239 +f 140/155/224 139/157/7 307/111/242 +f 138/156/223 308/110/241 307/111/242 +f 137/158/222 309/112/243 308/110/241 +f 136/159/221 310/114/245 309/112/243 +f 70/160/220 150/161/282 310/114/245 +f 150/161/282 151/162/283 317/121/252 +f 151/162/283 152/163/284 324/128/258 +f 152/163/284 153/514/392 331/164/285 +f 331/164/285 153/514/392 154/165/286 +f 338/136/266 154/165/286 155/166/287 +f 345/143/273 155/166/287 156/167/288 +f 352/150/280 156/167/288 66/168/74 +f 351/149/279 352/150/280 86/169/73 +f 350/147/277 351/149/279 85/170/72 +f 349/148/278 350/147/277 84/171/71 +f 349/148/278 83/172/11 82/173/70 +f 348/146/276 82/173/70 81/174/69 +f 347/145/275 81/174/69 80/175/68 +f 346/144/274 80/175/68 65/176/66 +f 339/137/267 346/144/274 143/177/289 +f 332/130/260 339/137/267 144/178/290 +f 325/124/255 332/130/260 145/179/291 +f 147/181/293 318/117/248 325/124/255 +f 148/182/294 311/105/236 318/117/248 +f 149/152/281 304/103/234 311/105/236 +f 353/206/295 354/209/298 361/207/296 +f 354/209/298 355/211/300 362/210/299 +f 355/211/300 356/214/303 363/212/301 +f 357/213/302 364/216/305 363/212/301 +f 358/215/304 365/218/307 364/216/305 +f 359/217/306 366/224/313 365/218/307 +f 360/208/297 361/207/296 368/219/308 +f 361/207/296 362/210/299 369/221/310 +f 362/210/299 363/212/301 370/222/311 +f 364/216/305 371/223/312 370/222/311 +f 365/218/307 372/225/314 371/223/312 +f 366/224/313 373/231/319 372/225/314 +f 367/220/309 368/219/308 375/226/315 +f 368/219/308 369/221/310 376/228/317 +f 369/221/310 370/222/311 377/229/17 +f 371/223/312 378/230/318 377/229/17 +f 372/225/314 379/232/320 378/230/318 +f 373/231/319 380/267/342 379/232/320 +f 375/226/315 382/234/322 381/233/321 +f 376/228/317 383/235/323 382/234/322 +f 377/229/17 384/237/325 383/235/323 +f 377/229/17 378/230/318 385/236/324 +f 378/230/318 379/232/320 386/238/326 +f 379/232/320 380/267/342 387/239/327 +f 382/234/322 389/241/329 388/240/328 +f 383/235/323 390/242/330 389/241/329 +f 384/237/325 391/244/332 390/242/330 +f 384/237/325 385/236/324 392/243/331 +f 385/236/324 386/238/326 393/245/333 +f 386/238/326 387/239/327 394/246/334 +f 389/241/329 396/248/336 395/247/335 +f 390/242/330 397/249/337 396/248/336 +f 391/244/332 398/251/339 397/249/337 +f 391/244/332 392/243/331 399/250/338 +f 392/243/331 393/245/333 400/252/340 +f 393/245/333 394/246/334 401/253/341 +f 67/254/89 107/256/143 353/206/295 +f 107/256/143 106/257/164 354/209/298 +f 106/257/164 105/258/163 355/211/300 +f 105/258/163 104/260/162 356/214/303 +f 103/259/161 357/213/302 356/214/303 +f 102/261/160 358/215/304 357/213/302 +f 101/262/159 359/217/306 358/215/304 +f 71/263/158 128/264/212 359/217/306 +f 128/264/212 127/265/233 366/224/313 +f 127/265/233 126/266/232 373/231/319 +f 126/266/232 125/515/231 380/267/342 +f 380/267/342 125/515/231 124/268/230 +f 387/239/327 124/268/230 123/269/229 +f 394/246/334 123/269/229 122/270/228 +f 401/253/341 122/270/228 69/271/227 +f 400/252/340 401/253/341 149/272/281 +f 399/250/338 400/252/340 148/273/294 +f 398/251/339 399/250/338 147/274/293 +f 398/251/339 146/275/292 145/276/291 +f 397/249/337 145/276/291 144/277/290 +f 396/248/336 144/277/290 143/278/289 +f 395/247/335 143/278/289 65/279/66 +f 388/240/328 395/247/335 79/280/67 +f 381/233/321 388/240/328 78/281/95 +f 374/227/316 381/233/321 77/282/94 +f 75/284/92 367/220/309 374/227/316 +f 74/285/91 360/208/297 367/220/309 +f 73/255/90 353/206/295 360/208/297 +f 402/206/343 403/209/346 410/207/344 +f 403/209/346 404/211/348 411/210/347 +f 404/211/348 405/214/351 412/212/349 +f 406/213/350 413/216/353 412/212/349 +f 407/215/352 414/218/355 413/216/353 +f 408/217/354 415/224/361 414/218/355 +f 409/208/345 410/207/344 417/219/356 +f 410/207/344 411/210/347 418/221/358 +f 411/210/347 412/212/349 419/222/359 +f 413/216/353 420/223/360 419/222/359 +f 414/218/355 421/225/362 420/223/360 +f 415/224/361 422/231/367 421/225/362 +f 416/220/357 417/219/356 424/226/363 +f 417/219/356 418/221/358 425/228/365 +f 418/221/358 419/222/359 426/229/18 +f 420/223/360 427/230/366 426/229/18 +f 421/225/362 428/232/368 427/230/366 +f 422/231/367 429/267/391 428/232/368 +f 424/226/363 431/234/370 430/233/369 +f 425/228/365 432/235/371 431/234/370 +f 426/229/18 433/237/373 432/235/371 +f 426/229/18 427/230/366 434/236/372 +f 427/230/366 428/232/368 435/238/374 +f 428/232/368 429/267/391 436/239/375 +f 431/234/370 438/241/377 437/240/376 +f 432/235/371 439/242/378 438/241/377 +f 433/237/373 440/244/380 439/242/378 +f 433/237/373 434/236/372 441/243/379 +f 434/236/372 435/238/374 442/245/381 +f 435/238/374 436/239/375 443/246/382 +f 438/241/377 445/248/384 444/247/383 +f 439/242/378 446/249/385 445/248/384 +f 440/244/380 447/251/387 446/249/385 +f 440/244/380 441/243/379 448/250/386 +f 441/243/379 442/245/381 449/252/388 +f 442/245/381 443/246/382 450/253/389 +f 72/254/151 114/256/150 402/206/343 +f 114/256/150 113/257/149 403/209/346 +f 113/257/149 112/258/148 404/211/348 +f 112/258/148 111/260/390 405/214/351 +f 110/259/146 406/213/350 405/214/351 +f 109/261/145 407/215/352 406/213/350 +f 108/262/144 408/217/354 407/215/352 +f 68/263/82 93/264/81 408/217/354 +f 93/264/81 92/265/80 415/224/361 +f 92/265/80 91/266/79 422/231/367 +f 91/266/79 90/515/1114 429/267/391 +f 429/267/391 90/515/1114 89/268/77 +f 436/239/375 89/268/77 88/269/76 +f 443/246/382 88/269/76 87/270/75 +f 450/253/389 87/270/75 66/271/74 +f 449/252/388 450/253/389 156/272/288 +f 448/250/386 449/252/388 155/273/287 +f 447/251/387 448/250/386 154/274/286 +f 447/251/387 153/275/392 152/276/284 +f 446/249/385 152/276/284 151/277/283 +f 445/248/384 151/277/283 150/278/282 +f 444/247/383 150/278/282 70/279/220 +f 437/240/376 444/247/383 135/280/219 +f 430/233/369 437/240/376 134/281/218 +f 423/227/364 430/233/369 133/282/217 +f 131/284/215 416/220/357 423/227/364 +f 130/285/214 409/208/345 416/220/357 +f 129/255/213 402/206/343 409/208/345 +f 452/286/1 454/302/3 468/287/3 +f 454/289/3 456/286/5 469/288/5 +f 456/291/5 458/289/7 470/290/7 +f 458/293/7 460/291/9 471/292/9 +f 460/295/9 462/516/11 472/296/11 +f 462/298/11 464/295/13 473/297/13 +f 464/300/13 466/298/15 474/299/15 +f 466/302/15 452/300/1 467/301/1 +f 459/303/394 479/517/394 478/304/395 +f 451/306/17 467/288/17 468/287/17 +f 453/308/17 468/290/17 469/288/17 +f 455/310/17 469/292/17 470/290/17 +f 457/305/17 470/294/17 471/292/17 +f 459/312/17 471/297/17 472/296/17 +f 461/314/17 472/299/17 473/297/17 +f 463/316/17 473/301/17 474/299/17 +f 465/318/17 474/287/17 467/301/17 +f 482/322/17 475/518/17 476/519/17 +f 476/519/17 477/520/17 478/320/17 +f 478/320/17 479/521/17 480/321/17 +f 480/321/17 481/522/17 482/322/17 +f 482/322/17 476/519/17 478/320/17 +f 455/309/396 477/523/396 476/323/397 +f 463/316/398 465/317/399 482/324/399 +f 459/312/394 461/313/400 480/326/400 +f 455/310/396 457/311/395 478/328/395 +f 451/306/401 453/307/397 476/330/397 +f 451/319/401 475/524/401 482/332/399 +f 463/315/398 481/525/398 480/333/400 +f 498/334/17 501/355/17 493/335/17 +f 496/337/1 497/526/1 499/338/1 +f 502/340/9 495/527/9 494/341/9 +f 490/343/9 486/428/9 485/344/9 +f 487/346/1 483/528/1 484/347/1 +f 489/349/18 485/529/18 483/350/18 +f 501/352/5 498/361/5 489/353/5 +f 492/355/162 491/342/162 499/341/162 +f 501/336/292 500/339/292 494/338/292 +f 502/356/5 500/360/5 487/354/5 +f 499/358/5 497/530/5 490/359/5 +f 485/362/13 492/370/13 493/363/13 +f 496/365/13 491/369/13 485/362/13 +f 483/364/13 494/371/13 495/367/13 +f 511/375/402 503/504/404 544/376/405 +f 503/378/404 504/486/408 546/379/407 +f 546/387/407 504/487/408 505/388/409 +f 547/393/410 505/390/409 506/392/411 +f 548/398/412 506/488/411 507/399/413 +f 549/404/414 507/501/413 508/405/415 +f 508/410/415 509/502/417 551/411/418 +f 509/416/417 511/503/402 545/417/406 +f 512/419/1 529/489/1 528/420/419 +f 514/421/419 528/420/419 530/422/420 +f 530/422/420 531/425/421 518/424/421 +f 531/425/421 532/490/9 520/426/9 +f 520/343/9 532/505/9 533/427/422 +f 522/428/422 533/427/422 534/429/423 +f 517/431/424 515/466/425 536/432/425 +f 534/429/423 535/435/426 526/434/426 +f 535/435/426 529/489/1 512/419/1 +f 513/436/403 515/491/403 528/437/403 +f 515/439/403 517/492/403 530/422/403 +f 517/440/403 519/507/403 531/441/403 +f 521/443/403 532/490/403 531/425/403 +f 521/445/403 523/493/403 533/446/403 +f 525/448/403 534/429/403 533/427/403 +f 525/450/403 527/494/403 535/451/403 +f 513/453/403 529/489/403 535/435/403 +f 540/455/9 548/398/412 549/400/414 +f 525/457/427 542/495/427 543/458/428 +f 523/460/429 521/496/430 540/461/430 +f 519/463/431 517/431/424 538/464/424 +f 515/466/425 513/470/432 537/467/432 +f 527/459/428 543/497/428 537/469/432 +f 523/460/429 541/506/429 542/471/427 +f 519/463/431 539/498/431 540/472/430 +f 538/474/420 546/387/407 547/389/410 +f 537/476/1 545/377/406 544/376/405 +f 543/478/426 551/418/418 545/417/406 +f 541/480/422 549/404/414 550/406/416 +f 539/482/421 547/393/410 548/394/412 +f 538/484/420 536/499/419 544/380/405 +f 543/485/426 542/500/423 550/412/416 +f 560/375/433 552/504/435 593/376/436 +f 593/380/436 552/378/435 553/486/438 +f 553/487/438 554/388/440 596/389/441 +f 554/390/440 555/392/442 597/394/443 +f 555/488/442 556/399/444 598/400/445 +f 598/404/445 556/501/444 557/405/446 +f 557/410/446 558/502/448 600/411/449 +f 558/416/448 560/503/433 594/417/437 +f 578/489/450 577/420/451 563/421/451 +f 577/420/451 579/422/452 565/423/452 +f 579/422/452 580/425/453 567/424/453 +f 567/424/453 580/425/453 581/490/454 +f 569/343/454 581/505/454 582/427/455 +f 582/427/455 583/429/456 573/430/456 +f 564/466/457 585/432/457 587/433/458 +f 583/429/456 584/435/459 575/434/459 +f 584/435/459 578/489/450 561/419/450 +f 564/491/434 577/437/434 578/438/434 +f 566/492/434 579/422/434 577/420/434 +f 566/440/434 568/507/434 580/441/434 +f 570/443/434 581/490/434 580/425/434 +f 572/493/434 582/446/434 581/447/434 +f 574/448/434 583/429/434 582/427/434 +f 576/494/434 584/451/434 583/452/434 +f 562/453/434 578/489/434 584/435/434 +f 589/455/454 597/398/443 598/400/445 +f 576/459/460 574/457/461 591/495/461 +f 570/496/462 589/461/462 590/462/463 +f 568/463/464 566/431/458 587/464/458 +f 562/470/465 586/467/465 585/468/457 +f 562/470/465 576/459/460 592/497/460 +f 572/460/463 590/506/463 591/471/461 +f 570/473/462 568/463/464 588/498/464 +f 588/475/453 587/474/452 595/387/439 +f 586/476/450 594/377/437 593/376/436 +f 586/479/450 592/478/459 600/418/449 +f 591/481/456 590/480/455 598/404/445 +f 588/482/453 596/393/441 597/394/443 +f 585/499/451 593/380/436 595/379/439 +f 591/500/456 599/412/447 600/411/449 +f 609/375/466 601/504/468 642/376/469 +f 601/378/468 602/486/472 644/379/471 +f 644/387/471 602/487/472 603/388/473 +f 603/390/473 604/392/475 646/394/476 +f 604/488/475 605/399/477 647/400/478 +f 605/501/477 606/405/479 648/406/480 +f 648/412/480 606/410/479 607/502/481 +f 649/418/482 607/416/481 609/503/466 +f 627/489/483 626/420/484 612/421/484 +f 626/420/484 628/422/485 614/423/485 +f 628/422/485 629/425/486 616/424/486 +f 616/424/486 629/425/486 630/490/487 +f 618/343/487 630/505/487 631/427/488 +f 631/427/488 632/429/489 622/430/489 +f 615/431/490 613/466/491 634/432/491 +f 622/430/489 632/429/489 633/435/492 +f 633/435/492 627/489/483 610/419/483 +f 613/491/467 626/437/467 627/438/467 +f 615/492/467 628/422/467 626/420/467 +f 615/440/467 617/507/467 629/441/467 +f 619/443/467 630/490/467 629/425/467 +f 621/493/467 631/446/467 630/447/467 +f 623/448/467 632/429/467 631/427/467 +f 625/494/467 633/451/467 632/452/467 +f 625/454/467 611/453/467 627/489/467 +f 638/455/487 646/398/476 647/400/478 +f 623/457/493 640/495/493 641/458/494 +f 619/496/495 638/461/495 639/462/496 +f 617/463/497 615/431/490 636/464/490 +f 613/466/491 611/470/498 635/467/498 +f 625/459/494 641/497/494 635/469/498 +f 621/460/496 639/506/496 640/471/493 +f 619/473/495 617/463/497 637/498/497 +f 636/474/485 644/387/471 645/389/474 +f 634/477/484 635/476/483 643/377/470 +f 641/478/492 649/418/482 643/417/470 +f 639/480/488 647/404/478 648/406/480 +f 638/483/487 637/482/486 645/393/474 +f 634/499/484 642/380/469 644/379/471 +f 640/500/489 648/412/480 649/411/482 +f 692/377/502 658/375/499 650/504/501 +f 650/378/501 651/486/505 693/379/504 +f 693/387/504 651/487/505 652/388/506 +f 652/390/506 653/392/508 695/394/509 +f 695/398/509 653/488/508 654/399/510 +f 696/404/511 654/501/510 655/405/512 +f 655/410/512 656/502/514 698/411/515 +f 698/418/515 656/416/514 658/503/499 +f 659/419/516 676/489/516 675/420/517 +f 661/421/517 675/420/517 677/422/518 +f 677/422/518 678/425/519 665/424/519 +f 665/424/519 678/425/519 679/490/520 +f 679/505/520 680/427/521 669/428/521 +f 680/427/521 681/429/522 671/430/522 +f 664/431/450 662/466/523 683/432/523 +f 671/430/522 681/429/522 682/435/524 +f 682/435/524 676/489/516 659/419/516 +f 660/436/500 662/491/500 675/437/500 +f 662/439/500 664/492/500 677/422/500 +f 664/440/500 666/507/500 678/441/500 +f 666/444/500 668/443/500 679/490/500 +f 670/493/500 680/446/500 679/447/500 +f 672/448/500 681/429/500 680/427/500 +f 674/494/500 682/451/500 681/452/500 +f 660/453/500 676/489/500 682/435/500 +f 687/455/520 695/398/509 696/400/511 +f 672/457/18 689/495/18 690/458/525 +f 668/496/526 687/461/526 688/462/527 +f 664/431/450 685/464/450 686/465/528 +f 662/466/523 660/470/529 684/467/529 +f 674/459/525 690/497/525 684/469/529 +f 670/460/527 688/506/527 689/471/18 +f 668/473/526 666/463/528 686/498/528 +f 685/474/518 693/387/504 694/389/507 +f 684/476/516 692/377/502 691/376/503 +f 684/479/516 690/478/524 698/418/515 +f 689/481/522 688/480/521 696/404/511 +f 687/483/520 686/482/519 694/393/507 +f 683/499/517 691/380/503 693/379/504 +f 690/485/524 689/500/522 697/412/513 +f 707/375/530 699/504/531 740/376/532 +f 699/378/531 700/486/535 742/379/534 +f 742/387/534 700/487/535 701/388/536 +f 701/390/536 702/392/538 744/394/539 +f 744/398/539 702/488/538 703/399/540 +f 703/501/540 704/405/542 746/406/543 +f 746/412/543 704/410/542 705/502/544 +f 705/416/544 707/503/530 741/417/533 +f 725/489/5 724/420/546 710/421/546 +f 724/420/546 726/422/292 712/423/292 +f 712/423/292 726/422/292 727/425/547 +f 714/424/547 727/425/547 728/490/13 +f 716/343/13 728/505/13 729/427/548 +f 729/427/548 730/429/390 720/430/390 +f 711/466/549 732/432/549 734/433/9 +f 720/430/390 730/429/390 731/435/550 +f 722/434/550 731/435/550 725/489/5 +f 709/436/392 711/491/392 724/437/392 +f 713/492/392 726/422/392 724/420/392 +f 713/440/392 715/507/392 727/441/392 +f 717/443/392 728/490/392 727/425/392 +f 719/493/392 729/446/392 728/447/392 +f 719/449/392 721/448/392 730/429/392 +f 721/450/392 723/494/392 731/451/392 +f 709/453/392 725/489/392 731/435/392 +f 736/455/13 744/398/539 745/400/541 +f 723/459/551 721/457/18 738/495/18 +f 717/496/552 736/461/552 737/462/553 +f 715/463/554 713/431/9 734/464/9 +f 711/466/549 709/470/555 733/467/555 +f 723/459/551 739/497/551 733/469/555 +f 721/457/18 719/460/553 737/506/553 +f 715/463/554 735/498/554 736/472/552 +f 734/474/292 742/387/534 743/389/537 +f 732/477/546 733/476/5 741/377/533 +f 739/478/550 747/418/545 741/417/533 +f 738/481/390 737/480/548 745/404/541 +f 735/482/547 743/393/537 744/394/539 +f 734/484/292 732/499/546 740/380/532 +f 739/485/550 738/500/390 746/412/543 +f 756/375/556 748/504/558 789/376/559 +f 789/380/559 748/378/558 749/486/561 +f 749/487/561 750/388/563 792/389/564 +f 792/393/564 750/390/563 751/392/565 +f 751/488/565 752/399/567 794/400/568 +f 794/404/568 752/501/567 753/405/569 +f 795/412/570 753/410/569 754/502/571 +f 796/418/572 754/416/571 756/503/556 +f 774/489/573 773/420/574 759/421/574 +f 759/421/574 773/420/574 775/422/575 +f 761/423/575 775/422/575 776/425/576 +f 763/424/576 776/425/576 777/490/577 +f 765/343/577 777/505/577 778/427/578 +f 778/427/578 779/429/579 769/430/579 +f 762/431/483 760/466/580 781/432/580 +f 779/429/579 780/435/581 771/434/581 +f 771/434/581 780/435/581 774/489/573 +f 758/436/557 760/491/557 773/437/557 +f 762/492/557 775/422/557 773/420/557 +f 764/507/557 776/441/557 775/442/557 +f 764/444/557 766/443/557 777/490/557 +f 766/445/557 768/493/557 778/446/557 +f 768/449/557 770/448/557 779/429/557 +f 772/494/557 780/451/557 779/452/557 +f 772/454/557 758/453/557 774/489/557 +f 786/456/578 785/455/577 793/398/566 +f 772/459/582 770/457/18 787/495/18 +f 768/460/583 766/496/584 785/461/584 +f 762/431/483 783/464/483 784/465/585 +f 760/466/580 758/470/586 782/467/586 +f 772/459/582 788/497/582 782/469/586 +f 768/460/583 786/506/583 787/471/18 +f 766/473/584 764/463/585 784/498/585 +f 783/474/575 791/387/562 792/389/564 +f 782/476/573 790/377/560 789/376/559 +f 788/478/581 796/418/572 790/417/560 +f 786/480/578 794/404/568 795/406/570 +f 784/482/576 792/393/564 793/394/566 +f 781/499/574 789/380/559 791/379/562 +f 788/485/581 787/500/579 795/412/570 +f 805/375/587 797/504/588 838/376/589 +f 838/380/589 797/378/588 798/486/591 +f 798/487/591 799/388/593 841/389/594 +f 799/390/593 800/392/595 842/394/596 +f 842/398/596 800/488/595 801/399/597 +f 801/501/597 802/405/599 844/406/600 +f 844/412/600 802/410/599 803/502/601 +f 845/418/602 803/416/601 805/503/587 +f 823/489/520 822/420/603 808/421/603 +f 808/421/603 822/420/603 824/422/604 +f 810/423/604 824/422/604 825/425/605 +f 825/425/605 826/490/516 814/426/516 +f 814/343/516 826/505/516 827/427/529 +f 816/428/529 827/427/529 828/429/500 +f 811/431/454 809/466/606 830/432/606 +f 828/429/500 829/435/526 820/434/526 +f 820/434/526 829/435/526 823/489/520 +f 807/436/522 809/491/522 822/437/522 +f 809/439/522 811/492/522 824/422/522 +f 813/507/522 825/441/522 824/442/522 +f 813/444/522 815/443/522 826/490/522 +f 815/445/522 817/493/522 827/446/522 +f 817/449/522 819/448/522 828/429/522 +f 819/450/522 821/494/522 829/451/522 +f 821/454/522 807/453/522 823/489/522 +f 834/455/516 842/398/596 843/400/598 +f 821/459/607 819/457/18 836/495/18 +f 817/460/608 815/496/524 834/461/524 +f 811/431/454 832/464/454 833/465/609 +f 809/466/606 807/470/521 831/467/521 +f 821/459/607 837/497/607 831/469/521 +f 817/460/608 835/506/608 836/471/18 +f 813/463/609 833/498/609 834/472/524 +f 832/474/604 840/387/592 841/389/594 +f 831/476/520 839/377/590 838/376/589 +f 837/478/526 845/418/602 839/417/590 +f 835/480/529 843/404/598 844/406/600 +f 834/483/516 833/482/605 841/393/594 +f 830/499/603 838/380/589 840/379/592 +f 837/485/526 836/500/500 844/412/600 +f 854/375/610 846/504/611 887/376/612 +f 846/378/611 847/486/615 889/379/614 +f 847/487/615 848/388/616 890/389/617 +f 890/393/617 848/390/616 849/392/618 +f 891/398/619 849/488/618 850/399/620 +f 892/404/621 850/501/620 851/405/622 +f 851/410/622 852/502/624 894/411/625 +f 894/418/625 852/416/624 854/503/610 +f 872/489/13 871/420/626 857/421/626 +f 857/421/626 871/420/626 873/422/162 +f 859/423/162 873/422/162 874/425/627 +f 874/425/627 875/490/5 863/426/5 +f 863/343/5 875/505/5 876/427/555 +f 876/427/555 877/429/392 867/430/392 +f 860/431/1 858/466/628 879/432/628 +f 877/429/392 878/435/552 869/434/552 +f 869/434/552 878/435/552 872/489/13 +f 856/436/390 858/491/390 871/437/390 +f 858/439/390 860/492/390 873/422/390 +f 862/507/390 874/441/390 873/442/390 +f 862/444/390 864/443/390 875/490/390 +f 864/445/390 866/493/390 876/446/390 +f 868/448/390 877/429/390 876/427/390 +f 870/494/390 878/451/390 877/452/390 +f 856/453/390 872/489/390 878/435/390 +f 883/455/5 891/398/619 892/400/621 +f 870/459/629 868/457/18 885/495/18 +f 864/496/550 883/461/550 884/462/630 +f 860/431/1 881/464/1 882/465/631 +f 856/470/548 880/467/548 879/468/628 +f 870/459/629 886/497/629 880/469/548 +f 868/457/18 866/460/630 884/506/630 +f 862/463/631 882/498/631 883/472/550 +f 881/474/162 889/387/614 890/389/617 +f 880/476/13 888/377/613 887/376/612 +f 886/478/552 894/418/625 888/417/613 +f 884/480/555 892/404/621 893/406/623 +f 882/482/627 890/393/617 891/394/619 +f 879/499/626 887/380/612 889/379/614 +f 886/485/552 885/500/392 893/412/623 +f 903/375/632 895/504/633 936/376/634 +f 895/378/633 896/486/637 938/379/636 +f 896/487/637 897/388/638 939/389/639 +f 939/393/639 897/390/638 898/392/640 +f 940/398/641 898/488/640 899/399/642 +f 941/404/643 899/501/642 900/405/644 +f 900/410/644 901/502/646 943/411/647 +f 943/418/647 901/416/646 903/503/632 +f 921/489/577 920/420/648 906/421/648 +f 906/421/648 920/420/648 922/422/649 +f 908/423/649 922/422/649 923/425/650 +f 923/425/650 924/490/573 912/426/573 +f 912/343/573 924/505/573 925/427/586 +f 925/427/586 926/429/557 916/430/557 +f 909/431/487 907/466/651 928/432/651 +f 926/429/557 927/435/584 918/434/584 +f 918/434/584 927/435/584 921/489/577 +f 907/491/579 920/437/579 921/438/579 +f 909/492/579 922/422/579 920/420/579 +f 911/507/579 923/441/579 922/442/579 +f 911/444/579 913/443/579 924/490/579 +f 913/445/579 915/493/579 925/446/579 +f 915/449/579 917/448/579 926/429/579 +f 919/494/579 927/451/579 926/452/579 +f 919/454/579 905/453/579 921/489/579 +f 933/456/586 932/455/573 940/398/641 +f 919/459/652 917/457/18 934/495/18 +f 913/496/581 932/461/581 933/462/653 +f 909/431/487 930/464/487 931/465/654 +f 905/470/578 929/467/578 928/468/651 +f 905/470/578 919/459/652 935/497/652 +f 915/460/653 933/506/653 934/471/18 +f 911/463/654 931/498/654 932/472/581 +f 930/474/649 938/387/636 939/389/639 +f 929/476/577 937/377/635 936/376/634 +f 929/479/577 935/478/584 943/418/647 +f 933/480/586 941/404/643 942/406/645 +f 931/482/650 939/393/639 940/394/641 +f 930/484/649 928/499/648 936/380/634 +f 935/485/584 934/500/557 942/412/645 +f 986/377/657 952/375/655 944/504/656 +f 944/378/656 945/486/660 987/379/659 +f 945/487/660 946/388/661 988/389/662 +f 988/393/662 946/390/661 947/392/663 +f 947/488/663 948/399/665 990/400/666 +f 990/404/666 948/501/665 949/405/667 +f 949/410/667 950/502/669 992/411/670 +f 992/418/670 950/416/669 952/503/655 +f 970/489/1 969/420/671 955/421/671 +f 969/420/671 971/422/672 957/423/672 +f 957/423/672 971/422/672 972/425/673 +f 959/424/673 972/425/673 973/490/9 +f 961/343/9 973/505/9 974/427/674 +f 963/428/674 974/427/674 975/429/427 +f 958/431/420 956/466/675 977/432/675 +f 975/429/427 976/435/676 967/434/676 +f 976/435/676 970/489/1 953/419/1 +f 956/491/424 969/437/424 970/438/424 +f 958/492/424 971/422/424 969/420/424 +f 958/440/424 960/507/424 972/441/424 +f 962/443/424 973/490/424 972/425/424 +f 962/445/424 964/493/424 974/446/424 +f 964/449/424 966/448/424 975/429/424 +f 968/494/424 976/451/424 975/452/424 +f 954/453/424 970/489/424 976/435/424 +f 982/456/674 981/455/9 989/398/664 +f 966/457/403 983/495/403 984/458/677 +f 962/496/678 981/461/678 982/462/679 +f 960/463/680 958/431/420 979/464/420 +f 954/470/681 978/467/681 977/468/675 +f 954/470/681 968/459/677 984/497/677 +f 964/460/679 982/506/679 983/471/403 +f 960/463/680 980/498/680 981/472/678 +f 980/475/673 979/474/672 987/387/659 +f 977/477/671 978/476/1 986/377/657 +f 984/478/676 992/418/670 986/417/657 +f 983/481/427 982/480/674 990/404/666 +f 980/482/673 988/393/662 989/394/664 +f 977/499/671 985/380/658 987/379/659 +f 983/500/427 991/412/668 992/411/670 +f 1035/377/684 1001/375/682 993/504/683 +f 993/378/683 994/486/687 1036/379/686 +f 994/487/687 995/388/688 1037/389/689 +f 995/390/688 996/392/690 1038/394/691 +f 1038/398/691 996/488/690 997/399/692 +f 997/501/692 998/405/694 1040/406/695 +f 998/410/694 999/502/696 1041/411/697 +f 999/416/696 1001/503/682 1035/417/684 +f 1019/489/487 1018/420/698 1004/421/698 +f 1004/421/698 1018/420/698 1020/422/699 +f 1006/423/699 1020/422/699 1021/425/700 +f 1008/424/700 1021/425/700 1022/490/483 +f 1010/343/483 1022/505/483 1023/427/498 +f 1012/428/498 1023/427/498 1024/429/467 +f 1005/466/701 1026/432/701 1028/433/702 +f 1024/429/467 1025/435/495 1016/434/495 +f 1016/434/495 1025/435/495 1019/489/487 +f 1005/491/489 1018/437/489 1019/438/489 +f 1005/439/489 1007/492/489 1020/422/489 +f 1007/440/489 1009/507/489 1021/441/489 +f 1009/444/489 1011/443/489 1022/490/489 +f 1011/445/489 1013/493/489 1023/446/489 +f 1013/449/489 1015/448/489 1024/429/489 +f 1017/494/489 1025/451/489 1024/452/489 +f 1003/453/489 1019/489/489 1025/435/489 +f 1030/455/483 1038/398/691 1039/400/693 +f 1015/457/493 1032/495/493 1033/458/703 +f 1011/496/492 1030/461/492 1031/462/704 +f 1009/463/705 1007/431/702 1028/464/702 +f 1003/470/488 1027/467/488 1026/468/701 +f 1017/459/703 1033/497/703 1027/469/488 +f 1015/457/493 1013/460/704 1031/506/704 +f 1009/463/705 1029/498/705 1030/472/492 +f 1029/475/700 1028/474/699 1036/387/686 +f 1026/477/698 1027/476/487 1035/377/684 +f 1033/478/495 1041/418/697 1035/417/684 +f 1031/480/498 1039/404/693 1040/406/695 +f 1029/482/700 1037/393/689 1038/394/691 +f 1026/499/698 1034/380/685 1036/379/686 +f 1032/500/467 1040/412/695 1041/411/697 +f 1050/375/706 1042/504/707 1083/376/708 +f 1083/380/708 1042/378/707 1043/486/710 +f 1043/487/710 1044/388/712 1086/389/713 +f 1086/393/713 1044/390/712 1045/392/714 +f 1087/398/715 1045/488/714 1046/399/716 +f 1088/404/717 1046/501/716 1047/405/718 +f 1089/412/719 1047/410/718 1048/502/720 +f 1048/416/720 1050/503/706 1084/417/709 +f 1068/489/450 1067/420/722 1053/421/722 +f 1053/421/722 1067/420/722 1069/422/723 +f 1069/422/723 1070/425/724 1057/424/724 +f 1057/424/724 1070/425/724 1071/490/454 +f 1059/343/454 1071/505/454 1072/427/725 +f 1072/427/725 1073/429/461 1063/430/461 +f 1054/466/726 1075/432/726 1077/433/452 +f 1073/429/461 1074/435/727 1065/434/727 +f 1074/435/727 1068/489/450 1051/419/450 +f 1052/436/458 1054/491/458 1067/437/458 +f 1056/492/458 1069/422/458 1067/420/458 +f 1058/507/458 1070/441/458 1069/442/458 +f 1060/443/458 1071/490/458 1070/425/458 +f 1060/445/458 1062/493/458 1072/446/458 +f 1064/448/458 1073/429/458 1072/427/458 +f 1064/450/458 1066/494/458 1074/451/458 +f 1052/453/458 1068/489/458 1074/435/458 +f 1080/456/725 1079/455/454 1087/398/715 +f 1066/459/728 1064/457/434 1081/495/434 +f 1062/460/729 1060/496/730 1079/461/730 +f 1058/463/731 1056/431/452 1077/464/452 +f 1054/466/726 1052/470/732 1076/467/732 +f 1052/470/732 1066/459/728 1082/497/728 +f 1062/460/729 1080/506/729 1081/471/434 +f 1060/473/730 1058/463/731 1078/498/731 +f 1077/474/723 1085/387/711 1086/389/713 +f 1076/476/450 1084/377/709 1083/376/708 +f 1082/478/727 1090/418/721 1084/417/709 +f 1081/481/461 1080/480/725 1088/404/717 +f 1079/483/454 1078/482/724 1086/393/713 +f 1075/499/722 1083/380/708 1085/379/711 +f 1081/500/461 1089/412/719 1090/411/721 +f 1099/375/733 1091/504/734 1132/376/735 +f 1091/378/734 1092/486/738 1134/379/737 +f 1092/487/738 1093/388/739 1135/389/740 +f 1093/390/739 1094/392/741 1136/394/742 +f 1136/398/742 1094/488/741 1095/399/743 +f 1137/404/744 1095/501/743 1096/405/745 +f 1138/412/746 1096/410/745 1097/502/747 +f 1139/418/748 1097/416/747 1099/503/733 +f 1117/489/9 1116/420/749 1102/421/749 +f 1102/421/749 1116/420/749 1118/422/750 +f 1118/422/750 1119/425/751 1106/424/751 +f 1106/424/751 1119/425/751 1120/490/1 +f 1108/343/1 1120/505/1 1121/427/432 +f 1110/428/432 1121/427/432 1122/429/403 +f 1103/466/752 1124/432/752 1126/433/753 +f 1112/430/403 1122/429/403 1123/435/430 +f 1123/435/430 1117/489/9 1100/419/9 +f 1101/436/423 1103/491/423 1116/437/423 +f 1103/439/423 1105/492/423 1118/422/423 +f 1107/507/423 1119/441/423 1118/442/423 +f 1109/443/423 1120/490/423 1119/425/423 +f 1111/493/423 1121/446/423 1120/447/423 +f 1111/449/423 1113/448/423 1122/429/423 +f 1113/450/423 1115/494/423 1123/451/423 +f 1115/454/423 1101/453/423 1117/489/423 +f 1129/456/432 1128/455/1 1136/398/742 +f 1113/457/427 1130/495/427 1131/458/754 +f 1109/496/426 1128/461/426 1129/462/755 +f 1105/431/753 1126/464/753 1127/465/756 +f 1103/466/752 1101/470/422 1125/467/422 +f 1115/459/754 1131/497/754 1125/469/422 +f 1113/457/427 1111/460/755 1129/506/755 +f 1109/473/426 1107/463/756 1127/498/756 +f 1126/474/750 1134/387/737 1135/389/740 +f 1124/477/749 1125/476/9 1133/377/736 +f 1131/478/430 1139/418/748 1133/417/736 +f 1130/481/403 1129/480/432 1137/404/744 +f 1127/482/751 1135/393/740 1136/394/742 +f 1126/484/750 1124/499/749 1132/380/735 +f 1131/485/430 1130/500/403 1138/412/746 +f 1148/375/757 1140/504/758 1181/376/759 +f 1140/378/758 1141/486/762 1183/379/761 +f 1141/487/762 1142/388/763 1184/389/764 +f 1142/390/763 1143/392/765 1185/394/766 +f 1185/398/766 1143/488/765 1144/399/767 +f 1186/404/768 1144/501/767 1145/405/769 +f 1187/412/770 1145/410/769 1146/502/771 +f 1146/416/771 1148/503/757 1182/417/760 +f 1166/489/483 1165/420/773 1151/421/773 +f 1151/421/773 1165/420/773 1167/422/774 +f 1167/422/774 1168/425/775 1155/424/775 +f 1155/424/775 1168/425/775 1169/490/487 +f 1157/343/487 1169/505/487 1170/427/776 +f 1170/427/776 1171/429/493 1161/430/493 +f 1152/466/777 1173/432/777 1175/433/485 +f 1171/429/493 1172/435/778 1163/434/778 +f 1163/434/778 1172/435/778 1166/489/483 +f 1150/436/490 1152/491/490 1165/437/490 +f 1152/439/490 1154/492/490 1167/422/490 +f 1154/440/490 1156/507/490 1168/441/490 +f 1156/444/490 1158/443/490 1169/490/490 +f 1158/445/490 1160/493/490 1170/446/490 +f 1160/449/490 1162/448/490 1171/429/490 +f 1162/450/490 1164/494/490 1172/451/490 +f 1164/454/490 1150/453/490 1166/489/490 +f 1177/455/487 1185/398/766 1186/400/768 +f 1162/457/467 1179/495/467 1180/458/779 +f 1158/496/780 1177/461/780 1178/462/781 +f 1156/463/782 1154/431/485 1175/464/485 +f 1150/470/783 1174/467/783 1173/468/777 +f 1150/470/783 1164/459/779 1180/497/779 +f 1162/457/467 1160/460/781 1178/506/781 +f 1158/473/780 1156/463/782 1176/498/782 +f 1175/474/774 1183/387/761 1184/389/764 +f 1173/477/773 1174/476/483 1182/377/760 +f 1180/478/778 1188/418/772 1182/417/760 +f 1178/480/776 1186/404/768 1187/406/770 +f 1177/483/487 1176/482/775 1184/393/764 +f 1173/499/773 1181/380/759 1183/379/761 +f 1179/500/493 1187/412/770 1188/411/772 +f 1197/375/784 1189/504/785 1230/376/786 +f 1189/378/785 1190/486/789 1232/379/788 +f 1232/387/788 1190/487/789 1191/388/790 +f 1191/390/790 1192/392/792 1234/394/793 +f 1234/398/793 1192/488/792 1193/399/794 +f 1235/404/795 1193/501/794 1194/405/796 +f 1236/412/797 1194/410/796 1195/502/798 +f 1237/418/799 1195/416/798 1197/503/784 +f 1215/489/454 1214/420/800 1200/421/800 +f 1200/421/800 1214/420/800 1216/422/801 +f 1216/422/801 1217/425/802 1204/424/802 +f 1204/424/802 1217/425/802 1218/490/450 +f 1206/343/450 1218/505/450 1219/427/465 +f 1219/427/465 1220/429/434 1210/430/434 +f 1201/466/803 1222/432/803 1224/433/804 +f 1220/429/434 1221/435/462 1212/434/462 +f 1221/435/462 1215/489/454 1198/419/454 +f 1199/436/456 1201/491/456 1214/437/456 +f 1201/439/456 1203/492/456 1216/422/456 +f 1203/440/456 1205/507/456 1217/441/456 +f 1205/444/456 1207/443/456 1218/490/456 +f 1207/445/456 1209/493/456 1219/446/456 +f 1209/449/456 1211/448/456 1220/429/456 +f 1213/494/456 1221/451/456 1220/452/456 +f 1213/454/456 1199/453/456 1215/489/456 +f 1226/455/450 1234/398/793 1235/400/795 +f 1211/457/461 1228/495/461 1229/458/805 +f 1207/496/459 1226/461/459 1227/462/806 +f 1205/463/807 1203/431/804 1224/464/804 +f 1199/470/455 1223/467/455 1222/468/803 +f 1199/470/455 1213/459/805 1229/497/805 +f 1211/457/461 1209/460/806 1227/506/806 +f 1207/473/459 1205/463/807 1225/498/807 +f 1224/474/801 1232/387/788 1233/389/791 +f 1222/477/800 1223/476/454 1231/377/787 +f 1223/479/454 1229/478/462 1237/418/799 +f 1227/480/465 1235/404/795 1236/406/797 +f 1226/483/450 1225/482/802 1233/393/791 +f 1222/499/800 1230/380/786 1232/379/788 +f 1229/485/462 1228/500/434 1236/412/797 +f 1279/376/810 1238/504/809 1246/375/808 +f 1281/379/812 1239/486/813 1238/378/809 +f 1281/387/812 1282/389/816 1240/388/814 +f 1282/393/816 1283/394/819 1241/392/815 +f 1284/400/818 1242/399/817 1241/488/815 +f 1284/404/818 1285/406/823 1243/405/820 +f 1286/411/822 1244/502/821 1243/410/820 +f 1286/418/822 1280/417/811 1246/503/808 +f 1247/419/9 1249/421/422 1263/420/422 +f 1249/421/422 1251/423/423 1265/422/423 +f 1253/424/426 1266/425/426 1265/422/423 +f 1255/426/1 1267/490/1 1266/425/426 +f 1255/343/1 1257/428/419 1268/427/419 +f 1259/430/420 1269/429/420 1268/427/419 +f 1273/433/753 1271/432/824 1250/466/824 +f 1261/434/421 1270/435/421 1269/429/420 +f 1247/419/9 1264/489/9 1270/435/421 +f 1248/436/750 1264/438/750 1263/437/750 +f 1263/420/750 1265/422/750 1252/492/750 +f 1265/442/750 1266/441/750 1254/507/750 +f 1266/425/750 1267/490/750 1256/443/750 +f 1256/445/750 1267/447/750 1268/446/750 +f 1268/427/750 1269/429/750 1260/448/750 +f 1260/450/750 1269/452/750 1270/451/750 +f 1270/435/750 1264/489/750 1248/453/750 +f 1284/400/818 1283/398/819 1275/455/1 +f 1262/459/825 1278/458/825 1277/495/672 +f 1258/460/826 1276/462/826 1275/461/751 +f 1274/465/827 1273/464/753 1252/431/753 +f 1250/466/824 1271/468/824 1272/467/749 +f 1272/469/749 1278/497/825 1262/459/825 +f 1277/471/672 1276/506/826 1258/460/826 +f 1275/472/751 1274/498/827 1254/463/827 +f 1282/389/816 1281/387/812 1273/474/423 +f 1279/376/810 1280/377/811 1272/476/9 +f 1272/479/9 1280/417/811 1286/418/822 +f 1285/406/823 1284/404/818 1276/480/419 +f 1283/394/819 1282/393/816 1274/482/426 +f 1273/484/423 1281/379/812 1279/380/810 +f 1278/485/421 1286/411/822 1285/412/823 +f 1328/376/830 1287/504/829 1295/375/828 +f 1328/380/830 1330/379/835 1288/486/832 +f 1331/389/834 1289/388/833 1288/487/832 +f 1332/394/837 1290/392/836 1289/390/833 +f 1333/400/839 1291/399/838 1290/488/836 +f 1334/406/841 1292/405/840 1291/501/838 +f 1334/412/841 1335/411/843 1293/502/842 +f 1329/417/831 1295/503/828 1293/416/842 +f 1298/421/455 1312/420/455 1313/489/454 +f 1300/423/456 1314/422/456 1312/420/455 +f 1302/424/459 1315/425/459 1314/422/456 +f 1304/426/450 1316/490/450 1315/425/459 +f 1306/428/451 1317/427/451 1316/505/450 +f 1308/430/452 1318/429/452 1317/427/451 +f 1322/433/804 1320/432/844 1299/466/844 +f 1310/434/453 1319/435/453 1318/429/452 +f 1296/419/454 1313/489/454 1319/435/453 +f 1313/438/801 1312/437/801 1299/491/801 +f 1312/420/801 1314/422/801 1301/492/801 +f 1301/440/801 1314/442/801 1315/441/801 +f 1315/425/801 1316/490/801 1305/443/801 +f 1316/447/801 1317/446/801 1307/493/801 +f 1317/427/801 1318/429/801 1309/448/801 +f 1309/450/801 1318/452/801 1319/451/801 +f 1319/435/801 1313/489/801 1297/453/801 +f 1333/400/839 1332/398/837 1324/455/450 +f 1311/459/845 1327/458/845 1326/495/723 +f 1325/462/846 1324/461/802 1305/496/802 +f 1303/463/847 1323/465/847 1322/464/804 +f 1320/468/844 1321/467/800 1297/470/800 +f 1321/469/800 1327/497/845 1311/459/845 +f 1326/471/723 1325/506/846 1307/460/846 +f 1305/473/802 1324/472/802 1323/498/847 +f 1323/475/459 1331/389/834 1330/387/835 +f 1328/376/830 1329/377/831 1321/476/454 +f 1321/479/454 1329/417/831 1335/418/843 +f 1326/481/452 1334/406/841 1333/404/839 +f 1324/483/450 1332/394/837 1331/393/834 +f 1330/379/835 1328/380/830 1320/499/455 +f 1335/411/843 1334/412/841 1326/500/452 +f 1377/376/850 1336/504/849 1344/375/848 +f 1379/379/852 1337/486/853 1336/378/849 +f 1379/387/852 1380/389/856 1338/388/854 +f 1380/393/856 1381/394/859 1339/392/855 +f 1382/400/858 1340/399/857 1339/488/855 +f 1383/406/861 1341/405/860 1340/501/857 +f 1384/411/863 1342/502/862 1341/410/860 +f 1384/418/863 1378/417/851 1344/503/848 +f 1347/421/488 1361/420/488 1362/489/487 +f 1349/423/489 1363/422/489 1361/420/488 +f 1351/424/492 1364/425/492 1363/422/489 +f 1351/424/492 1353/426/483 1365/490/483 +f 1353/343/483 1355/428/484 1366/427/484 +f 1357/430/485 1367/429/485 1366/427/484 +f 1350/431/702 1371/433/702 1369/432/864 +f 1357/430/485 1359/434/486 1368/435/486 +f 1345/419/487 1362/489/487 1368/435/486 +f 1362/438/699 1361/437/699 1348/491/699 +f 1361/420/699 1363/422/699 1350/492/699 +f 1363/442/699 1364/441/699 1352/507/699 +f 1364/425/699 1365/490/699 1354/443/699 +f 1365/447/699 1366/446/699 1356/493/699 +f 1366/427/699 1367/429/699 1358/448/699 +f 1367/452/699 1368/451/699 1360/494/699 +f 1360/454/699 1368/435/699 1362/489/699 +f 1382/400/858 1381/398/859 1373/455/483 +f 1376/458/865 1375/495/774 1358/457/774 +f 1374/462/866 1373/461/700 1354/496/700 +f 1352/463/867 1372/465/867 1371/464/702 +f 1348/466/864 1369/468/864 1370/467/698 +f 1370/469/698 1376/497/865 1360/459/865 +f 1375/471/774 1374/506/866 1356/460/866 +f 1354/473/700 1373/472/700 1372/498/867 +f 1380/389/856 1379/387/852 1371/474/489 +f 1369/477/488 1377/376/850 1378/377/851 +f 1378/417/851 1384/418/863 1376/478/486 +f 1383/406/861 1382/404/858 1374/480/484 +f 1373/483/483 1381/394/859 1380/393/856 +f 1379/379/852 1377/380/850 1369/499/488 +f 1384/411/863 1383/412/861 1375/500/485 +f 1427/377/870 1426/376/872 1385/504/869 +f 1428/379/871 1386/486/873 1385/378/869 +f 1428/387/871 1429/389/877 1387/388/874 +f 1430/394/876 1388/392/875 1387/390/874 +f 1431/400/879 1389/399/878 1388/488/875 +f 1431/404/879 1432/406/883 1390/405/880 +f 1433/411/882 1391/502/881 1390/410/880 +f 1433/418/882 1427/417/870 1393/503/868 +f 1394/419/520 1396/421/521 1410/420/521 +f 1396/421/521 1398/423/522 1412/422/522 +f 1400/424/524 1413/425/524 1412/422/522 +f 1400/424/524 1402/426/516 1414/490/516 +f 1404/428/517 1415/427/517 1414/505/516 +f 1406/430/518 1416/429/518 1415/427/517 +f 1420/433/454 1418/432/884 1397/466/884 +f 1406/430/518 1408/434/519 1417/435/519 +f 1394/419/520 1411/489/520 1417/435/519 +f 1395/436/604 1411/438/604 1410/437/604 +f 1410/420/604 1412/422/604 1399/492/604 +f 1399/440/604 1412/442/604 1413/441/604 +f 1413/425/604 1414/490/604 1403/443/604 +f 1414/447/604 1415/446/604 1405/493/604 +f 1415/427/604 1416/429/604 1407/448/604 +f 1416/452/604 1417/451/604 1409/494/604 +f 1417/435/604 1411/489/604 1395/453/604 +f 1431/400/879 1430/398/876 1422/455/516 +f 1425/458/885 1424/495/17 1407/457/17 +f 1423/462/886 1422/461/605 1403/496/605 +f 1421/465/887 1420/464/454 1399/431/454 +f 1397/466/884 1418/468/884 1419/467/603 +f 1419/469/603 1425/497/885 1409/459/885 +f 1424/471/17 1423/506/886 1405/460/886 +f 1403/473/605 1422/472/605 1421/498/887 +f 1429/389/877 1428/387/871 1420/474/522 +f 1426/376/872 1427/377/870 1419/476/520 +f 1419/479/520 1427/417/870 1433/418/882 +f 1432/406/883 1431/404/879 1423/480/517 +f 1422/483/516 1430/394/876 1429/393/877 +f 1420/484/522 1428/379/871 1426/380/872 +f 1433/411/882 1432/412/883 1424/500/518 +f 1475/376/890 1434/504/889 1442/375/888 +f 1477/379/892 1435/486/893 1434/378/889 +f 1477/387/892 1478/389/897 1436/388/894 +f 1479/394/896 1437/392/895 1436/390/894 +f 1479/398/896 1480/400/901 1438/399/898 +f 1481/406/900 1439/405/899 1438/501/898 +f 1481/412/900 1482/411/903 1440/502/902 +f 1476/417/891 1442/503/888 1440/416/902 +f 1445/421/548 1459/420/548 1460/489/13 +f 1447/423/390 1461/422/390 1459/420/548 +f 1447/423/390 1449/424/550 1462/425/550 +f 1449/424/550 1451/426/5 1463/490/5 +f 1451/343/5 1453/428/546 1464/427/546 +f 1455/430/292 1465/429/292 1464/427/546 +f 1469/433/1 1467/432/904 1446/466/904 +f 1455/430/292 1457/434/547 1466/435/547 +f 1457/434/547 1443/419/13 1460/489/13 +f 1444/436/162 1460/438/162 1459/437/162 +f 1459/420/162 1461/422/162 1448/492/162 +f 1448/440/162 1461/442/162 1462/441/162 +f 1462/425/162 1463/490/162 1452/443/162 +f 1463/447/162 1464/446/162 1454/493/162 +f 1454/449/162 1464/427/162 1465/429/162 +f 1456/450/162 1465/452/162 1466/451/162 +f 1466/435/162 1460/489/162 1444/453/162 +f 1480/400/901 1479/398/896 1471/455/5 +f 1458/459/905 1474/458/905 1473/495/17 +f 1472/462/906 1471/461/627 1452/496/627 +f 1450/463/907 1470/465/907 1469/464/1 +f 1446/466/904 1467/468/904 1468/467/626 +f 1468/469/626 1474/497/905 1458/459/905 +f 1456/457/17 1473/471/17 1472/506/906 +f 1471/472/627 1470/498/907 1450/463/907 +f 1478/389/897 1477/387/892 1469/474/390 +f 1475/376/890 1476/377/891 1468/476/13 +f 1476/417/891 1482/418/903 1474/478/547 +f 1481/406/900 1480/404/901 1472/480/546 +f 1471/483/5 1479/394/896 1478/393/897 +f 1477/379/892 1475/380/890 1467/499/548 +f 1482/411/903 1481/412/900 1473/500/292 +f 1524/376/910 1483/504/909 1491/375/908 +f 1526/379/912 1484/486/913 1483/378/909 +f 1527/389/915 1485/388/914 1484/487/913 +f 1527/393/915 1528/394/919 1486/392/916 +f 1529/400/918 1487/399/917 1486/488/916 +f 1529/404/918 1530/406/922 1488/405/920 +f 1530/412/922 1531/411/923 1489/502/921 +f 1531/418/923 1525/417/911 1491/503/908 +f 1494/421/578 1508/420/578 1509/489/577 +f 1494/421/578 1496/423/579 1510/422/579 +f 1496/423/579 1498/424/581 1511/425/581 +f 1498/424/581 1500/426/573 1512/490/573 +f 1500/343/573 1502/428/574 1513/427/574 +f 1502/428/574 1504/430/575 1514/429/575 +f 1497/431/487 1518/433/487 1516/432/924 +f 1506/434/576 1515/435/576 1514/429/575 +f 1506/434/576 1492/419/577 1509/489/577 +f 1509/438/649 1508/437/649 1495/491/649 +f 1508/420/649 1510/422/649 1497/492/649 +f 1510/442/649 1511/441/649 1499/507/649 +f 1499/444/649 1511/425/649 1512/490/649 +f 1501/445/649 1512/447/649 1513/446/649 +f 1503/449/649 1513/427/649 1514/429/649 +f 1514/452/649 1515/451/649 1507/494/649 +f 1507/454/649 1515/435/649 1509/489/649 +f 1529/400/918 1528/398/919 1520/455/573 +f 1507/459/925 1523/458/925 1522/495/17 +f 1503/460/926 1521/462/926 1520/461/650 +f 1519/465/927 1518/464/487 1497/431/487 +f 1516/468/924 1517/467/648 1493/470/648 +f 1517/469/648 1523/497/925 1507/459/925 +f 1522/471/17 1521/506/926 1503/460/926 +f 1501/473/650 1520/472/650 1519/498/927 +f 1519/475/581 1527/389/915 1526/387/912 +f 1524/376/910 1525/377/911 1517/476/577 +f 1525/417/911 1531/418/923 1523/478/576 +f 1530/406/922 1529/404/918 1521/480/574 +f 1528/394/919 1527/393/915 1519/482/581 +f 1518/484/579 1526/379/912 1524/380/910 +f 1523/485/576 1531/411/923 1530/412/922 +f 1573/376/930 1532/504/929 1540/375/928 +f 1575/379/932 1533/486/933 1532/378/929 +f 1576/389/935 1534/388/934 1533/487/933 +f 1577/394/937 1535/392/936 1534/390/934 +f 1577/398/937 1578/400/941 1536/399/938 +f 1579/406/940 1537/405/939 1536/501/938 +f 1580/411/943 1538/502/942 1537/410/939 +f 1580/418/943 1574/417/931 1540/503/928 +f 1541/419/516 1543/421/529 1557/420/529 +f 1543/421/529 1545/423/500 1559/422/500 +f 1545/423/500 1547/424/526 1560/425/526 +f 1549/426/520 1561/490/520 1560/425/526 +f 1549/343/520 1551/428/603 1562/427/603 +f 1551/428/603 1553/430/604 1563/429/604 +f 1546/431/450 1567/433/450 1565/432/944 +f 1555/434/605 1564/435/605 1563/429/604 +f 1555/434/605 1541/419/516 1558/489/516 +f 1558/438/518 1557/437/518 1544/491/518 +f 1544/439/518 1557/420/518 1559/422/518 +f 1559/442/518 1560/441/518 1548/507/518 +f 1560/425/518 1561/490/518 1550/443/518 +f 1550/445/518 1561/447/518 1562/446/518 +f 1552/449/518 1562/427/518 1563/429/518 +f 1563/452/518 1564/451/518 1556/494/518 +f 1556/454/518 1564/435/518 1558/489/518 +f 1578/400/941 1577/398/937 1569/455/520 +f 1556/459/945 1572/458/945 1571/495/17 +f 1552/460/946 1570/462/946 1569/461/519 +f 1568/465/947 1567/464/450 1546/431/450 +f 1544/466/944 1565/468/944 1566/467/517 +f 1566/469/517 1572/497/945 1556/459/945 +f 1571/471/17 1570/506/946 1552/460/946 +f 1569/472/519 1568/498/947 1548/463/947 +f 1568/475/526 1576/389/935 1575/387/932 +f 1573/376/930 1574/377/931 1566/476/516 +f 1574/417/931 1580/418/943 1572/478/605 +f 1579/406/940 1578/404/941 1570/480/603 +f 1577/394/937 1576/393/935 1568/482/526 +f 1575/379/932 1573/380/930 1565/499/529 +f 1572/485/605 1580/411/943 1579/412/940 +f 1622/376/950 1581/504/949 1589/375/948 +f 1624/379/952 1582/486/953 1581/378/949 +f 1624/387/952 1625/389/956 1583/388/954 +f 1625/393/956 1626/394/958 1584/392/955 +f 1626/398/958 1627/400/960 1585/399/957 +f 1627/404/960 1628/406/963 1586/405/959 +f 1629/411/962 1587/502/961 1586/410/959 +f 1629/418/962 1623/417/951 1589/503/948 +f 1592/421/555 1606/420/555 1607/489/5 +f 1592/421/555 1594/423/392 1608/422/392 +f 1594/423/392 1596/424/552 1609/425/552 +f 1598/426/13 1610/490/13 1609/425/552 +f 1598/343/13 1600/428/626 1611/427/626 +f 1602/430/162 1612/429/162 1611/427/626 +f 1595/431/9 1616/433/9 1614/432/964 +f 1604/434/627 1613/435/627 1612/429/162 +f 1604/434/627 1590/419/5 1607/489/5 +f 1591/436/292 1607/438/292 1606/437/292 +f 1593/439/292 1606/420/292 1608/422/292 +f 1608/442/292 1609/441/292 1597/507/292 +f 1597/444/292 1609/425/292 1610/490/292 +f 1599/445/292 1610/447/292 1611/446/292 +f 1611/427/292 1612/429/292 1603/448/292 +f 1612/452/292 1613/451/292 1605/494/292 +f 1613/435/292 1607/489/292 1591/453/292 +f 1627/400/960 1626/398/958 1618/455/13 +f 1605/459/965 1621/458/965 1620/495/17 +f 1619/462/966 1618/461/547 1599/496/547 +f 1617/465/967 1616/464/9 1595/431/9 +f 1614/468/964 1615/467/546 1591/470/546 +f 1615/469/546 1621/497/965 1605/459/965 +f 1603/457/17 1620/471/17 1619/506/966 +f 1618/472/547 1617/498/967 1597/463/967 +f 1625/389/956 1624/387/952 1616/474/392 +f 1614/477/555 1622/376/950 1623/377/951 +f 1623/417/951 1629/418/962 1621/478/627 +f 1628/406/963 1627/404/960 1619/480/626 +f 1626/394/958 1625/393/956 1617/482/552 +f 1624/379/952 1622/380/950 1614/499/555 +f 1629/411/962 1628/412/963 1620/500/162 +f 1671/376/970 1630/504/969 1638/375/968 +f 1673/379/972 1631/486/973 1630/378/969 +f 1674/389/975 1632/388/974 1631/487/973 +f 1674/393/975 1675/394/978 1633/392/976 +f 1675/398/978 1676/400/980 1634/399/977 +f 1676/404/980 1677/406/983 1635/405/979 +f 1678/411/982 1636/502/981 1635/410/979 +f 1678/418/982 1672/417/971 1638/503/968 +f 1641/421/586 1655/420/586 1656/489/573 +f 1643/423/557 1657/422/557 1655/420/586 +f 1643/423/557 1645/424/584 1658/425/584 +f 1647/426/577 1659/490/577 1658/425/584 +f 1647/343/577 1649/428/648 1660/427/648 +f 1651/430/649 1661/429/649 1660/427/648 +f 1644/431/483 1665/433/483 1663/432/984 +f 1653/434/650 1662/435/650 1661/429/649 +f 1653/434/650 1639/419/573 1656/489/573 +f 1656/438/575 1655/437/575 1642/491/575 +f 1655/420/575 1657/422/575 1644/492/575 +f 1657/442/575 1658/441/575 1646/507/575 +f 1646/444/575 1658/425/575 1659/490/575 +f 1648/445/575 1659/447/575 1660/446/575 +f 1650/449/575 1660/427/575 1661/429/575 +f 1661/452/575 1662/451/575 1654/494/575 +f 1654/454/575 1662/435/575 1656/489/575 +f 1668/456/648 1676/400/980 1675/398/978 +f 1654/459/985 1670/458/985 1669/495/17 +f 1668/462/986 1667/461/576 1648/496/576 +f 1666/465/987 1665/464/483 1644/431/483 +f 1663/468/984 1664/467/574 1640/470/574 +f 1664/469/574 1670/497/985 1654/459/985 +f 1669/471/17 1668/506/986 1650/460/986 +f 1667/472/576 1666/498/987 1646/463/987 +f 1674/389/975 1673/387/972 1665/474/557 +f 1671/376/970 1672/377/971 1664/476/573 +f 1664/479/573 1672/417/971 1678/418/982 +f 1677/406/983 1676/404/980 1668/480/648 +f 1675/394/978 1674/393/975 1666/482/584 +f 1665/484/557 1673/379/972 1671/380/970 +f 1670/485/650 1678/411/982 1677/412/983 +f 1720/376/990 1679/504/989 1687/375/988 +f 1720/380/990 1722/379/994 1680/486/992 +f 1722/387/994 1723/389/996 1681/388/993 +f 1723/393/996 1724/394/999 1682/392/995 +f 1725/400/998 1683/399/997 1682/488/995 +f 1725/404/998 1726/406/1003 1684/405/1000 +f 1727/411/1002 1685/502/1001 1684/410/1000 +f 1727/418/1002 1721/417/991 1687/503/988 +f 1690/421/674 1704/420/674 1705/489/9 +f 1692/423/427 1706/422/427 1704/420/674 +f 1692/423/427 1694/424/676 1707/425/676 +f 1694/424/676 1696/426/1 1708/490/1 +f 1696/343/1 1698/428/671 1709/427/671 +f 1698/428/671 1700/430/672 1710/429/672 +f 1693/431/423 1714/433/423 1712/432/1004 +f 1702/434/673 1711/435/673 1710/429/672 +f 1688/419/9 1705/489/9 1711/435/673 +f 1705/438/753 1704/437/753 1691/491/753 +f 1704/420/753 1706/422/753 1693/492/753 +f 1693/440/753 1706/442/753 1707/441/753 +f 1707/425/753 1708/490/753 1697/443/753 +f 1697/445/753 1708/447/753 1709/446/753 +f 1709/427/753 1710/429/753 1701/448/753 +f 1710/452/753 1711/451/753 1703/494/753 +f 1711/435/753 1705/489/753 1689/453/753 +f 1717/456/671 1725/400/998 1724/398/999 +f 1703/459/1005 1719/458/1005 1718/495/750 +f 1717/462/1006 1716/461/1007 1697/496/1007 +f 1695/463/1008 1715/465/1008 1714/464/423 +f 1712/468/1004 1713/467/1009 1689/470/1009 +f 1689/470/1009 1713/469/1009 1719/497/1005 +f 1718/471/750 1717/506/1006 1699/460/1006 +f 1697/473/1007 1716/472/1007 1715/498/1008 +f 1715/475/676 1723/389/996 1722/387/994 +f 1712/477/674 1720/376/990 1721/377/991 +f 1721/417/991 1727/418/1002 1719/478/673 +f 1718/481/672 1726/406/1003 1725/404/998 +f 1724/394/999 1723/393/996 1715/482/676 +f 1722/379/994 1720/380/990 1712/499/674 +f 1727/411/1002 1726/412/1003 1718/500/672 +f 1770/377/1012 1769/376/1014 1728/504/1011 +f 1771/379/1013 1729/486/1015 1728/378/1011 +f 1772/389/1017 1730/388/1016 1729/487/1015 +f 1772/393/1017 1773/394/1020 1731/392/1018 +f 1773/398/1020 1774/400/1023 1732/399/1019 +f 1775/406/1022 1733/405/1021 1732/501/1019 +f 1776/411/1025 1734/502/1024 1733/410/1021 +f 1770/417/1012 1736/503/1010 1734/416/1024 +f 1739/421/498 1753/420/498 1754/489/483 +f 1739/421/498 1741/423/467 1755/422/467 +f 1743/424/495 1756/425/495 1755/422/467 +f 1743/424/495 1745/426/487 1757/490/487 +f 1747/428/698 1758/427/698 1757/505/487 +f 1747/428/698 1749/430/699 1759/429/699 +f 1763/433/490 1761/432/1026 1740/466/1026 +f 1751/434/700 1760/435/700 1759/429/699 +f 1751/434/700 1737/419/483 1754/489/483 +f 1754/438/485 1753/437/485 1740/491/485 +f 1740/439/485 1753/420/485 1755/422/485 +f 1742/440/485 1755/442/485 1756/441/485 +f 1756/425/485 1757/490/485 1746/443/485 +f 1746/445/485 1757/447/485 1758/446/485 +f 1748/449/485 1758/427/485 1759/429/485 +f 1759/452/485 1760/451/485 1752/494/485 +f 1760/435/485 1754/489/485 1738/453/485 +f 1766/456/698 1774/400/1023 1773/398/1020 +f 1768/458/1027 1767/495/774 1750/457/774 +f 1766/462/1028 1765/461/486 1746/496/486 +f 1744/463/1029 1764/465/1029 1763/464/490 +f 1761/468/1026 1762/467/484 1738/470/484 +f 1762/469/484 1768/497/1027 1752/459/1027 +f 1750/457/774 1767/471/774 1766/506/1028 +f 1746/473/486 1765/472/486 1764/498/1029 +f 1764/475/495 1772/389/1017 1771/387/1013 +f 1761/477/498 1769/376/1014 1770/377/1012 +f 1770/417/1012 1776/418/1025 1768/478/700 +f 1775/406/1022 1774/404/1023 1766/480/698 +f 1765/483/487 1773/394/1020 1772/393/1017 +f 1771/379/1013 1769/380/1014 1761/499/498 +f 1768/485/700 1776/411/1025 1775/412/1022 +f 1818/376/1032 1777/504/1031 1785/375/1030 +f 1818/380/1032 1820/379/1036 1778/486/1034 +f 1820/387/1036 1821/389/1038 1779/388/1035 +f 1821/393/1038 1822/394/1040 1780/392/1037 +f 1822/398/1040 1823/400/1042 1781/399/1039 +f 1823/404/1042 1824/406/1044 1782/405/1041 +f 1824/412/1044 1825/411/1045 1783/502/1043 +f 1819/417/1033 1785/503/1030 1783/416/1043 +f 1788/421/725 1802/420/725 1803/489/454 +f 1788/421/725 1790/423/461 1804/422/461 +f 1792/424/727 1805/425/727 1804/422/461 +f 1792/424/727 1794/426/450 1806/490/450 +f 1794/343/450 1796/428/722 1807/427/722 +f 1798/430/723 1808/429/723 1807/427/722 +f 1812/433/456 1810/432/1046 1789/466/1046 +f 1800/434/724 1809/435/724 1808/429/723 +f 1786/419/454 1803/489/454 1809/435/724 +f 1787/436/804 1803/438/804 1802/437/804 +f 1802/420/804 1804/422/804 1791/492/804 +f 1791/440/804 1804/442/804 1805/441/804 +f 1805/425/804 1806/490/804 1795/443/804 +f 1795/445/804 1806/447/804 1807/446/804 +f 1807/427/804 1808/429/804 1799/448/804 +f 1799/450/804 1808/452/804 1809/451/804 +f 1809/435/804 1803/489/804 1787/453/804 +f 1815/456/722 1823/400/1042 1822/398/1040 +f 1801/459/1047 1817/458/1047 1816/495/801 +f 1815/462/1048 1814/461/1049 1795/496/1049 +f 1793/463/1050 1813/465/1050 1812/464/456 +f 1789/466/1046 1810/468/1046 1811/467/1051 +f 1787/470/1051 1811/469/1051 1817/497/1047 +f 1816/471/801 1815/506/1048 1797/460/1048 +f 1795/473/1049 1814/472/1049 1813/498/1050 +f 1821/389/1038 1820/387/1036 1812/474/461 +f 1818/376/1032 1819/377/1033 1811/476/454 +f 1819/417/1033 1825/418/1045 1817/478/724 +f 1824/406/1044 1823/404/1042 1815/480/722 +f 1814/483/450 1822/394/1040 1821/393/1038 +f 1820/379/1036 1818/380/1032 1810/499/725 +f 1817/485/724 1825/411/1045 1824/412/1044 +f 1867/376/1054 1826/504/1053 1834/375/1052 +f 1869/379/1056 1827/486/1057 1826/378/1053 +f 1870/389/1059 1828/388/1058 1827/487/1057 +f 1870/393/1059 1871/394/1062 1829/392/1060 +f 1871/398/1062 1872/400/1064 1830/399/1061 +f 1872/404/1064 1873/406/1066 1831/405/1063 +f 1873/412/1066 1874/411/1067 1832/502/1065 +f 1874/418/1067 1868/417/1055 1834/503/1052 +f 1837/421/432 1851/420/432 1852/489/1 +f 1837/421/432 1839/423/403 1853/422/403 +f 1841/424/430 1854/425/430 1853/422/403 +f 1841/424/430 1843/426/9 1855/490/9 +f 1843/343/9 1845/428/749 1856/427/749 +f 1847/430/750 1857/429/750 1856/427/749 +f 1861/433/424 1859/432/1068 1838/466/1068 +f 1847/430/750 1849/434/751 1858/435/751 +f 1835/419/1 1852/489/1 1858/435/751 +f 1836/436/420 1852/438/420 1851/437/420 +f 1838/439/420 1851/420/420 1853/422/420 +f 1853/442/420 1854/441/420 1842/507/420 +f 1854/425/420 1855/490/420 1844/443/420 +f 1855/447/420 1856/446/420 1846/493/420 +f 1846/449/420 1856/427/420 1857/429/420 +f 1848/450/420 1857/452/420 1858/451/420 +f 1850/454/420 1858/435/420 1852/489/420 +f 1864/456/749 1872/400/1064 1871/398/1062 +f 1866/458/1069 1865/495/672 1848/457/672 +f 1864/462/1070 1863/461/421 1844/496/421 +f 1862/465/1071 1861/464/424 1840/431/424 +f 1838/466/1068 1859/468/1068 1860/467/419 +f 1860/469/419 1866/497/1069 1850/459/1069 +f 1848/457/672 1865/471/672 1864/506/1070 +f 1844/473/421 1863/472/421 1862/498/1071 +f 1870/389/1059 1869/387/1056 1861/474/403 +f 1859/477/432 1867/376/1054 1868/377/1055 +f 1868/417/1055 1874/418/1067 1866/478/751 +f 1865/481/750 1873/406/1066 1872/404/1064 +f 1871/394/1062 1870/393/1059 1862/482/430 +f 1861/484/403 1869/379/1056 1867/380/1054 +f 1866/485/751 1874/411/1067 1873/412/1066 +f 1916/376/1074 1875/504/1073 1883/375/1072 +f 1918/379/1076 1876/486/1077 1875/378/1073 +f 1918/387/1076 1919/389/1081 1877/388/1078 +f 1920/394/1080 1878/392/1079 1877/390/1078 +f 1920/398/1080 1921/400/1084 1879/399/1082 +f 1921/404/1084 1922/406/1086 1880/405/1083 +f 1922/412/1086 1923/411/1087 1881/502/1085 +f 1917/417/1075 1883/503/1072 1881/416/1085 +f 1886/421/776 1900/420/776 1901/489/487 +f 1886/421/776 1888/423/493 1902/422/493 +f 1890/424/778 1903/425/778 1902/422/493 +f 1890/424/778 1892/426/483 1904/490/483 +f 1892/343/483 1894/428/773 1905/427/773 +f 1896/430/774 1906/429/774 1905/427/773 +f 1910/433/489 1908/432/1088 1887/466/1088 +f 1896/430/774 1898/434/775 1907/435/775 +f 1884/419/487 1901/489/487 1907/435/775 +f 1885/436/702 1901/438/702 1900/437/702 +f 1887/439/702 1900/420/702 1902/422/702 +f 1889/440/702 1902/442/702 1903/441/702 +f 1891/444/702 1903/425/702 1904/490/702 +f 1893/445/702 1904/447/702 1905/446/702 +f 1895/449/702 1905/427/702 1906/429/702 +f 1906/452/702 1907/451/702 1899/494/702 +f 1899/454/702 1907/435/702 1901/489/702 +f 1921/400/1084 1920/398/1080 1912/455/483 +f 1915/458/1089 1914/495/699 1897/457/699 +f 1913/462/1090 1912/461/1091 1893/496/1091 +f 1891/463/1092 1911/465/1092 1910/464/489 +f 1908/468/1088 1909/467/1093 1885/470/1093 +f 1885/470/1093 1909/469/1093 1915/497/1089 +f 1897/457/699 1914/471/699 1913/506/1090 +f 1893/473/1091 1912/472/1091 1911/498/1092 +f 1911/475/778 1919/389/1081 1918/387/1076 +f 1916/376/1074 1917/377/1075 1909/476/487 +f 1917/417/1075 1923/418/1087 1915/478/775 +f 1922/406/1086 1921/404/1084 1913/480/773 +f 1912/483/483 1920/394/1080 1919/393/1081 +f 1918/379/1076 1916/380/1074 1908/499/776 +f 1915/485/775 1923/411/1087 1922/412/1086 +f 1965/376/1096 1924/504/1095 1932/375/1094 +f 1965/380/1096 1967/379/1100 1925/486/1098 +f 1967/387/1100 1968/389/1103 1926/388/1099 +f 1969/394/1102 1927/392/1101 1926/390/1099 +f 1969/398/1102 1970/400/1106 1928/399/1104 +f 1970/404/1106 1971/406/1108 1929/405/1105 +f 1971/412/1108 1972/411/1109 1930/502/1107 +f 1972/418/1109 1966/417/1097 1932/503/1094 +f 1935/421/465 1949/420/465 1950/489/450 +f 1935/421/465 1937/423/434 1951/422/434 +f 1939/424/462 1952/425/462 1951/422/434 +f 1939/424/462 1941/426/454 1953/490/454 +f 1941/343/454 1943/428/800 1954/427/800 +f 1945/430/801 1955/429/801 1954/427/800 +f 1959/433/458 1957/432/1110 1936/466/1110 +f 1947/434/802 1956/435/802 1955/429/801 +f 1933/419/450 1950/489/450 1956/435/802 +f 1934/436/452 1950/438/452 1949/437/452 +f 1936/439/452 1949/420/452 1951/422/452 +f 1938/440/452 1951/442/452 1952/441/452 +f 1940/444/452 1952/425/452 1953/490/452 +f 1942/445/452 1953/447/452 1954/446/452 +f 1944/449/452 1954/427/452 1955/429/452 +f 1955/452/452 1956/451/452 1948/494/452 +f 1948/454/452 1956/435/452 1950/489/452 +f 1970/400/1106 1969/398/1102 1961/455/454 +f 1964/458/1111 1963/495/723 1946/457/723 +f 1962/462/1112 1961/461/453 1942/496/453 +f 1940/463/1113 1960/465/1113 1959/464/458 +f 1957/468/1110 1958/467/451 1934/470/451 +f 1958/469/451 1964/497/1111 1948/459/1111 +f 1946/457/723 1963/471/723 1962/506/1112 +f 1942/473/453 1961/472/453 1960/498/1113 +f 1968/389/1103 1967/387/1100 1959/474/434 +f 1957/477/465 1965/376/1096 1966/377/1097 +f 1958/479/450 1966/417/1097 1972/418/1109 +f 1971/406/1108 1970/404/1106 1962/480/800 +f 1961/483/454 1969/394/1102 1968/393/1103 +f 1967/379/1100 1965/380/1096 1957/499/465 +f 1972/411/1109 1971/412/1108 1963/500/801 diff --git a/src/main/resources/assets/hbm/structures/aircraft_carrier.nbt b/src/main/resources/assets/hbm/structures/aircraft_carrier.nbt index 221919653..ef8414100 100644 Binary files a/src/main/resources/assets/hbm/structures/aircraft_carrier.nbt and b/src/main/resources/assets/hbm/structures/aircraft_carrier.nbt differ diff --git a/src/main/resources/assets/hbm/structures/oil_rig.nbt b/src/main/resources/assets/hbm/structures/oil_rig.nbt index 841f65cde..6f019936e 100644 Binary files a/src/main/resources/assets/hbm/structures/oil_rig.nbt and b/src/main/resources/assets/hbm/structures/oil_rig.nbt differ diff --git a/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel.png b/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel.png new file mode 100644 index 000000000..c7500bf74 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel_ct.png b/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel_ct.png new file mode 100644 index 000000000..fe417d7fa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/deco_rusty_steel_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/mine_naval.png b/src/main/resources/assets/hbm/textures/blocks/mine_naval.png new file mode 100644 index 000000000..95e2be29b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/mine_naval.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_RUSTY_DECO_STEEL.png b/src/main/resources/assets/hbm/textures/items/chem_icon_RUSTY_DECO_STEEL.png new file mode 100644 index 000000000..cb791dade Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_RUSTY_DECO_STEEL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUboinik.png b/src/main/resources/assets/hbm/textures/models/ModelUboinik.png new file mode 100644 index 000000000..9d8fd122b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/ModelUboinik.png differ diff --git a/src/main/resources/assets/hbm/textures/models/NMine.png b/src/main/resources/assets/hbm/textures/models/NMine.png new file mode 100644 index 000000000..9ef5a1a8b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/NMine.png differ