From 3f9f3991d82cf5211497df63ef4e36d73206ac75 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 8 Apr 2021 15:00:31 +0100 Subject: [PATCH] Fixed cache on set in configs --- .../com/willfp/eco/core/data/PlayerData.java | 27 ++++++++----------- .../eco/internal/config/ConfigWrapper.java | 1 + .../willfp/eco/spigot/EcoSpigotPlugin.java | 18 +++++-------- 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/eco-api/src/main/java/com/willfp/eco/core/data/PlayerData.java b/eco-api/src/main/java/com/willfp/eco/core/data/PlayerData.java index 129582a8..911c4475 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/data/PlayerData.java +++ b/eco-api/src/main/java/com/willfp/eco/core/data/PlayerData.java @@ -3,11 +3,9 @@ package com.willfp.eco.core.data; import com.willfp.eco.core.config.BaseConfig; import com.willfp.eco.core.config.Config; import com.willfp.eco.internal.config.ConfigSection; -import com.willfp.eco.internal.config.ConfigWrapper; import lombok.experimental.UtilityClass; import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -17,7 +15,6 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -@SuppressWarnings("unchecked") @UtilityClass public class PlayerData { /** @@ -40,9 +37,7 @@ public class PlayerData { public void writeInt(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key, final int data) { - Config config = getPlayerConfig(player); - - config.set("player-data." + player.getUniqueId() + "." + key.toString(), data); + getPlayerConfig(player).set(key.toString(), data); } /** @@ -55,9 +50,7 @@ public class PlayerData { public void writeString(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key, @NotNull final String data) { - Config config = getPlayerConfig(player); - - config.set("player-data." + player.getUniqueId() + "." + key.toString(), data); + getPlayerConfig(player).set(key.toString(), data); } /** @@ -70,9 +63,7 @@ public class PlayerData { public void writeDouble(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key, final double data) { - Config config = getPlayerConfig(player); - - config.set("player-data." + player.getUniqueId() + "." + key.toString(), data); + getPlayerConfig(player).set(key.toString(), data); } /** @@ -83,7 +74,7 @@ public class PlayerData { */ public int readInt(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key) { - return getPlayerConfig(player).getInt("player-data." + player.getUniqueId() + "." + key.toString()); + return getPlayerConfig(player).getInt(key.toString()); } /** @@ -94,7 +85,7 @@ public class PlayerData { */ public String readString(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key) { - return getPlayerConfig(player).getString("player-data." + player.getUniqueId() + "." + key.toString()); + return getPlayerConfig(player).getString(key.toString()); } /** @@ -105,7 +96,7 @@ public class PlayerData { */ public double readDouble(@NotNull final OfflinePlayer player, @NotNull final NamespacedKey key) { - return getPlayerConfig(player).getDouble("player-data." + player.getUniqueId() + "." + key.toString()); + return getPlayerConfig(player).getDouble(key.toString()); } /** @@ -126,7 +117,11 @@ public class PlayerData { */ @ApiStatus.Internal public void save(@NotNull final BaseConfig config) throws IOException { - PLAYER_DATA.forEach((uuid, section) -> config.set("player-data." + uuid.toString(), ((ConfigWrapper) section).getHandle())); + for (Map.Entry entry : PLAYER_DATA.entrySet()) { + for (String key : entry.getValue().getKeys(false)) { + config.set("player-data." + entry.getKey().toString() + "." + key, entry.getValue().get(key)); + } + } config.save(); } diff --git a/eco-api/src/main/java/com/willfp/eco/internal/config/ConfigWrapper.java b/eco-api/src/main/java/com/willfp/eco/internal/config/ConfigWrapper.java index 3d541227..dfbdc707 100644 --- a/eco-api/src/main/java/com/willfp/eco/internal/config/ConfigWrapper.java +++ b/eco-api/src/main/java/com/willfp/eco/internal/config/ConfigWrapper.java @@ -64,6 +64,7 @@ public abstract class ConfigWrapper implements C @Override public void set(@NotNull final String path, @Nullable final Object object) { + cache.remove(path); handle.set(path, object); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/eco/spigot/EcoSpigotPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/eco/spigot/EcoSpigotPlugin.java index 3c942e4d..099b3fe9 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/eco/spigot/EcoSpigotPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/eco/spigot/EcoSpigotPlugin.java @@ -81,7 +81,6 @@ public class EcoSpigotPlugin extends EcoPlugin { TridentUtils.initialize(tridentStackProxy::getTridentStack); this.dataYml = new DataYml(this); - PlayerData.init(this.dataYml); } @@ -99,9 +98,8 @@ public class EcoSpigotPlugin extends EcoPlugin { Bukkit.getLogger().info(PlayerData.readString(player, this.getNamespacedKeyFactory().create("poggers"))); Bukkit.getLogger().info(PlayerData.readString(player, this.getNamespacedKeyFactory().create("poggers2"))); - PlayerData.writeString(player, this.getNamespacedKeyFactory().create("poggers"), "Test"); - PlayerData.writeString(player, this.getNamespacedKeyFactory().create("poggers2"), "Test2"); - PlayerData.writeString(player, this.getNamespacedKeyFactory().create("poggers"), "Rewritted"); + PlayerData.writeString(player, this.getNamespacedKeyFactory().create("poggers2"), "Poggers 2"); + PlayerData.writeString(player, this.getNamespacedKeyFactory().create("poggers"), "Poggers"); Bukkit.getLogger().info(PlayerData.readString(player, this.getNamespacedKeyFactory().create("poggers"))); Bukkit.getLogger().info(PlayerData.readString(player, this.getNamespacedKeyFactory().create("poggers2"))); @@ -109,13 +107,11 @@ public class EcoSpigotPlugin extends EcoPlugin { @Override public void disable() { - this.getScheduler().run(() -> { - try { - PlayerData.save(this.dataYml); - } catch (IOException e) { - e.printStackTrace(); - } - }); + try { + PlayerData.save(this.dataYml); + } catch (IOException e) { + e.printStackTrace(); + } } @Override