summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Entities/Minecart.cpp13
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);
+ });
}