Package logisticspipes.utils

Examples of logisticspipes.utils.SinkReply


    return (_modules[slot] != null);
  }
 
  @Override
  public SinkReply sinksItem(ItemIdentifier item, int bestPriority, int bestCustomPriority, boolean allowDefault, boolean includeInTransit) {
    SinkReply bestresult = null;
    for (LogisticsModule module : _modules){
      if (module != null){
        SinkReply result = module.sinksItem(item, bestPriority, bestCustomPriority, allowDefault, includeInTransit);
        if (result != null) {
          bestresult = result;
          bestPriority = result.fixedPriority.ordinal();
          bestCustomPriority = result.customPriority;
        }
      }
    }

    if (bestresult == null) return null;
    //Always deny items when we can't put the item anywhere
    IInventoryUtil invUtil = _parentPipe.getSneakyInventory(false);
    if (invUtil == null) return null;
    int roomForItem = invUtil.roomForItem(item);
    if (roomForItem < 1) return null;
    if(includeInTransit) {
      int onRoute = _parentPipe.countOnRoute(item);
      roomForItem = invUtil.roomForItem(item, onRoute + item.getMaxStackSize());
      roomForItem -= onRoute;
      if (roomForItem < 1) return null;
    }

    if(bestresult.maxNumberOfItems == 0) {
      return new SinkReply(bestresult, roomForItem);
    }
    return new SinkReply(bestresult, Math.min(bestresult.maxNumberOfItems, roomForItem));
  }
View Full Code Here


      IRouter dRtr = SimpleServiceLocator.routerManager.getRouterUnsafe(destination,false);
      if(dRtr == null) {
        _orderManager.sendFailed();
        return 0;
      }
      SinkReply reply = LogisticsManager.canSink(dRtr, null, true, stack.getItem(), null, true,false);
      boolean defersend = false;
      if(reply != null) {// some pipes are not aware of the space in the adjacent inventory, so they return null
        if(reply.maxNumberOfItems < wanted) {
          wanted = reply.maxNumberOfItems;
          if(wanted <= 0) {
View Full Code Here

    IRouter dRtr = SimpleServiceLocator.routerManager.getRouterUnsafe(destination,false);
    if(dRtr == null) {
      _service.getOrderManager().sendFailed();
      return 0;
    }
    SinkReply reply = LogisticsManager.canSink(dRtr, null, true, stack.getItem(), null, true, false);
    boolean defersend = false;
    if(reply != null) {// some pipes are not aware of the space in the adjacent inventory, so they return null
      if(reply.maxNumberOfItems < wanted) {
        wanted = reply.maxNumberOfItems;
        if(wanted <= 0) {
View Full Code Here

  }
 
  @Override
  public SinkReply sinksItem(ItemIdentifier item, int bestPriority, int bestCustomPriority, boolean allowDefault, boolean includeInTransit) {
    if(bestPriority > _sinkReply.fixedPriority.ordinal() || (bestPriority == _sinkReply.fixedPriority.ordinal() && bestCustomPriority >= _sinkReply.customPriority)) return null;
    return new SinkReply(_sinkReply, spaceFor(item, includeInTransit, true), isForBuffer(item, includeInTransit) ? BufferMode.BUFFERED : areAllOrderesToBuffer() ? BufferMode.DESTINATION_BUFFERED : BufferMode.NONE);
  }
View Full Code Here

 
  private static final SinkReply _sinkReply = new SinkReply(FixedPriority.ItemSink, 0, true, false, 1, 0);
  @Override
  public SinkReply sinksItem(ItemIdentifier item, int bestPriority, int bestCustomPriority, boolean allowDefault, boolean includeInTransit) {
    if(bestPriority > _sinkReply.fixedPriority.ordinal() || (bestPriority == _sinkReply.fixedPriority.ordinal() && bestCustomPriority >= _sinkReply.customPriority)) return null;
    return new SinkReply(_sinkReply, spaceFor(item, includeInTransit));
  }
View Full Code Here

  protected static final SinkReply  _sinkReply  = new SinkReply(FixedPriority.ItemSink, 0, true, false, 1, 0);
 
  @Override
  public SinkReply sinksItem(ItemIdentifier item, int bestPriority, int bestCustomPriority, boolean allowDefault, boolean includeInTransit) {
    if(bestPriority > _sinkReply.fixedPriority.ordinal() || (bestPriority == _sinkReply.fixedPriority.ordinal() && bestCustomPriority >= _sinkReply.customPriority)) return null;
    return new SinkReply(_sinkReply, spaceFor(item, includeInTransit));
  }
View Full Code Here

    DelayedGeneric<Pair<ItemIdentifierStack, IAdditionalTargetInformation>> lostItem = _lostItems.poll();
    while(lostItem != null) {
     
      Pair<ItemIdentifierStack, IAdditionalTargetInformation> pair = lostItem.get();
      if(_service.getOrderManager().hasOrders(RequestType.CRAFTING)) {
        SinkReply reply = LogisticsManager.canSink(getRouter(), null, true, pair.getValue1().getItem(), null, true, true);
        if(reply == null || reply.maxNumberOfItems < 1) {
          _lostItems.add(new DelayedGeneric<Pair<ItemIdentifierStack, IAdditionalTargetInformation>>(pair, 5000));
          lostItem = _lostItems.poll();
          continue;
        }
View Full Code Here

          break;
        stacksleft -= 1;
        itemsleft -= numtosend;
        ItemStack stackToSend = extracted.splitStack(numtosend);
        if (processingOrder) {
          SinkReply reply = LogisticsManager.canSink(nextOrder.getDestination().getRouter(), null, true, ItemIdentifier.get(stackToSend), null, true, false);
          boolean defersend = false;
          if(reply == null || reply.bufferMode != BufferMode.NONE || reply.maxNumberOfItems < 1) {
            defersend = true;
          }
          IRoutedItem item = SimpleServiceLocator.routedItemHelper.createNewTravelItem(stackToSend);
View Full Code Here

  }
 
  public void cacheAreAllOrderesToBuffer() {
    boolean result = true;
    for(LogisticsOrder order:_service.getOrderManager()) {
      SinkReply reply = LogisticsManager.canSink(order.getDestination().getRouter(), null, true, order.getItem().getItem(), null, true, false);
      if(reply != null && reply.bufferMode != BufferMode.BUFFERED && reply.maxNumberOfItems >= 1) {
        result = false;
      }
    }
    cachedAreAllOrderesToBuffer = result;
View Full Code Here

      for(IFilter filter:candidateRouter.filters) {
        if(filter.blockRouting() || (filter.isBlocked() == filter.isFilteredItem(stack))) continue outer;
      }

      SinkReply reply = canSink(candidateRouter.destination,sourceRouter,excludeSource,stack,result.getValue2(), false,allowDefault);
         
      if (reply == null) continue;
      if (result.getValue1() == null){
        result.setValue1(candidateRouter.destination.getSimpleID());
        result.setValue2(reply);
View Full Code Here

TOP

Related Classes of logisticspipes.utils.SinkReply

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.