mojira.dev
MC-188517

Cannot create multiple empty tags in a datapack

If you try to create multiple empty tags in a datapack, the server crashes on startup.

Steps to reproduce:

  1. Add the attached datapack to your world

  2. (Make sure the datapack is enabled)

  3. Observe that the server crashes

(1.16 Pre-Release 3) [^latest.log]

[21:16:39] [main/WARN]: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Multiple entries with same value: oops:ohno=adc@594a6048 and oops:uhoh=adc@594a6048
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908) ~[?:1.8.0_252]
	at net.minecraft.server.Main.main(SourceFile:138) [server.jar:?]
Caused by: java.lang.IllegalArgumentException: Multiple entries with same value: oops:ohno=adc@594a6048 and oops:uhoh=adc@594a6048
	at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:186) ~[server.jar:?]
	at com.google.common.collect.RegularImmutableBiMap.checkNoConflictInValueBucket(RegularImmutableBiMap.java:132) ~[server.jar:?]
	at com.google.common.collect.RegularImmutableBiMap.fromEntryArray(RegularImmutableBiMap.java:88) ~[server.jar:?]
	at com.google.common.collect.RegularImmutableBiMap.fromEntries(RegularImmutableBiMap.java:57) ~[server.jar:?]
	at com.google.common.collect.ImmutableBiMap.copyOf(ImmutableBiMap.java:321) ~[server.jar:?]
	at com.google.common.collect.ImmutableBiMap.copyOf(ImmutableBiMap.java:294) ~[server.jar:?]
	at adg.b(SourceFile:167) ~[server.jar:?]
	at adg.a(SourceFile:163) ~[server.jar:?]
	at adh.a(SourceFile:69) ~[server.jar:?]
	at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:670) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:646) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456) ~[?:1.8.0_252]
	at abg.a(SourceFile:71) ~[server.jar:?]
	at abg.a(SourceFile:70) ~[server.jar:?]
	at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:543) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:667) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:646) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1975) ~[?:1.8.0_252]
	at abg$1.a(SourceFile:53) ~[server.jar:?]
	at abg$1.a(SourceFile:50) ~[server.jar:?]
	at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:966) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:940) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1609) ~[?:1.8.0_252]
	at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596) ~[?:1.8.0_252]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_252]
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_252]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_252]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_252]

Attachments

Comments 1

Here is a fix as a Fabric mod: https://github.com/haykam821/Empty-Tag-Fix
Seems to be caused by a reusable empty list used for empty tags, which causes IllegalArgumentException to be thrown as that same list can't be used for two entries

Earthcomputer

boq

Confirmed

Very Important

Crash, Data Packs

1.16 Pre-release 3

1.16 Pre-release 4

Retrieved