File Details
Stored Program Controls 1.1.0 (1.21.1)
- R
- Apr 25, 2026
- 1.82 MB
- 69
- 1.21.1
- NeoForge
File Name
storedprogramcontrols-1.1.0.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
Stored Program Controls - Changelog
Version 1.1.0 — Live Diagnostics & Soft-Comfort Addon Plumbing
Consolidated entry covering everything previously released as 1.0.1, 1.0.2, 1.0.3, and 1.1.0. API jar bumped from 1.2.0 (semver) to v6 (the new flat naming scheme). Ships protocol version 8 — clients and servers must match.
Live Diagnostics Overlay (the headline feature)
- The "Live Diagnostics" button in the programming editor now also drives a wire-and-block-output overlay sourced from a running Processing Unit on the cable network — same visual language as the built-in Simulate mode (green for high digital, dim for low, value overlays on analog wires), but the data comes from the actual controller running the program.
- One button toggles both the side panel and the overlay together. Live and Simulate are mutually exclusive: engaging Live stops the local sim, and engaging Sim disengages Live.
- A banner across the top of the canvas labels the data source: "Live — Processing Unit @ x,y,z (10 Hz)". On runtime fault, it flips red with the error message and the last frame stays painted (fault freeze).
- 10 Hz fixed push from the server, 1 s heartbeat from the client, 2 s server-side timeout for cleanup. Switching the selected network target while Live is on re-engages against the new PU.
- Read-only — no input poking from the editor while Live is active (that's still Simulate mode's job).
Programming editor no longer pauses the integrated server
- Opening the programming block UI in singleplayer used to pause the integrated server, which silently froze every running LOGO program (clocks, on-delay timers, async pulse generators). The screen now returns false from isPauseScreen(), so programs and live diagnostics keep running while the editor is open.
- Trade-off worth knowing: hostile mobs continue to attack you while the editor is open. Build accordingly. (No change in multiplayer — dedicated servers never paused for client UIs.)
- The vanilla pause menu (Esc) still pauses by design. Workaround: open to LAN once per world load to disable the pause.
Per-node diagnostics from addon nodes (API v6)
- Addon ISpcCompiledNode implementations can now contribute rows to the diagnostics panel via a new default method getDiagnosticEntries(). Built-in nodes are unaffected; the panel picks up addon entries automatically when subscribed.
DYNAMIC_CHOICE parameter type (API v6)
- New parameter type lets addon nodes declare a dropdown that's populated on demand by a server-side provider. Useful for "pick one of the channels of the device selected in another parameter" UX. Implemented through SpcDynamicChoiceRegistry, SpcChoice, SpcChoiceContext, and SpcDynamicChoiceProvider in the addon API.
- Bug fixed in 1.0.2: the public API enum had DYNAMIC_CHOICE but the internal LogoProgramValueType didn't, so any addon schema declaring a DYNAMIC_CHOICE parameter crashed when dragged onto the canvas. SpcSchemaAdapter now uses an explicit switch (future API additions fail at compile time, not at runtime), and DYNAMIC_CHOICE round-trips through every internal switch.
Cable network honors the public API natively (API v6)
- ISpcCableTraversable: blocks implementing this interface are now picked up by both the cable BFS and the cable's visual-connect predicate. Addon cable-traversable blocks light up end-to-end without registration calls or mixins.
- ISpcNetworkDevice: BEs implementing this interface are discovered by the BFS and fully participate in virtual-signal dispatch — addon compiled nodes can read/write values through the virtual-signal API keyed by the device's IP, with no direct BE access.
- New SpcNetworkRegistry.discoverReachableDevices(Level, BlockPos) helper returns reachable devices from a source position; intended for caching once-per-tick from ISpcExecutionContextExtension.onTickStart.
Per-parameter editor labels (API v6)
- SpcParameterSpec gained an optional 4th component labelTranslationKey, letting addons drive parameter labels from their own lang files instead of falling back to the editor's hardcoded label table.
Help-page additions (API v6)
- The help-page API gained connection-type categorization and diagrammatic content rows. (The base 1.2.0 surface in semver naming is now part of v6.)
Networking
- ModNetwork PROTOCOL_VERSION 6 → 8 (added dynamic-choice request / response in v6, then live snapshot subscribe / unsubscribe / push for the diagnostics overlay).
Bug fixes
- 1.0.2 bridge fix: DYNAMIC_CHOICE through SpcSchemaAdapter (above).
- The internal AddonCompiledNodeAdapter is now public so the diagnostics builder can reach it. Implementation detail — addons shouldn't depend on it.

