Skip to content

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();  // 모든 디스플레이 엔티티 제거 및 갱신 태스크 중지

Clone this wiki locally