diff --git a/src/main/java/org/xgqy/survival/AccountManager.java b/src/main/java/org/xgqy/survival/AccountManager.java index d60cc70..282934c 100644 --- a/src/main/java/org/xgqy/survival/AccountManager.java +++ b/src/main/java/org/xgqy/survival/AccountManager.java @@ -40,8 +40,15 @@ public class AccountManager { for (String key : accountsConfig.getKeys(false)) { try { UUID uuid = UUID.fromString(key); - PlayerAccount account = (PlayerAccount) accountsConfig.get(key); - if (account != null) { + + // 手动读取字段并构建PlayerAccount对象 + String name = accountsConfig.getString(key + ".username"); + String passwordHash = accountsConfig.getString(key + ".passwordHash"); + long lastLoginTime = accountsConfig.getLong(key + ".lastLoginTime", 0); + + if (name != null && passwordHash != null) { + PlayerAccount account = new PlayerAccount(name, passwordHash); + account.setLastLoginTime(lastLoginTime); accounts.put(uuid, account); } } catch (IllegalArgumentException e) { @@ -52,9 +59,14 @@ public class AccountManager { public void saveAccounts() { for (Map.Entry entry : accounts.entrySet()) { - accountsConfig.set(entry.getKey().toString(), entry.getValue()); - } + String uuidStr = entry.getKey().toString(); + PlayerAccount account = entry.getValue(); + // 手动存储每个字段 + accountsConfig.set(uuidStr + ".username", account.getUsername()); + accountsConfig.set(uuidStr + ".passwordHash", account.getPasswordHash()); + accountsConfig.set(uuidStr + ".lastLoginTime", account.getLastLoginTime()); + } try { accountsConfig.save(accountsFile); } catch (IOException e) {