mekmi-1.2.3.jar
Curse Maven Snippet
What's new
# Mekmi 1.2.3
## Changes since 1.2.1
### 中文
#### 大数能量与 Flux Networks
- 修复 Flux Networks Ultimate 通量节点的精确大数传输问题。
- 支持 Flux Ultimate `BigNumber` 能力的机器,现在可以通过 Ultimate Point 交换超过 `Long.MAX_VALUE` 的能量。
- 修复通量节点在每周期预算阶段提前压回 `long`,导致机器实际只能收到或输出 `Long.MAX_VALUE` 的问题。
- 机器内部的能量缓存、容量、最大输入、剩余能量、实际消耗和实际产出现在使用精确 `BigNumber` 保存。
- `BigInteger`、Flux `long` 和 NeoForge `int` 保留为兼容性降级路径,饱和值只用于旧接口、统计和显示,不再作为实际能量。
- 增加 Mekanism strict-energy 能力注册,使 Flux 节点能够正确识别和连接 Mekmi 机器。
- 保持能量能力优先级:
`BigNumber → BigInteger → Flux long → NeoForge int`。
- 修复能量模拟与实际执行之间的数量不一致,只有接收端实际接受的能量才会从机器中扣除。
- 保留 FE/EU 换算余数,避免连续换算过程中因整数截断造成能量损失。
#### 机器输入输出
- 完善机器的侧面能力控制。
- `INPUT`、`OUTPUT`、`INPUT_OUTPUT` 和 `NONE` 现在按照独立的方向合同处理。
- `INPUT_OUTPUT` 面可以同时向机器输入和从机器输出。
- 纯输入面不会被当成输出端,纯输出面也不会错误接受能量。
- 为需要独立启动能量和输出缓存的机器分离输入缓存与输出缓存,避免启动能量被错误输出。
- 修复部分机器只能显示有能量、但无法被 Flux 节点实际连接或输入的问题。
- 优化物品和流体侧面能力,空输出时不再每 tick 查询相邻能力或创建无效的模拟事务。
#### 精确并行与配方处理
- 继续使用共享 `parallelapi` 作为外部并行接口,避免 Mekmi 与加速附属之间存在两份互不兼容的并行 API。
- 外部并行倍率与机器自身的等级并行、压缩倍率共同计算,不再替换机器原有并行。
- 配方批处理、输入消耗、产物计算和能量消耗使用同一个精确并行结果。
- 修复概率配方计算过程中把并行数量提前压回 `long` 的问题。
- 支持超过 `Long.MAX_VALUE` 的批处理数量计算。
- 保持原始配方作为唯一权威来源,压缩倍率和外部并行不会生成重复的运行配方。
- JEI 中继续显示基础配方和对应工作站,不为每个压缩倍率复制一套加工配方。
#### 核燃料与特殊机器
- 核燃料处理改为按整根燃料棒进行批量结算。
- 当当前燃料棒无法满足目标能量时,可以跨越当前燃料棒继续计算后续完整燃料棒。
- 最后一根燃料棒产生的超出目标能量会保留在实际生成结果中,不再因为只处理当前一根棒而少发电。
- 增加超过普通 `long` 数量的燃料棒批量规划路径。
- 核机器的启动能量、发电缓存、实际发电量、理论输出和实际输出分开计算。
- 其他具有工具耐久、概率产物、流体转换或环境条件的机器继续使用各自的专用控制逻辑。
#### 物品、流体与容量
- 完善压缩机器物品槽和流体槽的精确容量处理。
- 精确容量与旧版 `long` 兼容视图分离,饱和的 `long` 值不会再回写覆盖真实容量。
- 外部并行倍率增加时,物品和流体容量会同步扩大。
- 外部并行来源移除后,如果当前存量超过新的理论容量,不会立即销毁已有物品或流体。
- 修复流体容量重新计算时因为 MI 原生 `long` 接口而截断或丢失存量的问题。
- 物品数量和流体数量超过普通接口范围时,仍保留精确值;NeoForge/MI 的窄接口只在兼容边界进行饱和或分块处理。
- 修复精确数量参与库存哈希时回退使用旧 `long` 镜像,避免数量变化后配方缓存不失效。
#### UI、菜单同步与显示
- 增加精确能量菜单同步数据包,直接同步 `BigNumber` 和 `AbsoluteInteger` 的原始数据。
- 菜单不再依赖有限的 `int` 数据槽传输超大能量和并行数量。
- 修复 GUI 中显示原始大数、科学计数法异常、重复 `FE` 单位和错误的“无限”显示。
- 能量、物品数量和流体数量统一使用紧凑单位显示,小数点后最多显示一位。
- 并行倍率使用独立的紧凑格式,保留最多三位小数和完整的大数单位。
- 有限的 `Long.MAX_VALUE` 或更大的数值不会再被错误显示成无限。
- 理论最大输出、实际输出、缓存能量和实际消耗分开显示,避免把当前快照误显示成机器上限。
- 通过外部管道、流体接口或能量接口改变机器内容后,菜单会主动同步最新状态。
#### 性能优化
- 优化压缩机器库存哈希,减少配方检查过程中的临时对象和装箱。
- 空输入、空输出和无效机器状态提前返回,减少每 tick 的能力查询。
- 减少能量换算路径中的重复大整数除法和取余。
- 缓存不变的能量换算结果、压缩倍率和菜单状态。
- 保持精确大数计算的同时,避免把压缩并行转换成逐个操作的 Java 循环。
- 优化菜单和机器状态同步,只在状态发生变化时发送精确数据。
#### 兼容性
- 保留 NeoForge `int`、Flux `long`、BigInteger 和 BigNumber 的兼容路径。
- 保留旧版 NBT 数值读取能力,并在写回时使用新的精确数值格式。
- 需要精确并行能力的附属模组继续通过 `parallelapi` 接入,不再依赖 Mekmi 内部 API。
- 不改变 MI 原始配方的所有权,数据包覆盖的原配方仍然可以正常生效。
---
### English
#### Large-Number Energy and Flux Networks
- Fixed exact large-number energy transfer through Flux Networks Ultimate Points.
- BigNumber-capable machines can now exchange values above `Long.MAX_VALUE` through an Ultimate Point.
- Fixed the Ultimate connector scheduler narrowing its per-cycle transfer budget to `long` before simulation and execution.
- Machine energy buffers, capacities, maximum input, remaining energy, actual usage, and actual generation now retain exact `BigNumber` values.
- BigInteger, Flux `long`, and NeoForge `int` remain compatibility fallback paths. Saturated primitive values are used only for legacy APIs, statistics, and display, never as the authoritative transfer amount.
- Added Mekanism strict-energy capability registration so Flux nodes can correctly discover and connect to Mekmi machines.
- Preserved the capability priority:
`BigNumber → BigInteger → Flux long → NeoForge int`.
- Fixed simulation and execution mismatches so only the amount actually accepted by the receiver is deducted.
- Preserved FE/EU conversion remainders to prevent repeated integer conversion from losing energy.
#### Machine Input and Output
- Improved sided capability handling for compact machines.
- `INPUT`, `OUTPUT`, `INPUT_OUTPUT`, and `NONE` now follow independent directional contracts.
- `INPUT_OUTPUT` faces can both receive energy and extract energy.
- Pure input faces no longer behave as output ports, and pure output faces no longer accept energy unintentionally.
- Separated input buffers and output buffers for machines that require independent startup energy and generation caches.
- Fixed machines that reported energy but could not be discovered or connected correctly by Flux nodes.
- Reduced unnecessary neighbour capability probes and simulated transactions while outputs are empty.
#### Exact Parallelism and Recipe Processing
- Continued using the shared `parallelapi` seam for external parallelism sources.
- External parallelism is multiplied into the machine's tier and compression parallelism instead of replacing it.
- Recipe inputs, outputs, energy usage, and batch calculations now use the same exact effective parallelism.
- Fixed recipe probability calculations narrowing parallel counts to `long`.
- Added support for batch counts above `Long.MAX_VALUE`.
- Kept the original recipe as the single authoritative operation recipe.
- Compression ratios and external parallelism do not create duplicate processing recipes in JEI.
#### Nuclear Fuel and Special Machines
- Nuclear fuel processing now settles whole fuel rods as batches.
- Processing can continue across the current rod and consume subsequent complete rods when necessary.
- Excess energy generated by the final rod is preserved instead of being lost when only the current rod was processed.
- Added an arbitrary-precision fuel-rod planning path.
- Startup energy, generation cache, actual generation, theoretical output, and transferred output are tracked separately.
- Machines with tool durability, probabilistic outputs, fluid conversion, or environmental rules retain their dedicated controllers.
#### Items, Fluids, and Capacity
- Improved exact capacity handling for compressed item and fluid storage.
- Exact capacities are separated from saturated legacy `long` views; saturated values are never written back as authoritative state.
- External parallelism now increases item and fluid capacity together with processing throughput.
- Removing an external parallelism source no longer immediately destroys contents above the newly calculated capacity.
- Fixed fluid capacity recalculation losing contents through MI's native `long`-based API.
- Exact item and fluid amounts are preserved beyond primitive limits, with narrowing occurring only at compatibility boundaries.
- Fixed inventory hashing falling back to legacy `long` mirrors instead of exact amounts.
#### UI, Menu Synchronization, and Display
- Added exact menu synchronization for `BigNumber` and `AbsoluteInteger` values.
- Menus no longer rely on limited primitive data slots for oversized energy and parallel values.
- Fixed raw large-number strings, malformed scientific notation, duplicated `FE` suffixes, and incorrect infinity displays.
- Energy, item, and fluid amounts now use compact formatting with up to one decimal place.
- Parallel values use a separate compact formatter with up to three fractional digits.
- Finite values at or above `Long.MAX_VALUE` are no longer displayed as infinity.
- Theoretical maximum output, actual output, stored energy, and actual usage are displayed separately.
- Menu state is synchronized after capability-driven inventory, fluid, or energy changes.
#### Performance
- Reduced temporary objects and boxing during compact inventory hashing and recipe invalidation.
- Added early exits for empty inputs, empty outputs, and inactive machine states.
- Reduced repeated large-number division and remainder operations in energy conversion paths.
- Cached stable energy conversion values, compression values, and menu state.
- Preserved exact batch arithmetic without converting compression parallelism into per-operation Java loops.
- Exact state synchronization is sent only when relevant values change.
#### Compatibility
- Preserved NeoForge `int`, Flux `long`, BigInteger, and BigNumber compatibility paths.
- Legacy NBT values can still be read and are written back using the exact numeric representation.
- Addons that provide external parallelism continue to use `parallelapi` instead of Mekmi's former internal API.
- MI remains the authoritative owner of processing recipes, so datapack recipe overrides continue to work.
This mod has no additional files

