node-red-contrib-ffxiv-lumina
v0.2.5
Published
Node-RED palette for FFXIV game data via ffxiv-lumina
Maintainers
Readme
node-red-contrib-ffxiv-lumina
Node-RED palette for ffxiv-lumina. Exposes a shared GameData facade on global context so flows and Function nodes never hold a disposed handle.
Requirements
- Windows with a local FFXIV install
- Node.js 20+
- Node-RED 3+
- .NET 10 runtime
Install
cd ~/.node-red
npm install node-red-contrib-ffxiv-luminaFrom this repo (local ffxiv-lumina):
cd nodered
npm install ../js
cd ~/.node-red
npm install /path/to/Lumina.Node/noderedRestart Node-RED after install.
Nodes
| Node | Role |
| --- | --- |
| lumina-game | Config: game path, global context key (default lumina), optional default resolveRefs. Opens lazily; disposes on redeploy/shutdown. |
| lumina-rotate | Any input to reopen sqpack handles; msg.payload = getVersion(). |
| lumina-row | One row via getRow (sheet/rowId/language/resolveRefs from config or msg). |
| lumina-sheet | Full sheet dump as one array via getRows. |
Function node usage
const lumina = global.get("lumina");
const item = await lumina.getRow("Item", 4);
msg.payload = item?.Name;
return msg;The object from global.get("lumina") is a stable facade. After lumina-rotate, the same reference talks to the new handle.
Set resolveRefs on lumina-game (e.g. true) so Function-node calls resolve references by default. Per-call { resolveRefs: false } or a row/sheet node override turns that off. Resolved refs look like {_sheet, RowId, ...fields} (subrow refs use _rows).
The facade also exposes findRow / findRows / findMatchingRow / findMatchingRows from ffxiv-lumina.
Notes
- Same Windows /
.NETconstraints asffxiv-lumina. - Rotate reopens sqpack handles; bumping the pinned
Lumina.Excelafter a patch still needs a Node-RED restart.
