Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-216214

netherrack_replace_blobs with water as target crashes the game

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • 21w20a
    • 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

      1. Download the attached data pack and create a new world with it
      2. Run:
        /execute in nitdim:primordial_desert run tp ~ 120 ~
        
      3. Run:
        /locatebiome nitdim:primordial_desert/canyon
        
      4. 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)
      

            fry [Mojang] Georgii Gavrichev
            kanokarob Robert Duke
            Votes:
            9 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved:
              CHK: