package crazypants.enderio.machine.vacuum; import java.awt.Point; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import com.enderio.core.client.gui.widget.GhostBackgroundItemSlot; import com.enderio.core.client.gui.widget.GhostSlot; import com.enderio.core.common.ContainerEnder; import crazypants.enderio.EnderIO; public class ContainerVacuumChest extends ContainerEnder<TileVacuumChest> { private Slot filterSlot; private Runnable filterChangedCB; public ContainerVacuumChest(EntityPlayer player, InventoryPlayer inventory, final TileVacuumChest te) { super(inventory, te); } @Override protected void addSlots(InventoryPlayer playerInv) { filterSlot = new FilterSlot(new InventoryFilterUpgrade(getInv())); addSlotToContainer(filterSlot); int x = 8; int y = 18; int index = -1; for (int i = 0; i < TileVacuumChest.ITEM_ROWS; ++i) { for (int j = 0; j < 9; ++j) { addSlotToContainer(new Slot(getInv(), ++index, x + j * 18, y + i * 18)); } } } public void createGhostSlots(List<GhostSlot> slots) { slots.add(new GhostBackgroundItemSlot(EnderIO.itemBasicFilterUpgrade, filterSlot)); } @Override public Point getPlayerInventoryOffset() { Point p = super.getPlayerInventoryOffset(); p.translate(0, 40); return p; } void setFilterChangedCB(Runnable filterChangedCB) { this.filterChangedCB = filterChangedCB; } void filterChanged() { if(filterChangedCB != null) { filterChangedCB.run(); } } class FilterSlot extends Slot { InventoryFilterUpgrade inv; FilterSlot(InventoryFilterUpgrade inv) { super(inv, 0, 8, 86); this.inv = inv; } @Override public void onSlotChanged() { filterChanged(); } @Override public boolean isItemValid(ItemStack stack) { return inv.isItemValidForSlot(0, stack); } } }