From 70478abc05df7867261c79822f5ed4d150a76c8b Mon Sep 17 00:00:00 2001 From: XiaoMoMi <70987828+Xiao-MoMi@users.noreply.github.com> Date: Thu, 5 Sep 2024 02:58:57 +0800 Subject: [PATCH] Fix first time saving regions --- .../bukkit/integration/adaptor/BukkitWorldAdaptor.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java index d807673..d3bf622 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java @@ -30,6 +30,7 @@ import net.momirealms.customcrops.api.core.world.adaptor.AbstractWorldAdaptor; import net.momirealms.customcrops.api.util.StringUtils; import net.momirealms.customcrops.common.helper.GsonHelper; import net.momirealms.customcrops.common.helper.VersionHelper; +import net.momirealms.customcrops.common.util.FileUtils; import net.momirealms.customcrops.common.util.Key; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; @@ -61,7 +62,6 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { } }); regionFileProvider = (world, pos) -> new File(worldFolderProvider.apply(world), "customcrops" + File.separator + getRegionDataFile(pos)); - } public static void regionFileProvider(BiFunction regionFileProvider) { @@ -115,6 +115,10 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { GsonHelper.get().toJson(world.extraData())); } else { File data = new File(getWorldFolder(world.world()), DATA_FILE); + File parentDir = data.getParentFile(); + if (parentDir != null && !parentDir.exists()) { + parentDir.mkdirs(); + } try (FileWriter file = new FileWriter(data)) { GsonHelper.get().toJson(world.extraData(), file); } catch (IOException e) { @@ -181,6 +185,10 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { public void saveRegion(CustomCropsWorld world, CustomCropsRegion region) { File file = getRegionDataFile(world.world(), region.regionPos()); long time1 = System.currentTimeMillis(); + File parentDir = file.getParentFile(); + if (parentDir != null && !parentDir.exists()) { + parentDir.mkdirs(); + } try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) { bos.write(serializeRegion(region)); long time2 = System.currentTimeMillis();