Skip to content

Commit

Permalink
feature: download dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
broccolai committed Oct 27, 2023
1 parent f1b1ce4 commit 02f35d4
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 5 deletions.
52 changes: 50 additions & 2 deletions bukkit/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
id("xyz.jpenilla.run-paper") version "2.2.0"
id("com.github.johnrengelman.shadow")
}

setupShadowJar()

dependencies {
api(project(":tags-core"))

Expand All @@ -23,5 +24,52 @@ dependencies {
tasks {
runServer {
minecraftVersion("1.20.2")
downloadPlugins {
url("https://github.com/MilkBowl/Vault/releases/download/1.7.3/Vault.jar")
}
}

fun Project.collectDependencies(): Set<Dependency> {
val api = configurations.api.get()
val implementation = configurations.implementation.get()
return (api.dependencies + implementation.dependencies).toSet()
}

fun Set<Dependency>.formatDependencies(): List<String> = flatMap { dependency ->
when (dependency) {
is ProjectDependency -> {
dependency.dependencyProject.collectDependencies().formatDependencies()
}

else -> {
val formatted = dependency.run { "$group:$name:$version" }
listOf(formatted)
}
}
}

register("writeDependenciesToFile") {
val outputDir = File("${buildDir}/resources/main")
outputDir.mkdirs()
val outputFile = File(outputDir, "libraries.txt")

val dependencies = project
.collectDependencies()
.formatDependencies()

outputFile.writeText(dependencies.joinToString("\n"))
}

withType<ShadowJar> {
dependencies {
include(project(":tags-core"))
include(project(":tags-api"))
}

archiveFileName.set(project.name + "aaaa.jar")
}

named("build") {
dependsOn("writeDependenciesToFile", withType<ShadowJar>())
}
}
52 changes: 52 additions & 0 deletions bukkit/src/main/java/broccolai/tags/bukkit/PaperTagsLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package broccolai.tags.bukkit;

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.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.repository.RemoteRepository;
import org.jetbrains.annotations.NotNull;

@SuppressWarnings("UnstableApiUsage")
public class PaperTagsLoader implements PluginLoader {

@Override
public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) {
MavenLibraryResolver resolver = new MavenLibraryResolver();

resolver.addRepository(
new RemoteRepository.Builder("paper", "default", "https://repo.papermc.io/repository/maven-public/").build()
);

resolver.addRepository(
new RemoteRepository.Builder("broccoli", "default", "https://repo.broccol.ai/releases").build()
);

for (String serialized : this.readDependencies()) {
Dependency dependency = new Dependency(new DefaultArtifact(serialized), null);
resolver.addDependency(dependency);
}

classpathBuilder.addLibrary(resolver);
}

private List<String> readDependencies() {
InputStream inputStream = getClass().getResourceAsStream("/libraries.txt");

try (
InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(streamReader)
) {
return reader.lines().toList();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
name : Tags
version : $version
main : broccolai.tags.bukkit.BukkitTagsPlatform
api-version : 1.16
depend : [ Vault ]
loader: broccolai.tags.bukkit.PaperTagsLoader
api-version : '1.20'
dependencies:
server:
Vault:
load: BEFORE
required: true
join-classpath: true
softdepend : [ PlaceholderAPI ]
permissions :
tags.user :
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.conf
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ versions = {
stylecheck = "0.2.1"

# Bukkit
paper-api = "1.19-R0.1-SNAPSHOT"
paper-api = "1.20.2-R0.1-SNAPSHOT"
paper-lib = "1.0.6"

# Velocity
Expand Down

0 comments on commit 02f35d4

Please sign in to comment.