From 6827b12f4a588acfc3fd383132e82ffc71b0937e Mon Sep 17 00:00:00 2001 From: Darkere Date: Thu, 30 Dec 2021 14:24:06 +0100 Subject: [PATCH] Fixed multiple bugs related to transferring recipes into the Crafting Grid. Cherry picked from e0fab68fd3957ee5081a0a709b7fb7c6f7c704a9 --- CHANGELOG.md | 4 ++++ .../apiimpl/network/grid/CraftingGridBehavior.java | 2 +- .../integration/jei/GridRecipeTransferHandler.java | 7 ++++--- .../refinedstorage/network/grid/GridTransferMessage.java | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 171aac68b..2b805f3d7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed + +- Fixed multiple bugs related to transferring recipes into the Crafting Grid. + ## [v1.10.0-beta.4] - 2021-12-28 ### Fixed diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java index 015f71765..bf7698162 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java @@ -210,7 +210,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { // If we are connected, first try to get the possibilities from the network if (network != null && grid.isGridActive()) { for (ItemStack possibility : possibilities) { - ItemStack took = network.extractItem(possibility, 1, IComparer.COMPARE_NBT, Action.PERFORM); + ItemStack took = network.extractItem(possibility, possibility.getCount(), IComparer.COMPARE_NBT, Action.PERFORM); if (!took.isEmpty()) { grid.getCraftingMatrix().setItem(i, took); diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java index 35d7744a8..93c0fabde 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java @@ -151,14 +151,15 @@ public class GridRecipeTransferHandler implements IRecipeTransferHandler s.container instanceof CraftingContainer).collect(Collectors.toList()) + gridContainer.slots.stream().filter(s -> s.container instanceof CraftingContainer).collect(Collectors.toList()), + recipe instanceof CraftingRecipe )); } diff --git a/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java index 19c17e5fa..a0935671b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java @@ -20,13 +20,15 @@ public class GridTransferMessage { private final ItemStack[][] recipe = new ItemStack[9][]; private Map> inputs; private List slots; + boolean isCraftingRecipe; public GridTransferMessage() { } - public GridTransferMessage(Map> inputs, List slots) { + public GridTransferMessage(Map> inputs, List slots, boolean isCraftingRecipe) { this.inputs = inputs; this.slots = slots; + this.isCraftingRecipe = isCraftingRecipe; } public static GridTransferMessage decode(FriendlyByteBuf buf) { @@ -51,7 +53,7 @@ public class GridTransferMessage { buf.writeInt(message.slots.size()); for (Slot slot : message.slots) { - IGuiIngredient ingredient = message.inputs.get(slot.getSlotIndex() + 1); + IGuiIngredient ingredient = message.inputs.get(slot.getSlotIndex() + (message.isCraftingRecipe ? 1 : 0)); List ingredients = new ArrayList<>();