diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 0e0a4ec5d..47ddd31a8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -849,8 +849,9 @@ public class ModBlocks { public static Block iter; public static Block plasma_heater; - + public static Block watz; + public static Block watz_pump; public static Block watz_element; public static Block watz_control; @@ -1981,6 +1982,7 @@ public class ModBlocks { watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fwatz_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":block_combine_steel").setBlockName("fwatz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fwatz_conductor_side"); fwatz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":fwatz_cooler_top").setBlockName("fwatz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fwatz_cooler"); @@ -3260,6 +3262,7 @@ public class ModBlocks { GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); GameRegistry.registerBlock(watz_core, watz_core.getUnlocalizedName()); GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); + GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); GameRegistry.registerBlock(fwatz_conductor, fwatz_conductor.getUnlocalizedName()); GameRegistry.registerBlock(fwatz_scaffold, fwatz_scaffold.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 6d43d6106..85ebdc82c 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -25,7 +25,6 @@ import net.minecraft.world.World; public class Landmine extends BlockContainer implements IBomb { public static boolean safeMode = false; - static Random rand = new Random();; public Landmine(Material p_i45386_1_) { super(p_i45386_1_); @@ -100,18 +99,23 @@ public class Landmine extends BlockContainer implements IBomb { } if(flag) { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); + + if(!safeMode) { + explode(world, x, y, z); + } else { + world.setBlockToAir(x, y, z); + } } } - public void breakBlock(World world, int x, int y, int z, Block block, int i) { + @Override + public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { if(!safeMode) { explode(world, x, y, z); } - super.breakBlock(world, x, y, z, block, i); + super.onBlockDestroyedByPlayer(world, x, y, z, meta); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) { diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 76350d2a2..0b9767e4d 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,12 +1,14 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityWatz; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class Watz extends BlockDummyable { @@ -17,16 +19,14 @@ public class Watz extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) - return new TileEntityWatz(); - + if(meta >= 12) return new TileEntityWatz(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - //return super.standardOpenBehavior(world, x, y, z, player, 0); - return false; + return super.standardOpenBehavior(world, x, y, z, player, 0); } @Override @@ -38,4 +38,26 @@ public class Watz extends BlockDummyable { public int getOffset() { return 3; } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o); //TODO + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + this.makeExtra(world, x + 2, y, z); + this.makeExtra(world, x - 2, y, z); + this.makeExtra(world, x, y, z + 2); + this.makeExtra(world, x, y, z - 2); + this.makeExtra(world, x + 2, y + 2, z); + this.makeExtra(world, x - 2, y + 2, z); + this.makeExtra(world, x, y + 2, z + 2); + this.makeExtra(world, x, y + 2, z - 2); + } } diff --git a/src/main/java/com/hbm/blocks/machine/WatzPump.java b/src/main/java/com/hbm/blocks/machine/WatzPump.java new file mode 100644 index 000000000..69405e861 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/WatzPump.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class WatzPump extends BlockDummyable { + + public WatzPump() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityWatzPump(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + return side == ForgeDirection.UP && meta == 1; + } + + public static class TileEntityWatzPump extends TileEntity { + @Override public boolean canUpdate() { return false; } + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } + AxisAlignedBB bb = null; + @Override public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 2, zCoord + 2); + return bb; + } + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index e9a261459..fc9352d8e 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,7 +14,6 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; -import com.hbm.entity.qic.*; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; @@ -201,7 +200,6 @@ public class EntityMappings { addEntity(EntityArtilleryShell.class, "entity_artillery_shell", 1000); addEntity(EntityArtilleryRocket.class, "entity_himars", 1000); addEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 1000); - addEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1000); addEntity(EntityCog.class, "entity_stray_cog", 1000); addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); diff --git a/src/main/java/com/hbm/entity/qic/EntitySPV.java b/src/main/java/com/hbm/entity/qic/EntitySPV.java deleted file mode 100644 index e82fa07d2..000000000 --- a/src/main/java/com/hbm/entity/qic/EntitySPV.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.entity.qic; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntitySPV extends Entity { - - public EntitySPV(World p_i1582_1_) { - super(p_i1582_1_); - this.setSize(0.5F, 0.5F); - } - - @Override - protected void entityInit() { } - - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } - - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } - - @Override - public void onUpdate() { - - if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase && ((EntityLivingBase)this.riddenByEntity).moveForward != 0) { - EntityLivingBase riding = (EntityLivingBase) this.riddenByEntity; - Vec3 vec = riding.getLookVec(); - this.motionX = vec.xCoord * riding.moveForward * 0.25D; - this.motionY = vec.yCoord * riding.moveForward * 0.25D; - this.motionZ = vec.zCoord * riding.moveForward * 0.25D; - - } else if(this.riddenByEntity == null) { - this.motionY -= 0.01D; - - if(this.onGround) { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - } else { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - //this.setPositionAndRotation(this.posX + motionX, this.posY + motionY, this.posZ + motionZ, this.rotationYaw, this.rotationPitch); - - super.onUpdate(); - } - - @Override - public boolean canBeCollidedWith() { - return true; - } - - @Override - public boolean interactFirst(EntityPlayer player) { - if(super.interactFirst(player)) { - return true; - } else if(!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == player)) { - player.mountEntity(this); - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 5e7d9187f..5d67bb325 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -53,6 +53,10 @@ public class FluidTank { public void setTankType(FluidType type) { + if(type == null) { + type = Fluids.NONE; + } + if(this.type == type) return; @@ -85,16 +89,16 @@ public class FluidTank { } //Called on TE update - public void updateTank(TileEntity te) { + @Deprecated public void updateTank(TileEntity te) { updateTank(te, 100); } - public void updateTank(TileEntity te, int range) { + @Deprecated public void updateTank(TileEntity te, int range) { updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId, range); } - public void updateTank(int x, int y, int z, int dim) { + @Deprecated public void updateTank(int x, int y, int z, int dim) { updateTank(x, y, z, dim, 100); } - public void updateTank(int x, int y, int z, int dim, int range) { + @Deprecated public void updateTank(int x, int y, int z, int dim, int range) { PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, range)); } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 665a65372..f6b839d9e 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -114,15 +114,15 @@ public class Mats { public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); @Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index d36b1ad1e..3569d3c52 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -12,6 +12,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCCentrifuge; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.AStack; @@ -140,115 +141,115 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.dust, 1) }); - recipes.put(new OreDictStack("oreCoal"), new ItemStack[] { + recipes.put(new OreDictStack(COAL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLignite"), new ItemStack[] { + recipes.put(new OreDictStack(LIGNITE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreIron"), new ItemStack[] { + recipes.put(new OreDictStack(IRON.ore()), new ItemStack[] { new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreGold"), new ItemStack[] { + recipes.put(new OreDictStack(GOLD.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_gold, 2) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_gold, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreDiamond"), new ItemStack[] { + recipes.put(new OreDictStack(DIAMOND.ore()), new ItemStack[] { new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreEmerald"), new ItemStack[] { + recipes.put(new OreDictStack(EMERALD.ore()), new ItemStack[] { new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreTitanium"), new ItemStack[] { + recipes.put(new OreDictStack(TI.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreQuartz"), new ItemStack[] { + recipes.put(new OreDictStack(NETHERQUARTZ.ore()), new ItemStack[] { new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_lithium_tiny, 1), new ItemStack(Blocks.netherrack, 1) }); - recipes.put(new OreDictStack("oreTungsten"), new ItemStack[] { + recipes.put(new OreDictStack(W.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_tungsten, 2) : new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreCopper"), new ItemStack[] { + recipes.put(new OreDictStack(CU.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_copper, 2) : new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreAluminum"), new ItemStack[] { + recipes.put(new OreDictStack(AL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLead"), new ItemStack[] { + recipes.put(new OreDictStack(PB.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_lead, 2) : new ItemStack(ModItems.powder_lead, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreSchrabidium"), new ItemStack[] { + recipes.put(new OreDictStack(SA326.ore()), new ItemStack[] { new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.nugget_solinium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new ComparableStack(ModBlocks.ore_rare), new ItemStack[] { + recipes.put(new OreDictStack("oreRareEarth"), new ItemStack[] { new ItemStack(ModItems.powder_desh_mix, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("orePlutonium"), new ItemStack[] { + recipes.put(new OreDictStack(PU.ore()), new ItemStack[] { new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.nugget_polonium, 3), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreUranium"), new ItemStack[] { + recipes.put(new OreDictStack(U.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_uranium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_technetium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreThorium"), new ItemStack[] { + recipes.put(new OreDictStack(TH232.ore()), new ItemStack[] { new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_uranium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreBeryllium"), new ItemStack[] { + recipes.put(new OreDictStack(BE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreRedstone"), new ItemStack[] { + recipes.put(new OreDictStack(REDSTONE.ore()), new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), lbs ? new ItemStack(ModItems.ingot_mercury, 3) : new ItemStack(ModItems.ingot_mercury, 1), @@ -260,7 +261,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.powder_niobium, 2), new ItemStack(Blocks.end_stone, 1) }); - recipes.put(new OreDictStack("oreLapis"), new ItemStack[] { + recipes.put(new OreDictStack(LAPIS.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_cobalt_tiny, 1), @@ -284,7 +285,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.ingot_phosphorus), new ItemStack(Blocks.netherrack) }); - recipes.put(new OreDictStack("oreCobalt"), new ItemStack[] { + recipes.put(new OreDictStack(CO.ore()), new ItemStack[] { new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_copper, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index c4930766a..070e9f221 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -140,13 +140,19 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); + /// COMPAT CERTUS QUARTZ /// List quartz = OreDictionary.getOres("crystalCertusQuartz"); - if(quartz != null && !quartz.isEmpty()) { ItemStack qItem = quartz.get(0).copy(); qItem.stackSize = 12; registerRecipe("oreCertusQuartz", new CrystallizerRecipe(qItem, baseTime)); } + + /// COMPAT WHITE PHOSPHORUS DUST /// + List dustWhitePhosphorus = OreDictionary.getOres(P_WHITE.dust()); + if(dustWhitePhosphorus != null && !dustWhitePhosphorus.isEmpty()) { + registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50)); + } if(!IMCCrystallizer.buffer.isEmpty()) { recipes.putAll(IMCCrystallizer.buffer); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java index b5f44ece0..5dd1bef82 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java @@ -36,7 +36,7 @@ public class AnvilSmithingMold extends AnvilSmithingRecipe { for(String otherPrefix : OreNames.prefixes) { if(otherPrefix.length() > matchesPrefix.name.length() && name.startsWith(otherPrefix)) { - continue; //ignore if there's a longer prefix that matches (i.e. a more accurate match) + return false; //ignore if there's a longer prefix that matches (i.e. a more accurate match) } } diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index d56bfa6e9..9eb418a54 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -35,15 +35,15 @@ public class ItemWatzPellet extends ItemEnumMulti { public static enum EnumWatzType { - //TODO: durability SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 10D, new FunctionLogarithmic(10), null, null), HES( 0x66DCD6, 0x023933, 1_500, 10D, null, null, null), LES( 0xABB4A8, 0x0C1105, 500, 10D, null, null, null), MES( 0xCBEADF, 0x28473C, 1_000, 10D, null, null, null), - NP( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null), + HEN( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null), MEU( 0xC1C7BD, 0x2B3227, 0, 10D, null, null, null), MEP( 0x9AA3A0, 0x111A17, 0, 10D, null, null, null), LEAD( 0xA6A6B2, 0x03030F, 0, 0, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient + BORON( 0xBDC8D2, 0x29343E, 0, 0, null, null, new FunctionLinear(10)), //improved absorber, linear DU( 0xC1C7BD, 0x2B3227, 0, 0, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)); //absorber with positive coefficient public double yield = 1_000_000_000; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 6c4ea730a..97b5d0d1f 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -48,6 +48,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -332,7 +333,9 @@ public class ClientProxy extends ServerProxy { //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); + //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()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 88ff8c69f..9c4e51884 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -214,6 +214,7 @@ public class ResourceManager { //Watz public static final IModelCustom watz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/watz.obj")); + public static final IModelCustom watz_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/watz_pump.obj")); //FENSU public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")); @@ -561,6 +562,7 @@ public class ResourceManager { //Watz public static final ResourceLocation watz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz.png"); + public static final ResourceLocation watz_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz_pump.png"); //FENSU public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png"); diff --git a/src/main/java/com/hbm/packet/TEFluidPacket.java b/src/main/java/com/hbm/packet/TEFluidPacket.java index 078729c9f..49338eab5 100644 --- a/src/main/java/com/hbm/packet/TEFluidPacket.java +++ b/src/main/java/com/hbm/packet/TEFluidPacket.java @@ -11,6 +11,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; +@Deprecated public class TEFluidPacket implements IMessage { int x; diff --git a/src/main/java/com/hbm/particle/psys/engine/PSysFX.java b/src/main/java/com/hbm/particle/psys/engine/PSysFX.java index 4abb6412c..685f17835 100644 --- a/src/main/java/com/hbm/particle/psys/engine/PSysFX.java +++ b/src/main/java/com/hbm/particle/psys/engine/PSysFX.java @@ -2,6 +2,7 @@ package com.hbm.particle.psys.engine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; /** @@ -10,7 +11,7 @@ import net.minecraft.world.World; * @author hbm */ @SideOnly(Side.CLIENT) -public class PSysFX { +public abstract class PSysFX { public World world; public double posX; @@ -19,14 +20,62 @@ public class PSysFX { public double prevPosX; public double prevPosY; public double prevPosZ; - public double motionX; - public double motionY; - public double motionZ; public static double interpPosX; public static double interpPosY; public static double interpPosZ; - - public PSysFX() { + public AxisAlignedBB boundingBox; + public int particleAge; + public int particleMaxAge; + public boolean isExpired = false; + public boolean shouldExpireWhenUnloaded = true; + public boolean isUnloaded = false; + + public PSysFX(World world, double x, double y, double z) { + this.world = world; + this.posX = x; + this.posY = y; + this.posZ = z; + } + + public void updateParticle() { + this.prevPosX = posX; + this.prevPosY = posY; + this.prevPosZ = posZ; + this.isUnloaded = !world.getChunkProvider().chunkExists((int) Math.floor(posX) >> 4, (int) Math.floor(posZ) >> 4); + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.expire(); + } + + if(this.shouldExpireWhenUnloaded && this.isUnloaded) { + this.expire(); + } + } + + public abstract void renderParticle(); + + public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + } + + public void setBoundingBox(AxisAlignedBB bb) { + this.boundingBox = bb; + } + + protected void setPosToAABB() { + AxisAlignedBB aabb = this.getBoundingBox(); + this.posX = (aabb.minX + aabb.maxX) / 2.0D; + this.posY = aabb.minY; + this.posZ = (aabb.minZ + aabb.maxZ) / 2.0D; + } + + public void expire() { + this.isExpired = true; + } + + public void setExpireOnUnload(boolean expire) { + this.shouldExpireWhenUnloaded = expire; } } diff --git a/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java b/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java new file mode 100644 index 000000000..9922b3575 --- /dev/null +++ b/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java @@ -0,0 +1,87 @@ +package com.hbm.particle.psys.engine; + +import java.util.List; + +import com.hbm.lib.Library; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public abstract class PSysFXMoving extends PSysFX { + + public double motionX; + public double motionY; + public double motionZ; + boolean noClip = false; + /* using the forgedirection's ordinal as an index, this tells us what side of a block the particle has collided with */ + public boolean collisionData[] = new boolean[6]; + + public PSysFXMoving(World world, double x, double y, double z, double mX, double mY, double mZ) { + super(world, x, y, z); + this.motionX = mX; + this.motionY = mY; + this.motionZ = mZ; + } + + public double getParticleGravity() { + return 0.04D; + } + + public double getParticleDrag() { + return 0.98D; + } + + public void updateParticle() { + super.updateParticle(); + + if(!this.isUnloaded) { + this.motionX -= this.getParticleGravity(); + this.motionX *= this.getParticleDrag(); + this.motionY *= this.getParticleDrag(); + this.motionZ *= this.getParticleDrag(); + + this.move(motionX, motionY, motionZ); + } + } + + public void move(double x, double y, double z) { + + double x0 = x; + double y0 = y; + double z0 = z; + + this.collisionData = new boolean[6]; + + if(!noClip) { + List list = this.world.getCollidingBoundingBoxes(null, this.getBoundingBox().expand(x, y, z)); + + for(AxisAlignedBB aabb : list) y = aabb.calculateYOffset(this.getBoundingBox(), y); + this.setBoundingBox(this.getBoundingBox().offset(0.0D, y, 0.0D)); + + for(AxisAlignedBB aabb : list) x = aabb.calculateXOffset(this.getBoundingBox(), x); + this.setBoundingBox(this.getBoundingBox().offset(x, 0.0D, 0.0D)); + + for(AxisAlignedBB aabb : list) z = aabb.calculateZOffset(this.getBoundingBox(), z); + this.setBoundingBox(this.getBoundingBox().offset(0.0D, 0.0D, z)); + + } else { + this.setBoundingBox(this.getBoundingBox().offset(x, y, z)); + } + + this.setPosToAABB(); + + if(x0 != x && x > 0) this.collisionData[Library.NEG_X.ordinal()] = true; + if(x0 != x && x < 0) this.collisionData[Library.POS_X.ordinal()] = true; + if(y0 != y && y > 0) this.collisionData[Library.NEG_Y.ordinal()] = true; + if(y0 != y && y < 0) this.collisionData[Library.POS_Y.ordinal()] = true; + if(z0 != z && z > 0) this.collisionData[Library.NEG_Z.ordinal()] = true; + if(z0 != z && z < 0) this.collisionData[Library.POS_Z.ordinal()] = true; + + if(x0 != x) this.motionX = 0.0D; + if(y0 != y) this.motionY = 0.0D; + if(z0 != z) this.motionZ = 0.0D; + } +} diff --git a/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java b/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java index 6c46b7b19..8f2742ad3 100644 --- a/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java +++ b/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java @@ -29,17 +29,17 @@ public class ParticleEngine { } public void updateParticles() { - + for(FXLayer layer : layers) layer.updateLayer(); } public void renderParticles(float interp) { - + for(FXLayer layer : layers) layer.renderLayer(interp); } public static class FXLayer { protected ResourceLocation batchTexture; - protected List particles; + protected List particles; public FXLayer() { } @@ -51,7 +51,7 @@ public class ParticleEngine { } - protected void renderLayer() { + protected void renderLayer(float interp) { } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatz.java b/src/main/java/com/hbm/render/tileentity/RenderWatz.java index b37cf2761..4fae3299a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderWatz.java +++ b/src/main/java/com/hbm/render/tileentity/RenderWatz.java @@ -26,5 +26,4 @@ public class RenderWatz extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java b/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java new file mode 100644 index 000000000..4b19cddee --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java @@ -0,0 +1,29 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderWatzPump extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + + GL11.glTranslatef((float) x + 0.5F, (float) y, (float) z + 0.5F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.watz_pump_tex); + ResourceManager.watz_pump.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 6692e9749..b6c1cbe30 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -12,6 +12,7 @@ import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -183,7 +184,6 @@ public class TileMappings { put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityPipePaintable.class, "tileentity_pipe_paintable"); put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); - put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); @@ -306,6 +306,9 @@ public class TileMappings { put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); + + put(TileEntityWatz.class, "tileentity_watz"); + put(TileEntityWatzPump.class, "tileentity_watz_pump"); } private static void putPile() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 9204a1dbd..69a0122e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -145,23 +145,11 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB if(recipe == null) return false; - if(recipe.input1 != null) { - - if(recipe.input1.type != tanks[0].getTankType()) { - tanks[0].setTankType(recipe.input1.type); - } - - if(tanks[0].getFill() < recipe.input1.fill) return false; - } - - if(recipe.input2 != null) { - - if(recipe.input2.type != tanks[1].getTankType()) { - tanks[1].setTankType(recipe.input2.type); - } - - if(tanks[1].getFill() < recipe.input2.fill) return false; - } + tanks[0].setTankType(recipe.input1.type); + tanks[1].setTankType(recipe.input2.type); + + if(recipe.input1 != null && tanks[0].getFill() < recipe.input1.fill) return false; + if(recipe.input2 != null && tanks[1].getFill() < recipe.input2.fill) return false; /* simplest check would usually go first, but fluid checks also do the setup and we want that to happen even without power */ if(this.power < getConsumption()) return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index f5e8f68de..b66e14d9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerWatz; import com.hbm.inventory.fluid.Fluids; @@ -64,6 +65,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand if(!worldObj.isRemote && !updateLock()) { + boolean turnedOn = worldObj.getBlock(xCoord, yCoord + 3, zCoord) == ModBlocks.watz_pump && worldObj.getIndirectPowerLevelTo(xCoord, yCoord + 5, zCoord, 0) > 0; List segments = new ArrayList(); segments.add(this); this.subscribeToTop(); @@ -97,11 +99,11 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } /* update reaction, top to bottom */ - this.updateReaction(null, sharedTanks); + this.updateReaction(null, sharedTanks, turnedOn); for(int i = 1; i < segments.size(); i++) { TileEntityWatz segment = segments.get(i); TileEntityWatz above = segments.get(i - 1); - segment.updateReaction(above, sharedTanks); + segment.updateReaction(above, sharedTanks, turnedOn); } /* re-distribute fluid from shared tanks back into actual tanks, bottom to top */ @@ -153,57 +155,64 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } /** enforces strict top to bottom update order (instead of semi-random based on placement) */ - public void updateReaction(TileEntityWatz above, FluidTank[] tanks) { + public void updateReaction(TileEntityWatz above, FluidTank[] tanks, boolean turnedOn) { - List pellets = new ArrayList(); - - for(int i = 0; i < 24; i++) { - ItemStack stack = slots[i]; - if(stack != null && stack.getItem() == ModItems.watz_pellet) { - pellets.add(stack); - } - } - - double baseFlux = 0D; - - /* init base flux */ - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - baseFlux += type.passive; - } - - double inputFlux = baseFlux + fluxLastReaction; - double addedFlux = 0D; - double addedHeat = 0D; - - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function burnFunc = type.burnFunc; - Function heatMod = type.heatMult; + if(turnedOn) { + List pellets = new ArrayList(); - if(burnFunc != null) { - double mod = heatMod != null ? heatMod.effonix(heat) : 1D; - double burn = burnFunc.effonix(inputFlux) * mod; - ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); - addedFlux += burn; - addedHeat += type.heatEmission * burn; - tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + for(int i = 0; i < 24; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.watz_pellet) { + pellets.add(stack); + } } - } - - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function absorbFunc = type.absorbFunc; - if(absorbFunc != null) { - addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); + double baseFlux = 0D; + + /* init base flux */ + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + baseFlux += type.passive; } + + double inputFlux = baseFlux + fluxLastReaction; + double addedFlux = 0D; + double addedHeat = 0D; + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function burnFunc = type.burnFunc; + Function heatMod = type.heatMult; + + if(burnFunc != null) { + double mod = heatMod != null ? heatMod.effonix(heat) : 1D; + double burn = burnFunc.effonix(inputFlux) * mod; + ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); + addedFlux += burn; + addedHeat += type.heatEmission * burn; + tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + } + } + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function absorbFunc = type.absorbFunc; + + if(absorbFunc != null) { + addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); + } + } + + this.heat += addedHeat; + this.fluxLastBase = baseFlux; + this.fluxLastReaction = addedFlux; + + } else { + this.fluxLastBase = 0; + this.fluxLastReaction = 0; + } - this.heat += addedHeat; - this.fluxLastBase = baseFlux; - this.fluxLastReaction = addedFlux; - if(above != null) { for(int i = 0; i < 24; i++) { ItemStack stackBottom = slots[i]; @@ -307,7 +316,9 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - return stack.getItem() == ModItems.watz_pellet; + if(stack.getItem() != ModItems.watz_pellet) return false; + if(!this.isLocked) return true; + return this.locks[i] != null && this.locks[i].getItem() == stack.getItem() && locks[i].getItemDamage() == stack.getItemDamage(); } @Override diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java index 5e50efd0d..b8f29cf41 100644 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ b/src/main/java/com/hbm/world/feature/DeepLayer.java @@ -19,15 +19,13 @@ public class DeepLayer { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; + if(world.provider == null || world.provider.dimensionId != 0) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 19), 4); } - - World world = event.world; - - if(world.provider.dimensionId != 0) - return; int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 2be6aa77a..eed1cdfdc 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -73,17 +73,14 @@ public class OreCave { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { - if(event.world.provider.dimensionId != this.dim) return; + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 2); } - World world = event.world; - - if(world.provider.dimensionId != 0) - return; - int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java index 85b051525..b0411b147 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer.java +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -67,17 +67,14 @@ public class OreLayer { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { - if(event.world.provider.dimensionId != this.dim) return; + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 4); } - World world = event.world; - - if(world.provider.dimensionId != 0) - return; - int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 6c7f97da2..67fecb388 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -33,17 +33,14 @@ public class OreLayer3D { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; - if(event.world.provider.dimensionId != this.dim) return; + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noiseX == null) this.noiseX = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 101), 4); if(this.noiseY == null) this.noiseY = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 102), 4); if(this.noiseZ == null) this.noiseZ = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 103), 4); - - World world = event.world; - - if(world.provider.dimensionId != 0) - return; int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/SchistStratum.java b/src/main/java/com/hbm/world/feature/SchistStratum.java index d0fd94bb4..f16f4b93a 100644 --- a/src/main/java/com/hbm/world/feature/SchistStratum.java +++ b/src/main/java/com/hbm/world/feature/SchistStratum.java @@ -24,7 +24,7 @@ public class SchistStratum { World world = event.world; - if(world.provider.dimensionId != 0) + if(world.provider == null || world.provider.dimensionId != 0) return; int cX = event.chunkX; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f49aec1bb..fb18572e7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3226,6 +3226,26 @@ item.waste_u235.name=Erschöpfter Uran-235-Kernbrennstoff item.waste_u233.name=Erschöpfter Uran-233-Kernbrennstoff item.waste_uranium.name=Erschöpfter Urankernbrennstoff item.watch.name=Zerbrochene Taschenuhr +item.watz_pellet.boron=Bor-Absorberpellet +item.watz_pellet.du=Abgereichertes Uran-Absorberpellet +item.watz_pellet.hes=HES-Watzpellet +item.watz_pellet.lead=Blei-Absorberpellet +item.watz_pellet.les=LES-Watzpellet +item.watz_pellet.mes=MES-Watzpellet +item.watz_pellet.mep=MEP-Watzpellet +item.watz_pellet.meu=MEU-Watzpellet +item.watz_pellet.hen=HEN-Watzpellet +item.watz_pellet.schrabidium=Schrabidium-Watzpellet +item.watz_pellet_depleted.boron=Bor-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.du=Abgereichertes Uran-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.hes=HES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.lead=Blei-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.les=LES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.mes=MES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.mep=MEP-Watzpellet (Erschöpft) +item.watz_pellet_depleted.meu=MEU-Watzpellet (Erschöpft) +item.watz_pellet_depleted.hen=HEN-Watzpellet (Erschöpft) +item.watz_pellet_depleted.schrabidium=Schrabidium-Watzpellet (Erschöpft) item.weapon_bat.name=Richards Standard item.weapon_bat_nail.name=Das Klischee item.weapon_golf_club.name=Schläger des russischen Mafiosos diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b0c7451dc..d163eeec3 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4018,6 +4018,26 @@ item.waste_uranium.name=Depleted Uranium Fuel item.waste_zfb_mox.name=Depleted ZFB MOX Fuel item.watch.name=Broken Pocket Watch item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. +item.watz_pellet.boron=Boron Absorber Pellet +item.watz_pellet.du=Depleted Uranium Absorber Pellet +item.watz_pellet.hes=HES Watz Pellet +item.watz_pellet.lead=Lead Absorber Pellet +item.watz_pellet.les=LES Watz Pellet +item.watz_pellet.mes=MES Watz Pellet +item.watz_pellet.mep=MEP Watz Pellet +item.watz_pellet.meu=MEU Watz Pellet +item.watz_pellet.hen=HEN Watz Pellet +item.watz_pellet.schrabidium=Schrabidium Watz Pellet +item.watz_pellet_depleted.boron=Boron Absorber Pellet (Depleted) +item.watz_pellet_depleted.du=Depleted Uranium Absorber Pellet (Depleted) +item.watz_pellet_depleted.hes=HES Watz Pellet (Depleted) +item.watz_pellet_depleted.lead=Lead Absorber Pellet (Depleted) +item.watz_pellet_depleted.les=LES Watz Pellet (Depleted) +item.watz_pellet_depleted.mes=MES Watz Pellet (Depleted) +item.watz_pellet_depleted.mep=MEP Watz Pellet (Depleted) +item.watz_pellet_depleted.meu=MEU Watz Pellet (Depleted) +item.watz_pellet_depleted.hen=HEN Watz Pellet (Depleted) +item.watz_pellet_depleted.schrabidium=Schrabidium Watz Pellet (Depleted) item.weapon_bat.name=Richard's Default item.weapon_bat_nail.name=The Cliché item.weapon_golf_club.name=Russian Mobster's Club diff --git a/src/main/resources/assets/hbm/models/machines/watz_pump.obj b/src/main/resources/assets/hbm/models/machines/watz_pump.obj new file mode 100644 index 000000000..e259e6ee0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/watz_pump.obj @@ -0,0 +1,1647 @@ +# Blender v2.79 (sub 0) OBJ File: 'watz_pump.blend' +# www.blender.org +o Plane +v -0.500000 0.000000 -0.375000 +v -0.500000 0.000000 0.375000 +v 0.375000 0.000000 0.500000 +v -0.375000 0.000000 0.500000 +v -0.375000 0.000000 1.500000 +v 0.375000 0.000000 1.500000 +v -0.375000 0.000000 -1.500000 +v 0.375000 0.000000 -1.500000 +v -1.500000 0.000000 0.375000 +v 1.500000 0.000000 0.375000 +v -1.500000 0.000000 -0.375000 +v 1.500000 0.000000 -0.375000 +v -0.375000 0.000000 -0.500000 +v 0.375000 0.000000 -0.500000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.000000 -0.375000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.375000 0.250000 1.500000 +v 0.375000 0.250000 1.500000 +v -0.375000 0.250000 -1.500000 +v 0.375000 0.250000 -1.500000 +v -1.500000 0.250000 0.375000 +v 1.500000 0.250000 0.375000 +v -1.500000 0.250000 -0.375000 +v 1.500000 0.250000 -0.375000 +v -0.375000 0.500000 0.500000 +v 0.375000 0.500000 0.500000 +v -0.375000 0.500000 -0.500000 +v 0.375000 0.500000 -0.500000 +v -0.500000 0.500000 0.375000 +v 0.500000 0.500000 0.375000 +v -0.500000 0.500000 -0.375000 +v 0.500000 0.500000 -0.375000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v -0.375000 1.500000 0.500000 +v 0.375000 1.500000 0.500000 +v -0.375000 1.500000 -0.500000 +v 0.375000 1.500000 -0.500000 +v -0.500000 1.500000 0.375000 +v 0.500000 1.500000 0.375000 +v -0.500000 1.500000 -0.375000 +v 0.500000 1.500000 -0.375000 +v -0.250000 1.750000 0.250000 +v 0.250000 1.750000 0.250000 +v -0.250000 1.750000 -0.250000 +v 0.250000 1.750000 -0.250000 +v -0.250000 2.000000 -0.250000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v 0.250000 2.000000 -0.250000 +v 0.099111 1.161611 -0.500000 +v 0.062500 1.250000 -0.500000 +v 0.099111 1.338388 -0.500000 +v 0.187500 1.374999 -0.500000 +v 0.275888 1.338388 -0.500000 +v 0.312500 1.250000 -0.500000 +v 0.275888 1.161611 -0.500000 +v 0.187500 1.125000 -0.500000 +v 0.099111 1.161611 -0.875000 +v 0.062500 1.250000 -0.875000 +v 0.099111 1.338388 -0.875000 +v 0.187500 1.374999 -0.875000 +v 0.275888 1.338388 -0.875000 +v 0.312500 1.250000 -0.875000 +v 0.275888 1.161611 -0.875000 +v 0.099111 1.150888 -0.900888 +v 0.062500 1.213388 -0.963388 +v 0.099111 1.275888 -1.025888 +v 0.187500 1.301776 -1.051777 +v 0.275888 1.275888 -1.025888 +v 0.312500 1.213388 -0.963388 +v 0.275888 1.150888 -0.900888 +v 0.099111 1.125000 -0.911612 +v 0.062500 1.125000 -1.000000 +v 0.099111 1.125000 -1.088388 +v 0.187500 1.125000 -1.125000 +v 0.275888 1.125000 -1.088388 +v 0.312500 1.125000 -1.000000 +v 0.275888 1.125000 -0.911612 +v 0.187500 1.125000 -0.875000 +v 0.099111 0.250000 -0.911612 +v 0.062500 0.250000 -1.000000 +v 0.099111 0.250000 -1.088388 +v 0.187500 0.250000 -1.125000 +v 0.275888 0.250000 -1.088388 +v 0.312500 0.250000 -1.000000 +v 0.275888 0.250000 -0.911612 +v 0.187500 0.250000 -0.875000 +v 0.275889 1.161611 0.500000 +v 0.312500 1.250000 0.500000 +v 0.275889 1.338388 0.500000 +v 0.187500 1.374999 0.500000 +v 0.099112 1.338388 0.500000 +v 0.062500 1.250000 0.500000 +v 0.099112 1.161611 0.500000 +v 0.187500 1.125000 0.500000 +v 0.275889 1.161611 0.875000 +v 0.312500 1.250000 0.875000 +v 0.275889 1.338388 0.875000 +v 0.187500 1.374999 0.875000 +v 0.099112 1.338388 0.875000 +v 0.062500 1.250000 0.875000 +v 0.099112 1.161611 0.875000 +v 0.275889 1.150888 0.900888 +v 0.312500 1.213388 0.963388 +v 0.275889 1.275888 1.025888 +v 0.187500 1.301776 1.051777 +v 0.099112 1.275888 1.025888 +v 0.062500 1.213388 0.963388 +v 0.099112 1.150888 0.900888 +v 0.275889 1.125000 0.911612 +v 0.312500 1.125000 1.000000 +v 0.275889 1.125000 1.088388 +v 0.187500 1.125000 1.125000 +v 0.099112 1.125000 1.088388 +v 0.062500 1.125000 1.000000 +v 0.099112 1.125000 0.911612 +v 0.187500 1.125000 0.875000 +v 0.275889 0.250000 0.911612 +v 0.312500 0.250000 1.000000 +v 0.275889 0.250000 1.088388 +v 0.187500 0.250000 1.125000 +v 0.099112 0.250000 1.088388 +v 0.062500 0.250000 1.000000 +v 0.099112 0.250000 0.911612 +v 0.187500 0.250000 0.875000 +v -0.187500 0.250000 -0.875000 +v -0.099112 0.250000 -0.911612 +v -0.062500 0.250000 -1.000000 +v -0.099112 0.250000 -1.088388 +v -0.187500 0.250000 -1.125000 +v -0.275889 0.250000 -1.088388 +v -0.312500 0.250000 -1.000000 +v -0.275889 0.250000 -0.911612 +v -0.187500 1.125000 -0.875000 +v -0.099112 1.125000 -0.911612 +v -0.062500 1.125000 -1.000000 +v -0.099112 1.125000 -1.088388 +v -0.187500 1.125000 -1.125000 +v -0.275889 1.125000 -1.088388 +v -0.312500 1.125000 -1.000000 +v -0.275889 1.125000 -0.911612 +v -0.099112 1.150888 -0.900888 +v -0.062500 1.213388 -0.963388 +v -0.099112 1.275888 -1.025888 +v -0.187500 1.301776 -1.051777 +v -0.275889 1.275888 -1.025888 +v -0.312500 1.213388 -0.963388 +v -0.275889 1.150888 -0.900888 +v -0.099112 1.161611 -0.875000 +v -0.062500 1.250000 -0.875000 +v -0.099112 1.338388 -0.875000 +v -0.187500 1.374999 -0.875000 +v -0.275889 1.338388 -0.875000 +v -0.312500 1.250000 -0.875000 +v -0.275889 1.161611 -0.875000 +v -0.187500 1.125000 -0.500000 +v -0.099112 1.161611 -0.500000 +v -0.062500 1.250000 -0.500000 +v -0.099112 1.338388 -0.500000 +v -0.187500 1.374999 -0.500000 +v -0.275889 1.338388 -0.500000 +v -0.312500 1.250000 -0.500000 +v -0.275889 1.161611 -0.500000 +v -0.187500 0.250000 0.875000 +v -0.275888 0.250000 0.911612 +v -0.312500 0.250000 1.000000 +v -0.275888 0.250000 1.088388 +v -0.187500 0.250000 1.125000 +v -0.099111 0.250000 1.088388 +v -0.062500 0.250000 1.000000 +v -0.099111 0.250000 0.911612 +v -0.187500 1.125000 0.875000 +v -0.275888 1.125000 0.911612 +v -0.312500 1.125000 1.000000 +v -0.275888 1.125000 1.088388 +v -0.187500 1.125000 1.125000 +v -0.099111 1.125000 1.088388 +v -0.062500 1.125000 1.000000 +v -0.099111 1.125000 0.911612 +v -0.275888 1.150888 0.900888 +v -0.312500 1.213388 0.963388 +v -0.275888 1.275888 1.025888 +v -0.187500 1.301776 1.051777 +v -0.099111 1.275888 1.025888 +v -0.062500 1.213388 0.963388 +v -0.099111 1.150888 0.900888 +v -0.275888 1.161611 0.875000 +v -0.312500 1.250000 0.875000 +v -0.275888 1.338388 0.875000 +v -0.187500 1.374999 0.875000 +v -0.099111 1.338388 0.875000 +v -0.062500 1.250000 0.875000 +v -0.099111 1.161611 0.875000 +v -0.187500 1.125000 0.500000 +v -0.275888 1.161611 0.500000 +v -0.312500 1.250000 0.500000 +v -0.275888 1.338388 0.500000 +v -0.187500 1.374999 0.500000 +v -0.099111 1.338388 0.500000 +v -0.062500 1.250000 0.500000 +v -0.099111 1.161611 0.500000 +v -0.500000 1.161612 -0.099111 +v -0.500000 1.250000 -0.062500 +v -0.500000 1.338388 -0.099111 +v -0.500000 1.375000 -0.187500 +v -0.500000 1.338388 -0.275888 +v -0.500000 1.250000 -0.312500 +v -0.500000 1.161612 -0.275888 +v -0.500000 1.125000 -0.187500 +v -0.875000 1.161612 -0.099111 +v -0.875000 1.250000 -0.062500 +v -0.875000 1.338388 -0.099111 +v -0.875000 1.375000 -0.187500 +v -0.875000 1.338388 -0.275888 +v -0.875000 1.250000 -0.312500 +v -0.875000 1.161612 -0.275888 +v -0.900888 1.150888 -0.099111 +v -0.963388 1.213388 -0.062500 +v -1.025888 1.275888 -0.099111 +v -1.051777 1.301776 -0.187500 +v -1.025888 1.275888 -0.275888 +v -0.963388 1.213388 -0.312500 +v -0.900888 1.150888 -0.275888 +v -0.911612 1.125000 -0.099111 +v -1.000000 1.125000 -0.062500 +v -1.088388 1.125000 -0.099111 +v -1.125000 1.125000 -0.187500 +v -1.088388 1.125000 -0.275888 +v -1.000000 1.125000 -0.312500 +v -0.911612 1.125000 -0.275888 +v -0.875000 1.125000 -0.187500 +v -0.911612 0.250000 -0.099111 +v -1.000000 0.250000 -0.062500 +v -1.088388 0.250000 -0.099111 +v -1.125000 0.250000 -0.187500 +v -1.088388 0.250000 -0.275888 +v -1.000000 0.250000 -0.312500 +v -0.911612 0.250000 -0.275888 +v -0.875000 0.250000 -0.187500 +v 0.500000 1.161612 -0.275889 +v 0.500000 1.250000 -0.312500 +v 0.500000 1.338388 -0.275889 +v 0.500000 1.375000 -0.187500 +v 0.500000 1.338388 -0.099112 +v 0.500000 1.250000 -0.062500 +v 0.500000 1.161612 -0.099112 +v 0.500000 1.125000 -0.187500 +v 0.875000 1.161612 -0.275889 +v 0.875000 1.250000 -0.312500 +v 0.875000 1.338388 -0.275889 +v 0.875000 1.375000 -0.187500 +v 0.875000 1.338388 -0.099112 +v 0.875000 1.250000 -0.062500 +v 0.875000 1.161612 -0.099112 +v 0.900888 1.150888 -0.275889 +v 0.963388 1.213388 -0.312500 +v 1.025888 1.275888 -0.275889 +v 1.051777 1.301776 -0.187500 +v 1.025888 1.275888 -0.099112 +v 0.963388 1.213388 -0.062500 +v 0.900888 1.150888 -0.099112 +v 0.911612 1.125000 -0.275889 +v 1.000000 1.125000 -0.312500 +v 1.088388 1.125000 -0.275889 +v 1.125000 1.125000 -0.187500 +v 1.088388 1.125000 -0.099112 +v 1.000000 1.125000 -0.062500 +v 0.911612 1.125000 -0.099112 +v 0.875000 1.125000 -0.187500 +v 0.911612 0.250000 -0.275889 +v 1.000000 0.250000 -0.312500 +v 1.088388 0.250000 -0.275889 +v 1.125000 0.250000 -0.187500 +v 1.088388 0.250000 -0.099112 +v 1.000000 0.250000 -0.062500 +v 0.911612 0.250000 -0.099112 +v 0.875000 0.250000 -0.187500 +v -0.875000 0.250000 0.187500 +v -0.911612 0.250000 0.099112 +v -1.000000 0.250000 0.062500 +v -1.088388 0.250000 0.099112 +v -1.125000 0.250000 0.187500 +v -1.088388 0.250000 0.275889 +v -1.000000 0.250000 0.312500 +v -0.911612 0.250000 0.275889 +v -0.875000 1.125000 0.187500 +v -0.911612 1.125000 0.099112 +v -1.000000 1.125000 0.062500 +v -1.088388 1.125000 0.099112 +v -1.125000 1.125000 0.187500 +v -1.088388 1.125000 0.275889 +v -1.000000 1.125000 0.312500 +v -0.911612 1.125000 0.275889 +v -0.900888 1.150888 0.099112 +v -0.963388 1.213388 0.062500 +v -1.025888 1.275888 0.099112 +v -1.051777 1.301776 0.187500 +v -1.025888 1.275888 0.275889 +v -0.963388 1.213388 0.312500 +v -0.900888 1.150888 0.275889 +v -0.875000 1.161612 0.099112 +v -0.875000 1.250000 0.062500 +v -0.875000 1.338388 0.099112 +v -0.875000 1.375000 0.187500 +v -0.875000 1.338388 0.275889 +v -0.875000 1.250000 0.312500 +v -0.875000 1.161612 0.275889 +v -0.500000 1.125000 0.187500 +v -0.500000 1.161612 0.099112 +v -0.500000 1.250000 0.062500 +v -0.500000 1.338388 0.099112 +v -0.500000 1.375000 0.187500 +v -0.500000 1.338388 0.275889 +v -0.500000 1.250000 0.312500 +v -0.500000 1.161612 0.275889 +v 0.875000 0.250000 0.187500 +v 0.911612 0.250000 0.275888 +v 1.000000 0.250000 0.312500 +v 1.088388 0.250000 0.275888 +v 1.125000 0.250000 0.187500 +v 1.088388 0.250000 0.099111 +v 1.000000 0.250000 0.062500 +v 0.911612 0.250000 0.099111 +v 0.875000 1.125000 0.187500 +v 0.911612 1.125000 0.275888 +v 1.000000 1.125000 0.312500 +v 1.088388 1.125000 0.275888 +v 1.125000 1.125000 0.187500 +v 1.088388 1.125000 0.099111 +v 1.000000 1.125000 0.062500 +v 0.911612 1.125000 0.099111 +v 0.900888 1.150888 0.275888 +v 0.963388 1.213388 0.312500 +v 1.025888 1.275888 0.275888 +v 1.051777 1.301776 0.187500 +v 1.025888 1.275888 0.099111 +v 0.963388 1.213388 0.062500 +v 0.900888 1.150888 0.099111 +v 0.875000 1.161612 0.275888 +v 0.875000 1.250000 0.312500 +v 0.875000 1.338388 0.275888 +v 0.875000 1.375000 0.187500 +v 0.875000 1.338388 0.099111 +v 0.875000 1.250000 0.062500 +v 0.875000 1.161612 0.099111 +v 0.500000 1.125000 0.187500 +v 0.500000 1.161612 0.275888 +v 0.500000 1.250000 0.312500 +v 0.500000 1.338388 0.275888 +v 0.500000 1.375000 0.187500 +v 0.500000 1.338388 0.099111 +v 0.500000 1.250000 0.062500 +v 0.500000 1.161612 0.099111 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.148936 0.000000 +vt -0.000000 0.437500 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.702128 -0.000000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.808511 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.829787 0.500000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.808511 1.000000 +vt 0.723404 1.000000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt -0.000000 0.000000 +vt 0.021277 0.000000 +vt -0.000000 0.062500 +vt 0.170213 0.000000 +vt 0.170213 0.062500 +vt 0.170213 0.437500 +vt 0.170213 0.500000 +vt -0.000000 0.500000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.872340 0.625000 +vt 0.893617 0.812500 +vt 0.872340 0.812500 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.625000 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.893617 0.625000 +vt 0.872340 0.812500 +vt 0.872340 0.625000 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.812500 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.531250 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.936170 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.531250 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 0.978723 0.500000 +vt 1.000000 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.812500 +vt 0.893617 0.625000 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.914894 0.812500 +vt 0.872340 0.812500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.500000 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.914894 0.625000 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.872340 0.562500 +vt 1.000000 0.531250 +vt 0.978723 0.531250 +vt 0.829787 0.531250 +vt 0.936170 0.625000 +vt 0.957447 0.812500 +vt 0.936170 0.812500 +vt 0.893617 0.625000 +vt 0.914894 0.812500 +vt 0.893617 0.812500 +vt 0.851064 0.625000 +vt 0.872340 0.812500 +vt 0.851064 0.812500 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.625000 +vt 1.000000 0.812500 +vt 0.978723 0.812500 +vt 0.872340 0.625000 +vt 0.872340 0.625000 +vt 0.893617 0.812500 +vt 0.872340 0.812500 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.625000 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.562500 +vt 0.872340 0.531250 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.593750 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.893617 0.625000 +vt 0.872340 0.812500 +vt 0.872340 0.625000 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.812500 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.936170 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.593750 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.500000 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 1.000000 0.531250 +vt 0.978723 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.625000 +vt 0.914894 0.812500 +vt 0.893617 0.812500 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.872340 0.812500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.531250 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 0.978723 0.500000 +vt 1.000000 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.812500 +vt 0.893617 0.625000 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.914894 0.812500 +vt 0.872340 0.812500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.625000 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.2425 0.9701 0.0000 +vn 0.0000 0.9701 0.2425 +vn 0.2425 0.9701 0.0000 +vn 0.0000 0.9701 -0.2425 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.4851 0.7276 -0.4851 +vn -0.4851 0.7276 0.4851 +vn 0.4851 0.7276 0.4851 +vn 0.4851 0.7276 -0.4851 +vn 0.9987 0.0473 -0.0196 +vn 0.0000 0.9824 -0.1866 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn 0.7263 -0.6737 0.1363 +vn 0.7071 -0.7071 0.0000 +vn 0.6794 0.7194 -0.1447 +vn -0.6794 0.7194 -0.1447 +vn 0.7573 -0.4617 0.4617 +vn 0.7263 -0.1363 0.6737 +vn -0.7573 -0.4617 0.4617 +vn -0.7263 -0.1363 0.6737 +vn 0.9955 0.0670 -0.0670 +vn -0.9955 0.0670 -0.0670 +vn 0.6630 0.5293 -0.5293 +vn -0.6630 0.5293 -0.5293 +vn -0.6794 0.1447 -0.7194 +vn 0.0000 0.1866 -0.9824 +vn -0.9987 0.0196 -0.0473 +vn 0.6794 0.1447 -0.7194 +vn 0.9987 0.0196 -0.0473 +vn -0.6794 0.7194 0.1447 +vn -0.9987 0.0473 0.0196 +vn 0.0000 0.9824 0.1866 +vn 0.0000 -0.7071 -0.7071 +vn 0.7263 -0.6737 -0.1363 +vn 0.9987 0.0473 0.0196 +vn -0.7263 -0.6737 -0.1363 +vn 0.6794 0.7194 0.1447 +vn -0.7573 -0.4617 -0.4617 +vn -0.7263 -0.1363 -0.6737 +vn 0.7573 -0.4617 -0.4617 +vn 0.7263 -0.1363 -0.6737 +vn -0.9955 0.0670 0.0670 +vn 0.9955 0.0670 0.0670 +vn -0.6630 0.5293 0.5293 +vn 0.6630 0.5293 0.5293 +vn 0.0000 0.1866 0.9824 +vn 0.9987 0.0196 0.0473 +vn -0.6794 0.1447 0.7194 +vn 0.6794 0.1447 0.7194 +vn -0.9987 0.0196 0.0473 +vn -0.0196 0.0473 -0.9987 +vn -0.1866 0.9824 0.0000 +vn 0.1363 -0.6737 0.7263 +vn -0.0196 0.0473 0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1447 0.7194 -0.6794 +vn -0.1447 0.7194 0.6794 +vn 0.4617 -0.4617 -0.7573 +vn 0.6737 -0.1363 -0.7263 +vn 0.4617 -0.4617 0.7573 +vn 0.6737 -0.1363 0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.0670 0.0670 -0.9955 +vn -0.0670 0.0670 0.9955 +vn -0.5293 0.5293 0.6630 +vn -0.7194 0.1447 0.6794 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1447 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.1447 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn 0.1866 0.9824 0.0000 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn -0.1363 -0.6737 0.7263 +vn 0.1447 0.7194 -0.6794 +vn -0.4617 -0.4617 0.7573 +vn -0.6737 -0.1363 0.7263 +vn -0.4617 -0.4617 -0.7573 +vn -0.6737 -0.1363 -0.7263 +vn 0.0670 0.0670 0.9955 +vn 0.5293 0.5293 -0.6630 +vn 0.0670 0.0670 -0.9955 +vn 0.5293 0.5293 0.6630 +vn 0.7194 0.1447 -0.6794 +vn 0.9824 0.1866 0.0000 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1447 0.6794 +vn 0.0473 0.0196 0.9987 +s off +f 5/1/1 3/2/1 6/3/1 +f 11/4/1 2/5/1 9/6/1 +f 8/7/1 13/8/1 7/9/1 +f 10/10/1 16/11/1 12/12/1 +f 1/13/1 16/11/1 3/14/1 +f 9/15/2 27/16/2 11/17/2 +f 6/18/3 21/19/3 5/20/3 +f 12/21/4 26/22/4 10/23/4 +f 7/24/5 24/25/5 8/26/5 +f 25/27/6 35/28/6 27/16/6 +f 22/29/7 29/30/7 21/19/7 +f 28/31/8 34/32/8 26/22/8 +f 23/33/9 32/34/9 24/25/9 +f 16/35/5 28/31/5 12/21/5 +f 24/25/4 14/36/4 8/26/4 +f 13/37/2 23/33/2 7/24/2 +f 27/16/5 1/38/5 11/17/5 +f 2/39/3 25/27/3 9/15/3 +f 21/19/2 4/40/2 5/20/2 +f 3/41/4 22/29/4 6/18/4 +f 26/22/3 15/42/3 10/23/3 +f 40/43/4 16/44/4 20/45/4 +f 14/36/5 40/43/5 20/45/5 +f 39/46/5 13/47/5 19/48/5 +f 1/38/2 39/46/2 19/48/2 +f 37/49/2 2/50/2 17/51/2 +f 4/40/3 37/49/3 17/51/3 +f 38/52/3 3/53/3 18/54/3 +f 15/42/4 38/52/4 18/54/4 +f 38/52/10 34/55/10 30/56/10 +f 40/43/10 32/57/10 36/58/10 +f 39/46/10 35/59/10 31/60/10 +f 37/49/10 29/61/10 33/62/10 +f 36/63/4 46/64/4 34/65/4 +f 35/66/11 43/67/11 31/68/11 +f 31/69/5 44/70/5 32/71/5 +f 34/65/12 42/72/12 30/73/12 +f 29/74/13 45/75/13 33/76/13 +f 33/77/2 47/78/2 35/66/2 +f 32/71/14 48/79/14 36/80/14 +f 30/81/3 41/82/3 29/74/3 +f 52/83/4 55/84/4 50/85/4 +f 50/86/15 41/82/15 42/87/15 +f 52/83/16 46/64/16 48/88/16 +f 51/89/17 44/70/17 43/90/17 +f 49/91/18 47/78/18 45/92/18 +f 47/78/19 51/93/19 43/67/19 +f 41/82/20 49/94/20 45/75/20 +f 46/64/21 50/95/21 42/72/21 +f 44/70/22 52/96/22 48/79/22 +f 55/84/10 53/97/10 54/98/10 +f 49/91/2 53/99/2 51/100/2 +f 51/89/5 56/101/5 52/102/5 +f 50/86/3 54/103/3 49/104/3 +f 5/1/1 4/105/1 3/2/1 +f 11/4/1 1/106/1 2/5/1 +f 8/7/1 14/107/1 13/8/1 +f 10/10/1 15/108/1 16/11/1 +f 17/109/1 2/110/1 4/111/1 +f 2/110/1 1/13/1 4/111/1 +f 1/13/1 19/112/1 13/113/1 +f 14/114/1 20/115/1 16/11/1 +f 1/13/1 13/113/1 14/114/1 +f 15/108/1 18/116/1 3/14/1 +f 3/14/1 4/111/1 1/13/1 +f 1/13/1 14/114/1 16/11/1 +f 16/11/1 15/108/1 3/14/1 +f 9/15/2 25/27/2 27/16/2 +f 6/18/3 22/29/3 21/19/3 +f 12/21/4 28/31/4 26/22/4 +f 7/24/5 23/33/5 24/25/5 +f 25/27/6 33/117/6 35/28/6 +f 22/29/7 30/118/7 29/30/7 +f 28/31/8 36/119/8 34/32/8 +f 23/33/9 31/120/9 32/34/9 +f 16/35/5 36/121/5 28/31/5 +f 24/25/4 32/57/4 14/36/4 +f 13/37/2 31/122/2 23/33/2 +f 27/16/5 35/59/5 1/38/5 +f 2/39/3 33/123/3 25/27/3 +f 21/19/2 29/61/2 4/40/2 +f 3/41/4 30/124/4 22/29/4 +f 26/22/3 34/55/3 15/42/3 +f 40/43/4 36/125/4 16/44/4 +f 14/36/5 32/57/5 40/43/5 +f 39/46/5 31/126/5 13/47/5 +f 1/38/2 35/59/2 39/46/2 +f 37/49/2 33/127/2 2/50/2 +f 4/40/3 29/61/3 37/49/3 +f 38/52/3 30/128/3 3/53/3 +f 15/42/4 34/55/4 38/52/4 +f 36/63/4 48/88/4 46/64/4 +f 35/66/11 47/78/11 43/67/11 +f 31/69/5 43/90/5 44/70/5 +f 34/65/12 46/64/12 42/72/12 +f 29/74/13 41/82/13 45/75/13 +f 33/77/2 45/92/2 47/78/2 +f 32/71/14 44/70/14 48/79/14 +f 30/81/3 42/87/3 41/82/3 +f 52/83/4 56/129/4 55/84/4 +f 50/86/15 49/104/15 41/82/15 +f 52/83/16 50/85/16 46/64/16 +f 51/89/17 52/102/17 44/70/17 +f 49/91/18 51/100/18 47/78/18 +f 55/84/10 56/129/10 53/97/10 +f 49/91/2 54/130/2 53/99/2 +f 51/89/5 53/131/5 56/101/5 +f 50/86/3 55/132/3 54/103/3 +s 1 +f 70/133/23 61/134/16 62/135/4 +f 68/136/24 59/137/18 60/138/10 +f 86/139/25 57/140/26 65/141/27 +f 65/141/27 58/142/2 66/143/28 +f 71/144/29 64/145/1 86/146/25 +f 70/133/23 63/147/30 71/144/29 +f 68/136/24 61/134/16 69/148/31 +f 67/149/32 58/142/2 59/137/18 +f 78/150/33 71/151/29 86/152/25 +f 85/153/34 78/150/33 86/152/25 +f 72/154/35 86/155/25 65/156/27 +f 79/157/36 86/155/25 72/154/35 +f 77/158/37 69/159/31 70/160/23 +f 75/161/17 67/162/32 68/136/24 +f 73/163/38 65/156/27 66/164/28 +f 77/158/37 71/151/29 78/150/33 +f 75/161/17 69/159/31 76/165/39 +f 74/166/40 66/164/28 67/162/32 +f 81/167/41 75/161/17 82/168/42 +f 80/169/43 72/154/35 73/163/38 +f 85/153/34 77/158/37 78/150/33 +f 82/168/42 76/165/39 83/170/44 +f 80/169/43 74/166/40 81/167/41 +f 84/171/45 76/165/39 77/158/37 +f 92/172/4 85/173/34 93/174/12 +f 90/175/5 83/176/44 91/177/14 +f 88/178/2 81/179/41 89/180/11 +f 94/181/3 79/182/36 87/183/13 +f 93/174/12 86/184/25 94/185/3 +f 91/177/14 84/186/45 92/172/4 +f 89/180/11 82/168/42 90/175/5 +f 87/183/13 80/187/43 88/178/2 +f 107/188/46 100/189/2 108/190/47 +f 106/191/48 97/192/16 98/193/10 +f 124/194/49 95/195/30 103/196/50 +f 103/196/50 96/197/4 104/198/51 +f 109/199/52 102/200/1 124/201/49 +f 108/190/47 101/202/26 109/199/52 +f 107/188/46 98/193/10 99/203/18 +f 104/198/51 97/192/16 105/204/53 +f 116/205/54 109/206/52 124/207/49 +f 123/208/55 116/205/54 124/207/49 +f 110/209/56 124/210/49 103/211/50 +f 117/212/57 124/210/49 110/209/56 +f 115/213/58 107/214/46 108/215/47 +f 113/216/15 105/217/53 106/191/48 +f 111/218/59 103/211/50 104/219/51 +f 115/213/58 109/206/52 116/205/54 +f 113/216/15 107/214/46 114/220/60 +f 112/221/61 104/219/51 105/217/53 +f 120/222/62 112/221/61 113/216/15 +f 117/212/57 111/218/59 118/223/63 +f 123/208/55 115/213/58 116/205/54 +f 120/222/62 114/220/60 121/224/64 +f 119/225/65 111/218/59 112/221/61 +f 122/226/66 114/220/60 115/213/58 +f 130/227/2 123/228/55 131/229/11 +f 128/230/3 121/231/64 129/232/13 +f 126/233/4 119/234/65 127/235/12 +f 132/236/5 117/237/57 125/238/14 +f 131/229/11 124/239/49 132/240/5 +f 129/232/13 122/241/66 130/227/2 +f 127/235/12 120/222/62 128/230/3 +f 125/238/14 118/242/63 126/233/4 +f 140/243/13 147/244/43 139/245/2 +f 138/246/11 145/247/42 137/248/5 +f 136/249/14 143/250/45 135/251/4 +f 134/252/12 141/253/25 133/254/3 +f 133/255/3 148/256/36 140/243/13 +f 139/245/2 146/257/41 138/246/11 +f 137/248/5 144/258/44 136/249/14 +f 135/251/4 142/259/34 134/252/12 +f 143/260/45 151/261/39 150/262/37 +f 147/263/43 153/264/40 146/265/41 +f 145/247/42 151/261/39 144/266/44 +f 142/267/34 150/262/37 149/268/33 +f 147/263/43 155/269/35 154/270/38 +f 146/265/41 152/271/17 145/247/42 +f 153/264/40 161/272/28 160/273/32 +f 152/271/17 158/274/31 151/261/39 +f 150/262/37 156/275/29 149/268/33 +f 154/270/38 162/276/27 161/272/28 +f 152/271/17 160/273/32 159/277/24 +f 150/262/37 158/274/31 157/278/23 +f 148/279/36 141/280/25 155/269/35 +f 155/269/35 141/280/25 162/276/27 +f 142/267/34 149/268/33 141/281/25 +f 149/268/33 156/275/29 141/281/25 +f 161/282/28 168/283/18 160/284/32 +f 159/277/24 166/285/16 158/286/31 +f 157/287/23 164/288/30 156/289/29 +f 156/289/29 163/290/1 141/291/25 +f 162/292/27 169/293/2 161/282/28 +f 141/294/25 170/295/26 162/292/27 +f 160/284/32 167/296/10 159/277/24 +f 158/286/31 165/297/4 157/287/23 +f 178/298/14 185/299/63 177/300/4 +f 176/301/12 183/302/62 175/303/3 +f 174/304/13 181/305/66 173/306/2 +f 172/307/11 179/308/49 171/309/5 +f 171/310/5 186/311/57 178/298/14 +f 177/300/4 184/312/65 176/301/12 +f 175/303/3 182/313/64 174/304/13 +f 173/306/2 180/314/55 172/307/11 +f 181/315/66 189/316/60 188/317/58 +f 185/318/63 191/319/61 184/320/65 +f 183/302/62 189/316/60 182/321/64 +f 181/315/66 187/322/54 180/323/55 +f 186/324/57 192/325/59 185/318/63 +f 184/320/65 190/326/15 183/302/62 +f 191/319/61 199/327/51 198/328/53 +f 189/316/60 197/329/48 196/330/46 +f 188/317/58 194/331/52 187/322/54 +f 192/325/59 200/332/50 199/327/51 +f 190/326/15 198/328/53 197/329/48 +f 189/316/60 195/333/47 188/317/58 +f 186/324/57 179/334/49 193/335/56 +f 193/335/56 179/334/49 200/332/50 +f 180/323/55 187/322/54 179/336/49 +f 187/322/54 194/331/52 179/336/49 +f 198/337/53 207/338/4 206/339/16 +f 196/340/46 205/341/10 204/342/18 +f 194/343/52 203/344/2 202/345/26 +f 194/343/52 201/346/1 179/347/49 +f 200/348/50 207/338/4 199/349/51 +f 200/348/50 201/350/1 208/351/30 +f 198/337/53 205/341/10 197/329/48 +f 196/340/46 203/344/2 195/352/47 +f 222/353/67 213/354/17 214/355/5 +f 220/356/68 211/357/15 212/358/10 +f 238/359/30 209/360/25 217/361/69 +f 217/361/69 210/362/3 218/363/70 +f 223/364/71 216/365/1 238/366/30 +f 222/353/67 215/367/49 223/364/71 +f 221/368/72 212/358/10 213/354/17 +f 219/369/73 210/362/3 211/357/15 +f 230/370/74 223/371/71 238/372/30 +f 237/373/75 230/370/74 238/372/30 +f 224/374/76 238/375/30 217/376/69 +f 231/377/77 238/375/30 224/374/76 +f 228/378/78 222/379/67 229/380/79 +f 227/381/18 219/382/73 220/356/68 +f 225/383/80 217/376/69 218/384/70 +f 229/380/79 223/371/71 230/370/74 +f 227/381/18 221/385/72 228/378/78 +f 226/386/81 218/384/70 219/382/73 +f 233/387/82 227/381/18 234/388/83 +f 231/377/77 225/383/80 232/389/84 +f 237/373/75 229/380/79 230/370/74 +f 234/388/83 228/378/78 235/390/85 +f 232/389/84 226/386/81 233/387/82 +f 236/391/86 228/378/78 229/380/79 +f 244/392/5 237/393/75 245/394/14 +f 242/395/2 235/396/85 243/397/11 +f 240/398/3 233/399/82 241/400/13 +f 246/401/4 231/402/77 239/403/12 +f 245/394/14 238/404/30 246/405/4 +f 243/397/11 236/406/86 244/392/5 +f 241/400/13 234/388/83 242/395/2 +f 239/403/12 232/407/84 240/398/3 +f 259/408/87 252/409/3 260/410/88 +f 258/411/89 249/412/17 250/413/10 +f 276/414/26 247/415/49 255/416/90 +f 255/416/90 248/417/5 256/418/91 +f 261/419/92 254/420/1 276/421/26 +f 260/410/88 253/422/25 261/419/92 +f 259/408/87 250/413/10 251/423/15 +f 256/418/91 249/412/17 257/424/93 +f 268/425/94 261/426/92 276/427/26 +f 275/428/95 268/425/94 276/427/26 +f 262/429/96 276/430/26 255/431/90 +f 269/432/97 276/430/26 262/429/96 +f 267/433/98 259/434/87 260/435/88 +f 264/436/99 258/411/89 265/437/16 +f 263/438/100 255/431/90 256/439/91 +f 267/433/98 261/426/92 268/425/94 +f 266/440/101 258/411/89 259/434/87 +f 264/436/99 256/439/91 257/441/93 +f 271/442/102 265/437/16 272/443/103 +f 270/444/104 262/429/96 263/438/100 +f 275/428/95 267/433/98 268/425/94 +f 272/443/103 266/440/101 273/445/105 +f 270/444/104 264/436/99 271/442/102 +f 274/446/106 266/440/101 267/433/98 +f 282/447/3 275/448/95 283/449/13 +f 280/450/4 273/451/105 281/452/12 +f 278/453/5 271/454/102 279/455/14 +f 284/456/2 269/457/97 277/458/11 +f 283/449/13 276/459/26 284/460/2 +f 281/452/12 274/461/106 282/447/3 +f 279/455/14 272/443/103 280/450/4 +f 277/458/11 270/462/104 278/453/5 +f 292/463/12 299/464/84 291/465/3 +f 290/466/13 297/467/83 289/468/2 +f 288/469/11 295/470/86 287/471/5 +f 286/472/14 293/473/30 285/474/4 +f 285/475/4 300/476/77 292/463/12 +f 291/465/3 298/477/82 290/466/13 +f 289/468/2 296/478/85 288/469/11 +f 287/471/5 294/479/75 286/472/14 +f 295/480/86 303/481/78 302/482/79 +f 299/483/84 305/484/81 298/485/82 +f 297/467/83 303/481/78 296/486/85 +f 294/487/75 302/482/79 301/488/74 +f 300/489/77 306/490/80 299/483/84 +f 297/467/83 305/484/81 304/491/18 +f 305/484/81 313/492/70 312/493/73 +f 304/491/18 310/494/72 303/481/78 +f 302/482/79 308/495/71 301/488/74 +f 306/490/80 314/496/69 313/492/70 +f 305/484/81 311/497/68 304/491/18 +f 303/481/78 309/498/67 302/482/79 +f 300/489/77 293/499/30 307/500/76 +f 307/500/76 293/499/30 314/496/69 +f 294/487/75 301/488/74 293/501/30 +f 301/488/74 308/495/71 293/501/30 +f 313/502/70 320/503/15 312/504/73 +f 310/505/72 319/506/10 318/507/17 +f 309/508/67 316/509/49 308/510/71 +f 308/510/71 315/511/1 293/512/30 +f 314/513/69 321/514/3 313/502/70 +f 293/515/30 322/516/25 314/513/69 +f 311/497/68 320/503/15 319/506/10 +f 310/505/72 317/517/5 309/508/67 +f 330/518/11 337/519/104 329/520/5 +f 328/521/14 335/522/103 327/523/4 +f 326/524/12 333/525/106 325/526/3 +f 324/527/13 331/528/26 323/529/2 +f 323/530/2 338/531/97 330/518/11 +f 329/520/5 336/532/102 328/521/14 +f 327/523/4 334/533/105 326/524/12 +f 325/526/3 332/534/95 324/527/13 +f 333/535/106 341/536/101 340/537/98 +f 337/538/104 343/539/99 336/540/102 +f 335/522/103 341/536/101 334/541/105 +f 332/542/95 340/537/98 339/543/94 +f 337/538/104 345/544/96 344/545/100 +f 336/540/102 342/546/16 335/522/103 +f 343/539/99 351/547/91 350/548/93 +f 342/546/16 348/549/87 341/536/101 +f 340/537/98 346/550/92 339/543/94 +f 344/545/100 352/551/90 351/547/91 +f 343/539/99 349/552/89 342/546/16 +f 340/537/98 348/549/87 347/553/88 +f 338/554/97 331/555/26 345/544/96 +f 345/544/96 331/555/26 352/551/90 +f 332/542/95 339/543/94 331/556/26 +f 339/543/94 346/550/92 331/556/26 +f 351/557/91 358/558/17 350/559/93 +f 349/552/89 356/560/15 348/561/87 +f 347/562/88 354/563/25 346/564/92 +f 346/564/92 353/565/1 331/566/26 +f 352/567/90 359/568/5 351/557/91 +f 331/569/26 360/570/49 352/567/90 +f 349/552/89 358/558/17 357/571/10 +f 348/561/87 355/572/3 347/562/88 +f 70/133/23 69/148/31 61/134/16 +f 68/136/24 67/149/32 59/137/18 +f 86/139/25 64/573/1 57/140/26 +f 65/141/27 57/140/26 58/142/2 +f 71/144/29 63/147/30 64/145/1 +f 70/133/23 62/135/4 63/147/30 +f 68/136/24 60/138/10 61/134/16 +f 67/149/32 66/143/28 58/142/2 +f 77/158/37 76/165/39 69/159/31 +f 75/161/17 74/166/40 67/162/32 +f 73/163/38 72/154/35 65/156/27 +f 77/158/37 70/160/23 71/151/29 +f 75/161/17 68/136/24 69/159/31 +f 74/166/40 73/163/38 66/164/28 +f 81/167/41 74/166/40 75/161/17 +f 80/169/43 79/157/36 72/154/35 +f 85/153/34 84/171/45 77/158/37 +f 82/168/42 75/161/17 76/165/39 +f 80/169/43 73/163/38 74/166/40 +f 84/171/45 83/170/44 76/165/39 +f 92/172/4 84/186/45 85/173/34 +f 90/175/5 82/168/42 83/176/44 +f 88/178/2 80/187/43 81/179/41 +f 94/181/3 86/574/25 79/182/36 +f 93/174/12 85/173/34 86/184/25 +f 91/177/14 83/176/44 84/186/45 +f 89/180/11 81/179/41 82/168/42 +f 87/183/13 79/182/36 80/187/43 +f 107/188/46 99/203/18 100/189/2 +f 106/191/48 105/204/53 97/192/16 +f 124/194/49 102/575/1 95/195/30 +f 103/196/50 95/195/30 96/197/4 +f 109/199/52 101/202/26 102/200/1 +f 108/190/47 100/189/2 101/202/26 +f 107/188/46 106/191/48 98/193/10 +f 104/198/51 96/197/4 97/192/16 +f 115/213/58 114/220/60 107/214/46 +f 113/216/15 112/221/61 105/217/53 +f 111/218/59 110/209/56 103/211/50 +f 115/213/58 108/215/47 109/206/52 +f 113/216/15 106/191/48 107/214/46 +f 112/221/61 111/218/59 104/219/51 +f 120/222/62 119/225/65 112/221/61 +f 117/212/57 110/209/56 111/218/59 +f 123/208/55 122/226/66 115/213/58 +f 120/222/62 113/216/15 114/220/60 +f 119/225/65 118/223/63 111/218/59 +f 122/226/66 121/224/64 114/220/60 +f 130/227/2 122/241/66 123/228/55 +f 128/230/3 120/222/62 121/231/64 +f 126/233/4 118/242/63 119/234/65 +f 132/236/5 124/576/49 117/237/57 +f 131/229/11 123/228/55 124/239/49 +f 129/232/13 121/231/64 122/241/66 +f 127/235/12 119/234/65 120/222/62 +f 125/238/14 117/237/57 118/242/63 +f 140/243/13 148/256/36 147/244/43 +f 138/246/11 146/257/41 145/247/42 +f 136/249/14 144/258/44 143/250/45 +f 134/252/12 142/259/34 141/253/25 +f 133/255/3 141/577/25 148/256/36 +f 139/245/2 147/244/43 146/257/41 +f 137/248/5 145/247/42 144/258/44 +f 135/251/4 143/250/45 142/259/34 +f 143/260/45 144/266/44 151/261/39 +f 147/263/43 154/270/38 153/264/40 +f 145/247/42 152/271/17 151/261/39 +f 142/267/34 143/260/45 150/262/37 +f 147/263/43 148/279/36 155/269/35 +f 146/265/41 153/264/40 152/271/17 +f 153/264/40 154/270/38 161/272/28 +f 152/271/17 159/277/24 158/274/31 +f 150/262/37 157/278/23 156/275/29 +f 154/270/38 155/269/35 162/276/27 +f 152/271/17 153/264/40 160/273/32 +f 150/262/37 151/261/39 158/274/31 +f 161/282/28 169/293/2 168/283/18 +f 159/277/24 167/296/10 166/285/16 +f 157/287/23 165/297/4 164/288/30 +f 156/289/29 164/288/30 163/290/1 +f 162/292/27 170/295/26 169/293/2 +f 141/294/25 163/578/1 170/295/26 +f 160/284/32 168/283/18 167/296/10 +f 158/286/31 166/285/16 165/297/4 +f 178/298/14 186/311/57 185/299/63 +f 176/301/12 184/312/65 183/302/62 +f 174/304/13 182/313/64 181/305/66 +f 172/307/11 180/314/55 179/308/49 +f 171/310/5 179/579/49 186/311/57 +f 177/300/4 185/299/63 184/312/65 +f 175/303/3 183/302/62 182/313/64 +f 173/306/2 181/305/66 180/314/55 +f 181/315/66 182/321/64 189/316/60 +f 185/318/63 192/325/59 191/319/61 +f 183/302/62 190/326/15 189/316/60 +f 181/315/66 188/317/58 187/322/54 +f 186/324/57 193/335/56 192/325/59 +f 184/320/65 191/319/61 190/326/15 +f 191/319/61 192/325/59 199/327/51 +f 189/316/60 190/326/15 197/329/48 +f 188/317/58 195/333/47 194/331/52 +f 192/325/59 193/335/56 200/332/50 +f 190/326/15 191/319/61 198/328/53 +f 189/316/60 196/330/46 195/333/47 +f 198/337/53 199/349/51 207/338/4 +f 196/340/46 197/329/48 205/341/10 +f 194/343/52 195/352/47 203/344/2 +f 194/343/52 202/345/26 201/346/1 +f 200/348/50 208/351/30 207/338/4 +f 200/348/50 179/580/49 201/350/1 +f 198/337/53 206/339/16 205/341/10 +f 196/340/46 204/342/18 203/344/2 +f 222/353/67 221/368/72 213/354/17 +f 220/356/68 219/369/73 211/357/15 +f 238/359/30 216/581/1 209/360/25 +f 217/361/69 209/360/25 210/362/3 +f 223/364/71 215/367/49 216/365/1 +f 222/353/67 214/355/5 215/367/49 +f 221/368/72 220/356/68 212/358/10 +f 219/369/73 218/363/70 210/362/3 +f 228/378/78 221/385/72 222/379/67 +f 227/381/18 226/386/81 219/382/73 +f 225/383/80 224/374/76 217/376/69 +f 229/380/79 222/379/67 223/371/71 +f 227/381/18 220/356/68 221/385/72 +f 226/386/81 225/383/80 218/384/70 +f 233/387/82 226/386/81 227/381/18 +f 231/377/77 224/374/76 225/383/80 +f 237/373/75 236/391/86 229/380/79 +f 234/388/83 227/381/18 228/378/78 +f 232/389/84 225/383/80 226/386/81 +f 236/391/86 235/390/85 228/378/78 +f 244/392/5 236/406/86 237/393/75 +f 242/395/2 234/388/83 235/396/85 +f 240/398/3 232/407/84 233/399/82 +f 246/401/4 238/582/30 231/402/77 +f 245/394/14 237/393/75 238/404/30 +f 243/397/11 235/396/85 236/406/86 +f 241/400/13 233/399/82 234/388/83 +f 239/403/12 231/402/77 232/407/84 +f 259/408/87 251/423/15 252/409/3 +f 258/411/89 257/424/93 249/412/17 +f 276/414/26 254/583/1 247/415/49 +f 255/416/90 247/415/49 248/417/5 +f 261/419/92 253/422/25 254/420/1 +f 260/410/88 252/409/3 253/422/25 +f 259/408/87 258/411/89 250/413/10 +f 256/418/91 248/417/5 249/412/17 +f 267/433/98 266/440/101 259/434/87 +f 264/436/99 257/441/93 258/411/89 +f 263/438/100 262/429/96 255/431/90 +f 267/433/98 260/435/88 261/426/92 +f 266/440/101 265/437/16 258/411/89 +f 264/436/99 263/438/100 256/439/91 +f 271/442/102 264/436/99 265/437/16 +f 270/444/104 269/432/97 262/429/96 +f 275/428/95 274/446/106 267/433/98 +f 272/443/103 265/437/16 266/440/101 +f 270/444/104 263/438/100 264/436/99 +f 274/446/106 273/445/105 266/440/101 +f 282/447/3 274/461/106 275/448/95 +f 280/450/4 272/443/103 273/451/105 +f 278/453/5 270/462/104 271/454/102 +f 284/456/2 276/584/26 269/457/97 +f 283/449/13 275/448/95 276/459/26 +f 281/452/12 273/451/105 274/461/106 +f 279/455/14 271/454/102 272/443/103 +f 277/458/11 269/457/97 270/462/104 +f 292/463/12 300/476/77 299/464/84 +f 290/466/13 298/477/82 297/467/83 +f 288/469/11 296/478/85 295/470/86 +f 286/472/14 294/479/75 293/473/30 +f 285/475/4 293/585/30 300/476/77 +f 291/465/3 299/464/84 298/477/82 +f 289/468/2 297/467/83 296/478/85 +f 287/471/5 295/470/86 294/479/75 +f 295/480/86 296/486/85 303/481/78 +f 299/483/84 306/490/80 305/484/81 +f 297/467/83 304/491/18 303/481/78 +f 294/487/75 295/480/86 302/482/79 +f 300/489/77 307/500/76 306/490/80 +f 297/467/83 298/485/82 305/484/81 +f 305/484/81 306/490/80 313/492/70 +f 304/491/18 311/497/68 310/494/72 +f 302/482/79 309/498/67 308/495/71 +f 306/490/80 307/500/76 314/496/69 +f 305/484/81 312/493/73 311/497/68 +f 303/481/78 310/494/72 309/498/67 +f 313/502/70 321/514/3 320/503/15 +f 310/505/72 311/497/68 319/506/10 +f 309/508/67 317/517/5 316/509/49 +f 308/510/71 316/509/49 315/511/1 +f 314/513/69 322/516/25 321/514/3 +f 293/515/30 315/586/1 322/516/25 +f 311/497/68 312/504/73 320/503/15 +f 310/505/72 318/507/17 317/517/5 +f 330/518/11 338/531/97 337/519/104 +f 328/521/14 336/532/102 335/522/103 +f 326/524/12 334/533/105 333/525/106 +f 324/527/13 332/534/95 331/528/26 +f 323/530/2 331/587/26 338/531/97 +f 329/520/5 337/519/104 336/532/102 +f 327/523/4 335/522/103 334/533/105 +f 325/526/3 333/525/106 332/534/95 +f 333/535/106 334/541/105 341/536/101 +f 337/538/104 344/545/100 343/539/99 +f 335/522/103 342/546/16 341/536/101 +f 332/542/95 333/535/106 340/537/98 +f 337/538/104 338/554/97 345/544/96 +f 336/540/102 343/539/99 342/546/16 +f 343/539/99 344/545/100 351/547/91 +f 342/546/16 349/552/89 348/549/87 +f 340/537/98 347/553/88 346/550/92 +f 344/545/100 345/544/96 352/551/90 +f 343/539/99 350/548/93 349/552/89 +f 340/537/98 341/536/101 348/549/87 +f 351/557/91 359/568/5 358/558/17 +f 349/552/89 357/571/10 356/560/15 +f 347/562/88 355/572/3 354/563/25 +f 346/564/92 354/563/25 353/565/1 +f 352/567/90 360/570/49 359/568/5 +f 331/569/26 353/588/1 360/570/49 +f 349/552/89 350/559/93 358/558/17 +f 348/561/87 356/560/15 355/572/3 diff --git a/src/main/resources/assets/hbm/textures/items/crystal_energy.png b/src/main/resources/assets/hbm/textures/items/crystal_energy.png deleted file mode 100644 index f4d48089a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/crystal_energy.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/pellet_coolant.png b/src/main/resources/assets/hbm/textures/items/pellet_coolant.png deleted file mode 100644 index 59c00dec4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/pellet_coolant.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png b/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png new file mode 100644 index 000000000..6f2582f83 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png differ