Jump to content

[1.7.10] Trying to generate a custom error message screen...


Korynkai

Recommended Posts

Hello all,

I've been doing quite a bit of work on MachineMuse's Modular Powersuits lately and, after I realized that when one mod is loaded another must be loaded or issues with the player model occurs, I started trying to figure out how to generate a custom error screen when this condition arises, to prompt the user to install the required mod. Unfortunately, I can't seem to figure out how to generate said error, currently my client just breezes through the call as if there were nothing there.

I must mention I'm not to concerned about the conditions at this point, I just want this error screen to display whenever the client starts up (the conditionals for this are simple enough and I'll be writing these in when I'm able to generate the error screen properly).

 

my RenderPlayerAPIRequiredDisplayException class (language: scala)

 

package net.machinemuse.general.gui

 

import net.minecraft.client.gui.{GuiErrorScreen, FontRenderer}

import cpw.mods.fml.client.CustomModLoadingErrorDisplayException

 

class RenderPlayerAPIRequiredDisplayException extends CustomModLoadingErrorDisplayException {

  override def initGui(errorScreen: GuiErrorScreen, fontRenderer: FontRenderer) {

    errorScreen.initGui

  }

 

  override def drawScreen(errorScreen: GuiErrorScreen, fontRenderer: FontRenderer, mouseRelX: Int, mouseRelY: Int, tickTime: Float) {

    errorScreen.drawDefaultBackground

    var offset: Int = 75

    errorScreen.drawCenteredString(fontRenderer, "A required mod is missing. Minecraft cannot continue loading.", errorScreen.width / 2, offset, 0xFFFFFF)

    offset += 15

    errorScreen.drawCenteredString(fontRenderer, "The mod \'MachineMuse Modular Powersuits\' requires an additional mod \'RenderPlayerAPI\' when \'SmartMoving\' is loaded.", errorScreen.width / 2, offset, 0xEEEEEE)

    offset += 15

    errorScreen.drawCenteredString(fontRenderer, "Please install \'RenderPlayerAPI\' to continue.", errorScreen.width / 2, offset, 0xFFFFFF)

  }

 

}

 

 

which is being called as such (the call is floating, still trying to determine where this goes and whether or not it's exactly the correct call to make):

 

FMLClientHandler.instance.getClient.displayGuiScreen(new GuiCustomModLoadingErrorScreen(new RenderPlayerAPIRequiredDisplayException))

 

 

For the most part, I've been calling this in the client-side eventhandler methods within our CommonProxy class. I assumed this was the correct place to call this, else it would be trying to call this on the server (which would cause other errors)...

Link to comment
Share on other sites

Read the Javadocs on CustomModLoadingErrorDisplayException. It says that you need to throw the exception' date=' not create a GuiScreen for it or anything.[/quote']

 

This was actually one of my initial tests, which threw a standard exception to the console rather than displaying the handled exception as intended... Attempting to reproduce this as we speak.

Link to comment
Share on other sites

Oh, wow, I stand corrected, and I think I know why...

The error was originally regarding "errorScreen.initGui" being called recursively (resulting in a stack overflow). Not sure why I thought this call was necessary, but this now works properly with line 8 of that class removed.

 

For anybody else looking for how to do this, just modify the above class for your error message (make sure to remove "errorScreen.initGui" from line 8) and put this in one of your client-side proxy calls (within the appropriate conditions):

 

throw new WhateverINamedMyNewDisplayException

 

 

Thanks diesieben07

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Minecraft opened, but when I went to create a new world I got another error. https://pastebin.com/mmdNztmW
    • java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'terrablender'!     at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.game.minecraft.Hooks.startServer(Hooks.java:63) ~[fabric-loader-0.15.11.jar:?]     at net.minecraft.server.Main.main(Main.java:112) ~[server-intermediary.jar:?]     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:69) ~[fabric-loader-0.15.11.jar:?] Caused by: java.lang.NoSuchFieldError: Class me.lortseam.completeconfig.data.BooleanEntry does not have member field 'boolean checkbox'     at me.lortseam.completeconfig.data.BooleanEntry.<init>(BooleanEntry.java:25) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Entry.create(Entry.java:42) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.EntrySet.lambda$resolve$1(EntrySet.java:31) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212) ~[?:?]     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194) ~[?:?]     at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024) ~[?:?]     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556) ~[?:?]     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546) ~[?:?]     at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?]     at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?]     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265) ~[?:?]     at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611) ~[?:?]     at me.lortseam.completeconfig.data.EntrySet.resolve(EntrySet.java:32) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Parent.resolveContainer(Parent.java:58) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Parent.resolve(Parent.java:110) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Config.lambda$new$0(Config.java:51) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Config.deserialize(Config.java:94) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at me.lortseam.completeconfig.data.Config.load(Config.java:121) ~[completeconfig-base-2.5.0-cd5950f26b406f27.jar:?]     at io.github.uhq_games.regions_unexplored.RegionsUnexplored.onTerraBlenderInitialized(RegionsUnexplored.java:70) ~[RegionsUnexploredFabric-0.5.31.20.1.jar:?]     at terrablender.core.TerraBlenderFabric.lambda$onInitialize$0(TerraBlenderFabric.java:40) ~[TerraBlender-fabric-1.20.1-3.0.1.7.jar:?]     at java.util.ArrayList.forEach(ArrayList.java:1597) ~[?:?]     at terrablender.core.TerraBlenderFabric.onInitialize(TerraBlenderFabric.java:38) ~[TerraBlender-fabric-1.20.1-3.0.1.7.jar:?]     at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384) ~[fabric-loader-0.15.11.jar:?]  
    • Hi, I have the oficial launcher using the version 1.21, and forge 51.0.13, as soon as I start the installation the games crashes and gives me "exit code: 1", I haven't put any mods yet in the folder. Its the second time that uninstall and install everything and nothing works, checket my graphics and they are updated. https://pastebin.com/STPgEiVs   thanks!
    • Ty very much it worked
    • no clue what is going on, you guys seem more knowledgeable than I am. So here's my log as well as my mod list. Error Folder On Google Drive  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.