Loot table exceptions are not caught
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table (thrown by Json parser)
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}
[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
Created Issue:
Loot table names with periods create error
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 moreNote: When using a loot table name with a period for a chest, it crashes the game
Loot tablenames with periodscreate errorLoot table exceptions are not caught
When using a string containg a period as DeathLootTable
a fatal error occurs.Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 moreNote: When using a loot table name with a period for a chest, it crashes the game
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Loot table name contains a colon
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Loot table name contains a colon
- Invalid item name in loot table
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Loot table name contains a colon
- Invalid item name in loot table
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 moreThe bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table (thrown by Gson)
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
The bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table (thrown by
Gson)Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 moreThe bug
(Apparently) Every loot table exception that occurs is not caught causing the game to crash when an invalid loot table is used for containers and in general printing an fatal error in the log.
Affected situations
- Invalid loot table name (Loot table name contains for example a colon)
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table (thrown by Json parser)
Example
When using a string containg a period as DeathLootTable a fatal error occurs.
Used command/summon Cow ~ ~ ~ {DeathLootTable:".",Health:0.1,NoAI:1}Fatal Error (15w43a)[19:16:52] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w43a.jar:?] at bxi.C(SourceFile:154) [15w43a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w43a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name '{}' (can't contain periods)minecraft:. at azm$a.a(SourceFile:61) ~[15w43a.jar:?] at azm$a.load(SourceFile:56) ~[15w43a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azm.a(SourceFile:46) ~[15w43a.jar:?] at rv.a(SourceFile:435) ~[15w43a.jar:?] at ru.a(SourceFile:833) ~[15w43a.jar:?] at ru.a(SourceFile:766) ~[15w43a.jar:?] at vp.a(SourceFile:64) ~[15w43a.jar:?] at zl.f(SourceFile:1070) ~[15w43a.jar:?] at ls.f(SourceFile:1032) ~[15w43a.jar:?] at mb.a(SourceFile:899) ~[15w43a.jar:?] at is.a(SourceFile:68) ~[15w43a.jar:?] at is.a(SourceFile:12) ~[15w43a.jar:?] at fh$1.run(SourceFile:13) ~[15w43a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w43a.jar:?] ... 5 more
relates to
A comment with security level 'global-moderators' was removed.
relates to
Caused by:
When summoning a container minecart (chest or hopper) with an invalid loot table, the minecart cannot be removed from the world anymore. Trying to punch it will cause the following exception (based on MC-91061):
[17:15:55] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name 'chests:simple_dungeon.json' (can't contain periods) at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_25] at g.a(SourceFile:46) [15w44a.jar:?] at net.minecraft.server.MinecraftServer.D(SourceFile:590) [15w44a.jar:?] at net.minecraft.server.MinecraftServer.C(SourceFile:546) [15w44a.jar:?] at bxw.C(SourceFile:154) [15w44a.jar:?] at net.minecraft.server.MinecraftServer.run(SourceFile:450) [15w44a.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25] Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: Invalid loot table name 'chests:simple_dungeon.json' (can't contain periods) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azu.a(SourceFile:46) ~[15w44a.jar:?] at ye.A(SourceFile:243) ~[15w44a.jar:?] at ye.a(SourceFile:54) ~[15w44a.jar:?] at qh.a(SourceFile:25) ~[15w44a.jar:?] at qh.a(SourceFile:20) ~[15w44a.jar:?] at ye.N(SourceFile:135) ~[15w44a.jar:?] at yb.a(SourceFile:190) ~[15w44a.jar:?] at zo.f(SourceFile:1069) ~[15w44a.jar:?] at ls.f(SourceFile:1030) ~[15w44a.jar:?] at mc.a(SourceFile:907) ~[15w44a.jar:?] at is.a(SourceFile:68) ~[15w44a.jar:?] at is.a(SourceFile:12) ~[15w44a.jar:?] at fh$1.run(SourceFile:13) ~[15w44a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w44a.jar:?] ... 5 more Caused by: java.lang.IllegalArgumentException: Invalid loot table name 'chests:simple_dungeon.json' (can't contain periods) at azu$a.a(SourceFile:61) ~[15w44a.jar:?] at azu$a.load(SourceFile:56) ~[15w44a.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[guava-17.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[guava-17.0.jar:?] at azu.a(SourceFile:46) ~[15w44a.jar:?] at ye.A(SourceFile:243) ~[15w44a.jar:?] at ye.a(SourceFile:54) ~[15w44a.jar:?] at qh.a(SourceFile:25) ~[15w44a.jar:?] at qh.a(SourceFile:20) ~[15w44a.jar:?] at ye.N(SourceFile:135) ~[15w44a.jar:?] at yb.a(SourceFile:190) ~[15w44a.jar:?] at zo.f(SourceFile:1069) ~[15w44a.jar:?] at ls.f(SourceFile:1030) ~[15w44a.jar:?] at mc.a(SourceFile:907) ~[15w44a.jar:?] at is.a(SourceFile:68) ~[15w44a.jar:?] at is.a(SourceFile:12) ~[15w44a.jar:?] at fh$1.run(SourceFile:13) ~[15w44a.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_25] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_25] at g.a(SourceFile:45) ~[15w44a.jar:?] ... 5 more
Using the /kill command only gives the following error:
[17:23:47] [Server thread/WARN]: Couldn't process command: 'kill @e[type=!Player]' [17:23:47] [Client thread/INFO]: [CHAT] An unknown error occurred while attempting to perform this command
How to reproduce
- Go in creative mode
- Summon any entity that can use a loot table, for example:
/summon MinecartChest ~ ~ ~ {LootTable:"."} - Try to destroy the entity
Duplicates very likely the parsing part of MC-91061:
- Expected name to be an item, was unknown string (Invalid item name in loot table)
- Missing entries (no entries tag provided)
- Exceptions thrown while parsing the loot table (thrown by Json parser)
Should this report be about parsing or should the old report be reopened?
Relates to:
MC-91061: Probably caused by the fix
The bug
When you provide a LootTable name with a period the game is unable to find a loot table but does not print an error indicating this.
How to reproduce
- Use the following command
/setblock ~ ~ ~ chest 0 replace {LootTable:"invalid"} - Open the chest
→ The error is printed in the log: "Couldn't find resource table minecraft:invalid" - Use the following command
/setblock ~ ~ ~ chest 0 replace {LootTable:"invalid2."} - Open the chest
→ No error message is printed
The reason
The following is based on a decompiled version of Minecraft 1.9 using MCP 9.24 beta.
The reason for this is that the method net.minecraft.world.storage.loot.LootTableManager.Loader.load(ResourceLocation) only prints the error message
Invalid loot table name '[LOOT_TABLE]' (can\'t contain periods)
as debug message and not as error message.
How to reproduce
- Try to load the following loot table:
{ "pools": [ { "entries": [ { "type": "item", "name": "stone" } ] } ] }
- The loot table doesn't load and a NullPointerException is thrown, but luckily caught due to the fix for
MC-91061.
This not a friendly message. Either it should explain the problem, or it should treat a missing rolls parameter as "rolls": 1.
I can confirm both but for the chest the crash is delayed: the crash is triggered when you open the chest.
WARNING: backup level.dat before trying to reproduce the crash or you will have to regenerate this file, thus losing the world.