Nucleus icon indicating copy to clipboard operation
Nucleus copied to clipboard

Ender dragon's death doesn't generate portals/egg/gateways

Open PolyacovYury opened this issue 5 years ago • 2 comments

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.

PolyacovYury avatar Jan 08 '21 13:01 PolyacovYury

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.

dualspiral avatar Jan 08 '21 13:01 dualspiral

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.

PolyacovYury avatar Jan 08 '21 15:01 PolyacovYury