Skip to content

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 โ€‹

ItemRequirementNotes
ServerPaper / Purpur / Spigot 1.21.11+โš ๏ธ Paper / Purpur strongly recommended โ€” see below for the reason
Java25+Purpur 26.1 requires JDK25
MC version1.21.11+Below this version, startup will be disabled
Kotlin (runtime)2.3.0Pulled 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 libraries auto-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:

  1. Automatically download Kotlin / GraalJS / Groovy4 from Maven into libraries/ (requires internet; slightly slow the first time);
  2. Run ServerCompat.validateServer() to validate the Java and MC versions;
  3. 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 status

If 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:

OrderStageWhat it does
1ServerCompat.validateServerValidate Javaโ‰ฅ25, MCโ‰ฅ1.21.11
2StartupReporter.resetReset the startup report
3saveDefaultConfigEmit the default config.yml
4Bridge initializationEconomyBridge.init + QinhScriptBridge.init
5Register commandsRegister /qcl using the Cloud framework
6CustomGuiManager.initLoad all GUIs under guis/
7Module loadingRegister the 22 core modules, calling load()โ†’enable() one by one in ascending priority order
8Delay 1 tickReport item source availability + load Groovy external item modules + print the startup summary

๐Ÿงพ At the very end of startup, StartupReporter.printSummary prints 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:

  1. Download and install JDK 25 (e.g. Temurin / Oracle JDK 25);
  2. Edit the server startup script so that java points to the JDK25 executable, for example:
    bash
    "C:\path\to\jdk-25\bin\java.exe" -jar paper.jar nogui
  3. Use java -version to 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 / logCauseFix
Kotlin / GraalJS fail to load, classes not foundUsing pure Spigot, which doesn't support the libraries auto-pull mechanismSwitch to Paper / Purpur
Severe log says Java version too low, plugin disabledJava < 25Install JDK25 and update the startup script
Severe log says MC version too low, plugin disabledMC < 1.21.11Upgrade the server to 1.21.11+
First startup stuck downloading librariesThe server cannot reach MavenCheck the network / configure a Maven mirror

๐Ÿฉบ For more troubleshooting, see Diagnostics & Troubleshooting and Diagnostic Codes.


๐Ÿ“š Continue reading โ€‹