From e666e8af96074b4b45ef84c4114f23c7727fc474 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 9 Nov 2025 21:10:20 -0600 Subject: [PATCH 1/2] A few things which prevent saving an abnormal amount of data especially at a large scale. When we save data, the following checks are now made. - A count is stored of how many properties are saved which are not default value. - It will not save a property if it's default value. - If all properties are default value, it will not save the player entirely. --- .../java/com/loohp/imageframe/objectholders/IFPlayer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java b/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java index c72c0715..c2c24866 100644 --- a/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java +++ b/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java @@ -103,10 +103,16 @@ public void save() throws Exception { JsonObject json = new JsonObject(); json.addProperty("uuid", uuid.toString()); JsonObject preferenceJson = new JsonObject(); + int propertiesAdded = 0; for (Map.Entry, Object> entry : preferences.entrySet()) { IFPlayerPreference preference = entry.getKey(); - preferenceJson.add(preference.getJsonName(), preference.getSerializer(Object.class).apply(entry.getValue())); + final Object value = entry.getValue(); + if (value != preference.getDefaultValue(this)) { + preferenceJson.add(preference.getJsonName(), preference.getSerializer(Object.class).apply(entry.getValue())); + propertiesAdded++; + } } + if (propertiesAdded == 0) return; json.add("preferences", preferenceJson); try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8))) { pw.println(GSON.toJson(json)); From 3d0196223956628066753c43c3f891160e26b51d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 9 Nov 2025 21:12:49 -0600 Subject: [PATCH 2/2] Handling the previous commit better. --- .../loohp/imageframe/objectholders/IFPlayer.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java b/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java index c2c24866..0ea51a24 100644 --- a/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java +++ b/common/src/main/java/com/loohp/imageframe/objectholders/IFPlayer.java @@ -32,10 +32,7 @@ import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class IFPlayer { @@ -103,16 +100,12 @@ public void save() throws Exception { JsonObject json = new JsonObject(); json.addProperty("uuid", uuid.toString()); JsonObject preferenceJson = new JsonObject(); - int propertiesAdded = 0; for (Map.Entry, Object> entry : preferences.entrySet()) { IFPlayerPreference preference = entry.getKey(); final Object value = entry.getValue(); - if (value != preference.getDefaultValue(this)) { - preferenceJson.add(preference.getJsonName(), preference.getSerializer(Object.class).apply(entry.getValue())); - propertiesAdded++; - } + if (!Objects.equals(value, preference.getDefaultValue(this))) preferenceJson.add(preference.getJsonName(), preference.getSerializer(Object.class).apply(value)); } - if (propertiesAdded == 0) return; + if (preferenceJson.size() == 0) return; json.add("preferences", preferenceJson); try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8))) { pw.println(GSON.toJson(json));