use of logisticspipes.network.exception.TargetNotFoundException 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);
}
}
Aggregations