promotional bannermobile promotional banner

SPC Core

The official API library for Stored Program Controls, providing the shared foundation for addons, integrations, and compatibility with other mods.

File Details

SPC Core 1.1.6 for SPC 0.3.x (1.21.1)

  • R
  • Apr 19, 2026
  • 63.10 KB
  • 10
  • 1.21.1
  • NeoForge

File Name

storedprogramcontrols-1.1.6-api.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:spc-core-1510924:7949562"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Stored Program Controls — API Changelog
========================================

API Version 1.1.6 (April 19, 2026)
-----------------------------------

### Addon Node Icon Textures
- SpcNodeSchema iconTexture: New optional field (10th record component) accepting a
  ResourceLocation path string (e.g. "mymod:textures/gui/nodes/rotation_input.png").
  When set, the editor renders the custom texture inside the block body AND inside
  the palette glyph instead of falling back to the shortLabel text. Recommended
  texture size: 16x16 or 32x32 PNG in the addon's resource namespace.
- Backwards compatible: existing 5-arg, 8-arg, and 9-arg SpcNodeSchema constructors
  continue to work unchanged (iconTexture defaults to null).
- Helper method: SpcNodeSchema.hasIcon() returns true when the texture is non-null
  and non-empty.

### Custom Python Builtins for Embedded Python Block
- com.hypernova.spc.api.python — new API package (3 classes) for registering custom
  Python functions that become callable from every Embedded Python block at runtime.
- SpcPythonBuiltinRegistry: Static, thread-safe, freezable registry. Addons call
  register(name, builtin) during mod construction or FMLCommonSetupEvent. Validates
  identifier syntax, blocks reserved names (input, print, bool, int, float, str,
  abs, min, max, len, set_signal_type), and rejects duplicates.
- SpcPythonBuiltin: FunctionalInterface taking List<SpcPythonValue> args and
  returning SpcPythonValue. Throwing RuntimeException aborts the script with a
  runtime error surfaced in the editor.
- SpcPythonValue: Boundary value type covering None, Bool, Int, Float, and String.
  Factories: none(), ofBool(boolean), ofInt(long), ofFloat(double), ofString(String).
  Coercions: asBool(), asLong(), asDouble(), asString(). Exposes kind() for
  type-dispatched logic.
- Use cases: configuration readouts, Create-integration speed/stress sensors,
  read-only world inspections, math helpers — avoid long-running work or world
  mutations (these run inside the program tick).

### Bug Fixes (included in runtime jar)
- Fixed "done is not defined" NameError (and related NameErrors) in Embedded Python
  blocks where a Python `global` declaration referenced a matching Bool/Int/Float/
  String Variable node on the same program. Variable-node default values are now
  seeded into the committed marker maps at program-load time via the new
  LogoCompiledNode.seedInitialState hook, so Python sees a defined value on tick 1.
  NBT-restored state is preserved (putIfAbsent semantics).
- Variable nodes with disconnected inputs no longer overwrite a matching Python
  global's same-tick write; the pending-value write is now gated on input presence.

### API jar
- storedprogramcontrols-1.1.6-api.jar (45+ classes, 14 packages).