From 894631f0d091a3de52aed4b6ec0c4f6c7584d697 Mon Sep 17 00:00:00 2001 From: Matthew Peters <76170255+FaintLocket424@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:52:42 +0000 Subject: [PATCH] Make advancement ordering predictable (#12292) --- .../net/minecraft/server/PlayerAdvancements.java.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/paper-server/patches/sources/net/minecraft/server/PlayerAdvancements.java.patch b/paper-server/patches/sources/net/minecraft/server/PlayerAdvancements.java.patch index 0c15dfbc3..361c401ab 100644 --- a/paper-server/patches/sources/net/minecraft/server/PlayerAdvancements.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/PlayerAdvancements.java.patch @@ -67,3 +67,12 @@ } }); } +@@ -247,7 +_,7 @@ + public void flushDirty(ServerPlayer serverPlayer) { + if (this.isFirstPacket || !this.rootsToUpdate.isEmpty() || !this.progressChanged.isEmpty()) { + Map map = new HashMap<>(); +- Set set = new HashSet<>(); ++ Set set = new java.util.TreeSet<>(java.util.Comparator.comparing(adv -> adv.id().toString())); // Paper - Changed from HashSet to TreeSet ordered alphabetically. + Set set1 = new HashSet<>(); + + for (AdvancementNode advancementNode : this.rootsToUpdate) {