@Override public void update() { if (--remainingDelay > 0) return; IInventory real = inventoryProvider().getInventory(); int side = inventoryProvider().getInterfacedSide(); if (real == null || side < 0) return; InventoryWrapper inv = InventoryWrapper.wrapInventory(real).setSlotsFromSide(side); InventoryWrapper filt = InventoryWrapper.wrapInventory(filter).setSlotsAll(); List<ItemKey> checked = new ArrayList<ItemKey>(9); boolean requestAttempted = false; boolean requestedSomething = false; for (int i = 0; i < filter.getSizeInventory(); i++) { ItemKeyStack keyStack = ItemKeyStack.get(filter.getStackInSlot(i)); if (keyStack == null || checked.contains(keyStack.key())) continue; int toRequest = filt.getItemCount(keyStack.key()); int inInventory = inv.getItemCount(keyStack.key()) + getEnroute(keyStack.key()); int missing = toRequest - inInventory; if (missing <= 0 || (requestWhenEmpty && inInventory > 0)) continue; RequestConsole req = new RequestConsole().setDestination(routeLayer().getRequester()); req.setCrafting(true).setPulling(true).setPartials(true); ItemKeyStack request = ItemKeyStack.get(keyStack.key(), missing); req.makeRequest(request); requestAttempted = true; if (req.requested() > 0) { addToRequestList(request.key(), req.requested()); requestedSomething = true; } } if (requestAttempted) RouteFX.spawnType1( RouteFX.color_request, 8, routeLayer().getCoords(), routeLayer().getWorld()); if (requestAttempted && requestedSomething) operationsWithoutRequest = 0; else operationsWithoutRequest++; remainingDelay = operationDelay() + throttleDelay(); }
public void addFilterInfo(List<String> list) { list.add(EnumChatFormatting.GRAY + "Stock: "); boolean added = false; for (int i = 0; i < filter.getSizeInventory(); i++) { ItemStack stack = filter.getStackInSlot(i); if (stack != null) { list.add( EnumChatFormatting.GRAY + " - " + stack.getDisplayName() + " (" + stack.stackSize + ")"); added = true; } } if (!added) list.add(EnumChatFormatting.GRAY + " - empty"); }
@Override public void load(NBTTagCompound tag) { super.load(tag); filter.load(tag); requestWhenEmpty = tag.getBoolean("mode"); }
@Override public void save(NBTTagCompound tag) { super.save(tag); filter.save(tag); tag.setBoolean("mode", requestWhenEmpty); }