Skip to content

OpenDreamCore v0.2.0

Latest

Choose a tag to compare

@AxonCog AxonCog released this 06 Oct 11:34
· 2 commits to master since this release

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 条,并加测试盯住「换作用域结果必须跟着变」。
  • 纯色矩形合并成整批多顶点提交,不再一个矩形一个批次。