From ba33d5271b99c67e0ea172b4d9c8ed66edad9b87 Mon Sep 17 00:00:00 2001 From: EoD <293499+EoD@users.noreply.github.com> Date: Fri, 2 May 2025 21:17:01 +0000 Subject: [PATCH] fix advancement restore on brand new servers On a brand new server, there is no advancements directory throwing an IOException if we try to write a file to it. --- .../fubuki/playersync/sync/VanillaSync.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java index c0f9f60..fc7fb10 100644 --- a/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java +++ b/src/main/java/vip/fubuki/playersync/sync/VanillaSync.java @@ -87,9 +87,26 @@ public class VanillaSync { return; } + File advancementsDir = advancements.getParentFile(); + if (advancementsDir != null && !advancementsDir.exists()) { + PlayerSync.LOGGER.info("Creating advancements directory " + advancementsDir.getPath()); + boolean createdDir = advancementsDir.mkdirs(); + if (!createdDir) { + PlayerSync.LOGGER.error("Aborting advancements sync. Failed to create advancements " + + "directory at " + advancementsDir.getPath()); + return; + } + } + if (!advancements.exists()) { - advancements.createNewFile(); - PlayerSync.LOGGER.info("Creating new advancement file for player " + player_uuid); + try { + PlayerSync.LOGGER.info("Creating new advancement file for player " + player_uuid); + advancements.createNewFile(); + } catch (IOException e) { + PlayerSync.LOGGER.error("Aborting advancements sync. Failed to create advancements file at " + + advancements.getAbsolutePath(), e); + return; + } } PlayerSync.LOGGER.debug("Writing advancement file " + advancements.toPath() + " for player " + player_uuid); PlayerSync.LOGGER.trace("Writing advancement file for player " + player_uuid + ": "