The bug
The ender dragon cannot be respawned at an end portal if the dragon was killed before 1.9 and the resulting end portal is generated at a location other than (0,<y>,0).
Furthermore, when placing the necessary end crystals on the portal, this error will be logged:
[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_51]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_51]
at k.a(SourceFile:200) [1.13.1.jar:?]
at net.minecraft.server.MinecraftServer.b(SourceFile:726) [1.13.1.jar:?]
at net.minecraft.server.MinecraftServer.a(SourceFile:681) [1.13.1.jar:?]
at dgg.a(SourceFile:131) [1.13.1.jar:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:584) [1.13.1.jar:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]
Caused by: java.lang.NullPointerException
at bog.e(SourceFile:531) ~[1.13.1.jar:?]
at asj.a(SourceFile:52) ~[1.13.1.jar:?]
at atd.a(SourceFile:187) ~[1.13.1.jar:?]
at tg.a(SourceFile:326) ~[1.13.1.jar:?]
at uc.a(SourceFile:925) ~[1.13.1.jar:?]
at nr.a(SourceFile:53) ~[1.13.1.jar:?]
at nr.a(SourceFile:11) ~[1.13.1.jar:?]
at ix.a(SourceFile:10) ~[1.13.1.jar:?]
at ix$$Lambda$2000/1475818869.run(Unknown Source) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_51]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_51]
at k.a(SourceFile:199) ~[1.13.1.jar:?]
... 5 more
What I expected to happen was:
The ender dragon would respawn.
What actually happened was:
The ender dragon did not respawn.
How to reproduce
Download the attached world
Load the world in 1.10.1 or later.
Enter the active end portal. (You should spawn at a stronghold)
Locate the exit portal, and place the necessary crystals.
→ ❌ See that the respawning process does not restart.
Code analysis (from MC-105304)
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.
Workaround can be found here.
Linked issues
is duplicated by 11
relates to 1
Attachments
Comments 34
I'm 99% sure (might be wrong) that if the dragon hasn't been respawned once, then you still need to do it at the old portal since there is no new portal. And since the old portal still has portal blocks in it, it seems like the dragon hasn't been respawned.
Place the end crystals in the middle of the 3 wide bedrock sections. If that doesn't work, please attach the affected world. In which versions has this world been opened? Any 1.10 snapshots? 1.10?
I assume you forgot a negation in your comment, actually meaning that you are not able to reproduce your own report. You wrote that you were able to reproduce again, but apparently that's a typo.
I can imagine that maybe you didn't use a fresh copy of the test world, but one that was opened already. If one has several copies of a world in the saves folder, maybe one original and one that was opened in another snapshot already, it certainly gets confusing quickly. It doesn't help that Minecraft displays the world's name (which is the same for two copies of a world) as the bold-faced largest piece of text of a save, and the folder name only smaller and less prominent. So that would be one possible explanation.
Anyways, glad that I could help 🙂
Ah, sorry - you are able to reproduce the bug, but you are not able to reproduce what you observed in your comment three days ago. That's what you meant, okay. Everything fine 🙂
Hey is anyone working on fixing this? I know its like old and an edge case to the max, but i have a world that me and my son started in 2008 or 2009. We killed the dragon back then. Fast forward to this year, my youngest son is old enough for minecraft now (6) and we tried to go kill the ender dragon again. Everytime we try and spawn it we get a null pointer exception FATAL error as above.
I am in favour of the person who "fixed" the other bug that caused this bug being made to fix this one. 🙂
EDIT: just saw that there is a work around! thanks for that! ( https://imgur.com/a/pa3zO ) i am leaving this post as proof that this bug is still biting people out there like me!
the work around is to go to creative, destroy the portal, and then place an end crystal on a piece of obsidian that you randomly place anywhere. then the portal will spawn again.
can you not close it as "work around" status? and list that? because it says unsolved in the status.
Old portals from 1.8 and below are generated where the dragon dies; new portals are generated at 0, 0 in 1.10. Make sure you are trying to respawn the dragon at the new portal.