From 8f818312a3b63e44dda045df4138a1c1523bf6fb Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 20 Oct 2016 19:00:41 +0200 Subject: [PATCH] Run crafting task calculation async --- .../apiimpl/network/grid/ItemGridHandler.java | 12 +++++++++--- .../refinedstorage/gui/grid/GuiCraftingStart.java | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java index c1e6af1ca..f09850aa8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java @@ -123,9 +123,15 @@ public class ItemGridHandler implements IItemGridHandler { ItemStack stack = network.getItemStorageCache().getList().get(hash); if (stack != null) { - ICraftingTask task = new CraftingTask(network, stack, network.getPattern(stack), quantity); - task.calculate(); - RS.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(task.getPreviewStacks(), hash, quantity), player); + Thread calculationThread = new Thread(() -> { + ICraftingTask task = new CraftingTask(network, stack, network.getPattern(stack), quantity); + + task.calculate(); + + RS.INSTANCE.network.sendTo(new MessageGridCraftingPreviewResponse(task.getPreviewStacks(), hash, quantity), player); + }, "RS crafting calculation"); + + calculationThread.start(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiCraftingStart.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiCraftingStart.java index 11bc8e427..3d220025d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiCraftingStart.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiCraftingStart.java @@ -125,6 +125,8 @@ public class GuiCraftingStart extends GuiBase { if (quantity != null && quantity > 0) { RS.INSTANCE.network.sendToServer(new MessageGridCraftingPreview(stack.getHash(), quantity)); + + startButton.enabled = false; } }