▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
IEMS

IEMS

Added SE energy units and a series of energy transmission devices in the style of 《Arknights: Endfield》, utilizing high-precision storage and computation for energy.

Оцените первым
244
1
Все версии→IEMS 0.8.0-beta

IEMS 0.8.0-beta

Beta11.10.2026

Список изменений

IEMS v0.8.0-beta.120 Early Access Release

!Version !Dev codename

⚠️ Breaking Update: This is a complete rewrite. Old saves, old configs, old APIs, and the old sync strategy are completely incompatible.

This release is a complete rewrite of the old IEMS (v0.6.0 ~ v0.8.0-alpha): from the monolithic implementation where "the block entity is the grid" to an energy management framework with "complete separation of logic and presentation + factory-based persistence."


🚀 Core Highlights at a Glance

  • Architecture Refactor: Logic and presentation are completely separated; grid simulation no longer stalls due to chunk unloading.
  • FEDA Auto-Bridging: External FE devices connect automatically with zero changes, connecting upon discovery.
  • Web Monitoring Panel: REST API + Token authentication, real-time grid status monitoring.
  • Config Hot Reload: /iems reload reloads all configs with one command.

📋 Full Changelog

Click to expand full change details

Optimizations

Architecture

  • Complete separation of logic and presentation: Grid logic is stripped from BlockEntity into an independent logic layer (pure POJO, not dependent on Level); block entities degrade into appearance/views.
  • Autonomous device instances: Devices no longer hold references to each other; they interact with the grid only through the scheduler. They can be independently newed / destroyed / have parameters changed, naturally suited to multi-core parallelism.
  • Continuous operation without chunk loading: Grid simulation no longer stalls due to chunk unloading.

Persistence

  • Storage upgraded to a complete grid snapshot: From "storing only connection coordinates + type enum" to "devices (factory ID + parameters) + core info + all connections."
  • Rebuild method changed to factory-based: On server startup, devices are rebuilt by device factories, eliminating the old version's dependency on device registration order.
  • Fixed order-sensitive defect: The old issue where "devices load before the core → registration invalid → grid forever empty" has been fixed.

Connections and Networking

  • Cable-pulling interaction fully strengthened: HUD displays cable-pulling distance and max distance in real time; over-distance (+10 block buffer) automatically retracts the cable; dimension changes immediately retract the cable; exiting the world forcibly cleans up, eliminating residual state.
  • Server-side secondary validation: C2S cable-pulling requests are revalidated server-side for endpoints, same dimension, distance, duplicates, and relay rules, no longer relying on the client.
  • Security protection: Added connection proximity checks and rate limiting to prevent packet modification for arbitrary remote connection creation.
  • Sync packet hardening: GridSyncPayload performs size validation before full topology sync to prevent oversized packets from causing client OOM.

Laser Rendering

  • No longer disappears from side view: Switched to Billboard width direction (width = beam direction × (camera→beam)).
  • No longer thins out and disappears at distance: Added a minimum screen-space width max(0.03, distance × 0.0015).
  • Visible from any angle: Disabled backface culling for double-sided rendering while retaining depth testing (still occluded by blocks).
  • Eliminated ghost diagonal lines: Inserted degenerate triangles between adjacent strips for separation.
  • Client cache extended: ClientGridCache simultaneously handles the main grid / island / bridge three lists, including four-quadrant statistics and EMA smoothing.

Web Monitoring Panel

  • Upgraded from an unauthenticated read-only page to a REST API: Default port 8080 → 28567; by default only binds to 127.0.0.1, remote access can be explicitly opened.
  • Authentication: All /api/* require a Token (request header or query parameter).
  • Unified data structure: Unified envelope {schema, ts, data}; BigInteger fields are transmitted as decimal strings to avoid precision loss.
  • Thread safety: HTTP thread tasks are queued to the tick thread, eliminating data races with the core; the thread pool is explicitly stopped on world reload, and metric buffers are cleaned per session, avoiding thread leaks and cross-save interference.

Concurrency Model

  • Explicit tick-thread exclusivity: Grid state is owned by the server tick thread; external threads submit tasks uniformly via IEMSAPI.runOnServerThread() / callOnServerThread().

Energy System

  • Settlement tick: Changed from SE/2tick (once every 2 ticks) to SE/tick (settled every tick).
  • Unified units: SE is used as the internal settlement basis; FE / AE are converted by the adapter layer, and no extra converters need to be placed.
  • Three-state grid topology: Added BFS reachability determination and topology snapshots for the main grid / island / boundary perspectives; devices not connected to a core are allowed to interconnect first (island), rendered with red lasers to indicate no power, and automatically powered once the core is in place.
  • Protocol capacity now declared by the core: No longer incremented/decremented by devices themselves; the framework uniformly calculates and detects over-limit conditions.
  • Connection distance changed to declarative: Old fixed 1500 blocks → new version declared by devices/cores; if undeclared, the framework defaults to 500 blocks.
  • Command system: Debug commands /iems_debug add_connection | list_connections | clear_connections upgraded to /iems status | protocol | scan | shutdown | restart.

Build and Dependencies

  • GeckoLib 4.8.4 embedded via Jar-in-Jar: Players do not need to install it separately (the old version listed it as a required external dependency).
  • NeoForge dependency range relaxed: From fixed 21.1.228+ to NeoForge 21.1.0+.

Added

  • Device Factory Mechanism (M9 Simulation): Devices are persisted as "factory ID + parameters"; they continue to exist detached from blocks, forming the basis for restart reconstruction and chunkless operation.
  • FEDA External FE Device Auto-Bridging: Scans any NeoForge FE device (generator / consumer / energy storage) within range every 20 ticks; automatically connects upon discovery, with zero changes required to the other mod; bridge lasers default to cyan, configurable to normal color.
  • Island Connections: Connections not connected to a core can be created and retained, with red lasers indicating no power.
  • Web REST Endpoints: /api/status, /api/devices, /api/connections, /api/topology, /api/metrics, POST /api/grid/active.
  • Metrics Ring Buffer: Provides time-series sampling of energy / capacity / protocol / device count for /api/metrics, and can connect to external dashboards.
  • Configuration System config/DLZstudio/IEMS/: Automatically generates commented config files on first launch.
    • Energy.toml — fePerSe energy exchange rate (default 1 SE = 10 FE, range 1 ~ 9×10²⁶)
    • APIserve.toml — Web panel enabled / host / port / token
    • Renderer.toml — colorizeAutoConnect bridge laser coloring toggle
  • /iems reload Hot Reload Command: Reload all IEMS configs with one command, no game restart required (permission level 2).
  • Cable-Pulling Contract IIemsInteractable: Devices implementing this interface can participate in the framework's built-in cable-pulling interaction, decoupled from specific block types.
  • Static API Facade IEMSAPI: Provides entry points for device/core attachment, connection management, topology query, grid on/off, power source registration, device scanning, external thread task submission, etc.
  • Topology Snapshot Query getSnapshot(): Obtain main grid / island / boundary three perspectives at once.
  • Example Devices: Energy Transmission Repeater (500 blocks, manual) and Energy Broadcast Tower (50 blocks, automatic + manual), including model rendering and built-in level 7 lighting.
  • Four-Quadrant Power HUD: EnergyOverlayRenderer displays four-quadrant statistics with EMA smoothing (1.5s time constant).
  • Adapter Bridge Connection Type: ADAPTER_BRIDGE and regular connections are handled separately in topology and rendering.

Removed

  • GE Unit System: GE is completely removed (including its unit enum and all project references); the new unit system is FE / AE / SE.
  • Time Display Mode API: Removed the old standard / coordinated dual display modes, unified to SE/tick.
  • Energy Converter Block: No longer need to manually switch SE↔GE↔FE↔AE; FE is automatically converted by the bridge layer.
  • Energy Storage Block: Standard storage (100,000 SE) and universal storage (10²⁰ GE) are no longer provided by the framework and are left to external mods to implement.
  • Energy Marker Block: The passive block used for old multiblock structure positioning has been removed.
  • Broadcast Tower Line-of-Sight Occlusion Check: Removed the old rule "cannot connect if ≥3 full blocks occlude between the signal source and the device"; changed to pure distance determination.
  • Core Block Base Class GridCoreBlock: Cores no longer attach by inheriting from a block base class; changed to CoreDevice logical instance + factory registration.
  • Instance-style API Facade IEMSApi.getInstance() and EnergyValue Wrapper: Replaced by static facade IEMSAPI + raw BigInteger.
  • Old Three-Packet Sync Set: ConnectionSyncPayload / ConnectionAddPayload / ConnectionRemovePayload replaced by the unified GridSyncPayload full snapshot.

Summary

IEMS0930 reshapes IEMS from "an energy mod with a full set of built-in blocks" into "an energy management framework responsible for abstraction, scheduling, and visualization." Grid logic no longer depends on blocks to survive; external device integration changes from "requiring the other party to adapt" to "auto-discovery means bridging." Combined with hot-reloadable exchange rate and rendering configs, plus a Token-authenticated REST monitoring panel, modpack authors and server operators can build and maintain large power grids with lower integration cost and higher observability.


📝 Author's Note

This version's changes are really extensive, so there may be some bugs. I hope everyone will actively provide feedback. Thank you.

(It would be even better if feedback includes logs, crash reports, and reproduction steps.)

Файлы

iems-1.21.1-neoforge-0.8.0-beta.120.jar(754.24 KiB)
Основной
Скачать

Метаданные

Канал релиза

Beta

Номер версии

0.8.0-beta.120

Загрузчики

NeoForge

Версии игры

1.21.1

Загрузок

42

Дата публикации

11.10.2026

Загрузил

ID версии

Главная