NerolandCore 1.4.0 - Forge 26.2
Curse Maven Snippet
What's new
Minor release — introduces the NeroLink integration surface (za.co.neroland.nerolandcore.link),
the provider SPI the NeroLink Bridge and companion app are built on. The version is a minor bump
only because a new integration surface enters the frozen-between-majors API; every existing API
signature, tag, id, capability and config key is unchanged and no code is removed or altered — a
mod built against 1.3.x continues to compile and run against 1.4.0.
Added
NeroLink link API (za.co.neroland.nerolandcore.link)
- The small, loader-neutral provider SPI a Nero mod uses to plug into NeroLink, and the one surface
the (Core-only) NeroLink Bridge reads from. Core ships only the SPI, an event bus and an alert
store — it registers no
coremodule itself; the bridge providescore's energy/storage/gates/alerts directly from Core's capabilities, so a Core-only server is fully functional. - Discovery —
LinkModuleInfo(module id, mod version, per-moduleschemaVersion, data sections, action ids). The bridge builds its discovery response and the app builds its UI fromNeroLinkRegistry.modules(). - Read side —
LinkSnapshotProvider(moduleId,schemaVersion,sections,snapshot(playerId, section, params)→ GsonJsonObject). Everything returned is already scoped to the player (own-data-only), so authorisation lives at the seam. - Write side —
LinkActionHandler(moduleId,actionIds,execute(...)on the server thread,allowOffline(actionId)defaulting tofalse) returning aLinkActionResult— ok + resulting state, or a stableLinkActionResult.Errorcode (NOT_OWNER,GATE_LOCKED,VALIDATION,ACTION_DISABLED,PLAYER_OFFLINE_REQUIRED,INTERNAL). - Live events —
LinkEvent(module, topic, nullable player for broadcasts,JsonObjectpayload, timestamp) published on a thread-safeLinkEventBus; the bridge turns these into WebSocket deltas and notifications. - Registry —
NeroLinkRegistry, the central static registry: register snapshot providers and action handlers (each with theirLinkModuleInfo), look them up by module id, enumeratemodules()for discovery, and reach the sharedLinkEventBus. Thread-safe (ConcurrentHashMap/ copy-on-write). - Alerts —
LinkAlerts, a persistent per-player alert store (LinkAlert: id, module, severity, text, timestamps, acked/snoozed) behind thecore/alertssection: raise / list / ack / snooze / dismiss. Persisted as vanillaSavedDataon the overworld using the sameSavedDataType+ Codec pattern asProgressionState/PlayerActivity, so a Core-only server persists alerts with no bridge-side storage. - Privacy (POPIA/GDPR) —
LinkAlertsis registered with the shareddata.PlayerDataErasurehook, so one erasure request purges a player's alerts alongside every other mod's data. Alert rows are keyed only by the owning player's UUID and hold non-personal gameplay metadata; snapshots and events are player-scoped by contract; nothing here logs player identity at info.
This mod has no additional files

