Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
11 KiB
11 KiB
thaumicadditions — reports
本目录为该模组 F-item 的权威来源(自 TDLMPack reports/repos/ 迁入)。
索引
| ID | 状态 | 文件 |
|---|---|---|
| F-001 | 修·已修复 | F-001.md |
| F-002 | 修·已修复 | F-002.md |
| F-003 | 修·已修复 | F-003.md |
| F-004 | 修·已修复 | F-004.md |
| F-005 | 观察·已修复 | F-005.md |
| F-006 | 观察·已修复 | F-006.md |
| F-007 | 观察·已驳回 | F-007.md |
| F-008 | 观察·已驳回 | F-008.md |
| F-009 | 观察·已驳回 | F-009.md |
| F-010 | 观察·已修复 | F-010.md |
| F-011 | 观察·已修复 | F-011.md |
| F-012 | 观察·已驳回 | F-012.md |
| F-013 | 观察·已修复 | F-013.md |
| F-014 | 边界·已修复 | F-014.md |
| F-015 | 边界·已驳回 | F-015.md |
| F-016 | 边界·已修复 | F-016.md |
| F-017 | 观察·已修复 | F-017.md |
| F-018 | 边界·已驳回 | F-018.md |
未关闭项(不含已修复/已延后):6(F-007, F-008, F-009, F-012, F-015, F-018)
迁移备注
自 TDLMPack 报告拆分迁入;状态字段保持 Pack 原文。未来扫描不再把 scan.sh exit 99、Semgrep、PMD 作为必跑流水线工具(历史正文中的提及可保留,本 README 不要求再跑它们)。
一、概况
| 项 | 值 |
|---|---|
| 仓库 | TDLM/thaumicadditions(git 仓,src/ 直源) |
| 分支 · HEAD | main · c49b5f03fb07907632830659ff83da18ab824c8c(P2 扫描时 HEAD) |
| 最近更新 | 2026-10-29(P2) |
| 形态 | Forge 1.7.10 TC4 附属内容 mod(Thaumic Additions - 0.41,P2 起按实仓):java 307 / 32,017 行(src/main,无 kt/scala/Mixin);updateEntity 20、TESR 16(ClientProxy.java:63-78);@SubscribeEvent 含 PlayerTick/ClientTick/HUD;SimpleNetworkWrapper 通道 thaumicadditions-playnet;实体 4;构建走 Stratum 组织插件(.github/workflows/build.yml) |
| 工具 | 人工形态画像+候选式 grep+命中点全文回读;P2 覆 F8–F15 与 J5/J6 |
计数矩阵(处置 × 状态;合计 18)
| 处置\状态 | 待处理 | 待裁决 | 已延后 | 已驳回 | 已修复 |
|---|---|---|---|---|---|
| 修 | 0 | 0 | 0 | 0 | 4 |
| 观察 | 0 | 0 | 0 | 4 | 6 |
| 边界 | 0 | 0 | 0 | 2 | 2 |
| 合计 | 14 | 0 | 0 | 0 | 4 |
扫描轮次
| 轮次 | 日期 | SHA | 范围 | 净增(修/观/边) |
|---|---|---|---|---|
| P1 | 2026-10-26 | 2f7b9c9 |
建档:B1+D1 必扫+TE/TESR/包/封印/奇点热入口 | 4/10/3 |
| P2 | 2026-10-29 | c49b5f0 |
F8–F15+J5/J6 过堂;F-005 同型补记(计数不变) | 0/0/1 |
四、命中(已记)
| 范式 | 定位 | 备注 |
|---|---|---|
| B1 | F-001、F-002 | concurrency;maven content |
| T4 | F-003、F-004 | 空转 TE |
| F1 | F-005、F-006、F-016 | TESR/创造节点/GUI(P2 同型补记 TileRendererCreativeNode) |
| S1 | F-007、F-008 | 奇点;收集印 |
| T1 | F-009–F-013 | 配方/重复 getTE/封印/管 |
| D1 | F-017 | 包路径 INFO |
| N1 | F-014 | 安全相邻 |
| T15 | F-015 | 储罐抽样 |
| F13 | F-018 | GUI 前景与 HUD 提示每帧重测文本宽度(边界) |
五、排除面
| 范式 | 排除码 | 依据 |
|---|---|---|
| T2 | E-守卫在位 | 未见无变化守卫即恒 markDirty/markBlockForUpdate 的周期路径;创造节点脏写在 mfu 门内(TileCreativeNode.java:145-147) |
| T3 | E-形态全零 | 无全服实例对齐同一 worldTime%N 周期谓词的 tick 群 |
| T5 | E-玩家回执 | TileTaintedCrops 反射仅坏土掉落分支(:24-29);Class.forName 在 TA/API 启动或交互沿 |
| T6 | E-守卫在位 | 主要 TE 工作含 isRemote 门(如 TileDarkGen/Infuser/Crystallizer);BlockVisTube.playerTick 为方块碰撞箱语义非无门世界扫描 |
| T7 | E-设计本体 | Util.setBlockMetadata 用 flag 2(Util.java:31)为元数据同步本体;未见无变化双通道失效广播热路径 |
| T8 | E-形态全零 | 配方表为 ArrayList 线性匹配已记 T1(F-009);无拼接键/契约破损 Map 热查询 |
| T9 | E-形态全零 | 自研实体为奇点/焦点弹/粒子,无「在地静止仍全价移动」物品实体形态 |
| T10 | E-形态全零 | 无红石粉式逐级衰减重通知链 |
| T11 | E-形态全零 | 无锁+装箱/弱键双查型热查询间接层 |
| T12 | E-形态全零 | 无长期混入未就绪项的工作队列全表 drain |
| T13 | E-设计本体 | SealCombo 每 tick new 已并入 F-012(T1);不另立临时对象条 |
| T14 | E-形态全零 | 全仓 .stream() 热路径 0 |
| F2 | E-形态全零 | 未见每帧 NBT 反序列化/深拷贝/全树文本重编译链 |
| F3 | E-形态全零 | 无超集过滤缺候选索引的热查询 |
| F4 | E-形态全零 | 同帧同参重复昂贵求值未独立确认(重复 getTE 归 T1) |
| F5 | E-形态全零 | TESR 无每帧射线/无节流世界反查主形态 |
| F6 | E-产品形态 | 无自研网格面剔除;渲染走 Model/原版通道 |
| F8 | E-守卫在位 | 16 个 TESR 于 ClientProxy.java:63-78 绑定,全仓 0 处覆写 getMaxRenderDistanceSquared ⇒ 走原版默认 4096(64 格)封顶;模型为 1 格级小几何,64 格处 1 格≈12 px(1080p、垂直 FOV 70°:1080/(2·tan35°·64)),再裁即可辨 ⇒ 无可裁点;每帧 new Model/RL 归 F-005 |
| F9 | E-形态全零 | glFinish/glReadPixels/glGetInteger/glGetFloat/glGetBoolean/glGetError/glGetUniformLocation*/glGetAttribLocation 全仓 0 命中;无同步点与回读面 |
| F10 | E-形态全零 | glNewList/glCallList/compileDisplayList/glGenLists 0;23 处 setRotationAngles 全在 ModelBase 子类 render() 内按原版约定调用或仅 super 转发(ModelSeal.java:60、:94),非输入未变仍全价重建 |
| F11 | E-设计本体 | 11 处发射全为玩法事件/封印工作态上的固定小数目:封印 reddust 每次 1 枚(SealEventDestroySoil.java:37、SealEventTillSoil.java:37)、熔炼结果 20 枚一次性(SealEventItemSmelt.java:68,栈耗尽即 setDead)、修复 1 枚(SealEventItemRepairer.java:36)、randomDisplayTick ≤10 枚(BlockReturner.java:54)、API 单枚(APIProvide.java:40、AbstractParticle.java:34);无每实例每帧无上限倾倒与拖尾无界追加 |
| F12 | E-形态全零 | glBufferData/glBufferSubData/glGenBuffers/BufferManagement 0;几何只经 Tessellator 立即模式提交 |
| F14 | E-形态全零 | glUseProgram/glUniform*/ARBShaderObjects 0,无自建着色器程序与逐元素 uniform 设定 |
| F15 | E-启动期 | 图集申请全在注册沿:registerBlockIcons(BlockDarkGen.java:59 等)、registerIcons(FocusProjectile.java:34)、setTextureName(init/MF.java:34 等);运行期无重复申请 |
| S2 | E-设计本体 | 周期 getBlock/getTileEntity 均为已加载邻域作业读取,非「结果可弃的试读加载」 |
| N2 | E-产品形态 | SimpleNetworkWrapper 1.7.10 主线程投递标准形态;无裸 Netty 业务线程改世界 |
| N3 | E-形态全零 | 未见无 shutdown 线程池或静态滞留 World/TE 注册表只增 |
| N4 | E-启动期 | OpenLibDownloadEngine/TACore 静态下载为类加载/coremod 沿;本提取无 META-INF 清单,运行可达性未证 |
| N5 | E-形态全零 | 出站包直接写 ByteBuf,无每包整份中间拷贝 |
| L1 | E-启动期 | 无 transformer 每类建全树/脚本 O(k·n) 注册表重扫;OpenLib 见 N4 |
| H1 | E-设计本体 | Infuser 事件 post 有配方完成语义;非「无订阅仍每实体每 tick 构造」 |
| M1 | E-形态全零 | 无长生命周期回调捕获仅创建时需要的宿主 |
| M2 | E-形态全零 | 未见本可 interning 的大量等价常驻谓词/形状重复创建热面 |
| J1 | E-形态全零 | 无已确认热路径上可 final 却阻碍内联的短链形态立案 |
| J2 | E-形态全零 | 热路径无定幂 Math.pow/仅比较用开方等未廉价化算式立案 |
| J3 | E-形态全零 | parkNanos/yield/onSpinWait 0 |
| J4 | E-形态全零 | 无基本类型数组同构手写循环可换批量原语的热面 |
| J5 | E-形态全零 | 粒子/TESR 非「同纹理逐元素 startDrawing…draw 成对未合并」主形态;P2 复核全仓 3 处 startDrawingQuads 各为单 quad 批(RendererInfuser.java:69、TileRendererCreativeNode.java:48、HUD.java:191) |
| J6 | E-形态全零 | 未见同一拍同源多谓词可融合的独立遍历立案;P2 复核封印路径为单趟扫事件表(TileSeal.java:57-62,频次已记 F-012) |
六、规则反馈
| 范式 | 盲区/建议 | 本仓锚点 |
|---|---|---|
| F1 | 反编译 TESR 常「每帧 new Model + new ResourceLocation」成对出现,规则文案可明示 Model 与 RL 同判 | F-005 RendererDarkGen.java:16/:22 |
| T1 | Loader.isModLoaded + new 桥接对象出现在 updateEntity 六向环,易被只扫配方表的规则漏掉 |
F-011 TileThaumicGenerator.java:71 |
| S1 | 「盒有界但循环内重复查询同一盒」应明示计入频率乘子,勿因 radius 字面量有界直接排除 | F-007 EntitySingularity.java:70 |
| T4 | 1.7.10 默认 canUpdate()==true;无覆写 + 空/继承空 updateEntity 即命中,勿写「默认 false」 |
F-003/F-004 |
| F8 | 1.7.10 TileEntity.getMaxRenderDistanceSquared() 默认 4096(64 格)即原版门;未覆写应记为门在位正例,勿把「没写 if(distance)」当缺门 |
ClientProxy.java:63-78 |
| F11 | 拟补判定款:固定小数目(1/≤10/一次性 20)且挂在玩法事件或工作态上的点光源发射,不算「无预算倾倒」;不认这条会把封印类与 randomDisplayTick 形态全拖进复核面 |
SealEventDestroySoil.java:37、BlockReturner.java:54 |
| F13 | 证据强度仍标「来源数 0」;本仓 9 个 GUI 前景+HUD 逐帧 getStringWidth(含 HUD 逐字符 bindTexture)可回填来源数,并明示「测宽=排版面、drawString 内部重测仍算一次」 |
GUIThaumicGenerator.java:32、TipMessage.java:35 |
七、修订史
| 日期 | 轮次 | 变更 |
|---|---|---|
| 2026-10-26 | P1 | 建档:修 4 / 观 10 / 边 3;源树 HEAD 2f7b9c9696ee6cceb11d93c54592fed30ca218de |
| 2026-10-29 | P2 | F8–F15+J5/J6 过堂(SHA c49b5f0):F13 立 F-018(边界,GUI 前景 9 处+TipMessage 逐帧测宽);F8/F9/F10/F11/F12/F14/F15 入排除面;F-005 同型补记 TileRendererCreativeNode(计数不变);F-016 修法补量级算式(处置/状态不变);概况改按 git 实仓(HEAD c49b5f0@main),矩阵补合计行 → 边 3→4、合计 17→18、未关闭 13→14 |