Repository navigation
v0.2.0(2026-10-05)
模型模块铺开到 15 个目标(1.7.10 → 26.1.2),顺带把一串实机故障的根因挖干净。
1.6.4 冻结:forge-1.6.4 从 0.2.x 之后停止更新,维持现状的最后一批兼容,不再进新特性;模型模块的铺开面是 1.7.10 → 26.1.2 共 15 个目标,1.6.4 不在其中。共用层的回归修复仍会带上,但那不算新特性。
模型模块:15 目标全覆盖
- 骨骼模型换实体:bbmodel / geo.json / obj 三种格式同一套 IR,烘焙带缓存。注入点按代分开写——1.20.1~1.21.8 挂
LivingEntityRenderer.render的 HEAD,1.21.11 起挂 submit / extractRenderState 管线,Legacy 挂RendererLivingEntity/RenderLivingBase/LivingRenderer。 - 规则键认全:
match/matchName/match_name都归一到名字匹配,entity:加§前缀或contains: true也算按名字查,match: "Type:minecraft:creeper"这种带前缀的写法按类型拆。此前这三个键会留在条件表里而求值只认 type/name,存量配置永远不命中——表现就是「规则写了却完全没反应,原版模型照常渲染」。 - 模型资产两处根目录都扫:
OpenDreamCore/assets/model/与resourcepacks/OpenDreamCore/,裸文件名(path: 刺锤.bbmodel)和带目录都认。EntityModel.yml/ItemModel.yml的模板改成带真示例(原来只有注释,看着像能配其实配了也不动)。 - 物品模型替换补上手持与世界掉落物两个视角,1.21.11 / 26.1.2 走各自管线的提交点。
表达式:Legacy 补齐元素属性层
老版本的血条宽度写 2 * health_ratio 不伸缩——求值器其实一直有(DreamLang),但只用于页布局和实体缩放,元素属性那条路只认字面量,表达式解析失败直接退化成 0。现在 Painters.num 改为表达式感知并挂作用域栈,1.7.10 / 1.12.2 / 1.16.5 与现代 12 目标语义一致。
血条矩形画不出来(两层根因)
- 纯色矩形用
POSITION_COLOR(无 UV)在世界渲染管线里整批不可见:文字和图片正常,因为它们走贴图路径。纯色矩形现在也走贴图格式 + 白纹理 + 贴图着色器,白纹理任意 UV 都是白,颜色全靠顶点色。 CompatBuffer.usable()在懒初始化之前判断:ensureBb()是第一次加顶点才建缓冲,而检查发生在begin()之后,于是每帧都判「批次不可用」→ 矩形整段被跳过 → 血条底和前景永远画不出来。改成先ensureBb()再判断。
卡顿
CompatBuffer.captureCreator()每帧几十次new Throwable().getStackTrace()并立即拼字符串,只为记一条诊断信息。改为诊断开关打开时才做。DreamLang.parse()每次求值都重建词法/语法分析器。渲染热路径是「节点数 × 实体数 × 每帧」量级,同一句表达式被反复解析几百次。现在缓存表达式 → 语法树(语法树只读,跨作用域复用安全),封顶 512 条,并加测试盯住「换作用域结果必须跟着变」。- 纯色矩形合并成整批多顶点提交,不再一个矩形一个批次。