最近有一个想法,既然暮色打算更新支持使用Forge的1.16.x的版本了,那么在开发完成后能否平行地移植一份到Fabric等平台上?反过来,Fabric平台上的一些优秀Mod(最先想到的可能就是fabric-carpet,miniHUD和tweakroo了)移植到Forge平台上一份?对于暮色森林一类的主要加入新内容的Mod,具体实现应该不算过于复杂。稍微翻了一下,尽管暮色森林的源代码目测超过了10万行,但大部分都是直接和游戏机制相关的,通过Forge提供的API与Minecraft联系的并不算多,而且可以使用类似于“机翻(修改class文件以重定向方法调用到对应的FabricAPI,如果没有则Mixin)”的方式修改。CoreMod部分,即修改MC本身代码的部分更少(似乎只有四个js与一个AssessTransformer),完全可以很快地完成修改,甚至可能不必修改,加上对应的第三方库就行了。如果发现冲突的部分,尤其是CoreMod,可以考虑与部分API共用接入点(大概就是作出修改的地方,暂且这样叫吧)或者取消部分非必要的。对于Mod文件及其元数据还有“主类”组织结构的差异,可以也安装时翻译,或建立一个中继。
对于fabric-carpet之类的以CoreMod为主的Mod,即使没有使用那么多甚至根本没有使用的API,实现起来却是比较麻烦。以此为例,其Mixin类超过了100个,接入点更多,其中有相当一部分是@Redirect(一个能小概率地造成冲突的修改MC本身代码的方式,没有@谁),而且涉及面很广。不过,还好,那些Mod的接入点大都比较冷门,而且会尽量避免与API所用部分冲突。(实际上不同API的接入点也都大同小异,避免了与本来计划使用的平台提供的冲突,别的也顺便避免地差不多了)实在不行,还是共用不就好了?
等等,如果可以实现使用一个Mod或加载器插件自动修改,那是不是...
不同加载器间Mod可以完全通用了?!
对于fabric-carpet之类的以CoreMod为主的Mod,即使没有使用那么多甚至根本没有使用的API,实现起来却是比较麻烦。以此为例,其Mixin类超过了100个,接入点更多,其中有相当一部分是@Redirect(一个能小概率地造成冲突的修改MC本身代码的方式,没有@谁),而且涉及面很广。不过,还好,那些Mod的接入点大都比较冷门,而且会尽量避免与API所用部分冲突。(实际上不同API的接入点也都大同小异,避免了与本来计划使用的平台提供的冲突,别的也顺便避免地差不多了)实在不行,还是共用不就好了?
等等,如果可以实现使用一个Mod或加载器插件自动修改,那是不是...
不同加载器间Mod可以完全通用了?!