Skip to content

Diagnostics & Troubleshooting Guide

Part of: Reference · Related: Validation Error Quick Reference · Commands

QI provides a set of diagnostic commands to help you locate problems. This page explains what each command outputs and how to read each metric.


1. Diagnostic Command Overview

CommandPurpose
/qi statusBrief load status (item count / problems / compile failures)
/qi inspectDetailed status inspection
/qi diagnoseFull diagnostic report (subsystem availability)
/qi problemsList all known problems
/qi problems summaryProblem summary
/qi trigger reportAction trigger configuration report

2. How to Read the Startup Log

On startup / reload, QinhItemsStartupLog prints a summary:

Item definitions: 123 · ActionTable 45
Bridge: 3 · Layer: 4 · Handler: 12
Combat: enabled · Attribute backend: attributeplus (connected)
Gems: LI(LC✔·8 sockets) · MG(2 sockets)
Diagnostics: 30/30 items available
LineMeaningHow to read
Item definitions / ActionTableNumber of loaded items, action tablesA noticeably low number → some files didn't load, check /qi problems
Bridge / Layer / HandlerCount of bridges, layer contributors, handlersHandler should include qinhskills:cast (if QS is installed)
CombatCombat module statusdisabled (pure item library) = combat not enabled
Attribute backendAP connection statusnoop = AP not detected
GemsSocket count for LI / MG backendsLC✔ = LegendCore bridge registered
DiagnosticsAvailable items / total itemsNumerator ≠ denominator → some subsystem is abnormal

3. /qi diagnose Report Items

Diagnose lists the health status of each entity one by one (ItemsDiagnostics):

Report entityMeaningAttached hints
QinhItem:<id>Item definition healthtype / quality / action file / config version
ActionTable:<itemId>Action tablebinding count
ActionTableProblemAction load error
FailureFile:<kind>YAML parse failure fileitem / action
ProviderBridge:<id>Provider bridgewhether available
ExternalResolver:<prefix>External item resolver
LayerContributor:<namespace>Layer contributororder
ActionHandler:<id>Action handler

The summary also provides: item / section / affix / action table counts, format and category per source, compile failures, reload problems, and grouped failure files.


4. Common Problem Diagnosis Flows

Problem: An item didn't load

1. /qi status         → Check if "problems" count is > 0
2. /qi problems       → Find the error for the corresponding item
3. Cross-reference Validation Error Quick Reference → Fix the YAML per the error
4. /qi reload         → Reload

For error meanings, see Validation Error Quick Reference.

Problem: Actions don't trigger

1. /qi trigger report                  → Confirm the item's trigger config is loaded
2. /qi trigger test <id> <player>      → Manually execute the first trigger binding, check if it works
3. Check whether the trigger atom is appropriate (right_click on air may not fire, switch to left_click)
4. Check whether the handler is registered (use diagnose to view the ActionHandler list)
5. Remember /qi reload after editing YAML (actions only load on reload)

Problem: Attributes not applied

1. Check "Attribute backend" in the startup log
   · noop          → AP not installed, or combat.enabled: false
   · attributeplus → Normal
2. Check console for "mapping name does not exist" warnings → Edit attribute-mapping to align with AP
3. After equipping the item, use /qi refresh hand to force a refresh

For details, see Attributes & Values.

Problem: Gem sockets not recognized

1. Check the "Gems" line in the startup log: are the LI/MG backends enabled, is the socket count > 0
2. Verify the lore in integrations/legendinlay_sockets.yml matches LI's side character-for-character
3. LegendCore bridge: check the log for "checking LegendCore/groovy/QinhItemsModule.groovy"

For details, see Integration Practice → Legendinlay.


5. Interpreting Health Metrics

An item is only considered healthy when its healthIssues() is empty. Unhealthy items still load but are listed as problems. For common causes of unhealthiness, see Validation Error Quick Reference §1.

The "N/M items available" in /qi diagnose: M is the total diagnostic items, N is the currently available items. The difference is the number of abnormal subsystems—go through each one to see which is unavailable.


Changed the config but old items on players didn't update? Use the refresh commands to re-render:

/qi refresh all          # All online players
/qi refresh hand         # Main hand only (fast for self-testing)

Refresh = rebuild() + variables().refresh() on each QI item, preserving instance / seed. See Random Generation → Refresh Service.


Next Steps