From 1894b9ee24d0655ddc5d331afc0988baae2c9e7c Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 18 Jul 2026 16:55:27 +1000 Subject: [PATCH 1/4] Add further Folia checks to catch servers obfuscating that they are Folia --- .../worldedit/bukkit/WorldEditPlugin.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index fddc7a1b8b..f55448eab1 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -525,8 +525,28 @@ BukkitImplAdapter getBukkitImplAdapter() { if (PaperLib.isPaper()) { // Then we can check against the `papermc:folia` key, as per the `isBrandCompatible` javadoc. // This API is experimental so might randomly break on us (hence the try/catch) - // TODO if we drop Spigot support in the future, remove this check and purely use Folia-compatible APIs. - return ServerBuildInfo.buildInfo().isBrandCompatible(Key.key("papermc", "folia")); + if (ServerBuildInfo.buildInfo().isBrandCompatible(Key.key("papermc", "folia"))) { + return true; + } + + boolean hiddenFoliaCheck = false; + + try { + Class.forName("io.papermc.paper.threadedregions.RegionizedServer"); + hiddenFoliaCheck = true; + } catch (ClassNotFoundException ignored) { + } + + try { + Bukkit.class.getMethod("getRegionScheduler"); + hiddenFoliaCheck = true; + } catch (NoSuchMethodException ignored) { + } + + if (hiddenFoliaCheck) { + LOGGER.warn("Server platform not marked as Folia-based, but appears to have Folia-specific code. Assuming this server is running Folia."); + return true; + } } } catch (Throwable t) { // Ignore, this likely means an outdated version. From c7cf764dd5465cc8a6ef466e668f9ef546f73288 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 18 Jul 2026 16:58:34 +1000 Subject: [PATCH 2/4] Move outside wide-reaching throwable catch --- .../worldedit/bukkit/WorldEditPlugin.java | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index f55448eab1..cbc37bc1e6 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -528,31 +528,33 @@ BukkitImplAdapter getBukkitImplAdapter() { if (ServerBuildInfo.buildInfo().isBrandCompatible(Key.key("papermc", "folia"))) { return true; } - - boolean hiddenFoliaCheck = false; - - try { - Class.forName("io.papermc.paper.threadedregions.RegionizedServer"); - hiddenFoliaCheck = true; - } catch (ClassNotFoundException ignored) { - } - - try { - Bukkit.class.getMethod("getRegionScheduler"); - hiddenFoliaCheck = true; - } catch (NoSuchMethodException ignored) { - } - - if (hiddenFoliaCheck) { - LOGGER.warn("Server platform not marked as Folia-based, but appears to have Folia-specific code. Assuming this server is running Folia."); - return true; - } } } catch (Throwable t) { // Ignore, this likely means an outdated version. LOGGER.warn("Failed to check if server is running Folia", t); } + boolean hiddenFoliaCheckPassed = false; + + try { + Class.forName("io.papermc.paper.threadedregions.RegionizedServer"); + hiddenFoliaCheckPassed = true; + } catch (ClassNotFoundException ignored) { + // This is a class existence check, it's fine if not present. + } + + try { + Bukkit.class.getMethod("getRegionScheduler"); + hiddenFoliaCheckPassed = true; + } catch (NoSuchMethodException ignored) { + // This is a method existence check, it's fine if not present. + } + + if (hiddenFoliaCheckPassed) { + LOGGER.warn("Server platform not marked as Folia-based, but appears to have Folia-specific code. Assuming this server is running Folia."); + return true; + } + return false; }); From ca123a9ac58a17c24eb4055589f97e448b17e3e3 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 18 Jul 2026 17:12:10 +1000 Subject: [PATCH 3/4] Make isFolia public --- .../java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index cbc37bc1e6..64414c19cd 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -558,7 +558,12 @@ BukkitImplAdapter getBukkitImplAdapter() { return false; }); - protected boolean isFolia() { + /** + * Returns if this plugin is enabling Folia-specific code. + * + * @return whether to enable Folia-specific code + */ + public boolean isFolia() { return folia.getValue(); } From 8bacc9091fa3d4478cea301b0b96932373a8ac88 Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Sat, 18 Jul 2026 17:19:08 +1000 Subject: [PATCH 4/4] Update worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java Co-authored-by: Octavia Togami --- .../main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index 64414c19cd..52bfe5c001 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -551,7 +551,7 @@ BukkitImplAdapter getBukkitImplAdapter() { } if (hiddenFoliaCheckPassed) { - LOGGER.warn("Server platform not marked as Folia-based, but appears to have Folia-specific code. Assuming this server is running Folia."); + LOGGER.warn("Server platform not marked as Folia-based, but appears to have Folia-specific code. Assuming this server is running Folia. This check is fragile, please tell the author of your server software to report that it is compatible with the `papermc:folia` brand."); return true; }