feat: 更新插件管理模块

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2021-08-03 17:56:11 +08:00
parent 8a2b0d7c2e
commit 7afea75454
4 changed files with 82 additions and 11 deletions

View File

@ -1,12 +1,35 @@
import { server } from '@ccms/api'
const Sponge = org.spongepowered.api.Sponge
const Sponge: typeof org.spongepowered.api.Sponge = Java.type('org.spongepowered.api.Sponge')
export class SpongeNativePluginManager extends server.NativePluginManager {
private spongePluginManager: org.spongepowered.api.plugin.PluginManager
constructor() {
super()
this.spongePluginManager = Sponge.getPluginManager()
}
list(): server.NativePlugin[] {
return Java.from(this.spongePluginManager.getPlugins()).map(plugin => this.convert(plugin))
}
has(name: string) {
return !!this.get(name)
return !!this.spongePluginManager.getPlugin(name).orElse(null)
}
get(name: string) {
return Sponge.getPluginManager().getPlugin(name).orElse(null)
return this.convert(this.spongePluginManager.getPlugin(name).orElse(null))
}
private convert(plugin: org.spongepowered.api.plugin.PluginContainer): server.NativePlugin {
if (!plugin) return plugin as any
return {
name: plugin.getName(),
version: plugin.getVersion().get() as string,
authors: Java.from(plugin.getAuthors() as string[]),
depends: Java.from(plugin.getDependencies()),
softDepends: [],
enable: true,
origin: plugin
}
}
}