/** * Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team * http://www.mod-buildcraft.com * * The BuildCraft API is distributed under the terms of the MIT License. * Please check the contents of the license, which should be located * as "LICENSE.API" in the BuildCraft source code distribution. */ package buildcraft.api.robots; import net.minecraft.item.ItemStack; /** * Provide requests of items that need to be fulfilled. * * Requests are organized as an linear array, where null entries mark slots * without a requests. A request in a slot, or the amount of slots, is allowed * to change before a call to {@link #offerItem(int, ItemStack)}, but it is not * recommended that this is frequent, since the request delivery won't fail * until it is offered the previous request. */ public interface IRequestProvider { /** * Return the total number of request slots available from this provider. * * @return */ int getRequestsCount(); /** * Return a stack with the request in the slot. * * @param slot * @return the request in the slot, or null if there's no request. */ ItemStack getRequest(int slot); /** * Fulfill the request in slot with the stack given and return any excess. * * @param slot * @param stack * @return any excess that was not used to fulfill the request. */ ItemStack offerItem(int slot, ItemStack stack); }