update items while JEI GUI is active

This commit is contained in:
PrototypeTrousers
2022-10-18 06:50:37 -03:00
parent 9b263c5501
commit 486a68d06b
13 changed files with 82 additions and 26 deletions
@@ -81,6 +81,7 @@ public class GuiCraftConfirm extends AEBaseGui {
this.setScrollBar(scrollbar); this.setScrollBar(scrollbar);
this.ccc = (ContainerCraftConfirm) this.inventorySlots; this.ccc = (ContainerCraftConfirm) this.inventorySlots;
this.ccc.setGui(this);
if (te instanceof WirelessTerminalGuiObject) { if (te instanceof WirelessTerminalGuiObject) {
this.OriginalGui = GuiBridge.GUI_WIRELESS_TERM; this.OriginalGui = GuiBridge.GUI_WIRELESS_TERM;
@@ -95,6 +95,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource {
protected GuiCraftingCPU(final ContainerCraftingCPU container) { protected GuiCraftingCPU(final ContainerCraftingCPU container) {
super(container); super(container);
this.craftingCpu = container; this.craftingCpu = container;
this.craftingCpu.setGui(this);
this.ySize = GUI_HEIGHT; this.ySize = GUI_HEIGHT;
this.xSize = GUI_WIDTH; this.xSize = GUI_WIDTH;
@@ -31,7 +31,11 @@ import appeng.api.util.IConfigManager;
import appeng.api.util.IConfigurableObject; import appeng.api.util.IConfigurableObject;
import appeng.client.ActionKey; import appeng.client.ActionKey;
import appeng.client.gui.AEBaseMEGui; import appeng.client.gui.AEBaseMEGui;
import appeng.client.gui.widgets.*; import appeng.client.gui.widgets.GuiImgButton;
import appeng.client.gui.widgets.GuiScrollbar;
import appeng.client.gui.widgets.GuiTabButton;
import appeng.client.gui.widgets.ISortSource;
import appeng.client.gui.widgets.MEGuiTextField;
import appeng.client.me.InternalSlotME; import appeng.client.me.InternalSlotME;
import appeng.client.me.ItemRepo; import appeng.client.me.ItemRepo;
import appeng.client.me.SlotME; import appeng.client.me.SlotME;
@@ -51,6 +51,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource {
private final ItemRepo repo; private final ItemRepo repo;
private final int rows = 4; private final int rows = 4;
private final ContainerNetworkStatus cns;
private GuiImgButton units; private GuiImgButton units;
private int tooltip = -1; private int tooltip = -1;
@@ -65,6 +66,9 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource {
this.ySize = 153; this.ySize = 153;
this.xSize = 195; this.xSize = 195;
this.repo.setRowSize(5); this.repo.setRowSize(5);
this.cns = (ContainerNetworkStatus) this.inventorySlots;
this.cns.setGui(this);
} }
@Override @Override
@@ -35,6 +35,7 @@ import appeng.api.storage.ITerminalHost;
import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.client.gui.implementations.GuiCraftConfirm;
import appeng.container.AEBaseContainer; import appeng.container.AEBaseContainer;
import appeng.container.guisync.GuiSync; import appeng.container.guisync.GuiSync;
import appeng.core.AELog; import appeng.core.AELog;
@@ -61,6 +62,7 @@ import javax.annotation.Nonnull;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future; import java.util.concurrent.Future;
@@ -85,6 +87,7 @@ public class ContainerCraftConfirm extends AEBaseContainer {
public boolean noCPU = true; public boolean noCPU = true;
@GuiSync(7) @GuiSync(7)
public String myName = ""; public String myName = "";
private GuiCraftConfirm guiCraftConfirm;
public ContainerCraftConfirm(final InventoryPlayer ip, final ITerminalHost te) { public ContainerCraftConfirm(final InventoryPlayer ip, final ITerminalHost te) {
super(ip, te); super(ip, te);
@@ -403,4 +406,12 @@ public class ContainerCraftConfirm extends AEBaseContainer {
public void setJob(final Future<ICraftingJob> job) { public void setJob(final Future<ICraftingJob> job) {
this.job = job; this.job = job;
} }
public void postUpdate(final List<IAEItemStack> list, final byte ref) {
this.guiCraftConfirm.postUpdate(list, ref);
}
public void setGui(GuiCraftConfirm guiCraftConfirm) {
this.guiCraftConfirm = guiCraftConfirm;
}
} }
@@ -30,6 +30,8 @@ import appeng.api.storage.IMEMonitorHandlerReceiver;
import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.client.gui.implementations.GuiCraftConfirm;
import appeng.client.gui.implementations.GuiCraftingCPU;
import appeng.container.AEBaseContainer; import appeng.container.AEBaseContainer;
import appeng.container.guisync.GuiSync; import appeng.container.guisync.GuiSync;
import appeng.core.AELog; import appeng.core.AELog;
@@ -47,6 +49,7 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IContainerListener; import net.minecraft.inventory.IContainerListener;
import java.io.IOException; import java.io.IOException;
import java.util.List;
public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorHandlerReceiver<IAEItemStack>, ICustomNameObject { public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorHandlerReceiver<IAEItemStack>, ICustomNameObject {
@@ -58,6 +61,7 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
@GuiSync(0) @GuiSync(0)
public long eta = -1; public long eta = -1;
private GuiCraftingCPU guiCraftingCPU;
public ContainerCraftingCPU(final InventoryPlayer ip, final Object te) { public ContainerCraftingCPU(final InventoryPlayer ip, final Object te) {
super(ip, te); super(ip, te);
@@ -232,4 +236,12 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
private void setNetwork(final IGrid network) { private void setNetwork(final IGrid network) {
this.network = network; this.network = network;
} }
public void postUpdate(final List<IAEItemStack> list, final byte ref) {
this.guiCraftingCPU.postUpdate(list, ref);
}
public void setGui(GuiCraftingCPU guiCraftingCPU) {
this.guiCraftingCPU = guiCraftingCPU;
}
} }
@@ -24,6 +24,7 @@ import appeng.container.ContainerNull;
import appeng.container.slot.SlotCraftingMatrix; import appeng.container.slot.SlotCraftingMatrix;
import appeng.container.slot.SlotCraftingTerm; import appeng.container.slot.SlotCraftingTerm;
import appeng.helpers.IContainerCraftingPacket; import appeng.helpers.IContainerCraftingPacket;
import appeng.parts.reporting.AbstractPartTerminal;
import appeng.parts.reporting.PartCraftingTerminal; import appeng.parts.reporting.PartCraftingTerminal;
import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.AppEngInternalInventory;
import appeng.util.IConfigManagerHost; import appeng.util.IConfigManagerHost;
@@ -120,8 +121,4 @@ public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAE
public IRecipe getCurrentRecipe() { public IRecipe getCurrentRecipe() {
return this.currentRecipe; return this.currentRecipe;
} }
public IConfigManagerHost getGui() {
return super.getGui();
}
} }
@@ -42,6 +42,7 @@ import appeng.api.storage.data.IItemList;
import appeng.api.util.AEPartLocation; import appeng.api.util.AEPartLocation;
import appeng.api.util.IConfigManager; import appeng.api.util.IConfigManager;
import appeng.api.util.IConfigurableObject; import appeng.api.util.IConfigurableObject;
import appeng.client.gui.implementations.GuiMEMonitorable;
import appeng.container.AEBaseContainer; import appeng.container.AEBaseContainer;
import appeng.container.guisync.GuiSync; import appeng.container.guisync.GuiSync;
import appeng.container.slot.SlotRestrictedInput; import appeng.container.slot.SlotRestrictedInput;
@@ -64,6 +65,7 @@ import net.minecraftforge.fml.common.Loader;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.io.IOException; import java.io.IOException;
import java.nio.BufferOverflowException; import java.nio.BufferOverflowException;
import java.util.List;
public class ContainerMEMonitorable extends AEBaseContainer implements IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver<IAEItemStack> { public class ContainerMEMonitorable extends AEBaseContainer implements IConfigManagerHost, IConfigurableObject, IMEMonitorHandlerReceiver<IAEItemStack> {
@@ -357,11 +359,19 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
this.hasPower = isPowered; this.hasPower = isPowered;
} }
protected IConfigManagerHost getGui() { public IConfigManagerHost getGui() {
return this.gui; return this.gui;
} }
public void setGui(@Nonnull final IConfigManagerHost gui) { public void setGui(@Nonnull final IConfigManagerHost gui) {
this.gui = gui; this.gui = gui;
} }
public IItemList<IAEItemStack> getItems() {
return items;
}
public void postUpdate(final List<IAEItemStack> list) {
((GuiMEMonitorable) this.gui).postUpdate(list);
}
} }
@@ -30,6 +30,7 @@ import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.api.util.AEPartLocation; import appeng.api.util.AEPartLocation;
import appeng.client.gui.implementations.GuiNetworkStatus;
import appeng.container.AEBaseContainer; import appeng.container.AEBaseContainer;
import appeng.container.guisync.GuiSync; import appeng.container.guisync.GuiSync;
import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.network.NetworkHandler;
@@ -42,6 +43,7 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import java.io.IOException; import java.io.IOException;
import java.util.List;
public class ContainerNetworkStatus extends AEBaseContainer { public class ContainerNetworkStatus extends AEBaseContainer {
@@ -56,6 +58,7 @@ public class ContainerNetworkStatus extends AEBaseContainer {
public long maxPower; public long maxPower;
private IGrid network; private IGrid network;
private int delay = 40; private int delay = 40;
private GuiNetworkStatus guiNetworkStatus;
public ContainerNetworkStatus(final InventoryPlayer ip, final INetworkTool te) { public ContainerNetworkStatus(final InventoryPlayer ip, final INetworkTool te) {
super(ip, null, null); super(ip, null, null);
@@ -160,4 +163,12 @@ public class ContainerNetworkStatus extends AEBaseContainer {
private void setPowerUsage(final long powerUsage) { private void setPowerUsage(final long powerUsage) {
this.powerUsage = powerUsage; this.powerUsage = powerUsage;
} }
public void postUpdate(final List<IAEItemStack> list) {
this.guiNetworkStatus.postUpdate(list);
}
public void setGui(GuiNetworkStatus guiNetworkStatus) {
this.guiNetworkStatus = guiNetworkStatus;
}
} }
@@ -20,19 +20,18 @@ package appeng.core.sync.packets;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.client.gui.implementations.GuiCraftConfirm; import appeng.container.implementations.ContainerCraftConfirm;
import appeng.client.gui.implementations.GuiCraftingCPU; import appeng.container.implementations.ContainerCraftingCPU;
import appeng.client.gui.implementations.GuiMEMonitorable; import appeng.container.implementations.ContainerMEMonitorable;
import appeng.client.gui.implementations.GuiNetworkStatus; import appeng.container.implementations.ContainerNetworkStatus;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.core.sync.AppEngPacket; import appeng.core.sync.AppEngPacket;
import appeng.core.sync.network.INetworkInfo; import appeng.core.sync.network.INetworkInfo;
import appeng.util.item.AEItemStack; import appeng.util.item.AEItemStack;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -132,22 +131,22 @@ public class PacketMEInventoryUpdate extends AppEngPacket {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void clientPacketData(final INetworkInfo network, final AppEngPacket packet, final EntityPlayer player) { public void clientPacketData(final INetworkInfo network, final AppEngPacket packet, final EntityPlayer player) {
final GuiScreen gs = Minecraft.getMinecraft().currentScreen; final Container c = player.openContainer;
if (gs instanceof GuiCraftConfirm) { if (c instanceof ContainerCraftConfirm) {
((GuiCraftConfirm) gs).postUpdate(this.list, this.ref); ((ContainerCraftConfirm) c).postUpdate(this.list, this.ref);
} }
if (gs instanceof GuiCraftingCPU) { if (c instanceof ContainerCraftingCPU) {
((GuiCraftingCPU) gs).postUpdate(this.list, this.ref); ((ContainerCraftingCPU) c).postUpdate(this.list, this.ref);
} }
if (gs instanceof GuiMEMonitorable) { if (c instanceof ContainerMEMonitorable) {
((GuiMEMonitorable) gs).postUpdate(this.list); ((ContainerMEMonitorable) c).postUpdate(this.list);
} }
if (gs instanceof GuiNetworkStatus) { if (c instanceof ContainerNetworkStatus) {
((GuiNetworkStatus) gs).postUpdate(this.list); ((ContainerNetworkStatus) c).postUpdate(this.list);
} }
} }
@@ -29,12 +29,15 @@ public class CraftableCallBack implements ITooltipCallback<ItemStack> {
if (list != null) { if (list != null) {
AEItemStack stack = AEItemStack.fromItemStack(ingredient); AEItemStack stack = AEItemStack.fromItemStack(ingredient);
if (list.findPrecise(stack) != null) { if (list.findPrecise(stack) != null) {
tooltip.add(I18n.translateToLocalFormatted("gui.appliedenergistics2.Missing"));
tooltip.add(I18n.translateToLocalFormatted("gui.tooltips.appliedenergistics2.Craftable")); tooltip.add(I18n.translateToLocalFormatted("gui.tooltips.appliedenergistics2.Craftable"));
if (Mouse.isButtonDown(2)) { if (Mouse.isButtonDown(2)) {
((AEBaseContainer) container).setTargetStack(stack); ((AEBaseContainer) container).setTargetStack(stack);
final PacketInventoryAction p = new PacketInventoryAction(InventoryAction.AUTO_CRAFT, container.getInventory().size(), 0); final PacketInventoryAction p = new PacketInventoryAction(InventoryAction.AUTO_CRAFT, container.getInventory().size(), 0);
NetworkHandler.instance().sendToServer(p); NetworkHandler.instance().sendToServer(p);
} }
} else {
tooltip.add(I18n.translateToLocalFormatted("gui.appliedenergistics2.Missing"));
} }
} }
} }
@@ -4,14 +4,13 @@ import appeng.api.config.FuzzyMode;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.client.gui.implementations.GuiCraftingTerm; import appeng.client.gui.implementations.GuiCraftingTerm;
import appeng.client.gui.implementations.GuiPatternTerm;
import appeng.container.implementations.ContainerCraftingTerm; import appeng.container.implementations.ContainerCraftingTerm;
import appeng.container.implementations.ContainerPatternTerm;
import appeng.util.Platform; import appeng.util.Platform;
import appeng.util.item.AEItemStack; import appeng.util.item.AEItemStack;
import mezz.jei.api.gui.IGuiIngredient; import mezz.jei.api.gui.IGuiIngredient;
import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.recipe.transfer.IRecipeTransferError; import mezz.jei.api.recipe.transfer.IRecipeTransferError;
import mezz.jei.gui.recipes.RecipeLayout;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -49,7 +48,7 @@ public class JEIMissingItem implements IRecipeTransferError {
if (fuzzy.size() > 0) { if (fuzzy.size() > 0) {
for (IAEItemStack itemStack : fuzzy) { for (IAEItemStack itemStack : fuzzy) {
if (itemStack.getStackSize() > 0) { if (itemStack.getStackSize() > 0) {
if (itemStack.isSameType(stack)) { if (itemStack.fuzzyComparison(AEItemStack.fromItemStack(stack), FuzzyMode.IGNORE_ALL)) {
found = true; found = true;
break; break;
} }
@@ -87,8 +86,8 @@ public class JEIMissingItem implements IRecipeTransferError {
Container c = minecraft.player.openContainer; Container c = minecraft.player.openContainer;
if (c instanceof ContainerCraftingTerm) { if (c instanceof ContainerCraftingTerm) {
ContainerCraftingTerm craftingTerm = (ContainerCraftingTerm) c; ContainerCraftingTerm craftingTerm = (ContainerCraftingTerm) c;
GuiCraftingTerm g = (GuiCraftingTerm) craftingTerm.getGui();
GuiCraftingTerm g = (GuiCraftingTerm) craftingTerm.getGui();
IItemList<IAEItemStack> ir = g.getRepo().getList(); IItemList<IAEItemStack> ir = g.getRepo().getList();
boolean found; boolean found;
boolean craftable; boolean craftable;
@@ -145,6 +144,9 @@ public class JEIMissingItem implements IRecipeTransferError {
} }
} }
} }
if (!this.errored) {
((RecipeLayout) recipeLayout).getRecipeTransferButton().init(Minecraft.getMinecraft().player.openContainer, Minecraft.getMinecraft().player);
}
} }
} }
@@ -41,6 +41,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@@ -63,7 +64,7 @@ class RecipeTransferHandler<T extends Container> implements IRecipeTransferHandl
@Nullable @Nullable
@Override @Override
public IRecipeTransferError transferRecipe(T container, IRecipeLayout recipeLayout, EntityPlayer player, boolean maxTransfer, boolean doTransfer) { public IRecipeTransferError transferRecipe(@Nonnull T container, IRecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer, boolean doTransfer) {
final String recipeType = recipeLayout.getRecipeCategory().getUid(); final String recipeType = recipeLayout.getRecipeCategory().getUid();
if (recipeType.equals(VanillaRecipeCategoryUid.INFORMATION) || recipeType.equals(VanillaRecipeCategoryUid.FUEL)) { if (recipeType.equals(VanillaRecipeCategoryUid.INFORMATION) || recipeType.equals(VanillaRecipeCategoryUid.FUEL)) {