Skip to content

Commit 712720d

Browse files
committed
feat: add name in data
1 parent d838b7e commit 712720d

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

src/main/java/net/azisaba/kdstatusreloaded/playerkd/cache/KDCache.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import net.azisaba.kdstatusreloaded.playerkd.model.KDUserData;
44
import net.azisaba.kdstatusreloaded.playerkd.db.KDUserDataRepository;
5+
import org.bukkit.Bukkit;
56
import org.jspecify.annotations.NullMarked;
67

78
import java.util.Calendar;
89
import java.util.HashMap;
910
import java.util.UUID;
11+
import java.util.function.Supplier;
1012

1113
@NullMarked
1214
public class KDCache {
@@ -19,24 +21,32 @@ public KDCache(KDUserDataRepository dataRepository) {
1921
}
2022

2123
public KDUserData getData(UUID uuid) {
22-
return get(uuid).clone();
24+
return get(uuid, () -> {
25+
var findResult = Bukkit.getOnlinePlayers().stream().filter(p -> p.getUniqueId() == uuid).findFirst();
26+
if(findResult.isEmpty()) throw new RuntimeException("Failed to get name for " + uuid);
27+
return findResult.get().getName();
28+
}).clone();
2329
}
2430

2531
// For internal
26-
protected KDUserData get(UUID uuid) {
32+
protected KDUserData get(UUID uuid, String name) {
33+
return get(uuid, () -> name);
34+
}
35+
36+
protected KDUserData get(UUID uuid, Supplier<String> nameSupplier) {
2737
if (!cacheMap.containsKey(uuid)) {
2838
cacheMap.put(
2939
uuid,
30-
dataRepository.findById(uuid).orElse(new KDUserData(uuid, ""))
40+
dataRepository.findById(uuid).orElse(new KDUserData(uuid, nameSupplier.get()))
3141
);
3242
}
3343
return cacheMap.get(uuid);
3444
}
3545

36-
public void store(UUID uuid) {
46+
public void store(UUID uuid, String name) {
3747
cacheMap.put(
3848
uuid,
39-
dataRepository.findById(uuid).orElse(new KDUserData(uuid, ""))
49+
dataRepository.findById(uuid).orElse(new KDUserData(uuid, name))
4050
);
4151
}
4252

@@ -57,8 +67,8 @@ public void removeAll() {
5767
}
5868

5969
// 責務を超えてしまうが、ここにkill/deathのincrement処理を追記する。
60-
public void addKill(UUID uuid, int count) {
61-
KDUserData kdUserData = get(uuid);
70+
public void addKill(UUID uuid, String name, int count) {
71+
KDUserData kdUserData = get(uuid, name);
6272
kdUserData.totalKills += count;
6373

6474
fixCorrectValue(kdUserData);
@@ -69,8 +79,8 @@ public void addKill(UUID uuid, int count) {
6979
updateTimestamp(kdUserData);
7080
}
7181

72-
public void addDeath(UUID uuid, int count) {
73-
KDUserData kdUserData = get(uuid);
82+
public void addDeath(UUID uuid, String name, int count) {
83+
KDUserData kdUserData = get(uuid, name);
7484
kdUserData.deaths += count;
7585

7686
updateTimestamp(kdUserData);

src/main/java/net/azisaba/kdstatusreloaded/playerkd/listener/PlayerEventListener.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public PlayerEventListener(KDCache kdCache, KDConfig.KillDeathConfig killDeathCo
2828

2929
@EventHandler(priority = EventPriority.MONITOR)
3030
public void onPlayerJoin(PlayerJoinEvent e) {
31-
kdCache.store(e.getPlayer().getUniqueId());
31+
Player p = e.getPlayer();
32+
kdCache.store(p.getUniqueId(), p.getName());
3233
}
3334

3435
@EventHandler(priority = EventPriority.MONITOR)
@@ -48,7 +49,7 @@ public void onPlayerDeath(PlayerDeathEvent e) {
4849
logger.info(Chat.f("{0}のデス数加算をキャンセル (\"{1}\" が無効化にするワールドに指定されているため)", victim.getName(), victimWorld.getName()));
4950
}
5051
} else {
51-
kdCache.addDeath(victim.getUniqueId(), 1);
52+
kdCache.addDeath(victim.getUniqueId(), victim.getName(), 1);
5253
}
5354

5455
// increment kill count
@@ -59,7 +60,7 @@ public void onPlayerDeath(PlayerDeathEvent e) {
5960
logger.info(Chat.f("{0}のキル数加算をキャンセル (\"{1}\" が無効にするワールドに指定されているため)", killer.getName(), killerWorld.getName()));
6061
}
6162
} else {
62-
kdCache.addKill(killer.getUniqueId(), 1);
63+
kdCache.addKill(killer.getUniqueId(), killer.getName(), 1);
6364
}
6465
}
6566
}

0 commit comments

Comments
 (0)