Remove PaperLib - #3630
Conversation
There was a problem hiding this comment.
Pull request overview
This PR removes the PaperLib dependency and replaces its Paper detection / Paper-only API shims with a new internal PaperSupport utility, aiming to avoid PaperLib’s version-detection side effects that can degrade performance (e.g., synchronous chunk loads during copy operations).
Changes:
- Removed
io.papermc:paperlibfrom Gradle and eliminated its relocations/shading. - Introduced
PaperSupportand migrated Paper checks/calls fromPaperLib.*toPaperSupport.isPaper()and direct Paper API usage. - Updated multiple Bukkit and adapter implementations to use the new Paper detection path.
Reviewed changes
Copilot reviewed 53 out of 53 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java | Replaces PaperLib-based jar/platform checks with PaperSupport gating. |
| worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java | Replaces PaperLib blockstate/chunk async helpers with direct Paper API guarded by PaperSupport. |
| worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitServerInterface.java | Uses PaperSupport for Paper-only tick counting. |
| worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java | Uses PaperSupport for Paper-only Bukkit.getCommandMap() path. |
| worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/PaperSupport.java | New internal Paper detection + small Paper API shims. |
| worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/MinecraftVersion.java | Removes PaperLib dependency and relies on PaperSupport for version parsing strategy. |
| worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/FaweBukkit.java | Swaps PaperLib checks to PaperSupport for Paper-only feature toggles. |
| worldedit-bukkit/build.gradle.kts | Removes PaperLib dependency and its relocation block from shading. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightAdapter.java | Replaces PaperLib Paper detection with PaperSupport. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/regen/PaperweightRegen.java | Replaces PaperLib Paper detection with PaperSupport. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport for Paper/Spigot branching. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport in Paper-only code paths. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport in biome/container access paths. |
| worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport for Paper-only relighting/assumptions. |
| worldedit-bukkit/adapters/adapter-26.2/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightAdapter.java | Replaces PaperLib Paper detection with PaperSupport. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/regen/PaperweightRegen.java | Replaces PaperLib Paper detection with PaperSupport. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport for Paper/Spigot branching. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport in Paper-only code paths. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport in biome/container access paths. |
| worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport for Paper-only relighting/assumptions. |
| worldedit-bukkit/adapters/adapter-26.1/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_9/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_6/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_5/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_4/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlatformAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks_Copy.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightFaweAdapter.java | Replaces PaperLib checks with PaperSupport. |
| worldedit-bukkit/adapters/adapter-1_21_11/build.gradle.kts | Drops PaperLib compileOnly dependency. |
| gradle/libs.versions.toml | Removes PaperLib from the version catalog. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Building is not allowed today apparently... |
Adding our repository to the convention plugin for adapters should work, yarn is (now) proxied and should be available: FastAsyncWorldEdit/worldedit-bukkit/build.gradle.kts Lines 29 to 34 in 1079481 |
Could you take care of that? |
Directly on this PR (same as for the Piston downgrade)? |
Directly here is fine I think |
attempts to fix an issue with yarn not being resolvable from EH
|
Had to exclude |
|
Thanks |
I remember how that works. It will take a short 10 minute refresher for me today but I'll address it in a new PR tonight since I have nothing going on today. If there's a better solution |
|
This is the best solution for now. The Gradle build can be looked at again once #3616 is approved and merged. |
Co-authored-by: Pierre Maurice Schwang <27054324+PierreSchwang@users.noreply.github.com>
Picks up the four commits IntellectualSites/main has since the last sync: f3a7f61 Remove PaperLib (IntellectualSites#3630) e2eddc5 Update dependency me.modmuss50.mod-publish-plugin to v2.2.0 (IntellectualSites#3631) a06d08e Update Gradle to v9.7.1 (IntellectualSites#3632) c5af107 Fix Gradle build performance issues and enable configuration cache support (IntellectualSites#3616) The PaperLib removal was already cherry-picked here from the PR branch (9661c92). Upstream squash-merged it as f3a7f61 and deleted the branch, and the merged form carries one file the branch tip did not: the adapter build logic's repository block, cleaned up during review. That is the only part of it missing, and it is what lands here; the rest of the fork is already free of PaperLib. c5af107 drops worldedit-core's dependsOn(":worldedit-libs:build"), which was the reason a single-module build needed --no-configure-on-demand. It no longer does, and --configuration-cache now stores and reuses an entry cleanly. The fork keeps its own build differences: the JDK 21 toolchain for the older adapters, the Adoptium vendor pin, and the Paper-only jar. Everything else in build.gradle.kts, libs.versions.toml, the wrapper and worldedit-core's build script now matches upstream exactly.
Overview
Description
Just as with IntellectualSites/PlotSquared#4906, PaperLib version detection started to cause problems, e.g., slowing down copy operations by loading chunks synchronously:

Submitter Checklist
@since TODO.