Skip to content

Commit 9ffb27f

Browse files
author
TrueMB
committed
Fix: Paper Plugin Fixes (Dependencies and PluginLoader)
1 parent 15a4699 commit 9ffb27f

File tree

2 files changed

+76
-11
lines changed

2 files changed

+76
-11
lines changed

build.gradle

+26-11
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ repositories {
2020
url = uri("https://repo.papermc.io/repository/maven-public/")
2121
}
2222

23-
maven {
24-
url = uri('https://hub.spigotmc.org/nexus/content/repositories/snapshots/')
25-
}
26-
2723
maven {
2824
url = uri('https://repo.rosewooddev.io/repository/public/')
2925
}
@@ -66,7 +62,7 @@ dependencies {
6662
library 'mysql:mysql-connector-java:8.0.33'
6763
library 'org.mariadb.jdbc:mariadb-java-client:3.1.4'
6864

69-
api 'net.wesjd:anvilgui:1.9.4-SNAPSHOT'
65+
api 'net.wesjd:anvilgui:1.10.0-SNAPSHOT'
7066
api 'org.bstats:bstats-bukkit:3.0.2'
7167
api 'com.jeff_media:SpigotUpdateChecker:3.0.3'
7268
api 'com.google.code.gson:gson:2.10.1'
@@ -91,7 +87,7 @@ dependencies {
9187
group = 'RentIt'
9288
version = '2.9.3'
9389
description = 'RentIt'
94-
java.sourceCompatibility = JavaVersion.VERSION_17
90+
java.sourceCompatibility = JavaVersion.VERSION_21
9591

9692
sourceSets {
9793
main {
@@ -123,21 +119,41 @@ tasks.withType(Jar).all {
123119
duplicatesStrategy 'exclude'
124120
}
125121

122+
java {
123+
toolchain {
124+
languageVersion.set(JavaLanguageVersion.of(21))
125+
}
126+
}
127+
128+
tasks.shadowJar {
129+
archiveClassifier.set('') //Remove "-all" from the builded jar
130+
131+
manifest {
132+
attributes["paperweight-mappings-namespace"] = "spigot"
133+
}
134+
}
135+
126136
paper {
127137
main = 'me.truemb.rentit.main.Main'
128138

129139
// Generate paper-libraries.json from `library` and `paperLibrary` in `dependencies`
140+
loader = "me.truemb.rentit.loader.PaperPluginLoader"
130141
generateLibrariesJson = true
131142

132143
// Mark plugin for supporting Folia
133144
foliaSupported = true
134145

135146
// API version (needs to be 1.19 or higher)
136-
apiVersion = '1.19'
147+
apiVersion = '1.20'
137148

138149
serverDependencies {
139150

140-
'Worldguard' {
151+
'WorldEdit' {
152+
load = 'BEFORE'
153+
required = true
154+
}
155+
156+
'WorldGuard' {
141157
load = 'BEFORE'
142158
required = false
143159
}
@@ -157,7 +173,7 @@ paper {
157173
load = 'BEFORE'
158174
required = false
159175
}
160-
'Playerpoints' {
176+
'PlayerPoints' {
161177
load = 'BEFORE'
162178
required = false
163179
}
@@ -177,8 +193,7 @@ bukkit {
177193
author = 'TrueMB'
178194
main = 'me.truemb.rentit.main.Main'
179195

180-
apiVersion = '1.16'
181-
foliaSupported = true
196+
apiVersion = '1.20'
182197

183198
depend = ['WorldEdit']
184199
softDepend = ['WorldGuard', 'Citizens', 'Denizen', 'PlaceholderAPI', 'AdvancedChests', 'PlayerPoints', 'Vault']
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package me.truemb.rentit.loader;
2+
3+
import com.google.gson.Gson;
4+
import io.papermc.paper.plugin.loader.PluginClasspathBuilder;
5+
import io.papermc.paper.plugin.loader.PluginLoader;
6+
import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver;
7+
import org.eclipse.aether.artifact.DefaultArtifact;
8+
import org.eclipse.aether.graph.Dependency;
9+
import org.eclipse.aether.repository.RemoteRepository;
10+
import org.jetbrains.annotations.NotNull;
11+
12+
import java.io.IOException;
13+
import java.io.InputStreamReader;
14+
import java.nio.charset.StandardCharsets;
15+
import java.util.List;
16+
import java.util.Map;
17+
import java.util.stream.Stream;
18+
19+
public class PaperPluginLoader implements PluginLoader {
20+
21+
@Override
22+
public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) {
23+
MavenLibraryResolver resolver = new MavenLibraryResolver();
24+
PluginLibraries pluginLibraries = load();
25+
pluginLibraries.asDependencies().forEach(resolver::addDependency);
26+
pluginLibraries.asRepositories().forEach(resolver::addRepository);
27+
classpathBuilder.addLibrary(resolver);
28+
}
29+
30+
public PluginLibraries load() {
31+
try (var in = getClass().getResourceAsStream("/paper-libraries.json")) {
32+
return new Gson().fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), PluginLibraries.class);
33+
} catch (IOException e) {
34+
throw new RuntimeException(e);
35+
}
36+
}
37+
38+
private record PluginLibraries(Map<String, String> repositories, List<String> dependencies) {
39+
public Stream<Dependency> asDependencies() {
40+
return dependencies.stream()
41+
.map(d -> new Dependency(new DefaultArtifact(d), null));
42+
}
43+
44+
public Stream<RemoteRepository> asRepositories() {
45+
return repositories.entrySet().stream()
46+
.map(e -> new RemoteRepository.Builder(e.getKey(), "default", e.getValue()).build());
47+
}
48+
}
49+
50+
}

0 commit comments

Comments
 (0)