Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>Folia CheckerNew to Visual Studio Code? Get it now.
Folia Checker

Folia Checker

IronDiscipline

|
2 installs
| (0) | Free
Real-time linting for Folia Minecraft plugin compatibility violations
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Folia Checker

Folia 対応 Minecraft プラグイン開発者向けの VSCode リアルタイムリンター。

BukkitScheduler や BukkitRunnable など、Folia で動作しないパターンを自動検出し、正しいスケジューラーへの移行を提案します。


機能

リアルタイムリント

.java ファイルを開いた瞬間から解析が走ります。問題のある行に赤・黄色の波線が表示されます。

ワークスペース全体のスキャン

VSCode 起動時にワークスペース内の 全 .java ファイル を自動スキャン。開いていないファイルの違反も Problems パネル (Ctrl+Shift+M) に一覧表示されます。

既定では Folia 依存があるプロジェクトのみ を診断します。

ホバードキュメント

波線にカーソルを乗せると、なぜ問題なのか・何に置き換えるべきかが詳しく表示されます。

手動再スキャン

Ctrl+Shift+P → Folia Checker: ワークスペース全体を再スキャン


検出ルール

ルール 重大度 検出パターン
BUKKIT_SCHEDULER error Bukkit.getScheduler(), .getServer().getScheduler()
BUKKIT_RUNNABLE error extends BukkitRunnable, new BukkitRunnable(
SYNC_SCHEDULER_METHODS error runTask(, runTaskLater(, runTaskTimer(
ASYNC_WORLD_ACCESS warning Bukkit.getWorld(

なぜ必要なのか

Folia は Paper の fork で、Minecraft のワールドをリージョンに分割して並列処理します。各リージョンは独立したスレッドで動作するため、従来の BukkitScheduler が前提としていた「グローバルなメインスレッド」が存在しません。

これにより、従来の Bukkit プラグインのスケジューラーコードはそのまま動作せず、ランタイムでクラッシュします。

移行例

// Before(Folia でクラッシュ)
Bukkit.getScheduler().runTaskLater(plugin, () -> {
    doSomething();
}, 20L);

// After(Folia 対応)
Bukkit.getGlobalRegionScheduler().runDelayed(plugin, task -> {
    doSomething();
}, 20L);

正しいスケジューラーの選び方

用途 スケジューラー
場所に依存しないグローバルタスク Bukkit.getGlobalRegionScheduler()
I/O・DB・ネットワーク(ワールドアクセスなし) Bukkit.getAsyncScheduler()
エンティティに紐づくタスク entity.getScheduler()
ワールド座標に紐づくタスク location.getRegionScheduler()

設定

設定 デフォルト 説明
foliaChecker.enable true 診断機能の有効・無効
foliaChecker.debounceMs 400 編集後に再解析するまでの待機時間(ms)
foliaChecker.includeNonFoliaProjects false Paper/Bukkit プロジェクトも Folia 移行チェックの対象に含める

ライセンス

MIT — IronDiscipline Project

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft