Merge pull request #3588 from Darkere/fix/GH-3442/fix-jei-transfer

fix: crash when tranferring items
This commit is contained in:
Raoul
2023-11-05 17:41:21 +01:00
committed by GitHub
3 changed files with 14 additions and 3 deletions

View File

@@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## [Unreleased]
### Fixed
- Fixed JEI transfer for larger processing recipes
## [1.12.3] - 2023-07-07 ## [1.12.3] - 2023-07-07
### Fixed ### Fixed

View File

@@ -19,7 +19,7 @@ import net.minecraft.client.gui.screens.Screen;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.item.ItemStack; 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 net.minecraftforge.fluids.FluidStack;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -127,7 +127,13 @@ public class GridRecipeTransferHandler implements IRecipeTransferHandler<GridCon
private void moveItems(GridContainerMenu gridContainer, Object recipe, IRecipeSlotsView recipeLayout, Player player) { private void moveItems(GridContainerMenu gridContainer, Object recipe, IRecipeSlotsView recipeLayout, Player player) {
this.lastTransferTimeMs = System.currentTimeMillis(); 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); moveForProcessing(recipeLayout, gridContainer, player);
} else { } else {
move(recipeLayout); move(recipeLayout);

View File

@@ -13,7 +13,7 @@ import net.minecraftforge.network.NetworkEvent;
import java.util.List; import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
public class GridTransferMessage { public class GridTransferMessage {
private final ItemStack[][] recipe = new ItemStack[9][]; private ItemStack[][] recipe;
List<List<ItemStack>> inputs; List<List<ItemStack>> inputs;
public GridTransferMessage() { public GridTransferMessage() {
@@ -26,6 +26,7 @@ public class GridTransferMessage {
public static GridTransferMessage decode(FriendlyByteBuf buf) { public static GridTransferMessage decode(FriendlyByteBuf buf) {
GridTransferMessage msg = new GridTransferMessage(); GridTransferMessage msg = new GridTransferMessage();
int slots = buf.readInt(); int slots = buf.readInt();
msg.recipe = new ItemStack[slots][];
for (int i = 0; i < slots; i++) { for (int i = 0; i < slots; i++) {
int numberOfIngredients = buf.readInt(); int numberOfIngredients = buf.readInt();
msg.recipe[i] = new ItemStack[numberOfIngredients]; msg.recipe[i] = new ItemStack[numberOfIngredients];