@Override public ItemList<NamedItemStack> getRepairs() { if (mode.equals(RepairFactoryMode.REPAIR)) { return rfp.getRepairMaterials(); } else { return new ItemList<NamedItemStack>(); } }
@Override public List<InteractionResponse> togglePower() { log.info("Repair factory at " + this.factoryLocation.toString() + " power toggle attempt"); List<InteractionResponse> response = new ArrayList<InteractionResponse>(); // if the factory is turned off if (!active) { // if the factory isn't broken or the current recipe can repair it if (!isBroken() || isRepairing()) { // is there fuel enough for at least once energy cycle? if (isFuelAvailable()) { // are there enough materials for the current recipe in the chest? if (checkHasMaterials()) { // turn the factory on powerOn(); // return a success message response.add(new InteractionResponse(InteractionResult.SUCCESS, "Factory activated!")); return response; } else { // there are not enough materials for the recipe! // return a failure message, containing which materials are needed for the recipe // [Requires the following: Amount Name, Amount Name.] // [Requires one of the following: Amount Name, Amount Name.] ItemList<NamedItemStack> needAll = new ItemList<NamedItemStack>(); ItemList<NamedItemStack> allInputs = null; if (mode.equals(RepairFactoryMode.REPAIR)) { allInputs = rfp.getRepairMaterials(); } else if (mode.equals(RepairFactoryMode.RESET_ITEMS)) { allInputs = rfp.getRecipeMaterials(); } needAll.addAll(allInputs.getDifference(getInventory())); if (!needAll.isEmpty()) { response.add( new InteractionResponse( InteractionResult.FAILURE, "You need all of the following: " + needAll.toString() + ".")); } else if (allInputs == null || allInputs.isEmpty()) { System.out.println( "getAllInputs() returned null or empty; recipe is returning no expectation of input!"); } return response; } } else { // if there isn't enough fuel for at least one energy cycle // return a error message int multiplesRequired = (int) Math.ceil(getProductionTime() / (double) getEnergyTime()); response.add( new InteractionResponse( InteractionResult.FAILURE, "Factory is missing fuel! (" + getFuel().getMultiple(multiplesRequired).toString() + ")")); return response; } } else { response.add( new InteractionResponse(InteractionResult.FAILURE, "Factory is in disrepair!")); return response; } } else { // if the factory is on already // turn the factory off powerOff(); // return success message response.add( new InteractionResponse(InteractionResult.FAILURE, "Factory has been deactivated!")); return response; } }