[SI] SingularityIteration-0.1.8.2-beta.jar
Curse Maven Snippet
What's new
## 0.1.8.2
Based on 0.1.8.1 (`pr-0.1.8.1-20261012`). Fixes for severe crop stick issues, next-generation crop scanner, comprehensive crop texture update, external industrial mod compatibility, and weapon textures. See `docs/releases/0.1.8.2/UPDATE.md` for details and verification records.
### Crop Sticks and Crop-Matron
- Right-click harvesting no longer loses items: the drop count is at least 1; no harvest is performed when there is no output; drops are placed directly into the player's inventory (any that do not fit are dropped at the player's feet). Added `IPlanter#doManualHarvest(Player)`.
- The crossbreeding stick returns the crop stick placed on it (records `CrossStick`); the hybridization flag is cleared when planting; crops with "plant + hybridization flag" in old saves are repaired on load; the crossbreeding stick has its own model.
- Titanium/uranium leaves now use the IC2 crop cycle (`OreRootCrop`), fixing yield being calculated twice (up to 96 at a time) and per-tick growth; textures for 13 configured crops have been completed, and a fallback texture is used when a texture is missing.
- Crops tended by the Crop-Matron have an environment quality of at least requirement + 50 (`CropGrowthMath.tendedQuality`), so high-stat seeds such as 10/10/10 no longer stop growing. Added `IPlanter#markTended` / `isTended`.
### Next-Generation Crop Scanner (formerly Crop Analyzer, item ID unchanged)
- 4,000,000 EU, tier 4, 2,048 EU/t; full analysis costs 500 EU per bag, and a whole stack is analyzed at once.
- Handheld HUD: plant name and scientific name, stage and maturity, three traits, four environment values, stored resources, environment quality and requirements, tending status, and unmet growth conditions (8 EU per readout; no data is shown when out of power).
- Chest-style 27-slot interface, with an independent scan line per slot; 4 overclock upgrade slots (time ×0.7, power ×1.6, up to 8 cards counted; only the remaining energy is consumed on the last tick).
- Crossbreeding research (Reinforced Iridium Plate ×10 + Bio Circuit ×1, permanently unlocked): select a target from natural hybridization candidates to guarantee obtaining the target seed.
- Gene editing (Quantum Core ×1 + Neutron Plate ×4 + Super Circuit ×2, permanently unlocked; each +3 improvement costs 1 UU-Matter): sliders and −/+ set target traits, and energy increases exponentially with the target value. Added `ICropSeedItem#setCropTraits`.
### Textures
- All stage textures on crop sticks have been regenerated by `tools/art/crops_182.py` (233 textures + 4 crop stick textures, 16×16 modern vanilla style).
- Weapons: the 3D model UV textures for the bronze sword / nano sword / quantum sword have been redrawn by part, and the plasma launcher's 10-frame icon and the nano bow's 4 icons have been redrawn (`tools/art/weapons_182.py`). Tool textures are unchanged.
### External Mod Compatibility
- New recipe material `mio_icif:crop_seed` (plant + yield range) and item tag `mio_icif:crop_seed_bags` (not added to `c:seeds`, to prevent other mods' recipes from consuming seed bags).
- Immersive Engineering Garden Cloche 188 recipes (yield tiers ×1 / ×1.5 / ×2 / ×3); Thermal Phytogenic Insolator: seed bags act as a never-consumed catalyst, plus 9 ordinary item recipes; Ender IO Farm Station: plants and harvests crop sticks (reflection integration). All include mod load conditions.
### Other
- Completed names for beetroot, nether wart, earth wart, 15 configured crops, and 6 saplings; Japanese completed for all plant names; 78 new scanner-related keys (trilingual).
## 0.1.8.1
Based on 0.1.8.0 (`pr-0.1.8.0-20261012`). Agriculture system audit, energy management terminal subnet panel, trilingual code comments, jetpack sound effects, and comprehensive machine sound effect audit. See `docs/releases/0.1.8.1/UPDATE.md` for details and verification records.
### Agriculture System (Audit and Fixes)
- **Soil nutrient fix**: Dirt bonus began counting from `below(1)`, but `below(1)` is always farmland, so the old loop stopped immediately and the bonus was always 0. It now counts consecutive dirt below farmland according to IC2 (`below(2)`–`below(4)`, up to 3).
- **Weed block**: Resets before occupying a crop stick (no longer inherits the old plant's stats, growth points, scan level, or hybridization flag); skips positions in unloaded chunks (random ticks at chunk edges will not load chunks); does nothing when the weed plant is unregistered.
- **Upgrade crop stick**: The hybridization state is written to the upgrade crop stick's own `CROSSING` property (block states look up properties per instance; the old code never set it).
- **Crop Harvester**: Drops that do not fit enter a saved pending-storage list and are never scattered into the world; when the list is not empty, scanning stops and no power is consumed, and they are automatically stored once space is available; they are also dropped when the machine is removed; the GUI shows "Storage full: paused". The WORKING state remains for 40 ticks after the last harvest.
- **Crop-Matron**: The WORKING state remains for 40 ticks (previously it could switch block state and rebuild the chunk mesh every tick at most); the state correctly turns off when out of power.
- **Performance**: Crops send updates to the client only when visible values change (plant, stage, traits, scan level, hybridization, resource tier, redstone, light); resource decay packets are reduced to about 2.5% of the original; resource decay and fertilization cooldown no longer trigger comparator neighbor updates; crop sticks no longer register a client ticker; the crop renderer no longer ignores frustum culling (previously it drew all crops within 64 blocks every frame), and texture IDs are resolved only once.
- The Venus flytrap's "eaten" flag now marks the block entity as changed after modification; sapling crop values are changed to shared constants.
- Crop formulas extracted into the pure function class `CropGrowthMath` (no Minecraft dependency; 1,202,703 independent tests match the 0.1.8.0 formulas).
### Energy Management Terminal
- Subnet details (global mode) relaid out: two small lines per row; the right-aligned part (device count, satisfaction bar) is drawn first; the left title and power flow are measured in the current language and truncated with "…"; the satisfaction bar is moved to line 2 (previously it pressed on the line 1 title); the "+N" overflow marker is changed to "start-end/total", scrollable with the mouse wheel, and a scrollbar is shown.
- Hovering a subnet row shows full values (voltage packets, generation, consumption and satisfaction rate, energy storage flow, device and cable counts); in global mode, hidden consumption ranking tooltips no longer appear.
- "dev" changed to a translation key; 18 missing keys in the Japanese terminal were added (previously displayed in English).
### Trilingual Code Comments (EN / ZH / JA)
- Added specification `docs/dev/COMMENT_STYLE.md` (English follows ASD-STE100, Chinese and Japanese translate the same content) and check script `tools/doc_lint_181.py`; `docs/dev/trilingual_manifest.txt` lists 40 files (public API entry points, complex algorithms, and major classes), totaling 189 Javadoc blocks, with 0 errors and 0 warnings.
### Sound Effects
- **Jetpack**: Three thruster loop sounds—electric (light turbine), advanced (heavy roar), and quantum chestplate (low ionic hum)—plus ignition and shutdown sounds; volume and pitch change smoothly with throttle; hover jitter protection. The local player uses client prediction (no delay); other players are sent a `jetpack_thrust` packet by the server only when the state changes. Added API default method `IJetpackItem#getThrusterSound()`.
- **Machine sound audit** (`tools/sound_audit_181.py`): In 0.1.8.0, 35 machines had running states but no sound; now there are 0; 100 have loop sounds, and 12 are intentionally silent with reasons (solar panels, creative generator, armory/laser turret/energy terminal with their own sounds, detection cables). Added 4 loop sounds: compressor, servo, discharge, and bubbling; the Tesla coil now uses the discharge sound.
- Run detection adds synchronized state lights (RUNNING) and `ClientRunState` (kinetic windmill/watermill, blueprint builder); `working`/`running` properties are also recognized. Wind/hydro generators show a green state light when generating; the large mass fabricator core is RUNNING while producing.
- All new sound effects are procedurally synthesized (`tools/sfx_181.py`, no samples), mono OGG.
## 0.1.8.0
Based on 0.1.7.36. Major update. See `docs/releases/0.1.8.0/UPDATE.md` for details and verification records; addon development see `docs/api/API_GUIDE.en.md` / `API_GUIDE.zh_cn.md`.
### Power Grid and Transformers
- Added fair distributor `FairShareDistributor` (default): fixes stepwise decay with multiple devices (first device 100%, second 75%, third 50%); supplies power in four phases (consumer rated → consumer remaining → storage rated → storage remaining), distributing within a phase proportionally to remaining demand, with generators before storage. Line loss model can be `lossless` (default) / `proportional`; the old algorithm is retained as `distributionMode=legacy`. Fixed-point arithmetic, deterministic; same-source same-path merged into pools; in an independent deliverer benchmark, a 32×128 lossless window is about 57.9 µs per round (not representative of whole-package performance).
- Partial packet handling in transformer fair mode, `settleForeign` early return, pull/push corrections; `EnergyNodeRegistry.isStorage`.
### Suits
- Quantum suit Blockbench model (baked model, 3D item icons), first/third-person hand armor toggles, Iron Man-style flight pose, visible sonic boom cone, aerodynamic deflection field, and improved flight efficiency.
- "Equipment Traits Panel" renamed to "Singularity Management Panel"; nano suit per-part coloring (presets and RGB sliders). New nano helmet model.
- Electric armor absorption changed to additive proportional and covers all damage types (including armor-piercing damage such as Vindicator axes); whole-suit shared energy pool; nano chestplate no longer causes hunger loss when hit; night vision goggles 400,000 EU; energy-saving enchantment applies to accessories; charcoal dust to carbon fiber.
### Armory
- Holographic display stand replaces display case (series/parallel expansion, bottom wireless power, automatic return, naming); Shift-click prioritizes placing into suit slots; heavy mechanical locking sound when equipping; nano/quantum parts fly in and lock in segments.
- SlashBlade: Resharped: drawn into the hand in iai stance (only Resharped recognized).
- Wingman system: stored suits deploy as drones, with four tactical modes (attack, disperse and lure, escort/intercept projectiles, Fulton recovery).
- Touhou Little Maid remote equipment; RTS Building drone support; blueprint builder (Create blueprints, `.nbt`, `.litematic`) and armory material interface.
### New Modules and Fire Control
- Smart ballistic guidance unit, force-field resonance disassembly unit; universal ballistic calculation (public API, learning from shots, mod weapons implement API); 3D tactical map (structures, loot and probabilities for unopened containers, JEI jump, complete controls).
### Machines, Logistics, and GUI
- Wire stripper properly strips insulation; machine dismantling drops recovered according to recipe; GuideME dynamic nuclear reactor simulator page; work range holographic grid; 14 GUI text overlap fixes; resin collector fluid animation; pipes fully redrawn; added spray pipe; melee weapon 3D models; energy weapon charging compression effect; UU-Matter fabricator and kinetic generator sounds; connector kit consumes 1 per wiring operation.
### Integration, API, and Documentation
- Create Ponder scenes 4 (ASD-STE100, trilingual); public API artifact `mio_icif-api` (only `core.api`, 318 classes, no internal references); suit unit API, armory events; example addon; removed `CropBiomeAccessor` (switched to access transformer); API guide (English, Chinese).
## 0.1.7.36
Source delivery based on 0.1.7.35; this PR merges increments into upstream 0.1.7.35.1 and retains upstream electric hoe, steam repressurizer, recipes, and nuclear explosion fixes. Comprehensive cleanup for long-term maintenance and future version migration: complex algorithms supplemented with "why/contract/invariants" comments, core API comments all changed to ASD-STE100 English; comprehensive review of boundary values, nulls, threading, and client/server boundaries with fixes; new data-pack-driven numeric tuning (`si_tuning`); network payloads add count upper-bound validation and client→server rate limiting. Delivery commit modifies 632 files in total (including comments, source, resources, and development tools).
### Comments and Documentation
- Power grid (`IndependentSiEnergy`, `EnergyNetGlobal`, `PlatformTopology`, `NetworkWalker`, `FECompatTile`, `GridEventHandler`), multiblocks (all of `common/multiblock/`, `MultiblockEnergyCore/Part`), sync and payloads (`ClientSyncThrottle`, `SuitPackets`, `SuitSensorData`, `MachineStatusTracker/Packet`, `EquipmentConsolePacket`, armory payloads, the 47-payload list in `mio_icif_Network`), FCS and special maneuvers (`BallisticSolver`, `SensorTracker`, `OreScanner`, `HoloMap`, `FcsProjection`, `ManeuverMode(Client)`) supplemented with Why/Contract/Invariants: units, value ranges, null rules, threading, call timing, and side effects.
- `core/` (API, prefab, runtime, platform) a total of 210 files had Chinese comments changed to ASD-STE100 English; previously 371 files in `common/` were handled (including repair of 163 mojibake files). All comment changes were confirmed file-by-file with a decommented code token comparison tool as "zero code changes".
- Deleted 38 unreferenced dead files (extruder remnants, octree/waveform explosion schedulers, old recipe builders, `ClientKeyHelper`, `PipeFluidRenderer`, `NetworkHelper`, `CustomEnergyStorage`, empty heat storage, `AddonExample`, etc.), plus 76 unused private fields and 49 orphaned `@SuppressWarnings("unused")`.
- Remaining: about 550 files under `common/` still have Chinese comments (mainly machine block entities, registries, and GUIs), left for future versions.
### Bug Fixes
- `IUpgradeItem.getUpgradeEffect()`: six methods in an anonymous class called themselves rather than the outer interface method, so any call would recurse infinitely and cause `StackOverflowError`. Changed to `IUpgradeItem.this.xxx()`.
- Kinetic/thermal generators consumed fuel by calling `shrink` before reading the container item; an empty stack always returned empty, and the empty bucket from a lava bucket would be lost. Changed to read the container item first.
- Scanner (OV/OD): building height limit is treated as inclusive (`y == maxBuildHeight` was also read); changed to exclusive; the scan loop now uses mutable coordinates and no longer allocates a `BlockPos` per block.
- `ArmoryActionPacket`: without permission to unbind, it still showed "unbound" and closed the GUI; `unbind` now returns a result, and the message is shown only on success.
- `PlatformTopology`: closing the topology in an observer callback and then isolating a chunk could throw a null pointer because `server == null`; now guarded; rebuild scanning no longer creates a temporary collection for each chunk.
- `getRedstonePorts()` returned an internal mutable collection; changed to a read-only view. `FECompatTile` duplicate import removed, log text changed to English.
- Laser turret statistics: entity custom names longer than 64 characters could cause an encoding exception and sync failure; now truncated before writing.
- `SensorTracker`: first truncated to 64 then sorted by distance, so distant mobs could push out nearby mobs; changed to sort first, then truncate, and only calculate paths and intents for retained targets. Airborne prediction horizontal drag changed from 0.98 to vanilla 0.91.
- `HoloMap`: out-of-bounds targets in the +x/+z directions were drawn one block outside the box; the clamp upper limit was corrected to `RADIUS + 0.5`.
- `ManeuverModeClient.VISUALS` never removed players who left; new class `ClientSessionCleanup` cleans up every 100 ticks, and resets `FcsProjection` and special maneuver visual state when leaving the world.
- `ClientSyncThrottle`: when called from a non-server thread, it directly called `sendBlockUpdated` (the chunk map is not thread-safe); changed to post to the server thread.
- Transformer mode switch message was hardcoded Chinese; changed to translation key `message.mio_icif.transformer.mode_switched` (with English fallback), and Japanese mode names added. `MachineAPIImpl.getRedstoneModeName` and `getRunningState` API return values changed from Chinese to plain English.
- All `toLowerCase()`/`toUpperCase()` changed to `Locale.ROOT` (identifiers would go wrong under locales such as Turkish); `AbstractElectricTool.getDurabilityPercent` no longer returns NaN when capacity is 0.
- Previously fixed in an earlier round: empty ingredient `get(0)` in 6 JEI categories, empty path in `FcsHud`, `IndependentSiEnergy`'s `printStackTrace` changed to logging, `sampleTick`'s `MIN_VALUE` guard, occluder running every 20 ticks, armory remote forced chunk loading cooldown, energy converter integer EU rounding, new `BlockEditPermission` (block edit permission check for painter and wrench).
### Network Payloads
- New `PacketLimits`: list counts are truncated on the encoding side and validated on the decoding side (negative or over-limit directly throws `DecoderException`). Previously the decoder's `Math.min` truncation left unread bytes, misaligning subsequent fields, and negative numbers threw `NegativeArraySizeException`. Applied to `ArmoryConsoleSyncPacket` (64), `MachineStatusPacket` (4096, automatically split when the sender exceeds), `SuitPackets.Threats` (256), laser turret statistics, and target filters.
- New `PacketRateLimit` (token bucket, per player, cleaned up on logout): `ManeuverInput` (burst 10, then 1 per tick; previously every packet was forwarded to all players within 160 blocks), armory console (burst 10, 5 per second), equipment console buttons (burst 20, 10 per second). Slider tuning keeps server-side slot, parameter index, and range validation, but does not go through this token bucket: normal drag frequency can exceed the limit, and the client has no final-value resend mechanism, so directly dropping packets would leave the server at an earlier step.
- Confirmed all 47 payloads are `CustomPacketPayload`, handlers run on the main thread (default), and there are no optional payloads.
### Data-Driven (Data Packs)
- New `SiTuning` reload listener: `data/<namespace>/si_tuning/<name>.json`, each file is a flat numeric object. Data packs can override with a file of the same name; missing keys use code defaults; out-of-range values are clamped and warned; unknown keys (mostly typos) are warned. All tunable values are declared centrally in `SiTuningValues`, and defaults match the built-in JSON (checked by tests).
- First batch: OV/OD scanner scan radius, vertical radius, and energy per use; mining machine drill and scanner energy ranges; teleporter cooldown; armory display case network range. Values used for client rendering (such as mining machine work range) are not yet exposed because the client has no synchronization yet.
- Future candidates: base energy and work time of processing machines, generator output, reactor parameters, special maneuver energy consumption, multiblock (oil well, fusion) structure parameters.
### Modern Version Preparation
- The project is already based on NeoForge 1.21.1: item data uses Data Components (custom data uniformly goes through `CustomData`/component wrappers), networking is entirely `CustomPacketPayload`, and enchantments and tags are data-driven. This version confirms there are no old NBT interfaces such as `getOrCreateTag`. All 31 deprecated `LevelReader.hasChunkAt` uses have been changed to `Level.isLoaded`. Mentions of content module package names in core module comments would trigger architecture checks and have been rewritten.
### Testing
- New GameTest class `Round36GameTests` (8 items): tuning defaults match the built-in file, tuning handles read loaded values, count upper/lower bounds, machine status packet has no residual bytes after over-limit encoding, armory sync packet truncates display cases and overly long labels, rate-limit burst upper bound, upgrade effects no longer recurse, and transformer message translation keys are complete.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

