@@ -39,8 +39,11 @@ class PluginManager(val config: PluginsConfig) {
39
39
data class PluginJar (val manifest : PluginManifest , val file : File )
40
40
41
41
val pluginJars = directory.listFiles()!! .filter { it.extension == " jar" }.map {
42
- JarFile (it).use {jar ->
43
- loadPluginManifests(jar).map { manifest -> PluginJar (manifest, it) }
42
+ JarFile (it).use { jar ->
43
+ loadPluginManifests(jar).map { manifest ->
44
+ log.info(" Found plugin '${manifest.name} ' version ${manifest.version} " )
45
+ PluginJar (manifest, it)
46
+ }
44
47
}
45
48
}.flatten()
46
49
@@ -59,17 +62,18 @@ class PluginManager(val config: PluginsConfig) {
59
62
60
63
declarations.forEach declarationLoop@{ declaration ->
61
64
var hasVersion = false
62
- pluginJars.forEach pluginLoop@{ jar ->
63
- if (declaration.version == jar.manifest.version && ! hasVersion) {
64
- hasVersion = true
65
- // We already have this jar so don't redownload it
66
- return @pluginLoop
65
+ pluginJars.filter { jar -> declaration.name == jar.manifest.name }
66
+ .forEach pluginLoop@{ jar ->
67
+ if (declaration.version == jar.manifest.version && ! hasVersion) {
68
+ hasVersion = true
69
+ // We already have this jar so don't redownload it
70
+ return @pluginLoop
71
+ }
72
+
73
+ // Delete jar of different versions
74
+ if (! jar.file.delete()) throw RuntimeException (" Failed to delete ${jar.file.path} " )
75
+ log.info(" Deleted ${jar.file.path} " )
67
76
}
68
-
69
- // Delete jar of different versions
70
- if (! jar.file.delete()) throw RuntimeException (" Failed to delete ${jar.file.path} " )
71
- log.info(" Deleted ${jar.file.path} " )
72
- }
73
77
if (hasVersion) return @declarationLoop
74
78
75
79
val url = declaration.run { " $repository${group.replace(" ." , " /" )} /$name /$version /$name -$version .jar" }
@@ -130,7 +134,7 @@ class PluginManager(val config: PluginsConfig) {
130
134
private fun loadJar (file : File , cl : URLClassLoader ): List <PluginManifest > {
131
135
var classCount = 0
132
136
val jar = JarFile (file)
133
- var manifests: List <PluginManifest >
137
+ var manifests: List <PluginManifest >
134
138
135
139
jar.use {
136
140
manifests = loadPluginManifests(jar)
@@ -160,9 +164,7 @@ class PluginManager(val config: PluginsConfig) {
160
164
if (! entry.name.startsWith(" lavalink-plugins/" )) return @forEach
161
165
if (! entry.name.endsWith(" .properties" )) return @forEach
162
166
163
- val manifest = parsePluginManifest(jar.getInputStream(entry))
164
- log.info(" Found plugin '${manifest.name} ' version ${manifest.version} " )
165
- manifests.add(manifest)
167
+ manifests.add(parsePluginManifest(jar.getInputStream(entry)))
166
168
}
167
169
return manifests
168
170
}
0 commit comments