检查项
您是什么类型的用户
其他
请简单的说一下您的想法
允许整合包定义一串需要在游戏启动前运行一次的命令(通过当前系统的 Shell,或者说 exec 执行),并随整合包一并导出。
它能解决什么样的问题/带来什么样的帮助
以 Packwiz-Installer 为代表的一些整合包制作工具提供了基于 MultiMC 的 Pre-Launch Command 实现的整合包自动更新机制,以实现「每次启动游戏时,整合包内容即自动获得更新」。
若能实现该功能,整合包自动更新便可不依赖于特定的启动器而实现,由此给予用户更大的自主权,同时方便任何有「需要短时间内快速更新整合包内容」的服主无需为此自制启动器或相关基础设施。
期望的结果
在「MCBBS 整合包格式」中允许定义一可选新字段,名称待定,其内容为当前操作系统可执行的一串命令。启动器在读取到该字段后,会在每次启动游戏前尝试执行该命令。
命令的执行可以以 Java SE 标准库中的 java.lang.ProcessBuilder 为参考标准。
命令执行时,应以环境变量(Environmental Variable)或其他形式提供一些实用信息,包括但不限于
- 当前整合包所用 Java 运行时入口程序的绝对路径
- 当前整合包的游戏目录,即所谓的
.minecraft 目录,或者说 gameDir
- 当前整合包的名字
考虑到以 java.lang.ProcessBuilder 为标准的话,未必会有各种主流 Shell 支持的环境变量展开,有必要明确一套「展开占位符」的约定。
是否有对这个方案的相关链接?
附注
这个建议实际上源自历届 TeaCon 中出现的永恒难题:在参展 Mod 及其他相关资源每天都有更新的情况下,如何应对整合包版本的快速迭代。
我们在 TeaCon 2021 和 2022 中使用了自制的 RemoteSync 来解决这一问题。虽然成功解决了版本快速迭代问题,但我们随后在两届 TeaCon 中发现了由此引发的更多问题,并最终促使我们在 TeaCon 2023 转向 Packwiz。
我曾尝试过其他可能的解决方案,例如使用 Java Agent 搭配 JVM Arguments 来实现类似效果,但我不确定该方案是否最终在 TeaCon 2023 中实装。
利用 Java Agent 的 premain 来更新整合包的想法并非只有我尝试过:在 ModFest 主办的 BlanketCon 23 中,其展示服务器客户端便使用了 unascribed 的 unsup 来实现整合包随游戏启动自动更新,原理即 Java Agent。
抄送 @ustc-zzzz
题外话:「MCBBS 整合包格式」有没有正式的名字和文档?
检查项
您是什么类型的用户
其他
请简单的说一下您的想法
允许整合包定义一串需要在游戏启动前运行一次的命令(通过当前系统的 Shell,或者说
exec执行),并随整合包一并导出。它能解决什么样的问题/带来什么样的帮助
以 Packwiz-Installer 为代表的一些整合包制作工具提供了基于 MultiMC 的 Pre-Launch Command 实现的整合包自动更新机制,以实现「每次启动游戏时,整合包内容即自动获得更新」。
若能实现该功能,整合包自动更新便可不依赖于特定的启动器而实现,由此给予用户更大的自主权,同时方便任何有「需要短时间内快速更新整合包内容」的服主无需为此自制启动器或相关基础设施。
期望的结果
在「MCBBS 整合包格式」中允许定义一可选新字段,名称待定,其内容为当前操作系统可执行的一串命令。启动器在读取到该字段后,会在每次启动游戏前尝试执行该命令。
命令的执行可以以 Java SE 标准库中的
java.lang.ProcessBuilder为参考标准。命令执行时,应以环境变量(Environmental Variable)或其他形式提供一些实用信息,包括但不限于
.minecraft目录,或者说gameDir考虑到以
java.lang.ProcessBuilder为标准的话,未必会有各种主流 Shell 支持的环境变量展开,有必要明确一套「展开占位符」的约定。是否有对这个方案的相关链接?
附注
这个建议实际上源自历届 TeaCon 中出现的永恒难题:在参展 Mod 及其他相关资源每天都有更新的情况下,如何应对整合包版本的快速迭代。
我们在 TeaCon 2021 和 2022 中使用了自制的 RemoteSync 来解决这一问题。虽然成功解决了版本快速迭代问题,但我们随后在两届 TeaCon 中发现了由此引发的更多问题,并最终促使我们在 TeaCon 2023 转向 Packwiz。
我曾尝试过其他可能的解决方案,例如使用 Java Agent 搭配 JVM Arguments 来实现类似效果,但我不确定该方案是否最终在 TeaCon 2023 中实装。
利用 Java Agent 的
premain来更新整合包的想法并非只有我尝试过:在 ModFest 主办的 BlanketCon 23 中,其展示服务器客户端便使用了 unascribed 的unsup来实现整合包随游戏启动自动更新,原理即 Java Agent。抄送 @ustc-zzzz
题外话:「MCBBS 整合包格式」有没有正式的名字和文档?