Example usage for net.minecraftforge.items IItemHandler IItemHandler

List of usage examples for net.minecraftforge.items IItemHandler IItemHandler

Introduction

In this page you can find the example usage for net.minecraftforge.items IItemHandler IItemHandler.

Prototype

IItemHandler

Source Link

Usage

From source file:de.ellpeck.actuallyadditions.mod.tile.TileEntityItemViewer.java

public TileEntityItemViewer() {
    super("itemViewer");

    this.itemHandler = new IItemHandler() {
        @Override//from  ww  w. j a  va 2 s .  co m
        public int getSlots() {
            int size = 0;
            List<GenericItemHandlerInfo> infos = TileEntityItemViewer.this.getItemHandlerInfos();
            if (infos != null) {
                for (GenericItemHandlerInfo info : infos) {
                    for (IItemHandler handler : info.handlers) {
                        size += handler.getSlots();
                    }
                }
            }
            return size;
        }

        @Override
        public ItemStack getStackInSlot(int slot) {
            SpecificItemHandlerInfo handler = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
            if (handler != null) {
                return handler.handler.getStackInSlot(handler.switchedIndex);
            }
            return StackUtil.getNull();
        }

        @Override
        public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
            SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
            if (info != null && TileEntityItemViewer.this.isWhitelisted(info, stack, false)) {
                ItemStack inserted = info.handler.insertItem(info.switchedIndex, stack, simulate);
                if (!ItemStack.areItemStacksEqual(inserted, stack)) {
                    TileEntityItemViewer.this.markDirty();
                }
                return inserted;
            }
            return stack;
        }

        @Override
        public ItemStack extractItem(int slot, int amount, boolean simulate) {
            ItemStack stackIn = this.getStackInSlot(slot);
            if (StackUtil.isValid(stackIn)) {
                SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
                if (info != null && TileEntityItemViewer.this.isWhitelisted(info, stackIn, true)) {
                    ItemStack extracted = info.handler.extractItem(info.switchedIndex, amount, simulate);
                    if (extracted != null) {
                        TileEntityItemViewer.this.markDirty();
                    }
                    return extracted;
                }
            }
            return StackUtil.getNull();
        }

        @Override
        public int getSlotLimit(int slot) {
            SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
            if (info != null) {
                return info.handler.getSlotLimit(info.switchedIndex);
            } else {
                return 0;
            }
        }
    };
}

From source file:therogue.storehouse.multiblock.block.ItemCapabilityWrapper.java

License:Open Source License

@Override
public IItemHandler getWrappedCapability(IItemHandler wrappable) {
    return new IItemHandler() {

        @Override/*from   w  w  w .  j a  v  a 2s. c  o m*/
        public int getSlots() {
            return wrappable.getSlots();
        }

        @Override
        public ItemStack getStackInSlot(int slot) {
            return wrappable.getStackInSlot(slot);
        }

        @Override
        public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
            return canInsert ? wrappable.insertItem(slot, stack, simulate) : stack;
        }

        @Override
        public ItemStack extractItem(int slot, int amount, boolean simulate) {
            return canExtract ? wrappable.extractItem(slot, amount, simulate) : ItemStack.EMPTY;
        }

        @Override
        public int getSlotLimit(int slot) {
            return wrappable.getSlotLimit(slot);
        }
    };
}