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 }