Building
bash
git clone https://github.com/codingsushi79/Papyrus.git
cd Papyrus
# Apply Minecraft patches and compile
./gradlew applyPatches build
# Create the runnable paperclip jar (copied to papyrus-paperclip-*.jar)
./gradlew createPaperclipJar syncPapyrusPaperclipJarOutput: papyrus-server/build/distributions/papyrus-paperclip-<version>.jar
GitHub releases rename this to Papyrus-<minecraft-version>.jar (e.g. Papyrus-26.1.2.jar).
Common Gradle tasks
| Task | Purpose |
|---|---|
./gradlew applyPatches | Apply all Minecraft source patches |
./gradlew build | Compile and run tests |
./gradlew createPaperclipJar | Build the downloadable server jar |
./gradlew syncPapyrusPaperclipJar | Copy paperclip output to papyrus-paperclip-*.jar |
./gradlew rebuildPatches | Regenerate patch files after editing papyrus-server/src/minecraft |
./gradlew fixupSourcePatches | Fix patch context after manual edits |
./gradlew publishToMavenLocal | Install paper-api locally for plugin dev |
Windows: use gradlew instead of ./gradlew.
Requirements
- Git — zip downloads will not build (
settings.gradle.ktschecks for.git/) - Java 25 JDK to compile (Gradle toolchains can auto-provision if only JRE 21+ is installed)
- ~4 GB RAM for Gradle (
org.gradle.jvmargsingradle.properties)
Development requires cloning with Git — the build system applies patches against a generated git tree inside papyrus-server/src/minecraft.
See CONTRIBUTING.md for the patch workflow.
CI and releases
GitHub Actions builds on every push and pull request to main:
- Apply Minecraft patches
- Compile and run tests
- Build the paperclip jar
- Upload artifacts (
papyrus-serverjar + test results)
Pushing a version tag (e.g. v1.0.1) creates a GitHub Release with Papyrus-<mcVersion>.jar attached automatically.
Download CI builds from the Actions tab or the Download page.
