プラグインリゾルバ
概要
プラグインリゾルバは、有効なクエリを解決し、プラグインの直リンクを返すモジュールです。 この機能により、インストール時にプラグイン検索して直リンクをコピーする必要がなくなります。
各サービスプロバイダに 1 つずつのリゾルバが割り当てられており、プラグインリゾルバは KPM 内部で登録された順に解決を試みます。
KPM は、GitHub, SpigotMC などの各サービスに対応したリゾルバを複数個登録しています。
詳しくは以下のリゾルバ一覧セクションを参照してください。
この機能は KPM v3 で強化されました!
リゾルバ一覧
AliasResolver
事前に登録されたプラグインの別名(エイリアス)を用いて解決します。
リゾルバ名
- alias
- local
例
ExampleAlias
alias>ExampleAlias
local>ExampleAlias==1.0.0
BruteforceGitHubResolver
GitHub 上に公開されているプラグインの組織名(ユーザ名)を省略するために使用する補助的なリゾルバです。
このリゾルバは直接指定できません。また、直リンクを返さず、GitHubURLResolver に処理を委譲します。
これは、 GitHub の優越によるためです。
これはフォールバックリゾルバの一つです。
他のリゾルバが解決に失敗した場合に使用されます。
CurseBukkitResolver
CurseForge と Bukkit 上に公開されているプラグインを解決します。
このリゾルバは、 有効な CurseForge または Bukkit のプラグインページの URL のみを受け入れます。
リゾルバ名
- curseforge
- curse
- forge
- bukkit
例
https://www.curseforge.com/minecraft/mc-mods/example-mod
curseforge>https://www.curseforge.com/minecraft/mc-mods/example-mod==123456
GitHubURLResolver
GitHub 上に公開されているプラグインを解決します。
このリゾルバは、 有効な GitHub のプラグインページの URL のみを受け入れます。
複数のリリース/アーティファクトが見つかった場合、以下の条件に従って最も適切なものを選択します。
- バージョンが新しい
プレリリースが指定されているバージョンは、リリースバージョンよりも古いとみなされます。
これは、リリースでPre-release
がチェックされていない場合でも同様です。 - ファイル名が
.jar
もしくは.zip
で終わる - ファイル名が
.api.jar
もしくは.api.zip
で終わらない
詳細な情報
また、KPM は以下に示す方法で評価値を算出し、最も高い評価値を持つプラグインを選択します。
- 初期値は 0
- メジャーバージョンに 1000 を掛けた値を足す
- マイナーバージョンに 100 を掛けた値を足す
- パッチバージョンに 10 を掛けた値を足す
- プレリリースバージョンがある場合、 それに 1 を掛けた値を引く (全ての文字を Unicode の値に変換して足す)
- ファイル名が
.jar
もしくは.zip
で終わる場合、 500 を足す - ファイル名が
.api.jar
もしくは.api.zip
で終わる場合、 500 を引く - リリースがプレリリースとしてマークおり、かつプレリリースバージョンがない場合、 500 を引く
KPM は、プレリリースバージョンよりも正式なバージョンを優先してインストールしようとします。
評価値の算出例
例1
バージョン
1.2.3
ファイル名
MyPlugin-1.2.3.jar
プレリリース?: いいえ
評価値 =
0 + (1 * 1000) + (2 * 100) + (3 * 10) + 500 = 1230
例2
バージョン
1.2.3-pre1
ファイル名
MyPlugin-1.2.3-pre1.plugin.jar
プレリリース?: はい
プレリリース (pre-1) =114 + 45 + 49 = 472
評価値 =
0 + (1 * 1000) + (2 * 100) + (3 * 10) - 472 + 500 = 758
この場合、例1のプラグインが選択されます。
リゾルバ名
- github
- gh
例
https://www.github.com/ExampleUser/ExamplePlugin
github>https://github.com/ExampleUser/ExamplePlugin==1.0.0
RawURLResolver
既に解決されている直リンクをオウム返しする補助的なリゾルバです。
このリゾルバは直接指定できません。
これはフォールバックリゾルバの一つです。
他のリゾルバが解決に失敗した場合かつ、 URL が指定された場合に使用されます。
SpigotMCResolver
SpigotMC 上に公開されているプラグインを解決します。
このリゾルバは、 有効な SpigotMC のプラグインページの URL のみを受け入れます。
リゾルバ名
- spigotmc
- spigot
- spiget
例
https://www.spigotmc.org/resources/example-plugin.123456/
spigotmc>https://www.spigotmc.org/resources/example-plugin.123456
OmittedGitHubResolver
GitHub 上に公開されているプラグインを解決する際に、 https://github.com/
を省略した形式でも解決できるようにする補助的なリゾルバです。
例
ExampleUser/ExamplePlugin
ExampleUser/ExamplePlugin==1.0.0
github>ExampleUser/ExamplePlugin==1.0.0