use of logisticspipes.network.abstractguis.PopupGuiProvider in project LogisticsPipes by RS485.
the class NewGuiHandler method openGui.
@SideOnly(Side.CLIENT)
public static void openGui(GUIPacket packet, EntityPlayer player) {
int guiID = packet.getGuiID();
GuiProvider provider = NewGuiHandler.guilist.get(guiID).template();
LPDataIOWrapper.provideData(packet.getGuiData(), provider::readData);
if (provider instanceof PopupGuiProvider && packet.getWindowID() == -2) {
if (FMLClientHandler.instance().getClient().currentScreen instanceof LogisticsBaseGuiScreen) {
LogisticsBaseGuiScreen baseGUI = (LogisticsBaseGuiScreen) FMLClientHandler.instance().getClient().currentScreen;
SubGuiScreen newSub;
try {
newSub = (SubGuiScreen) provider.getClientGui(player);
} catch (TargetNotFoundException e) {
throw e;
} catch (Exception e) {
LogisticsPipes.log.error(packet.getClass().getName());
LogisticsPipes.log.error(packet.toString());
throw new RuntimeException(e);
}
if (newSub != null) {
if (!baseGUI.hasSubGui()) {
baseGUI.setSubGui(newSub);
} else {
SubGuiScreen canidate = baseGUI.getSubGui();
while (canidate.hasSubGui()) {
canidate = canidate.getSubGui();
}
canidate.setSubGui(newSub);
}
}
}
} else {
GuiContainer screen;
try {
screen = (GuiContainer) provider.getClientGui(player);
} catch (TargetNotFoundException e) {
throw e;
} catch (Exception e) {
LogisticsPipes.log.error(packet.getClass().getName());
LogisticsPipes.log.error(packet.toString());
throw new RuntimeException(e);
}
screen.inventorySlots.windowId = packet.getWindowID();
FMLCommonHandler.instance().showGuiScreen(screen);
}
}
use of logisticspipes.network.abstractguis.PopupGuiProvider in project LogisticsPipes by RS485.
the class NewGuiHandler method openGui.
public static void openGui(GuiProvider guiProvider, EntityPlayer oPlayer) {
if (!(oPlayer instanceof EntityPlayerMP)) {
throw new UnsupportedOperationException("Gui can only be opened on the server side");
}
EntityPlayerMP player = (EntityPlayerMP) oPlayer;
Container container = guiProvider.getContainer(player);
if (container == null) {
if (guiProvider instanceof PopupGuiProvider) {
GUIPacket packet = PacketHandler.getPacket(GUIPacket.class);
packet.setGuiID(guiProvider.getId());
packet.setWindowID(-2);
packet.setGuiData(LPDataIOWrapper.collectData(guiProvider::writeData));
MainProxy.sendPacketToPlayer(packet, player);
}
return;
}
player.getNextWindowId();
player.closeContainer();
int windowId = player.currentWindowId;
GUIPacket packet = PacketHandler.getPacket(GUIPacket.class);
packet.setGuiID(guiProvider.getId());
packet.setWindowID(windowId);
packet.setGuiData(LPDataIOWrapper.collectData(guiProvider::writeData));
MainProxy.sendPacketToPlayer(packet, player);
player.openContainer = container;
player.openContainer.windowId = windowId;
player.openContainer.addCraftingToCrafters(player);
}
Aggregations