BuzzBuild-BossIndicator — 설정
설정 파일
섹션 제목: “설정 파일”| 기준 | 파일 | 적용 |
|---|---|---|
| 서버 | plugins/BuzzBuild-BossIndicator/config.yml | /보스표시 리로드 |
| 서버 | plugins/BuzzBuild-BossIndicator/bosses.yml | /보스표시 리로드 후 대상 재타격 |
| 클라이언트 게임 인스턴스 | config/buzzbuild-boss-indicator.json | 클라이언트 재실행 |
아래 서버 기본값은 배포 리소스 기준입니다. 키가 없을 때 사용하는 코드 내부 fallback과 다른 값은 따로 설명합니다.
config.yml — 표시
섹션 제목: “config.yml — 표시”| 키 | 타입 | 기본값 | 설명 |
|---|---|---|---|
display.show-time-left | boolean | true | 시간 문자열 전송 여부 |
display.time-left-placeholder | string | "%md_dungeon_time_left%" | 플레이어 기준 PlaceholderAPI 치환 문자열 |
display.only-configured-bosses | boolean | true | 등록된 대상만 추적. false이면 미등록 LivingEntity도 추적 |
display.max-health-per-row | number | 1000000 | 자동 줄 수 계산 분모. 최소 1 |
display.min-auto-rows | integer | 1 | 자동 줄 수 하한. 최소 1 |
display.max-auto-rows | integer | 99 | 자동 줄 수 상한. 최소 1 |
display.show-boss-name | boolean | true | 보스 이름 표시 |
display.boss-name-offset-x | integer | 0 | 이름 X 오프셋 |
display.boss-name-offset-y | integer | -5 | 이름 Y 오프셋 |
display.boss-name-shadow | boolean | true | 이름 그림자 |
display.show-health-text | boolean | true | 체력·피해량 문구 전체 표시 |
display.show-damage-text | boolean | true | 체력 문구 뒤에 피해량 문구 추가 |
display.health-text-format | string | "{current}/{max}" | 체력 문구 |
display.damage-text-format | string | "({damage})" | 피해량 문구 |
display.health-text-offset-x | integer | 0 | 체력 문구 X 오프셋 |
display.health-text-offset-y | integer | -1 | 체력 문구 Y 오프셋 |
display.health-text-shadow | boolean | true | 체력 문구 그림자 |
display.row-count-shadow | boolean | true | x N 줄 수 그림자 |
오프셋은 GUI 픽셀 단위이며 X 양수는 오른쪽, Y 양수는 아래입니다. 체력 문구의 {current}, {max}, {damage}는 쉼표로 구분한 정수로 치환됩니다. 피해량은 마지막으로 해당 플레이어가 가한 타격의 최종 피해값이며 누적 피해량이 아닙니다. show-health-text: false이면 피해량도 표시되지 않습니다.
자동 줄 수는 ceil(maxHealth / max-health-per-row)를 하한·상한 사이로 제한합니다. 하한은 상한 이하로 설정하세요. 양수 rows를 지정한 대상은 자동 계산과 자동 상한을 사용하지 않습니다.
코드 내부 fallback은 time-left-placeholder: "", 이름 Y 0, 체력 Y 0입니다. 일반적인 파일 누락 키는 Bukkit의 번들 기본값도 영향을 주므로 의도한 값은 파일에 명시하세요.
config.yml — 색과 갱신
섹션 제목: “config.yml — 색과 갱신”| 키 | 타입 | 기본값 | 설명 |
|---|---|---|---|
colors.order | string | "red>orange>yellow>lime>green>mint>cyan>blue>purple" | >로 연결한 색 이름 또는 6자리 HEX. 최대 64색 |
colors.named.<이름> | string | 아래 표 | 색 이름에 대응하는 HEX |
runtime.display-linger-ticks | integer | 200 | 마지막 매칭 타격 후 유지 틱. 최소 20, 코드 fallback 120 |
runtime.update-interval-ticks | integer | 2 | 서버 추적 확인 간격. 최소 1 |
runtime.max-distance | number | 80.0 | 대상과의 최대 거리, 블록 단위. 최소 1 |
runtime.debug | boolean | false | sync·clear 상세 로그 |
colors.named 키 | 기본값 |
|---|---|
red | "#d72121" |
orange | "#f86f1f" |
yellow | "#edc80d" |
lime | "#97d801" |
green | "#42b60f" |
mint | "#58E5A8" |
cyan | "#198a7d" |
blue | "#0d65d6" |
purple | "#7a21de" |
색 이름은 대소문자를 정규화합니다. 잘못된 색은 제외하며 유효한 색이 하나도 없으면 서버는 #D92626을 사용합니다. 줄이 소진될 때 다음 색으로 넘어가고 목록 끝에서 순환합니다. YAML의 # 색 문자열은 따옴표로 감싸세요.
20 TPS 기준 200틱은 약 10초, 2틱은 약 0.1초입니다. 동일한 데이터는 재전송하지 않으며 클라이언트는 마지막 sync로부터 8초가 지나면 표시를 중단하므로 유지 틱만으로 실제 표시 시간을 보장하지 않습니다.
config.yml — 메시지
섹션 제목: “config.yml — 메시지”모두 string이며 MiniMessage로 처리합니다. messages.prefix가 명령 채팅 메시지 앞에 붙습니다. 진단 결과는 별도 일반 문자열입니다.
| 키 | 기본값 |
|---|---|
messages.prefix | "<aqua>[BB-BossIndicator]</aqua> " |
messages.player-only | "<red>플레이어만 사용할 수 있습니다." |
messages.no-permission | "<red>권한이 없습니다." |
messages.reloaded | "<green>설정을 다시 불러왔습니다." |
messages.help | "<gray>/보스표시 리로드 · 상태 · 테스트 · 숨김" |
messages.synced | "<green>테스트 sync를 보냈습니다. <gray>(<name> · <rows>줄)" |
messages.cleared | "<green>HUD clear를 보냈습니다." |
messages.synced의 <name>, <rows>는 테스트 결과로 치환합니다. HUD 체력 문구는 위 MiniMessage 채팅 형식과 별개이며 {current} 등의 토큰을 사용합니다.
bosses.yml — 대상별 줄 수
섹션 제목: “bosses.yml — 대상별 줄 수”| 키 | 타입 | 기본값·규칙 |
|---|---|---|
mythic | mapping | MythicMobs 내부 ID별 규칙 |
vanilla | mapping | 기본 {}. 엔티티 키별 규칙 |
mythic.<id>.rows | integer | 양수이면 고정 줄 수. 생략·0·음수이면 자동 계산 |
vanilla.<id>.rows | integer | 동일 |
번들 기본 대상은 example1: 8, example2: 15, Dummy: 77, live_Dummy: 23줄입니다. 실제 파일에서는 각 ID 아래에 rows를 둡니다. 기본 대상 등록은 몹 생성 기능이 아닙니다.
ID는 앞뒤 공백 제거와 소문자 변환 후 [a-z0-9][a-z0-9_.:-]{0,127}로 검사합니다. 잘못된 ID는 경고와 함께 제외합니다. Mythic 규칙을 먼저 찾고, 매칭되지 않으면 바닐라 규칙도 확인합니다. 바닐라는 minecraft:zombie 또는 zombie처럼 등록할 수 있습니다.
최소 설정 예시
섹션 제목: “최소 설정 예시”생성된 config.yml에서 다음 표시 키를 수정하고 다른 키는 유지합니다. 시간 제공자가 없는 예시입니다.
display: only-configured-bosses: true show-time-left: falsebosses.yml은 다음과 같이 구성하면 MythicMobs 없이 좀비를 추적할 수 있습니다.
mythic: {}vanilla: zombie: rows: 3/보스표시 리로드 후 좀비를 타격합니다. Mythic 보스는 mythic 아래에 실제 내부 ID와 rows를 같은 구조로 추가합니다.
클라이언트 JSON
섹션 제목: “클라이언트 JSON”| 키 | 타입 | 기본값 | 설명 |
|---|---|---|---|
enabled | boolean | true | 개인 HUD 표시 여부 |
positions.hudOffsetX | integer | 0 | 전체 HUD X 이동 |
positions.hudOffsetY | integer | 0 | 전체 HUD Y 이동 |
positions.backgroundOffsetX | integer | 0 | 배경·체력 바·해골 X 기준 이동 |
positions.backgroundOffsetY | integer | 0 | 배경과 종속 요소 Y 기준 이동 |
positions.skullOffsetX | integer | 0 | 배경 기준 해골 X 이동 |
positions.skullOffsetY | integer | 0 | 배경 기준 해골 Y 이동 |
positions.rowCountOffsetX | integer | 0 | 줄 수 문구 X 이동 |
positions.rowCountOffsetY | integer | -2 | 줄 수 문구 Y 이동 |
positions.timeTextOffsetX | integer | 0 | 시간 문구 X 이동 |
positions.timeTextOffsetY | integer | 0 | 시간 문구 Y 이동 |
HUD는 기본적으로 화면 상단 중앙, Y 12를 기준으로 그립니다. 배경 X 오프셋은 화면 중앙 기준으로 배치되는 이름·체력·시간 문구의 X 위치에는 적용되지 않습니다.
{ "enabled": true, "positions": { "hudOffsetX": 0, "hudOffsetY": 20 }}나머지 위치 키는 초기 기본값을 사용합니다. 로드 후 알려진 필드를 저장하므로 생략한 필드가 생성되고 알 수 없는 필드는 유지되지 않습니다. 클라이언트가 종료된 상태에서 편집하고 다시 실행하세요.
확인 범위
섹션 제목: “확인 범위”2026-10-05 기본 리소스, 설정 로더와 HUD 렌더러를 대조했습니다. 게임 내 동작은 미검증입니다.