-
Bug
-
Resolution: Fixed
-
21w07a, 21w10a
-
None
-
Confirmed
-
Crash, Custom Worlds
-
Very Important
The bug
In custom world generation, using netherrack_replace_blobs features to replace water (or possibly any block that has key properties) causes the game to crash when affected chunks are loaded. netherrack_replace_blobs with other blocks as targets do not exhibit this behavior. No syntax errors are reported by the game log when the world is loaded with the data pack.
Crash report: https://pastebin.com/m8hm0s0B
How to reproduce
- Download the attached data pack and create a new world with it
- Run:
/execute in nitdim:primordial_desert run tp ~ 120 ~
- Run:
/locatebiome nitdim:primordial_desert/canyon
- Either teleport to the destination, or for more controlled testing, slowly fly there in creative mode so you can see when the crash occurs as the chunks begin to load
Feature is located in nitdim/worldgen/configured_features/primordial_desert/replacer_water
To demonstrate this doesn't occur otherwise, you can remove this feature from the canyon biome or change the target to another block, like stone, and delete the region files to regenerate those chunks.
Other netherrack_replace_blobs are used elsewhere in the pack using blocks that have no key properties as targets, most notably in the buried_ocean dimension. They cause no errors or crashes themselves, and this feature is an identical copy to those ones, except for the target/state.
Stack trace
Description: Accessing PalettedContainer from multiple threads java.lang.IllegalStateException at agm.a(SourceFile:27) at agm.a(SourceFile:19) at ckf.a(SourceFile:50) at ckf.a(SourceFile:109) at cjz.a(SourceFile:66) at cjz.a(SourceFile:60) at ckg.a(SourceFile:179) at abb.a(SourceFile:229) at buf.a(SourceFile:15) at cov.a(SourceFile:131) at cqc.a(SourceFile:45) at coc.a(SourceFile:55) at coi.a(SourceFile:29) at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Unknown Source) at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) at coi.a(SourceFile:28) at coc.a(SourceFile:55) at coi.a(SourceFile:29) at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Unknown Source) at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) at coi.a(SourceFile:28) at coc.a(SourceFile:55) at coi.a(SourceFile:29) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.util.stream.IntPipeline$4$1.accept(Unknown Source) at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at coi.a(SourceFile:28) at coc.a(SourceFile:55) at buw.a(SourceFile:380) at cjp.a(SourceFile:231) at cjr.c(SourceFile:100) at cjr.a(SourceFile:231) at aai.a(SourceFile:563) at com.mojang.datafixers.util.Either$Left.map(Either.java:38) at aai.a(SourceFile:557) at java.util.concurrent.CompletableFuture.uniCompose(Unknown Source) at java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown Source) at java.util.concurrent.CompletableFuture$Completion.run(Unknown Source) at aak.b(SourceFile:58) at apc.e(SourceFile:84) at apc.a(SourceFile:124) at apc.run(SourceFile:92) at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source) at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)