mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-03-22 12:58:13 +05:00
Fix mounted minecarts not persisting across world reloads (#979)
* Fix mounted minecarts not persisting across world reloads Signed-off-by: Ayush Thoren <ayushthoren@gmail.com> * Apply patch --------- Signed-off-by: Ayush Thoren <ayushthoren@gmail.com>
This commit is contained in:
@@ -1222,6 +1222,30 @@ void LevelChunk::addEntity(shared_ptr<Entity> e)
|
||||
#endif
|
||||
}
|
||||
|
||||
void LevelChunk::addRidingEntities(shared_ptr<Entity> rider, CompoundTag *riderTag)
|
||||
{
|
||||
#ifdef _LARGE_WORLDS #This shouldnt be called when we dont have large worlds enabled
|
||||
CompoundTag *mountTag = riderTag;
|
||||
shared_ptr<Entity> ridingEntity = rider;
|
||||
|
||||
while (mountTag != NULL && mountTag->contains(Entity::RIDING_TAG))
|
||||
{
|
||||
CompoundTag *nextMountTag = mountTag->getCompound(Entity::RIDING_TAG);
|
||||
shared_ptr<Entity> mount = EntityIO::loadStatic(nextMountTag, level);
|
||||
if (mount == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
mount->onLoadedFromSave();
|
||||
addEntity(mount);
|
||||
ridingEntity->ride(mount);
|
||||
|
||||
ridingEntity = mount;
|
||||
mountTag = nextMountTag;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
void LevelChunk::removeEntity(shared_ptr<Entity> e)
|
||||
{
|
||||
@@ -1431,6 +1455,7 @@ void LevelChunk::load()
|
||||
{
|
||||
ent->onLoadedFromSave();
|
||||
addEntity(ent);
|
||||
addRidingEntities(ent, teTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user