From c029cdaed654d9c3fc8746d5a94cb7e788d39655 Mon Sep 17 00:00:00 2001 From: Ramid Khan Date: Thu, 17 Oct 2024 21:04:03 +1100 Subject: [PATCH] Add all viewable items in MEStorageMenus to Emi inventory --- .../emi/EmiUseCraftingRecipeHandler.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/appeng/integration/modules/emi/EmiUseCraftingRecipeHandler.java b/src/main/java/appeng/integration/modules/emi/EmiUseCraftingRecipeHandler.java index 43306d32953..6557f1ef1f7 100644 --- a/src/main/java/appeng/integration/modules/emi/EmiUseCraftingRecipeHandler.java +++ b/src/main/java/appeng/integration/modules/emi/EmiUseCraftingRecipeHandler.java @@ -1,11 +1,14 @@ package appeng.integration.modules.emi; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.core.NonNullList; +import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.Ingredient; @@ -14,11 +17,14 @@ import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.item.crafting.ShapedRecipePattern; +import dev.emi.emi.api.recipe.EmiPlayerInventory; import dev.emi.emi.api.recipe.EmiRecipe; import dev.emi.emi.api.stack.EmiStack; +import appeng.api.stacks.GenericStack; import appeng.core.localization.ItemModText; import appeng.integration.modules.itemlists.CraftingHelper; +import appeng.menu.me.common.GridInventoryEntry; import appeng.menu.me.items.CraftingTermMenu; /** @@ -41,6 +47,25 @@ public EmiUseCraftingRecipeHandler(Class containerClass) { super(containerClass); } + @Override + public EmiPlayerInventory getInventory(AbstractContainerScreen screen) { + List list = new ArrayList<>(); + + for (Slot slot : getInputSources(screen.getMenu())) { + list.add(EmiStack.of(slot.getItem())); + } + + var repo = screen.getMenu().getClientRepo(); + + if (repo != null) { + for (GridInventoryEntry entry : repo.getAllEntries()) { + list.add(EmiStackHelper.toEmiStack(new GenericStack(entry.getWhat(), entry.getStoredAmount()))); + } + } + + return new EmiPlayerInventory(list); + } + @Override protected Result transferRecipe(T menu, RecipeHolder holder, EmiRecipe emiRecipe, boolean doTransfer) {