This is an old revision of the document!
Table of Contents
使用 Minotaur 在 Modrinth 上发布模组
Minotaur 是一个和 CurseGradle 很相似的 Gradle 插件。 这个页面只是简单的介绍一下 Minotaur 的基础用法,然后你需要在它的文档中学习更加深入的知识。
基础
在此之前,添加 minotaur 插件到你的 build.gradle
文件的插件列表当中,像是以下这样:
plugins { id "com.modrinth.minotaur" version "1.2.1" }
现在你可以创建一个新的 Gradle 任务去发布你的模组到 Modrinth 了。
这里有一个基础的示例。
import com.modrinth.minotaur.TaskModrinthUpload task publishModrinth (type: TaskModrinthUpload) { token = 'mySecretToken' // 如果你想通过 Github 发布你的模组的话,请在这里使用环境配置! projectId = 'modrinthModID' // 你的 modrinth 项目的 ID,错误的话 minotaur 会不起作用。 versionNumber = '1.0.0' // 上传模组的版本。 uploadFile = remapJar // 这链接到一个构建你的 mod jar的任务,并将 "uploadFile "设置为 mod jar。 addGameVersion('1.16.2') // 任何可行的 minecraft 版本。 addLoader('fabric') // 可以为 fabric 或者 forge 。Modrinth 以后会支持 liteloader 和 rift 。 }
从这里获得你的 Modrinth token。你可以通过这个token获得权限使用 Modrinth API 通过 Minotaur 上传文件。
现在,当你运行gradle publishModrinth
时,你应该看到你的 mod 已经被编译并上传到 Modrinth ,像是这样:
但是,这可能会受到限制,有时会重复上传,因为每次要发布版本时都需要编辑这些值。
这便是 Java stout
和 stin
的用武之地了。
让我们更加深入一些!
好了,你现在有了一个很基本的实现。我们来让他更加的符合实际需求,允许你在任务运行的时候通过命令行输入值。一般情况下这些是不足以让 Gradle 完成任务的,我们需要搭配诸如环境变量,静态数据等相似的内容。但是这份手册会留给学习者思考的空间,因此我们不会介绍太深入。
首先,我们需要创建一个 BufferedReader
。为什么是 BufferedReader
而不是 System.out.readLine()
?因为 System.out.readLine()
仅适用于命令终端,不适用于普通 IDE 的终端,例如 Eclipse、IntelliJ Idea 和 Visual Studio Code。由于 Gradle 任务最常在 IDE 中运行,因此最好使用 BufferedReader
,因为它支持 IDE 的终端。
在你的 Modrinth 任务的顶部添加一个新的 BufferedReader
,它为 System.in
产生一个缓冲区。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
现在你可以通过简单的调用 br.readLine()
方法来收集用户的输入了。
让我们把这个添加到我们的任务中,然后我们还将向里面添加更多的数据,比如 markdown changelog ,并使版本名称与语义版本号不同。
import com.modrinth.minotaur.TaskModrinthUpload task publishModrinth (type: TaskModrinthUpload) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter a Github Access Token: "); token = br.readLine(); // 获取你在本教程的基础部分得到的GitHub访问令牌。 projectId = "" // 在此输入你的modrinth mod ID。 System.out.println("Enter the version number:"); versionNumber = br.readLine(); System.out.println("Enter the version name:"); versionName = br.readLine(); uploadFile = remapJar // 这链接到一个构建你的 mod jar 文件的任务,并将 "uploadFile" 设置为 mod jar。 System.out.println("Enter the game version number: (See minotaur docs for valids)"); addGameVersion(br.readLine()); System.out.println("Enter changelog:"); changelog = br.readLine(); addLoader("fabric") }
现在,当运行 gradle publishModrinth
时,它会要求你提供一些贴心的用户输入。你甚至可以使用 Swing 或 JavaFX 来制作 GUI。真是炫酷无比!
Minotaur 与 CurseGradle 一起使用是很常见的现象。你可以将这两个任务合并在一起。在 Modrinth 完成后调用 CurseGradle 任务:
task publishModrinth (type: TaskModrinthUpload) { // ... Modrinth 的上传工作 curseforge<id> // 开始执行 cursegradle 任务。用你在 cursegradle 配置中设置的 ID 替换 id。 }