コンテンツへスキップ
プラットフォーム

Foliaプラグイン

Foliaのリージョン単位のマルチスレッドは、プラグインが処理をスケジュールする方法を変えます。CodexeがFoliaで安全なプラグインを生成する方法と、リクエストに書くこと。

更新日

このページの内容
  1. Codexeの違い
  2. リクエストに書くこと
  3. ビルドと検証
  4. よくある問題

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がありません。
Foliaプラグイン | Codexe Docs