mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
- Better warning message for discouraging Maven Central as CDN - Fix infinite loop in dismount loc check
104 lines
6.1 KiB
Diff
104 lines
6.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
|
|
Date: Sat, 3 Feb 2024 18:45:53 -0500
|
|
Subject: [PATCH] Configurable LibraryLoader maven repos
|
|
|
|
Add JVM flag `-DLeaf.library-download-repo=link` to choose library download repo link.
|
|
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 0f26a192b709cbcda83fad0a0a78f87dbb9e701e..b0e20089283b2fb3fa0c65f96e1f6bd6634712e9 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
|
|
@@ -60,12 +60,25 @@ public class MavenLibraryResolver implements ClassPathLibrary {
|
|
* <p>This repository is also used by the legacy {@link org.bukkit.plugin.java.LibraryLoader}.</p>
|
|
*/
|
|
public static final String MAVEN_CENTRAL_DEFAULT_MIRROR = getDefaultMavenCentralMirror();
|
|
- private static final List<String> MAVEN_CENTRAL_URLS = List.of(
|
|
+ // Leaf start - Configurable LibraryLoader maven repos
|
|
+ @org.jspecify.annotations.Nullable
|
|
+ public static final RemoteRepository CUSTOM_MAVEN_CENTRAL_MIRROR_REPO = getCustomCentralMirrorRepo();
|
|
+ private static final String[] MAVEN_CENTRAL_URLS = new String[]{
|
|
"https://repo1.maven.org/maven2",
|
|
"http://repo1.maven.org/maven2",
|
|
"https://repo.maven.apache.org/maven2",
|
|
"http://repo.maven.apache.org/maven2"
|
|
- );
|
|
+ };
|
|
+ // From https://storage-download.googleapis.com/maven-central/index.html
|
|
+ private static final String[] MAVEN_CENTRAL_GOOGLE_MIRROR_URLS = new String[]{
|
|
+ "https://maven-central.storage-download.googleapis.com/maven2",
|
|
+ "http://maven-central.storage-download.googleapis.com/maven2",
|
|
+ "https://maven-central-eu.storage-download.googleapis.com/maven2",
|
|
+ "http://maven-central-eu.storage-download.googleapis.com/maven2",
|
|
+ "https://maven-central-asia.storage-download.googleapis.com/maven2",
|
|
+ "http://maven-central-asia.storage-download.googleapis.com/maven2"
|
|
+ };
|
|
+ // Leaf end - Configurable LibraryLoader maven repos
|
|
// Paper end - Avoid and discourage use of Maven Central as a CDN
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger("MavenLibraryResolver");
|
|
@@ -124,12 +137,33 @@ public class MavenLibraryResolver implements ClassPathLibrary {
|
|
*/
|
|
public void addRepository(final RemoteRepository remoteRepository) {
|
|
// Paper start - Avoid and discourage use of Maven Central as a CDN
|
|
- if (MAVEN_CENTRAL_URLS.stream().anyMatch(remoteRepository.getUrl()::startsWith)) {
|
|
+ // Leaf start - Configurable LibraryLoader maven repos
|
|
+ for (String url : MAVEN_CENTRAL_URLS) {
|
|
+ if (remoteRepository.getUrl().startsWith(url)) {
|
|
+ RemoteRepository mirrorRepo = CUSTOM_MAVEN_CENTRAL_MIRROR_REPO;
|
|
+ if (mirrorRepo != null) {
|
|
+ this.repositories.add(mirrorRepo);
|
|
+ return;
|
|
+ }
|
|
+ // 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)) {
|
|
+ RemoteRepository mirrorRepo = CUSTOM_MAVEN_CENTRAL_MIRROR_REPO;
|
|
+ if (mirrorRepo != null) {
|
|
+ this.repositories.add(mirrorRepo);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
}
|
|
+ // Leaf end - Configurable LibraryLoader maven repos
|
|
// Paper end - Avoid and discourage use of Maven Central as a CDN
|
|
this.repositories.add(remoteRepository);
|
|
}
|
|
@@ -169,4 +203,15 @@ public class MavenLibraryResolver implements ClassPathLibrary {
|
|
return central;
|
|
}
|
|
// Paper end - Avoid and discourage use of Maven Central as a CDN
|
|
+
|
|
+ // Leaf start - Configurable LibraryLoader maven repos
|
|
+ @org.jspecify.annotations.Nullable
|
|
+ private static RemoteRepository getCustomCentralMirrorRepo() {
|
|
+ String mirrorAddr = System.getProperty("Leaf.library-download-repo");
|
|
+ if (mirrorAddr != null) {
|
|
+ return new RemoteRepository.Builder("central", "default", mirrorAddr).build();
|
|
+ }
|
|
+ return null;
|
|
+ }
|
|
+ // Leaf end - Configurable LibraryLoader maven repos
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
|
|
index 998a5278f39d13ed6b0a6d03514658f28b0d420f..330553fe8e6e4f23681df98d2519f10ebb0cfe5d 100644
|
|
--- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
|
|
+++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java
|
|
@@ -51,6 +51,7 @@ public class LibraryLoader
|
|
|
|
// Paper start - Avoid and discourage use of Maven Central as a CDN
|
|
private static List<RemoteRepository> getRepositories() {
|
|
+ if (io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.CUSTOM_MAVEN_CENTRAL_MIRROR_REPO != null) return List.of(io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.CUSTOM_MAVEN_CENTRAL_MIRROR_REPO); // Leaf - Configurable LibraryLoader maven repos
|
|
return List.of(new RemoteRepository.Builder("central", "default", io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver.MAVEN_CENTRAL_DEFAULT_MIRROR).build());
|
|
}
|
|
// Paper end - Avoid and discourage use of Maven Central as a CDN
|