From 5c2c146af8b9008451ad783d417f47ed958f8da3 Mon Sep 17 00:00:00 2001 From: Darkere Date: Sun, 5 Nov 2023 17:35:44 +0100 Subject: [PATCH] fix: crash when tranferring items --- CHANGELOG.md | 4 ++++ .../integration/jei/GridRecipeTransferHandler.java | 10 ++++++++-- .../network/grid/GridTransferMessage.java | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5416ac147..f17be577ca 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 JEI transfer for larger processing recipes + ## [1.12.3] - 2023-07-07 ### Fixed 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 a8027d27ab..d807611375 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GridRecipeTransferHandler.java @@ -19,7 +19,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingRecipe; +import net.minecraft.world.item.crafting.Recipe; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.Nullable; @@ -127,7 +127,13 @@ public boolean hasTransferredRecently() { private void moveItems(GridContainerMenu gridContainer, Object recipe, IRecipeSlotsView recipeLayout, Player player) { this.lastTransferTimeMs = System.currentTimeMillis(); - if (gridContainer.getGrid().getGridType() == GridType.PATTERN && !(recipe instanceof CraftingRecipe)) { + boolean isCraftingRecipe = false; + if(recipe instanceof Recipe castRecipe) + { + isCraftingRecipe = castRecipe.getType() == net.minecraft.world.item.crafting.RecipeType.CRAFTING; + } + + if (gridContainer.getGrid().getGridType() == GridType.PATTERN && !isCraftingRecipe) { moveForProcessing(recipeLayout, gridContainer, player); } else { move(recipeLayout); 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 406c219da2..a2fec97297 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/grid/GridTransferMessage.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.function.Supplier; public class GridTransferMessage { - private final ItemStack[][] recipe = new ItemStack[9][]; + private ItemStack[][] recipe; List> inputs; public GridTransferMessage() { @@ -26,6 +26,7 @@ public GridTransferMessage(List> inputs) { public static GridTransferMessage decode(FriendlyByteBuf buf) { GridTransferMessage msg = new GridTransferMessage(); int slots = buf.readInt(); + msg.recipe = new ItemStack[slots][]; for (int i = 0; i < slots; i++) { int numberOfIngredients = buf.readInt(); msg.recipe[i] = new ItemStack[numberOfIngredients];