diff options
-rw-r--r-- | src/Entities/Minecart.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Entities/Minecart.cpp b/src/Entities/Minecart.cpp index 8eda447cf..130ea955f 100644 --- a/src/Entities/Minecart.cpp +++ b/src/Entities/Minecart.cpp @@ -1206,10 +1206,19 @@ void cMinecartWithChest::OpenNewWindow() void cMinecartWithChest::Destroyed() { - GetWindow()->OwnerDestroyed(); + if (GetWindow() != nullptr) + { + GetWindow()->OwnerDestroyed(); + } cItems Pickups; m_Contents.CopyToItems(Pickups); - GetWorld()->SpawnItemPickups(Pickups, GetPosX(), GetPosY() + 1, GetPosZ(), 4); + + + // This makes the command not execute if the world is in the midst of destruction :) + GetWorld()->ScheduleTask(1, [this, &Pickups](cWorld & World) + { + World.SpawnItemPickups(Pickups, GetPosX(), GetPosY() + 1, GetPosZ(), 4); + }); } |