First commit
This commit is contained in:
159
src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt
Normal file
159
src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt
Normal file
@@ -0,0 +1,159 @@
|
||||
package club.mcscrims.speedhg
|
||||
|
||||
import club.mcscrims.core.config.ConfigData
|
||||
import club.mcscrims.core.config.ConfigFormat
|
||||
import club.mcscrims.core.config.ConfigLoader
|
||||
import club.mcscrims.core.database.DatabaseConfig
|
||||
import club.mcscrims.core.database.mongodb.MongoManager
|
||||
import club.mcscrims.speedhg.config.MessageConfig
|
||||
import club.mcscrims.speedhg.config.PluginConfig
|
||||
import club.mcscrims.speedhg.database.StatsRepository
|
||||
import club.mcscrims.spigot.chat.ChatFormatter
|
||||
import club.mcscrims.spigot.chat.ChatManager
|
||||
import club.mcscrims.spigot.network.SpigotNetworkManager
|
||||
import com.mongodb.client.model.Indexes
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import net.luckperms.api.LuckPerms
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
|
||||
class SpeedHG : JavaPlugin() {
|
||||
|
||||
companion object {
|
||||
internal lateinit var instance: SpeedHG
|
||||
}
|
||||
|
||||
private lateinit var configLoader: ConfigLoader
|
||||
internal lateinit var pluginConfig: ConfigData<PluginConfig>
|
||||
internal lateinit var messageConfig: ConfigData<MessageConfig>
|
||||
internal lateinit var databaseConfig: ConfigData<DatabaseConfig>
|
||||
|
||||
internal lateinit var chatManager: ChatManager<MessageConfig>
|
||||
internal lateinit var chatFormatter: ChatFormatter<MessageConfig>
|
||||
|
||||
private lateinit var mongoManager: MongoManager
|
||||
internal lateinit var statsRepository: StatsRepository
|
||||
|
||||
internal lateinit var networkManager: SpigotNetworkManager
|
||||
|
||||
internal lateinit var luckPerms: LuckPerms
|
||||
|
||||
override fun onEnable()
|
||||
{
|
||||
instance = this
|
||||
|
||||
loadConfigurations()
|
||||
setupDatabase()
|
||||
networkManager = SpigotNetworkManager.getInstance()!!
|
||||
|
||||
chatFormatter = ChatFormatter.create(
|
||||
plugin = this,
|
||||
configClass = MessageConfig::class,
|
||||
messageExtractor = { config -> config.getAllMessages() }
|
||||
)
|
||||
|
||||
chatManager = ChatManager.withCustomConfig( this, chatFormatter )
|
||||
chatManager.initialize()
|
||||
|
||||
setupLuckPerms()
|
||||
}
|
||||
|
||||
override fun onDisable()
|
||||
{
|
||||
mongoManager.shutdown()
|
||||
networkManager.shutdown()
|
||||
}
|
||||
|
||||
/*
|
||||
* LUCKPERMS >>
|
||||
*/
|
||||
|
||||
private fun setupLuckPerms()
|
||||
{
|
||||
val provider = server.servicesManager.getRegistration( LuckPerms::class.java )
|
||||
|
||||
if ( provider != null )
|
||||
luckPerms = provider.provider
|
||||
|
||||
if ( !::luckPerms.isInitialized )
|
||||
logger.warning( "LuckPerms could not be loaded." )
|
||||
else
|
||||
logger.info( "LuckPerms has successfully been loaded." )
|
||||
}
|
||||
|
||||
/*
|
||||
* DATABASE >>
|
||||
*/
|
||||
|
||||
private fun setupDatabase()
|
||||
{
|
||||
// MongoManager initialisieren
|
||||
mongoManager = MongoManager.getInstance( name, logger )
|
||||
val connection = mongoManager.createConnection( "speedhg", databaseConfig.data )
|
||||
|
||||
// Repositories initialisieren
|
||||
statsRepository = StatsRepository( connection )
|
||||
|
||||
// Indizes erstellen
|
||||
runBlocking {
|
||||
try
|
||||
{
|
||||
connection.createIndex( "player_stats", Indexes.ascending( "kills" ))
|
||||
connection.createIndex( "player_stats", Indexes.descending( "deaths" ))
|
||||
connection.createIndex( "player_stats", Indexes.ascending( "wins" ))
|
||||
connection.createIndex( "player_stats", Indexes.ascending( "unathleticIndex" ))
|
||||
connection.createIndex( "player_stats", Indexes.ascending( "ironFarmed" ))
|
||||
}
|
||||
catch ( ex: Exception ) {
|
||||
logger.warning( "Failed to create MongoDB indexes: ${ex.message}" )
|
||||
return@runBlocking
|
||||
}
|
||||
}
|
||||
|
||||
logger.info( "Successfully enabled MongoDB" )
|
||||
}
|
||||
|
||||
/*
|
||||
* CONFIG >>
|
||||
*/
|
||||
|
||||
private fun loadConfigurations()
|
||||
{
|
||||
configLoader = ConfigLoader.getInstance( name, logger, dataFolder )
|
||||
createConfigurations()
|
||||
}
|
||||
|
||||
private fun createConfigurations()
|
||||
{
|
||||
pluginConfig = configLoader.loadConfig<PluginConfig>(
|
||||
fileName = "config.yml",
|
||||
format = ConfigFormat.YAML,
|
||||
autoReload = true
|
||||
)
|
||||
|
||||
messageConfig = configLoader.loadConfig<MessageConfig>(
|
||||
fileName = "messages.yml",
|
||||
format = ConfigFormat.YAML,
|
||||
autoReload = false
|
||||
)
|
||||
|
||||
databaseConfig = configLoader.loadConfig<DatabaseConfig>(
|
||||
fileName = "database.json",
|
||||
format = ConfigFormat.JSON,
|
||||
autoReload = false
|
||||
)
|
||||
}
|
||||
|
||||
fun reloadConfigurations()
|
||||
{
|
||||
try
|
||||
{
|
||||
pluginConfig.reload()
|
||||
messageConfig.reload()
|
||||
databaseConfig.reload()
|
||||
}
|
||||
catch ( ex: Exception ) {
|
||||
logger.severe( "Failed to reload configurations: ${ex.message}" )
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user