Skip to content

Remove PaperLib - #3630

Merged
MattBDev merged 3 commits into
mainfrom
fix/paperlib
Aug 24, 2026
Merged

Remove PaperLib#3630
MattBDev merged 3 commits into
mainfrom
fix/paperlib

Conversation

@SirYwell

Copy link
Copy Markdown
Member

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:
image

Submitter Checklist

  • Make sure you are opening from a topic branch (/feature/fix/docs/ branch (right side)) and not your main branch.
  • Ensure that the pull request title represents the desired changelog entry.
  • New public fields and methods are annotated with @since TODO.
  • I read and followed the contribution guidelines.

Copilot AI lite review requested due to automatic review settings August 22, 2026 17:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:paperlib from Gradle and eliminated its relocations/shading.
  • Introduced PaperSupport and migrated Paper checks/calls from PaperLib.* to PaperSupport.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.

@SirYwell

Copy link
Copy Markdown
Member Author

Building is not allowed today apparently...

@SirYwell
SirYwell marked this pull request as ready for review August 22, 2026 18:21
@SirYwell
SirYwell requested a review from a team as a code owner August 22, 2026 18:21
@PierreSchwang

PierreSchwang commented Aug 22, 2026

Copy link
Copy Markdown
Member

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:

maven {
// mirroring + caching from unstable third-party repositories for community plugins (partially limited by routing rules)
// (currently Residence, GriefPrevention, GriefDefender, Towny)
name = "IntellectualSites Repository"
url = uri("https://repo.intellectualsites.dev/repository/maven-all/")
}

@SirYwell

Copy link
Copy Markdown
Member Author

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:

maven {
// mirroring + caching from unstable third-party repositories for community plugins (partially limited by routing rules)
// (currently Residence, GriefPrevention, GriefDefender, Towny)
name = "IntellectualSites Repository"
url = uri("https://repo.intellectualsites.dev/repository/maven-all/")
}

Could you take care of that?

@PierreSchwang

Copy link
Copy Markdown
Member

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:

maven {
// mirroring + caching from unstable third-party repositories for community plugins (partially limited by routing rules)
// (currently Residence, GriefPrevention, GriefDefender, Towny)
name = "IntellectualSites Repository"
url = uri("https://repo.intellectualsites.dev/repository/maven-all/")
}

Could you take care of that?

Directly on this PR (same as for the Piston downgrade)?

@SirYwell

Copy link
Copy Markdown
Member Author

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
Copilot AI review requested due to automatic review settings August 23, 2026 10:25

This comment was marked as spam.

Copilot AI review requested due to automatic review settings August 23, 2026 10:43

This comment was marked as spam.

@PierreSchwang

Copy link
Copy Markdown
Member

Had to exclude yarn explicitly from EngineHub. Not entirely sure how Gradle handles dependency resolution from multiple repositories and why it only requests from EH in that case.
Changing the repository order (and therefor priority) would work, but isn't that great either (for different reasons)

@SirYwell

Copy link
Copy Markdown
Member Author

Thanks

@MattBDev

MattBDev commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Had to exclude yarn explicitly from EngineHub. Not entirely sure how Gradle handles dependency resolution from multiple repositories and why it only requests from EH in that case.

Changing the repository order (and therefor priority) would work, but isn't that great either (for different reasons)

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

@MattBDev

Copy link
Copy Markdown
Contributor

This is the best solution for now. The Gradle build can be looked at again once #3616 is approved and merged.

@MattBDev
MattBDev merged commit f3a7f61 into main Aug 24, 2026
9 checks passed
@MattBDev
MattBDev deleted the fix/paperlib branch August 24, 2026 01:50
MattBDev pushed a commit that referenced this pull request Aug 24, 2026
Co-authored-by: Pierre Maurice Schwang <27054324+PierreSchwang@users.noreply.github.com>
R00tB33rMan added a commit to GemstoneGG/FastAsyncWorldEdit-Folia that referenced this pull request Aug 25, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants