@Override public boolean add( final IAEStack e ) { if( this.myInterests.contains( e ) ) { return false; } return this.myInterests.add( e.copy() ) && this.gsc.getInterestManager().put( e, this ); }
@Override public boolean add( final IAEStack e ) { if( this.myInterests.contains( e ) ) { return false; } return this.myInterests.add( e.copy() ) && this.gsc.getInterestManager().put( e, this ); }
@Override public void add( T option ) { if( option != null && option.isCraftable() ) { option = option.copy(); option.setCraftable( false ); } this.target.add( option ); }
@Override public T extractItems( final T request, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { return this.getHandler().extractItems( request, mode, src ); } return this.monitorDifference( request.copy(), this.getHandler().extractItems( request, mode, src ), true, src ); }
@Override public T injectItems( final T input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { return this.getHandler().injectItems( input, mode, src ); } return this.monitorDifference( input.copy(), this.getHandler().injectItems( input, mode, src ), false, src ); }
private T monitorDifference( final IAEStack<T> original, final T leftOvers, final boolean extraction, final IActionSource src ) { final T diff = original.copy(); if( extraction ) { diff.setStackSize( leftOvers == null ? 0 : -leftOvers.getStackSize() ); } else if( leftOvers != null ) { diff.decStackSize( leftOvers.getStackSize() ); } if( diff.getStackSize() != 0 ) { this.postChangesToListeners( ImmutableList.of( diff ), src ); } return leftOvers; }
private T monitorDifference( final T original, final T leftOvers, final boolean extraction, final IActionSource src ) { final T diff = original.copy(); if( extraction ) { diff.setStackSize( leftOvers == null ? 0 : -leftOvers.getStackSize() ); } else if( leftOvers != null ) { diff.decStackSize( leftOvers.getStackSize() ); } if( diff.getStackSize() != 0 ) { this.postChangesToListeners( ImmutableList.of( diff ), src ); } return leftOvers; }
Preconditions.checkNotNull( mode ); final T possible = cell.extractItems( request.copy(), Actionable.SIMULATE, src );
@Override public T injectItems( final T input, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { return this.getHandler().injectItems( input, mode, src ); } this.localDepthSemaphore++; final T leftover = this.getHandler().injectItems( input, mode, src ); this.localDepthSemaphore--; if( this.localDepthSemaphore == 0 ) { this.monitorDifference( input.copy(), leftover, false, src ); } return leftover; }
@Override public T extractItems( final T request, final Actionable mode, final IActionSource src ) { if( mode == Actionable.SIMULATE ) { return this.getHandler().extractItems( request, mode, src ); } this.localDepthSemaphore++; final T leftover = this.getHandler().extractItems( request, mode, src ); this.localDepthSemaphore--; if( this.localDepthSemaphore == 0 ) { this.monitorDifference( request.copy(), leftover, true, src ); } return leftover; }
Preconditions.checkNotNull( mode ); final T possible = cell.injectItems( input.copy(), Actionable.SIMULATE, src ); final T split = input.copy(); split.decStackSize( itemToAdd ); input.setStackSize( itemToAdd ); final T ret = input.copy().setStackSize( input.getStackSize() - itemToAdd ); return ( ret != null && ret.getStackSize() > 0 ) ? ret : null;
if( l != null ) Results = l.copy();
final T r = input.copy(); r.setStackSize( r.getStackSize() - remainingItemCount ); if( mode == Actionable.MODULATE ) final T toReturn = input.copy(); toReturn.setStackSize( input.getStackSize() - remainingItemCount ); if( mode == Actionable.MODULATE ) final T toWrite = input.copy(); toWrite.setStackSize( remainingItemCount );
public static <T extends IAEStack<T>> T inventoryExtract(T input, IMEInventory<T> inv, IActionSource src, IEnergySource energy, Actionable mode) { Preconditions.checkNotNull(input); Preconditions.checkNotNull(inv); Preconditions.checkNotNull(src); Preconditions.checkNotNull(mode); T canExtract = inv.extractItems(input.copy(), Actionable.SIMULATE, src); if (canExtract == null) // There is no item return null; long toExtract = canExtract.getStackSize(); double energyFactor = 0; if (energy != null) { // We need to factor in power available energyFactor = Math.max(1.0, inv.getChannel().transferFactor()); double availablePower = energy.extractAEPower(toExtract / energyFactor, Actionable.SIMULATE, PowerMultiplier.CONFIG); toExtract = Math.min((long) ((availablePower * energyFactor) + 0.9), toExtract); } if (toExtract < 1) return null; if (mode == Actionable.SIMULATE) return canExtract.setStackSize(toExtract); if (energy != null) energy.extractAEPower(toExtract / energyFactor, Actionable.MODULATE, PowerMultiplier.CONFIG); canExtract.setStackSize(toExtract); return inv.extractItems(canExtract, Actionable.MODULATE, src); }
Preconditions.checkNotNull(mode); T notAdded = inv.injectItems(input.copy(), Actionable.SIMULATE, src); T s = input.copy().setStackSize(input.getStackSize() - toAdd); return s != null && s.getStackSize() > 0 ? s : null; return inv.injectItems(input, Actionable.MODULATE, src); T split = input.copy(); input.setStackSize(toAdd); split.decStackSize(toAdd);
T stack = t.copy(); if (this.getViewMode().equals(ViewItems.CRAFTABLE)) { stack.setStackSize(0);
if (tile != null) { IAEStack exportStack = this.export.iterator().next(); IAEStack stack = exportStack.copy(); if (stack instanceof IAEItemStack) { if(tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing.getOpposite())){
if (packet.action == ActionType.PICKUP_OR_SETDOWN) { // Normal lmb if (player.inventory.getItemStack().isEmpty() && packet.requestedStack != null) { // PICKUP IAEItemStack stack = (IAEItemStack) packet.requestedStack.copy(); stack.setStackSize(stack.getDefinition().getMaxStackSize()); stack = AEUtil.inventoryExtract(stack, this.monitor, this.part.source); IAEItemStack stack = (IAEItemStack) packet.requestedStack.copy(); if (!held.isEmpty() && (held.getCount() >= held.getMaxStackSize() || !ForgeUtil.areItemStacksEqual(((IAEItemStack) packet.requestedStack).getDefinition(), held))) return; IAEItemStack stack = (IAEItemStack) packet.requestedStack.copy(); stack.setStackSize(1); stack = AEUtil.inventoryExtract(stack, this.monitor, this.part.source);