プラットフォーム
Foliaプラグイン
Foliaのリージョン単位のマルチスレッドは、プラグインが処理をスケジュールする方法を変えます。CodexeがFoliaで安全なプラグインを生成する方法と、リクエストに書くこと。
更新日
このページの内容
Foliaは、ワールドの異なるリージョンを異なるスレッドでtickさせるPaperのフォークです。単一の「メインスレッド」が存在しないため、通常のBukkitのスケジューリング(Bukkit.getScheduler().runTask(...))は使えません。
#Codexeの違い
Foliaの種類を選ぶと、生成されるプラグインは次のようになります。
- Bukkitのスケジューラーの代わりに、リージョン、エンティティ、グローバルリージョン、非同期の各スケジューラーで処理をスケジュールする
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がありません。 |