English
stable/Trials Build & Development
This page documents the source code build, testing, and development specifications for the stable/Trials branch targeting Minecraft 1.20.1 + Forge 47.x. For routine server deployment, please directly use pre-compiled mod JARs published on GitHub Releases.
Environment Requirements
| Item | Requirement | Note |
|---|---|---|
| Operating System | Linux / macOS / Windows | Supports Bash, PowerShell, and WSL |
| JDK | 64-bit JDK 17 | Eclipse Temurin 17 or Zulu 17 recommended |
| Git | 2.x or higher | Release build tasks rely on Git commit metadata |
| Network Connection | Access to Maven repositories and Forge services | Initial build requires downloading dependencies and Forge assets |
Getting Source Code
Clone the repository and check out the stable/Trials branch:
bash
git clone https://github.com/CraftAmethyst/Luminara.git
cd Luminara
git checkout stable/TrialsStandard Release Build
Use the project's built-in Gradle Wrapper to perform release builds and static convention checks:
bash
./gradlew check assembleForgeMod verifyForgeModDistributionpowershell
.\gradlew.bat check assembleForgeMod verifyForgeModDistributioncmd
gradlew.bat check assembleForgeMod verifyForgeModDistributionBuild Artifacts
Upon a successful build, release artifacts are located in build/distributions/ at the root directory:
text
build/distributions/
├── luminara-forge-1.20.1-1.0.15-hotfix.jar
└── luminara-forge-1.20.1-1.0.15-hotfix.jar.sha256The generated .jar is a standard Forge server mod. Simply place it into the mods/ directory of your Dedicated Server; .sha256 contains the checksum for this artifact.
Build Parameters
Specify Forge Version: By default, the build script automatically resolves the latest Forge version suitable for Minecraft 1.20.1. To lock a specific Forge version, pass
-PforgeVersion:bash./gradlew assembleForgeMod -PforgeVersion=47.4.22Specify Git Commit Hash: Release builds default to reading the commit hash via
git rev-parse --short HEADand embedding it into metadata. In detached HEAD or custom packaging pipelines, you can manually pass a 7–40 character hexadecimal commit hash:bash./gradlew assembleForgeMod -PluminaraGitHash=a1b2c3d
Static Verification & Gates
Mod Convention Check (verifyForgeModDistribution)
verifyForgeModDistribution unpacks the mod JAR after packaging and performs static whitelist/blacklist checks:
- Verifies inclusion of metadata such as
META-INF/mods.toml,META-INF/accesstransformer.cfg, andMETA-INF/luminara-version.properties. - Verifies inclusion of all core Mixin configurations (
mixins.arclight.core.json,bukkit.json,forge.json,compat.json,impl.forge.optimization.json). - Verifies that the Manifest contains
MixinConnector: io.izzel.arclight.common.mod.ArclightConnector. - Verifies that no legacy launcher class files or configurations remain.
Runtime Smoke Test (smokeServer)
Trials provides an integrated smoke test on a real Forge server environment:
bash
./gradlew smokeServerThe smokeServer task automatically runs the following workflow:
- Downloads and installs a clean Forge Dedicated Server of the corresponding version.
- Mounts the built Luminara mod into
mods/, injecting dedicated test mods (smokeModJar) and test Bukkit plugins (smokePluginJar). - Launches the server process, monitors console output, and asserts critical milestones:
- Server reaches
Done (...)properly. - Test mod and test plugin load and output handshake logs.
- Core Bukkit API invocations function properly.
- JUL-to-Log4j log routing bridge functions properly.
- Core enum unfinalization (
Material,SpawnCategory) takes effect. /luminara infoand version details output correctly.
- Server reaches
If you need to keep the full test server directory after the test completes for manual debugging or inspecting logs, run:
bash
./gradlew runNativeForgeServerFull Verification Gate (verify)
Runs all subproject unit tests, static distribution verification, and native Forge Dedicated Server smoke tests:
bash
./gradlew verifyReproducible Build Verification (verifyReproducibleForgeMod)
When modifying dependency configurations, archive packaging logic, or underlying bytecode remapping, run the reproducible build verification:
bash
./gradlew verifyReproducibleForgeModThis task runs two independent builds in temporary directories and compares every entry in the Forge mod JAR byte-for-byte.
Module Structure & Boundaries
The Trials branch consists of the following primary modules:
arclight-common: Core compatibility layer. Contains Bukkit/Spigot/Paper API implementations, common Mixins, event dispatch bridging, server remapping, and runtime support.arclight-forge: Forge platform implementation. Responsible for Forge event bus mounting, Forge-specific Mixins, platform metadata, and mod JAR packaging.i18n-config: Configuration and internationalization system. Responsible for reading and writingluminara.yml, version metadata injection, and multilingual text parsing.buildSrc: Project-specific Gradle plugins and custom tasks (including Spigot generation, remapping, Forge smoke testing, and packaging verification tasks).
