Previous: OverviewใยทใNext: Quick Start
๐ Installation โ
QCL is the foundation of the entire Qinhuai ecosystem, and should be installed first. It has no hard dependencies. Once it is installed, gameplay plugins such as QI/QS/QF/QSt can load correctly.
๐งฐ Environment Requirements โ
| Item | Requirement | Notes |
|---|---|---|
| Server | Paper / Purpur / Spigot 1.21.11+ | โ ๏ธ Paper / Purpur strongly recommended โ see below for the reason |
| Java | 25+ | Purpur 26.1 requires JDK25 |
| MC version | 1.21.11+ | Below this version, startup will be disabled |
| Kotlin (runtime) | 2.3.0 | Pulled automatically by the libraries section โ no manual install needed |
โ QCL has no hard dependencies and can be dropped straight into
plugins/to start.
โ ๏ธ Why must you use Paper / Purpur? (the libraries mechanism) โ
At runtime, QCL needs libraries such as Kotlin, GraalJS, and Groovy4. These libraries are not bundled into the jar. Instead, they are declared in the libraries section of plugin.yml, and the server automatically downloads them from Maven at startup and caches them into the server's libraries/ directory.
- โ
Paper / Purpur natively support the
librariesauto-pull mechanism โ everything works. - โ Pure Spigot does not support this mechanism โ Kotlin / GraalJS may fail to load, and the plugin will not work properly.
๐ก Conclusion: if you can use Paper / Purpur, don't use pure Spigot. This isn't a preference โ QCL's runtime libraries depend on this mechanism.
Startup validation is handled by ServerCompat.validateServer(): at startup it checks for Java โฅ 25 and MC โฅ 1.21.11, and if these aren't met it logs a severe message and disables the plugin.
๐ฆ Installation Steps โ
1๏ธโฃ Drop in the jar โ
Place QinhCoreLib-1.2.0.jar into the server's plugins/ directory.
server root/
โโ plugins/
โ โโ QinhCoreLib-1.2.0.jar โ put it here
โโ libraries/ โ runtime libraries are cached here automatically (Paper/Purpur)
โโ ...2๏ธโฃ Start the server โ
On the first startup, the server will:
- Automatically download Kotlin / GraalJS / Groovy4 from Maven into
libraries/(requires internet; slightly slow the first time); - Run
ServerCompat.validateServer()to validate the Java and MC versions; - Automatically generate QCL's configuration and directories.
3๏ธโฃ Auto-generated directory structure โ
After a successful startup, the following will be generated under plugins/QinhCoreLib/:
plugins/QinhCoreLib/
โโ config.yml # main config (includes the modules: section)
โโ guis/ # custom GUIs (YAML)
โโ scripts/ # scripts (GraalJS / Groovy)
โโ data/ # database / persistent data๐ Throughout this documentation series, YAML and file paths are relative to
plugins/QinhCoreLib/by default.
4๏ธโฃ Verify install โ
After joining the server, run:
/qcl statusIf you see an ecosystem status summary (platform status, health code, module health, etc.), the install succeeded. For a detailed walkthrough, see Quick Start.
๐ชต What logs will you see on first startup? โ
QCL's onEnable runs in the following order, and under normal conditions the logs will reflect these stages:
| Order | Stage | What it does |
|---|---|---|
| 1 | ServerCompat.validateServer | Validate Javaโฅ25, MCโฅ1.21.11 |
| 2 | StartupReporter.reset | Reset the startup report |
| 3 | saveDefaultConfig | Emit the default config.yml |
| 4 | Bridge initialization | EconomyBridge.init + QinhScriptBridge.init |
| 5 | Register commands | Register /qcl using the Cloud framework |
| 6 | CustomGuiManager.init | Load all GUIs under guis/ |
| 7 | Module loading | Register the 22 core modules, calling load()โenable() one by one in ascending priority order |
| 8 | Delay 1 tick | Report item source availability + load Groovy external item modules + print the startup summary |
๐งพ At the very end of startup,
StartupReporter.printSummaryprints a startup summary. This is the key log for confirming that everything is fine โ it's worth a glance on every restart.
โ Java 25 installation tips โ
QCL requires Java 25+ (Purpur 26.1 needs JDK25). If your server is still on Java 17 / 21:
- Download and install JDK 25 (e.g. Temurin / Oracle JDK 25);
- Edit the server startup script so that
javapoints to the JDK25 executable, for example:bash"C:\path\to\jdk-25\bin\java.exe" -jar paper.jar nogui - Use
java -versionto confirm that the output shows 25.
โ ๏ธ If you start with an older Java version, QCL will log a severe error and disable itself, paralyzing the entire ecosystem.
๐ Where do soft dependencies go? โ
QCL's soft dependencies (see the softdepend section of plugin.yml) only affect load order โ they are not mandatory. Just drop them into plugins/ like any other plugin:
Vault ยท ExcellentEconomy ยท PlayerPoints ยท PlaceholderAPI ยท ModelEngine
CustomCrops ยท CustomFishing ยท MythicMobs ยท NeigeItems ยท MMOItems
CraftEngine ยท QinhItems ยท MagicGem ยท ItemsAdder ยท Nexo- โ Installed โ QCL automatically bridges via reflection, and the corresponding capability lights up.
- โ Not installed โ automatically skipped, no error, and the corresponding capability is silently disabled.
Soft dependencies only decide "who loads first", ensuring QCL can bridge correctly after them. For specific integrations, see 03 - External Plugin Integration.
๐ Common installation failures โ
| Symptom / log | Cause | Fix |
|---|---|---|
| Kotlin / GraalJS fail to load, classes not found | Using pure Spigot, which doesn't support the libraries auto-pull mechanism | Switch to Paper / Purpur |
| Severe log says Java version too low, plugin disabled | Java < 25 | Install JDK25 and update the startup script |
| Severe log says MC version too low, plugin disabled | MC < 1.21.11 | Upgrade the server to 1.21.11+ |
| First startup stuck downloading libraries | The server cannot reach Maven | Check the network / configure a Maven mirror |
๐ฉบ For more troubleshooting, see Diagnostics & Troubleshooting and Diagnostic Codes.
๐ Continue reading โ
- Next: Quick Start โ the first thing to do after installing
- Core Concepts โ understanding modules, bridges, and item sources
- Configuration File โ config.yml in detail