diff --git a/src/main/java/org/samo_lego/simpleauth/mixin/MixinPlayerEntity.java b/src/main/java/org/samo_lego/simpleauth/mixin/MixinPlayerEntity.java index 0b430c6..66edfc9 100644 --- a/src/main/java/org/samo_lego/simpleauth/mixin/MixinPlayerEntity.java +++ b/src/main/java/org/samo_lego/simpleauth/mixin/MixinPlayerEntity.java @@ -113,7 +113,13 @@ public abstract class MixinPlayerEntity implements PlayerAuth { if(!playerCacheMap.containsKey(this.getFakeUuid())) { // First join - playerCache = PlayerCache.fromJson(player, DB.getUserData(this.getFakeUuid())); + String jsonString = DB.getUserData(this.getFakeUuid()); + if(jsonString != null && !jsonString.isEmpty()) + playerCache = PlayerCache.fromJson(player, jsonString); + else + playerCache = new PlayerCache(player); + + // Saving to hashmap of player caches playerCacheMap.put(this.getFakeUuid(), playerCache); } else { diff --git a/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java b/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java index fe1a79b..ee5edd9 100644 --- a/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java +++ b/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java @@ -65,6 +65,11 @@ public class PlayerCache { private static final Gson gson = new Gson(); + /** + * Creates an empty cache for player (when player doesn't exist in DB). + * + * @param player player to create cache for + */ public PlayerCache(ServerPlayerEntity player) { if(config.experimental.debugMode) logInfo("Creating cache for " + Objects.requireNonNull(player).getName()); @@ -100,10 +105,6 @@ public class PlayerCache { } public static PlayerCache fromJson(ServerPlayerEntity player, String json) { - if(json.isEmpty()) { - // Player doesn't have data yet - return new PlayerCache(player); - } if(config.experimental.debugMode) logInfo("Creating cache for " + Objects.requireNonNull(player).getName()); @@ -111,6 +112,8 @@ public class PlayerCache { PlayerCache playerCache = gson.fromJson(json, PlayerCache.class); playerCache.loginTries = 0; + playerCache.isAuthenticated = false; + if(playerCache.password != null && !playerCache.password.isEmpty()) { playerCache.isRegistered = true; }