From a0e91803608050f1014c43a9d27492348c10393d Mon Sep 17 00:00:00 2001 From: "Lukas Rieger (Blue)" Date: Thu, 14 Mar 2024 09:17:22 +0100 Subject: [PATCH] Fix paper-implementation not saving the world on the main thread --- .../java/de/bluecolored/bluemap/bukkit/BukkitWorld.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/implementations/paper/src/main/java/de/bluecolored/bluemap/bukkit/BukkitWorld.java b/implementations/paper/src/main/java/de/bluecolored/bluemap/bukkit/BukkitWorld.java index 78106c59..f9030f96 100644 --- a/implementations/paper/src/main/java/de/bluecolored/bluemap/bukkit/BukkitWorld.java +++ b/implementations/paper/src/main/java/de/bluecolored/bluemap/bukkit/BukkitWorld.java @@ -28,11 +28,14 @@ import de.bluecolored.bluemap.common.serverinterface.ServerWorld; import de.bluecolored.bluemap.core.resources.datapack.DataPack; import de.bluecolored.bluemap.core.util.Key; import de.bluecolored.bluemap.core.world.mca.MCAWorld; +import org.bukkit.Bukkit; import org.bukkit.World; import java.lang.ref.WeakReference; import java.nio.file.Files; import java.nio.file.Path; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; public class BukkitWorld implements ServerWorld { @@ -71,7 +74,10 @@ public class BukkitWorld implements ServerWorld { if (!FoliaSupport.IS_FOLIA) { World world = delegate.get(); if (world != null) { - world.save(); + Executor mainThread = Bukkit.getScheduler().getMainThreadExecutor(BukkitPlugin.getInstance()); + CompletableFuture + .runAsync(world::save, mainThread) + .join(); return true; } }