Table of Contents

Minotaur を使用して Modrinth で Mod を公開する

Minotaur は、 CurseGradle に似た Gradle プラグインです。 このページでは、 Minotaur の基本についてのみ説明します。 詳細については、GitHub のドキュメント を確認してください。

基本的な実装

まず、 Minotaur プラグインを build.gradle ファイルのプラグインリストに次のように追加します:

plugins {
    id "com.modrinth.minotaur" version "2.+"
}

Minotaur はあなたのために modrinth タスクを登録します。構成は、 modrinth {…} ブロックを介して行われます。

これが基本的な例です。

import com.modrinth.minotaur.dependencies.ModDependency
 
modrinth {
    token = 'mySecretToken' // これには環境変数を使用してください!デフォルトは `$MODRINTH_TOKEN` です。
    projectId = 'AABBCCDD' // Modrinth プロジェクトの ID。 Slugs は機能しません。
    versionNumber = '1.0.0' // Mod の(できれば SemVer の)バージョン。指定しない場合は、 `version` 宣言を使用します。
    versionName = 'My awesome release' // バージョンタイトル。指定しない場合は、バージョン番号が使用されます。
    uploadFile = remapJar // 再マップされた jar を使用するように Minotaur に指示します。
    gameVersions = ['1.18', '1.18.1', '1.18.2'] // バージョンがサポートするゲームバージョンの配列。
    loaders = ['fabric']
    dependencies = [
            new ModDependency('P7dR8mSH', 'required') // Fabric API に必要な新しい依存関係を作成します。
    ]
}

ここ から Modrinth のトークンを入手します。このトークンを使用すると、 Minotaur を介して Modrinth API にアクセスできます。

ここで、 gradle modrinth を実行すると、Mod がコンパイルされて Modrinth にアップロードされていることがわかります:

ただし、リリースするたびにファイル内の versionNumberversionName などの値を編集する必要があり、この作業を繰り返すのは大変です。 ここで、 Java の stoutstin が登場します。

動的な実装

これで、基本的な実装ができました。これを動的にして、タスクの実行時にコマンドラインから値を入力できるようにします。通常、これは Gradle タスクでは実行されず、環境変数または同様の静的ソースをこれらの値に使用できますが、チュートリアルは後世のために残されます:

まず、 BufferedReader を作成する必要があります。 なぜ System.out.readLine() ではなく BufferedReader なのでしょうか? System.out.readLine() はコマンド端末でのみ機能し、Eclipse、IntelliJ Idea、Visual Studio Code などの通常の IDE 端末では機能しません。 Gradle タスクは IDE で実行されるのが最も一般的であるため、BufferedReader を使用することをお勧めします。

System.in からバッファを収集する新しい BufferedReader を Modrinth タスクの先頭に追加します。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

これで、メソッド br.readLine() を呼び出すだけでユーザーの入力を得ることができるようになりました。

これをタスクに追加しましょう。また、Markdown 変更ログなどのデータを追加し、バージョン名をセマンティックバージョニング番号とは異なるものにします。

modrinth {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter a Modrinth token: ");
    token = br.readLine(); // このチュートリアルの"基本的な実装"で取得したトークンを入力します。
    projectId = "" // ここに Modrinth プロジェクト ID を入力します。
    System.out.println("Enter the version number:");
    versionNumber = br.readLine();
    System.out.println("Enter the version name:");
    versionName = br.readLine();
    uploadFile = remapJar
    System.out.println("Enter the game version number: (See minotaur docs for valids)");
    gameVersions = [br.readLine()];
    System.out.println("Enter changelog:");
    changelog = br.readLine();
    loaders = ["fabric"]
}

これで、 gradle modrinth が実行されると、ユーザーからいい感じに入力を求められます。それどころか、あなたは GUI を作るために Swing または JavaFX を使用することさえできるでしょう!

Minotaur は CurseGradle と同様に素晴らしいです。両方のタスクを一緒にマージできます。 Minotaur と CurseGradle のそれぞれで公開するためのタスクを一度に実行するためのタスクを作成します:

task publishToModSites {
    publishToModSites.dependsOn modrinth
    publishToModSites.dependsOn curseforge
}

Minotaur 1.x から 2.x への更新

Minotaur 2.x では、ビルドスクリプトのフォーマットにいくつかの重大な変更が加えられました。

まず、独自の publishModrinth タスクを登録する代わりに、 Minotaur は modrinth タスクを自動的に作成するようになりました。そのため、task publishModrinth(type: TaskModrinthUpload) { の行を modrinth { だけに置き換えることができます。

サポートされている Minecraft バージョンと Mod ローダーを宣言するには、 gameVersions 配列と loaders 配列を使用する必要があります。これらの構文はかなり自明です。

releaseType を使用する代わりに、 versionType を使用する必要があります。 これは実際には v1.2.0 で変更されましたが、 v1.1.0 から移行したビルドスクリプトはほとんどありません。

最後に、依存関係も ModDependency または VersionDependency 、あるいはその両方をとる配列です(com.modrinth.minotaur.dependencies パッケージからインポートする必要がある場合があります)。最初のパラメーターは文字列としてのプロジェクトまたはバージョン ID であり、 2 番目のパラメーターは依存関係タイプ(required 〔必須〕、 optional 〔オプション〕、または unsupported 〔サポートされていない〕のいずれか)です。