The toolchain is pinned in mise.toml. With mise installed, run:
mise installThis provisions everything the project needs:
- Java 25 (Temurin) — required by Paper 26.3 / Minecraft 26.3
- Gradle 9.7.1 — matches
gradle/wrapper/gradle-wrapper.properties
(Without mise: install a JDK 25 and Gradle 9.7.1 manually.)
git clone https://github.com/AlessioGr/NotQuests.git
cd NotQuestsPoint JAVA_HOME at the pinned Java so Gradle launches with it (the build's
Java 25 toolchain is otherwise auto-provisioned):
export JAVA_HOME="$(mise where java)"The Gradle wrapper jar (gradle/wrapper/gradle-wrapper.jar) is not committed,
so ./gradlew does not work on a fresh clone. Use the mise-provided gradle, and
generate the wrapper once if you prefer ./gradlew afterwards:
gradle wrapper # one-time: creates gradle/wrapper/gradle-wrapper.jar
./gradlew clean build # or: gradle clean buildThe final plugin jar is at:
src/paper/build/libs/notquests-7.0.0-26.3-paper.jar
./gradlew :paper:runServerThis starts a Paper 26.3 test server with the plugin loaded.
For NeoForge 26.3, use ./gradlew :neoforge:runServer.
MockBukkit currently only publishes a 26.2 build, so the in-JVM Paper tests use a separate 26.2 test API. The production plugin compiles against 26.3. Run the real-server sweeps to check both platforms on 26.3; passing the mock tests alone does not verify the server upgrade.
src/core/- NotQuests itself: quests, players, progress, commands, configuration, YAML/SQL persistence, conversations, GUI behavior, migrations, registries, shared messages, and explicit platform contracts. It may use portable libraries such as Adventure/MiniMessage, but must not import Paper, Bukkit, NeoForge, or Minecraft platform classes.src/builtin/- Platform-independent built-in actions, conditions, objectives, triggers, and variables. Builtins use the core registry and platform contracts exactly like external type packs would.src/paper/- Atomic Paper/Bukkit event translation, native rendering/effects, external-plugin integrations, and final Paper jar packaging.src/neoforge/- Atomic NeoForge event translation, native rendering/effects, and mod packaging.e2e/- Real-server command sweeps used locally and in CI
The canonical NotQuests config format is YAML. Core owns it through ConfigurationManager,
DataManager, and YamlConfig. Platform modules do not parse or save NotQuests configuration.
All released 6.3 conversion is isolated in core/migrations/v6_3_0, where old data is read once and
rewritten into the current format.