To reproduce:
Generate a world in a version before 1.9, and kill the dragon so that the exit portal is generated somewhere other than at (0,0).
Load the world in 1.10.1 or later.
Place the end crystals. See that the respawning process does not start.
It works fine in 1.10.
Further, as each crystal is placed, the following will be logged:
[08:53:13] [Server thread/FATAL]: Error executing task
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_91]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_91]
at h.a(SourceFile:46) [1.10.1.jar:?]
at net.minecraft.server.MinecraftServer.D(SourceFile:598) [1.10.1.jar:?]
at net.minecraft.server.MinecraftServer.C(SourceFile:554) [1.10.1.jar:?]
at bzl.C(SourceFile:155) [1.10.1.jar:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:458) [1.10.1.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: java.lang.NullPointerException
at atq.e(SourceFile:461) ~[1.10.1.jar:?]
at adj.a(SourceFile:60) ~[1.10.1.jar:?]
at adz.a(SourceFile:143) ~[1.10.1.jar:?]
at lv.a(SourceFile:339) ~[1.10.1.jar:?]
at me.a(SourceFile:627) ~[1.10.1.jar:?]
at jj.a(SourceFile:55) ~[1.10.1.jar:?]
at jj.a(SourceFile:11) ~[1.10.1.jar:?]
at fl$1.run(SourceFile:13) ~[1.10.1.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_91]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_91]
at h.a(SourceFile:45) ~[1.10.1.jar:?]
... 5 more
What seems to be happening (using MCP names) is that the fix for MC-103497 made DragonFightManager.respawnDragon()
always try to use exitPortalLocation
, even though findExitPortal()
only sets this field when the detected portal is at (0,0). It should instead use the value returned by findExitPortal()
, properly offset of course.
Dupe of MC-104897