본문으로 건너뛰기
플랫폼

Folia 플러그인

Folia의 지역 기반 멀티스레딩은 플러그인이 작업을 예약하는 방식을 바꿔요. Codexe가 Folia에 안전한 플러그인을 생성하는 방법과 요청에 넣을 내용을 알아봐요.

업데이트됨

이 페이지에서
  1. Codexe가 다르게 하는 것
  2. 요청에 넣을 내용
  3. 빌드와 검증
  4. 자주 생기는 문제

Folia는 월드의 여러 지역을 서로 다른 스레드에서 틱 처리하는 Paper의 포크예요. 하나의 "메인 스레드"가 없기 때문에 일반적인 Bukkit 스케줄링(Bukkit.getScheduler().runTask(...))은 쓸 수 없어요.

#Codexe가 다르게 하는 것

Folia 유형을 고르면 생성되는 플러그인은 다음과 같아요.

  • Bukkit 스케줄러 대신 지역(region), 엔티티(entity), 전역 지역(global region), 비동기(async) 스케줄러로 작업을 예약하고,
  • plugin.yml에 folia-supported: true를 선언하고,
  • Folia API를 대상으로 빌드해요(Maven).

#요청에 넣을 내용

Spigot & Paper 가이드의 모든 내용에 더해, 타이밍이 중요한 세부 사항을 적으세요. "3초 후 텔레포트", "접속 중인 플레이어마다 1분마다 반복" 같은 것들이요. Folia 코드가 가장 크게 달라지는 부분이에요.

#빌드와 검증

Folia 플러그인도 다른 플러그인처럼 준비됨이 되기 전에 컴파일되고 검사를 받아요. 컴파일은 코드가 Folia API로 빌드된다는 것을 증명해요. 실행 중 스레드 안전성은 여전히 로직에 달려 있으니 Folia 서버에서 테스트하세요.

#자주 생기는 문제

증상가능한 원인
스케줄러 관련 UnsupportedOperationException코드(대개 의존성에서 온 코드)가 Bukkit 스케줄러를 써요. 채팅에 지역 또는 엔티티 스케줄러로 옮겨 달라고 요청하세요.
Folia에서 플러그인이 로드를 거부함plugin.yml에 folia-supported: true가 빠졌어요.
Folia 플러그인 | Codexe Docs