From 39aa0de0083ab2d74fc7cca51464f53ae5880e44 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 7 Dec 2025 22:01:33 +0100 Subject: [PATCH] load of crap that doesn't work --- .../blocks/machine/MachineAnnihilator.java | 32 +- .../ContainerMachineAnnihilator.java | 63 + .../inventory/gui/GUIMachineAnnihilator.java | 41 + src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 7 + .../render/tileentity/RenderAnnihilator.java | 79 + .../hbm/saveddata/AnnihilatorSavedData.java | 141 +- .../machine/TileEntityMachineAnnihilator.java | 76 +- .../hbm/models/machines/annihilator.obj | 1457 +++++++++++++++++ .../gui/processing/gui_annihilator.png | Bin 1601 -> 2093 bytes .../textures/models/machines/annihilator.png | Bin 0 -> 12276 bytes .../models/machines/annihilator_belt.png | Bin 0 -> 251 bytes 12 files changed, 1860 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineAnnihilator.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderAnnihilator.java create mode 100644 src/main/resources/assets/hbm/models/machines/annihilator.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/annihilator.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/annihilator_belt.png diff --git a/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java b/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java index 1330bd9e6..38bb83680 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAnnihilator.java @@ -1,11 +1,15 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineAnnihilator; 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 MachineAnnihilator extends BlockDummyable { @@ -16,16 +20,36 @@ public class MachineAnnihilator extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityMachineAnnihilator(); + 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 standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {2, 0, 4, 4, 1, 1}; } + @Override public int getOffset() { return 4; } @Override - public int[] getDimensions() { - return new int[] {0, 0, 0, 0, 0, 0}; + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * (o - 3), y, z + dir.offsetZ * (o - 3), new int[] {8, -2, 1, 1, 1, 1}, x, y, z, dir); } @Override - public int getOffset() { - return 0; + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * (o - 3), y, z + dir.offsetZ * (o - 3), new int[] {8, -2, 1, 1, 1, 1}, this, dir); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x + dir.offsetX * 3 + rot.offsetX, y, z + dir.offsetZ * 3 + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 3 - rot.offsetX, y, z + dir.offsetZ * 3 - rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 4, y, z + dir.offsetZ * 4); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineAnnihilator.java b/src/main/java/com/hbm/inventory/container/ContainerMachineAnnihilator.java new file mode 100644 index 000000000..8ad26474f --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineAnnihilator.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotNonRetarded; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.util.InventoryUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineAnnihilator extends ContainerBase { + + public ContainerMachineAnnihilator(InventoryPlayer invPlayer, IInventory annihilator) { + super(invPlayer, annihilator); + + // Input + this.addSlotToContainer(new SlotNonRetarded(annihilator, 0, 17, 45)); + // Fluid ID + this.addSlotToContainer(new SlotNonRetarded(annihilator, 1, 35, 45)); + // Output + this.addOutputSlots(invPlayer.player, annihilator, 2, 80, 36, 2, 3); + + this.playerInv(invPlayer, 8, 126); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack slotOriginal = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack slotStack = slot.getStack(); + slotOriginal = slotStack.copy(); + + if(index <= tile.getSizeInventory() - 1) { + SlotCraftingOutput.checkAchievements(player, slotStack); + if(!this.mergeItemStack(slotStack, tile.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(slotOriginal.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(slotStack, 0, 1, false)) return null; + } else { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 1, 2, false)) return null; + } + } + + if(slotStack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + + slot.onPickupFromSlot(player, slotStack); + } + + return slotOriginal; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java new file mode 100644 index 000000000..6701a0a35 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAnnihilator.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineAnnihilator; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineAnnihilator; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineAnnihilator extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_annihilator.png"); + private TileEntityMachineAnnihilator assembler; + + public GUIMachineAnnihilator(InventoryPlayer invPlayer, TileEntityMachineAnnihilator tedf) { + super(new ContainerMachineAnnihilator(invPlayer, tedf)); + assembler = tedf; + + this.xSize = 176; + this.ySize = 208; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 2f2d7f2f4..fa3544020 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -265,6 +265,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyIndustrial.class, new RenderChimneyIndustrial()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAnnihilator.class, new RenderAnnihilator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemblyMachine.class, new RenderAssemblyMachine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssemfac.class, new RenderAssemfac()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 7ec92d76b..8e9d147db 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -134,6 +134,9 @@ public class ResourceManager { public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); public static final IModelCustom ammo_press = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ammo_press.obj")).asVBO(); + + //Annihilator + public static final IModelCustom annihilator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/annihilator.obj")).asVBO(); //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); @@ -576,6 +579,10 @@ public class ResourceManager { public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); public static final ResourceLocation ammo_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ammo_press.png"); + + //Annihilator + public static final ResourceLocation annihilator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/annihilator.png"); + public static final ResourceLocation annihilator_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/annihilator_belt.png"); //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderAnnihilator.java b/src/main/java/com/hbm/render/tileentity/RenderAnnihilator.java new file mode 100644 index 000000000..8c813e241 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAnnihilator.java @@ -0,0 +1,79 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAnnihilator extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + } + + bindTexture(ResourceManager.annihilator_tex); + ResourceManager.annihilator.renderPart("Annihilator"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(System.currentTimeMillis() * 0.15 % 360, 0, 0, -1); + GL11.glTranslated(0, -1.75, 0); + ResourceManager.annihilator.renderPart("Roller"); + GL11.glPopMatrix(); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + bindTexture(ResourceManager.annihilator_belt_tex); + GL11.glTranslated(-System.currentTimeMillis() / 3000D % 1D, 0, 0); + ResourceManager.annihilator.renderPart("Belt"); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_annihilator); + } + + @Override + public IItemRenderer getRenderer() { + + return new ItemRenderBase() { + + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.annihilator_tex); + ResourceManager.annihilator.renderPart("Annihilator"); + ResourceManager.annihilator.renderPart("Roller"); + bindTexture(ResourceManager.annihilator_belt_tex); + ResourceManager.annihilator.renderPart("Belt"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java index 955b87356..64592fc18 100644 --- a/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java +++ b/src/main/java/com/hbm/saveddata/AnnihilatorSavedData.java @@ -6,20 +6,20 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.util.ItemStackUtil; +import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagByte; import net.minecraft.nbt.NBTTagByteArray; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.nbt.NBTTagShort; -import net.minecraft.nbt.NBTTagString; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; +@NotableComments public class AnnihilatorSavedData extends WorldSavedData { public static final String KEY = "annihilator"; @@ -35,29 +35,61 @@ public class AnnihilatorSavedData extends WorldSavedData { @Override public void readFromNBT(NBTTagCompound nbt) { + NBTTagList pools = nbt.getTagList("pools", 10); - //NBTTagList list = nbt.getTagList(p_150295_1_, p_150295_2_) + for(int i = 0; i < pools.tagCount(); i++) { + NBTTagCompound poolCompound = pools.getCompoundTagAt(i); + + String poolName = poolCompound.getString("poolname"); + AnnihilatorPool pool = new AnnihilatorPool(); + pool.deserialize(poolCompound.getTagList("pool", 7)); + + this.pools.put(poolName, pool); + } } + + /* + * woah nelly! + * + * ROOT NBT + * \ + * POOLS LIST(COMPOUND) - all pools + * \ + * POOL COMPOUND - pool + name association + * \ + * POOLNAME STRING + * POOL LIST(LIST) - all item entries in a pool + * \ + * PER-ITEM LIST(BYTEARRAY) - all data associated with one item + * \ + * KEY ID + * KEY BYTES + * POOL SIZE BYTES + */ @Override public void writeToNBT(NBTTagCompound nbt) { - NBTTagList list = new NBTTagList(); - for(Entry entry : pools.entrySet()) { - list.appendTag(new NBTTagString(entry.getKey())); + NBTTagList pools = new NBTTagList(); + + for(Entry entry : this.pools.entrySet()) { + NBTTagCompound pool = new NBTTagCompound(); NBTTagList poolList = new NBTTagList(); + entry.getValue().serialize(poolList); - list.appendTag(poolList); + pool.setString("poolname", entry.getKey()); + pool.setTag("pool", poolList); + pools.appendTag(pool); } - nbt.setTag("list", list); + nbt.setTag("pools", pools); } public static AnnihilatorSavedData getData(World worldObj) { AnnihilatorSavedData data = (AnnihilatorSavedData) worldObj.perWorldStorage.loadData(AnnihilatorSavedData.class, KEY); if(data == null) { - data = new AnnihilatorSavedData(); - worldObj.perWorldStorage.setData(KEY, data); + worldObj.perWorldStorage.setData(KEY, new AnnihilatorSavedData()); + data = (AnnihilatorSavedData) worldObj.perWorldStorage.loadData(AnnihilatorSavedData.class, KEY); } return data; } @@ -86,7 +118,7 @@ public class AnnihilatorSavedData extends WorldSavedData { poolInstance.increment(new ComparableStack(stack).makeSingular(), stack.stackSize); List oreDict = ItemStackUtil.getOreDictNames(stack); - for(String name : oreDict) poolInstance.increment(name, stack.stackSize); + for(String name : oreDict) if(name != null && !name.isEmpty()) poolInstance.increment(name, stack.stackSize); // because some assholes pollute the ore dict with crap values // originally a lookup for fluid containers was considered, but no one would use the annihilator like that, and it adds unnecessary overhead @@ -112,7 +144,7 @@ public class AnnihilatorSavedData extends WorldSavedData { if(counter == null) { counter = BigInteger.valueOf(amount); } else { - counter.add(BigInteger.valueOf(amount)); + counter = counter.add(BigInteger.valueOf(amount)); } items.put(type, counter); } @@ -126,40 +158,87 @@ public class AnnihilatorSavedData extends WorldSavedData { } } - /* - * this absolutely will not work because it was written under the assumption that NBTTagList can support arbitrary NBTTagBase - * even though an NBTTagList can only hold tags of a single type. this fucking sucks and implementing it better would have - * been easy, but we work with what we are given. - * - * alternative: keep the lists, but change all types to NBTTagByteArray since we can effectively reduce all other data - * types down into byte arrays anyway. if we can avoid NBTTagCompounds, we will. so much named tag crap we don't need just - * bloats the file size. - */ + public void deserialize(NBTTagList nbt) { + try { + for(int i = 0; i < nbt.tagCount(); i++) { + NBTTagList list = (NBTTagList) nbt.tagList.get(i); + Object key = deserializeKey(list); + NBTTagByteArray ntba = (NBTTagByteArray) list.tagList.get(list.tagList.size() - 1); + if(key != null) this.items.put(key, new BigInteger(ntba.func_150292_c())); + } + } catch(Throwable ex) { } // because world data can be dented to all fucking hell and back + } + + /** So we want to avoid NBTTagCompounds because the keys are basically useless here and Strings are heavy as shit. + * So what do? Shrimple, we use NBTTagLists. However, Mojang never expected lists to use different types, even though + * implementing a list like that would be really easy, so we just break down absolutely all information we have into + * byte arrays because the NBTTagList can handle those. God I hate this. */ public void serializeKey(NBTTagList list, Object key) { if(key instanceof Item) { // 0 Item item = (Item) key; - list.appendTag(new NBTTagByte((byte) 0)); - list.appendTag(new NBTTagString(Item.itemRegistry.getNameForObject(item))); + list.appendTag(new NBTTagByteArray(new byte[] {0})); + list.appendTag(new NBTTagByteArray(Item.itemRegistry.getNameForObject(item).getBytes())); } if(key instanceof ComparableStack) { // 1 ComparableStack item = (ComparableStack) key; - list.appendTag(new NBTTagByte((byte) 1)); - list.appendTag(new NBTTagString(Item.itemRegistry.getNameForObject(item.item))); - list.appendTag(new NBTTagShort((short) item.meta)); + list.appendTag(new NBTTagByteArray(new byte[] {1})); + list.appendTag(new NBTTagByteArray(Item.itemRegistry.getNameForObject(item.item).getBytes())); + short meta = (short) item.meta; + list.appendTag(new NBTTagByteArray(new byte[] { + (byte) ((meta & 0xFF00) << 8), + (byte) (meta & 0x00FF) + })); // HSB and LSB may not be split "fairly" due to sign bit, but we do not care, we just want to store bits } if(key instanceof FluidType) { // 2 FluidType item = (FluidType) key; - list.appendTag(new NBTTagByte((byte) 2)); - list.appendTag(new NBTTagString(item.getUnlocalizedName())); + list.appendTag(new NBTTagByteArray(new byte[] {2})); + list.appendTag(new NBTTagByteArray(item.getUnlocalizedName().getBytes())); } if(key instanceof String) { // 3 String item = (String) key; - list.appendTag(new NBTTagByte((byte)3)); - list.appendTag(new NBTTagString(item)); + list.appendTag(new NBTTagByteArray(new byte[] {3})); + list.appendTag(new NBTTagByteArray(item.getBytes())); } } + + public Object deserializeKey(NBTTagList list) { + try { + int size = list.tagCount(); + if(size <= 0) return null; + byte key = ((NBTTagByteArray) list.tagList.get(0)).func_150292_c()[0]; // i am pissing myself from all these assumptions + + if(key == 0) { // item + byte[] bytes = ((NBTTagByteArray) list.tagList.get(1)).func_150292_c(); + Item item = (Item) Item.itemRegistry.getObject(new String(bytes)); // not specifying a charset is probably dangerous for multiple + // reasons but given that i don't really think the charset should change serverside, i *think* this should work + return item; + } + if(key == 1) { // comparablestack + byte[] itembytes = ((NBTTagByteArray) list.tagList.get(1)).func_150292_c(); + byte[] metabytes = ((NBTTagByteArray) list.tagList.get(2)).func_150292_c(); + Item item = (Item) Item.itemRegistry.getObject(new String(itembytes)); + //short hsb = (short) (((short) metabytes[0]) << 8); + //short lsb = (short) metabytes[1]; + short meta = (short) ((metabytes[0] << 8) | (metabytes[1] & 0xFF)); + return new ComparableStack(item, 1, meta); + } + if(key == 2) { // fluidtype + byte[] bytes = ((NBTTagByteArray) list.tagList.get(1)).func_150292_c(); + FluidType type = Fluids.fromName(new String(bytes)); + return type; + } + if(key == 3) { + byte[] bytes = ((NBTTagByteArray) list.tagList.get(1)).func_150292_c(); + String type = new String(bytes); + return type; + } + // i feel filthy + + } catch(Throwable ex) { } + return null; + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java index 98e75e7e9..a70249b99 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAnnihilator.java @@ -1,11 +1,34 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.container.ContainerMachineAnnihilator; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineAnnihilator; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.saveddata.AnnihilatorSavedData; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -public class TileEntityMachineAnnihilator extends TileEntityMachineBase { +import api.hbm.fluidmk2.IFluidStandardReceiverMK2; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class TileEntityMachineAnnihilator extends TileEntityMachineBase implements IFluidStandardReceiverMK2, IGUIProvider { + + public String pool = "Recycling"; + public int timer; + + public FluidTank tank; public TileEntityMachineAnnihilator() { - super(8); + super(11); + + this.tank = new FluidTank(Fluids.NONE, 256_000); } @Override @@ -16,6 +39,55 @@ public class TileEntityMachineAnnihilator extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.tank.setType(1, slots); + + if(this.pool != null && !this.pool.isEmpty()) { + + if(slots[0] != null) { + AnnihilatorSavedData.getData(worldObj).pushToPool(pool, slots[0]); + this.slots[0] = null; + this.markChanged(); + } + if(tank.getFill() > 0) { + AnnihilatorSavedData.getData(worldObj).pushToPool(pool, tank.getTankType(), tank.getFill()); + tank.setFill(0); + this.markChanged(); + } + } + + this.networkPackNT(25); + } } + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot == 0) return true; // trash + if(slot == 1 && stack.getItem() instanceof IItemFluidIdentifier) return true; + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] {0}; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.pool = nbt.getString("pool"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setString("pool", pool); + } + + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tank}; } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineAnnihilator(player.inventory, this); } + @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAnnihilator(player.inventory, this); } } diff --git a/src/main/resources/assets/hbm/models/machines/annihilator.obj b/src/main/resources/assets/hbm/models/machines/annihilator.obj new file mode 100644 index 000000000..598169fb0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/annihilator.obj @@ -0,0 +1,1457 @@ +# Blender v2.79 (sub 0) OBJ File: 'annihilator2.blend' +# www.blender.org +o Roller +v 0.000000 2.375000 -1.000000 +v 0.000000 2.375000 1.000000 +v 0.312500 2.291266 -1.000000 +v 0.312500 2.291266 1.000000 +v 0.541266 2.062500 -1.000000 +v 0.541266 2.062500 1.000000 +v 0.625000 1.750000 -1.000000 +v 0.625000 1.750000 1.000000 +v 0.541266 1.437500 -1.000000 +v 0.541266 1.437500 1.000000 +v 0.312500 1.208734 -1.000000 +v 0.312500 1.208734 1.000000 +v 0.000000 1.125000 -1.000000 +v 0.000000 1.125000 1.000000 +v -0.312500 1.208734 -1.000000 +v -0.312500 1.208734 1.000000 +v -0.541266 1.437500 -1.000000 +v -0.541266 1.437500 1.000000 +v -0.625000 1.750000 -1.000000 +v -0.625000 1.750000 1.000000 +v -0.541266 2.062500 -1.000000 +v -0.541266 2.062500 1.000000 +v -0.312500 2.291266 -1.000000 +v -0.312500 2.291265 1.000000 +v 0.750000 1.750000 0.676777 +v 0.750000 1.573223 0.500000 +v 0.750000 1.926777 0.500000 +v 0.750000 1.750000 0.323223 +v 0.562500 1.926777 0.500000 +v 0.562500 1.750000 0.676777 +v 0.562500 1.573223 0.500000 +v 0.562500 1.750000 0.323223 +v 0.750000 1.750000 -0.323223 +v 0.750000 1.573223 -0.500000 +v 0.750000 1.926777 -0.500000 +v 0.750000 1.750000 -0.676777 +v 0.562500 1.926777 -0.500000 +v 0.562500 1.750000 -0.323223 +v 0.562500 1.573223 -0.500000 +v 0.562500 1.750000 -0.676777 +v 0.649519 1.375000 0.176777 +v 0.561131 1.221907 0.000000 +v 0.737907 1.528093 0.000000 +v 0.649519 1.375000 -0.176777 +v 0.575528 1.621843 0.000000 +v 0.487139 1.468750 0.176777 +v 0.398751 1.315657 0.000000 +v 0.487139 1.468750 -0.176777 +v 0.375000 1.100481 0.676777 +v 0.221907 1.012093 0.500000 +v 0.528093 1.188869 0.500000 +v 0.375000 1.100481 0.323223 +v 0.434343 1.351249 0.500000 +v 0.281250 1.262861 0.676777 +v 0.128157 1.174472 0.500000 +v 0.281250 1.262861 0.323223 +v 0.375000 1.100481 -0.323223 +v 0.221907 1.012093 -0.500000 +v 0.528093 1.188869 -0.500000 +v 0.375000 1.100481 -0.676777 +v 0.434343 1.351249 -0.500000 +v 0.281250 1.262861 -0.323223 +v 0.128157 1.174472 -0.500000 +v 0.281250 1.262861 -0.676777 +v -0.000000 1.000000 0.176777 +v -0.176777 1.000000 0.000000 +v 0.176776 1.000000 0.000000 +v -0.000000 1.000000 -0.176777 +v 0.176777 1.187500 0.000000 +v -0.000000 1.187500 0.176777 +v -0.176777 1.187500 0.000000 +v -0.000000 1.187500 -0.176777 +v -0.375000 1.100481 0.676777 +v -0.528093 1.188869 0.500000 +v -0.221907 1.012093 0.500000 +v -0.375000 1.100481 0.323223 +v -0.128157 1.174472 0.500000 +v -0.281250 1.262861 0.676777 +v -0.434343 1.351249 0.500000 +v -0.281250 1.262861 0.323223 +v -0.375000 1.100481 -0.323223 +v -0.528093 1.188869 -0.500000 +v -0.221907 1.012093 -0.500000 +v -0.375000 1.100481 -0.676777 +v -0.128157 1.174472 -0.500000 +v -0.281250 1.262861 -0.323223 +v -0.434343 1.351249 -0.500000 +v -0.281250 1.262861 -0.676777 +v -0.649519 1.375000 0.176777 +v -0.737907 1.528093 0.000000 +v -0.561131 1.221907 0.000000 +v -0.649519 1.375000 -0.176777 +v -0.398751 1.315657 0.000000 +v -0.487139 1.468750 0.176777 +v -0.575528 1.621843 0.000000 +v -0.487139 1.468750 -0.176777 +v -0.750000 1.750000 0.676777 +v -0.750000 1.926777 0.500000 +v -0.750000 1.573223 0.500000 +v -0.750000 1.750000 0.323223 +v -0.562500 1.573223 0.500000 +v -0.562500 1.750000 0.676777 +v -0.562500 1.926777 0.500000 +v -0.562500 1.750000 0.323223 +v -0.750000 1.750000 -0.323223 +v -0.750000 1.926777 -0.500000 +v -0.750000 1.573223 -0.500000 +v -0.750000 1.750000 -0.676777 +v -0.562500 1.573223 -0.500000 +v -0.562500 1.750000 -0.323223 +v -0.562500 1.926777 -0.500000 +v -0.562500 1.750000 -0.676777 +v -0.649519 2.125000 0.176777 +v -0.561131 2.278093 0.000000 +v -0.737907 1.971907 0.000000 +v -0.649519 2.125000 -0.176777 +v -0.575528 1.878157 0.000000 +v -0.487139 2.031250 0.176777 +v -0.398751 2.184343 0.000000 +v -0.487139 2.031250 -0.176777 +v -0.375000 2.399519 0.676777 +v -0.221907 2.487907 0.500000 +v -0.528093 2.311131 0.500000 +v -0.375000 2.399519 0.323223 +v -0.434343 2.148751 0.500000 +v -0.281250 2.237139 0.676777 +v -0.128157 2.325528 0.500000 +v -0.281250 2.237139 0.323223 +v -0.375000 2.399519 -0.323223 +v -0.221907 2.487907 -0.500000 +v -0.528093 2.311131 -0.500000 +v -0.375000 2.399519 -0.676777 +v -0.434343 2.148751 -0.500000 +v -0.281250 2.237139 -0.323223 +v -0.128157 2.325528 -0.500000 +v -0.281250 2.237139 -0.676777 +v 0.000000 2.500000 0.176777 +v 0.176777 2.500000 0.000000 +v -0.176776 2.500000 0.000000 +v 0.000000 2.500000 -0.176777 +v -0.176776 2.312500 0.000000 +v 0.000000 2.312500 0.176777 +v 0.176777 2.312500 0.000000 +v 0.000000 2.312500 -0.176777 +v 0.375000 2.399519 0.676777 +v 0.528093 2.311131 0.500000 +v 0.221907 2.487907 0.500000 +v 0.375000 2.399519 0.323223 +v 0.128157 2.325528 0.500000 +v 0.281250 2.237139 0.676777 +v 0.434343 2.148751 0.500000 +v 0.281250 2.237139 0.323223 +v 0.375000 2.399519 -0.323223 +v 0.528093 2.311131 -0.500000 +v 0.221907 2.487907 -0.500000 +v 0.375000 2.399519 -0.676777 +v 0.128157 2.325528 -0.500000 +v 0.281250 2.237139 -0.323223 +v 0.434343 2.148751 -0.500000 +v 0.281250 2.237139 -0.676777 +v 0.649519 2.125000 0.176777 +v 0.737908 1.971907 0.000000 +v 0.561131 2.278093 0.000000 +v 0.649519 2.125000 -0.176777 +v 0.398751 2.184343 0.000000 +v 0.487139 2.031250 0.176777 +v 0.575528 1.878157 0.000000 +v 0.487139 2.031250 -0.176777 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.831633 +vt 0.286458 0.852041 +vt 0.260417 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.816327 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.816327 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.831633 +vt 0.286458 0.852041 +vt 0.260417 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.816327 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.816327 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.831633 +vt 0.268229 0.816326 +vt 0.278646 0.816326 +vt 0.268229 0.867347 +vt 0.286458 0.831633 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816326 +vt 0.278646 0.831633 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.831633 +vt 0.268229 0.816326 +vt 0.278646 0.816326 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.831633 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.831633 +vt 0.268229 0.816326 +vt 0.278646 0.816326 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.278646 0.831633 +vt 0.268229 0.816326 +vt 0.278646 0.816326 +vt 0.278646 0.867347 +vt 0.268229 0.867347 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.831633 +vt 0.278646 0.852041 +vt 0.268229 0.852041 +vt 0.278646 0.816327 +vt 0.278646 0.831633 +vt 0.268229 0.867347 +vt 0.286458 0.831633 +vt 0.286458 0.852041 +vt 0.260417 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.278646 0.867347 +vt 0.260417 0.852041 +vt 0.268229 0.816326 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.260417 0.852041 +vt 0.278646 0.867347 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.286458 0.831633 +vt 0.260417 0.852041 +vt 0.268229 0.816327 +vt 0.278646 0.867347 +vt 0.260417 0.852041 +vt 0.828125 0.612245 +vt 0.815104 0.775510 +vt 0.815104 0.612245 +vt 0.802083 0.612245 +vt 0.802083 0.775510 +vt 0.789062 0.612245 +vt 0.789062 0.775510 +vt 0.776042 0.612245 +vt 0.776042 0.775510 +vt 0.763021 0.612245 +vt 0.763021 0.775510 +vt 0.750000 0.612245 +vt 0.906250 0.775510 +vt 0.893229 0.612245 +vt 0.906250 0.612245 +vt 0.893229 0.775510 +vt 0.880208 0.612245 +vt 0.880208 0.775510 +vt 0.867188 0.612245 +vt 0.867188 0.775510 +vt 0.854167 0.612245 +vt 0.854167 0.775510 +vt 0.841146 0.612245 +vt 0.841146 0.775510 +vt 0.828125 0.775510 +vt 0.750000 0.775510 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.8660 -0.5000 -0.0000 +vn -0.3536 -0.6124 -0.7071 +vn 0.3536 0.6124 0.7071 +vn 0.3536 0.6124 -0.7071 +vn -0.3536 -0.6124 0.7071 +vn 0.5000 -0.8660 0.0000 +vn -0.6124 -0.3536 -0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.6124 0.3536 -0.7071 +vn -0.6124 -0.3536 0.7071 +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.5000 -0.8660 0.0000 +vn -0.6124 0.3536 -0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.6124 -0.3536 -0.7071 +vn -0.6124 0.3536 0.7071 +vn -0.8660 -0.5000 -0.0000 +vn -0.3536 0.6124 -0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.3536 -0.6124 -0.7071 +vn -0.3536 0.6124 0.7071 +vn -1.0000 0.0000 -0.0000 +vn -0.8660 0.5000 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +s off +f 26/1/1 27/2/1 25/3/1 +f 34/4/1 35/5/1 33/6/1 +f 26/1/2 32/7/2 28/8/2 +f 27/2/3 30/9/3 25/3/3 +f 28/8/4 29/10/4 27/2/4 +f 25/3/5 31/11/5 26/1/5 +f 34/4/2 40/12/2 36/13/2 +f 35/5/3 38/14/3 33/6/3 +f 36/13/4 37/15/4 35/5/4 +f 33/6/5 39/16/5 34/4/5 +f 42/17/6 43/18/6 41/19/6 +f 42/17/7 48/20/7 44/21/7 +f 43/18/8 46/22/8 41/19/8 +f 43/18/9 48/23/9 45/24/9 +f 42/17/10 46/25/10 47/26/10 +f 50/27/11 51/28/11 49/29/11 +f 58/30/11 59/31/11 57/32/11 +f 50/27/12 56/33/12 52/34/12 +f 51/28/13 54/35/13 49/29/13 +f 52/34/14 53/36/14 51/28/14 +f 49/29/15 55/37/15 50/27/15 +f 58/30/12 64/38/12 60/39/12 +f 59/31/13 62/40/13 57/32/13 +f 60/39/14 61/41/14 59/31/14 +f 58/30/15 62/42/15 63/43/15 +f 66/44/16 67/45/16 65/46/16 +f 66/44/17 72/47/17 68/48/17 +f 67/45/18 70/49/18 65/46/18 +f 68/48/19 69/50/19 67/45/19 +f 65/46/20 71/51/20 66/44/20 +f 74/52/21 75/53/21 73/54/21 +f 82/55/21 83/56/21 81/57/21 +f 76/58/22 79/59/22 80/60/22 +f 75/53/23 78/61/23 73/54/23 +f 76/58/24 77/62/24 75/53/24 +f 73/54/25 79/63/25 74/52/25 +f 84/64/22 87/65/22 88/66/22 +f 81/57/23 85/67/23 86/68/23 +f 84/64/24 85/69/24 83/56/24 +f 81/57/25 87/70/25 82/55/25 +f 90/71/26 91/72/26 89/73/26 +f 90/71/27 96/74/27 92/75/27 +f 91/72/28 94/76/28 89/73/28 +f 91/72/29 96/77/29 93/78/29 +f 90/71/30 94/79/30 95/80/30 +f 98/81/31 99/82/31 97/83/31 +f 106/84/31 107/85/31 105/86/31 +f 100/87/4 103/88/4 104/89/4 +f 97/83/5 101/90/5 102/91/5 +f 100/87/2 101/92/2 99/82/2 +f 97/83/3 103/93/3 98/81/3 +f 108/94/4 111/95/4 112/96/4 +f 105/86/5 109/97/5 110/98/5 +f 108/94/2 109/99/2 107/85/2 +f 105/86/3 111/100/3 106/84/3 +f 114/101/32 115/102/32 113/103/32 +f 116/104/9 119/105/9 120/106/9 +f 115/102/10 118/107/10 113/103/10 +f 115/102/7 120/108/7 117/109/7 +f 113/103/8 119/110/8 114/101/8 +f 122/111/33 123/112/33 121/113/33 +f 130/114/33 131/115/33 129/116/33 +f 122/111/14 128/117/14 124/118/14 +f 121/113/15 125/119/15 126/120/15 +f 124/118/12 125/121/12 123/112/12 +f 121/113/13 127/122/13 122/111/13 +f 132/123/14 135/124/14 136/125/14 +f 129/116/15 133/126/15 134/127/15 +f 132/123/12 133/128/12 131/115/12 +f 129/116/13 135/129/13 130/114/13 +f 138/130/34 139/131/34 137/132/34 +f 138/130/19 144/133/19 140/134/19 +f 139/131/20 142/135/20 137/132/20 +f 139/131/17 144/136/17 141/137/17 +f 137/132/18 143/138/18 138/130/18 +f 146/139/35 147/140/35 145/141/35 +f 154/142/35 155/143/35 153/144/35 +f 148/145/24 151/146/24 152/147/24 +f 147/140/25 150/148/25 145/141/25 +f 148/145/22 149/149/22 147/140/22 +f 145/141/23 151/150/23 146/139/23 +f 156/151/24 159/152/24 160/153/24 +f 153/144/25 157/154/25 158/155/25 +f 156/151/22 157/156/22 155/143/22 +f 153/144/23 159/157/23 154/142/23 +f 162/158/36 163/159/36 161/160/36 +f 162/158/29 168/161/29 164/162/29 +f 163/159/30 166/163/30 161/160/30 +f 163/159/27 168/164/27 165/165/27 +f 161/160/28 167/166/28 162/158/28 +f 26/1/1 28/8/1 27/2/1 +f 34/4/1 36/13/1 35/5/1 +f 26/1/2 31/167/2 32/7/2 +f 27/2/3 29/168/3 30/9/3 +f 28/8/4 32/169/4 29/10/4 +f 25/3/5 30/170/5 31/11/5 +f 34/4/2 39/171/2 40/12/2 +f 35/5/3 37/172/3 38/14/3 +f 36/13/4 40/173/4 37/15/4 +f 33/6/5 38/174/5 39/16/5 +f 42/17/6 44/21/6 43/18/6 +f 42/17/7 47/175/7 48/20/7 +f 43/18/8 45/176/8 46/22/8 +f 43/18/9 44/21/9 48/23/9 +f 42/17/10 41/19/10 46/25/10 +f 50/27/11 52/34/11 51/28/11 +f 58/30/11 60/39/11 59/31/11 +f 50/27/12 55/177/12 56/33/12 +f 51/28/13 53/178/13 54/35/13 +f 52/34/14 56/179/14 53/36/14 +f 49/29/15 54/180/15 55/37/15 +f 58/30/12 63/181/12 64/38/12 +f 59/31/13 61/182/13 62/40/13 +f 60/39/14 64/183/14 61/41/14 +f 58/30/15 57/32/15 62/42/15 +f 66/44/16 68/48/16 67/45/16 +f 66/44/17 71/184/17 72/47/17 +f 67/45/18 69/185/18 70/49/18 +f 68/48/19 72/186/19 69/50/19 +f 65/46/20 70/187/20 71/51/20 +f 74/52/21 76/58/21 75/53/21 +f 82/55/21 84/64/21 83/56/21 +f 76/58/22 74/52/22 79/59/22 +f 75/53/23 77/188/23 78/61/23 +f 76/58/24 80/189/24 77/62/24 +f 73/54/25 78/190/25 79/63/25 +f 84/64/22 82/55/22 87/65/22 +f 81/57/23 83/56/23 85/67/23 +f 84/64/24 88/191/24 85/69/24 +f 81/57/25 86/192/25 87/70/25 +f 90/71/26 92/75/26 91/72/26 +f 90/71/27 95/193/27 96/74/27 +f 91/72/28 93/194/28 94/76/28 +f 91/72/29 92/75/29 96/77/29 +f 90/71/30 89/73/30 94/79/30 +f 98/81/31 100/87/31 99/82/31 +f 106/84/31 108/94/31 107/85/31 +f 100/87/4 98/81/4 103/88/4 +f 97/83/5 99/82/5 101/90/5 +f 100/87/2 104/195/2 101/92/2 +f 97/83/3 102/196/3 103/93/3 +f 108/94/4 106/84/4 111/95/4 +f 105/86/5 107/85/5 109/97/5 +f 108/94/2 112/197/2 109/99/2 +f 105/86/3 110/198/3 111/100/3 +f 114/101/32 116/104/32 115/102/32 +f 116/104/9 114/101/9 119/105/9 +f 115/102/10 117/199/10 118/107/10 +f 115/102/7 116/104/7 120/108/7 +f 113/103/8 118/200/8 119/110/8 +f 122/111/33 124/118/33 123/112/33 +f 130/114/33 132/123/33 131/115/33 +f 122/111/14 127/201/14 128/117/14 +f 121/113/15 123/112/15 125/119/15 +f 124/118/12 128/202/12 125/121/12 +f 121/113/13 126/203/13 127/122/13 +f 132/123/14 130/114/14 135/124/14 +f 129/116/15 131/115/15 133/126/15 +f 132/123/12 136/204/12 133/128/12 +f 129/116/13 134/205/13 135/129/13 +f 138/130/34 140/134/34 139/131/34 +f 138/130/19 143/206/19 144/133/19 +f 139/131/20 141/207/20 142/135/20 +f 139/131/17 140/134/17 144/136/17 +f 137/132/18 142/208/18 143/138/18 +f 146/139/35 148/145/35 147/140/35 +f 154/142/35 156/151/35 155/143/35 +f 148/145/24 146/139/24 151/146/24 +f 147/140/25 149/209/25 150/148/25 +f 148/145/22 152/210/22 149/149/22 +f 145/141/23 150/211/23 151/150/23 +f 156/151/24 154/142/24 159/152/24 +f 153/144/25 155/143/25 157/154/25 +f 156/151/22 160/212/22 157/156/22 +f 153/144/23 158/213/23 159/157/23 +f 162/158/36 164/162/36 163/159/36 +f 162/158/29 167/214/29 168/161/29 +f 163/159/30 165/215/30 166/163/30 +f 163/159/27 164/162/27 168/164/27 +f 161/160/28 166/216/28 167/166/28 +s 1 +f 1/217/34 4/218/35 3/219/35 +f 4/218/35 5/220/36 3/219/35 +f 6/221/36 7/222/1 5/220/36 +f 8/223/1 9/224/6 7/222/1 +f 10/225/6 11/226/11 9/224/6 +f 12/227/11 13/228/16 11/226/11 +f 14/229/16 15/230/21 13/231/16 +f 16/232/21 17/233/26 15/230/21 +f 18/234/26 19/235/31 17/233/26 +f 20/236/31 21/237/32 19/235/31 +f 22/238/32 23/239/33 21/237/32 +f 24/240/33 1/217/34 23/239/33 +f 1/217/34 2/241/34 4/218/35 +f 4/218/35 6/221/36 5/220/36 +f 6/221/36 8/223/1 7/222/1 +f 8/223/1 10/225/6 9/224/6 +f 10/225/6 12/227/11 11/226/11 +f 12/227/11 14/242/16 13/228/16 +f 14/229/16 16/232/21 15/230/21 +f 16/232/21 18/234/26 17/233/26 +f 18/234/26 20/236/31 19/235/31 +f 20/236/31 22/238/32 21/237/32 +f 22/238/32 24/240/33 23/239/33 +f 24/240/33 2/241/34 1/217/34 +o Belt +v -1.750000 1.062500 0.750000 +v 1.750000 1.062500 0.750000 +v -1.750000 1.062500 -0.750000 +v 1.750000 1.062500 -0.750000 +vt 0.000000 1.000000 +vt 1.000000 -0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vn 0.0000 1.0000 0.0000 +s off +f 170/243/37 171/244/37 169/245/37 +f 170/243/37 172/246/37 171/244/37 +o Annihilator +v -4.500000 0.000000 1.500000 +v 4.500000 0.000000 1.500000 +v -4.500000 0.000000 -1.500000 +v 4.500000 0.000000 -1.500000 +v -4.500000 1.000000 1.500000 +v 4.500000 1.000000 1.500000 +v -4.500000 1.000000 -1.500000 +v 4.500000 1.000000 -1.500000 +v 1.750000 1.000000 1.250000 +v 4.250000 1.000000 1.250000 +v 1.750000 1.000000 -1.250000 +v 4.250000 1.000000 -1.250000 +v 1.750000 2.500000 -1.250000 +v 1.750000 2.500000 1.250000 +v 4.250000 2.500000 1.250000 +v 4.250000 2.500000 -1.250000 +v 1.750000 3.000000 -0.500000 +v 1.750000 3.000000 0.500000 +v 4.250000 3.000000 0.500000 +v 4.250000 3.000000 -0.500000 +v 1.750000 1.000000 -1.250000 +v -1.750000 1.000000 -1.250000 +v 1.750000 1.250000 -1.250000 +v -1.750000 1.250000 -1.250000 +v 1.750000 1.250000 -1.000000 +v -1.750000 1.250000 -1.000000 +v 1.750000 1.000000 -1.000000 +v -1.750000 1.000000 -1.000000 +v 0.500000 2.750000 -1.000000 +v -0.500000 2.750000 -1.000000 +v -0.500000 2.750000 -1.250000 +v 0.500000 2.750000 -1.250000 +v 1.000000 1.250000 -1.250000 +v -1.000000 1.250000 -1.250000 +v 1.000000 1.250000 -1.000000 +v -1.000000 1.250000 -1.000000 +v 1.750000 1.000000 1.000000 +v -1.750000 1.000000 1.000000 +v 1.750000 1.250000 1.000000 +v -1.750000 1.250000 1.000000 +v 1.750000 1.250000 1.250000 +v -1.750000 1.250000 1.250000 +v 1.750000 1.000000 1.250000 +v -1.750000 1.000000 1.250000 +v 0.500000 2.750000 1.250000 +v -0.500000 2.750000 1.250000 +v -0.500000 2.750000 1.000000 +v 0.500000 2.750000 1.000000 +v 1.000000 1.250000 1.000000 +v -1.000000 1.250000 1.000000 +v 1.000000 1.250000 1.250000 +v -1.000000 1.250000 1.250000 +v 0.500000 2.750000 -1.000000 +v -0.500000 2.750000 -1.000000 +v -0.500000 2.750000 1.000000 +v 0.500000 2.750000 1.000000 +v -0.500000 2.500000 -1.000000 +v 0.500000 2.500000 -1.000000 +v 0.500000 2.500000 1.000000 +v -0.500000 2.500000 1.000000 +v -4.250000 1.000000 1.250000 +v -1.750000 1.000000 1.250000 +v -4.250000 1.000000 -1.250000 +v -1.750000 1.000000 -1.250000 +v -4.250000 2.500000 -1.250000 +v -4.250000 2.500000 1.250000 +v -1.750000 2.500000 1.250000 +v -1.750000 2.500000 -1.250000 +v -2.250000 5.000000 -0.750000 +v -3.750000 5.000000 -0.750000 +v -2.250000 5.000000 0.750000 +v -3.750000 5.000000 0.750000 +v -2.500000 8.500000 0.500000 +v -2.500000 8.500000 -0.500000 +v -3.500000 8.500000 -0.500000 +v -3.500000 8.500000 0.500000 +v -2.250000 8.500000 0.750000 +v -2.250000 8.500000 -0.750000 +v -3.750000 8.500000 -0.750000 +v -3.750000 8.500000 0.750000 +v -2.500000 8.000000 0.500000 +v -2.500000 8.000000 -0.500000 +v -3.500000 8.000000 -0.500000 +v -3.500000 8.000000 0.500000 +v -4.000000 8.000000 1.000000 +v -2.000000 8.000000 1.000000 +v -4.000000 8.000000 -1.000000 +v -2.000000 8.000000 -1.000000 +v -2.250000 8.000000 0.750000 +v -2.250000 8.000000 -0.750000 +v -3.750000 8.000000 -0.750000 +v -3.750000 8.000000 0.750000 +v -4.000000 7.500000 1.000000 +v -2.000000 7.500000 1.000000 +v -4.000000 7.500000 -1.000000 +v -2.000000 7.500000 -1.000000 +v -2.250000 7.500000 0.750000 +v -2.250000 7.500000 -0.750000 +v -3.750000 7.500000 -0.750000 +v -3.750000 7.500000 0.750000 +v -3.250000 2.500000 1.375000 +v -2.750000 2.500000 1.375000 +v -3.250000 1.000000 1.375000 +v -2.750000 1.000000 1.375000 +v -3.250000 5.000000 0.875000 +v -2.750000 5.000000 0.875000 +v -3.250000 7.500000 0.875000 +v -2.750000 7.500000 0.875000 +v 1.750000 2.125000 1.000000 +v 1.750000 2.213388 1.036612 +v 1.750000 2.250000 1.125000 +v 1.750000 2.213388 1.213388 +v 1.750000 2.125000 1.250000 +v 1.750000 2.036612 1.213388 +v 1.750000 2.000000 1.125000 +v 1.750000 2.036612 1.036612 +v 0.625000 2.125000 1.000000 +v 0.625000 2.213388 1.036612 +v 0.625000 2.250000 1.125000 +v 0.625000 2.213388 1.213388 +v 0.625000 2.125000 1.250000 +v 0.625000 2.036612 1.213388 +v 0.625000 2.000000 1.125000 +v 0.625000 2.036612 1.036612 +v 1.750000 1.625000 1.000000 +v 1.750000 1.713388 1.036612 +v 1.750000 1.750000 1.125000 +v 1.750000 1.713388 1.213388 +v 1.750000 1.625000 1.250000 +v 1.750000 1.536612 1.213388 +v 1.750000 1.500000 1.125000 +v 1.750000 1.536612 1.036612 +v 0.625000 1.625000 1.000000 +v 0.625000 1.713388 1.036612 +v 0.625000 1.750000 1.125000 +v 0.625000 1.713388 1.213388 +v 0.625000 1.625000 1.250000 +v 0.625000 1.536612 1.213388 +v 0.625000 1.500000 1.125000 +v 0.625000 1.536612 1.036612 +v -0.625000 2.125000 1.000000 +v -0.625000 2.213388 1.036612 +v -0.625000 2.250000 1.125000 +v -0.625000 2.213388 1.213388 +v -0.625000 2.125000 1.250000 +v -0.625000 2.036612 1.213388 +v -0.625000 2.000000 1.125000 +v -0.625000 2.036612 1.036612 +v -1.750000 2.125000 1.000000 +v -1.750000 2.213388 1.036612 +v -1.750000 2.250000 1.125000 +v -1.750000 2.213388 1.213388 +v -1.750000 2.125000 1.250000 +v -1.750000 2.036612 1.213388 +v -1.750000 2.000000 1.125000 +v -1.750000 2.036612 1.036612 +v -0.625000 1.625000 1.000000 +v -0.625000 1.713388 1.036612 +v -0.625000 1.750000 1.125000 +v -0.625000 1.713388 1.213388 +v -0.625000 1.625000 1.250000 +v -0.625000 1.536612 1.213388 +v -0.625000 1.500000 1.125000 +v -0.625000 1.536612 1.036612 +v -1.750000 1.625000 1.000000 +v -1.750000 1.713388 1.036612 +v -1.750000 1.750000 1.125000 +v -1.750000 1.713388 1.213388 +v -1.750000 1.625000 1.250000 +v -1.750000 1.536612 1.213388 +v -1.750000 1.500000 1.125000 +v -1.750000 1.536612 1.036612 +v -3.625000 1.250000 -1.250000 +v -2.375000 1.250000 -1.250000 +v -3.625000 2.000000 -1.250000 +v -2.375000 2.000000 -1.250000 +v -2.375000 1.250000 -1.375000 +v -3.625000 1.250000 -1.375000 +v -2.375000 2.000000 -1.375000 +v -3.625000 2.000000 -1.375000 +v 0.500000 2.687500 -0.312500 +v 0.500000 2.562500 -0.312500 +v 0.500000 2.687500 -0.437500 +v 0.500000 2.562500 -0.437500 +v 1.750000 2.687500 -0.312500 +v 1.750000 2.562500 -0.312500 +v 1.750000 2.687500 -0.437500 +v 1.750000 2.562500 -0.437500 +v 0.500000 2.687500 0.437500 +v 0.500000 2.562500 0.437500 +v 0.500000 2.687500 0.312500 +v 0.500000 2.562500 0.312500 +v 1.750000 2.687500 0.437500 +v 1.750000 2.562500 0.437500 +v 1.750000 2.687500 0.312500 +v 1.750000 2.562500 0.312500 +v -1.750000 2.687500 -0.312500 +v -1.750000 2.562500 -0.312500 +v -1.750000 2.687500 -0.437500 +v -1.750000 2.562500 -0.437500 +v -0.500000 2.687500 -0.312500 +v -0.500000 2.562500 -0.312500 +v -0.500000 2.687500 -0.437500 +v -0.500000 2.562500 -0.437500 +v -1.750000 2.687500 0.437500 +v -1.750000 2.562500 0.437500 +v -1.750000 2.687500 0.312500 +v -1.750000 2.562500 0.312500 +v -0.500000 2.687500 0.437500 +v -0.500000 2.562500 0.437500 +v -0.500000 2.687500 0.312500 +v -0.500000 2.562500 0.312500 +v -1.750000 2.750000 0.500000 +v -1.750000 2.500000 0.500000 +v -1.750000 2.750000 -0.500000 +v -1.750000 2.500000 -0.500000 +v -1.812500 2.750000 0.500000 +v -1.812500 2.500000 0.500000 +v -1.812500 2.750000 -0.500000 +v -1.812500 2.500000 -0.500000 +vt 0.208333 0.816327 +vt 0.333333 0.081633 +vt 0.333333 0.816327 +vt 0.041667 0.081633 +vt 0.166667 0.816327 +vt 0.041667 0.816327 +vt 0.166667 -0.000000 +vt 0.041667 -0.000000 +vt 0.041667 0.897959 +vt 0.166667 0.897959 +vt 0.166667 0.081633 +vt 0.208333 0.081633 +vt -0.000000 0.081633 +vt -0.000000 0.816327 +vt 0.500000 0.530612 +vt 0.395833 0.530612 +vt 0.427083 0.367347 +vt 0.500000 0.367347 +vt 0.468750 0.163265 +vt 0.500000 0.163265 +vt 0.562500 0.367347 +vt 0.562500 0.163265 +vt 0.333333 0.163265 +vt 0.395833 0.367347 +vt 0.333333 0.367347 +vt 0.395833 0.000000 +vt 0.500000 0.000000 +vt 0.427083 0.163265 +vt 0.468750 0.367347 +vt 0.395833 0.163265 +vt 0.895833 0.795918 +vt 0.750000 0.775510 +vt 0.895833 0.775510 +vt 0.750000 0.816327 +vt 0.750000 0.795918 +vt 0.895833 0.816327 +vt 0.750000 0.836735 +vt 0.770833 0.000000 +vt 0.666667 0.122449 +vt 0.666667 0.000000 +vt 0.562500 0.857143 +vt 0.625000 0.734694 +vt 0.604167 0.857143 +vt 0.854167 0.326531 +vt 0.770833 0.122449 +vt 0.875000 0.122449 +vt 0.562500 0.877551 +vt 0.500000 0.857143 +vt 0.875000 0.000000 +vt 0.604167 0.877551 +vt 0.541667 1.000000 +vt 0.645833 0.326531 +vt 0.583333 0.612245 +vt 0.583333 0.326531 +vt 0.895833 0.816327 +vt 0.750000 0.836735 +vt 0.750000 0.816327 +vt 0.750000 0.326531 +vt 0.895833 0.795918 +vt 0.750000 0.795918 +vt 0.604167 0.877551 +vt 0.541667 1.000000 +vt 0.562500 0.877551 +vt 0.750000 0.918367 +vt 0.666667 0.938776 +vt 0.666667 0.918367 +vt 0.500000 0.857143 +vt 0.562500 0.857143 +vt 0.625000 0.734694 +vt 0.604167 0.857143 +vt 0.666667 0.836735 +vt 0.750000 0.816327 +vt 0.750000 0.836735 +vt 0.666667 0.877551 +vt 0.750000 0.775510 +vt 0.895833 0.775510 +vt 0.666667 0.816327 +vt 0.750000 0.734694 +vt 0.562500 0.122449 +vt 0.562500 0.000000 +vt 0.666667 0.877551 +vt 0.979167 0.122449 +vt 0.979167 0.000000 +vt 0.895833 0.326531 +vt 0.958333 0.326531 +vt 0.968750 0.612245 +vt 0.927083 0.653061 +vt 0.927083 0.612245 +vt 0.687500 0.612245 +vt 0.687500 0.326531 +vt 0.791667 0.612245 +vt 0.791667 0.326531 +vt 0.895833 0.612245 +vt 0.697917 0.632653 +vt 0.750000 0.612245 +vt 0.739583 0.632653 +vt 0.739583 0.714286 +vt 0.687500 0.734694 +vt 0.697917 0.714286 +vt 0.750000 0.734694 +vt 0.968750 0.734694 +vt 0.927083 0.734694 +vt 0.906250 0.653061 +vt 0.906250 0.734694 +vt 0.927083 0.775510 +vt 0.968750 0.775510 +vt 0.989583 0.734694 +vt 0.968750 0.653061 +vt 0.989583 0.653061 +vt 0.489583 0.755102 +vt 0.416667 0.734694 +vt 0.500000 0.734694 +vt 0.489583 0.877551 +vt 0.500000 0.897959 +vt 0.427083 0.877551 +vt 0.416667 0.897959 +vt 0.427083 0.755102 +vt 0.500000 0.693878 +vt 0.583333 0.734694 +vt 0.666667 0.693878 +vt 0.666667 0.734694 +vt 0.583333 0.693878 +vt 0.333333 0.734694 +vt 0.416667 0.693878 +vt 0.489583 0.551020 +vt 0.500000 0.530612 +vt 0.427083 0.551020 +vt 0.416667 0.530612 +vt 0.427083 0.673469 +vt 0.489583 0.673469 +vt 0.979167 -0.000000 +vt 1.000000 0.122449 +vt 0.979167 0.122449 +vt 1.000000 0.326531 +vt 1.000000 0.525510 +vt 0.979167 0.326531 +vt 0.333333 0.780612 +vt 0.385417 0.770408 +vt 0.385417 0.780612 +vt 0.557292 0.377551 +vt 0.505208 0.438776 +vt 0.505208 0.377551 +vt 0.562500 0.438776 +vt 0.562500 0.377551 +vt 0.557292 0.367347 +vt 0.505208 0.367347 +vt 0.500000 0.377551 +vt 0.500000 0.438776 +vt 0.505208 0.448980 +vt 0.557292 0.438776 +vt 0.557292 0.448980 +vt 0.333333 0.801020 +vt 0.385417 0.790816 +vt 0.385417 0.801020 +vt 0.333333 0.770408 +vt 0.385417 0.760204 +vt 0.333333 0.790816 +vt 0.333333 0.780612 +vt 0.385417 0.770408 +vt 0.385417 0.780612 +vt 0.333333 0.801020 +vt 0.385417 0.790816 +vt 0.385417 0.801020 +vt 0.333333 0.770408 +vt 0.385417 0.760204 +vt 0.333333 0.790816 +vt 0.333333 0.780612 +vt 0.385417 0.770408 +vt 0.385417 0.780612 +vt 0.333333 0.801020 +vt 0.385417 0.790816 +vt 0.385417 0.801020 +vt 0.333333 0.770408 +vt 0.385417 0.760204 +vt 0.333333 0.790816 +vt 0.333333 0.780612 +vt 0.385417 0.770408 +vt 0.385417 0.780612 +vt 0.333333 0.801020 +vt 0.385417 0.790816 +vt 0.385417 0.801020 +vt 0.333333 0.770408 +vt 0.385417 0.760204 +vt 0.333333 0.790816 +vt 0.335938 0.734694 +vt 0.377604 0.755102 +vt 0.335938 0.755102 +vt 0.377604 0.734694 +vt 0.380208 0.755102 +vt 0.333333 0.734694 +vt 0.335938 0.760204 +vt 0.395833 0.408163 +vt 0.500000 0.408163 +vt 0.500000 0.122449 +vt 0.395833 0.122449 +vt 0.895833 0.836735 +vt 0.541667 0.734694 +vt 0.500000 0.877551 +vt 0.625000 1.000000 +vt 0.645833 0.612245 +vt 0.895833 0.836735 +vt 0.625000 1.000000 +vt 0.750000 0.938776 +vt 0.500000 0.877551 +vt 0.541667 0.734694 +vt 0.666667 0.857143 +vt 0.666667 0.734694 +vt 0.666667 0.857143 +vt 0.854167 0.612245 +vt 0.958333 0.612245 +vt 0.333333 0.693878 +vt 1.000000 -0.000000 +vt 0.979167 0.525510 +vt 0.333333 0.760204 +vt 0.333333 0.760204 +vt 0.333333 0.760204 +vt 0.333333 0.760204 +vt 0.380208 0.734694 +vt 0.333333 0.755102 +vt 0.377604 0.760204 +vt 0.213542 0.867347 +vt 0.166667 0.857143 +vt 0.213542 0.857143 +vt 0.213542 0.897959 +vt 0.166667 0.887755 +vt 0.213542 0.887755 +vt 0.213542 0.836735 +vt 0.166667 0.826531 +vt 0.213542 0.826531 +vt 0.166667 0.846939 +vt 0.213542 0.846939 +vt 0.213542 0.877551 +vt 0.166667 0.867347 +vt 0.166667 0.877551 +vt 0.166667 0.816327 +vt 0.213542 0.816327 +vt 0.166667 0.836735 +vt 0.260417 0.867347 +vt 0.213542 0.857143 +vt 0.260417 0.857143 +vt 0.260417 0.897959 +vt 0.213542 0.887755 +vt 0.260417 0.887755 +vt 0.260417 0.836735 +vt 0.213542 0.826531 +vt 0.260417 0.826531 +vt 0.213542 0.846939 +vt 0.260417 0.846939 +vt 0.260417 0.877551 +vt 0.213542 0.867347 +vt 0.213542 0.877551 +vt 0.213542 0.816327 +vt 0.260417 0.816327 +vt 0.213542 0.836735 +vt 0.213542 0.867347 +vt 0.166667 0.857143 +vt 0.213542 0.857143 +vt 0.213542 0.897959 +vt 0.166667 0.887755 +vt 0.213542 0.887755 +vt 0.213542 0.836735 +vt 0.166667 0.826531 +vt 0.213542 0.826531 +vt 0.166667 0.846939 +vt 0.213542 0.846939 +vt 0.213542 0.877551 +vt 0.166667 0.867347 +vt 0.166667 0.877551 +vt 0.166667 0.816327 +vt 0.213542 0.816327 +vt 0.166667 0.836735 +vt 0.260417 0.867347 +vt 0.213542 0.857143 +vt 0.260417 0.857143 +vt 0.260417 0.897959 +vt 0.213542 0.887755 +vt 0.260417 0.887755 +vt 0.260417 0.836735 +vt 0.213542 0.826531 +vt 0.260417 0.826531 +vt 0.213542 0.846939 +vt 0.260417 0.846939 +vt 0.260417 0.877551 +vt 0.213542 0.867347 +vt 0.213542 0.877551 +vt 0.213542 0.816327 +vt 0.260417 0.816327 +vt 0.213542 0.836735 +vt 0.166667 0.897959 +vt 0.213542 0.897959 +vt 0.166667 0.897959 +vt 0.213542 0.897959 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 0.8321 0.5547 +vn 0.0000 0.1961 -0.9806 +vn 0.9487 0.3162 0.0000 +vn 0.9806 0.1961 0.0000 +vn -0.9487 0.3162 0.0000 +vn -0.9806 0.1961 0.0000 +vn 0.0000 0.1961 0.9806 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +s off +f 175/247/38 174/248/38 173/249/38 +f 178/250/39 179/251/39 177/252/39 +f 176/253/40 178/250/40 174/254/40 +f 173/255/41 179/251/41 175/256/41 +f 175/247/42 180/257/42 176/258/42 +f 174/259/43 177/252/43 173/260/43 +f 183/261/41 181/262/41 190/263/41 +f 185/264/44 192/265/44 188/266/44 +f 183/267/42 188/266/42 184/268/42 +f 182/269/43 186/270/43 181/271/43 +f 182/272/40 184/273/40 192/265/40 +f 191/274/39 189/275/39 190/263/39 +f 187/276/45 190/263/45 186/270/45 +f 196/277/42 193/278/42 194/279/42 +f 196/277/39 197/280/39 195/281/39 +f 198/282/43 199/283/43 197/280/43 +f 236/284/40 239/285/40 234/286/40 +f 220/287/42 222/288/42 219/289/42 +f 242/290/46 240/291/46 237/292/46 +f 217/293/47 221/294/47 220/287/47 +f 235/295/42 240/291/42 236/284/42 +f 218/296/43 223/297/43 217/293/43 +f 243/298/43 252/299/43 244/300/43 +f 214/301/43 215/302/43 213/303/43 +f 241/304/48 239/285/48 240/291/48 +f 212/305/39 213/303/39 211/306/39 +f 202/307/43 207/308/43 201/309/43 +f 226/310/41 232/311/41 227/312/41 +f 201/309/47 205/313/47 204/314/47 +f 204/314/42 206/315/42 203/316/42 +f 228/317/40 230/318/40 225/319/40 +f 203/316/49 208/320/49 202/307/49 +f 217/293/39 219/289/39 218/296/39 +f 212/305/42 209/321/42 210/322/42 +f 231/323/38 229/324/38 230/318/38 +f 201/309/39 203/316/39 202/307/39 +f 234/286/43 238/325/43 233/326/43 +f 219/289/49 224/327/49 218/296/49 +f 226/310/39 228/317/39 225/319/39 +f 238/328/41 235/295/41 233/329/41 +f 242/330/50 238/328/50 244/331/50 +f 243/298/51 238/325/51 239/285/51 +f 246/332/41 253/333/41 245/334/41 +f 241/304/40 249/335/40 243/336/40 +f 242/290/42 250/337/42 241/338/42 +f 244/331/41 251/339/41 242/330/41 +f 245/340/39 250/341/39 246/342/39 +f 247/343/39 252/344/39 248/345/39 +f 246/342/39 251/346/39 247/343/39 +f 248/345/39 249/335/39 245/340/39 +f 253/333/39 255/347/39 256/348/39 +f 245/349/42 256/348/42 248/350/42 +f 248/351/40 255/347/40 247/352/40 +f 247/353/43 254/354/43 246/355/43 +f 262/356/39 258/357/39 260/358/39 +f 263/359/39 260/358/39 259/360/39 +f 264/361/39 259/360/39 257/362/39 +f 261/363/39 257/362/39 258/357/39 +f 258/357/40 268/364/40 260/358/40 +f 259/365/41 265/366/41 257/367/41 +f 260/358/42 267/368/42 259/365/42 +f 257/369/43 266/370/43 258/357/43 +f 268/364/38 271/371/38 267/372/38 +f 267/372/38 272/373/38 265/374/38 +f 265/374/38 269/375/38 266/370/38 +f 266/370/38 270/376/38 268/364/38 +f 275/377/43 274/378/43 273/379/43 +f 278/380/51 273/379/51 274/378/51 +f 280/381/43 277/382/43 278/380/43 +f 359/383/42 356/384/42 355/385/42 +f 350/386/42 351/387/42 349/388/42 +f 347/389/41 350/386/41 345/390/41 +f 345/391/38 349/388/38 346/392/38 +f 346/393/40 351/387/40 348/394/40 +f 348/395/39 352/396/39 347/397/39 +f 358/398/43 353/399/43 354/400/43 +f 360/401/38 354/402/38 356/384/38 +f 357/403/39 355/385/39 353/399/39 +f 367/404/42 364/405/42 363/406/42 +f 366/407/43 361/408/43 362/409/43 +f 368/410/38 362/411/38 364/405/38 +f 365/412/39 363/406/39 361/408/39 +f 375/413/42 372/414/42 371/415/42 +f 374/416/43 369/417/43 370/418/43 +f 376/419/38 370/420/38 372/414/38 +f 373/421/39 371/415/39 369/417/39 +f 383/422/42 380/423/42 379/424/42 +f 382/425/43 377/426/43 378/427/43 +f 384/428/38 378/429/38 380/423/38 +f 381/430/39 379/424/39 377/426/39 +f 386/431/40 387/432/40 385/433/40 +f 388/434/42 391/435/42 387/432/42 +f 385/433/43 390/436/43 386/431/43 +f 387/432/39 389/437/39 385/433/39 +f 175/247/38 176/258/38 174/248/38 +f 178/250/39 180/257/39 179/251/39 +f 176/253/40 180/257/40 178/250/40 +f 173/255/41 177/252/41 179/251/41 +f 175/247/42 179/251/42 180/257/42 +f 174/259/43 178/250/43 177/252/43 +f 181/262/41 186/438/41 190/263/41 +f 190/263/41 189/275/41 183/261/41 +f 189/275/41 185/439/41 183/261/41 +f 185/264/44 189/275/44 192/265/44 +f 183/267/42 185/264/42 188/266/42 +f 182/269/43 187/276/43 186/270/43 +f 184/273/40 188/440/40 192/265/40 +f 192/265/40 191/274/40 182/272/40 +f 191/274/40 187/441/40 182/272/40 +f 191/274/39 192/265/39 189/275/39 +f 187/276/45 191/274/45 190/263/45 +f 196/277/42 195/281/42 193/278/42 +f 196/277/39 198/282/39 197/280/39 +f 198/282/43 200/442/43 199/283/43 +f 236/284/40 240/291/40 239/285/40 +f 220/287/42 221/443/42 222/288/42 +f 242/290/46 241/338/46 240/291/46 +f 217/293/47 223/444/47 221/294/47 +f 235/295/42 237/292/42 240/291/42 +f 218/296/43 224/445/43 223/297/43 +f 243/298/43 249/446/43 252/299/43 +f 214/301/43 216/447/43 215/302/43 +f 241/304/48 243/336/48 239/285/48 +f 212/305/39 214/301/39 213/303/39 +f 202/307/43 208/448/43 207/308/43 +f 226/310/41 229/449/41 232/311/41 +f 201/309/47 207/450/47 205/313/47 +f 204/314/42 205/451/42 206/315/42 +f 228/317/40 231/323/40 230/318/40 +f 203/316/49 206/452/49 208/320/49 +f 217/293/39 220/287/39 219/289/39 +f 212/305/42 211/306/42 209/321/42 +f 231/323/38 232/453/38 229/324/38 +f 201/309/39 204/314/39 203/316/39 +f 234/286/43 239/285/43 238/325/43 +f 219/289/49 222/454/49 224/327/49 +f 226/310/39 227/312/39 228/317/39 +f 238/328/41 237/292/41 235/295/41 +f 242/330/50 237/292/50 238/328/50 +f 243/298/51 244/300/51 238/325/51 +f 246/332/41 254/354/41 253/333/41 +f 241/304/40 250/341/40 249/335/40 +f 242/290/42 251/455/42 250/337/42 +f 244/331/41 252/456/41 251/339/41 +f 245/340/39 249/335/39 250/341/39 +f 247/343/39 251/346/39 252/344/39 +f 246/342/39 250/341/39 251/346/39 +f 248/345/39 252/344/39 249/335/39 +f 253/333/39 254/354/39 255/347/39 +f 245/349/42 253/333/42 256/348/42 +f 248/351/40 256/348/40 255/347/40 +f 247/353/43 255/347/43 254/354/43 +f 262/356/39 261/363/39 258/357/39 +f 263/359/39 262/356/39 260/358/39 +f 264/361/39 263/359/39 259/360/39 +f 261/363/39 264/361/39 257/362/39 +f 258/357/40 266/370/40 268/364/40 +f 259/365/41 267/368/41 265/366/41 +f 260/358/42 268/364/42 267/368/42 +f 257/369/43 265/457/43 266/370/43 +f 268/364/38 270/376/38 271/371/38 +f 267/372/38 271/371/38 272/373/38 +f 265/374/38 272/373/38 269/375/38 +f 266/370/38 269/375/38 270/376/38 +f 275/377/43 276/458/43 274/378/43 +f 278/380/51 277/382/51 273/379/51 +f 280/381/43 279/459/43 277/382/43 +f 359/383/42 360/401/42 356/384/42 +f 350/386/42 352/396/42 351/387/42 +f 347/389/41 352/396/41 350/386/41 +f 345/391/38 350/386/38 349/388/38 +f 346/393/40 349/388/40 351/387/40 +f 348/395/39 351/387/39 352/396/39 +f 358/398/43 357/403/43 353/399/43 +f 360/401/38 358/460/38 354/402/38 +f 357/403/39 359/383/39 355/385/39 +f 367/404/42 368/410/42 364/405/42 +f 366/407/43 365/412/43 361/408/43 +f 368/410/38 366/461/38 362/411/38 +f 365/412/39 367/404/39 363/406/39 +f 375/413/42 376/419/42 372/414/42 +f 374/416/43 373/421/43 369/417/43 +f 376/419/38 374/462/38 370/420/38 +f 373/421/39 375/413/39 371/415/39 +f 383/422/42 384/428/42 380/423/42 +f 382/425/43 381/430/43 377/426/43 +f 384/428/38 382/463/38 378/429/38 +f 381/430/39 383/422/39 379/424/39 +f 386/431/40 388/434/40 387/432/40 +f 388/434/42 392/464/42 391/435/42 +f 385/433/43 389/465/43 390/436/43 +f 387/432/39 391/466/39 389/437/39 +s 1 +f 282/467/52 291/468/39 283/469/39 +f 287/470/38 296/471/53 288/472/53 +f 285/473/43 294/474/54 286/475/54 +f 283/469/39 292/476/55 284/477/55 +f 281/478/42 290/479/52 282/467/52 +f 288/472/53 289/480/42 281/478/42 +f 286/475/54 295/481/38 287/482/38 +f 284/477/55 293/483/43 285/473/43 +f 298/484/52 307/485/39 299/486/39 +f 303/487/38 312/488/53 304/489/53 +f 301/490/43 310/491/54 302/492/54 +f 299/486/39 308/493/55 300/494/55 +f 297/495/42 306/496/52 298/484/52 +f 304/489/53 305/497/42 297/495/42 +f 302/492/54 311/498/38 303/499/38 +f 300/494/55 309/500/43 301/490/43 +f 314/501/52 323/502/39 315/503/39 +f 319/504/38 328/505/53 320/506/53 +f 317/507/43 326/508/54 318/509/54 +f 315/503/39 324/510/55 316/511/55 +f 313/512/42 322/513/52 314/501/52 +f 320/506/53 321/514/42 313/512/42 +f 318/509/54 327/515/38 319/516/38 +f 316/511/55 325/517/43 317/507/43 +f 330/518/52 339/519/39 331/520/39 +f 335/521/38 344/522/53 336/523/53 +f 333/524/43 342/525/54 334/526/54 +f 331/520/39 340/527/55 332/528/55 +f 329/529/42 338/530/52 330/518/52 +f 336/523/53 337/531/42 329/529/42 +f 334/526/54 343/532/38 335/533/38 +f 332/528/55 341/534/43 333/524/43 +f 282/467/52 290/479/52 291/468/39 +f 287/470/38 295/535/38 296/471/53 +f 285/473/43 293/483/43 294/474/54 +f 283/469/39 291/468/39 292/476/55 +f 281/478/42 289/480/42 290/479/52 +f 288/472/53 296/471/53 289/480/42 +f 286/475/54 294/474/54 295/481/38 +f 284/477/55 292/476/55 293/483/43 +f 298/484/52 306/496/52 307/485/39 +f 303/487/38 311/536/38 312/488/53 +f 301/490/43 309/500/43 310/491/54 +f 299/486/39 307/485/39 308/493/55 +f 297/495/42 305/497/42 306/496/52 +f 304/489/53 312/488/53 305/497/42 +f 302/492/54 310/491/54 311/498/38 +f 300/494/55 308/493/55 309/500/43 +f 314/501/52 322/513/52 323/502/39 +f 319/504/38 327/537/38 328/505/53 +f 317/507/43 325/517/43 326/508/54 +f 315/503/39 323/502/39 324/510/55 +f 313/512/42 321/514/42 322/513/52 +f 320/506/53 328/505/53 321/514/42 +f 318/509/54 326/508/54 327/515/38 +f 316/511/55 324/510/55 325/517/43 +f 330/518/52 338/530/52 339/519/39 +f 335/521/38 343/538/38 344/522/53 +f 333/524/43 341/534/43 342/525/54 +f 331/520/39 339/519/39 340/527/55 +f 329/529/42 337/531/42 338/530/52 +f 336/523/53 344/522/53 337/531/42 +f 334/526/54 342/525/54 343/532/38 +f 332/528/55 340/527/55 341/534/43 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png index 0ee357a8ed0e4a0d5e55655c4ad6b4f4454127fd..c1f46c2dc7d6a5e3415252335f7ae6c7a94c2696 100644 GIT binary patch literal 2093 zcmbVNc~H}58vYVM0tF--5-}m#DmpF;WmLo%Bwz^QB1b`rSO~TVC=yf>6-4s0vP;lL zw8&-2v0@2_Aw?2UD3B54XyuYa(L$tw00ANqg@i-)2X@A#JF_#p-yh#G&phun@B4gd zemrb_J_6RHZd~tL%4Z#>9N8_PyYs`o`46y}zE%a0kZqDd^C${v3bg$CVB-MHr zZbe1sD&MVpI56&wz2YLz{iaqX`t0C7Jes$ZH1b6Az>0~{f6{xgQFdZ_aXL>uWt2f3 z(o9U;>$>b$+SS#?(q_;W2J2I^DCX+-i}R>W9jq^py_rst%jGOQb?_)>0gcwz*GCh2 zDGPy%SK4{5=N(N9XEYj&r>CbQ)}%?@kU6VRL=MZ>vngdYHMrT?S>Nla+FApU!4u?h zIG5sw7cV84q9?tRZ@()ZM}U4U%>Yb~no-x`z~%y-@J;FI>7i>cuNeay9dY23^(Lu3 zFKMbK5&T$zr@1=ei=!VvHCFoT9UZ8F4(uA@fx|Trew>o;KWV*~?CRv?WQ{Q{M}c+s zN8`cXy?Z5Lai3!}w+0RSV1h2-!11x|%!9cAYM4ND=^^m;Um0ei37|CUotUJ-Q_0 z?Cfkw%!EqSI5`>X�)VIQcA%rFltR!lIXihviB|B}?=0rh3W+;n$^7(S*#p%1W!s z%1V!(6K{rOBJ&50b#?D8%F3Q~L>Jy)35O8RSR5O--09_EI?V&v@sKHrChg-zxf~BbJfQ}g@-`k z)}Pti3q{Q!hvE7%B~{U50v#qM-Iqv?KdJ*gA_SFECrf9u*=s2Eb`l+F#BpwwOqYl; z`dy(Y_-Ciz;oo9Od>16t_8ldkl4W4$3%39gn3;ncIdJFbg3Uog8PND0aYoX?y=c}O z1IYSzBC1$S7&>ME(#Ak^=(|B)OFILGF5jCePAg zVO*{$&DSpj%P^;xlA-nQW;t-*(RNz~SFEtiXvuB0XKDyhF#^4|e zDyOxz^+9#@cp|2KCVxNalwpOaXN$D%{dBt%)t+6q@Mb(j4-7}|0*TC%(>;(tYz^eh zO6^H$03C>FQBfn+m%#WEZ4?AI_x1H%m>Yp5;76r*D%2vw;Q%K`1t|G9O-ETK(BF5S zdDR^8$oD*O=WqDX?Cv&re6T#0fUCndf@?5xkb1or86F?MBe`!uBFz5AV_kxYG>tSI^H-o!sgfdg<+9nvsR4i(w=)NwwCFg42v)n zHK(vAMdd?}pMz7)OFSJ+dMmSczv$UDQzZL>rLAj>Vs4J$-t>YM7KoGzD!27(wFzY6 z_~2&lRBP&G@8ssk0>mcAk0PVTSsv&r7JUrlvl(x3};1j~XMy$!dk6 zseRmqNPc~NeTc*9vuDk$tgMuU<#ZhHi%{I(K4{N>G5cqz?BNIkYh%;c(&9B~_h-BR zmdPqeu|lp_I-?J8ejj&6M>FzJcYW0GE+)*ZD!?k*>e_sSK9GYs54R%S((+K<*pC(X zq1s?HFr0C)Fu=t!N8xN44EuYY7xsVD$WeeS2}r^PH5Ezk;RMLtO=f=#cDT^{1@pE# zfc!SGWGx*&R1PCzuAO7)v7qnV0206vVY1+T}m}e^?ufmJsroury5x Qx^tQ4<>5mvbr1jcUqalFY5)KL literal 1601 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 f&feYo@(WAP>$