-
Notifications
You must be signed in to change notification settings - Fork 0
Leaderboard KO
wjddusrb03 edited this page Mar 29, 2026
·
1 revision
여러 TextDisplay 엔티티로 구성된 자동 갱신 순위 디스플레이입니다.
DisplayAPI.leaderboard(location)
.title("킬 랭킹")
.entry("Player_A", 150)
.entry("Player_B", 120)
.entry("Player_C", 95)
.maxRows(10)
.spawn();| 메서드 | 설명 | 기본값 |
|---|---|---|
.title(String) |
리더보드 제목 | "Leaderboard" |
.title(Component) |
스타일이 적용된 제목 | 금색 + 굵게 |
.data(Map<String, Integer>) |
데이터 한 번에 설정 | - |
.entry(String, int) |
항목 하나 추가 | - |
.dataSupplier(Supplier) |
동적 데이터 소스 | - |
.maxRows(int) |
최대 표시 항목 수 | 10 |
.lineSpacing(float) |
줄 간격 | 0.3 |
.updateInterval(int ticks) |
자동 갱신 주기 |
100 (5초) |
.billboard(Billboard) |
바라보기 모드 | CENTER |
.visibleTo(Player...) |
플레이어별 가시성 | 전체 |
| 순위 | 색상 |
|---|---|
| 1위 | 금색 |
| 2위 | 회색 |
| 3위 | 빨간색 |
| 4위~ | 흰색 |
시간에 따라 변하는 데이터에는 dataSupplier()를 사용하세요:
DisplayAPI.leaderboard(location)
.title("최다 킬")
.dataSupplier(() -> {
Map<String, Integer> kills = new LinkedHashMap<>();
for (Player p : Bukkit.getOnlinePlayers()) {
kills.put(p.getName(), getKills(p));
}
return kills;
})
.updateInterval(100) // 5초마다 갱신
.maxRows(5)
.spawn();Leaderboard lb = DisplayAPI.leaderboard(location)
.title("테스트")
.data(data)
.spawn();
// 나중에
lb.remove(); // 모든 디스플레이 엔티티 제거 및 갱신 태스크 중지