--- a/net/minecraft/server/players/OldUsersConverter.java +++ b/net/minecraft/server/players/OldUsersConverter.java @@ -21,6 +21,9 @@ import java.util.UUID; import javax.annotation.Nullable; import net.minecraft.core.UUIDUtil; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtAccounter; +import net.minecraft.nbt.NbtIo; import net.minecraft.server.MinecraftServer; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.util.StringUtil; @@ -62,7 +65,8 @@ return new String[i]; }); - if (server.usesAuthentication()) { + if (server.usesAuthentication() || + (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode())) { // Spigot: bungee = online mode, for now. // Paper - Add setting for proxy online mode status server.getProfileRepository().findProfilesByNames(astring, callback); } else { String[] astring1 = astring; @@ -85,7 +89,7 @@ try { gameprofilebanlist.load(); } catch (IOException ioexception) { - OldUsersConverter.LOGGER.warn("Could not load existing file {}", gameprofilebanlist.getFile().getName(), ioexception); + OldUsersConverter.LOGGER.warn("Could not load existing file {}", gameprofilebanlist.getFile().getName()); // CraftBukkit - don't print stacktrace } } @@ -143,7 +147,7 @@ try { ipbanlist.load(); } catch (IOException ioexception) { - OldUsersConverter.LOGGER.warn("Could not load existing file {}", ipbanlist.getFile().getName(), ioexception); + OldUsersConverter.LOGGER.warn("Could not load existing file {}", ipbanlist.getFile().getName()); // CraftBukkit - don't print stacktrace } } @@ -184,7 +188,7 @@ try { oplist.load(); } catch (IOException ioexception) { - OldUsersConverter.LOGGER.warn("Could not load existing file {}", oplist.getFile().getName(), ioexception); + OldUsersConverter.LOGGER.warn("Could not load existing file {}", oplist.getFile().getName()); // CraftBukkit - don't print stacktrace } } @@ -228,7 +232,7 @@ try { whitelist.load(); } catch (IOException ioexception) { - OldUsersConverter.LOGGER.warn("Could not load existing file {}", whitelist.getFile().getName(), ioexception); + OldUsersConverter.LOGGER.warn("Could not load existing file {}", whitelist.getFile().getName()); // CraftBukkit - don't print stacktrace } } @@ -346,7 +350,39 @@ private void movePlayerFile(File playerDataFolder, String fileName, String uuid) { File file5 = new File(file, fileName + ".dat"); File file6 = new File(playerDataFolder, uuid + ".dat"); + + // CraftBukkit start - Use old file name to seed lastKnownName + CompoundTag root = null; + + try { + root = NbtIo.readCompressed(new java.io.FileInputStream(file5), NbtAccounter.unlimitedHeap()); + } catch (Exception exception) { + // Paper start + io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); + exception.printStackTrace(); + com.destroystokyo.paper.exception.ServerInternalException.reportInternalException(exception); + // Paper end + } + if (root != null) { + if (!root.contains("bukkit")) { + root.put("bukkit", new CompoundTag()); + } + CompoundTag data = root.getCompound("bukkit"); + data.putString("lastKnownName", fileName); + + try { + NbtIo.writeCompressed(root, new java.io.FileOutputStream(file2)); + } catch (Exception exception) { + // Paper start + io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); + exception.printStackTrace(); + com.destroystokyo.paper.exception.ServerInternalException.reportInternalException(exception); + // Paper end + } + } + // CraftBukkit end + OldUsersConverter.ensureDirectoryExists(playerDataFolder); if (!file5.renameTo(file6)) { throw new OldUsersConverter.ConversionError("Could not convert file for " + fileName);