[SI] SingularityIteration-0.1.7.30-beta.jar
Curse Maven Snippet
What's new
## 0.1.7.30
### 储电箱(BatBox / CESU / MFE / MFSU / LESU / EESU 等)
- 修复充电槽内有物品时对外输出完全中断:充电槽物品与导线/FE 面共用同一份每 tick 输出额度,而物品充电在方块自身 tick 中先于电网结算执行;能吃满一个电压等级包的物品(如超级兰波顿水晶、电力护甲)会用光额度,储电箱的"满包输出"规则随即判定不足一包而停止送电。现在充电槽拥有独立的、按电压等级计的额度(与 IC2 一致:充电槽与输出互不影响),共享余额与输出版本号仍保护电网报价。已用回归测试确认:旧代码下输出为 0 EU,修复后与无物品时相同。
### 装罐机
- 动态装罐配方不再以 `cannable_foods` 标签作为白名单:任何带原版食物组件(`FoodProperties`)且饱食度大于 0 的物品都可装罐,包括其他模组的食材(幼虫、料理等)。产出数量 = 饱食度 × 倍率,最多一组;消耗的空锡罐与产出数量严格相同(以前超过 64 时会多扣空罐)。已装满的锡罐与无营养物品不被接受。
### 锡罐食品
- 食用时间由 32 tick 缩短为 12 tick(0.6 秒)。
- 每罐恢复 2 点饥饿值(IC2 经典版)与 3.2 点饱和度(IC2),此前为 1 点饥饿值、1 点饱和度。
- 食用后返还空锡罐:最后一罐留在手中,其余放入背包,背包已满时掉落在脚下(创造模式不返还)。
### 测试
- 新增 `Round30GameTests`:任意食物组件物品可装罐、锡罐食用速度/恢复量/空罐返还、储电箱充电时仍持续对外输出。
## 0.1.7.29
### 崩溃修复
- 修复与 Presence Footsteps 同装时的 `NullPointerException`:其他模组的护甲材质可能没有穿戴音效,`ArmorItem#getEquipSound()` 返回 null,Presence Footsteps 直接调用 `.value()` 崩溃。新增 `ArmorEquipSoundMixin`,对所有护甲在返回 null 时回退为通用穿戴音效(`ARMOR_EQUIP_GENERIC`)。
### GUI / HUD 文字
- 新增统一的文字适配工具 `mio_icif_screen.drawFitted`:文字超出所在框时先缩小(最低 70%),仍放不下则以省略号截断;`SiButton` 按钮标签同样处理。
- 修复溢出/重叠:动能发电机、涡轮增压动能发电机、双涡轮增压动能发电机的转换效率;水力动能发电机(生物群系原样显示翻译键 `gui.mio_icif.water_kinetic...`,现正确翻译并与转子耐久合并为一行);风力动能发电机;蒸汽发电机(压力阀、进水、流体输出改为短标签,完整说明移入悬停提示);同位素温差发电机输出与能量条重叠;经验发电机(无物品槽却使用带槽位框的贴图,文字与能量条压在槽框上);流体分配器模式;模式存储器(能量图与多余的箭头贴图压在"名称/UU"上,标签改为可翻译);激光防御塔标题与状态行;期货交易所分类标签(宽度随文字)。
- GESU 核心界面的模块文字移到槽位右侧,不再压在放电槽上。
- 补回缺失的界面标题:动能发电机(电力)、热能发电机(电力)、斯特林动能发电机。
- 储电箱界面标题改用方块自身名称:CESU 不再显示"储电盒 / BatBox";BatBox / MFE / MFSU / LESU / EESU 充电座也显示各自名称。
- 补全 30 个代码中引用但语言文件缺失的翻译键(发电机名称、反应堆模式、变压器按钮、钻头模式、地形改造机消息、储罐提示等)。
### 喷气背包 HUD
- 修复悬停模式开关提示在动作栏"烧屏":装备 HUD 轮播以前每 tick 推送动作栏文字,现在只在文字内容变化(模式切换、换装备)时显示 3 秒;量子胸甲(喷气背包)在空中飞行时保持显示。
### 枪械持握姿势
- 电磁步枪、高级电磁步枪、战术激光步枪、超光速粒子干扰器、等离子枪、等离子空气炮、火箭发射器统一使用采矿镭射枪的双手持枪姿势(第三人称低持、开火时抵肩瞄准,第一人称后坐)。
- 重新计算各枪的 `thirdperson_*` / `firstperson_*` 显示变换:以每把枪的握把为锚点对齐到手部,缩放按枪长调整,不再出现枪身朝下或悬空的情况。
### GESU
- 能源管理终端可识别 GESU:核心与输入/输出端口被视为储能设备与电压缓冲节点,系统范围拓扑可经 GESU 穿越;储量与容量从核心读取,同一 GESU 只计一次。
- GESU 核心新增充电槽与放电槽(原界面只有贴图框,没有实际槽位):充电槽为电池/电力工具/电力护甲/FE 物品充电,放电槽接受电池、FE 物品与红石;每 tick 最高 LuV 速率,物品随存档保存、拆除时掉落或随扳手保留。界面同时加入与其他储电箱相同的护甲显示槽。
### 架构与性能
- 新增 `core/api/machine/IStorageMember`(多方块储能成员)与 `core/runtime/energy/DirectItemCharging`(不经 FE 账本的物品充放电),GESU 与终端不再互相硬编码。
- 首原料配方查找(`RecipeAPIImpl.findRecipe`,高级压缩机、高级粉碎机、高级金属成型机、高炉、中子聚合机、炼油厂等每 tick 调用 2~3 次)按"物品 + 组件"记忆结果,配方表重载时自动失效。
- 流体反应堆每 tick 及每次流体能力查询都会重新扫描约 105 个方块,改为只在 20 tick 周期的结构刷新中扫描;未连接反应堆的流体接口不再每 tick 扫描 5×5×5 范围;访问接口不再每秒重复尝试成型并刷屏日志。
- 磁化机的铁栏杆搜索(最多 512 格 BFS)由每 tick 改为每秒一次。
- 防止同步加载区块:传送机仅在有实体待传送时才校验(并可能加载)目标;无线输电节点跳过未加载的目标;GESU 输入端口在访问核心前检查区块是否已加载。
- 新增 `Round29GameTests`:护甲音效非空、储电箱标题、GESU 充放电槽、终端将 GESU 视为单一储能、配方记忆结果一致。
---
## 0.1.7.30
### Storage Boxes (BatBox / CESU / MFE / MFSU / LESU / EESU, etc.)
- Fixed total interruption of external output when an item is in the charging slot: the charging slot item and the wire/FE face shared the same per-tick output quota, and item charging executes before the grid settlement in the block's own tick; items that can consume a full voltage-tier packet (such as Super Lapotron Crystals and Electric Armor) would use up the quota, and the storage box's "full packet output" rule would then determine there was less than a full packet and stop sending power. Now the charging slot has an independent quota measured by voltage tier (consistent with IC2: charging slot and output do not affect each other), while the shared balance and output version number still protect grid offers. Confirmed by regression testing: output was 0 EU under the old code, and after the fix it is the same as when no item is present.
### Canning Machine
- Dynamic canning recipes no longer use the `cannable_foods` tag as a whitelist: any item with the vanilla food component (`FoodProperties`) and a hunger value greater than 0 can be canned, including ingredients from other mods (larvae, dishes, etc.). Output quantity = hunger value × multiplier, up to one stack; the empty tin cans consumed exactly match the output quantity (previously more empty cans were deducted when exceeding 64). Already-filled tin cans and non-nutritious items are not accepted.
### Canned Food
- Eating time reduced from 32 ticks to 12 ticks (0.6 seconds).
- Each can restores 2 hunger points (IC2 classic) and 3.2 saturation points (IC2), previously 1 hunger point and 1 saturation point.
- Empty tin cans are returned after eating: the last can stays in the hand, the rest go into the inventory, and if the inventory is full they drop at the player's feet (not returned in creative mode).
### Tests
- Added `Round30GameTests`: any item with a food component can be canned, canned food eating speed/restoration/empty can return, and storage boxes continue to output externally while charging.
## 0.1.7.29
### Crash Fixes
- Fixed a `NullPointerException` when installed alongside Presence Footsteps: armor materials from other mods may have no equip sound, so `ArmorItem#getEquipSound()` returns null, and Presence Footsteps crashes by calling `.value()` directly. Added `ArmorEquipSoundMixin` to fall back to the generic armor equip sound (`ARMOR_EQUIP_GENERIC`) for all armor when null is returned.
### GUI / HUD Text
- Added a unified text fitting utility `mio_icif_screen.drawFitted`: when text exceeds its box, it is first scaled down (to a minimum of 70%), and if it still does not fit, it is truncated with an ellipsis; `SiButton` button labels are handled the same way.
- Fixed overflow/overlap in: conversion efficiency of the Kinetic Generator, Turbocharged Kinetic Generator, and Double-Turbocharged Kinetic Generator; Hydro Kinetic Generator (the biome displayed the raw translation key `gui.mio_icif.water_kinetic...`; now correctly translated and merged with rotor durability into one line); Wind Kinetic Generator; Steam Generator (pressure valve, water input, and fluid output changed to short labels, with full descriptions moved to hover tooltips); Isotope Thermoelectric Generator output overlapping the energy bar; Experience Generator (it had no item slots but used a texture with slot frames, causing text and the energy bar to press onto the slot frames); Fluid Distributor mode; Mode Memory (the energy diagram and extra arrow texture overlapped "Name/UU", and labels are now translatable); Laser Defense Tower title and status line; Futures Exchange category tabs (width follows the text).
- Moved the module text in the GESU core GUI to the right of the slots so it no longer presses on the discharge slot.
- Restored missing GUI titles: Kinetic Generator (Electric), Thermal Generator (Electric), and Stirling Kinetic Generator.
- Storage box GUI titles now use the block's own name: CESU no longer displays "Storage Box / BatBox"; BatBox / MFE / MFSU / LESU / EESU charging pads also display their respective names.
- Completed 30 translation keys referenced in code but missing from language files (generator names, reactor modes, transformer buttons, drill modes, terraformer messages, tank tooltips, etc.).
### Jetpack HUD
- Fixed the hover mode toggle message "burning in" on the action bar: the equipment HUD carousel used to push action bar text every tick; now it only displays for 3 seconds when the text content changes (mode switch, equipment change); the Quantum Chestplate (jetpack) remains displayed while flying in the air.
### Gun Holding Poses
- The Electromagnetic Rifle, Advanced Electromagnetic Rifle, Tactical Laser Rifle, Tachyon Disruptor, Plasma Gun, Plasma Air Cannon, and Rocket Launcher now all use the Mining Laser's two-handed gun pose (lowered in third person, shoulder-aimed when firing, first-person recoil).
- Recalculated each gun's `thirdperson_*` / `firstperson_*` display transforms: aligned to the hand using each gun's grip as the anchor, with scaling adjusted by gun length, so guns no longer point downward or float in the air.
### GESU
- The Energy Management Terminal can now recognize GESU: the core and input/output ports are treated as energy storage devices and voltage buffer nodes, and system-wide topology can pass through GESU; stored energy and capacity are read from the core, and the same GESU is only counted once.
- Added charging and discharging slots to the GESU core (the original GUI only had texture frames, not actual slots): the charging slot charges batteries/electric tools/electric armor/FE items, and the discharging slot accepts batteries, FE items, and redstone; up to LuV rate per tick; items are saved with the save and dropped when dismantled or kept with a wrench. The GUI also adds the same armor display slots as other storage boxes.
### Architecture and Performance
- Added `core/api/machine/IStorageMember` (multiblock energy storage member) and `core/runtime/energy/DirectItemCharging` (item charging/discharging that bypasses the FE ledger), so GESU and the terminal no longer hardcode each other.
- First-ingredient recipe lookup (`RecipeAPIImpl.findRecipe`, called 2–3 times per tick by the Advanced Compressor, Advanced Macerator, Advanced Metal Former, Blast Furnace, Neutron Aggregator, Refinery, etc.) now caches results by "item + components" and automatically invalidates when the recipe table reloads.
- The Fluid Reactor used to rescan about 105 blocks every tick and on every fluid capability query; it now only scans during the 20-tick structure refresh. Fluid ports not connected to a reactor no longer scan a 5×5×5 area every tick; accessing the port no longer repeatedly attempts to form the structure every second and spam the log.
- The Magnetizer's iron fence search (up to 512-block BFS) was changed from every tick to once per second.
- Prevented synchronous chunk loading: the Teleporter only validates (and possibly loads) the target when there is an entity waiting to be teleported; Wireless Power Nodes skip unloaded targets; the GESU input port checks whether the chunk is loaded before accessing the core.
- Added `Round29GameTests`: armor equip sound non-null, storage box titles, GESU charging/discharging slots, the terminal treating GESU as a single energy storage, and consistent recipe cache results.
This mod has no additional files

