Ender dragon's death doesn't generate portals/egg/gateways
What is the bug? Re-appearance of this: https://github.com/SpongePowered/SpongeForge/issues/1752 After Ender Dragon's death, no Egg, portals or gateways can be observed. Otherwise, the End behaves normally - you can still re-summon the Dragon using the 4-Crystal-Ritual or leave the End by issuing /spawn or killing yourself.
What version of Nucleus are you running? Nucleus-2.3.0-MC1.12.2-SpongeAPI7.3-plugin.jar
What version of Sponge are you running? spongeforge-1.12.2-2838-7.3.1-RC4094
Provide a link to the file generated by /nucleus info
https://pastebin.com/j54B59hF
To Reproduce Steps to reproduce the behavior:
- If a world was previously present:
- Stop the server
- Delete/rename world folder
- Re-start the server
- Connect to the world
- Go to the End via a portal
- Kill the Dragon with a sword or a
/kill @e[type=ender_dragon], no difference was observed
Expected behavior Bedrock "bowl" (with ~~cherry~~ Dragon Egg on top) should now contain the portal to the overworld, also the End Gateway should appear in the distance.
Logs
Do not assume they are not relevant, do not provide partial logs. Often, answers are buired in places we're not expecting.
Well, there were no exceptions logged neither during server startup nor during the fight, so...
My crude debug session using IDEA basically indicates that all setBlockState() calls during DragonFightManager.processDragonDeath() are processed correctly, but the blocks themselves do not change for some reason.
spawn-protection is set to 0 globally.
Possibly, there is something in my config/sponge/global.conf that causes this. However, the only way I was able to make the End work correctly is to just run the server without Nucleus present, with no additional changes to any configs.
This isn't likely to be Nucleus, but the way that Sponge doesn't throw events if a plugin isn't listening to them. This includes some associated code to setup/react to the event.
Run without Nucleus but with the JVM flag -Dsponge.shouldFireAll=true. This will cause Sponge to treat all events as thrown, so will do through the code paths to create/throw/react to events. I bet you'll get the same issue.
If so, report this on the Sponge repo.
Run without Nucleus but with the JVM flag
-Dsponge.shouldFireAll=true.
Did just that, and verified that the property was actually applied with a breakpoint. The problem didn't manifest itself: the portal appeared, everything was fine.
Also, there is one more probably-important difference between naked Sponge and Sponge + Nucleus: /kill with Nucleus doesn't produce any messages in the console, and the animation of killing the dragon (beams, sounds, explosions, etc) fully plays out. /kill without Nucleus produces a "Killed Ender Dragon" message in the console, no animations are played out, the structures just appear immediately.