Skip to content

Commit 603e2fd

Browse files
committed
[Fix] save userdata on quit
1 parent 1373986 commit 603e2fd

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

src/main/java/jp/azisaba/lgw/kdstatus/listeners/JoinQuitListener.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.bukkit.event.player.PlayerJoinEvent;
77

88
import jp.azisaba.lgw.kdstatus.sql.KillDeathDataContainer;
9+
import org.bukkit.event.player.PlayerQuitEvent;
910

1011
public class JoinQuitListener implements Listener {
1112

@@ -21,4 +22,12 @@ public void onPlayerJoinEvent(PlayerJoinEvent e) {
2122

2223
dataContainer.loadPlayerData(p);
2324
}
25+
26+
@EventHandler
27+
public void onPlayerQuitEvent(PlayerQuitEvent e) {
28+
Player p = e.getPlayer();
29+
30+
dataContainer.savePlayerData(p);
31+
dataContainer.removeUserDataFromCache(p.getUniqueId());
32+
}
2433
}

src/main/java/jp/azisaba/lgw/kdstatus/sql/KillDeathDataContainer.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ public KDUserData loadPlayerData(@NonNull Player p) {
110110
return data;
111111
}
112112

113+
public boolean removeUserDataFromCache(UUID uuid) {
114+
return playerDataCache.remove(uuid) != null;
115+
}
116+
113117
/**
114118
* cacheに保存されている戦績を(ファイルに保存して)cacheから削除します
115119
*
@@ -140,6 +144,12 @@ public boolean savePlayerData(@NonNull KDUserData data) {
140144
}
141145
}
142146

147+
public boolean savePlayerData(@NonNull Player p) {
148+
KDUserData userData = getPlayerData(p, false);
149+
if (userData == null) return true;
150+
return savePlayerData(userData);
151+
}
152+
143153
/**
144154
* cache上の全ての戦績を保存します
145155
*

src/main/java/jp/azisaba/lgw/kdstatus/sql/PlayerDataMySQLController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void create(KDUserData data){
8383
public boolean update(KDUserData data){
8484

8585
try(Connection conn = plugin.sql.getConnection();
86-
PreparedStatement ps = conn.prepareStatement("UPDATE kill_death_data SET name=? ,kills=? ,deaths=? ,daily_kills=? ,monthly_kills=? ,yearly_kills=? ,last_updated=? WHERE uuid=?");) {
86+
PreparedStatement ps = conn.prepareStatement("UPDATE kill_death_data SET name=? ,kills=? ,deaths=? ,daily_kills=? ,monthly_kills=? ,yearly_kills=? ,last_updated=? WHERE uuid=?")) {
8787
ps.setString(8,data.getUuid().toString());
8888
ps.setString(1,data.getName());
8989
ps.setInt(2,data.getKills(TimeUnit.LIFETIME));

0 commit comments

Comments
 (0)