Table of Contents

Публикация вашего мода на Modrinth с помощью Minotaur

Minotaur - это плагин Gradle, похожий на CurseGradle. На этой странице только основы Minotaur, вы должны проверить документацию GitHub для дальнейшего понимания.

Основное

Прежде всего, добавьте плагин minotaur в список плагинов в файле build.gradle следующим образом:

plugins {
    id "com.modrinth.minotaur" version "1.1.0"
}

Теперь вы можете создать новую задачу Gradle для загрузки в Modrinth.

Вот простой пример.

import com.modrinth.minotaur.TaskModrinthUpload
 
task publishModrinth (type: TaskModrinthUpload) {
    token = 'mySecretToken' // Используйте свойство environment при выпуске исходного кода на GitHub!
    projectId = 'modrinthModID' // Идентификатор вашего проекта modrinth, slugs не будет работать.
    versionNumber = '1.0.0' // Версия мода для загрузки.
    uploadFile = remapJar // Это ссылка на задачу, которая создает ваш mod jar и устанавливает "uploadFile" в mod jar.
    addGameVersion('1.16.2') // Любая версия майнкрафта.
    addLoader('fabric') // Может быть fabric или forge. Modrinth будет поддерживать liteloader и rift позже.
}

Получите свой токен Modrinth отсюда. Вы можете использовать этот токен для доступа к API Modrinth и вместе с Minotaur.

Теперь, когда вы запускаете gradle publishModrinth, вы должны увидеть, что ваш мод был скомпилирован и загружен в Modrinth:

Однако это может быть ограничивающим и иногда повторяющимся для загрузки, вам нужно будет редактировать значения каждый раз, когда вы хотите выпустить версию. Вот тут-то и появляются Java stout и stin.

Продвинутый

Итак, у вас есть базовая реализация. Давайте сделаем его динамическим, позволяя вам вводить значения через командную строку при выполнении задачи.

Прежде всего, нам нужно было бы создать BufferedReader. Почему BufferedReader вместо System.out.readLine()? System.out.readLine() работает только на командных терминалах и не работает на обычных IDE-терминалах, таких как Eclipse, IntelliJ Idea и Visual Studio Code. Поскольку задачи Gradle чаще всего выполняются в IDE, было бы лучше использовать BufferedReader, поскольку он поддерживает терминалы IDE.

Добавьте новый BufferedReader выше задачи Modrinth.

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

Теперь вы можете обработать пользовательский ввод, просто вызвав метод: br.readLine().

Давайте добавим это к нашей задаче? Мы также добавим некоторые дополнительные данные, такие как список изменений markdown, и сделаем имя версии отличным от семантического номера управления версиями.

import com.modrinth.minotaur.TaskModrinthUpload
 
task publishModrinth (type: TaskModrinthUpload) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Введите токен доступа к Github: ");
    token = br.readLine(); // Получите токен доступа GitHub, который вы получили из основной части этого урока.
    projectId = "" // Введите свой идентификатор мода modrinth здесь.
    System.out.println("Введите номер версии:");
    versionNumber = br.readLine();
    System.out.println("Введите название версии:");
    versionName = br.readLine();
    uploadFile = remapJar // Это ссылка на задачу, которая создает ваш mod jar и устанавливает "uploadFile" в mod jar.
    System.out.println("Введите версию игры: (См. Документы minotaur для valids)");
    addGameVersion(br.readLine());
    System.out.println("Введите список изменений:");
    changelog = br.readLine();
    addLoader("fabric")
}

Теперь, когда запускается gradle publishModrinth, он просит вас ввести данные. Черт возьми, вы могли бы даже зайти так далеко, чтобы использовать Swing или JavaFX для создания графического интерфейса!

Minotaur великолепен рядом с CurseGradle. Вы можете объединить обе задачи вместе. Вызов вашей задачи CurseGradle после завершения Modrinth:

task publishModrinth (type: TaskModrinthUpload) {
    // ... Modrinth загружает материал
    curseforge<id> // Начните задание cursegradle, с заменой идентификатора с идентификатором, который был установлен на cursegradle конфигурации.
}