-
Notifications
You must be signed in to change notification settings - Fork 16
/
Authy.kt
102 lines (82 loc) · 3.15 KB
/
Authy.kt
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package me.iru
import me.iru.commands.*
import me.iru.data.PlayerData
import me.iru.data.Session
import me.iru.data.migration.DatabaseMigration
import me.iru.data.migration.Migration
import me.iru.events.BlockEvents
import me.iru.events.LoginEvents
import me.iru.process.JoinProcess
import me.iru.process.LoginProcess
import me.iru.utils.CommandFilter
import me.iru.utils.isNewVersionAvailable
import me.iru.utils.registerCommand
import org.bstats.bukkit.Metrics
import org.bstats.charts.SimplePie
import org.bukkit.ChatColor
import org.bukkit.entity.Player
import org.bukkit.plugin.java.JavaPlugin
class Authy : JavaPlugin() {
val version = this.description.version
var latestVersion = this.version
private val pluginName = this.description.name
private val commandFilter = CommandFilter()
val prefix = "${ChatColor.DARK_GRAY}[${ChatColor.GOLD}$pluginName${ChatColor.DARK_GRAY}]"
companion object {
lateinit var instance: Authy private set
lateinit var translations: Translations private set
lateinit var playerData: PlayerData private set
lateinit var loginProcess: LoginProcess private set
lateinit var session: Session private set
lateinit var authManager: AuthManager private set
}
override fun onEnable() {
instance = this
translations = Translations()
playerData = PlayerData()
Migration.updateSystem()
DatabaseMigration.tryMigrate()
loginProcess = LoginProcess()
authManager = AuthManager()
session = Session()
saveDefaultConfig()
config.options().copyDefaults(true)
saveConfig()
server.pluginManager.registerEvents(LoginEvents(), this)
server.pluginManager.registerEvents(BlockEvents(), this)
registerCommand(cRegister())
registerCommand(cLogin())
registerCommand(cUnregister())
registerCommand(cRemember())
registerCommand(cAuthy())
registerCommand(cPin())
with(commandFilter) { registerFilter() }
server.consoleSender.sendMessage("$prefix ${ChatColor.GREEN}Enabled $version")
val players = server.onlinePlayers
for(player : Player in players) {
JoinProcess(player).run()
}
this.server.scheduler.runTaskAsynchronously(this, Runnable {
val v = isNewVersionAvailable()
if(v.first) {
this.latestVersion = v.second
server.consoleSender.sendMessage("$prefix ${ChatColor.YELLOW}New version available - ${ChatColor.GREEN}${this.latestVersion}${ChatColor.YELLOW}!")
}
})
setupMetrics()
}
override fun onDisable() {
DatabaseMigration.saveLastDatabaseType()
playerData.databaseConnection.shutdownConnections()
server.consoleSender.sendMessage("$prefix ${ChatColor.RED}Disabled $version")
}
private fun setupMetrics() {
val metrics = Metrics(this, 14475)
metrics.addCustomChart(SimplePie("db_type") {
playerData.databaseConnection.type.name
})
metrics.addCustomChart(SimplePie("lang") {
instance.config.getString("lang")
})
}
}