onEntitiesLoadEvent

public void onEntitiesLoadEvent(EntitiesLoadEvent event)

Restores props from their armor stands once the server has actually finished loading a chunk's entities.

This deliberately listens to EntitiesLoadEvent rather than ChunkLoadEvent. ChunkLoadEvent is fired from LevelChunk#loadCallback while the chunk map's callback executor is still mid-update, and at that point the chunk's entities are not loaded yet, so Chunk#getEntities() forces a re-entrant PersistentEntitySectionManager#tick(). That re-entrant tick runs processUnloads()'s chunksToUnload.removeIf(...) on top of the in-progress chunk load, which corrupts the server's own fastutil LongOpenHashSet iterator and eventually kills the world tick. getEntities hands us the already-materialized list instead, so no forced tick is needed.