Skip to content

feat: 设计新的 PartAbility 通用仓 - #20

Open
MuuuShin wants to merge 1 commit into
26.8from
utility-part
Open

feat: 设计新的 PartAbility 通用仓#20
MuuuShin wants to merge 1 commit into
26.8from
utility-part

Conversation

@MuuuShin

Copy link
Copy Markdown
Contributor

背景

该 PR 是 GTM UTILITY multiblock parts API 的配套迁移,修复 GregTech-Odyssey#1809。

此前导热仓、真空接口和太空屏障仓为了兼容大多数多方块结构,会伪装成 IMPORT_ITEMSIMPORT_FLUIDS

这会使它们参与真实输入仓的数量统计。在原始蒸馏塔等限制仓室数量的机器中,导热仓可能占用输入仓配额,最终导致结构无法成型。

改动内容

  • 以下部件改为注册 PartAbility.UTILITY
    • 导热仓
    • 高级导热仓
    • 真空接口
    • 太空屏障仓
    • (GTM 里 的 机器控制仓 也一并注册进PartAbility.UTILITY)
  • 导热仓继续保留实际功能使用的 HEAT_CONDUCTION ability。
  • 移除上述部件伪造的 IMPORT_ITEMS / IMPORT_FLUIDS ability。
  • 为功能性多方块机器选择一个明确的通用部件位置,并迁移为 wherePart(...)
  • 覆盖静态 pattern、动态 pattern、蒸汽机器及共享机器注册 helper,共 314 个通用部件入口。
  • 移除旧的手写机器控制仓候选,统一由 GTM 的 UTILITY/MACHINE_CONTROL 规则处理。
  • 在存在专用导热位置的机器中 将 通用仓 中的 导热仓 排除

明确不启用的结构

以下结构继续使用普通 where(...),不会自动接纳 UTILITY 部件:

  • 纯储存结构和多方块储罐
  • 固定仪式或召唤结构
  • 太空站停靠口及固定连接模块
  • 只能放置专用部件的位置
  • addSubPattern(...) 附属结构

行为变化

  • 导热仓不再占用物品/流体输入仓配额。
  • 真空接口和太空屏障仓不再被识别为常规输入仓。
  • 机器控制仓仍是 UTILITY 部件,并继续保持每台机器最多 1 个。
  • 后续新增通用功能仓时,只需注册 UTILITY;具有独立数量限制的部件可额外声明专用 ability。

验证

  • spotlessJavaCheck 通过。
  • 三份语言 JSON 解析通过。
  • git diff --check 通过。
  • 跨仓联编已确认新的 GTM API 与全部迁移调用能够进入 javac。

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown

🔨 Build and Sign

状态: ⚠️ 构建已取消(可能被同 PR 的新构建取代)

🔗 打开本次构建

触发 PR opened by org member
代码 GregTech-Odyssey/GTOCore-Main@5a82b012bd56
Run 31567082856

@MuuuShin

Copy link
Copy Markdown
Contributor Author

注: wherePart 可能不是一个好方案, 可能使用 .or() 会更合适?

另外这些通用仓要限制数量上限吗

另,处理机器控制仓的时候,发现机器控制仓会和主机抢夺控制权,谁最后改变状态,整个机器的开关就听谁的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant