Files
thaumicadditions/reports/README.md
T
2026-10-31 21:42:27 +08:00

11 KiB
Raw Blame History

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