mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 23:10:16 +01:00
Allow Bukkit plugin to use Paper PluginLoader API
This commit is contained in:
parent
962554a0de
commit
236fa2126f
2 changed files with 37 additions and 4 deletions
|
@ -260,6 +260,13 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf
|
|||
private Set<PluginAwareness> awareness = ImmutableSet.of();
|
||||
private String apiVersion = null;
|
||||
private List<String> libraries = ImmutableList.of();
|
||||
// Paper start - plugin loader api
|
||||
private String paperPluginLoader;
|
||||
@org.jetbrains.annotations.ApiStatus.Internal @org.jetbrains.annotations.Nullable
|
||||
public String getPaperPluginLoader() {
|
||||
return this.paperPluginLoader;
|
||||
}
|
||||
// Paper end - plugin loader api
|
||||
// Paper start - oh my goddddd
|
||||
/**
|
||||
* Don't use this.
|
||||
|
@ -1233,6 +1240,23 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf
|
|||
} else {
|
||||
libraries = ImmutableList.<String>of();
|
||||
}
|
||||
// Paper start - plugin loader api
|
||||
if (map.containsKey("paper-plugin-loader")) {
|
||||
this.paperPluginLoader = map.get("paper-plugin-loader").toString();
|
||||
}
|
||||
|
||||
/*
|
||||
Allow skipping the Bukkit/Spigot 'libraries' list. By default, both the 'libraries'
|
||||
list and the 'paper-plugin-loader' will contribute libraries. It may be desired to only
|
||||
use one or the other. (i.e. 'libraries' on Spigot and 'paper-plugin-loader' on Paper)
|
||||
*/
|
||||
if (map.containsKey("paper-skip-libraries")) {
|
||||
String skip = map.get("paper-skip-libraries").toString();
|
||||
if (skip.equalsIgnoreCase("true")) {
|
||||
this.libraries = ImmutableList.of();
|
||||
}
|
||||
}
|
||||
// Paper end - plugin loader api
|
||||
|
||||
try {
|
||||
lazyPermissions = (Map<?, ?>) map.get("permissions");
|
||||
|
|
|
@ -84,7 +84,13 @@ public class LibraryLoader
|
|||
@Nullable
|
||||
public ClassLoader createLoader(@NotNull PluginDescriptionFile desc)
|
||||
{
|
||||
if ( desc.getLibraries().isEmpty() )
|
||||
// Paper start - plugin loader api
|
||||
return this.createLoader(desc, null);
|
||||
}
|
||||
@Nullable
|
||||
public ClassLoader createLoader(@NotNull PluginDescriptionFile desc, java.util.@Nullable List<java.nio.file.Path> paperLibraryPaths) {
|
||||
if ( desc.getLibraries().isEmpty() && paperLibraryPaths == null )
|
||||
// Paper end - plugin loader api
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -103,17 +109,20 @@ public class LibraryLoader
|
|||
}
|
||||
|
||||
DependencyResult result;
|
||||
try
|
||||
if (!dependencies.isEmpty()) try // Paper - plugin loader api
|
||||
{
|
||||
result = repository.resolveDependencies( session, new DependencyRequest( new CollectRequest( (Dependency) null, dependencies, repositories ), null ) );
|
||||
} catch ( DependencyResolutionException ex )
|
||||
{
|
||||
throw new RuntimeException( "Error resolving libraries", ex );
|
||||
}
|
||||
} else result = null; // Paper - plugin loader api
|
||||
|
||||
List<URL> jarFiles = new ArrayList<>();
|
||||
List<java.nio.file.Path> jarPaths = new ArrayList<>(); // Paper - remap libraries
|
||||
for ( ArtifactResult artifact : result.getArtifactResults() )
|
||||
// Paper start - plugin loader api
|
||||
if (paperLibraryPaths != null) jarPaths.addAll(paperLibraryPaths);
|
||||
if (result != null) for ( ArtifactResult artifact : result.getArtifactResults() )
|
||||
// Paper end - plugin loader api
|
||||
{
|
||||
// Paper start - remap libraries
|
||||
jarPaths.add(artifact.getArtifact().getFile().toPath());
|
||||
|
|
Loading…
Reference in a new issue