    001    package cpw.mods.fml.client;
    002
    003    import net.minecraft.client.gui.FontRenderer;
    004    import net.minecraft.client.gui.GuiErrorScreen;
    005    import cpw.mods.fml.common.IFMLHandledException;
    006    import cpw.mods.fml.relauncher.Side;
    007    import cpw.mods.fml.relauncher.SideOnly;
    008
    009    /**
    010     * If a mod throws this exception during loading, it will be called back to render
    011     * the error screen through the methods below. This error will not be cleared, and will
    012     * not allow the game to carry on, but might be useful if your mod wishes to report
    013     * a fatal configuration error in a pretty way.
    014     *
    015     * Throw this through a proxy. It won't work on the dedicated server environment.
    016     * @author cpw
    017     *
    018     */
    019    @SideOnly(Side.CLIENT)
    020    public abstract class CustomModLoadingErrorDisplayException extends RuntimeException implements IFMLHandledException
    021    {
    022        /**
    023         * Called after the GUI is inited by the parent code. You can do extra stuff here, maybe?
    024         *
    025         * @param errorScreen The error screen we're painting
    026         * @param fontRenderer A font renderer for you
    027         */
    028        public abstract void initGui(GuiErrorScreen errorScreen, FontRenderer fontRenderer);
    029
    030        /**
    031         * Draw your error to the screen.
    032         *
    033         * <br/><em>Warning: Minecraft is in a deep error state.</em> <strong>All</strong> it can do is stop.
    034         * Do not try and do anything involving complex user interaction here.
    035         *
    036         * @param errorScreen The error screen to draw to
    037         * @param fontRenderer A font renderer for you
    038         * @param mouseRelX Mouse X
    039         * @param mouseRelY Mouse Y
    040         * @param tickTime tick time
    041         */
    042        public abstract void drawScreen(GuiErrorScreen errorScreen, FontRenderer fontRenderer, int mouseRelX, int mouseRelY, float tickTime);
    043    }