Search in sources :

Example 1 with ICraft

use of logisticspipes.interfaces.routing.ICraft in project LogisticsPipes by RS485.

the class RequestTreeNode method getCrafters.

private static List<Pair<ICraftingTemplate, List<IFilter>>> getCrafters(IResource iRequestType, List<ExitRoute> validDestinations) {
    List<Pair<ICraftingTemplate, List<IFilter>>> crafters = new ArrayList<>(validDestinations.size());
    for (ExitRoute r : validDestinations) {
        CoreRoutedPipe pipe = r.destination.getPipe();
        if (r.containsFlag(PipeRoutingConnectionType.canRequestFrom)) {
            if (pipe instanceof ICraft) {
                ICraftingTemplate craftable = ((ICraft) pipe).addCrafting(iRequestType);
                if (craftable != null) {
                    for (IFilter filter : r.filters) {
                        if (filter.isBlocked() == filter.isFilteredItem(craftable.getResultItem()) || filter.blockCrafting()) {
                            continue;
                        }
                    }
                    List<IFilter> list = new LinkedList<>();
                    list.addAll(r.filters);
                    crafters.add(new Pair<>(craftable, list));
                }
            }
        }
    }
    //		Collections.sort(crafters,new CraftingTemplate.PairPrioritizer());
    return crafters;
}
Also used : ICraft(logisticspipes.interfaces.routing.ICraft) IFilter(logisticspipes.interfaces.routing.IFilter) ArrayList(java.util.ArrayList) CoreRoutedPipe(logisticspipes.pipes.basic.CoreRoutedPipe) ExitRoute(logisticspipes.routing.ExitRoute) LinkedList(java.util.LinkedList) Pair(logisticspipes.utils.tuples.Pair)

Aggregations

ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 ICraft (logisticspipes.interfaces.routing.ICraft)1 IFilter (logisticspipes.interfaces.routing.IFilter)1 CoreRoutedPipe (logisticspipes.pipes.basic.CoreRoutedPipe)1 ExitRoute (logisticspipes.routing.ExitRoute)1 Pair (logisticspipes.utils.tuples.Pair)1