作者声明:文章创作过程中使用了AI辅助 本文的正经风格版本:https://blog.star-dust.link/posts/note/fabric-mod-reflection-multi-version-compatibility 观前必读 ⚠️ 重要声明:阅读本文前请仔细阅读以下条款 一、虚构性...
作者声明:创作过程中使用了AI辅助 搞 Fabric 开发的小伙伴可能都遇到过一个头疼的问题:Minecraft 每个大版本更新,底层代码就像重写了一样。如果你想弄一个一套代码兼容 1.18 到 26.1+ 的模组,还不能用 Mixin,甚至编译的时候连 Minecraft 的 jar 包都引用不了,还怎么玩? 今天咱就来聊聊,在这种极端约束下,怎么纯靠反射搭起一套稳健的多版本兼容体系。 一、为什么非得用反射? MC 版本更新对底层类的重构可以说是毫不留情。举个例子,跨几个版本你会发现类名、包名全变了: | 逻辑含义 | 1.18–1.21 (Yarn 映射) |...
收到可疑邮件 最近,我收到了来自renvolve.biz的这样一封看似专业的邮件: ` Hi [我的名字], Your work weaving GLSL and TypeScript feels both precise and creatively flexible, a rare combo for a developer balancing raw graphics with clean logic. What's the most stubborn technical hurdle you're currently facing in that stack, w...
作者声明:创作过程中使用了AI辅助 以下提及的项目全部是 Minecraft 模组或插件项目。 引言 把一套 Bukkit 命令系统搬到 Fabric 时,最劝退的不是 Brigadier 本身,而是要为了一个平台把所有命令逻辑全部重写一遍的痛苦。 由于之前有给一个其他项目写多平台的经历,因为那个项目代码少所以各平台的逻辑全部重复写了很多遍,造成更新时需要修改所有平台的代码,非常痛苦,因此这次给项目做多平台兼容没有使用这种方法,而是构建了 core 和 common 桥接接口。 但在编写 Fabric 平台逻辑的时候又遇到了 Brigadier 给每个命令建节点的问题...
最近发现了一个很喜欢的博客框架Mx Space,于是准备把之前的框架换掉,由于官方文档实际上过时,中间踩了很多坑。 坑1:Docker Ccompose中健康检查调用的API版本不对 在Mx Space Core v13中,API已由v2升级为v3,但官方文档给出的命令拉到的docker-compose.yml中仍为v2,导致容器状态一直为starting。 解决方法:在docker-compose.yml中将http://127.0.0.1:2333/api/v2/ping中的v2改为v3 坑2:配置与云函数已改名 在老版本的Mx Spa...
最近找轮子时偶然读到Innel大佬的文章,颇有共鸣。在这个连思考都快被AI代劳的时代,能静下心来写点东西实属难得。这大抵是我近两年来头一回正式提笔(其实是键盘)写博客,主要想聊聊AI时代对我的影响,以及自己的心路历程。 2021年底,ChatGPT横空出世。那时的它,还受限于4096的上下文窗口,稍微长点的文档就会“失忆”,甚至不足以完成一个完整的翻译任务;写代码更是频频出错,经常一本正经地胡说八道。那时,大家只把它当成一个聪明的玩具。 又过了一年,GitHub Copilot开始公测。我申请了测试资格,头回体验到注释和代码自动补全的惊艳。但说实话,那时它更像是一个“高级自动补全”工具,充...