mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/LCE-Revelations.git
synced 2026-05-22 22:26:27 +00:00
Fix Ender Dragon damage, End portal transition, and End Poem crash
Dragon melee damage: reassign sub-entity IDs to be sequential from the parent entity ID in ServerLevel::entityAdded(), so the client's offset-based ID calculation matches the server. Previously the server's smallId pool allocated non-sequential IDs, causing melee attacks to target entity IDs the server didn't recognize. End portal transition: ensure the player entity is always added to the new level when transitioning from The End, not just for non-End dimensions. The addEntity call was previously gated behind a lastDimension != 1 check that also excluded it from End exits. End Poem crash: bounds-check the WIN_GAME event's player index before accessing localplayers[], with a fallback to prevent null dereference when the server sends an out-of-range index.
This commit is contained in:
@@ -1052,9 +1052,14 @@ void ServerLevel::entityAdded(shared_ptr<Entity> e)
|
||||
vector<shared_ptr<Entity> > *es = e->getSubEntities();
|
||||
if (es)
|
||||
{
|
||||
// Reassign sub-entity IDs to be sequential from the parent's ID.
|
||||
// The client assumes this layout when it applies an offset in handleAddMob.
|
||||
int offset = 1;
|
||||
for(auto& i : *es)
|
||||
{
|
||||
i->entityId = e->entityId + offset;
|
||||
entitiesById.emplace(i->entityId, i);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
entityAddedExtra(e); // 4J added
|
||||
|
||||
Reference in New Issue
Block a user