diff --git a/src/main/java/appeng/integration/modules/jei/JEIMissingItem.java b/src/main/java/appeng/integration/modules/jei/JEIMissingItem.java index 905ad4e4d..d143d497c 100644 --- a/src/main/java/appeng/integration/modules/jei/JEIMissingItem.java +++ b/src/main/java/appeng/integration/modules/jei/JEIMissingItem.java @@ -17,6 +17,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.PlayerMainInvWrapper; import javax.annotation.Nonnull; @@ -38,15 +39,9 @@ public class JEIMissingItem implements IRecipeTransferError { GuiCraftingTerm g = (GuiCraftingTerm) craftingTerm.getGui(); IItemList ir = g.getRepo().getList(); - IItemList playerInv = wrapPlayerInv(((ContainerCraftingTerm) container).getPlayerInv()); - IItemList available = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList(); - for (IAEItemStack i : ir) { - available.addStorage(i); - } - for (IAEItemStack i : playerInv) { - available.addStorage(i); - } + IItemList available = mergeInventories(ir, (ContainerCraftingTerm) container); + boolean found; this.errored = false; recipeLayout.getItemStacks().addTooltipCallback(new CraftableCallBack(container, available)); @@ -110,18 +105,13 @@ public class JEIMissingItem implements IRecipeTransferError { GuiCraftingTerm g = (GuiCraftingTerm) craftingTerm.getGui(); IItemList ir = g.getRepo().getList(); - IItemList playerInv = wrapPlayerInv(minecraft.player.inventory); boolean found; boolean craftable; int currentSlot = 0; this.errored = false; - IItemList available = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList(); - for (IAEItemStack i : ir) { - available.addStorage(i); - } - for (IAEItemStack i : playerInv) { - available.addStorage(i); - } + + IItemList available = mergeInventories(ir, (ContainerCraftingTerm) minecraft.player.openContainer); + IItemList used = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList(); for (IGuiIngredient i : recipeLayout.getItemStacks().getGuiIngredients().values()) { @@ -197,15 +187,21 @@ public class JEIMissingItem implements IRecipeTransferError { return this.errored; } - - IItemList wrapPlayerInv(InventoryPlayer inventory) { - IItemList used = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList(); - - PlayerMainInvWrapper invWrapper = new PlayerMainInvWrapper(inventory); - for (int i = 0; i < invWrapper.getSlots(); i++) { - used.addStorage(AEItemStack.fromItemStack(invWrapper.getStackInSlot(i))); + IItemList mergeInventories(IItemList repo, ContainerCraftingTerm containerCraftingTerm) { + IItemList itemList = AEApi.instance().storage().getStorageChannel(IItemStorageChannel.class).createList(); + for (IAEItemStack i : repo) { + itemList.addStorage(i); } - return used; + PlayerMainInvWrapper invWrapper = new PlayerMainInvWrapper(containerCraftingTerm.getPlayerInv()); + for (int i = 0; i < invWrapper.getSlots(); i++) { + itemList.addStorage(AEItemStack.fromItemStack(invWrapper.getStackInSlot(i))); + } + + IItemHandler itemHandler = containerCraftingTerm.getInventoryByName("crafting"); + for (int i = 0; i < itemHandler.getSlots(); i++) { + itemList.addStorage(AEItemStack.fromItemStack(itemHandler.getStackInSlot(i))); + } + return itemList; } }