diff --git a/api/src/main/java/net/momirealms/customfishing/api/storage/data/PlayerData.java b/api/src/main/java/net/momirealms/customfishing/api/storage/data/PlayerData.java index db8c3d2c..7252309c 100644 --- a/api/src/main/java/net/momirealms/customfishing/api/storage/data/PlayerData.java +++ b/api/src/main/java/net/momirealms/customfishing/api/storage/data/PlayerData.java @@ -18,6 +18,7 @@ package net.momirealms.customfishing.api.storage.data; import com.google.gson.annotations.SerializedName; +import net.momirealms.customfishing.api.BukkitCustomFishingPlugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -46,6 +47,7 @@ public class PlayerData { protected EarningData earningData; transient private UUID uuid; transient private boolean locked; + transient private byte[] jsonBytes; public PlayerData(UUID uuid, String name, StatisticData statisticsData, InventoryData bagData, EarningData earningData, boolean isLocked) { this.name = name; @@ -124,6 +126,13 @@ public class PlayerData { } } + public byte[] toBytes() { + if (jsonBytes == null) { + jsonBytes = BukkitCustomFishingPlugin.getInstance().getStorageManager().toBytes(this); + } + return jsonBytes; + } + /** * Gets the statistics data for the player. * @@ -169,6 +178,11 @@ public class PlayerData { return locked; } + /** + * Set if the data is locked + * + * @param locked locked or not + */ public void locked(boolean locked) { this.locked = locked; } @@ -182,6 +196,11 @@ public class PlayerData { return uuid; } + /** + * Set the uuid of the data + * + * @param uuid uuid + */ public void uuid(UUID uuid) { this.uuid = uuid; } diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/MongoDBProvider.java b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/MongoDBProvider.java index 59292f68..ade958db 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/MongoDBProvider.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/MongoDBProvider.java @@ -152,7 +152,7 @@ public class MongoDBProvider extends AbstractStorage { Document query = new Document("uuid", uuid); Bson updates = Updates.combine( Updates.set("lock", unlock ? 0 : getCurrentSeconds()), - Updates.set("data", new Binary(plugin.getStorageManager().toBytes(playerData)))); + Updates.set("data", new Binary(playerData.toBytes()))); UpdateOptions options = new UpdateOptions().upsert(true); UpdateResult result = collection.updateOne(query, updates, options); future.complete(result.wasAcknowledged()); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/RedisManager.java b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/RedisManager.java index f7f331ae..0773ca6d 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/RedisManager.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/nosql/RedisManager.java @@ -296,7 +296,7 @@ public class RedisManager extends AbstractStorage { jedis.setex( getRedisKey("cf_data", uuid), 10, - plugin.getStorageManager().toBytes(playerData) + playerData.toBytes() ); future.complete(true); } catch (Exception e) { diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/AbstractSQLDatabase.java b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/AbstractSQLDatabase.java index 63e2f7d1..ebc578ac 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/AbstractSQLDatabase.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/AbstractSQLDatabase.java @@ -168,7 +168,7 @@ public abstract class AbstractSQLDatabase extends AbstractStorage { PreparedStatement statement = connection.prepareStatement(String.format(SqlConstants.SQL_UPDATE_BY_UUID, getTableName("data"))) ) { statement.setInt(1, unlock ? 0 : getCurrentSeconds()); - statement.setBlob(2, new ByteArrayInputStream(plugin.getStorageManager().toBytes(playerData))); + statement.setBlob(2, new ByteArrayInputStream(playerData.toBytes())); statement.setString(3, uuid.toString()); statement.executeUpdate(); future.complete(true); diff --git a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/SQLiteProvider.java b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/SQLiteProvider.java index 3270e565..faafd923 100644 --- a/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/SQLiteProvider.java +++ b/core/src/main/java/net/momirealms/customfishing/bukkit/storage/method/database/sql/SQLiteProvider.java @@ -193,7 +193,7 @@ public class SQLiteProvider extends AbstractSQLDatabase { PreparedStatement statement = connection.prepareStatement(String.format(SqlConstants.SQL_UPDATE_BY_UUID, getTableName("data"))) ) { statement.setInt(1, unlock ? 0 : getCurrentSeconds()); - statement.setBytes(2, plugin.getStorageManager().toBytes(playerData)); + statement.setBytes(2, playerData.toBytes()); statement.setString(3, uuid.toString()); statement.executeUpdate(); future.complete(true);