= 创作分享 =
编程开发
一个相当疯狂的想法:多版本polyfill
23Xor

一个相当疯狂的想法:多版本polyfill

23Xor 于 2024-2-21 20:51 ( 2月前 ) [复制链接] [只看楼主] [打印]
236 0
迁移某些mod的时候发现主要就是改名。这个类改了个包名,那个方法改了个名,于是mod就得跟着改。
在java中这种更改太细,难以拆分出来,就导致一些mod自身的版本只能被MC版本拉着走,低MC版本事实上是能兼容高mod版本的功能的,但是没人有时间移植。
然而,Kotlin中有“类型别名”和“扩展方法”,依赖这两个语言特性,就能将这些“改名”剥离出来,让功能代码无需改变即可适配不同版本。
当然,这种方法和“抽象层”还是有区别的:“抽象层”是要保证对所有MC版本都有完全相同的接口可用,polyfill则是秉持一个“能用就行”,MC没改就不用fill。
而且polyfill能达到的仅是“源码兼容”,因为“类型别名”和“扩展方法”都是Kotlin的编译器特性。实现的并不是“一个jar通吃所有版本”,而是“一套核心代码对一系列MC版本可以编译”。具体来说是核心代码单放一个文件夹,然后符号链接到各个版本的文件夹中。

用了个简单mod试验了一下,感觉还行:https://github.com/TsXor/Better-Durability/tree/allver


发表于 2024-2-21 20:51:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

回复 | 举报

该帖共收到 0 条回复!
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表