Skip to content

Latest commit

 

History

History
76 lines (52 loc) · 2.78 KB

CONTRIBUTING.md

File metadata and controls

76 lines (52 loc) · 2.78 KB

Contributing to NotQuests

Prerequisites

The toolchain is pinned in mise.toml. With mise installed, run:

mise install

This 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.)

Setup

git clone https://github.com/AlessioGr/NotQuests.git
cd NotQuests

Point 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)"

Building

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 build

The final plugin jar is at:

src/paper/build/libs/notquests-7.0.0-26.3-paper.jar

Running a test server

./gradlew :paper:runServer

This 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.

Project structure

  • 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

Config format

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.