From f1dcfe61cd5632bea7eef4b59838926dd722bf0e Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 5 Apr 2026 10:00:55 -0400 Subject: [PATCH] Avoid creating empty player fallback migrationn if user tag is empty Co-authored-by: Shane Freeder --- .../fixes/LevelDatToSavedDataFileFix.java.patch | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 paper-server/patches/sources/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java.patch diff --git a/paper-server/patches/sources/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java.patch b/paper-server/patches/sources/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java.patch new file mode 100644 index 000000000000..c2ef2fd56574 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java.patch @@ -0,0 +1,15 @@ +--- a/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java ++++ b/net/minecraft/util/filefix/fixes/LevelDatToSavedDataFileFix.java +@@ -120,6 +_,12 @@ + return content; + } else { + Dynamic playerTag = playerTagOpt.result().get(); ++ // Paper start - check if player tag is empty, for avoidance create fallback user file with not data ++ final Boolean emptyPlayerTag = playerTag.convert(net.minecraft.nbt.NbtOps.INSTANCE).getValue().asCompound().map(net.minecraft.nbt.CompoundTag::isEmpty).orElse(true); ++ if (emptyPlayerTag) { ++ return content.remove("Player"); ++ } ++ // Paper end + int dataVersion = NbtUtils.getDataVersion(playerTag); + Dynamic playerTagFixed = DataFixTypes.PLAYER.update(DataFixers.getDataFixer(), playerTag, dataVersion, this.getVersion()); + Optional> playerUuid = playerTagFixed.get("UUID").result();