Notice
접속자가 있을 때 공지를 설정된 초 간격으로 순차 또는 무작위 송출합니다.
- 저장
- YAML · MariaDB/MySQL
- 송출
- 순차 · shuffle · 접속자 기반
- 런타임
- Paper · 비동기 DB 작업
하는 일
Paper 서버의 공지를 1~86,400초 간격으로 반복 송출합니다. 플레이어가 없으면 작업을 멈추고, 접속자가 생기면 다시 시작합니다.
순차 또는 shuffle 순서를 선택할 수 있으며, Adventure legacy 색상과 공통 prefix를 지원합니다.
빠른 시작
요구 사항 확인
Paper 1.21.11과 Java 21에 플러그인을 설치합니다.
기본 저장소 사용
YAML mode에서는
config.yml의messages를 사용합니다.공지와 간격 설정
/notice list,/notice add <문구>,/notice interval <초>로 내용을 구성합니다.상태와 송출 제어
/notice status로 확인하고/notice start또는/notice stop으로 제어합니다.즉시 송출
/notice send <문구>는 저장하지 않고 바로 전송합니다. MariaDB/MySQL은storage.method: mariadb일 때만 필요합니다.
핵심 동작과 안전성
- 접속자 기반 동작
- 접속자가 있을 때만 주기 작업을 실행하고, 서버가 비면 중지했다가 다음 접속 시 다시 시작합니다.
- 송출 순서
- 등록 순서대로 순환하거나 shuffle로 무작위 선택할 수 있습니다.
- 색상과 prefix
&0~&f,&k~&r,&#RRGGBB를 지원합니다. 공통 prefix와 MariaDB 공지별 override, 선택적 console 출력을 제공합니다.- 저장 worker
- MariaDB 연결·schema 점검·조회·변경을 단일 storage worker에서 순차 처리해 서버 main thread를 막지 않습니다.
- 확정 후 상태 교체
- YAML 저장 또는 DB commit이 성공한 뒤에만 runtime state를 바꿉니다. reload 실패 시 마지막 정상 in-memory 상태를 유지합니다.
- 일관된 DB snapshot
- DB 설정과 공지 목록을 한 read transaction에서 읽습니다.
- 동기화 제한
- 공지 최대 10,000개를 허용합니다. 초과·잘못된 행·설정은 기존 상태를 유지한 채 sync를 거부합니다.
- transactional migrate
migrate replace는 기존 DB 삭제와 YAML 삽입을 한 transaction에서 처리하고 실패하면 rollback합니다.- 연결 안전성
- TLS disable·trust·verify-ca·verify-full, connect/socket timeout과 제한된 pool 크기를 설정할 수 있습니다.
- 주기 sync
/notice sync와 0~10,080분의 주기 sync를 지원하며, 0이면 자동 sync를 끕니다.
주요 명령
- 운영
-
status송출·저장 상태 확인reload검증 후 전체 구성 교체start주기 송출 시작stop주기 송출 중지 - 콘텐츠
-
list · add · set · remove · clear공지 조회와 변경send저장하지 않고 즉시 송출prefix · msgprefix공통·공지별 prefix 관리 - 송출 설정
-
interval1~86,400초 간격shuffle순차·무작위 선택consoleconsole 동시 출력 - MariaDB
-
sync · syncinterval즉시·주기 동기화migrate [replace]YAML 데이터를 transaction으로 이전
모든 관리 명령은 /notice 아래에서 실행하며 notice.admin 권한이 필요합니다. 기본 권한 대상은 OP입니다.
호환성과 한계
요구 사항
- Paper 1.21.11, Java 21
- 기본 YAML 또는 선택적 MariaDB/MySQL
- 원격 DB는 verify-full TLS와 최소 권한 계정 권장
- 공지 간격 1~86,400초, sync 간격 0~10,080분
지원 경계
- Folia를 지원하지 않습니다.
- plugin manager 또는 서버
/reload기반 hot reload를 지원하지 않습니다. - 달력·cron·메시지별 시각 지정 기능은 없습니다.
- 플레이어별 타깃 송출과 별도 GUI를 제공하지 않습니다.