diff --git a/src/main/java/tenor/AquireItemTask.java b/src/main/java/tenor/AquireItemTask.java index 3acd4e5fc..dcb00b51a 100644 --- a/src/main/java/tenor/AquireItemTask.java +++ b/src/main/java/tenor/AquireItemTask.java @@ -40,7 +40,7 @@ public class AquireItemTask extends QuantizedTaskNode implements IClaimProvider, allocation = null; HashMap tmp = new HashMap<>(); int amountToAllocate = getCurrentQuantityInInventory(); - int[] newAmounts = ScarceParentPriorityAllocator.priorityAllocation(amountToAllocate, parents).getSecond(); + int[] newAmounts = ScarceParentPriorityAllocator.priorityAllocation(amountToAllocate, parents).parentAllocationQuantity; for (int i = 0; i < parents.size(); i++) { tmp.put(parents.get(i), newAmounts[i]); } @@ -53,7 +53,7 @@ public class AquireItemTask extends QuantizedTaskNode implements IClaimProvider, @Override public IQuantityRelationship priority() { // TODO cache - return x -> ScarceParentPriorityAllocator.priorityAllocation(x, parentTasks()).getFirst(); + return x -> ScarceParentPriorityAllocator.priorityAllocation(x, parentTasks()).totalPriority; } @Override diff --git a/src/main/java/tenor/ScarceParentPriorityAllocator.java b/src/main/java/tenor/ScarceParentPriorityAllocator.java index 736aa529e..4602898d9 100644 --- a/src/main/java/tenor/ScarceParentPriorityAllocator.java +++ b/src/main/java/tenor/ScarceParentPriorityAllocator.java @@ -17,14 +17,13 @@ package tenor; -import net.minecraft.util.Tuple; - import java.util.List; public class ScarceParentPriorityAllocator { - public static Tuple priorityAllocation(int quantity, List parents) { + + public static PriorityAllocation priorityAllocation(int quantity, List parents) { if (quantity == 0) { - return new Tuple<>(0D, new int[parents.size()]); + return new PriorityAllocation(new int[parents.size()], 0D); } double[][] priorities = new double[parents.size()][quantity]; for (int i = 0; i < parents.size(); i++) { @@ -53,7 +52,7 @@ public class ScarceParentPriorityAllocator { } if (bestParent == -1 || bestRatio == 0) { - return new Tuple<>(totalPriority, taken); + return new PriorityAllocation(taken, totalPriority); } taken[bestParent] += bestQuantity; filled += bestQuantity; @@ -67,4 +66,15 @@ public class ScarceParentPriorityAllocator { priorities[bestParent] = repl; } } + + public static class PriorityAllocation { + + public final int[] parentAllocationQuantity; + public final double totalPriority; + + public PriorityAllocation(int[] parentAllocationQuantity, double totalPriority) { + this.parentAllocationQuantity = parentAllocationQuantity; + this.totalPriority = totalPriority; + } + } }