From 37b9ca1f90d4da9d1e8dc4a94a5357835babda4f Mon Sep 17 00:00:00 2001 From: Strokkur24 <133226102+Strokkur424@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:37:48 +0100 Subject: [PATCH] Add flush parameter to World#save (#12330) --- paper-api/src/main/java/org/bukkit/World.java | 16 +++++++++++----- .../java/org/bukkit/craftbukkit/CraftWorld.java | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/paper-api/src/main/java/org/bukkit/World.java b/paper-api/src/main/java/org/bukkit/World.java index 96120ce0e..bff01411f 100644 --- a/paper-api/src/main/java/org/bukkit/World.java +++ b/paper-api/src/main/java/org/bukkit/World.java @@ -1,9 +1,7 @@ package org.bukkit; -import java.io.File; import io.papermc.paper.raytracing.PositionedRayTraceConfigurationBuilder; -import org.bukkit.generator.ChunkGenerator; - +import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -2410,9 +2408,17 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient public BiomeProvider getBiomeProvider(); /** - * Saves world to disk + * Saves the world to disk */ - public void save(); + default void save() { + save(false); + } + + /** + * Saves the world to disk + * @param flush Whether to wait for the chunk writer to finish + */ + void save(boolean flush); /** * Gets a list of all applied {@link BlockPopulator}s for this World diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 1439d2821..a92e08776 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1264,13 +1264,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { // Paper end @Override - public void save() { + public void save(boolean flush) { org.spigotmc.AsyncCatcher.catchOp("world save"); // Spigot this.server.checkSaveState(); boolean oldSave = this.world.noSave; this.world.noSave = false; - this.world.save(null, false, false); + this.world.save(null, flush, false); this.world.noSave = oldSave; }