Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@6fe7eb5a Load World Key when its instance is created (#13818) PaperMC/Paper@944ce44a Fix CraftWorld identifier passing PaperMC/Paper@aa6f09b0 Prevent Happy Ghast from playing mount/dismount noises when silenced (#13807) PaperMC/Paper@7b31cc2b Make leaveMessage in PlayerKickEvent nullable (#13804) PaperMC/Paper@65461225 Update health after setPlayerProfile() (#13717) PaperMC/Paper@1a8417b1 [ci/skip] Add Javadocs for PotionEffect withX methods (#13723) PaperMC/Paper@4af86ff3 Handle null ServerLevel in fromGlobalPos (#13703) PaperMC/Paper@c39822ae reset pending keepalive state on listener handoff during reconfiguration (#13712) PaperMC/Paper@dcf5577a Fix PlayerProfile applySkinToPlayerHeadContents (#13692) PaperMC/Paper@dd203a27 chore: Don't log errors for accepting the EULA via the system property (#13681) PaperMC/Paper@d74f6bc7 Support for Kill damageable entities (#13667) PaperMC/Paper@90aee8e0 Update world methods to take in account environment attributes (#13543) PaperMC/Paper@b2b1e177 Improvement to Vehicle damage events (#13572) PaperMC/Paper@49daadd2 Fix insomniaStartTicks option being ignored for phantom spawning (#13609) PaperMC/Paper@57d84f68 Prevent NPE on ThrownPotion#splash (#13683) PaperMC/Paper@4f184db3 Fix memory leak on constantly damage (#13455) PaperMC/Paper@60073714 Update MOJIRA reference in DeOp command response for multiple targets [ci/skip] (#13812) PaperMC/Paper@4aef3f0a Remove already fixed vanilla bug MC-244739 (#13787) PaperMC/Paper@945aea99 Fix Damager for HangingBreakByEntityEvent and minor improvements (#12615) PaperMC/Paper@a8c05a35 Add an option to WorldCreator to avoid spawn location computation on world creation (#13407) PaperMC/Paper@182b2f8a Add Point Of Interest API (#12117) PaperMC/Paper@8021488e Disconnect State Fixes (#13616) PaperMC/Paper@1f819732 Allow ServerboundChangeGameModePacket if player has /gamemode permissions (#13507) PaperMC/Paper@a64ea13e Re-implement per-world and per-player time (#13814) PaperMC/Paper@acfe105b Add options to disable chunk and block entity ticking (#13821) PaperMC/Paper@651d8481 Finish world key initial migration (#13824) PaperMC/Paper@f4e769a7 Improvements checks for arguments numbers (#13290) PaperMC/Paper@5dc4afc1 Promote build channel to BETA PaperMC/Paper@55be6c0e Fix boat and minecart inventories on region switch [ci/skip] (#13826) PaperMC/Paper@7799bf28 Update Paperclip to v3.0.4
Purpur
Purpur is a drop-in replacement for Paper servers designed for configurability, new fun and exciting gameplay features, and performance built on top of Paper.
Contact
Join us on Discord:
Downloads
Downloads can be obtained from the downloads page or the downloads API.
Downloads API endpoints:
- List versions of Minecraft with builds available:
https://api.purpurmc.org/v2/purpur - List builds for a version of Minecraft:
https://api.purpurmc.org/v2/purpur/<version> - Download a specific build of a specific version:
https://api.purpurmc.org/v2/purpur/<version>/<build>/download - Download the latest build for a version of Minecraft:
https://api.purpurmc.org/v2/purpur/<version>/latest/download
License
All patches are licensed under the MIT license, unless otherwise noted in the patch headers.
See PaperMC/Paper, and PaperMC/Paperweight for the license of material used by this project.
bStats
API
Javadoc
Dependency Information
Maven
<repository>
<id>purpur</id>
<url>https://repo.purpurmc.org/snapshots</url>
</repository>
<dependency>
<groupId>org.purpurmc.purpur</groupId>
<artifactId>purpur-api</artifactId>
<version>[26.1.2.build,)</version>
<scope>provided</scope>
</dependency>
Gradle
repositories {
maven("https://repo.purpurmc.org/snapshots")
}
dependencies {
compileOnly("org.purpurmc.purpur:purpur-api:26.1.2.build.+")
}
Yes, this also includes all API provided by Paper, Spigot, and Bukkit.
Building and setting up
Initial setup
First, clone this repository. Do not download it.
Then run the following command in the root directory:
./gradlew applyAllPatches
The project is now ready for use in your IDE.
Creating a patch
See CONTRIBUTING.md.
Compiling
Use the command ./gradlew build to build the API and server. Compiled JARs
will be placed under purpur-api/build/libs and purpur-server/build/libs.
These JARs are not used to start a server.
To compile a server-ready purpurclip jar, run ./gradlew createMojmapBundlerJar.
To install the purpur-api and purpur dependencies to your local Maven repo, run ./gradlew publishToMavenLocal. The compiled purpurclip jar will be in purpur-server/build/libs.
Special Thanks To:
YourKitYourKit, makers of the outstanding Java profiler, support open source projects of all kinds with their full-featured Java and .NET application profilers. We thank them for allowing us to use their software so we can make Purpur the best it can be. |
JetBrainsJetBrains, creators of the IntelliJ IDEA, supports Purpur with one of their Open Source Licenses. IntelliJ IDEA is the recommended IDE for working with Purpur, and most of the Purpur team uses it. |



