メインコンテンツまでスキップ

プラグイン開発時の注意

あなたのプラグインで KPM を最大限活用するための注意点について説明しています。


プラグインのバージョニング

KPM を使用する上で、 プラグインのアップグレードや依存関係の解決など、プラグインのバージョンが重要な場面が多数あります。
バージョニングには様々な記法・表現方法 がありますが、バージョンを統一して管理するために、 Semantic Versioning という規約が世界的に使われています。
KPM ではこのバージョン記法のみをサポートしています。 そのため、 プラグインのバージョニングは Semantic Versioning に準拠することを推奨します。 これは、 プラグインのリリースのタグでも同様です。 GitHub でプラグインをリリースする場合、バージョングはこの記法に合わせると良いでしょう。

v接頭辞について

この記述の通り、 v 接頭辞は Semantic Versioning には含まれません。

ですが、多くの場合バージョンに v をつけることが慣習となっています。そのため、 KPM はバージョンの先頭の v を許容します。

  • v1.2.31.2.3 は同じバージョンとして扱われます。
  • v1.2.3v1.2.3-beta.1 は同じバージョンとして扱われません。
  • v1.2.31.2.3-beta.1 は同じバージョンとして扱われません。

パッチバージョンの省略

v接頭辞の場合と同様、 Semantic Versioning はパッチ・バージョン(1.0.X)の省略を許可しておりません。 そのため、これが省略されたバージョンは Semantic Versioning に準拠していないとみなされます。

ですが、パッチ・バージョンを省略することが極稀に見られるため、 KPM は パッチ・バージョンの省略を許容するとともに、省略した場合は 0 とみなします

  • 1.2.01.2 は同じバージョンとして扱われます。
  • 1.2.01.2-beta.1 は同じバージョンとして扱われません。
  • 1.2.01.2.0-beta.1 は同じバージョンとして扱われません。

カスタムレシピを適切に管理する

PaperMC は、プラグインのアンロード時に、そのプラグインが登録したレシピを自動で削除しません。 そのため、アンインストール時には KPM がレシピを削除します。 KPM は、プラグインのアンロード時にレシピを全て削除しようとしますが、プラグインが予期しない名前空間のレシピを使用している場合、うまく動作しない場合があります。 この問題を解決して適切にレシピを削除するために、プラグインが使用するレシピまたはその名前空間を、 KPM 情報ファイルに記述してください。

記述しなくてよいレシピ・名前空間

以下のような名前空間をレシピを作成する際に使用すると、KPM が自動でレシピを認識します。そのため、明示的に記述する必要はありません。

  • プラグインの名前(大小問わず)のみで構成された名前空間
  • new NamespacedKey(<プラグインのインスタンス>, "hoge") で作成した完全修飾キー
    この場合、名前空間にはプラグインの名前が使用されるので一番上の条件に当てはまります。

詳しくは以下のドキュメントを参照してください:

リポジトリ名とプラグイン名を一致させる

KPM は、依存関係の解決時に、 GitHub のリポジトリを検索します。
このときに検索される項目は依存関係のプラグイン名なので、依存関係として使用されることが想定されるプラグインは、リポジトリ名とプラグイン名を一致させることをおすすめします。

ヒント

一般に、一部の例外を除いて、プラグイン名とリポジトリ名を一致することがデファクトスタンダードとなっています。
例外として、プラグイン名に空白が含まれるプラグインは、KPM 情報ファイルに明示的に取得元を記述することで依存関係を適切に解決できます。