|  | package appeng.api.me.util; | 
|  |  | 
|  | import java.util.List; | 
|  |  | 
|  | import net.minecraft.entity.player.EntityPlayer; | 
|  | import net.minecraft.entity.player.EntityPlayerMP; | 
|  | import net.minecraft.item.ItemStack; | 
|  | import net.minecraft.tileentity.TileEntity; | 
|  | import appeng.api.IAEItemStack; | 
|  | import appeng.api.TileRef; | 
|  | import appeng.api.exceptions.AppEngTileMissingException; | 
|  | import appeng.api.me.tiles.IGridMachine; | 
|  | import appeng.api.me.tiles.IGridTileEntity; | 
|  | import appeng.api.me.tiles.ITilePushable; | 
|  | import appeng.api.networkevents.MENetworkEvent; | 
|  | import appeng.api.networkevents.MENetworkPowerStorage; | 
|  |  | 
|  | /** | 
|  | * Lets you access network related features. You will mostly care about "getCellArray()" which returns the IMEInventory for the entire network... | 
|  | */ | 
|  | public interface IGridInterface | 
|  | { | 
|  | /** | 
|  | * Issue a new crafting request. | 
|  | * @param whatToCraft | 
|  | * @param showInMonitor | 
|  | * @param enableRecursion | 
|  | * @return the ICraftRequest | 
|  | * @throws AppEngTileMissingException | 
|  | */ | 
|  | public ICraftRequest craftingRequest( ItemStack whatToCraft, boolean showInMonitor, boolean enableRecursion ) throws AppEngTileMissingException; | 
|  |  | 
|  | /** | 
|  | * deprecated version of creaftingRequest. | 
|  | * @param what | 
|  | * @return | 
|  | * @throws AppEngTileMissingException | 
|  | */ | 
|  | public ICraftRequest craftingRequest( ItemStack what ) throws AppEngTileMissingException; | 
|  |  | 
|  | /** | 
|  | * opens the crafting gui. | 
|  | * @param pmp | 
|  | * @param gte | 
|  | * @param s | 
|  | * @throws AppEngTileMissingException | 
|  | */ | 
|  | public void craftGui( EntityPlayerMP pmp, IGridTileEntity gte, ItemStack s ) throws AppEngTileMissingException; | 
|  |  | 
|  | /** | 
|  | * Updates the interface requested, used internally | 
|  | * @param te | 
|  | */ | 
|  | public void requestUpdate( IGridTileEntity te ); | 
|  |  | 
|  | /** | 
|  | * returns a list of all machines on the grid. | 
|  | * @return | 
|  | */ | 
|  | List< TileRef<IGridMachine> > getMachines(); | 
|  |  | 
|  | /** | 
|  | * Labeled version for debugging... | 
|  | */ | 
|  | boolean useMEEnergy(float use, String for_what); | 
|  |  | 
|  | /** | 
|  | * returns energy to the system to prevent endless energy sinks. | 
|  | */ | 
|  | void refundMEEnergy( float use, String for_what ); | 
|  |  | 
|  | /** | 
|  | *  Reports previous 20 ticks avg of energy usage. | 
|  | * @return | 
|  | */ | 
|  | public float getPowerUsageAvg(); | 
|  |  | 
|  | /** | 
|  | *  this is used for standard items, anything else just use useMEEnergy. | 
|  | * @param items | 
|  | * @param multipler | 
|  | * @return | 
|  | */ | 
|  | int usePowerForAddition(int items, int multipler); | 
|  |  | 
|  | /** | 
|  | *  returns a single IMEInventory that represents the entire networks. | 
|  | * @return | 
|  | */ | 
|  | public IMEInventoryHandler getCellArray(); | 
|  |  | 
|  | /** | 
|  | *  returns a single IMEInventory that represents the entire network, and all crafting available. | 
|  | * @return | 
|  | */ | 
|  | public IMEInventoryHandler getFullCellArray(); | 
|  |  | 
|  | /** | 
|  | *  add which users should be notified of terminal updates. | 
|  | * @param p | 
|  | */ | 
|  | void addViewingPlayer(EntityPlayer p); | 
|  |  | 
|  | /** | 
|  | *  remove which users should be notified of terminal updates. | 
|  | * @param p | 
|  | */ | 
|  | void rmvViewingPlayer(EntityPlayer p); | 
|  |  | 
|  | /** | 
|  | *  add which users should be notified of crafting queue updates. | 
|  | * @param p | 
|  | */ | 
|  | void addCraftingPlayer(EntityPlayer p); | 
|  |  | 
|  | /** | 
|  | *  remove which users should be notified of crafting queue updates. | 
|  | * @param p | 
|  | */ | 
|  | void rmvCraftingPlayer(EntityPlayer p); | 
|  |  | 
|  | /** | 
|  | * aquire the controller tile entity. | 
|  | * @return | 
|  | */ | 
|  | public TileEntity getController(); | 
|  |  | 
|  | /** | 
|  | * create a waiting job. | 
|  | * @param what | 
|  | * @return | 
|  | */ | 
|  | ICraftRequest waitingRequest(ItemStack what); | 
|  |  | 
|  | /** | 
|  | * creates a crafting job to push the item out of IPushable, and to enable crafting to acocomplish this goal. | 
|  | * @param willAdd | 
|  | * @param out | 
|  | * @param allowCrafting | 
|  | * @return | 
|  | */ | 
|  | ICraftRequest pushRequest( ItemStack willAdd, ITilePushable out, boolean allowCrafting ); | 
|  |  | 
|  | /** | 
|  | * is the grid valid? | 
|  | * @return | 
|  | */ | 
|  | public boolean isValid(); | 
|  |  | 
|  | /** | 
|  | * tell AE to re-examin items in the waiting list. | 
|  | */ | 
|  | void resetWaitingQueue(); | 
|  |  | 
|  | /** | 
|  | * craftable items | 
|  | * @return | 
|  | */ | 
|  | IMEInventoryHandler getCraftableArray(); | 
|  |  | 
|  | /** | 
|  | * get a numeric id for this grid, used internally for cable animations, and not much else. | 
|  | * @return | 
|  | */ | 
|  | public int getGridIndex(); | 
|  |  | 
|  | /** | 
|  | * Try to find the pattern for the item in question. | 
|  | * @param req | 
|  | * @return | 
|  | */ | 
|  | public ICraftingPattern getPatternFor(ItemStack req); | 
|  |  | 
|  | /** | 
|  | * Inform the network that power costs have changed. | 
|  | */ | 
|  | public void triggerPowerUpdate(); | 
|  |  | 
|  | /** | 
|  | * Inform the netowrk that these items were removed from storage ( don't do this for items remove though the grid, it already knows about those. ) | 
|  | * @param removed | 
|  | */ | 
|  | public void notifyExtractItems(IAEItemStack removed); | 
|  |  | 
|  | /** | 
|  | * Inform the network that these items were added to storage ( don't do this for items added via the grid, it already knows about those. ) | 
|  | * @param vo | 
|  | */ | 
|  | public void notifyAddItems(IAEItemStack vo); | 
|  |  | 
|  | /** | 
|  | * return a cache by its identifier ( the number you get when you register your cache with AE ) | 
|  | * @param id | 
|  | * @return | 
|  | */ | 
|  | public IGridCache getCacheByID( int id ); | 
|  |  | 
|  | /** | 
|  | * Potential future use, for now just returns the network encryption key. | 
|  | * @return | 
|  | */ | 
|  | public String getName(); | 
|  |  | 
|  | /** | 
|  | * inform the network that energy was transfered between two nodes on the network, | 
|  | * this will be used to calculates future information, but also causes the network | 
|  | * to flash presently. | 
|  | * | 
|  | * this will automatically be handled by the standard extractItem / addItem API in the future, only | 
|  | * Processes that skip the vanilla AE storage system should use this. | 
|  | * | 
|  | * @param a | 
|  | * @param b | 
|  | * @param amt | 
|  | */ | 
|  | void signalEnergyTransfer(IGridTileEntity a, IGridTileEntity b, float amt); | 
|  |  | 
|  | /** | 
|  | * posts an event into the network, blocks with the event listeners on them will receive them. | 
|  | * @param ev | 
|  | * @return | 
|  | */ | 
|  | public MENetworkEvent postEvent( MENetworkEvent ev ); | 
|  |  | 
|  | @Override | 
|  | public boolean equals(Object obj); | 
|  |  | 
|  | /** | 
|  | * total amount of power available | 
|  | * @return | 
|  | */ | 
|  | public double getAvailablePower(); | 
|  |  | 
|  | /** | 
|  | * Returns if the system can provide this much power, returns the amount of power the system can provide. | 
|  | * @param powerRequired | 
|  | * @return | 
|  | */ | 
|  | public float canUsePower( float powerRequired ); | 
|  |  | 
|  | } |