diff --git a/resources/assemblyline/textures/blocks.png b/resources/assemblyline/textures/blocks.png index 10bdfff4..6492a481 100644 Binary files a/resources/assemblyline/textures/blocks.png and b/resources/assemblyline/textures/blocks.png differ diff --git a/resources/minecraft.jar.tmp b/resources/minecraft.jar.tmp deleted file mode 100644 index 9b2e6ab2..00000000 Binary files a/resources/minecraft.jar.tmp and /dev/null differ diff --git a/src/minecraft/assemblyline/api/IManipulator.java b/src/minecraft/assemblyline/api/IManipulator.java index 72197357..1b4a0c9a 100644 --- a/src/minecraft/assemblyline/api/IManipulator.java +++ b/src/minecraft/assemblyline/api/IManipulator.java @@ -1,7 +1,5 @@ package assemblyline.api; -import net.minecraft.item.ItemStack; -import universalelectricity.core.vector.Vector3; /** * Interface applied to the manipulator. diff --git a/src/minecraft/assemblyline/client/ClientProxy.java b/src/minecraft/assemblyline/client/ClientProxy.java index 4584009a..3b1a0db3 100644 --- a/src/minecraft/assemblyline/client/ClientProxy.java +++ b/src/minecraft/assemblyline/client/ClientProxy.java @@ -6,13 +6,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; import universalelectricity.core.vector.Vector3; -import assemblyline.client.gui.GuiDetector; import assemblyline.client.gui.GuiRejector; import assemblyline.client.gui.GuiStamper; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.RenderConveyorBelt; import assemblyline.client.render.RenderCrate; -import assemblyline.client.render.RenderDetector; import assemblyline.client.render.RenderManipulator; import assemblyline.client.render.RenderSorter; import assemblyline.common.AssemblyLine; @@ -21,7 +19,6 @@ import assemblyline.common.block.TileEntityCrate; import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.TileEntityConveyorBelt; -import assemblyline.common.machine.detector.TileEntityDetector; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -56,8 +53,6 @@ public class ClientProxy extends CommonProxy return new GuiRejector(player.inventory, ((TileEntityRejector) tileEntity)); case GUI_STAMPER: return new GuiStamper(player.inventory, world, new Vector3(x, y, z)); - case GUI_DETECTOR: - return new GuiDetector(player.inventory, ((TileEntityDetector) tileEntity)); } return null; diff --git a/src/minecraft/assemblyline/client/gui/GuiDetector.java b/src/minecraft/assemblyline/client/gui/GuiDetector.java deleted file mode 100644 index 6dd24794..00000000 --- a/src/minecraft/assemblyline/client/gui/GuiDetector.java +++ /dev/null @@ -1,54 +0,0 @@ -package assemblyline.client.gui; - -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.StatCollector; - -import org.lwjgl.opengl.GL11; - -import assemblyline.common.machine.detector.ContainerDetector; -import assemblyline.common.machine.detector.TileEntityDetector; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** - * @author Briman0094 - */ -@SideOnly(Side.CLIENT) -public class GuiDetector extends GuiContainer -{ - private TileEntityDetector tileEntity; - - public GuiDetector(InventoryPlayer inventory, TileEntityDetector tileEntity) - { - super(new ContainerDetector(inventory, tileEntity)); - this.tileEntity = tileEntity; - this.allowUserInput = false; - short baseHeight = 222; - int var4 = baseHeight - 108; - this.ySize = var4 + 3 * 18; - } - - /** - * Draw the foreground layer for the GuiContainer (everything in front of the items) - */ - protected void drawGuiContainerForegroundLayer(int par1, int par2) - { - fontRenderer.drawString(this.tileEntity.getInvName(), 8, 6, 4210752); - fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 4210752); - } - - /** - * Draw the background layer for the GuiContainer (everything behind the items) - */ - protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) - { - int var4 = this.mc.renderEngine.getTexture("/gui/container.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.renderEngine.bindTexture(var4); - int var5 = (this.width - this.xSize) / 2; - int var6 = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, 3 * 18 + 17); - this.drawTexturedModalRect(var5, var6 + 3 * 18 + 17, 0, 126, this.xSize, 96); - } -} diff --git a/src/minecraft/assemblyline/common/CommonProxy.java b/src/minecraft/assemblyline/common/CommonProxy.java index 495e01b1..0295dc8d 100644 --- a/src/minecraft/assemblyline/common/CommonProxy.java +++ b/src/minecraft/assemblyline/common/CommonProxy.java @@ -9,7 +9,6 @@ import assemblyline.common.machine.ContainerRejector; import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.TileEntityConveyorBelt; -import assemblyline.common.machine.detector.ContainerDetector; import assemblyline.common.machine.detector.TileEntityDetector; import assemblyline.common.machine.filter.ContainerStamper; import cpw.mods.fml.common.network.IGuiHandler; @@ -20,7 +19,6 @@ public class CommonProxy implements IGuiHandler public static final int GUI_REJECTOR = 0; public static final int GUI_STAMPER = 1; public static final int GUI_ARCHITECHT_TABLE = 2; - public static final int GUI_DETECTOR = 3; public void preInit() { @@ -47,9 +45,6 @@ public class CommonProxy implements IGuiHandler return new ContainerRejector(player.inventory, ((TileEntityRejector) tileEntity)); case GUI_STAMPER: return new ContainerStamper(player.inventory, world, new Vector3(x, y, z)); - case GUI_DETECTOR: - return new ContainerDetector(player.inventory, ((TileEntityDetector) tileEntity)); - } return null; diff --git a/src/minecraft/assemblyline/common/block/BlockCrate.java b/src/minecraft/assemblyline/common/block/BlockCrate.java index b1755d04..ffc7603c 100644 --- a/src/minecraft/assemblyline/common/block/BlockCrate.java +++ b/src/minecraft/assemblyline/common/block/BlockCrate.java @@ -1,6 +1,5 @@ package assemblyline.common.block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java b/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java index 3b16af87..79bf0ed1 100644 --- a/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java +++ b/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java @@ -1,36 +1,24 @@ package assemblyline.common.machine.detector; -import java.util.Random; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; -import universalelectricity.prefab.BlockMachine; import universalelectricity.prefab.UETab; -import assemblyline.client.ClientProxy; -import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.AssemblyLine; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; /** * @author Briman0094 */ -public class BlockDetector extends BlockMachine +public class BlockDetector extends BlockFilterable { - private Random random = new Random(); - public BlockDetector(int blockID, int texture) { super("detector", blockID, UniversalElectricity.machine, UETab.INSTANCE); this.blockIndexInTexture = texture; + this.setTextureFile(AssemblyLine.BLOCK_TEXTURE_PATH); } @Override @@ -64,23 +52,6 @@ public class BlockDetector extends BlockMachine return this.blockIndexInTexture; } - @Override - public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityDetector) - { - player.openGui(AssemblyLine.instance, ClientProxy.GUI_DETECTOR, world, x, y, z); - return true; - } - } - - return false; - } - @Override public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) { @@ -91,57 +62,13 @@ public class BlockDetector extends BlockMachine if (tileEntity instanceof TileEntityDetector) { ((TileEntityDetector) tileEntity).toggleInversion(); + world.markBlockForRenderUpdate(x, y, z); } } return true; } - @Override - public void breakBlock(World world, int x, int y, int z, int int1, int int2) - { - TileEntityDetector te = (TileEntityDetector) world.getBlockTileEntity(x, y, z); - - if (te != null) - { - for (int i = 0; i < te.getSizeInventory(); ++i) - { - ItemStack stack = te.getStackInSlot(i); - - if (stack != null) - { - float xShift = this.random.nextFloat() * 0.8F + 0.1F; - float yShift = this.random.nextFloat() * 0.8F + 0.1F; - EntityItem eI; - - for (float zShift = this.random.nextFloat() * 0.8F + 0.1F; stack.stackSize > 0; world.spawnEntityInWorld(eI)) - { - int count = this.random.nextInt(21) + 10; - - if (count > stack.stackSize) - { - count = stack.stackSize; - } - - stack.stackSize -= count; - eI = new EntityItem(world, (double) ((float) x + xShift), (double) ((float) y + yShift), (double) ((float) z + zShift), new ItemStack(stack.itemID, count, stack.getItemDamage())); - float var15 = 0.05F; - eI.motionX = (double) ((float) this.random.nextGaussian() * var15); - eI.motionY = (double) ((float) this.random.nextGaussian() * var15 + 0.2F); - eI.motionZ = (double) ((float) this.random.nextGaussian() * var15); - - if (stack.hasTagCompound()) - { - eI.func_92014_d().setTagCompound((NBTTagCompound) stack.getTagCompound().copy()); - } - } - } - } - } - - super.breakBlock(world, x, y, z, int1, int2); - } - @Override public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { diff --git a/src/minecraft/assemblyline/common/machine/detector/BlockFilterable.java b/src/minecraft/assemblyline/common/machine/detector/BlockFilterable.java new file mode 100644 index 00000000..8b619dbe --- /dev/null +++ b/src/minecraft/assemblyline/common/machine/detector/BlockFilterable.java @@ -0,0 +1,70 @@ +package assemblyline.common.machine.detector; + +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import universalelectricity.prefab.BlockMachine; +import assemblyline.common.machine.filter.ItemFilter; + +/** + * Extend this block class if a filter is allowed to be placed inside of this block. + * + * @author Calclavia + */ +public abstract class BlockFilterable extends BlockMachine +{ + public BlockFilterable(String name, int id, Material material, CreativeTabs creativeTab) + { + super(name, id, material, creativeTab); + } + + /** + * Allows filters to be placed inside of this block. + */ + @Override + public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity != null) + { + if (tileEntity instanceof TileEntityDetector) + { + ItemStack containingStack = ((TileEntityDetector) tileEntity).getStackInSlot(0); + + if (containingStack != null) + { + if (!world.isRemote) + { + EntityItem dropStack = new EntityItem(world, player.posX, player.posY, player.posZ, containingStack); + dropStack.delayBeforeCanPickup = 0; + world.spawnEntityInWorld(dropStack); + } + + ((TileEntityDetector) tileEntity).setInventorySlotContents(0, null); + return true; + } + else + { + if (player.getCurrentEquippedItem() != null) + { + if (player.getCurrentEquippedItem().getItem() instanceof ItemFilter) + { + ((TileEntityDetector) tileEntity).setInventorySlotContents(0, player.getCurrentEquippedItem()); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + return true; + } + } + } + + } + } + + return false; + } + +} diff --git a/src/minecraft/assemblyline/common/machine/detector/ContainerDetector.java b/src/minecraft/assemblyline/common/machine/detector/ContainerDetector.java deleted file mode 100644 index 98d63167..00000000 --- a/src/minecraft/assemblyline/common/machine/detector/ContainerDetector.java +++ /dev/null @@ -1,79 +0,0 @@ -package assemblyline.common.machine.detector; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerDetector extends Container -{ - protected TileEntityDetector tileEntity; - private int numRows = 3; - - public ContainerDetector(InventoryPlayer inventoryPlayer, TileEntityDetector tileEntity) - { - this.tileEntity = tileEntity; - - int var3 = (numRows - 4) * 18; - int x; - int y; - - for (x = 0; x < numRows; ++x) - { - for (y = 0; y < 9; ++y) - { - this.addSlotToContainer(new Slot(tileEntity, y + x * 9, 8 + y * 18, 18 + x * 18)); - } - } - - for (x = 0; x < 3; ++x) - { - for (y = 0; y < 9; ++y) - { - this.addSlotToContainer(new Slot(inventoryPlayer, y + x * 9 + 9, 8 + y * 18, 103 + x * 18 + var3)); - } - } - - for (x = 0; x < 9; ++x) - { - this.addSlotToContainer(new Slot(inventoryPlayer, x, 8 + x * 18, 161 + var3)); - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) - { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if (par2 < this.numRows * 9) - { - if (!this.mergeItemStack(var5, this.numRows * 9, this.inventorySlots.size(), true)) { return null; } - } - else if (!this.mergeItemStack(var5, 0, this.numRows * 9, false)) { return null; } - - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { - var4.onSlotChanged(); - } - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) - { - return tileEntity.isUseableByPlayer(player); - } -} \ No newline at end of file diff --git a/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java b/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java index 5e8262bc..7d8111ae 100644 --- a/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java +++ b/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java @@ -2,11 +2,6 @@ package assemblyline.common.machine.detector; import java.util.ArrayList; -import com.google.common.io.ByteArrayDataInput; - -import cpw.mods.fml.common.network.IPacketHandler; -import cpw.mods.fml.common.network.Player; - import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -16,47 +11,55 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.implement.IRedstoneProvider; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; +import universalelectricity.prefab.tile.TileEntityAdvanced; import assemblyline.common.AssemblyLine; +import assemblyline.common.machine.filter.ItemFilter; -public class TileEntityDetector extends TileEntity implements IInventory, IRedstoneProvider, IPacketReceiver +import com.google.common.io.ByteArrayDataInput; + +public class TileEntityDetector extends TileEntityAdvanced implements IInventory, IRedstoneProvider, IPacketReceiver { private boolean powering = false; private boolean isInverted = false; - private ItemStack[] containingItems = new ItemStack[27]; + private ItemStack[] containingItems = new ItemStack[1]; @Override public void updateEntity() { - int metadata = this.worldObj.getBlockMetadata(xCoord, yCoord, zCoord) & 3; - AxisAlignedBB testArea = AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord - 1, this.yCoord, this.xCoord + 1, this.yCoord, this.zCoord + 1); + super.updateEntity(); - ArrayList entities = (ArrayList) this.worldObj.getEntitiesWithinAABB(EntityItem.class, testArea); - boolean powerCheck = false; - if (entities.size() > 0) + if (!this.worldObj.isRemote && this.ticks % 10 == 0) { - if (hasItems()) - { - for (int i = 0; i < entities.size(); i++) - { - EntityItem e = (EntityItem) entities.get(i); - ItemStack item = e.func_92014_d(); - boolean tFound = false; + int metadata = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); + AxisAlignedBB testArea = AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord - 1, this.yCoord, this.xCoord + 1, this.yCoord, this.zCoord + 1); - for (int ii = 0; ii < this.containingItems.length; ii++) + ArrayList entities = (ArrayList) this.worldObj.getEntitiesWithinAABB(EntityItem.class, testArea); + boolean powerCheck = false; + + if (entities.size() > 0) + { + if (this.containingItems[0] != null) + { + for (int i = 0; i < entities.size(); i++) { - ItemStack compare = this.containingItems[ii]; - if (compare != null) + EntityItem e = (EntityItem) entities.get(i); + ItemStack item = e.func_92014_d(); + boolean found = false; + + ArrayList checkStacks = ItemFilter.getFilters(this.containingItems[0]); + + for (int ii = 0; ii < checkStacks.size(); ii++) { - if (this.isInverted) + ItemStack compare = checkStacks.get(ii); + + if (compare != null) { if (item.itemID == compare.itemID) { @@ -66,84 +69,65 @@ public class TileEntityDetector extends TileEntity implements IInventory, IRedst { if (item.getTagCompound().equals(compare.getTagCompound())) { - tFound = true; + found = true; break; } } else { - tFound = true; - break; - } - } - } - } - else - { - if (item.itemID == compare.itemID) - { - if (item.getItemDamage() == compare.getItemDamage()) - { - if (item.hasTagCompound()) - { - if (item.getTagCompound().equals(compare.getTagCompound())) - { - powerCheck = true; - break; - } - } - else - { - powerCheck = true; + found = true; break; } } } } } - } - if (this.isInverted) - { - if (!tFound) + + if (this.isInverted) + { + if (!found) + { + powerCheck = true; + break; + } + } + else if (found) { powerCheck = true; - break; } } } + else + { + powerCheck = true; + } } else { - powerCheck = true; + powerCheck = false; } - } - else - { - powerCheck = false; - } - if (powerCheck != this.powering) - { - this.powering = powerCheck; - this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, AssemblyLine.blockDetector.blockID); - this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord + 1, this.zCoord, AssemblyLine.blockDetector.blockID); - for (int x = this.xCoord - 1; x <= this.xCoord + 1; x++) + + if (powerCheck != this.powering) { - for (int z = this.zCoord - 1; z <= this.zCoord + 1; z++) + this.powering = powerCheck; + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, AssemblyLine.blockDetector.blockID); + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord + 1, this.zCoord, AssemblyLine.blockDetector.blockID); + for (int x = this.xCoord - 1; x <= this.xCoord + 1; x++) { - this.worldObj.notifyBlocksOfNeighborChange(x, this.yCoord + 1, z, AssemblyLine.blockDetector.blockID); + for (int z = this.zCoord - 1; z <= this.zCoord + 1; z++) + { + this.worldObj.notifyBlocksOfNeighborChange(x, this.yCoord + 1, z, AssemblyLine.blockDetector.blockID); + } } } } } - public boolean hasItems() + @Override + public void invalidate() { - for (int i = 0; i < this.containingItems.length; i++) - { - if (this.containingItems[i] != null) { return true; } - } - - return false; + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord + 1, this.zCoord, AssemblyLine.blockDetector.blockID); + super.invalidate(); } public boolean isInverted() @@ -233,7 +217,7 @@ public class TileEntityDetector extends TileEntity implements IInventory, IRedst @Override public int getSizeInventory() { - return 27; + return this.containingItems.length; } @Override @@ -312,7 +296,7 @@ public class TileEntityDetector extends TileEntity implements IInventory, IRedst @Override public int getInventoryStackLimit() { - return 64; + return 1; } @Override diff --git a/src/minecraft/assemblyline/common/machine/filter/BlockStamper.java b/src/minecraft/assemblyline/common/machine/filter/BlockStamper.java index 2e6394e5..cabf67f8 100644 --- a/src/minecraft/assemblyline/common/machine/filter/BlockStamper.java +++ b/src/minecraft/assemblyline/common/machine/filter/BlockStamper.java @@ -1,6 +1,5 @@ package assemblyline.common.machine.filter; -import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -14,9 +13,10 @@ public class BlockStamper extends BlockMachine public BlockStamper(int id, int texture) { super(id, Material.wood); - this.blockIndexInTexture = 59; + this.blockIndexInTexture = 0; this.setBlockName("stamper"); this.setCreativeTab(UETab.INSTANCE); + this.setTextureFile(AssemblyLine.BLOCK_TEXTURE_PATH); } /** @@ -24,7 +24,7 @@ public class BlockStamper extends BlockMachine */ public int getBlockTextureFromSide(int par1) { - return Block.blockSteel.blockIndexInTexture; + return this.blockIndexInTexture; } /** diff --git a/src/minecraft/assemblyline/common/machine/filter/SlotFilter.java b/src/minecraft/assemblyline/common/machine/filter/SlotFilter.java index 3c8f4adc..34fe85a7 100644 --- a/src/minecraft/assemblyline/common/machine/filter/SlotFilter.java +++ b/src/minecraft/assemblyline/common/machine/filter/SlotFilter.java @@ -1,10 +1,9 @@ package assemblyline.common.machine.filter; -import assemblyline.common.AssemblyLine; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import assemblyline.common.AssemblyLine; public class SlotFilter extends Slot {