mojira.dev
MC-307002

Using /kill on one of the end crystals used to respawn the ender dragon no longer aborts the respawn sequence

When the player breaks the end crystal on the exit portal, the code checks to see if it is one of the exit portal crystals.

When modding the behavior of end crystals to drop themselves, I came across this bug.

Because we have a list of EntityReferences instead of actual Entities, the contains method will never evaluate to true. [See image 1]

The only reason that the vanilla implementation works is that

List<EndCrystal> respawnCrystals = this.respawnCrystals.stream().map((e) -> (EndCrystal)e.getEntity(this.level, EndCrystal.class)).filter(Objects::nonNull).toList();
                if (respawnCrystals.isEmpty()) {
                    this.abortRespawnSequence();
                    return;
                }

it checks if ALL end crystals are gone, which coincidentally happens to be what happens to exit portal end crystals chaining together when they explode.

Attachments

Comments 3

Thank you for helping us improve Minecraft! We saved your files:

[media]

Does this issue have any impact on vanilla gameplay?

This issue is being temporarily resolved as Awaiting Response. Once the requested information has been delivered, the report will be reopened automatically.

Quick Links:
📓 Bug Tracker Guidelines – 💬 Community Support – 📧 Mojang Support (Technical Issues) – 📧 Microsoft Support (Account Issues)
📓 Project Summary – ✍️ Feedback and Suggestions – 📖 Game Wiki

In a survival mode gameplay, no. However, if you were to only remove one end crystal, ie through a /kill command, it no longer aborts the respawn sequence

Coder2195

(Unassigned)

Confirmed

(Unassigned)

26.1 Release Candidate 3

Retrieved