@@ -302,7 +302,44 @@ class KPaperGradlePlugin : Plugin<Project> {
302302 maven.addDependency(new Dependency(new DefaultArtifact(dependency), null));
303303 });
304304
305+ // Add default ModLabs mirror
305306 maven.addRepository(new RemoteRepository.Builder("modlabs", "default", "https://nexus.modlabs.cc/repository/maven-mirrors/").build());
307+
308+ // Add custom repositories from optional .repositories resource
309+ try {
310+ java.io.InputStream reposStream = getClass().getClassLoader().getResourceAsStream(".repositories");
311+ if (reposStream != null) {
312+ try (BufferedReader r = new BufferedReader(new InputStreamReader(reposStream))) {
313+ r.lines().forEach(line -> {
314+ String trimmed = line.trim();
315+ if (trimmed.isEmpty() || trimmed.startsWith("#")) return;
316+ String id;
317+ String url;
318+ String[] parts = trimmed.split("\\s+", 2);
319+ if (parts.length == 2) {
320+ id = parts[0];
321+ url = parts[1];
322+ } else {
323+ url = trimmed;
324+ try {
325+ java.net.URI u = java.net.URI.create(url);
326+ String host = u.getHost();
327+ id = host != null ? host.replaceAll("[^a-zA-Z0-9-_]", "-") : Integer.toString(url.hashCode());
328+ } catch (Exception ex) {
329+ id = Integer.toString(url.hashCode());
330+ }
331+ }
332+ try {
333+ maven.addRepository(new RemoteRepository.Builder(id, "default", url).build());
334+ } catch (Exception ex) {
335+ LOGGER.log(Level.WARNING, "Failed to add repository: " + trimmed, ex);
336+ }
337+ });
338+ }
339+ }
340+ } catch (Exception ex) {
341+ LOGGER.log(Level.WARNING, "Failed to read .repositories", ex);
342+ }
306343 } catch (Exception e) {
307344 LOGGER.log(Level.SEVERE, "Failed to load dependencies", e);
308345 }
0 commit comments