Some more fixes.

This commit is contained in:
raoulvdberge
2018-05-29 11:15:04 +02:00
parent 26eb514800
commit 29b8e762ed
4 changed files with 13 additions and 11 deletions

View File

@@ -51,13 +51,13 @@ public interface ICraftingPattern {
ItemStack getOutput(NonNullList<ItemStack> took); ItemStack getOutput(NonNullList<ItemStack> took);
/** /**
* @return the outputs * @return the byproducts
*/ */
NonNullList<ItemStack> getByproducts(); NonNullList<ItemStack> getByproducts();
/** /**
* @param took the items took per slot * @param took the items took per slot
* @return the outputs based on the items took * @return the byproducts based on the items took
*/ */
NonNullList<ItemStack> getByproducts(NonNullList<ItemStack> took); NonNullList<ItemStack> getByproducts(NonNullList<ItemStack> took);

View File

@@ -125,7 +125,7 @@ public class CraftingPattern implements ICraftingPattern {
public ItemStack getOutput(NonNullList<ItemStack> took) { public ItemStack getOutput(NonNullList<ItemStack> took) {
if (processing) { if (processing) {
throw new IllegalStateException("Cannot get crafting outputs from processing pattern"); throw new IllegalStateException("Cannot get crafting output from processing pattern");
} }
if (took.size() != inputs.size()) { if (took.size() != inputs.size()) {
@@ -148,13 +148,17 @@ public class CraftingPattern implements ICraftingPattern {
@Override @Override
public NonNullList<ItemStack> getByproducts() { public NonNullList<ItemStack> getByproducts() {
if (processing) {
throw new IllegalStateException("Cannot get byproduct outputs from processing pattern");
}
return byproducts; return byproducts;
} }
@Override @Override
public NonNullList<ItemStack> getByproducts(NonNullList<ItemStack> took) { public NonNullList<ItemStack> getByproducts(NonNullList<ItemStack> took) {
if (processing) { if (processing) {
throw new IllegalStateException("Cannot get crafting outputs from processing pattern"); throw new IllegalStateException("Cannot get byproduct outputs from processing pattern");
} }
if (took.size() != inputs.size()) { if (took.size() != inputs.size()) {

View File

@@ -61,6 +61,8 @@ public class CraftingExtractor {
} }
status.set(i, CraftingExtractorItemStatus.EXTRACTED); status.set(i, CraftingExtractorItemStatus.EXTRACTED);
return;
} }
} }
} }

View File

@@ -75,9 +75,9 @@ public class CraftingTask implements ICraftingTask {
ItemStack fromSelf = results.get(possibleInput); ItemStack fromSelf = results.get(possibleInput);
if (fromSelf != null) { if (fromSelf != null) {
int toExtractFromSelf = fromSelf.getCount(); int toExtractFromSelf = Math.min(possibleInput.getCount(), fromSelf.getCount());
results.remove(fromSelf, Math.min(possibleInput.getCount(), toExtractFromSelf)); results.remove(possibleInput, toExtractFromSelf);
toExtract -= toExtractFromSelf; toExtract -= toExtractFromSelf;
} }
@@ -106,7 +106,7 @@ public class CraftingTask implements ICraftingTask {
this.toCraft.add(possibleInput, missing); this.toCraft.add(possibleInput, missing);
while (missing > 0) { while (missing > 0) {
this.steps.add(calculateInternal(mutatedStorage, results, subPattern)); this.steps.add(calculateInternal(mutatedStorage, results, subPattern)); // TODO: eating from itself?
missing -= getQuantityPerCraft(subPattern, possibleInput); missing -= getQuantityPerCraft(subPattern, possibleInput);
} }
@@ -119,10 +119,6 @@ public class CraftingTask implements ICraftingTask {
for (ItemStack output : pattern.getOutputs()) { for (ItemStack output : pattern.getOutputs()) {
results.add(output); results.add(output);
} }
for (ItemStack byproduct : pattern.getByproducts()) {
results.add(byproduct);
}
} else { } else {
results.add(pattern.getOutput(took)); results.add(pattern.getOutput(took));