This repository was archived by the owner on Sep 10, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 248
Expand file tree
/
Copy pathHookPlugin.kt
More file actions
78 lines (61 loc) · 2.08 KB
/
HookPlugin.kt
File metadata and controls
78 lines (61 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package trplugins.menu.module.internal.hook
import taboolib.common.LifeCycle
import taboolib.common.io.runningClasses
import taboolib.common.platform.SkipTo
import taboolib.common.platform.function.console
import taboolib.common.platform.function.info
import taboolib.module.lang.sendLang
import trplugins.menu.module.internal.hook.impl.*
import java.lang.reflect.Modifier
import kotlin.reflect.KClass
/**
* @author Arasple
* @date 2021/1/26 22:04
*/
@SkipTo(LifeCycle.ENABLE)
object HookPlugin {
fun printInfo() {
registry.filter { it.isHooked }.forEach {
console().sendLang("Plugin-Dependency-Hooked", it.name)
}
}
private val registry by lazy {
mutableListOf<HookAbstract>().also {
runningClasses.forEach { `class` ->
if (Modifier.isAbstract(`class`.modifiers)) return@forEach
if (`class`.superclass != HookAbstract::class.java) return@forEach
it.add(`class`.asSubclass(HookAbstract::class.java).getConstructor().newInstance())
}
}.toTypedArray()
}
@Suppress("UNCHECKED_CAST")
operator fun <T> get(clazz: Class<T>) = registry.find { it.javaClass == clazz } as T
operator fun <T : Any> get(clazz: KClass<T>) = this[clazz.java]
fun getHeadDatabase(): HookHeadDatabase {
return get(HookHeadDatabase::class.java)
}
fun getPlayerPoints(): HookPlayerPoints {
return get(HookPlayerPoints::class.java)
}
fun getSkinsRestorer(): HookSkinsRestorer {
return get(HookSkinsRestorer::class.java)
}
fun getItemsAdder(): HookItemsAdder {
return get(HookItemsAdder::class.java)
}
fun getFloodgate(): HookFloodgate {
return get(HookFloodgate::class.java)
}
fun getVault(): HookVault {
return get(HookVault::class.java)
}
fun getFastScript(): HookFastScript {
return get(HookFastScript::class.java)
}
fun getZaphkiel(): HookZaphkiel {
return get(HookZaphkiel::class.java)
}
fun getTriton(): HookTriton {
return get(HookTriton::class.java)
}
}