diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d143d9bd8..d8d83ad42 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1021,6 +1021,8 @@ public class ModBlocks { public static Block machine_radgen; public static Block machine_satlinker; + public static Block machine_satlink; + public static Block machine_keyforge; public static Block machine_armor_table; @@ -1938,6 +1940,7 @@ public class ModBlocks { machine_transformer = new MachineTransformer(Material.iron).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side"); + machine_satlink = new MachineSatLink().setBlockName("machine_satlink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side"); machine_armor_table = new BlockArmorTable(Material.iron).setBlockName("machine_armor_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); machine_weapon_table = new BlockWeaponTable().setBlockName("machine_weapon_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); @@ -3292,6 +3295,7 @@ public class ModBlocks { GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); + register(machine_satlink); GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); GameRegistry.registerBlock(machine_weapon_table, machine_weapon_table.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java new file mode 100644 index 000000000..443778855 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java @@ -0,0 +1,84 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.items.ISatChip; +import com.hbm.main.NTMSounds; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineSatLink; +import com.hbm.util.i18n.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class MachineSatLink extends BlockDummyable implements ILookOverlay { + + public MachineSatLink() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineSatLink(); + if(meta >= 6) return new TileEntityProxyCombo(); + return null; + } + + @Override public int[] getDimensions() { return new int[] {6, 0, 1, 0, 1, 0}; } + @Override public int getOffset() { return 0; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(!world.isRemote && !player.isSneaking()) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ISatChip) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(te instanceof TileEntityMachineSatLink)) return false; + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) te; + + link.freq = ISatChip.getFreqS(player.getHeldItem()); + player.addChatComponentMessage(new ChatComponentText("Set frequency to " + link.freq).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + world.playSoundAtEntity(player, NTMSounds.TECH_BLEEP, 1F, 1F); + + return true; + } + return false; + + } else { + return true; + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(te instanceof TileEntityMachineSatLink)) return; + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) te; + + List text = new ArrayList(); + text.add("Freq: " + link.freq); + text.add("Connected: " + (link.connected ? (EnumChatFormatting.GREEN + "Yes") : (EnumChatFormatting.RED + "No"))); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index a8d060ca2..ad06c04d4 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -167,8 +167,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.billet_ra226be, 3)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilepobe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal())) .inputItems(new ComparableStack(ModItems.billet_po210be, 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.ZR.ordinal())) - .inputItems(new OreDictStack(ZR.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 3, EnumPileRod.ZR.ordinal())) + .inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())) .inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 71d29a399..e20c75122 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -301,6 +301,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatLink.class, new RenderSatLink()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 25f58dc2f..7cc44b3fc 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; import java.util.List; @@ -92,8 +93,9 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.conveyor_double)); API.hideItem(new ItemStack(ModBlocks.conveyor_triple)); - API.hideItem(new ItemStack(ModBlocks.brick_forgotten)); - API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten, 1, OreDictionary.WILDCARD_VALUE)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock, 1, OreDictionary.WILDCARD_VALUE)); + API.hideItem(new ItemStack(ModItems.coal_eternal)); API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 5164c34f8..5fc7aa957 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -272,6 +272,7 @@ public class ResourceManager { public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")).noSmooth().asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj")).noSmooth().asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")).noSmooth().asVBO(); + public static final IModelCustom satlink = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/satlink.obj")).noSmooth().asVBO(); //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); @@ -747,6 +748,7 @@ public class ResourceManager { public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png"); public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); + public static final ResourceLocation satlink_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/satlink.png"); //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java index 6e4aeec31..fbcea7522 100644 --- a/src/main/java/com/hbm/qmaw/QMAWLoader.java +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -217,6 +217,10 @@ public class QMAWLoader implements IResourceManagerReloadListener { QMAWLoader.triggers.put(new ComparableStack(trigger).makeSingular(), qmaw); } } + + if(json.has("noindex") && json.get("noindex").getAsBoolean()) { + qmaw.noIndex(); + } if(!qmaw.contents.isEmpty()) { QMAWLoader.qmaw.put(name, qmaw); diff --git a/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java index f961cd2fe..ed7b20a9e 100644 --- a/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java +++ b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java @@ -5,10 +5,13 @@ import java.util.HashMap; import net.minecraft.item.ItemStack; public class QuickManualAndWiki { - + public String name; public ItemStack icon; + /** Removes this manual from the calculator search feature */ + public boolean noIndex = false; + public HashMap title = new HashMap(); public HashMap contents = new HashMap(); @@ -30,4 +33,9 @@ public class QuickManualAndWiki { this.contents.put(lang, contents); return this; } + + public QuickManualAndWiki noIndex() { + this.noIndex = true; + return this; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java new file mode 100644 index 000000000..5698a1736 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java @@ -0,0 +1,77 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineSatLink; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.common.util.ForgeDirection; + +public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + GL11.glTranslated((dir.offsetX + rot.offsetX) * 0.5, 0, (dir.offsetZ + rot.offsetZ) * 0.5); + + float r = link.prevRot + (link.rot - link.prevRot) * interp; + float l = link.prevLift + (link.lift - link.prevLift) * interp; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.satlink_tex); + ResourceManager.satlink.renderPart("Base"); + GL11.glRotated(r, 0, 1, 0); + ResourceManager.satlink.renderPart("Rotor"); + GL11.glTranslated(0, 7.375, 0); + GL11.glRotated(l, 0, 0, 1); + GL11.glTranslated(0, -7.375, 0); + ResourceManager.satlink.renderPart("Dish"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_satlink); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.satlink_tex); + ResourceManager.satlink.renderPart("Base"); + GL11.glRotated(15, 0, 1, 0); + ResourceManager.satlink.renderPart("Rotor"); + GL11.glTranslated(0, 7.375, 0); + GL11.glRotated(-45, 0, 0, 1); + GL11.glTranslated(0, -7.375, 0); + ResourceManager.satlink.renderPart("Dish"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index a0dd2a624..2ced0842d 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -23,18 +23,18 @@ public class SatelliteSavedData extends WorldSavedData { /** * Default constructor for satellites map data. */ - public SatelliteSavedData() { - super("satellites"); - this.markDirty(); - } - - public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; - } - - public Satellite getSatFromFreq(int freq) { - return sats.get(freq); - } + public SatelliteSavedData() { + super("satellites"); + this.markDirty(); + } + + public boolean isFreqTaken(int freq) { + return getSatFromFreq(freq) != null; + } + + public Satellite getSatFromFreq(int freq) { + return sats.get(freq); + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -53,28 +53,28 @@ public class SatelliteSavedData extends WorldSavedData { @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("satCount", sats.size()); - + int i = 0; - for(Entry struct : sats.entrySet()) { - NBTTagCompound data = new NBTTagCompound(); - struct.getValue().writeToNBT(data); - - nbt.setInteger("sat_id_" + i, struct.getValue().getID()); - nbt.setTag("sat_data_" + i, data); - nbt.setInteger("sat_freq_" + i, struct.getKey()); + for(Entry struct : sats.entrySet()) { + NBTTagCompound data = new NBTTagCompound(); + struct.getValue().writeToNBT(data); + + nbt.setInteger("sat_id_" + i, struct.getValue().getID()); + nbt.setTag("sat_data_" + i, data); + nbt.setInteger("sat_freq_" + i, struct.getKey()); i++; - } + } } public static SatelliteSavedData getData(World worldObj) { - SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); - - data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - - return data; + SatelliteSavedData data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + if(data == null) { + worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); + + data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + } + + return data; } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index ad13bb825..560761911 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -133,6 +133,7 @@ public class TileMappings { put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); + put(TileEntityMachineSatLink.class, "tileentity_satlink"); put(TileEntityReactorResearch.class, "tileentity_small_reactor"); put(TileEntityVaultDoorMigration.class, "tileentity_vault_door"); put(TileEntityRadiobox.class, "tileentity_radio_broadcaster"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java new file mode 100644 index 000000000..e327f1dac --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java @@ -0,0 +1,120 @@ +package com.hbm.tileentity.machine; + +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.tileentity.TileEntityTickingBase; + +import api.hbm.redstoneoverradio.IRORInteractive; +import api.hbm.redstoneoverradio.IRORValueProvider; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive { + + public boolean connected; + public int freq; + + public float rot = INACTIVE_ROT; + public float prevRot = INACTIVE_ROT; + public float lift = INACTIVE_LIFT; + public float prevLift = INACTIVE_LIFT; + + public static final float SPEED = 0.25F; + public static final float ACTIVE_ROT = -15F; + public static final float ACTIVE_LIFT = -45F; + public static final float INACTIVE_ROT = 0F; + public static final float INACTIVE_LIFT = -85F; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.connected = false; + + if(worldObj.getHeightValue(xCoord, zCoord) <= yCoord) { + + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + this.connected = dat.isFreqTaken(freq); + } + + this.networkPackNT(150); + + } else { + + this.prevRot = this.rot; + this.prevLift = this.lift; + + float targetR = this.connected ? ACTIVE_ROT : INACTIVE_ROT; + float targetL = this.connected ? ACTIVE_LIFT : INACTIVE_LIFT; + + if(Math.abs(rot - targetR) <= SPEED) rot = targetR; + else if(rot < targetR) rot += SPEED; + else if(rot > targetR) rot -= SPEED; + + if(Math.abs(lift - targetL) <= SPEED) lift = targetL; + else if(lift < targetL) lift += SPEED; + else if(lift > targetL) lift -= SPEED; + } + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(connected); + buf.writeInt(freq); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.connected = buf.readBoolean(); + this.freq = buf.readInt(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 10, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public String[] getFunctionInfo() { + return new String[] { + PREFIX_VALUE + "connected", + PREFIX_VALUE + "freq", + PREFIX_VALUE + "rx", + PREFIX_FUNCTION + "setfreq" + NAME_SEPARATOR + "freq", + PREFIX_FUNCTION + "tx" + NAME_SEPARATOR + "payload" + }; + } + + @Override + public String provideRORValue(String name) { + return null; + } + + @Override + public String runRORFunction(String name, String[] params) { + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 4ecf97689..391df724b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -655,6 +655,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG PREFIX_VALUE + "rods", PREFIX_VALUE + "coreheat", PREFIX_VALUE + "hullheat", + PREFIX_VALUE + "coldbuf", + PREFIX_VALUE + "hotbuf", PREFIX_VALUE + "flux", PREFIX_VALUE + "depletion", PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent", @@ -671,6 +673,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG if((PREFIX_VALUE + "rods").equals(name)) return "" + (int) (100 - this.rodLevel); // why the fuck did i invert this again? if((PREFIX_VALUE + "coreheat").equals(name)) return "" + this.coreHeat; if((PREFIX_VALUE + "hullheat").equals(name)) return "" + this.hullHeat; + if((PREFIX_VALUE + "coldbuf").equals(name)) return "" + this.tanks[0].getFill(); + if((PREFIX_VALUE + "hotbuf").equals(name)) return "" + this.tanks[1].getFill(); if((PREFIX_VALUE + "flux").equals(name)) return "" + (int) this.flux; if((PREFIX_VALUE + "depletion").equals(name)) return "" + (int) (this.progress * 100 / this.processTime); return null; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java index cc4c137fb..7b368780b 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java @@ -182,6 +182,7 @@ public class TileEntityPileCore extends TileEntityTickingBase { for(int i = 0; i < list.size(); i++) { PileChannel chan = list.get(i); if(chan.entry.compare(x, y, z) && chan.entry.getDir() == dir) { + if(chan.type == chan.type.FUEL) chan.ejectAll(); list.remove(i); for(int j = 0; j < size; j++) { int iX = x + dir.offsetX * j; @@ -250,6 +251,12 @@ public class TileEntityPileCore extends TileEntityTickingBase { this.networkPackNT(25); } } + + @Override + public void invalidate() { + super.invalidate(); + for(PileChannel chan : this.fuelChannels) chan.ejectAll(); + } @Override public void serialize(ByteBuf buf) { @@ -535,7 +542,15 @@ public class TileEntityPileCore extends TileEntityTickingBase { if(stack != null) dropItem(stack, length); } + public void ejectAll() { + for(int i = 0; i < this.rods.length; i++) { + this.dropItem(rods[i], length); + this.rods[i] = null; + } + } + public void dropItem(ItemStack stack, int depth) { + if(stack == null) return; int x = entry.getX() + entry.getDir().offsetX * depth; int y = entry.getY(); int z = entry.getZ() + entry.getDir().offsetZ * depth; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6491f3b64..06542768a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3838,7 +3838,7 @@ item.pile_rod.rgp.desc=Reactor-grade plutonium rod, mainly plutonium-239 with pl item.pile_rod.waste.name=Chicago Pile Nuclear Waste Rod item.pile_rod.waste.desc=Highly reactive end product from leaving a Chicago Pile fuel rod in the reactor for too long. item.pile_rod.zr.name=Chicago Pile Zirconium Rod -item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for safely pushing other rods safely out of the reactor. +item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for pushing other rods safely out of the reactor. item.pile_rod_boron.name=Chicago Pile Control Rod item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle item.pile_rod_detector.name=Chicago Pile Control & Detector Rod diff --git a/src/main/resources/assets/hbm/manual/material/etcoal.json b/src/main/resources/assets/hbm/manual/material/etcoal.json index 3bcdda69c..b247f658c 100644 --- a/src/main/resources/assets/hbm/manual/material/etcoal.json +++ b/src/main/resources/assets/hbm/manual/material/etcoal.json @@ -2,10 +2,11 @@ "name": "Eternal Coal", "icon": ["hbm:item.nothing"], "trigger": [["hbm:item.coal_eternal"]], + "noindex": true, "title": { "en_US": "█ █ █ █ █ █" }, "content": { - "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ██████████ █ ████ █████ ██████ ████████ ████ █████ ██ ██ ███ ██████" + "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ███ ███████ █ ████ █████ ██████ ███████ █ ████ █████ ██ ██ ███ ██████" } } diff --git a/src/main/resources/assets/hbm/manual/pile/pile.json b/src/main/resources/assets/hbm/manual/pile/pile.json new file mode 100644 index 000000000..a5ddf27f9 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pile.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile", + "icon": ["hbm:tile.pile_brick", 1, 0], + "trigger": [["hbm:tile.pile_brick"]], + "title": { + "en_US": "Chicago Pile" + }, + "content": { + "en_US": "The Chcago Pile is a low-tech low-power reactor used for breeding nuclear material, mainly turning [[uranium|Uranium]] into [[plutonium-239|Plutonium-239]]. Due to its simplicity, operating it either requires manual intervention or some form of external operation with [[Redstone over Radio]].

The pile is constructed out of a box of Chicago Pile graphite bricks at least 5x5x5 blocks in size, and at most 15x15x15 blocks. The box does not need to be a perfect cube, so shapes like 5x7x9 are valid, so long as the box is filled. Using a hand drill, the pile is assembled, with the drilled block acting as the core.

To prepare the Chicago Pile for use, channels need to be drilled, again with a hand drill. The function of the channel depends on the orientation relative to the core. Using the hand drill again on the input side of an existing channel will close the channel again. Channels cannot intersect one another.

Fuel channels are channels that follow the core's orientation, i.e. either the input or output side is on the same face as the core's panel. Fuel channels can be loaded with Chicago Pile fuel rods using a [[fuel loader|Chicago Pile Fuel Loader]]. The amount of fuel that fits into any given channel depends on its length, with one block of channel being able to hold one fuel rod.

Ventilation channels are channels which are perpendicular to the core's orientation and therefore also to the fuel channels. Ventilation channels cool down fuel channels which touch (but not intersect) them if compressed air is supplied at a pressure of 1 PU via a [[vent|Chicago Pile Vent]]. Passive cooling in the Chicago Pile is quite low, so while technically optional, vents are basically mandatory for every Pile in practice.

Channels drilled from the top are for [[control rods|Chicago Pile Control Rod]]. Control rods are used to reduce the interactiion between fuel channels in larger Pile setups, although smaller setups are usually fine without control rods. Still, throttling the reactor can be useful when cycling fuel, since the window for extracting pure plutonium-239 is quite small.
<>br>If the Pile is disassembled, channels can be drilled again without having to remove all the attachments like fuel loaders and vents, simply shift-click the attachment with the hand drill and a channel will be drilled into the Pile behind it.

See also:
* [[Chicago Pile Operation]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pilecontrol.json b/src/main/resources/assets/hbm/manual/pile/pilecontrol.json new file mode 100644 index 000000000..ee4b473da --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pilecontrol.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Control Rod", + "icon": ["hbm:tile.pile_device", 1, 2], + "trigger": [["hbm:tile.pile_device", 1, 2]], + "title": { + "en_US": "Chicago Pile Control Rod" + }, + "content": { + "en_US": "Control rods can be placed on top of the vertically drilled channels of the [[Chicago Pile]]. Control rods, when inserted, will reduce the reactivity between fuel channels. The control rods can be controlled with a redstone signal, causing it to fully withdraw when a signal is supplied, or via [[RoR controller|Redstone-over-Radio Controller]], which allows more precise settings.

See also:
* [[Chicago Pile Fuel Loader]]
* [[Chicago Pile Vent]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pileloader.json b/src/main/resources/assets/hbm/manual/pile/pileloader.json new file mode 100644 index 000000000..854f9ebf4 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pileloader.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Fuel Loader", + "icon": ["hbm:tile.pile_device", 1, 0], + "trigger": [["hbm:tile.pile_device", 1, 0]], + "title": { + "en_US": "Chicago Pile Fuel Loader" + }, + "content": { + "en_US": "The fuel loader is required to load [[Chicago Pile]] fuel rods into the Pile's fuel channels. Right-clicking with a fuel rod will insert that rod into the loader, and right-clicking again will load it into the Pile manually. Fuel can also be supplied using hoppers or conveyors, and the loading action can be triggered by supplying a redstone signal to the loader's back side (where the light grey circle is).

Additionally, the loader can relay information about the connected channel to the [[RoR reader|Redstone-over-Radio Reader]], like the type (metadata) and depletion of the backmost loaded fuel rod or the channel's current temperature.

See also:
* [[Chicago Pile Vent]]
* [[Chicago Pile Control Rod]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pileop.json b/src/main/resources/assets/hbm/manual/pile/pileop.json new file mode 100644 index 000000000..ed9937519 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pileop.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Operation", + "icon": ["hbm:tile.pile_brick", 1, 0], + "trigger": [], + "title": { + "en_US": "Chicago Pile Operation" + }, + "content": { + "en_US": "The [[Chicago Pile]] requires at least one fuel channel with some sort of neutron source, being radium-226-beryllium or polonium-210-beryllium rods. It's safest and easiest to simply have one fuel channel dedicated to the neutron sources, although mixing neutron sources in with the regular fuel is also an option. [[Ventilation|Chicago Pile Vent]] is also required before actually using fuel, the amount of compressed air used over time is static no matter how hot the reactor is, so doing a dry-run to see if the [[compressor|Compressor]] setup is sufficient is recommended.

Once ventilation and neutron sources are in place, fuel can be added, usually in the form of natural uranium which is bred into plutonium-239. The [[fuel loader|Chicago Pile Fuel Loader]] will only load one rod at a time, simply load as many rods as the channel can hold. Any extra rod loaded will cause the last rod in the channel to be pushed out the other end, where it can be collected with a hopper.

The supplied fuel will be bred as long as its in the reactor. Pu-239 can also be bred into RGP, which can be further bred into nuclear waste. Therefore, leaving fuel in the reactor for too long is undesirable. For this, the fuel loader can be read with an [[RoR reader|Redstone-over-Radio Reader]], which will report the fuel's lifetime and current type in the form of the numeric metadata of the item. For example, Plutonium-239 rods have a meta of 4. Using an [[RoR logic receiver|Redstone-over-Radio Logic Receiver]], this meta can be detected, causing a redstone signal to be sent to the fuel loader, pushing that fuel rod out.

It is not only desirable to eject the fuel in time due to the purity, but also because nuclear waste has a high heat output, which might destroy Piles not prepared for it. If no new fuel is available and the existing loaded fuel is intended to be ejected, rods made from zirconium are ideal, since they are cheap, inert, and transparent to neutrons, not adding any heat while not interfering with the Pile's reaction either.

In an emergency, should the Pile overheat, it will catch fire, explode, and eject many flaming graphite bricks which also explode into fire, setting the surroundings ablaze. It is recommended to keep the Pile in a small room, away from flammable material, and to keep a fire extinguisher nearby.

For people who want to make the most out of their fuel, using [[RoR controllers|Redstone-over-Radio Controller]] to adjust the control rod settings automatically may be desirable. Especially in larger setups, control rods are important to prevent the Pile from quickly overheating, and having an adaptive system controlled either by RoR logic receivers or an [[AUTOCAL]] unit can allow the Pile to run reasonably hot without exploding." + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pilevent.json b/src/main/resources/assets/hbm/manual/pile/pilevent.json new file mode 100644 index 000000000..8b6b619b1 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pilevent.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Vent", + "icon": ["hbm:tile.pile_device", 1, 1], + "trigger": [["hbm:tile.pile_device", 1, 1]], + "title": { + "en_US": "Chicago Pile Vent" + }, + "content": { + "en_US": "The vent is needed to insert compressed air at 1 PU into the [[Chicago Pile's|Chicago Pile]] ventilation channels. Due to the pressure requirement, each Pile therefore needs at least one [[compressor|Compressor]]. Hot air will harmlessly exit the Pile at the output side of the ventilation channel.

The vent's cooling effect only applies to fuel channels that touch the ventilation channel, or rather, fuel channels exactly one block above and below that ventilation channel. Without sufficient cooling, the channel will surpass 800°C, causing the highly-flammable graphite bricks to ignite, forcefully disassembling the Pile.

See also:
* [[Chicago Pile Fuel Loader]]
* [[Chicago Pile Control Rod]]" + } +} + diff --git a/src/main/resources/assets/hbm/models/machines/satlink.obj b/src/main/resources/assets/hbm/models/machines/satlink.obj new file mode 100644 index 000000000..3da21b552 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/satlink.obj @@ -0,0 +1,1520 @@ +# Blender v2.79 (sub 0) OBJ File: 'satlink.blend' +# www.blender.org +o Rotor +v -0.125000 7.000000 0.250000 +v -0.250000 7.000000 0.125000 +v 0.250000 7.000000 0.125000 +v 0.125000 7.000000 0.250000 +v -0.250000 7.000000 -0.125000 +v -0.125000 7.000000 -0.250000 +v 0.125000 7.000000 -0.250000 +v 0.250000 7.000000 -0.125000 +v -0.125000 7.125000 -0.250000 +v -0.250000 7.125000 -0.125000 +v -0.250000 7.125000 0.125000 +v -0.125000 7.125000 0.250000 +v 0.125000 7.125000 0.250000 +v 0.250000 7.125000 0.125000 +v 0.250000 7.125000 -0.125000 +v 0.125000 7.125000 -0.250000 +v 0.125000 7.125000 0.250000 +v -0.125000 7.125000 0.250000 +v -0.125000 7.125000 0.125000 +v 0.125000 7.125000 0.125000 +v 0.125000 7.500000 0.125000 +v -0.125000 7.500000 0.125000 +v 0.125000 7.500000 0.250000 +v -0.125000 7.500000 0.250000 +v 0.125000 7.125000 -0.125000 +v -0.125000 7.125000 -0.125000 +v -0.125000 7.125000 -0.250000 +v 0.125000 7.125000 -0.250000 +v 0.125000 7.500000 -0.250000 +v -0.125000 7.500000 -0.250000 +v 0.125000 7.500000 -0.125000 +v -0.125000 7.500000 -0.125000 +vt 0.538462 0.022222 +vt 0.576923 0.044444 +vt 0.564103 0.111111 +vt 0.564103 0.000000 +vt 0.538462 0.000000 +vt 0.589744 0.088889 +vt 0.589744 0.044444 +vt 0.512821 0.044444 +vt 0.525641 0.088889 +vt 0.512821 0.088889 +vt 0.576923 0.133333 +vt 0.564103 0.133333 +vt 0.576923 0.022222 +vt 0.564103 0.022222 +vt 0.525641 0.000000 +vt 0.538462 0.133333 +vt 0.525641 0.111111 +vt 0.538462 0.111111 +vt 0.602564 -0.000000 +vt 0.589744 0.066667 +vt 0.589744 -0.000000 +vt 0.666667 -0.000000 +vt 0.641026 0.066667 +vt 0.641026 -0.000000 +vt 0.602564 -0.000000 +vt 0.589744 0.066667 +vt 0.589744 -0.000000 +vt 0.628205 -0.000000 +vt 0.602564 0.066667 +vt 0.628205 0.066667 +vt 0.602564 0.088889 +vt 0.602564 0.066667 +vt 0.628205 0.066667 +vt 0.641026 -0.000000 +vt 0.628205 -0.000000 +vt 0.602564 0.088889 +vt 0.666667 -0.000000 +vt 0.641026 0.066667 +vt 0.525641 0.044444 +vt 0.576923 0.088889 +vt 0.576923 0.111111 +vt 0.576923 0.000000 +vt 0.525641 0.022222 +vt 0.525641 0.133333 +vt 0.666667 0.066667 +vt 0.628205 0.088889 +vt 0.628205 0.088889 +vt 0.666667 0.066667 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.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 -1.0000 0.0000 0.0000 +s off +f 14/1/1 16/2/1 10/3/1 +f 8/4/2 14/1/2 3/5/2 +f 6/6/3 16/2/3 7/7/3 +f 4/8/4 12/9/4 1/10/4 +f 10/3/5 6/11/5 5/12/5 +f 8/4/6 16/13/6 15/14/6 +f 14/1/7 4/15/7 3/5/7 +f 2/16/8 12/17/8 11/18/8 +f 2/16/9 10/3/9 5/12/9 +f 26/19/9 30/20/9 27/21/9 +f 19/22/3 21/23/3 20/24/3 +f 18/25/9 22/26/9 19/27/9 +f 17/28/4 24/29/4 18/25/4 +f 31/30/1 30/31/1 32/32/1 +f 20/24/2 23/33/2 17/28/2 +f 28/34/2 31/30/2 25/35/2 +f 23/33/1 22/36/1 24/29/1 +f 27/37/3 29/38/3 28/34/3 +f 25/35/4 32/32/4 26/19/4 +f 10/3/1 11/18/1 12/9/1 +f 12/9/1 13/39/1 14/1/1 +f 14/1/1 15/14/1 16/2/1 +f 16/2/1 9/40/1 10/3/1 +f 10/3/1 12/9/1 14/1/1 +f 8/4/2 15/14/2 14/1/2 +f 6/6/3 9/40/3 16/2/3 +f 4/8/4 13/39/4 12/9/4 +f 10/3/5 9/41/5 6/11/5 +f 8/4/6 7/42/6 16/13/6 +f 14/1/7 13/43/7 4/15/7 +f 2/16/8 1/44/8 12/17/8 +f 2/16/9 11/18/9 10/3/9 +f 26/19/9 32/32/9 30/20/9 +f 19/22/3 22/45/3 21/23/3 +f 18/25/9 24/29/9 22/26/9 +f 17/28/4 23/33/4 24/29/4 +f 31/30/1 29/46/1 30/31/1 +f 20/24/2 21/23/2 23/33/2 +f 28/34/2 29/38/2 31/30/2 +f 23/33/1 21/47/1 22/36/1 +f 27/37/3 30/48/3 29/38/3 +f 25/35/4 31/30/4 32/32/4 +o Dish +v 0.000000 7.625000 -0.125000 +v 0.000000 7.625000 0.125000 +v 0.176777 7.551777 -0.125000 +v 0.176777 7.551777 0.125000 +v 0.250000 7.375000 -0.125000 +v 0.250000 7.375000 0.125000 +v 0.176777 7.198223 -0.125000 +v 0.176777 7.198223 0.125000 +v -0.000000 7.125000 -0.125000 +v -0.000000 7.125000 0.125000 +v -0.176777 7.198223 -0.125000 +v -0.176777 7.198223 0.125000 +v -0.250000 7.375000 -0.125000 +v -0.250000 7.375000 0.125000 +v -0.176777 7.551777 -0.125000 +v -0.176777 7.551777 0.125000 +v -0.125000 7.750000 0.093750 +v 0.125000 7.750000 0.093750 +v -0.125000 7.750000 -0.093750 +v 0.125000 7.750000 -0.093750 +v -0.125000 7.500000 -0.093750 +v -0.125000 7.500000 0.093750 +v 0.125000 7.500000 0.093750 +v 0.125000 7.500000 -0.093750 +v 0.000000 8.125000 -1.500000 +v -0.750000 8.125000 -1.299038 +v -1.299038 8.125000 -0.750000 +v -1.500000 8.125000 0.000000 +v -1.299038 8.125000 0.750000 +v -0.750000 8.125000 1.299038 +v -0.000000 8.125000 1.500000 +v 0.750000 8.125000 1.299038 +v 1.299038 8.125000 0.750000 +v 1.500000 8.125000 0.000001 +v 1.299039 8.125000 -0.749999 +v 0.750001 8.125000 -1.299038 +v 0.000000 7.750000 -0.750000 +v -0.375000 7.750000 -0.649519 +v -0.649519 7.750000 -0.375000 +v -0.750000 7.750000 0.000000 +v -0.649519 7.750000 0.375000 +v -0.375000 7.750000 0.649519 +v -0.000000 7.750000 0.750000 +v 0.375000 7.750000 0.649519 +v 0.649519 7.750000 0.375000 +v 0.750000 7.750000 0.000000 +v 0.649519 7.750000 -0.375000 +v 0.375000 7.750000 -0.649519 +v 0.000000 7.625000 0.000000 +v 0.000000 7.750000 -0.500000 +v -0.250000 7.750000 -0.433012 +v -0.433013 7.750000 -0.250000 +v -0.500000 7.750000 0.000000 +v -0.433013 7.750000 0.250000 +v -0.250000 7.750000 0.433013 +v -0.000000 7.750000 0.500000 +v 0.250000 7.750000 0.433013 +v 0.433013 7.750000 0.250000 +v 0.500000 7.750000 0.000000 +v 0.433013 7.750000 -0.250000 +v 0.250000 7.750000 -0.433012 +v -0.125000 8.625000 0.125000 +v -0.125000 8.875000 0.125000 +v -0.125000 8.625000 -0.125000 +v -0.125000 8.875000 -0.125000 +v 0.125000 8.625000 0.125000 +v 0.125000 8.875000 0.125000 +v 0.125000 8.625000 -0.125000 +v 0.125000 8.875000 -0.125000 +v -0.062500 7.750000 0.437500 +v 0.062500 7.750000 0.437500 +v -0.062500 7.750000 0.312500 +v 0.062500 7.750000 0.312500 +v -0.062500 8.625000 0.125000 +v 0.062500 8.625000 0.125000 +v -0.062500 8.625000 0.000000 +v 0.062500 8.625000 0.000000 +v -0.062500 7.750000 -0.312500 +v 0.062500 7.750000 -0.312500 +v -0.062500 7.750000 -0.437500 +v 0.062500 7.750000 -0.437500 +v -0.062500 8.625000 0.000000 +v 0.062500 8.625000 0.000000 +v -0.062500 8.625000 -0.125000 +v 0.062500 8.625000 -0.125000 +vt 0.487179 0.177778 +vt 0.506410 0.133333 +vt 0.506410 0.177778 +vt 0.551282 0.177778 +vt 0.576923 0.133333 +vt 0.576923 0.177778 +vt 0.743615 0.044444 +vt 0.769231 0.000044 +vt 0.794846 0.044444 +vt 0.532051 0.177778 +vt 0.551282 0.133333 +vt 0.794846 0.044445 +vt 0.787344 0.075841 +vt 0.751117 0.013048 +vt 0.532051 0.133333 +vt 0.512821 0.733333 +vt 0.487179 0.688889 +vt 0.512821 0.688889 +vt 0.487179 0.733333 +vt 0.461538 0.688889 +vt 0.461538 0.733333 +vt 0.435897 0.688889 +vt 0.435897 0.733333 +vt 0.410256 0.688889 +vt 0.435897 0.644444 +vt 0.461538 0.644444 +vt 0.461538 0.777778 +vt 0.500000 0.533333 +vt 0.487179 0.688889 +vt 0.487179 0.533333 +vt 0.474359 0.688889 +vt 0.461538 0.533333 +vt 0.474359 0.533333 +vt 0.512821 0.688889 +vt 0.512821 0.533333 +vt 0.500000 0.688889 +vt 0.487179 0.533333 +vt 0.500000 0.533333 +vt 0.474359 0.533333 +vt 0.461538 0.688889 +vt 0.461538 0.533333 +vt 0.512821 0.688889 +vt 0.512821 0.533333 +vt 0.487179 0.688889 +vt 0.487179 0.133333 +vt 0.787344 0.075841 +vt 0.769231 0.088845 +vt 0.751118 0.075841 +vt 0.751117 0.013048 +vt 0.787344 0.013048 +vt 0.769231 0.088845 +vt 0.751117 0.075841 +vt 0.743615 0.044445 +vt 0.769231 0.000044 +vt 0.787344 0.013048 +vt 0.410256 0.733333 +vt 0.435897 0.777778 +vt 0.500000 0.688889 +vt 0.461538 0.688889 +vt 0.474359 0.688889 +vt 0.794872 0.133333 +vt 0.820513 0.100000 +vt 0.820513 0.133333 +vt 0.794872 0.100000 +vt 0.820513 0.066667 +vt 0.794872 0.066667 +vt 0.820513 0.033333 +vt 0.794872 0.033333 +vt 0.820513 0.000000 +vt 0.794872 0.266667 +vt 0.820513 0.233333 +vt 0.820513 0.266667 +vt 0.794872 0.233333 +vt 0.820513 0.200000 +vt 0.794872 0.200000 +vt 0.820513 0.166667 +vt 0.794872 0.166667 +vt 0.980769 0.333333 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.980769 0.333333 +vt 0.961538 0.466667 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.974359 0.000000 +vt 0.974359 -0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.974359 0.000000 +vt 0.974359 -0.000000 +vt 0.717972 0.254688 +vt 0.717972 0.100868 +vt 0.794825 0.177778 +vt 0.794872 0.000000 +vt 0.948718 0.000000 +vt 0.948718 -0.000000 +vt 0.948718 0.000000 +vt 0.948718 0.000000 +vt 0.948718 -0.000000 +vt 0.787961 0.222182 +vt 0.769207 0.254688 +vt 0.743590 0.266586 +vt 0.699219 0.222182 +vt 0.692355 0.177778 +vt 0.699219 0.133374 +vt 0.743590 0.088970 +vt 0.769207 0.100868 +vt 0.787961 0.133374 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.3363 -0.9417 +vn 0.0000 0.3363 0.9417 +vn 0.0000 0.3363 -0.9417 +vn 0.0000 -0.3363 0.9417 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.2869 -0.9435 -0.1656 +vn 0.2236 -0.8944 -0.3873 +vn 0.3873 -0.8944 -0.2236 +vn -0.1656 -0.9435 -0.2869 +vn -0.2869 -0.9435 -0.1656 +vn -0.3313 -0.9435 -0.0000 +vn -0.2869 -0.9435 0.1656 +vn -0.1656 -0.9435 0.2869 +vn -0.0000 -0.9435 0.3313 +vn 0.1656 -0.9435 0.2869 +vn 0.2869 -0.9435 0.1656 +vn 0.3313 -0.9435 0.0000 +vn 0.1656 -0.9435 -0.2869 +vn -0.0000 -0.9435 -0.3313 +vn -0.0000 -0.8944 -0.4472 +vn -0.2236 -0.8944 -0.3873 +vn -0.3873 -0.8944 -0.2236 +vn -0.4472 -0.8944 -0.0000 +vn -0.3873 -0.8944 0.2236 +vn -0.2236 -0.8944 0.3873 +vn -0.0000 -0.8944 0.4472 +vn 0.2236 -0.8944 0.3873 +vn 0.3873 -0.8944 0.2236 +vn 0.4472 -0.8944 0.0000 +vn 0.1756 0.9363 -0.3041 +vn 0.1792 0.9784 -0.1034 +vn 0.3041 0.9363 -0.1756 +vn 0.2069 0.9784 -0.0000 +vn 0.3511 0.9363 -0.0000 +vn 0.1792 0.9784 0.1034 +vn 0.3041 0.9363 0.1756 +vn 0.1756 0.9363 0.3041 +vn 0.1034 0.9784 0.1792 +vn 0.0000 0.9363 0.3511 +vn -0.0000 0.9784 0.2069 +vn -0.1756 0.9363 0.3041 +vn -0.1034 0.9784 0.1792 +vn -0.3041 0.9363 0.1756 +vn -0.1792 0.9784 0.1034 +vn -0.3511 0.9363 -0.0000 +vn -0.2069 0.9784 0.0000 +vn -0.3041 0.9363 -0.1756 +vn -0.1792 0.9784 -0.1034 +vn -0.1756 0.9363 -0.3041 +vn -0.1034 0.9784 -0.1792 +vn 0.0000 0.9784 -0.2069 +vn 0.0000 0.9363 -0.3511 +vn 0.1034 0.9784 -0.1792 +s off +f 51/49/10 54/50/10 49/51/10 +f 52/52/11 53/53/11 51/54/11 +f 46/55/12 42/56/12 38/57/12 +f 50/58/13 56/59/13 52/52/13 +f 45/60/11 47/61/11 39/62/11 +f 49/51/12 55/63/12 50/58/12 +f 95/64/10 96/65/10 94/66/10 +f 97/67/11 100/68/11 96/65/11 +f 101/69/13 98/70/13 100/68/13 +f 99/71/12 94/72/12 98/70/12 +f 100/68/14 94/73/14 96/74/14 +f 97/75/15 99/71/15 101/69/15 +f 105/76/13 107/77/13 103/78/13 +f 106/79/10 104/80/10 102/81/10 +f 108/82/16 105/76/16 104/83/16 +f 107/77/17 102/81/17 103/78/17 +f 117/84/13 111/85/13 113/86/13 +f 110/87/10 116/88/10 112/89/10 +f 116/90/18 113/86/18 112/91/18 +f 115/92/19 110/87/19 111/85/19 +f 51/49/10 53/93/10 54/50/10 +f 52/52/11 56/59/11 53/53/11 +f 38/57/12 36/94/12 34/95/12 +f 34/95/12 48/96/12 46/55/12 +f 46/55/12 44/97/12 42/56/12 +f 42/56/12 40/98/12 38/57/12 +f 38/57/12 34/95/12 46/55/12 +f 50/58/13 55/63/13 56/59/13 +f 47/61/11 33/99/11 35/100/11 +f 35/100/11 37/101/11 47/61/11 +f 37/101/11 39/62/11 47/61/11 +f 39/62/11 41/102/11 43/103/11 +f 43/103/11 45/60/11 39/62/11 +f 49/51/12 54/50/12 55/63/12 +f 95/64/10 97/67/10 96/65/10 +f 97/67/11 101/69/11 100/68/11 +f 101/69/13 99/71/13 98/70/13 +f 99/71/12 95/104/12 94/72/12 +f 100/68/14 98/70/14 94/73/14 +f 97/75/15 95/105/15 99/71/15 +f 105/76/13 109/106/13 107/77/13 +f 106/79/10 108/107/10 104/80/10 +f 108/82/16 109/106/16 105/76/16 +f 107/77/17 106/79/17 102/81/17 +f 117/84/13 115/92/13 111/85/13 +f 110/87/10 114/108/10 116/88/10 +f 116/90/18 117/84/18 113/86/18 +f 115/92/19 114/108/19 110/87/19 +s 1 +f 34/109/15 35/110/20 33/111/15 +f 36/112/20 37/113/13 35/110/20 +f 38/114/13 39/115/21 37/113/13 +f 40/116/21 41/117/14 39/115/21 +f 42/118/14 43/119/22 41/120/14 +f 44/121/22 45/122/10 43/119/22 +f 46/123/10 47/124/23 45/122/10 +f 48/125/23 33/111/15 47/124/23 +f 79/126/24 68/127/25 67/128/26 +f 70/129/27 81/130/14 71/131/28 +f 71/132/28 81/130/14 72/133/29 +f 72/134/29 81/130/14 73/135/30 +f 73/136/30 81/130/14 74/137/31 +f 74/138/31 81/130/14 75/139/32 +f 75/140/32 81/130/14 76/141/33 +f 76/142/33 81/130/14 77/143/34 +f 77/144/34 81/130/14 78/145/35 +f 78/146/35 81/130/14 79/147/24 +f 79/126/24 81/130/14 80/148/36 +f 80/149/36 81/130/14 69/150/37 +f 69/151/37 81/130/14 70/152/27 +f 80/149/36 57/153/38 68/154/25 +f 69/151/37 58/155/39 57/156/38 +f 58/157/39 71/131/28 59/158/40 +f 71/132/28 60/159/41 59/160/40 +f 72/134/29 61/161/42 60/162/41 +f 61/163/42 74/137/31 62/164/43 +f 74/138/31 63/165/44 62/166/43 +f 63/167/44 76/141/33 64/168/45 +f 76/142/33 65/169/46 64/170/45 +f 77/144/34 66/171/47 65/172/46 +f 78/146/35 67/173/26 66/174/47 +f 62/164/48 86/175/49 61/163/50 +f 61/161/50 85/176/51 60/162/52 +f 60/159/52 84/177/53 59/160/54 +f 58/157/55 84/178/53 83/179/56 +f 57/156/57 83/180/56 82/181/58 +f 68/154/59 82/182/58 93/183/60 +f 67/128/61 93/184/60 92/185/62 +f 66/174/63 92/186/62 91/187/64 +f 65/172/65 91/188/64 90/189/66 +f 64/170/67 90/190/66 89/191/68 +f 64/168/67 88/192/69 63/167/70 +f 63/165/70 87/193/71 62/166/48 +f 86/194/49 90/195/66 82/196/58 +f 34/109/15 36/112/20 35/110/20 +f 36/112/20 38/114/13 37/113/13 +f 38/114/13 40/116/21 39/115/21 +f 40/116/21 42/197/14 41/117/14 +f 42/118/14 44/121/22 43/119/22 +f 44/121/22 46/123/10 45/122/10 +f 46/123/10 48/125/23 47/124/23 +f 48/125/23 34/109/15 33/111/15 +f 79/126/24 80/148/36 68/127/25 +f 80/149/36 69/150/37 57/153/38 +f 69/151/37 70/152/27 58/155/39 +f 58/157/39 70/129/27 71/131/28 +f 71/132/28 72/133/29 60/159/41 +f 72/134/29 73/135/30 61/161/42 +f 61/163/42 73/136/30 74/137/31 +f 74/138/31 75/139/32 63/165/44 +f 63/167/44 75/140/32 76/141/33 +f 76/142/33 77/143/34 65/169/46 +f 77/144/34 78/145/35 66/171/47 +f 78/146/35 79/147/24 67/173/26 +f 62/164/48 87/198/71 86/175/49 +f 61/161/50 86/199/49 85/176/51 +f 60/159/52 85/200/51 84/177/53 +f 58/157/55 59/158/54 84/178/53 +f 57/156/57 58/155/55 83/180/56 +f 68/154/59 57/153/57 82/182/58 +f 67/128/61 68/127/59 93/184/60 +f 66/174/63 67/173/61 92/186/62 +f 65/172/65 66/171/63 91/188/64 +f 64/170/67 65/169/65 90/190/66 +f 64/168/67 89/201/68 88/192/69 +f 63/165/70 88/202/69 87/193/71 +f 82/196/58 83/203/56 84/204/53 +f 84/204/53 85/205/51 82/196/58 +f 85/205/51 86/194/49 82/196/58 +f 86/194/49 87/206/71 88/207/69 +f 88/207/69 89/208/68 86/194/49 +f 89/208/68 90/195/66 86/194/49 +f 90/195/66 91/209/64 92/210/62 +f 92/210/62 93/211/60 90/195/66 +f 93/211/60 82/196/58 90/195/66 +o Base +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +v -1.000000 0.750000 1.000000 +v 1.000000 0.750000 1.000000 +v -1.000000 0.750000 -1.000000 +v 1.000000 0.750000 -1.000000 +v -0.750000 1.000000 0.750000 +v 0.750000 1.000000 0.750000 +v -0.750000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.500000 1.000000 -0.500000 +v 0.750000 1.000000 -0.500000 +v 0.500000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.000000 6.000000 0.000000 +v 0.250000 6.000000 0.000000 +v 0.000000 6.000000 -0.250000 +v 0.250000 6.000000 -0.250000 +v 0.500000 1.000000 0.750000 +v 0.750000 1.000000 0.750000 +v 0.500000 1.000000 0.500000 +v 0.750000 1.000000 0.500000 +v 0.000000 6.000000 0.250000 +v 0.250000 6.000000 0.250000 +v 0.000000 6.000000 0.000000 +v 0.250000 6.000000 0.000000 +v -0.750000 1.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.750000 1.000000 -0.750000 +v -0.500000 1.000000 -0.750000 +v -0.250000 6.000000 0.000000 +v 0.000000 6.000000 0.000000 +v -0.250000 6.000000 -0.250000 +v 0.000000 6.000000 -0.250000 +v -0.750000 1.000000 0.750000 +v -0.500000 1.000000 0.750000 +v -0.750000 1.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.250000 6.000000 0.250000 +v 0.000000 6.000000 0.250000 +v -0.250000 6.000000 0.000000 +v 0.000000 6.000000 0.000000 +v -0.375000 6.000000 0.375000 +v 0.375000 6.000000 0.375000 +v -0.375000 6.000000 -0.375000 +v 0.375000 6.000000 -0.375000 +v -0.312500 6.125000 -0.312500 +v -0.312500 6.125000 0.312500 +v 0.312500 6.125000 0.312500 +v 0.312500 6.125000 -0.312500 +v -0.375000 6.125000 -0.375000 +v -0.375000 6.125000 0.375000 +v 0.375000 6.125000 0.375000 +v 0.375000 6.125000 -0.375000 +v -0.312500 6.250000 -0.312500 +v -0.312500 6.250000 0.312500 +v 0.312500 6.250000 0.312500 +v 0.312500 6.250000 -0.312500 +v -0.375000 6.250000 -0.375000 +v -0.375000 6.250000 0.375000 +v 0.375000 6.250000 0.375000 +v 0.375000 6.250000 -0.375000 +v -0.375000 7.000000 -0.375000 +v -0.375000 7.000000 0.375000 +v 0.375000 7.000000 0.375000 +v 0.375000 7.000000 -0.375000 +v 0.562500 2.125000 -0.500000 +v 0.687500 1.125000 0.500000 +v 0.437500 2.125000 -0.500000 +v 0.562500 1.125000 0.500000 +v 0.687500 1.000000 0.500000 +v 0.562500 1.000000 0.500000 +v 0.562500 2.000000 -0.500000 +v 0.437500 2.000000 -0.500000 +v 0.687500 1.125000 -0.500000 +v 0.562500 2.125000 0.500000 +v 0.562500 1.125000 -0.500000 +v 0.437500 2.125000 0.500000 +v 0.562500 2.000000 0.500000 +v 0.437500 2.000000 0.500000 +v 0.687500 1.000000 -0.500000 +v 0.562500 1.000000 -0.500000 +v 0.437500 3.125000 -0.375000 +v 0.562500 2.375000 0.375000 +v 0.312500 3.125000 -0.375000 +v 0.437500 2.375000 0.375000 +v 0.562500 2.250000 0.375000 +v 0.437500 2.250000 0.375000 +v 0.437500 3.000000 -0.375000 +v 0.312500 3.000000 -0.375000 +v 0.562500 2.375000 -0.375000 +v 0.437500 3.125000 0.375000 +v 0.437500 2.375000 -0.375000 +v 0.312500 3.125000 0.375000 +v 0.437500 3.000000 0.375000 +v 0.312500 3.000000 0.375000 +v 0.562500 2.250000 -0.375000 +v 0.437500 2.250000 -0.375000 +v 0.375000 4.000000 -0.312500 +v 0.437500 3.375000 0.312500 +v 0.250000 4.000000 -0.312500 +v 0.312500 3.375000 0.312500 +v 0.437500 3.250000 0.312500 +v 0.312500 3.250000 0.312500 +v 0.375000 3.875000 -0.312500 +v 0.250000 3.875000 -0.312500 +v 0.437500 3.375000 -0.312500 +v 0.375000 4.000000 0.312500 +v 0.312500 3.375000 -0.312500 +v 0.250000 4.000000 0.312500 +v 0.375000 3.875000 0.312500 +v 0.250000 3.875000 0.312500 +v 0.437500 3.250000 -0.312500 +v 0.312500 3.250000 -0.312500 +v -0.562500 2.125000 0.500000 +v -0.687500 1.125000 -0.500000 +v -0.437500 2.125000 0.500000 +v -0.562500 1.125000 -0.500000 +v -0.687500 1.000000 -0.500000 +v -0.562500 1.000000 -0.500000 +v -0.562500 2.000000 0.500000 +v -0.437500 2.000000 0.500000 +v -0.687500 1.125000 0.500000 +v -0.562500 2.125000 -0.500000 +v -0.562500 1.125000 0.500000 +v -0.437500 2.125000 -0.500000 +v -0.562500 2.000000 -0.500000 +v -0.437500 2.000000 -0.500000 +v -0.687500 1.000000 0.500000 +v -0.562500 1.000000 0.500000 +v -0.437500 3.125000 0.375000 +v -0.562500 2.375000 -0.375000 +v -0.312500 3.125000 0.375000 +v -0.437500 2.375000 -0.375000 +v -0.562500 2.250000 -0.375000 +v -0.437500 2.250000 -0.375000 +v -0.437500 3.000000 0.375000 +v -0.312500 3.000000 0.375000 +v -0.562500 2.375000 0.375000 +v -0.437500 3.125000 -0.375000 +v -0.437500 2.375000 0.375000 +v -0.312500 3.125000 -0.375000 +v -0.437500 3.000000 -0.375000 +v -0.312500 3.000000 -0.375000 +v -0.562500 2.250000 0.375000 +v -0.437500 2.250000 0.375000 +v -0.375000 4.000000 0.312500 +v -0.437500 3.375000 -0.312500 +v -0.250000 4.000000 0.312500 +v -0.312500 3.375000 -0.312500 +v -0.437500 3.250000 -0.312500 +v -0.312500 3.250000 -0.312500 +v -0.375000 3.875000 0.312500 +v -0.250000 3.875000 0.312500 +v -0.437500 3.375000 0.312500 +v -0.375000 4.000000 -0.312500 +v -0.312500 3.375000 0.312500 +v -0.250000 4.000000 -0.312500 +v -0.375000 3.875000 -0.312500 +v -0.250000 3.875000 -0.312500 +v -0.437500 3.250000 0.312500 +v -0.312500 3.250000 0.312500 +v -0.500000 2.125000 -0.562500 +v 0.500000 1.125000 -0.687500 +v -0.500000 2.125000 -0.437500 +v 0.500000 1.125000 -0.562500 +v 0.500000 1.000000 -0.687500 +v 0.500000 1.000000 -0.562500 +v -0.500000 2.000000 -0.562500 +v -0.500000 2.000000 -0.437500 +v -0.500000 1.125000 -0.687500 +v 0.500000 2.125000 -0.562500 +v -0.500000 1.125000 -0.562500 +v 0.500000 2.125000 -0.437500 +v 0.500000 2.000000 -0.562500 +v 0.500000 2.000000 -0.437500 +v -0.500000 1.000000 -0.687500 +v -0.500000 1.000000 -0.562500 +v -0.375000 3.125000 -0.437500 +v 0.375000 2.375000 -0.562500 +v -0.375000 3.125000 -0.312500 +v 0.375000 2.375000 -0.437500 +v 0.375000 2.250000 -0.562500 +v 0.375000 2.250000 -0.437500 +v -0.375000 3.000000 -0.437500 +v -0.375000 3.000000 -0.312500 +v -0.375000 2.375000 -0.562500 +v 0.375000 3.125000 -0.437500 +v -0.375000 2.375000 -0.437500 +v 0.375000 3.125000 -0.312500 +v 0.375000 3.000000 -0.437500 +v 0.375000 3.000000 -0.312500 +v -0.375000 2.250000 -0.562500 +v -0.375000 2.250000 -0.437500 +v -0.312500 4.000000 -0.375000 +v 0.312500 3.375000 -0.437500 +v -0.312500 4.000000 -0.250000 +v 0.312500 3.375000 -0.312500 +v 0.312500 3.250000 -0.437500 +v 0.312500 3.250000 -0.312500 +v -0.312500 3.875000 -0.375000 +v -0.312500 3.875000 -0.250000 +v -0.312500 3.375000 -0.437500 +v 0.312500 4.000000 -0.375000 +v -0.312500 3.375000 -0.312500 +v 0.312500 4.000000 -0.250000 +v 0.312500 3.875000 -0.375000 +v 0.312500 3.875000 -0.250000 +v -0.312500 3.250000 -0.437500 +v -0.312500 3.250000 -0.312500 +v 0.500000 2.125000 0.562500 +v -0.500000 1.125000 0.687500 +v 0.500000 2.125000 0.437500 +v -0.500000 1.125000 0.562500 +v -0.500000 1.000000 0.687500 +v -0.500000 1.000000 0.562500 +v 0.500000 2.000000 0.562500 +v 0.500000 2.000000 0.437500 +v 0.500000 1.125000 0.687500 +v -0.500000 2.125000 0.562500 +v 0.500000 1.125000 0.562500 +v -0.500000 2.125000 0.437500 +v -0.500000 2.000000 0.562500 +v -0.500000 2.000000 0.437500 +v 0.500000 1.000000 0.687500 +v 0.500000 1.000000 0.562500 +v 0.375000 3.125000 0.437500 +v -0.375000 2.375000 0.562500 +v 0.375000 3.125000 0.312500 +v -0.375000 2.375000 0.437500 +v -0.375000 2.250000 0.562500 +v -0.375000 2.250000 0.437500 +v 0.375000 3.000000 0.437500 +v 0.375000 3.000000 0.312500 +v 0.375000 2.375000 0.562500 +v -0.375000 3.125000 0.437500 +v 0.375000 2.375000 0.437500 +v -0.375000 3.125000 0.312500 +v -0.375000 3.000000 0.437500 +v -0.375000 3.000000 0.312500 +v 0.375000 2.250000 0.562500 +v 0.375000 2.250000 0.437500 +v 0.312500 4.000000 0.375000 +v -0.312500 3.375000 0.437500 +v 0.312500 4.000000 0.250000 +v -0.312500 3.375000 0.312500 +v -0.312500 3.250000 0.437500 +v -0.312500 3.250000 0.312500 +v 0.312500 3.875000 0.375000 +v 0.312500 3.875000 0.250000 +v 0.312500 3.375000 0.437500 +v -0.312500 4.000000 0.375000 +v 0.312500 3.375000 0.312500 +v -0.312500 4.000000 0.250000 +v -0.312500 3.875000 0.375000 +v -0.312500 3.875000 0.250000 +v 0.312500 3.250000 0.437500 +v 0.312500 3.250000 0.312500 +vt 0.410256 -0.000000 +vt 0.205128 0.355556 +vt 0.205128 -0.000000 +vt 0.410256 0.488889 +vt 0.230769 0.533333 +vt 0.205128 0.488889 +vt 0.410256 0.355556 +vt 0.820513 0.355556 +vt 0.615385 0.488889 +vt 0.615385 0.355556 +vt 0.000000 0.488889 +vt 0.000000 0.355556 +vt 0.384615 0.800000 +vt 0.230769 0.800000 +vt 0.820513 0.488889 +vt 0.641026 0.533333 +vt 0.435897 0.533333 +vt 0.025641 0.533333 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.846154 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.897436 0.000000 +vt 0.871795 0.888889 +vt 0.846154 0.000000 +vt 0.871795 0.000000 +vt 0.897436 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.897436 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.846154 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.897436 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.846154 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.666667 0.533333 +vt 0.589744 0.666667 +vt 0.589744 0.533333 +vt 0.660256 0.700000 +vt 0.596154 0.722222 +vt 0.596154 0.700000 +vt 0.666667 0.666667 +vt 0.589744 0.688889 +vt 0.820513 0.666667 +vt 0.743590 0.688889 +vt 0.743590 0.666667 +vt 0.666667 0.688889 +vt 0.512821 0.688889 +vt 0.512821 0.666667 +vt 0.750000 0.700000 +vt 0.820513 0.688889 +vt 0.814103 0.700000 +vt 0.519231 0.700000 +vt 0.583333 0.700000 +vt 0.673077 0.700000 +vt 0.737179 0.700000 +vt 0.820513 0.733333 +vt 0.750000 0.722222 +vt 0.814103 0.722222 +vt 0.673077 0.722222 +vt 0.519231 0.722222 +vt 0.589744 0.733333 +vt 0.583333 0.722222 +vt 0.666667 0.733333 +vt 0.660256 0.722222 +vt 0.743590 0.733333 +vt 0.737179 0.722222 +vt 0.589744 0.866667 +vt 0.743590 0.866667 +vt 0.666667 0.866667 +vt 0.512821 0.866667 +vt 0.512821 0.733333 +vt 0.589744 1.000000 +vt 0.666667 1.000000 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.384615 0.533333 +vt 0.794872 0.533333 +vt 0.589744 0.533333 +vt 0.179487 0.533333 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.820513 0.866667 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.0995 0.9950 +vn 0.9950 0.0995 0.0000 +vn -0.9950 -0.0995 0.0000 +vn 0.0000 0.0995 -0.9950 +vn 0.0000 0.0995 0.9950 +vn 0.0000 -0.0995 -0.9950 +vn 0.9950 -0.0995 0.0000 +vn -0.9950 0.0995 0.0000 +vn 0.9923 0.0000 -0.1240 +vn -0.9923 0.0000 0.1240 +vn 0.0000 -0.7071 -0.7071 +vn 0.9923 0.0000 0.1240 +vn -0.9923 0.0000 -0.1240 +vn 0.0000 -0.7071 0.7071 +vn 0.9864 0.0000 -0.1644 +vn -0.9864 0.0000 0.1644 +vn 0.9864 0.0000 0.1644 +vn -0.9864 0.0000 -0.1644 +vn 0.9950 0.0000 -0.0995 +vn -0.9950 0.0000 0.0995 +vn 0.9950 0.0000 0.0995 +vn -0.9950 0.0000 -0.0995 +vn -0.1240 0.0000 -0.9923 +vn 0.1240 0.0000 0.9923 +vn -0.7071 -0.7071 0.0000 +vn 0.1240 0.0000 -0.9923 +vn -0.1240 0.0000 0.9923 +vn 0.7071 -0.7071 0.0000 +vn -0.1644 0.0000 -0.9864 +vn 0.1644 0.0000 0.9864 +vn 0.1644 0.0000 -0.9864 +vn -0.1644 0.0000 0.9864 +vn -0.0995 0.0000 -0.9950 +vn 0.0995 0.0000 0.9950 +vn 0.0995 0.0000 -0.9950 +vn -0.0995 0.0000 0.9950 +s off +f 120/212/72 119/213/72 118/214/72 +f 125/215/73 127/216/73 123/217/73 +f 121/218/74 123/217/74 119/213/74 +f 118/219/75 124/220/75 120/221/75 +f 120/221/76 125/215/76 121/218/76 +f 119/213/77 122/222/77 118/223/77 +f 127/216/78 128/224/78 126/225/78 +f 122/226/79 128/227/79 124/220/79 +f 124/220/80 129/228/80 125/215/80 +f 123/217/81 126/229/81 122/222/81 +f 135/230/82 130/231/82 131/232/82 +f 137/233/83 131/232/83 133/234/83 +f 130/235/84 136/236/84 132/237/84 +f 132/237/85 137/233/85 133/234/85 +f 143/238/86 138/239/86 139/240/86 +f 141/241/83 143/238/83 139/240/83 +f 142/242/84 140/243/84 138/239/84 +f 140/244/87 145/245/87 141/241/87 +f 147/246/82 150/247/82 146/248/82 +f 153/249/88 147/250/88 149/251/88 +f 146/248/89 152/252/89 148/253/89 +f 152/252/85 149/251/85 148/253/85 +f 155/254/86 158/255/86 154/256/86 +f 157/257/88 159/258/88 155/254/88 +f 158/255/89 156/259/89 154/256/89 +f 160/260/87 157/261/87 156/259/87 +f 164/262/72 163/263/72 162/264/72 +f 169/265/74 176/266/74 168/267/74 +f 165/268/74 172/269/74 163/263/74 +f 162/270/75 170/271/75 164/272/75 +f 164/272/76 173/273/76 165/268/76 +f 163/263/77 171/274/77 162/275/77 +f 166/276/78 171/277/78 167/278/78 +f 167/279/78 172/269/78 168/280/78 +f 168/267/78 173/273/78 169/265/78 +f 169/281/78 170/271/78 166/282/78 +f 179/283/72 174/284/72 175/285/72 +f 167/278/75 174/284/75 166/276/75 +f 166/282/76 177/286/76 169/281/76 +f 168/280/77 175/287/77 167/279/77 +f 180/288/72 175/287/72 176/289/72 +f 181/290/72 176/266/72 177/291/72 +f 178/292/72 177/286/72 174/293/72 +f 181/290/74 184/294/74 180/288/74 +f 179/283/75 182/295/75 178/292/75 +f 178/292/76 185/296/76 181/290/76 +f 180/288/77 183/297/77 179/298/77 +f 183/299/78 185/296/78 182/300/78 +f 192/301/90 187/302/90 190/303/90 +f 193/304/91 189/305/91 188/306/91 +f 189/305/81 186/307/81 188/306/81 +f 191/308/92 192/301/92 190/303/92 +f 198/309/93 194/310/93 195/311/93 +f 199/312/94 196/313/94 201/314/94 +f 195/311/80 196/313/80 197/315/80 +f 201/316/95 198/309/95 199/317/95 +f 208/318/96 203/319/96 206/320/96 +f 209/321/97 205/322/97 204/323/97 +f 205/322/81 202/324/81 204/323/81 +f 207/325/92 208/318/92 206/320/92 +f 214/326/98 210/327/98 211/328/98 +f 215/329/99 212/330/99 217/331/99 +f 211/328/80 212/330/80 213/332/80 +f 217/333/95 214/326/95 215/334/95 +f 224/335/100 219/336/100 222/337/100 +f 225/338/101 221/339/101 220/340/101 +f 221/339/81 218/341/81 220/340/81 +f 223/342/92 224/335/92 222/337/92 +f 230/343/102 226/344/102 227/345/102 +f 231/346/103 228/347/103 233/348/103 +f 227/345/80 228/347/80 229/349/80 +f 233/350/95 230/343/95 231/351/95 +f 240/352/91 235/353/91 238/354/91 +f 241/355/90 237/356/90 236/357/90 +f 237/356/80 234/358/80 236/357/80 +f 239/359/95 240/352/95 238/354/95 +f 246/360/94 242/361/94 243/362/94 +f 247/363/93 244/364/93 249/365/93 +f 243/362/81 244/364/81 245/366/81 +f 249/367/92 246/360/92 247/368/92 +f 256/369/97 251/370/97 254/371/97 +f 257/372/96 253/373/96 252/374/96 +f 253/373/80 250/375/80 252/374/80 +f 255/376/95 256/369/95 254/371/95 +f 262/377/99 258/378/99 259/379/99 +f 263/380/98 260/381/98 265/382/98 +f 259/379/81 260/381/81 261/383/81 +f 265/384/92 262/377/92 263/385/92 +f 272/386/101 267/387/101 270/388/101 +f 273/389/100 269/390/100 268/391/100 +f 269/390/80 266/392/80 268/391/80 +f 271/393/95 272/386/95 270/388/95 +f 278/394/103 274/395/103 275/396/103 +f 279/397/102 276/398/102 281/399/102 +f 275/396/81 276/398/81 277/400/81 +f 281/401/92 278/394/92 279/402/92 +f 288/403/104 283/404/104 286/405/104 +f 289/406/105 285/407/105 284/408/105 +f 285/407/73 282/409/73 284/408/73 +f 287/410/106 288/403/106 286/405/106 +f 294/411/107 290/412/107 291/413/107 +f 295/414/108 292/415/108 297/416/108 +f 291/413/79 292/415/79 293/417/79 +f 297/418/109 294/411/109 295/419/109 +f 304/420/110 299/421/110 302/422/110 +f 305/423/111 301/424/111 300/425/111 +f 301/424/73 298/426/73 300/425/73 +f 303/427/106 304/420/106 302/422/106 +f 310/428/112 306/429/112 307/430/112 +f 311/431/113 308/432/113 313/433/113 +f 307/430/79 308/432/79 309/434/79 +f 313/435/109 310/428/109 311/436/109 +f 320/437/114 315/438/114 318/439/114 +f 321/440/115 317/441/115 316/442/115 +f 317/441/73 314/443/73 316/442/73 +f 319/444/106 320/437/106 318/439/106 +f 326/445/116 322/446/116 323/447/116 +f 327/448/117 324/449/117 329/450/117 +f 323/447/79 324/449/79 325/451/79 +f 329/452/109 326/445/109 327/453/109 +f 336/454/105 331/455/105 334/456/105 +f 337/457/104 333/458/104 332/459/104 +f 333/458/79 330/460/79 332/459/79 +f 335/461/109 336/454/109 334/456/109 +f 342/462/108 338/463/108 339/464/108 +f 343/465/107 340/466/107 345/467/107 +f 339/464/73 340/466/73 341/468/73 +f 345/469/106 342/462/106 343/470/106 +f 352/471/111 347/472/111 350/473/111 +f 353/474/110 349/475/110 348/476/110 +f 349/475/79 346/477/79 348/476/79 +f 351/478/109 352/471/109 350/473/109 +f 358/479/113 354/480/113 355/481/113 +f 359/482/112 356/483/112 361/484/112 +f 355/481/73 356/483/73 357/485/73 +f 361/486/106 358/479/106 359/487/106 +f 368/488/115 363/489/115 366/490/115 +f 369/491/114 365/492/114 364/493/114 +f 365/492/79 362/494/79 364/493/79 +f 367/495/109 368/488/109 366/490/109 +f 374/496/117 370/497/117 371/498/117 +f 375/499/116 372/500/116 377/501/116 +f 371/498/73 372/500/73 373/502/73 +f 377/503/106 374/496/106 375/504/106 +f 120/212/72 121/218/72 119/213/72 +f 125/215/73 129/505/73 127/216/73 +f 121/218/74 125/215/74 123/217/74 +f 118/219/75 122/226/75 124/220/75 +f 120/221/76 124/220/76 125/215/76 +f 119/213/77 123/217/77 122/222/77 +f 127/216/78 129/505/78 128/224/78 +f 122/226/79 126/506/79 128/227/79 +f 124/220/80 128/507/80 129/228/80 +f 123/217/81 127/508/81 126/229/81 +f 135/230/82 134/509/82 130/231/82 +f 137/233/83 135/230/83 131/232/83 +f 130/235/84 134/510/84 136/236/84 +f 132/237/85 136/236/85 137/233/85 +f 143/238/86 142/242/86 138/239/86 +f 141/241/83 145/245/83 143/238/83 +f 142/242/84 144/511/84 140/243/84 +f 140/244/87 144/512/87 145/245/87 +f 147/246/82 151/513/82 150/247/82 +f 153/249/88 151/514/88 147/250/88 +f 146/248/89 150/247/89 152/252/89 +f 152/252/85 153/249/85 149/251/85 +f 155/254/86 159/258/86 158/255/86 +f 157/257/88 161/515/88 159/258/88 +f 158/255/89 160/260/89 156/259/89 +f 160/260/87 161/516/87 157/261/87 +f 164/262/72 165/268/72 163/263/72 +f 169/265/74 177/291/74 176/266/74 +f 165/268/74 173/273/74 172/269/74 +f 162/270/75 171/277/75 170/271/75 +f 164/272/76 170/271/76 173/273/76 +f 163/263/77 172/269/77 171/274/77 +f 166/276/78 170/271/78 171/277/78 +f 167/279/78 171/274/78 172/269/78 +f 168/267/78 172/269/78 173/273/78 +f 169/281/78 173/273/78 170/271/78 +f 179/283/72 178/292/72 174/284/72 +f 167/278/75 175/285/75 174/284/75 +f 166/282/76 174/293/76 177/286/76 +f 168/280/77 176/289/77 175/287/77 +f 180/288/72 179/298/72 175/287/72 +f 181/290/72 180/288/72 176/266/72 +f 178/292/72 181/290/72 177/286/72 +f 181/290/74 185/296/74 184/294/74 +f 179/283/75 183/517/75 182/295/75 +f 178/292/76 182/295/76 185/296/76 +f 180/288/77 184/294/77 183/297/77 +f 183/299/78 184/294/78 185/296/78 +f 192/301/90 186/307/90 187/302/90 +f 193/304/91 191/518/91 189/305/91 +f 189/305/81 187/302/81 186/307/81 +f 191/308/92 193/519/92 192/301/92 +f 198/309/93 200/520/93 194/310/93 +f 199/312/94 197/315/94 196/313/94 +f 195/311/80 194/310/80 196/313/80 +f 201/316/95 200/520/95 198/309/95 +f 208/318/96 202/324/96 203/319/96 +f 209/321/97 207/521/97 205/322/97 +f 205/322/81 203/319/81 202/324/81 +f 207/325/92 209/522/92 208/318/92 +f 214/326/98 216/523/98 210/327/98 +f 215/329/99 213/332/99 212/330/99 +f 211/328/80 210/327/80 212/330/80 +f 217/333/95 216/523/95 214/326/95 +f 224/335/100 218/341/100 219/336/100 +f 225/338/101 223/524/101 221/339/101 +f 221/339/81 219/336/81 218/341/81 +f 223/342/92 225/525/92 224/335/92 +f 230/343/102 232/526/102 226/344/102 +f 231/346/103 229/349/103 228/347/103 +f 227/345/80 226/344/80 228/347/80 +f 233/350/95 232/526/95 230/343/95 +f 240/352/91 234/358/91 235/353/91 +f 241/355/90 239/527/90 237/356/90 +f 237/356/80 235/353/80 234/358/80 +f 239/359/95 241/528/95 240/352/95 +f 246/360/94 248/529/94 242/361/94 +f 247/363/93 245/366/93 244/364/93 +f 243/362/81 242/361/81 244/364/81 +f 249/367/92 248/529/92 246/360/92 +f 256/369/97 250/375/97 251/370/97 +f 257/372/96 255/530/96 253/373/96 +f 253/373/80 251/370/80 250/375/80 +f 255/376/95 257/531/95 256/369/95 +f 262/377/99 264/532/99 258/378/99 +f 263/380/98 261/383/98 260/381/98 +f 259/379/81 258/378/81 260/381/81 +f 265/384/92 264/532/92 262/377/92 +f 272/386/101 266/392/101 267/387/101 +f 273/389/100 271/533/100 269/390/100 +f 269/390/80 267/387/80 266/392/80 +f 271/393/95 273/534/95 272/386/95 +f 278/394/103 280/535/103 274/395/103 +f 279/397/102 277/400/102 276/398/102 +f 275/396/81 274/395/81 276/398/81 +f 281/401/92 280/535/92 278/394/92 +f 288/403/104 282/409/104 283/404/104 +f 289/406/105 287/536/105 285/407/105 +f 285/407/73 283/404/73 282/409/73 +f 287/410/106 289/537/106 288/403/106 +f 294/411/107 296/538/107 290/412/107 +f 295/414/108 293/417/108 292/415/108 +f 291/413/79 290/412/79 292/415/79 +f 297/418/109 296/538/109 294/411/109 +f 304/420/110 298/426/110 299/421/110 +f 305/423/111 303/539/111 301/424/111 +f 301/424/73 299/421/73 298/426/73 +f 303/427/106 305/540/106 304/420/106 +f 310/428/112 312/541/112 306/429/112 +f 311/431/113 309/434/113 308/432/113 +f 307/430/79 306/429/79 308/432/79 +f 313/435/109 312/541/109 310/428/109 +f 320/437/114 314/443/114 315/438/114 +f 321/440/115 319/542/115 317/441/115 +f 317/441/73 315/438/73 314/443/73 +f 319/444/106 321/543/106 320/437/106 +f 326/445/116 328/544/116 322/446/116 +f 327/448/117 325/451/117 324/449/117 +f 323/447/79 322/446/79 324/449/79 +f 329/452/109 328/544/109 326/445/109 +f 336/454/105 330/460/105 331/455/105 +f 337/457/104 335/545/104 333/458/104 +f 333/458/79 331/455/79 330/460/79 +f 335/461/109 337/546/109 336/454/109 +f 342/462/108 344/547/108 338/463/108 +f 343/465/107 341/468/107 340/466/107 +f 339/464/73 338/463/73 340/466/73 +f 345/469/106 344/547/106 342/462/106 +f 352/471/111 346/477/111 347/472/111 +f 353/474/110 351/548/110 349/475/110 +f 349/475/79 347/472/79 346/477/79 +f 351/478/109 353/549/109 352/471/109 +f 358/479/113 360/550/113 354/480/113 +f 359/482/112 357/485/112 356/483/112 +f 355/481/73 354/480/73 356/483/73 +f 361/486/106 360/550/106 358/479/106 +f 368/488/115 362/494/115 363/489/115 +f 369/491/114 367/551/114 365/492/114 +f 365/492/79 363/489/79 362/494/79 +f 367/495/109 369/552/109 368/488/109 +f 374/496/117 376/553/117 370/497/117 +f 375/499/116 373/502/116 372/500/116 +f 371/498/73 370/497/73 372/500/73 +f 377/503/106 376/553/106 374/496/106 diff --git a/src/main/resources/assets/hbm/structures/tower_base.nbt b/src/main/resources/assets/hbm/structures/tower_base.nbt index f2af67a08..79cb1d878 100644 Binary files a/src/main/resources/assets/hbm/structures/tower_base.nbt and b/src/main/resources/assets/hbm/structures/tower_base.nbt differ diff --git a/src/main/resources/assets/hbm/textures/items/clay_tablet.png b/src/main/resources/assets/hbm/textures/items/clay_tablet.png index 640d51e22..d3ce9e6a9 100644 Binary files a/src/main/resources/assets/hbm/textures/items/clay_tablet.png and b/src/main/resources/assets/hbm/textures/items/clay_tablet.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/satlink.png b/src/main/resources/assets/hbm/textures/models/machines/satlink.png new file mode 100644 index 000000000..154023649 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/satlink.png differ