文章

Modrinth启动器使用感受

用了一段时间Modrinth启动器之后的感受记录,包括启动器优缺点总结、目录更改和Launch Hooks的使用教程

Modrinth启动器使用感受

写在前面:我只用过HMCL、PCL、Modrinth启动器,启动器功能使用不多,本文没有任何推荐意义。

起因

之前看了庄主推荐的Modrinth启动器1视频链接),亲自下载体验之后我有一些感受,也做了一些蠢事,在此一并予以记录。

我主要是奔着Modrinth启动器能够自动安装前置来的,毕竟其他功能我确实也不太需要或者从未使用过。尽管我一直都是上网下载模组,然后拖入mods文件夹,不过在看到Modrinth启动器可以自动安装前置模组之后,我果断地放下我以前一直使用的HMCL启动器,来试一试这款新启动器。

使用感受

整体感受

首先有关我整体的使用感受,我只能说超级赞的好吧👍👍👍,完美地满足了我的需求,自动安装前置可太舒服了!舒服到以至于我这种懒狗都不去看CurseForge上有没有模组了,即使Modrinth没有对应的模组,我都懒得去其他地方下载再拖进来🤣🤣🤣。

不过Modrinth启动器还是有缺点的,但是和我来的主要需求对比,我觉得完全可以接受。总的来说,100分满分的话,我给Modrinth打90分,我很喜欢这个启动器。

优点

首先说启动器优点

第一当然是最吸引我的——自动安装前置,这基本上避免了忘记安装前置,然后游戏报错无法启动的问题。说基本上是因为我仍然遇到了一次因为缺乏前置而启动失败。不过那一次是因为那个模组的前置Modrinth上没有(启动器较大的缺点之一,后面再说),启动器无法下载这个前置,自然启动就失败了。

其次是安装模组不需要仔细查看模组加载器版本、游戏版本、模组版本,这些在你搜索模组时就自动设置过滤了,不是你的加载器的、游戏版本不对的模组自动就被筛选掉了(不是强制的,你可以删除这些过滤)。为此我还把我的模组也放到Modrinth上了。

启动游戏时可以直接进入对应存档,避免明明只有一个档,但是还要在主界面操作的麻烦了。(不过这一功能有坏处,后面会讲

日志看起来很舒服,可以设置过滤,终于不用在一堆英文里翻找了,不用AI也可以方便定位到错误了。🎉🎉🎉 Logs.png

其实这个功能很不错,其他启动器我还没有看到过。Modrinth启动器允许你在游戏启动、启动后、关闭后自动允许一段脚本程序。 是的,你可以自动运行脚本程序,而这就是Launch Hooks功能(如何使用下文会有介绍)。

和前面类似都是在游戏之外的自动化方面,Modrinth还允许添加临时环境变量和Java运行参数。而且和Launch Hooks一样分全局、实例级别(下文有介绍)。

界面简洁优雅

缺点

Modrinth有那么多优点,但是它仍然有许多缺点

第一个缺点肯定是不能下载CurseForge模组,当然这也自然,毕竟是Modrinth平台的启动器,是能够理解的,尽管这确实带来了不便。

针对第三条优点有一个比较大的缺点,那就是虽然它可以进入对应的世界,但是你进去之后不管你当时是不是焦点在游戏上还是在其他程序上(就是说不管你当时十分在盯着游戏还是在干别的事情)它都不会自动暂停,游戏会保持运行,而且你的鼠标也会限制在游戏界面的范围内,而不能移动出去(即使你有可能那时根本看不到游戏界面),而其他启动器则会自动暂停游戏。

存档默认存放地址在C盘,而不是你选择的安装目录下,不管好在可以手动更改目录(方法下文有)。

Modrinth启动器的文件格式与PCL、HMCL、Mojang启动器不同,从而存档和整合包不能方便地导入导出,不过听说国外启动器都是用的这样的全新的文件格式,所以也不奇怪了。

这一点我觉得也不太算是缺点,而且我也没有去验证,这一条是听别人说的,使用Modrinth启动器需要正版账号,具体是不是缺点还请各位自行定夺🤔。反正我有正版账号😜

千万不要随意地更改文件夹的名字(比如将实例文件夹名字从A改成B),Modrinth的程序有的“认死理”,你更改了名字之后程序仍然会尝试去找名为A的文件夹,然后再找存档等等。可能你会觉得没什么,毕竟不认识是很正常的,总不能改名为B之后在软件里看不到名叫B的游戏实例吧~(我既然说出这件事了,你就知道,确实不会😓,软件找不到A,但是也不会识别到B的存在)

设置

除了使用感受,一些我觉得值得更改的基础设置也很重要,我将它们罗列于此,并附上操作方法。这些设置都比较重要,或者设置之后十分舒服,为了方便我和其他使用者,我对其进行了总结。(阅读下面教程之前请看这个注释2

Launch Hooks

我觉得Launch Hooks是一个很好的功能,可以用来完成许多自动化操作,比如你可以将投影文件放到一个集中的文件夹,然后在游戏启动之前自动地拷贝所有文件到投影文件夹下。2

首先Launch Hooks有全局和实例类型,两者大差不差,只不过一个是全局设置,另一个是仅针对这个实例的设置(会覆盖全局设置),不过使用方法基本上是一样的,区别仅在于激活时间不同、作用不同,但是具体激活时间软件都有写,不过在此我还是简要说一下。

全局设置:

  1. Pre launch:
    在游戏启动之前工作,工作完成后再启动游戏。
  2. Wrapper:
    你打包好的启动游戏的命令,你需要负责用此启动游戏,如果你自己不启动,Modrinth也不会启动一个游戏。
  3. Post exit:
    游戏退出之后执行,可用于保存世界等。

本文最后也利用这个接口写了一个小工具统一管理投影文件,感兴趣的读者可以去看看。不过那里使用的是.bat批处理文件,而实际上Launch Hooks相当于执行一个命令,可以运行任何代码,包括CJavaJavaScriptPython等等。

更改数据存放目录

首先附上官方教程3,接下来是操作方法和我踩的一些坑。2

Modrinth启动器的默认存放目录是在%AppData%\ModrinthApp\目录下,这个目录一般是在C盘下,尽管这个目录是可以更改的,不管一般没有人改过吧~ 众所周知,C盘空间是不够的,所以我们来更改一下对应的文件夹。

首先点击左下角的设置图标,然后点击Resource Management,然后在App directory里就是存放数据的目录,更改这个目录到你想要的存放地址就可以了。

设置过程已经讲完了,是很简单的,都是这里有一个坑点,我觉得有必要提一下:千万不用自作聪明地去挪动%AppData%\ModrinthApp\里的文件,尤其是你之前有存档的情况下,因为即使你更改了存放文件夹,这些已经缓存了的数据都仍然会存放在原来的位置,如果你像我一样自作主张地剪切所有文件到更改后的文件夹下,软件不会理你,它不会识别这些你挪过去的文件夹,它仍然会去%AppData%\ModrinthApp\里找对应的文件,只有新安装的实例才会安装在新的文件夹下,如果你想把旧的实例迁移过去,我的建议是复制一个实例(找到Duplicate instance,启动器会自动完成操作的),这个新实例会安装到新的文件夹中去。

这个警告各位一定要注意,我就差点因此损失了我的存档,最后还是运气爆棚才最终找回了,希望各位不要遇上这种情况。

教程

使用Launch Hooks统一管理不同版本的投影文件

不同版本间投影文件的管理总是令人感到麻烦,版本隔离之后,在不同版本之间来回拷贝同一份文件是十分麻烦的,下面我们来使用Launch Hooks运行一个小程序帮助我们从投影文件的总仓库自动拷贝文件到不同版本下,并在游戏结束时将投影文件拷贝回仓库(保证任何版本只要更改了投影文件都能即使同步到总仓库)

假设我将我的全部投影文件存放在D:\Modrinth\Resourcesschematics(生电玩家是这样的) ,然后我需要每次启动之前都将这些文件拷贝到当前的实例下。为此我们来编写一个简单的批处理文件(.bat)帮助我们完成这个功能(保姆向)。

如果读者不会怎么写.bat文件,可以先在桌面创建一个.txt文本文件,将代码正常写进去,最后更改后缀名为.bat即可(看不到后缀名的读者可以上网搜索一下如何让文件显示后缀名)

首先,我们得让Modrinth知道如何调用我们的批处理文件,我们需要先在Modrinth里进行设置,如下:

  1. 点击Resource Management
  2. Default instance options下找到Pre launch 在框里填写D:\Modrinth\Resources\copy_out.bat,这样所有游戏启动之后就会相当于在命令行(cmd)中运行命令D:\Modrinth\Resources\copy_out.bat。当然这里是进行的全局设置,如果你只需要针对某一个实例,你就只在那一个实例下设置就好了,方法完全是一样的。

读者的投影文件夹大概率不是D:\Modrinth\Resources,但是更改并不困难,读者只需要将所有过程中写的D:\Modrinth\Resources都替换为你的路径就好,这包括Modrinth和后面的代码。如果读者不知道怎么写路径,也很简单,打开对应的文件夹,鼠标移动到文件夹路径框中,左键,如何复制那一串路径就好,如图: 文件夹路径.png如何得到文件夹路径

给不懂技术的读者科普一下,懂的读者可以跳过,D:\Modrinth\Resources\copy_out.bat命令就是执行D:\Modrinth\Resources文件夹下的copy_out.bat文件定义的命令。而这个copy_out.bat就是我们最后写完得到的文件的名字,它当然可以不放在D:\Modrinth\Resources文件夹下,只不过如果这样,考虑到我后面的代码使用相对路径找投影文件夹schematics的代码改起来麻烦,因而仍然建议读者将copy_out.bat文件和schematics文件夹都放在D:\Modrinth\Resources文件夹下

然后,我们写下如下代码(::号后面部分是注释,可以不写在你的文件里)

1
2
3
4
5
6
7
8
9
@echo off :: 关闭命令回显,让界面更清晰好看

set Resources=D:\Modrinth\Resources
:: 以后如果更改了文件夹位置,就只需要更改Modrinth中的D:\Modrinth\Resources\copy_out.bat和这里就好了

set Log=%Resources%\log.txt
echo "%DATE%-%TIME%运行,从总仓库导出投影文件到游戏" > %Log%
echo "资源文件夹目录: %Resources%" >> %Log%
:: 日志相关

看到Resources环境变量,有技术力的读者可能想到使用Modrinth添加临时环境变量,这样就只需要更改一个地方了。我也想到了,可惜并不行,Modrinth添加的临时环境变量只作用于游戏进程,因而我们的钩子是获取不了这些值的,故而只能多增加一个需要更改的地方了。

做完了准备工作,接下来的代码就和复制文件相关了。(技术解释,不懂的读者可以直接抄代码)首先,我们要明确copy_out.bat的工作目录,经测试,copy_out.bat的工作目录在你Modrinth缓存数据文件夹下,所以可以使用.\schematics就可以访问当前版本的投影文件夹。

然后写如下代码:

1
2
3
4
5
6
7
8
9
xcopy %Resources%\schematics .\schematics /E /Y /C
:: 将文件复制到游戏文件夹下

if errorlevel 1 ( :: 检测复制是否成功
    echo "错误!文件复制失败! Error level: %errorlevel%" >> %Log%
    goto :END
)
echo "文件导入成功!" >> %Log%
:END

完成后,确保文件后缀名是.bat,并放在对应文件夹下(D:\Modrinth\Resources\),就可以自动导出投影文件到游戏中了,总结全部代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set Resources=D:\Modrinth\Resources
set Log=%Resources%\log.txt
echo "%DATE%-%TIME%运行,从总仓库导出投影文件到游戏" > %Log%
echo "资源文件夹目录: %Resources%" >> %Log%
xcopy %Resources%\schematics .\schematics /E /Y /C
if errorlevel 1 (
    echo "错误!文件复制失败! Error level: %errorlevel%" >> %Log%
    goto :END
)
echo "文件导入成功!" >> %Log%
:END

同样的方法,我还在Post exit中写了D:\Modrinth\Resources\copy_back.bat,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set Resources=D:\Modrinth\Resources
set Log=%Resources%\log.txt
echo "%DATE%-%TIME%运行,从游戏保存投影文件到总仓库" > %Log%
echo "资源文件夹目录: %Resources%" >> %Log%
xcopy .\schematics %Resources%\schematics /E /Y /C
if errorlevel 1 (
    echo "错误!文件复制失败! Error level: %errorlevel%" >> %Log%
    goto :END
)
echo "文件导入成功!" >> %Log%
:END

用于保存游戏完成后的投影文件,将可能更改了的投影文件及时保存到总仓库内。

  1. 下载链接,软件主要是英文版本,尽管也有中文的翻译版本,链接:MineBBS Github,不过我使用的是英文版本,教程也是英文版本的 ↩︎

  2. 我是Windows电脑,全部的也都是基于Windows的,不同的操作系统不完全一样,比如Mac和Linux就没有批处理文件.bat ↩︎ ↩︎2 ↩︎3

  3. 官方教程链接 ↩︎

本文由作者按照 CC BY 4.0 进行授权