-
Notifications
You must be signed in to change notification settings - Fork 16
/
Authy.kt
117 lines (93 loc) · 3.59 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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}]"
private var initialized = false
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
if(server.onlineMode) {
server.consoleSender.sendMessage("$prefix ${ChatColor.RED}Server is in online mode! Switch to offline mode and restart the server!")
server.pluginManager.disablePlugin(this)
return
}
playerData = PlayerData()
Migration.updateSystem()
DatabaseMigration.tryMigrate()
translations = Translations()
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())
registerCommand(cChangePassword())
with(commandFilter) { registerFilter() }
initialized = true
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() {
if(initialized) {
DatabaseMigration.saveLastDatabaseType()
playerData.databaseConnection.shutdownConnections()
initialized = false
}
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")
})
}
}