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
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).

