diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java index d3c55b5..59ce6bb 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java @@ -65,6 +65,7 @@ public class NickoBukkit extends JavaPlugin { if (!dataStore.getStorage().isError()) { getLogger().info("Closing persistence..."); dataStore.removeAllNames(); + dataStore.saveAll(); if (!dataStore.getStorage().getProvider().close()) { getLogger().warning("Failed to close persistence!"); } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/storage/PlayerDataStore.java b/nicko-core/src/main/java/net/artelnatif/nicko/storage/PlayerDataStore.java index eacb42f..64f0d70 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/storage/PlayerDataStore.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/storage/PlayerDataStore.java @@ -5,6 +5,7 @@ import net.artelnatif.nicko.disguise.NickoProfile; import net.artelnatif.nicko.mojang.MojangUtils; import net.artelnatif.nicko.storage.json.JSONStorage; import net.artelnatif.nicko.storage.sql.SQLStorage; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.io.IOException; @@ -22,7 +23,7 @@ public class PlayerDataStore { } public void storeName(Player player) { - if(!isNameStored(player)) { + if (!isNameStored(player)) { names.put(player.getUniqueId(), player.getName()); } } @@ -39,6 +40,10 @@ public class PlayerDataStore { names.clear(); } + public void saveAll() { + Bukkit.getOnlinePlayers().forEach(this::saveData); + } + public Optional getData(UUID uuid) { if (storage.isError()) { @@ -76,9 +81,8 @@ public class PlayerDataStore { } public void saveData(Player player) { - if (storage.isError()) { - return; - } + if (storage.isError()) { return; } + if (!profiles.containsKey(player.getUniqueId())) { return; } storage.store(player.getUniqueId(), profiles.get(player.getUniqueId())); profiles.remove(player.getUniqueId());