don't check network for requested craft

This commit is contained in:
way2muchnoise
2016-09-24 11:45:03 +02:00
parent f75df4bfa3
commit f01309a605

View File

@@ -18,7 +18,11 @@ public class CraftingPreviewData {
} }
public void calculate(ItemStack stack, int quantity) { public void calculate(ItemStack stack, int quantity) {
quantity = -add(stack, quantity); calculate(stack, quantity, true);
}
private void calculate(ItemStack stack, int quantity, boolean baseStack) {
quantity = -add(stack, quantity, baseStack);
if (quantity > 0) { if (quantity > 0) {
ICraftingPattern pattern = NetworkUtils.getPattern(network, stack); ICraftingPattern pattern = NetworkUtils.getPattern(network, stack);
@@ -27,7 +31,7 @@ public class CraftingPreviewData {
while (quantity > 0) { while (quantity > 0) {
for (ItemStack ingredient : pattern.getInputs()) { for (ItemStack ingredient : pattern.getInputs()) {
calculate(ingredient, ingredient.stackSize); calculate(ingredient, ingredient.stackSize, false);
} }
get(stack).addExtras(quantityPerRequest); get(stack).addExtras(quantityPerRequest);
@@ -40,24 +44,22 @@ public class CraftingPreviewData {
} }
} }
public int add(ItemStack stack, int quantity) { public int add(ItemStack stack, int quantity, boolean baseStack) {
int hash = NetworkUtils.getItemStackHashCode(stack); int hash = NetworkUtils.getItemStackHashCode(stack);
CraftingPreviewStack previewStack;
if (data.containsKey(hash)) { if (data.containsKey(hash)) {
CraftingPreviewStack previewStack = data.get(hash); previewStack = data.get(hash);
previewStack.addNeeded(quantity); previewStack.addNeeded(quantity);
return previewStack.getAvailable();
} else { } else {
ItemStack networkStack = network.getItemStorage().get(stack, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT); ItemStack networkStack = network.getItemStorage().get(stack, CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT);
CraftingPreviewStack previewStack = new CraftingPreviewStack(stack, quantity, networkStack == null ? 0 : networkStack.stackSize); previewStack = new CraftingPreviewStack(stack, quantity, networkStack == null || baseStack ? 0 : networkStack.stackSize);
data.put(hash, previewStack); data.put(hash, previewStack);
return previewStack.getAvailable();
} }
return baseStack ? -quantity : previewStack.getAvailable();
} }
public CraftingPreviewStack get(ItemStack stack) { public CraftingPreviewStack get(ItemStack stack) {