diff options
| author | devmikka <64923699+DevMikka@users.noreply.github.com> | 2025-11-08 10:23:57 +0100 |
|---|---|---|
| committer | devmikka <64923699+DevMikka@users.noreply.github.com> | 2025-11-08 10:23:57 +0100 |
| commit | fdd8fd0f059bba93f70b6a317c27f2549b380fb6 (patch) | |
| tree | daff88a790f3aba1f0f9bda56c2caa0f7c7b6594 /src/main/java/dev/mikka/cortex | |
| parent | 3b9a84b529a2b9535129249481f71510889c7758 (diff) | |
Diffstat (limited to 'src/main/java/dev/mikka/cortex')
| -rw-r--r-- | src/main/java/dev/mikka/cortex/help/loader/TestPluginLoader.java | 49 |
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()); + } + } +} |
