From d0ad6e7da6db9473e0b95aaf6272b28107351eeb Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Sat, 28 Feb 2026 11:01:00 +0100 Subject: [PATCH 1/6] Build with Java 25 (#3466) --- .github/workflows/build-pr.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/upload-release-assets.yml | 2 +- .../main/kotlin/buildlogic.common-java.gradle.kts | 2 +- .../src/main/kotlin/buildlogic.common.gradle.kts | 2 +- gradle/libs.versions.toml | 3 +++ worldedit-bukkit/build.gradle.kts | 1 + .../core/history/change/ChangePopulator.java | 3 +-- .../core/internal/simd/SimdSupport.java | 13 ++++++++++--- 10 files changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index 4e00f8f217..e2f2cd543e 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -17,7 +17,7 @@ jobs: with: distribution: temurin cache: gradle - java-version: 21 + java-version: 25 - name: Build on ${{ matrix.os }} run: ./gradlew build -s - name: Archive artifacts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0011fdcade..2553f323a9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: with: distribution: temurin cache: gradle - java-version: 21 + java-version: 25 - name: Build run: ./gradlew build - name: Determine release status diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e10ce431a3..b3e15fccb9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,7 +25,7 @@ jobs: with: distribution: temurin cache: gradle - java-version: 21 + java-version: 25 - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: diff --git a/.github/workflows/upload-release-assets.yml b/.github/workflows/upload-release-assets.yml index e1d4f391ac..a510c5ae92 100644 --- a/.github/workflows/upload-release-assets.yml +++ b/.github/workflows/upload-release-assets.yml @@ -15,7 +15,7 @@ jobs: with: distribution: temurin cache: gradle - java-version: 21 + java-version: 25 - name: Clean Build run: ./gradlew clean build --no-daemon - name: Upload Release Assets diff --git a/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts index 1d92782248..cc46c1734a 100644 --- a/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts @@ -15,7 +15,7 @@ tasks val disabledLint = listOf( "processing", "path", "fallthrough", "serial", "overloads", "this-escape", ) - options.release.set(21) + sourceCompatibility = "21" options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" }) options.isDeprecation = true options.encoding = "UTF-8" diff --git a/build-logic/src/main/kotlin/buildlogic.common.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts index 227ec60d08..c47abfe3f1 100644 --- a/build-logic/src/main/kotlin/buildlogic.common.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts @@ -13,7 +13,7 @@ configurations.all { plugins.withId("java") { the().toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) + languageVersion.set(JavaLanguageVersion.of(25)) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8bf868d176..399e45393f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -39,6 +39,7 @@ vault = "1.7.1" serverlib = "2.3.7" linbus = "0.2.0" autoService = "1.1.1" +guice = "7.0.0" ## Internal text-adapter = "3.0.6" @@ -125,6 +126,8 @@ linBus-stream = { group = "org.enginehub.lin-bus", name = "lin-bus-stream" } linBus-tree = { group = "org.enginehub.lin-bus", name = "lin-bus-tree" } linBus-format-snbt = { group = "org.enginehub.lin-bus.format", name = "lin-bus-format-snbt" } +guice = { group = "com.google.inject", name = "guice", version.ref = "guice" } + # Internal ## Text kyoriText-adapter-bukkit = { group = "net.kyori", name = "text-adapter-bukkit", version.ref = "text-adapter" } diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index b22c6f15b4..c169b8905b 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -130,6 +130,7 @@ dependencies { compileOnly(libs.towny) { isTransitive = false } compileOnly(libs.plotsquared.bukkit) { isTransitive = false } compileOnly(libs.plotsquared.core) { isTransitive = false } + compileOnly(libs.guice) // Third party implementation(libs.serverlib) diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/history/change/ChangePopulator.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/history/change/ChangePopulator.java index 84424d9488..a75d0e6e21 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/history/change/ChangePopulator.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/history/change/ChangePopulator.java @@ -14,7 +14,6 @@ public interface ChangePopulator { static ChangePopulator empty() { class Empty implements ChangePopulator { - private static final Empty EMPTY = new Empty(); @Override public @NotNull C create() { @@ -36,7 +35,7 @@ public boolean accepts(final Change change) { return false; } } - return Empty.EMPTY; + return new Empty(); } @SuppressWarnings("unchecked") diff --git a/worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/SimdSupport.java b/worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/SimdSupport.java index 8adca710a2..ba12f47e9e 100644 --- a/worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/SimdSupport.java +++ b/worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/SimdSupport.java @@ -24,6 +24,7 @@ public class SimdSupport { private static final Logger LOGGER = LogManagerCompat.getLogger(); private static final boolean VECTOR_API_PRESENT; + private static final boolean JAVA_25_OR_NEWER = Runtime.version().feature() >= 25; static { boolean vectorApiPresent = false; @@ -36,7 +37,7 @@ public class SimdSupport { if (!VECTOR_API_PRESENT && Settings.settings().EXPERIMENTAL.USE_VECTOR_API) { LOGGER.warn(""" FAWE use-vector-api is enabled but --add-modules=jdk.incubator.vector is not set. - Vector instructions will not be used. + Vector instructions will not be used.\ """); } else if (VECTOR_API_PRESENT && !Settings.settings().EXPERIMENTAL.USE_VECTOR_API) { LOGGER.warn(""" @@ -44,11 +45,17 @@ public class SimdSupport { FAWE can use vector instructions, but it is disabled in the config. Enable use-vector-api to benefit from vector instructions with FAWE.\ """); + } else if (VECTOR_API_PRESENT && !JAVA_25_OR_NEWER) { + LOGGER.warn(""" + The server is running with the --add-modules=jdk.incubator.vector option. + However, Java 25+ is required due to compatibility problems. + Update to Java 25 to make use of this feature.\ + """); } } public static boolean useVectorApi() { - return VECTOR_API_PRESENT && Settings.settings().EXPERIMENTAL.USE_VECTOR_API; + return VECTOR_API_PRESENT && JAVA_25_OR_NEWER && Settings.settings().EXPERIMENTAL.USE_VECTOR_API; } public static @Nullable VectorizedMask vectorizedTargetMask(Mask mask) { @@ -72,7 +79,7 @@ public static boolean useVectorApi() { private static VectorizedMask vectorizedTargetMaskNonAir() { // everything > VOID_AIR is not air - return (set, get, species) -> get.get(species).compare(VectorOperators.UNSIGNED_GT, BlockTypesCache.ReservedIDs.VOID_AIR); + return (set, get, species) -> get.get(species).compare(VectorOperators.UGT, BlockTypesCache.ReservedIDs.VOID_AIR); } private static VectorizedMask vectorizedTargetMask(char ordinal) { From e9312286282433cca88d4c5c5a8e4a34f27cba23 Mon Sep 17 00:00:00 2001 From: Jordan Date: Sat, 28 Feb 2026 10:01:21 +0000 Subject: [PATCH 2/6] fix: add "missing" config values to worldedit-config (#3465) --- .../src/main/resources/defaults/worldedit-config.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/worldedit-bukkit/src/main/resources/defaults/worldedit-config.yml b/worldedit-bukkit/src/main/resources/defaults/worldedit-config.yml index b74eaa0919..f3736fdb45 100644 --- a/worldedit-bukkit/src/main/resources/defaults/worldedit-config.yml +++ b/worldedit-bukkit/src/main/resources/defaults/worldedit-config.yml @@ -24,6 +24,11 @@ limits: max-polygonal-points: default: -1 maximum: 20 + max-polyhedron-points: + default: -1 + maximum: 20 + vertical-height: + default: 256 # radius, superpickaxe, brush radius are ignored, use FAWE config limits max-radius: -1 max-super-pickaxe-size: 5 @@ -84,6 +89,7 @@ history: calculation: timeout: 100 + max-timeout: 300 debugging: trace-unflushed-sessions: false From f28a437fad79eccbc35296e7d4e12fd76c1a4feb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:12:12 +0000 Subject: [PATCH 3/6] Update dependency com.gradleup.shadow:shadow-gradle-plugin to v9.3.2 (#3467) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 399e45393f..3530d0d25e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -54,7 +54,7 @@ junit = "6.0.3" pluginyml = "0.6.0" mod-publish-plugin = "1.1.0" grgit = "5.3.3" -shadow = "9.3.1" +shadow = "9.3.2" paperweight = "2.0.0-SNAPSHOT" codecov = "0.2.0" From 0cba54d05894dc8812220ebd681588ecd24824b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:12:48 +0000 Subject: [PATCH 4/6] Update bstats to v3.2.1 (#3468) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3530d0d25e..7da687c62f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ towny = "0.102.0.7" plotsquared = "7.5.11" # Third party -bstats = "3.1.0" +bstats = "3.2.1" sparsebitset = "1.3" parallelgzip = "1.0.5" adventure = "4.26.1" From aa77a3240bb09cb4d46e3d27bdb84c9a4aab943f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:16:58 +0000 Subject: [PATCH 5/6] Update dependency org.mockito:mockito-bom to v5.22.0 (#3469) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7da687c62f..0094b39a51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -47,7 +47,7 @@ text = "3.0.4" piston = "0.5.11" # Tests -mockito = "5.21.0" +mockito = "5.22.0" junit = "6.0.3" # Gradle plugins From 5067cbde81fcacca65545f35909c7024e16ee0f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:19:17 +0000 Subject: [PATCH 6/6] Update actions/upload-artifact action to v7 (#3470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build-pr.yml | 2 +- .github/workflows/build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index e2f2cd543e..12e35e3ad7 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -21,7 +21,7 @@ jobs: - name: Build on ${{ matrix.os }} run: ./gradlew build -s - name: Archive artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 if: ${{ matrix.os == 'ubuntu-latest' }} # only upload once, use linux builds with: name: FastAsyncWorldEdit-SNAPSHOT diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2553f323a9..06e0f87e38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,7 +67,7 @@ jobs: target-branch: main target-directory: worldedit-bukkit - name: Archive Artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: FastAsyncWorldEdit-Bukkit-SNAPSHOT path: worldedit-bukkit/build/libs/FastAsyncWorldEdit-*.jar