Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Multithreading correctness


TheGreyGhost
 Share

Recommended Posts

Howdy folks

 

Are there any guidelines I should follow to ensure that my mod code is not going to cause multithreading problems?

 

Most of the time it is obvious because I know whether my code is in a render thread, client tick thread, server thread etc, and the method I'm overriding or implementing gives me the (thread-safe) object I need.

 

But I think there are some other places where there might be risk of concurrent threads colliding if I call vanilla objects; especially static registration methods of vanilla classes during mod initialisation.

 

Are ModEventBus events called concurrently if multiple mods are present?  If so, any calls I make to vanilla code from a ModEventBus event is likely to be risky I think.  I hear rumours that DeferredWordQueue::enqueueWork is the method to ensure that registrations using vanilla classes are executed single-threaded, is this the intended method?

 

What about the server thread, client thread?  Eg are there ever concurrent server threads which may cause my mod to access non-thread-safe objects or methods?  I know there are multiple render threads, which is perfectly safe provided I stick to the objects provided in the calling method or event and don't try to access server or client objects via 'sneaky' methods.

 

What assumptions is it safe to make?

 

The worst bugs I've ever had to deal with have all been caused by multithread collisions or race conditions so I'm very keen to understand where the high risk areas are...

 

Cheers

 TGG

 

Link to comment
Share on other sites

During mod loading any event extending ParallelDispatchEvent (mostly FMLCommonSetupEvent and FMLClientSetupEvent) are run in parallel on a threadpool. If you access non-threadsafe things (e.g. BrewingRecipeRegistry) you have to use enqueueWork, which will run the given code synchronously on the main thread after the parallel dispatch.

 

As for client and server thread: There is mainly just the server and client main thread, although the server uses separate threads for world generation (if I remember correctly) and the client uses separate threads (sometimes) for chunk rendering - but you will rarely find problems here.

99% of Minecraft is still single threaded.

  • Thanks 1
Link to comment
Share on other sites

7 minutes ago, diesieben07 said:

although the server uses separate threads for world generation (if I remember correctly)

This is what I believe happens as well. Each chunk may (or may not!) be on its own thread, so you can't reach out too far. I think/hope/assume that the +X/+Z chunks are accessible, due to how vanilla has always handled generation across chunk boundaries before, but I haven't had the time to actually find out. Its possible that there's some precompute (eg. structures) with the structure part bounding boxes and vanilla goes "ok, cool, you want to generate in this volume, that'd be this list of chunks...pooling chunks together...spawning thread...here you go, do what you need."

  • Thanks 1

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Hello There! We got another Hunger Games for you guys and in this episode we get so lucky right off the bat and we get 4 diamonds so we knew as soon as we got this we had to win! However something happens that I am not gonna spoil but it doesn't change too much within us winning! There are some hilarious moments in this episode that I know you guys are gonna love! I hope you all enjoy this video and if you did please consider subscribing and liking the video while you are at it!  
    • java.lang.IllegalArgumentException: Failed to create model for tutorialmod:tutorial_horse at net.minecraft.client.renderer.entity.EntityRenderers.lambda$createEntityRenderers$2(EntityRenderers.java:41) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?] {} at net.minecraft.client.renderer.entity.EntityRenderers.createEntityRenderers(EntityRenderers.java:37) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.entity.EntityRenderDispatcher.onResourceManagerReload(EntityRenderDispatcher.java:333) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.server.packs.resources.ResourceManagerReloadListener.lambda$reload$0(ResourceManagerReloadListener.java:13) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at com.mojang.blaze3d.systems.RenderSystem.replayQueue(RenderSystem.java:172) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:161) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at com.mojang.blaze3d.platform.Window.updateDisplay(Window.java:333) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:1062) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:660) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:38) ~[fmlloader-1.18-38.0.5.jar%230!:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {} Caused by: java.lang.IllegalArgumentException: No model for layer tutorialmod:tutorial_horse#tutorial_horse at net.minecraft.client.model.geom.EntityModelSet.bakeLayer(EntityModelSet.java:18) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.entity.EntityRendererProvider$Context.bakeLayer(EntityRendererProvider.java:50) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at com.tutorial.tutorialmod.mobdata.TutorialHorse.TutorialHorseRenderer.<init>(TutorialHorseRenderer.java:42) ~[%2380!:?] {re:classloading} at net.minecraft.client.renderer.entity.EntityRenderers.lambda$createEntityRenderers$2(EntityRenderers.java:39) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} ... 115 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at net.minecraft.client.renderer.entity.EntityRenderers.lambda$createEntityRenderers$2(EntityRenderers.java:41) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at java.util.HashMap.forEach(HashMap.java:1421) ~[?:?] {} at net.minecraft.client.renderer.entity.EntityRenderers.createEntityRenderers(EntityRenderers.java:37) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.entity.EntityRenderDispatcher.onResourceManagerReload(EntityRenderDispatcher.java:333) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.server.packs.resources.ResourceManagerReloadListener.lambda$reload$0(ResourceManagerReloadListener.java:13) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:795) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:784) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$3(SimpleReloadInstance.java:67) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:90) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.packs.resources.SimpleReloadInstance.lambda$new$4(SimpleReloadInstance.java:66) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading} at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:572) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ~[?:?] {} at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] {} at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:614) ~[?:?] {} at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:726) ~[?:?] {} at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {} at com.mojang.blaze3d.systems.RenderSystem.replayQueue(RenderSystem.java:172) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:161) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} -- Overlay render details -- Details: Overlay name: net.minecraft.client.gui.screens.LoadingOverlay Stacktrace: at net.minecraft.client.renderer.GameRenderer.render(GameRenderer.java:877) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runTick(Minecraft.java:1040) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:660) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:205) ~[forge-1.18-38.0.5_mapped_official_1.18-recomp.jar%2376!:?] {re:classloading,pl:runtimedistcleaner:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeClientUserdevLaunchHandler.lambda$launchService$0(ForgeClientUserdevLaunchHandler.java:38) ~[fmlloader-1.18-38.0.5.jar%230!:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%2310!:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {} Caused by: java.lang.IllegalArgumentException: Failed to create model for tutorialmod:tutorial_horse Caused by: java.lang.IllegalArgumentException: No model for layer tutorialmod:tutorial_horse#tutorial_horse There is no model layer, so the model is supposed to be non-existent?
    • Launcher screenshot: https://tinypic.host/i/YL1x  Launcher Log: https://pastebin.com/WLFuyCMY  I'm not really sure which log would be considered the complete log so these are just all of the logs I have Launcher cef log: https://pastebin.com/xQ3ZeeKd  Debug Log: https://pastebin.com/BSeKG56y  And this one is under "latest": https://pastebin.com/ABSYWX3N 
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.