-
Notifications
You must be signed in to change notification settings - Fork 0
Commands
NeroLink adds a single command tree, /nerolink, built with vanilla Brigadier so it
behaves identically on every loader. Player sub-commands work for anyone; operator
sub-commands require permission level 2 (game-master / op).
| Sub-command | Who | What it's for |
|---|---|---|
/nerolink pair |
any player | Mint a one-time pairing code for a new device. |
/nerolink devices |
any player | List your own paired devices. |
/nerolink revoke <device> |
any player | Revoke one of your own devices. |
/nerolink status |
op (level 2) | Bridge + relay health, device count, module list. |
/nerolink setup [origin] |
op (level 2) | Register with the relay and open the tunnel. |
/nerolink setup force [origin] |
op (level 2) | Re-register and get a fresh Server ID. |
Mints a single-use pairing code and whispers it — and only it — to the running player. Nothing is broadcast or logged. The whisper contains:
-
Pairing code — format
XXXX-XXXX, bold/gold. Valid for 5 minutes, single-use. - Server ID — shown only when a relay registration is active; this is what players enter in the app alongside the code.
-
Bridge address —
host:portfor LAN/direct mode (the first site-local IPv4 and the configuredport), tagged(LAN/direct mode — NOT the 'open to LAN' game port).
Only a player can run this (it needs an in-game identity); running it from console fails with "Only a player can pair a device." If the bridge isn't running you'll see "The NeroLink bridge is not running on this server."
The in-game session is the identity proof — there are no passwords or emails. A client redeems the code once via the API to receive its device token.
Lists your paired devices, one per line, as deviceName (deviceId). Tokens are never
shown — only names and ids. Ends with a reminder to revoke with
/nerolink revoke <device-id>. If you have none, it prints "No paired devices." Scoped
to the calling player's own devices only.
Revokes one of your own devices by its id (<device> is the device id from
/nerolink devices). The bridge deletes the stored token hash and forgets the device's
rate-limit bucket, so that device can no longer authenticate. If the id isn't one of yours
it fails with "No such device of yours: <id>" — you can never revoke another
player's device.
Operator-only summary of the bridge:
[NeroLink] Bridge running. Paired devices: N. Relay: connected. Server ID: <id>. Modules: core, ...
- Paired devices — an aggregate count across online players (no personal data).
-
Relay —
connected,connecting, ordisabled. - Server ID — shown when a relay registration is active.
-
Modules — the link modules currently registered (always at least
core).
If the bridge isn't running it reports "Bridge is not running."
One-shot relay onboarding. Registers this server with a NeroLink relay
(POST <origin>/register) off the server thread, persists the returned credentials
per-world, and dials the tunnel immediately — no server restart.
- With no argument it uses the
relayOriginconfig value (defaulthttps://nerorelay.neroserver.xyz). -
/nerolink setup <https-origin>registers against a specific relay origin. - If this server is already registered with that origin, plain
setupdoesn't re-register — it just re-dials the existing tunnel and reports the stored Server ID.
On success the operator sees "Relay registered!", then the bold/gold Server ID
(players enter this in the app), the App URL, and a
Tunnel connecting — check /nerolink status hint. The secret serverKey is never printed
or logged.
Failure messages are specific:
- Unreachable — "Could not reach the relay at <origin>…" (check the origin and the server's connection).
-
Registration closed — "Registration is closed on this relay
(
REGISTRATION_OPEN=false)…" (ask the relay operator to reopen it). - Bad response — "The relay returned an unexpected response…" (make sure the origin points at a NeroLink relay).
Same as setup, but discards the stored credentials and registers afresh, producing a
new Server ID even if a registration already exists. Use this to move to a different relay
or rotate the registration. Optionally takes an [origin]
(/nerolink setup force <https-origin>).