Add player repository

This commit is contained in:
TDSTOS
2025-12-11 19:47:06 +01:00
parent 3092a19086
commit 31c1e6e316
4 changed files with 179 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ import club.mcscrims.speedhg.config.PluginConfig
import club.mcscrims.speedhg.database.StatsRepository
import club.mcscrims.speedhg.game.GameManager
import club.mcscrims.speedhg.command.KitsCommand
import club.mcscrims.speedhg.database.PlayerRepository
import club.mcscrims.speedhg.kit.KitInventoryListener
import club.mcscrims.speedhg.kit.KitInventoryManager
import club.mcscrims.speedhg.kit.KitListener
@@ -34,6 +35,7 @@ import kotlinx.coroutines.runBlocking
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.luckperms.api.LuckPerms
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
class SpeedHG : JavaPlugin() {
@@ -60,6 +62,7 @@ class SpeedHG : JavaPlugin() {
private lateinit var mongoManager: MongoManager
internal lateinit var statsRepository: StatsRepository
internal lateinit var playerRepository: PlayerRepository
internal lateinit var networkManager: SpigotNetworkManager
internal lateinit var schedulerManager: SchedulerManager
@@ -95,7 +98,8 @@ class SpeedHG : JavaPlugin() {
chatFormatter = ChatFormatter.create(
plugin = this,
configClass = MessageConfig::class,
messageExtractor = { config -> config.getAllMessages() }
messageExtractor = { config -> config.getAllMessages() },
listExtractor = { config -> config.getListMessages() }
)
chatManager = ChatManager.withCustomConfig( this, chatFormatter )
@@ -128,7 +132,7 @@ class SpeedHG : JavaPlugin() {
override fun onDisable()
{
kitManager.clearAll()
mongoManager.shutdown()
closeDatabase()
networkManager.shutdown()
}
@@ -175,6 +179,7 @@ class SpeedHG : JavaPlugin() {
// Repositories initialisieren
statsRepository = StatsRepository( connection )
playerRepository = PlayerRepository( connection )
// Indizes erstellen
runBlocking {
@@ -185,6 +190,7 @@ class SpeedHG : JavaPlugin() {
connection.createIndex( "player_stats", Indexes.ascending( "wins" ))
connection.createIndex( "player_stats", Indexes.ascending( "unathleticIndex" ))
connection.createIndex( "player_stats", Indexes.ascending( "ironFarmed" ))
connection.createIndex( "kit_players", Indexes.text( "server" ))
}
catch ( ex: Exception ) {
logger.warning( "Failed to create MongoDB indexes: ${ex.message}" )
@@ -195,6 +201,29 @@ class SpeedHG : JavaPlugin() {
logger.info( "Successfully enabled MongoDB" )
}
private fun closeDatabase()
{
// Alle Server von Kit-Spielern auf NULL setzen
runBlocking {
try
{
val players = Bukkit.getOnlinePlayers()
players.forEach { player ->
playerRepository.updateServer( player.uniqueId, "NULL" )
}
logger.info( "Updated ${players.size} players server to NULL." )
}
catch ( ex: Exception ) {
logger.warning( "Failed to update player server: ${ex.message}" )
}
}.also {
// MongoManager beenden
mongoManager.shutdown()
logger.info( "Successfully disabled MongoDB" )
}
}
/*
* CONFIG >>
*/