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 0ee357a8e..c1f46c2dc 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_annihilator.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/annihilator.png b/src/main/resources/assets/hbm/textures/models/machines/annihilator.png new file mode 100644 index 000000000..06cdd6961 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/annihilator.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/annihilator_belt.png b/src/main/resources/assets/hbm/textures/models/machines/annihilator_belt.png new file mode 100644 index 000000000..0a8a069e4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/annihilator_belt.png differ