ガイド
プラグインを新しいMinecraftバージョンにアップデートする方法
2026年10月18日に更新
サーバーを新しいMinecraftバージョンに移行しても、Bukkit APIは安定しているので、多くのプラグインは変更なしで動き続けます。一方で、読み込まれなくなったり、細かいところで壊れたりするプラグインもあります。作者がアップデートしていないプラグインでも、ソースがあれば自分でアップデートできます。何が変わるのか、どの順番で作業するのかを紹介します。
新しいバージョンでどう動くべきかを説明してください。
Codexeでこれを生成手順
1.まず古い.jarを試す
新しいバージョンのテストサーバーに入れて、コンソールを読みます。読み込まれて動くなら、何も変える必要はないかもしれません。
2.APIの依存関係を変える
pom.xmlまたはbuild.gradleで、paper-apiまたはspigot-apiを新しいバージョンにします。3.api-versionとJavaを更新する
plugin.ymlのapi-versionを設定し(例:'1.21')、新しいバージョンが必要とするJava向けにコンパイルします。1.20.5より前はJava 17、1.20.5以降はJava 21、26.xはJava 25です。4.コンパイルできなくなった部分を直す
ビルドしてエラーを1つずつ片付けます。名前が変わった素材、削除されたメソッド、変更されたイベントクラスなどです。コンパイラーがファイルと行番号付きで一覧にしてくれます。
5.依存関係を更新する
あなたのプラグインが使うプラグイン(Vault、PlaceholderAPI、ProtocolLib、WorldGuard)も、新しいMinecraftバージョンに対応したものが必要です。ビルドファイルとサーバーの両方で更新します。
6.新しいバージョンでテストする
同じプラグインを入れた新しいバージョンのサーバーで読み込み、起動だけでなく、すべてのコマンドと機能を試します。
よく壊れるところ
- 素材名とenumの名前: 1.13のアップデートでほとんどのアイテムとブロックの名前が変わり、その後のバージョンでも追加、改名、削除が続いています。古い名前や数値IDを使うコードは失敗します。
- 非推奨メソッドの削除: 何バージョンにもわたって非推奨とされたメソッドは、いずれ消えます。
- アイテムのデータ: 1.20.5から、アイテムのNBTはデータコンポーネントに置き換えられました。アイテムのNBTを直接編集するプラグインはその部分の書き直しが必要ですが、通常の
ItemMetaAPIはそのまま使えます。 - NMSとリフレクション: サーバーの内部クラスを使うコードは、ほぼすべてのバージョンで壊れます。可能ならAPIか、ProtocolLibなどのライブラリに置き換えます。
- ライブラリのバージョン: 古いJava向けにビルドされたシェーディング済みのライブラリは、新しいJavaで失敗することがあります。
多くのバージョンをまたぐアップデート
1.8や1.12から1.21への移行は、アップデートというより、アイテム、ブロック、パーティクルに関わる部分の書き直しに近くなります。バージョンごとに少しずつではなく、新しいAPIに対して一度に行いましょう。設定ファイルにも新しい素材名が必要になると考えておいてください。
プラグインが複数のバージョンに同時に対応しなければならない場合は、対応する最も古いバージョンに対してコンパイルし、後から追加されたAPIを避けるか、バージョンごとに別々のビルドを用意します。
Codexeで
Pro以上のプランなら、プラグインのソースをZIPでインポートして、たとえば「これは私のPaper 1.20.4プラグインです。Paper 1.21.4にアップデートしてください」と頼めます。CodexeはビルドファイルからMinecraftのバージョンを読み取り、そのバージョンが必要とするJavaでビルドし、ビルド対象のAPIの実際のシグネチャを使ってコンパイルエラーを修復します。Codexeで作ったプラグインなら、プロジェクトのチャットで新しいバージョンを頼んでください。
コンパイルできれば、プラグインが新しいAPIでビルドできることがわかります。その後はテストサーバーで試してください。バージョン間の動作の変化は、コンパイルエラーとしては現れないからです。
よくある質問
ソースコードなしでプラグインをアップデートできますか?
確実にはできません。.jarを逆コンパイルすると、保守しにくいコードになり、作者のライセンスに違反するおそれもあります。まずは、アップデート版やメンテナンスされているフォークを探してください。
1.21.1のプラグインは1.21.4で動きますか?
同じメジャーバージョン内なら、NMSや変更されたAPIを使っていない限り、多くの場合は動きます。頼りにする前にテストしてください。
サーバーに「Unsupported API version」と表示されるのはなぜですか?
それは逆のケースです。プラグインがサーバーより新しいAPIを対象にしています。サーバーのバージョン向けにビルドするか、サーバーをアップデートしてください。
自分のバージョン向けにプラグインを作り直す
このプロンプトは、そのまま送信できる状態で開きます:
“私のSpigot 1.12.2プラグインTreeFellerのPaper 1.21.4版: 木のいちばん下の原木を斧で壊すと木全体が壊れ、原木1つごとに耐久値を消費、サクラやマングローブを含む1.21のすべての木の種類に対応、/treefellerで切り替え、設定はconfig.yml。”
Codexeでこれを生成