diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java index e0fba1c14..8b07d6921 100644 --- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java +++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java @@ -204,13 +204,18 @@ public class AdvancementDataPlayer { // Akarin start - copied from below public Map toSerializableMap() { - return org.spigotmc.SpigotConfig.disableAdvancementSaving ? - HashObjObjMaps.newImmutableMap( - Collections2.transform(data.keySet(), Advancement::getName), - data.values().stream() - .filter(AdvancementProgress::b) - .collect(Collectors.toSet()) - ) : Collections.emptyMap(); + Map map = HashObjObjMaps.newMutableMap(); + Iterator> iterator = this.data.entrySet().iterator(); + + while (iterator.hasNext()) { + Entry entry = iterator.next(); + AdvancementProgress advancementprogress = (AdvancementProgress) entry.getValue(); + + if (advancementprogress.b()) { + map.put(((Advancement) entry.getKey()).getName(), advancementprogress); + } + } + return map; } public void save(Map serializableMap) { if (this.e.getParentFile() != null) { @@ -226,7 +231,7 @@ public class AdvancementDataPlayer { // Akarin end public void c() { if (org.spigotmc.SpigotConfig.disableAdvancementSaving) return; - Map map = HashObjObjMaps.newMutableMap(); // Akarin + Map map = Maps.newHashMap(); Iterator iterator = this.data.entrySet().iterator(); while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java index 898665748..2d8c16ce4 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -363,14 +363,15 @@ public abstract class PlayerList { Map advancements = advancementdataplayer.toSerializableMap(); // Akarin if (advancementdataplayer != null) { - advancementdataplayer.c(); + //advancementdataplayer.c(); // Akarin - moved down } // Akarin start AkarinAsyncExecutor.scheduleSingleAsyncTask(() -> { this.playerFileData.save(entityplayer); if (serverstatisticmanager != null) serverstatisticmanager.a(); - advancementdataplayer.save(advancements); + if (advancementdataplayer != null) + advancementdataplayer.save(advancements); }); // Akarin end