summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authordevmikka <64923699+DevMikka@users.noreply.github.com>2025-11-08 10:23:57 +0100
committerdevmikka <64923699+DevMikka@users.noreply.github.com>2025-11-08 10:23:57 +0100
commitfdd8fd0f059bba93f70b6a317c27f2549b380fb6 (patch)
treedaff88a790f3aba1f0f9bda56c2caa0f7c7b6594 /src/main/java
parent3b9a84b529a2b9535129249481f71510889c7758 (diff)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/dev/mikka/cortex/help/loader/TestPluginLoader.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/dev/mikka/cortex/help/loader/TestPluginLoader.java b/src/main/java/dev/mikka/cortex/help/loader/TestPluginLoader.java
new file mode 100644
index 0000000..cc47383
--- /dev/null
+++ b/src/main/java/dev/mikka/cortex/help/loader/TestPluginLoader.java
@@ -0,0 +1,49 @@
+package dev.mikka.cortex.help.loader;
+
+import com.google.gson.Gson;
+import io.papermc.paper.plugin.loader.PluginClasspathBuilder;
+import io.papermc.paper.plugin.loader.PluginLoader;
+import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.jetbrains.annotations.NotNull;
+
+@SuppressWarnings("ALL")
+public class TestPluginLoader implements PluginLoader {
+ @Override
+ public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) {
+ var resolver = new MavenLibraryResolver();
+
+ var pluginLibraries = load();
+ pluginLibraries.asDependencies().forEach(resolver::addDependency);
+ pluginLibraries.asRepositories().forEach(resolver::addRepository);
+
+ classpathBuilder.addLibrary(resolver);
+ }
+
+ private PluginLibraries load() {
+ try (var in = getClass().getResourceAsStream("/paper-libraries.json")) {
+ return new Gson().fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), PluginLibraries.class);
+ } catch (IOException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ private record PluginLibraries(Map<String, String> repositories, List<String> dependencies) {
+ public Stream<Dependency> asDependencies() {
+ return dependencies.stream().map(d -> new Dependency(new DefaultArtifact(d), null));
+ }
+
+ public Stream<RemoteRepository> asRepositories() {
+ return repositories.entrySet().stream()
+ .map(entry -> new RemoteRepository.Builder(entry.getKey(), "default", entry.getValue()).build());
+ }
+ }
+}