Fixes double data saving w/ incorrect filter

This commit is contained in:
Sotr
2019-03-30 14:44:08 +08:00
parent 39a09cba91
commit 96a5d7a702
2 changed files with 16 additions and 10 deletions

View File

@@ -204,13 +204,18 @@ public class AdvancementDataPlayer {
// Akarin start - copied from below
public Map<MinecraftKey, AdvancementProgress> 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<MinecraftKey, AdvancementProgress> map = HashObjObjMaps.newMutableMap();
Iterator<Entry<Advancement, AdvancementProgress>> iterator = this.data.entrySet().iterator();
while (iterator.hasNext()) {
Entry<Advancement, AdvancementProgress> entry = iterator.next();
AdvancementProgress advancementprogress = (AdvancementProgress) entry.getValue();
if (advancementprogress.b()) {
map.put(((Advancement) entry.getKey()).getName(), advancementprogress);
}
}
return map;
}
public void save(Map<MinecraftKey, AdvancementProgress> 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<MinecraftKey, AdvancementProgress> map = HashObjObjMaps.newMutableMap(); // Akarin
Map<MinecraftKey, AdvancementProgress> map = Maps.newHashMap();
Iterator iterator = this.data.entrySet().iterator();
while (iterator.hasNext()) {

View File

@@ -363,14 +363,15 @@ public abstract class PlayerList {
Map<MinecraftKey, AdvancementProgress> 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