Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/VazkiiMods/Quark/llms.txt

Use this file to discover all available pages before exploring further.

Getting Quark running locally requires only a few tools and a handful of Gradle commands. The build system is powered by NeoForge MDK and the net.neoforged.moddev Gradle plugin, so most of the heavy lifting — downloading Minecraft assets, decompiling sources, and wiring up run configurations — happens automatically the first time you sync.

Prerequisites

Before you begin, make sure the following are installed on your machine:

JDK 21

Quark targets Java 21. The Gradle toolchain will enforce this. Install from Adoptium or any OpenJDK 21 distribution.

Git

Required to clone the repository and manage release tags. Any recent version works.
gradle.properties allocates 3 GB of heap for Gradle JVM processes (-Xmx3G). Make sure your machine has sufficient free memory before running full builds or data generation.

Setup Steps

1

Clone the repository

Clone the Quark repository from GitHub:
git clone https://github.com/VazkiiMods/Quark.git
cd Quark
Quark bundles optional submodules (e.g. QuarkWeb). Initialise them so nothing is missing:
git submodule update --init
2

Review build.properties

Open build.properties in the project root. This file controls the mod’s identity and versioning:
mc_version=1.21.1
version=4.1
build_number=481
mod_id=quark
mod_name=Quark
mapping_channel=official
mapping_version=1.21
dir_output=../Build Output/Quark/
PropertyMeaning
mc_versionTarget Minecraft version — used in dependency coordinates and the release tag
versionMajor mod version series (e.g. 4.1)
build_numberMonotonically-incrementing build counter; combined with version to form the full version string
mod_idMod identifier used throughout NeoForge registration (quark)
mod_nameHuman-readable name used for the archive filename
The final artifact version is assembled in build.gradle as ${version}-${build_number} (plus a -SNAPSHOT suffix in non-release builds).
3

Sync and set up the workspace

Run the initial Gradle sync. This downloads NeoForge, decompiles Minecraft, and generates IDE run configurations:
./gradlew --refresh-dependencies
On Windows use gradlew.bat instead of ./gradlew.
If you use IntelliJ IDEA or Eclipse, the project includes first-class support for both. After the Gradle sync, IDE run configurations named with the (MDG) suffix will appear automatically — use those rather than any older NeoGradle-style ones.
4

Build the mod

Compile the source and produce the output JAR in build/libs/:
./gradlew build
This also runs the PMD syntax check (checkSyntax) as part of the verification task group. A successful build produces three artifacts: the main JAR, a pure JAR (no jar-in-jar dependencies), and a sources JAR.
5

Run the game client

Launch a development client with Quark loaded:
./gradlew runClient
The game directory is set to run/ inside the project root. A runClientBonus variant is also available and loads additional dev-environment mods (JER, NoFog, EMI, Blueprint, Woodworks, Farmers Delight, CC:Tweaked, Immersive Engineering) that are excluded from the standard client run to keep startup time short.
6

Run a development server

Start a headless development server (the --nogui flag is applied automatically):
./gradlew runServer
The server’s game directory is runServer/. A runServerBonus variant mirrors the bonus client configuration for server-side testing with the same extra mods.
7

Generate data (optional)

Quark uses NeoForge’s data generation pipeline to produce JSON resources under src/generated/resources/. Regenerate them after changing data providers:
./gradlew runData
The output is written to src/generated/resources/ and the existing src/main/resources/ directory is used as the “existing” base.

Project Structure

All Quark source lives under src/main/java/org/violetmoon/quark/. The top-level packages reflect the mod’s internal architecture:
PackagePurpose
addonsOptional add-on modules (e.g. the oddities add-on)
apiPublic API surface for other mods to depend on
baseCore mod bootstrap, config system, and shared utilities
catnipStandalone utility library bundled with the mod
contentAll gameplay features, split by category (see below)
datagenData generation providers for recipes, tags, models, etc.
integrationCompatibility code for third-party mods (JEI, Curios, Lootr, …)
mixinMixin patches against Minecraft and NeoForge internals
The content package is further subdivided into categories that match the in-game Quark configuration screen:
Sub-packageCategory
content/automationAutomation and redstone features
content/buildingBuilding blocks and decorative content
content/clientClient-side visual enhancements
content/experimentalUnstable or work-in-progress features
content/managementInventory and item management utilities
content/mobsNew mobs and mob behaviour changes
content/toolsNew tools and usability items
content/tweaksSmall vanilla behaviour tweaks
content/worldWorld generation, biomes, and structures

Key Dependencies

Quark’s dependencies.properties file pins the versions of all runtime and compile-time dependencies. Notable entries relevant to development:
DependencyVersion
NeoForge21.1.230
Zeta (Violet Moon library)1.1-40
JEI19.25.0.324
Curios9.2.2+1.21.1
Biolith3.0.10
Zeta is resolved as a changing artifact (re-checked every hour) because it is in active development alongside Quark. If you are working on features that span both repositories, see CLAUDE.md for notes on using a local Zeta checkout.

Build docs developers (and LLMs) love