4
4
import com .extendedclip .papi .expansion .javascript .evaluator .QuickJsScriptEvaluatorFactory ;
5
5
import io .github .slimjar .injector .loader .Injectable ;
6
6
import io .github .slimjar .injector .loader .InjectableFactory ;
7
+ import io .github .slimjar .resolver .data .Repository ;
8
+ import io .github .slimjar .resolver .mirrors .SimpleMirrorSelector ;
7
9
8
10
import java .io .File ;
9
11
import java .io .IOException ;
18
20
import java .security .NoSuchAlgorithmException ;
19
21
import java .util .ArrayList ;
20
22
import java .util .Collection ;
23
+ import java .util .Collections ;
21
24
import java .util .List ;
22
25
import java .util .jar .JarFile ;
23
26
import java .util .zip .ZipEntry ;
@@ -42,9 +45,18 @@ public static boolean tryInject(final Collection<String> libraries) {
42
45
43
46
public static void inject (final Collection <String > libraries ) throws LibraryInjectionException {
44
47
try {
45
- final Collection <URL > libraryURLs = extractLibraries (libraries );
48
+ final File selfFile = new File (SELF_JAR_URL .toURI ());
49
+ final File libsFolder = getLibsFolder (selfFile );
50
+
51
+ final Collection <URL > libraryURLs = extractLibraries (selfFile , libsFolder , libraries );
46
52
final ClassLoader bukkitClassLoader = InjectionUtil .class .getClassLoader ().getParent ();
47
- final Injectable injectable = InjectableFactory .create (bukkitClassLoader );
53
+ final Injectable injectable = InjectableFactory .create (
54
+ libsFolder .toPath (),
55
+ //Collections.singletonList(new Repository(new URL(SimpleMirrorSelector.CENTRAL_URL))),
56
+ Collections .emptyList (),
57
+ bukkitClassLoader
58
+ );
59
+
48
60
for (final URL libraryURL : libraryURLs ) {
49
61
injectable .inject (libraryURL );
50
62
}
@@ -53,12 +65,12 @@ public static void inject(final Collection<String> libraries) throws LibraryInje
53
65
}
54
66
}
55
67
56
- private static Collection <URL > extractLibraries (final Collection <String > libraries ) throws IOException , URISyntaxException , NoSuchAlgorithmException , ReflectiveOperationException {
68
+ private static Collection <URL > extractLibraries (final File selfFile , final File libsFolder , final Collection <String > libraries ) throws IOException , URISyntaxException , NoSuchAlgorithmException , ReflectiveOperationException {
57
69
final Collection <URL > extracted = new ArrayList <>();
58
- final File selfFile = new File (SELF_JAR_URL .toURI ());
59
70
final JarFile jarFile = new JarFile (selfFile );
71
+
60
72
for (final String library : libraries ) {
61
- final File extractedFile = getExtractionFile (library , selfFile );
73
+ final File extractedFile = getExtractionFile (library , libsFolder );
62
74
if (extractedFile .exists ()) {
63
75
extracted .add (extractedFile .toURI ().toURL ());
64
76
continue ;
@@ -72,16 +84,20 @@ private static Collection<URL> extractLibraries(final Collection<String> librari
72
84
//noinspection ResultOfMethodCallIgnored
73
85
extractedFile .createNewFile ();
74
86
try (final InputStream stream = jarFile .getInputStream (entry );
75
- final ReadableByteChannel inChannel = Channels .newChannel (stream );
76
- final FileChannel outChannel = FileChannel .open (extractedFile .toPath (), StandardOpenOption .CREATE , StandardOpenOption .WRITE )) {
87
+ final ReadableByteChannel inChannel = Channels .newChannel (stream );
88
+ final FileChannel outChannel = FileChannel .open (extractedFile .toPath (), StandardOpenOption .CREATE , StandardOpenOption .WRITE )) {
77
89
outChannel .transferFrom (inChannel , 0 , entry .getSize ());
78
90
}
79
91
extracted .add (extractedFile .toURI ().toURL ());
80
92
}
81
93
return extracted ;
82
94
}
83
95
84
- private static File getExtractionFile (final String name , final File selfFile ) {
85
- return new File (selfFile .getParentFile (), "libraries/" + name .replace ("isolated-jar" , "jar" ));
96
+ private static File getExtractionFile (final String name , final File libsFolder ) {
97
+ return new File (libsFolder , name .replace ("isolated-jar" , "jar" ));
98
+ }
99
+
100
+ private static File getLibsFolder (final File selfFile ) {
101
+ return new File (selfFile .getParentFile (), "libraries" );
86
102
}
87
103
}
0 commit comments