플랫폼
Folia 플러그인
Folia의 지역 기반 멀티스레딩은 플러그인이 작업을 예약하는 방식을 바꿔요. Codexe가 Folia에 안전한 플러그인을 생성하는 방법과 요청에 넣을 내용을 알아봐요.
업데이트됨
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가 빠졌어요. |