TelepathicGrunt / RepurposedStructures

Reusing and modifying vanilla structures for extra variety!
https://www.curseforge.com/minecraft/mc-mods/repurposed-structures
GNU Lesser General Public License v3.0
165 stars 26 forks source link

`Exception generating new chunk` #244

Closed TheGag96 closed 2 years ago

TheGag96 commented 2 years ago

Just got the following crash in my server on exploring in the world. I'm on the modpack Better Minecraft 1.19.2 (Fabric) with the following mods added:

Hopefully this isn't a duplicate of #225 or something else!

java.util.concurrent.CompletionException: net.minecraft.class_148: Exception generating new chunk
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
        at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159) ~[?:?]
        at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
        at net.minecraft.class_3900.method_17634(class_3900.java:62) ~[server-intermediary.jar:?]
        at net.minecraft.class_3846.method_16907(class_3846.java:91) ~[server-intermediary.jar:?]
        at net.minecraft.class_3846.method_16900(class_3846.java:146) ~[server-intermediary.jar:?]
        at net.minecraft.class_3846.run(class_3846.java:102) ~[server-intermediary.jar:?]
        at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?]
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
        at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
        at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
Caused by: net.minecraft.class_148: Exception generating new chunk
        at net.minecraft.class_3898.method_17225(class_3898.java:695) ~[server-intermediary.jar:?]
        at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-5.0.28.jar:?]
        at net.minecraft.class_3898.method_17224(class_3898.java:673) ~[server-intermediary.jar:?]
        at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?]
        ... 11 more
Caused by: java.lang.ClassCastException: class it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair cannot be cast to class com.mojang.datafixers.util.Pair (it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair and com.mojang.datafixers.util.Pair are in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @153f5a29)
        at java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:214) ~[?:?]
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[?:?]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
        at java.util.stream.IntPipeline.reduce(IntPipeline.java:515) ~[?:?]
        at com.telepathicgrunt.repurposedstructures.world.structures.pieces.PieceLimitedJigsawManager$Assembler.processList(PieceLimitedJigsawManager.java:355) ~[repurposed_structures_fabric-6.1.1+1.19.jar:?]
        at com.telepathicgrunt.repurposedstructures.world.structures.pieces.PieceLimitedJigsawManager$Assembler.generatePiece(PieceLimitedJigsawManager.java:318) ~[repurposed_structures_fabric-6.1.1+1.19.jar:?]
        at com.telepathicgrunt.repurposedstructures.world.structures.pieces.PieceLimitedJigsawManager.lambda$assembleJigsawStructure$2(PieceLimitedJigsawManager.java:169) ~[repurposed_structures_fabric-6.1.1+1.19.jar:?]
        at net.minecraft.class_3195$class_7150.method_44021(class_3195.java:116) ~[server-intermediary.jar:?]
        at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-5.0.28.jar:?]
        at net.minecraft.class_3195$class_7150.method_44019(class_3195.java:114) ~[server-intermediary.jar:?]
        at net.minecraft.class_3195.method_41614(class_3195.java:125) ~[server-intermediary.jar:?]
        at net.minecraft.class_2794.method_41044(class_2794.java:638) ~[server-intermediary.jar:?]
        at net.minecraft.class_2794.method_41041(class_2794.java:620) ~[server-intermediary.jar:?]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
        at java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720) ~[?:?]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
        at net.minecraft.class_2794.method_16129(class_2794.java:573) ~[server-intermediary.jar:?]
        at net.minecraft.class_2806.method_39464(class_2806.java:59) ~[server-intermediary.jar:?]
        at net.minecraft.class_2806.method_12154(class_2806.java:292) ~[server-intermediary.jar:?]
        at net.minecraft.class_3898.method_17225(class_3898.java:679) ~[server-intermediary.jar:?]
        at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-5.0.28.jar:?]
        at net.minecraft.class_3898.method_17224(class_3898.java:673) ~[server-intermediary.jar:?]
        at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?]
        ... 11 more
TelepathicGrunt commented 2 years ago

Are you positive you did not add any other mods? I cannot reproduce the issue with the modpack and mods you stated. image

In fact, looking at the code, this crash shouldn't even be physically possible. The list that PieceLimitedJigsawManager$Assembler.processList( takes is a list of com.mojang.datafixers.util.Pair. A list of it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair cannot be passed in and yet the stacktrace says it did which makes no sense. Nothing here is logical...

TelepathicGrunt commented 2 years ago

Actually, the typing of the list gets stripped when compiled so the list of wrong type would be able to get in. But that would mean someone managed to somehow shove the wrong pair type into vanilla's StructureTemplatePool's rawTemplates field...

TelepathicGrunt commented 2 years ago

@TheGag96 When you can, unzip this and put this jar onto your server. Start the server. Then one server is started or crashed, give me the entire latest.log file from the logs folder above the mods folder. This RS jar should print out what template pool and entry is using the wrong data type. Hopefully from the entry, we can see what mod could be at fault. repurposed_structures_fabric-6.1.2-whodunnit+1.19.jar.zip

TelepathicGrunt commented 2 years ago

It looks like it might be Farmer's Delight. Did you do any change to make vanilla villages use RS's generic structure type? That's the only way I can see this crash happening. But the issue lies with Farmer's Delight to fix as they accidentally injected the wrong pair class into the list.

TheGag96 commented 2 years ago

I made no changes to any configs outside of what Better Minecraft already did. Thanks for making the issue over there!

TelepathicGrunt commented 2 years ago

They just released an update. Updating to 1.3.9 - 1.19.X Farmer's Delight should fix your issue