Notice

접속자가 있을 때 공지를 설정된 초 간격으로 순차 또는 무작위 송출합니다.

저장
YAML · MariaDB/MySQL
송출
순차 · shuffle · 접속자 기반
런타임
Paper · 비동기 DB 작업

하는 일

Paper 서버의 공지를 1~86,400초 간격으로 반복 송출합니다. 플레이어가 없으면 작업을 멈추고, 접속자가 생기면 다시 시작합니다.

순차 또는 shuffle 순서를 선택할 수 있으며, Adventure legacy 색상과 공통 prefix를 지원합니다.

빠른 시작

  1. 요구 사항 확인

    Paper 1.21.11과 Java 21에 플러그인을 설치합니다.

  2. 기본 저장소 사용

    YAML mode에서는 config.ymlmessages를 사용합니다.

  3. 공지와 간격 설정

    /notice list, /notice add <문구>, /notice interval <초>로 내용을 구성합니다.

  4. 상태와 송출 제어

    /notice status로 확인하고 /notice start 또는 /notice stop으로 제어합니다.

  5. 즉시 송출

    /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를 제공하지 않습니다.