diff --git a/leaf-api/paper-patches/features/0015-Use-warning-instead-of-direct-throw.patch b/leaf-api/paper-patches/features/0015-Better-warning-message-for-discouraging-Maven-Centra.patch similarity index 52% rename from leaf-api/paper-patches/features/0015-Use-warning-instead-of-direct-throw.patch rename to leaf-api/paper-patches/features/0015-Better-warning-message-for-discouraging-Maven-Centra.patch index f54b4b3e..59a91ab4 100644 --- a/leaf-api/paper-patches/features/0015-Use-warning-instead-of-direct-throw.patch +++ b/leaf-api/paper-patches/features/0015-Better-warning-message-for-discouraging-Maven-Centra.patch @@ -1,36 +1,24 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Mon, 30 Jun 2025 02:41:48 +0800 -Subject: [PATCH] Use warning instead of direct throw +Subject: [PATCH] Better warning message for discouraging Maven Central as CDN Dreeam's Note: -We use soft warning which in Paper is directly exception throw, -Only print warning to avoid break plugins directly. - Also see `Configurable LibraryLoader maven repos` patch, able to match googleapi mirror urls, to replace to repo url we custom defined. This able to switch back to maven central repo, to prevent situation that dependencies exist in maven central, but not in mirror. diff --git a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java -index c1fccd64b1329e31ccf7e6a11853ce3a749b7ea4..b0069a05c322e058f0df668908f0918c0b85a814 100644 +index c1fccd64b1329e31ccf7e6a11853ce3a749b7ea4..6e0be8c43502aece01371554c3ff60cb97f12944 100644 --- a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java +++ b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java -@@ -121,10 +121,13 @@ public class MavenLibraryResolver implements ClassPathLibrary { - */ +@@ -122,7 +122,7 @@ public class MavenLibraryResolver implements ClassPathLibrary { public void addRepository(final RemoteRepository remoteRepository) { if (MAVEN_CENTRAL_URLS.stream().anyMatch(remoteRepository.getUrl()::startsWith)) { -- LOGGER.warn( + LOGGER.warn( - "Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead.", -- new RuntimeException("Plugin used Maven Central for library resolution") -- ); -+ // Leaf start - Use warning instead of direct throw -+ try { -+ throw new RuntimeException("Plugin used Maven Central for library resolution"); -+ } catch (RuntimeException e) { -+ LOGGER.error("Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead. Please contact plugin's support for help.", e); -+ } -+ // Leaf end - Use warning instead of direct throw ++ "Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead. DO NOT report it to Paper or Leaf! Please contact plugin's support to adapt this change.", // Leaf - Better warning message for discouraging Maven Central as CDN + new RuntimeException("Plugin used Maven Central for library resolution") + ); } - this.repositories.add(remoteRepository); - } diff --git a/leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch b/leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch index 9a125a56..aeb6770d 100644 --- a/leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch +++ b/leaf-api/paper-patches/features/0016-Configurable-LibraryLoader-maven-repos.patch @@ -7,7 +7,7 @@ Add JVM flag `-DLeaf.library-download-repo=link` to choose library download repo e.g. `-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public` diff --git a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java -index b0069a05c322e058f0df668908f0918c0b85a814..b899e9cbb2658c7f08343b2e6500fb34427fc238 100644 +index 6e0be8c43502aece01371554c3ff60cb97f12944..ab239c0ea1b63b6b8455f11b4c7ec089969c049f 100644 --- a/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java +++ b/src/main/java/io/papermc/paper/plugin/loader/library/impl/MavenLibraryResolver.java @@ -59,12 +59,25 @@ public class MavenLibraryResolver implements ClassPathLibrary { @@ -38,16 +38,11 @@ index b0069a05c322e058f0df668908f0918c0b85a814..b899e9cbb2658c7f08343b2e6500fb34 private static final Logger LOGGER = LoggerFactory.getLogger("MavenLibraryResolver"); private final RepositorySystem repository; -@@ -120,15 +133,34 @@ public class MavenLibraryResolver implements ClassPathLibrary { +@@ -120,12 +133,33 @@ public class MavenLibraryResolver implements ClassPathLibrary { * dependencies from */ public void addRepository(final RemoteRepository remoteRepository) { - if (MAVEN_CENTRAL_URLS.stream().anyMatch(remoteRepository.getUrl()::startsWith)) { -- // Leaf start - Use warning instead of direct throw -- try { -- throw new RuntimeException("Plugin used Maven Central for library resolution"); -- } catch (RuntimeException e) { -- LOGGER.error("Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead. Please contact plugin's support for help.", e); + // Leaf start - Configurable LibraryLoader maven repos + for (String url : MAVEN_CENTRAL_URLS) { + if (remoteRepository.getUrl().startsWith(url)) { @@ -56,16 +51,14 @@ index b0069a05c322e058f0df668908f0918c0b85a814..b899e9cbb2658c7f08343b2e6500fb34 + this.repositories.add(mirrorRepo); + return; + } -+ // Leaf start - Use warning instead of direct throw -+ try { -+ throw new RuntimeException("Plugin used Maven Central for library resolution"); -+ } catch (RuntimeException e) { -+ LOGGER.error("Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead. Please contact plugin's support for help.", e); -+ } -+ // Leaf end - Use warning instead of direct throw - } -- // Leaf end - Use warning instead of direct throw - } ++ // Leaf end - Configurable LibraryLoader maven repos + LOGGER.warn( + "Use of Maven Central as a CDN is against the Maven Central Terms of Service. Use MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR instead. DO NOT report it to Paper or Leaf! Please contact plugin's support to adapt this change.", // Leaf - Better warning message for discouraging Maven Central as CDN + new RuntimeException("Plugin used Maven Central for library resolution") + ); ++ // Leaf start - Configurable LibraryLoader maven repos ++ } ++ } + // Match google api maven central mirror urls + for (String url : MAVEN_CENTRAL_GOOGLE_MIRROR_URLS) { + if (remoteRepository.getUrl().startsWith(url)) { @@ -75,12 +68,12 @@ index b0069a05c322e058f0df668908f0918c0b85a814..b899e9cbb2658c7f08343b2e6500fb34 + return; + } + } -+ } + } + // Leaf end - Configurable LibraryLoader maven repos this.repositories.add(remoteRepository); } -@@ -165,4 +197,15 @@ public class MavenLibraryResolver implements ClassPathLibrary { +@@ -162,4 +196,15 @@ public class MavenLibraryResolver implements ClassPathLibrary { } return central; }