fix wireless terminals not opening again

This commit is contained in:
PrototypeTrousers
2023-02-06 13:27:52 -03:00
parent 15dff5d53d
commit 51522019ca
3 changed files with 22 additions and 17 deletions
@@ -363,7 +363,7 @@ public enum GuiBridge implements IGuiHandler {
} else if (x >= 0 && x < player.inventory.mainInventory.size()) { } else if (x >= 0 && x < player.inventory.mainInventory.size()) {
it = player.inventory.getStackInSlot(x); it = player.inventory.getStackInSlot(x);
} }
} else if (y == 1 && z == 0) { } else if (y == 1 && z == Integer.MIN_VALUE) {
if (stem) { if (stem) {
if (player.openContainer instanceof IInventorySlotAware) { if (player.openContainer instanceof IInventorySlotAware) {
int slot = ((IInventorySlotAware) player.openContainer).getInventorySlot(); int slot = ((IInventorySlotAware) player.openContainer).getInventorySlot();
@@ -32,16 +32,17 @@ public class PacketTerminalUse extends AppEngPacket {
@Override @Override
public void serverPacketData(INetworkInfo manager, AppEngPacket packet, EntityPlayer player) { public void serverPacketData(INetworkInfo manager, AppEngPacket packet, EntityPlayer player) {
NonNullList<ItemStack> mainInventory = player.inventory.mainInventory; NonNullList<ItemStack> mainInventory = player.inventory.mainInventory;
for (ItemStack is : mainInventory) { for (int i = 0; i < mainInventory.size(); i++) {
ItemStack is = mainInventory.get(i);
if (terminal.getItemDefinition().isSameAs(is)) { if (terminal.getItemDefinition().isSameAs(is)) {
Platform.openGUI(player, null, AEPartLocation.INTERNAL, terminal.getBridge()); Platform.openGUI(player, i, terminal.getBridge(), false);
return; return;
} }
} }
for (int i = 0; i < BaublesApi.getBaublesHandler(player).getSlots(); i++) { for (int i = 0; i < BaublesApi.getBaublesHandler(player).getSlots(); i++) {
ItemStack is = BaublesApi.getBaublesHandler(player).getStackInSlot(i); ItemStack is = BaublesApi.getBaublesHandler(player).getStackInSlot(i);
if (terminal.getItemDefinition().isSameAs(is)) { if (terminal.getItemDefinition().isSameAs(is)) {
Platform.openGUI(player, null, AEPartLocation.INTERNAL, terminal.getBridge()); Platform.openGUI(player, i, terminal.getBridge(), true);
break; break;
} }
} }
+17 -13
View File
@@ -323,28 +323,19 @@ public class Platform {
return; return;
} }
int x; int x = 0;
int y; int y = 0;
int z; int z = Integer.MIN_VALUE;
if (tile != null) { if (tile != null) {
x = tile.getPos().getX(); x = tile.getPos().getX();
y = tile.getPos().getY(); y = tile.getPos().getY();
z = tile.getPos().getZ(); z = tile.getPos().getZ();
} else {
if (p.openContainer instanceof IInventorySlotAware) {
x = ((IInventorySlotAware) p.openContainer).getInventorySlot();
y = ((IInventorySlotAware) p.openContainer).isBaubleSlot() ? 1 : 0;
} else {
x = p.inventory.currentItem;
y = 0;
}
z = Integer.MIN_VALUE;
} }
if ((type.getType().isItem() && tile == null) || type.hasPermissions(tile, x, y, z, side, p)) { if ((type.getType().isItem() && tile == null) || type.hasPermissions(tile, x, y, z, side, p)) {
if (tile == null && type.getType() == GuiHostType.ITEM) { if (tile == null && type.getType() == GuiHostType.ITEM) {
p.openGui(AppEng.instance(), type.ordinal() << 4, p.getEntityWorld(), x, 0, 0); p.openGui(AppEng.instance(), type.ordinal() << 4, p.getEntityWorld(), x, y, z);
} else if (tile == null || type.getType() == GuiHostType.ITEM) { } else if (tile == null || type.getType() == GuiHostType.ITEM) {
p.openGui(AppEng.instance(), type.ordinal() << 4 | (1 << 3), p.getEntityWorld(), x, y, z); p.openGui(AppEng.instance(), type.ordinal() << 4 | (1 << 3), p.getEntityWorld(), x, y, z);
} else { } else {
@@ -353,6 +344,19 @@ public class Platform {
} }
} }
public static void openGUI(@Nonnull final EntityPlayer p, int slot, @Nonnull final GuiBridge type, boolean isBauble) {
if (isClient()) {
return;
}
if (type.getType().isItem()) {
if (type.getType() == GuiHostType.ITEM) {
p.openGui(AppEng.instance(), type.ordinal() << 4, p.getEntityWorld(), slot, isBauble ? 1 : 0, Integer.MIN_VALUE);
}
}
}
/* /*
* returns true if the code is on the client. * returns true if the code is on the client.
*/ */