diff --git a/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java b/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java index 2a230413b..ea578092d 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java +++ b/src/main/java/com/glodblock/github/client/gui/container/base/FCBaseContainer.java @@ -9,6 +9,7 @@ import appeng.api.storage.ITerminalHost; import appeng.container.AEBaseContainer; import appeng.container.guisync.GuiSync; +import appeng.util.Platform; public abstract class FCBaseContainer extends AEBaseContainer { @@ -37,7 +38,7 @@ private int lockSlot() { if (isWirelessTerminal()) { if (this.host instanceof IFluidPortableCell) { final int slotIndex = ((IFluidPortableCell) this.host).getInventorySlot(); - if (Util.GuiHelper.decodeInvType(slotIndex).getLeft() == Util.GuiHelper.InvType.PLAYER_INV) { + if (slotIndex <= Platform.baublesSlotsOffset) { this.lockPlayerInventorySlot(slotIndex); } return slotIndex; diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java index 547c3e1fa..e735dc043 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -2,7 +2,6 @@ import static appeng.util.Platform.baublesSlotsOffset; import static appeng.util.Platform.nextEnum; -import static com.glodblock.github.util.Util.GuiHelper.decodeInvType; import static net.minecraft.client.gui.GuiScreen.isShiftKeyDown; import java.util.Arrays; @@ -138,8 +137,7 @@ public void switchTerminal(EntityPlayer player, ImmutablePair invSlotPair = decodeInvType(slotIndex); + final int slot = slotIndex == Integer.MIN_VALUE ? player.inventory.currentItem : slotIndex;; switch (mode instanceof UltraTerminalModes utm ? utm : getMode(is)) { case CRAFTING -> aeGui = GuiBridge.GUI_CRAFTING_TERMINAL; @@ -161,13 +159,7 @@ private void openGui(final ItemStack is, final World w, final EntityPlayer playe default -> aeGui = GuiBridge.GUI_ME; } - Platform.openGUI( - player, - null, - null, - aeGui, - invSlotPair.getLeft() == Util.GuiHelper.InvType.PLAYER_INV ? slotIndex - : invSlotPair.getRight() + baublesSlotsOffset); + Platform.openGUI(player, null, null, aeGui, slotIndex); } @Override @@ -191,12 +183,7 @@ public void onWornTick(ItemStack itemStack, EntityLivingBase entityLivingBase) { if (handler != null) { for (int i = 0; i < handler.getSizeInventory(); ++i) { if (handler.getStackInSlot(i) == itemStack) { - onUpdate( - itemStack, - null, - player, - Util.GuiHelper.encodeType(i, Util.GuiHelper.InvType.PLAYER_BAUBLES), - false); + onUpdate(itemStack, null, player, i + baublesSlotsOffset, false); } } } diff --git a/src/main/java/com/glodblock/github/inventory/gui/ItemGuiFactory.java b/src/main/java/com/glodblock/github/inventory/gui/ItemGuiFactory.java index 1b489354d..b684143f2 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/ItemGuiFactory.java +++ b/src/main/java/com/glodblock/github/inventory/gui/ItemGuiFactory.java @@ -9,10 +9,10 @@ import net.minecraftforge.common.util.ForgeDirection; import com.glodblock.github.inventory.item.IItemInventory; -import com.glodblock.github.util.Util; import appeng.container.AEBaseContainer; import appeng.container.ContainerOpenContext; +import appeng.util.Platform; public abstract class ItemGuiFactory implements IGuiFactory { @@ -30,7 +30,7 @@ protected T getInventory(Object inv) { @Nullable @Override public Object createServerGui(EntityPlayer player, World world, int x, int y, int z, ForgeDirection face) { - ItemStack item = Util.getWirelessTerminal(player, x); + ItemStack item = Platform.getItemFromPlayerInventoryBySlotIndex(player, x); if (item == null || !(item.getItem() instanceof IItemInventory)) { return null; } @@ -57,7 +57,7 @@ public Object createServerGui(EntityPlayer player, World world, int x, int y, in @Nullable @Override public Object createClientGui(EntityPlayer player, World world, int x, int y, int z, ForgeDirection face) { - ItemStack item = Util.getWirelessTerminal(player, x); + ItemStack item = Platform.getItemFromPlayerInventoryBySlotIndex(player, x); if (item == null || !(item.getItem() instanceof IItemInventory)) { return null; } diff --git a/src/main/java/com/glodblock/github/inventory/gui/PartOrItemGuiFactory.java b/src/main/java/com/glodblock/github/inventory/gui/PartOrItemGuiFactory.java index e2cea6561..bf298ba08 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/PartOrItemGuiFactory.java +++ b/src/main/java/com/glodblock/github/inventory/gui/PartOrItemGuiFactory.java @@ -14,6 +14,7 @@ import appeng.container.AEBaseContainer; import appeng.container.ContainerOpenContext; +import appeng.util.Platform; public abstract class PartOrItemGuiFactory extends PartGuiFactory { @@ -31,7 +32,7 @@ protected T getItemInventory(Object inv) { public Object createServerGui(EntityPlayer player, World world, int x, int y, int z, ForgeDirection face) { ImmutablePair result = Util.GuiHelper.decodeType(y); if (result.getLeft() == Util.GuiHelper.GuiType.ITEM) { - ItemStack item = Util.getWirelessTerminal(player, x); + ItemStack item = Platform.getItemFromPlayerInventoryBySlotIndex(player, x); if (item == null || !(item.getItem() instanceof IItemInventory)) { return null; } @@ -62,7 +63,7 @@ public Object createServerGui(EntityPlayer player, World world, int x, int y, in public Object createClientGui(EntityPlayer player, World world, int x, int y, int z, ForgeDirection face) { ImmutablePair result = Util.GuiHelper.decodeType(y); if (result.left == Util.GuiHelper.GuiType.ITEM) { - ItemStack item = Util.getWirelessTerminal(player, x); + ItemStack item = Platform.getItemFromPlayerInventoryBySlotIndex(player, x); if (item == null || !(item.getItem() instanceof IItemInventory)) { return null; } diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnetCardFilterInventory.java b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnetCardFilterInventory.java index 181b2c948..f650e62af 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnetCardFilterInventory.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnetCardFilterInventory.java @@ -266,7 +266,7 @@ public static class FilterCache { public static WirelessMagnetCardFilterInventory getFilter(ItemStack is, int slot, IGridNode gridNode, EntityPlayer player) { WirelessMagnetCardFilterInventory cachedInv = cache.get(player.getUniqueID()); - if (cachedInv != null && cachedInv.checkCache(is)) { + if (cachedInv != null && cachedInv.checkCache(is) && gridNode == cachedInv.grid) { return cachedInv; } else { WirelessMagnetCardFilterInventory newInv = new WirelessMagnetCardFilterInventory( diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 118a94a72..364ec57b8 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -73,17 +73,15 @@ public final class Util { public static int drainItemPower(AEBaseContainer c, InventoryPlayer ip, int slot, int ticks, double pm, IFluidPortableCell wt) { if (slot != -1) { - final ItemStack currentItem = getWirelessTerminal(ip.player, slot); + final ItemStack currentItem = Platform.getItemFromPlayerInventoryBySlotIndex(ip.player, slot); if (wt != null) { if (currentItem != wt.getItemStack()) { if (currentItem != null) { if (Platform.isSameItem(wt.getItemStack(), currentItem)) { - if (GuiHelper.decodeInvType(slot).getLeft() == GuiHelper.InvType.PLAYER_INV) { + if (slot <= Platform.baublesSlotsOffset) { ip.setInventorySlotContents(slot, wt.getItemStack()); } else { - BaublesApi.getBaubles(ip.player).setInventorySlotContents( - GuiHelper.decodeInvType(slot).getRight(), - wt.getItemStack()); + BaublesApi.getBaubles(ip.player).setInventorySlotContents(slot, wt.getItemStack()); } } else { c.setValidContainer(false); @@ -193,15 +191,6 @@ public static IMEInventoryHandler getWirelessInv(ItemStack is, EntityPlayer p return new NullInventory<>(); } - public static ItemStack getWirelessTerminal(EntityPlayer player, int x) { - ImmutablePair result = GuiHelper.decodeInvType(x); - if (result.getLeft() == GuiHelper.InvType.PLAYER_INV) { - return player.inventory.getStackInSlot(result.getRight()); - } else { - return BaublesApi.getBaubles(player).getStackInSlot(result.getRight()); - } - } - public static ImmutablePair getUltraWirelessTerm(EntityPlayer player) { int invSize = player.inventory.getSizeInventory(); @@ -222,7 +211,7 @@ public static ImmutablePair getUltraWirelessTerm(EntityPlaye for (int i = 0; i < invSize; ++i) { ItemStack is = handler.getStackInSlot(i); if (is != null && is.getItem() instanceof ItemWirelessUltraTerminal) { - return new ImmutablePair<>(GuiHelper.encodeType(i, GuiHelper.InvType.PLAYER_BAUBLES), is); + return new ImmutablePair<>(i + Platform.baublesSlotsOffset, is); } } } @@ -470,13 +459,6 @@ public static int encodeType(int y, GuiType type) { return value | (type.ordinal() << 29) | y; } - public static int encodeType(int x, InvType type) { - if (Math.abs(x) > (1 << 28)) { - throw new IllegalArgumentException("out of range"); - } - return value | (type.ordinal() << 29) | x; - } - public static ImmutablePair decodeType(int y) { if (Math.abs(y) > (1 << 28)) { return new ImmutablePair<>(GuiType.values()[y >> 29 & 1], y - (3 << 29 & y)); @@ -484,14 +466,6 @@ public static ImmutablePair decodeType(int y) { return new ImmutablePair<>(GuiType.TILE, y); } } - - public static ImmutablePair decodeInvType(int x) { - if (Math.abs(x) > (1 << 28)) { - return new ImmutablePair<>(InvType.values()[x >> 29 & 1], x - (3 << 29 & x)); - } else { - return new ImmutablePair<>(InvType.PLAYER_INV, x); - } - } } public static int clamp(int value, int min, int max) {