Skip to content

Commit 01e0cf5

Browse files
Add cache to get playername from db instead of mojang cache (#357)
(cherry picked from commit 00b52ae)
1 parent ec296de commit 01e0cf5

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/main/kotlin/com/github/quiltservertools/ledger/database/DatabaseCacheService.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.github.quiltservertools.ledger.database
33
import com.google.common.collect.BiMap
44
import com.google.common.collect.HashBiMap
55
import net.minecraft.resources.ResourceLocation
6-
import java.util.UUID
6+
import java.util.*
77

88
object DatabaseCacheService {
99
val actionResourceLocationKeys: BiMap<String, Int> = HashBiMap.create()
@@ -15,4 +15,6 @@ object DatabaseCacheService {
1515
val sourceKeys: BiMap<String, Int> = HashBiMap.create()
1616

1717
val playerKeys: BiMap<UUID, Int> = HashBiMap.create()
18+
19+
val playernameKeys: BiMap<String, Int> = HashBiMap.create()
1820
}

src/main/kotlin/com/github/quiltservertools/ledger/database/DatabaseManager.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ object DatabaseManager {
140140
}
141141
Tables.Player.all().forEach {
142142
cache.playerKeys.put(it.playerId, it.id.value)
143+
cache.playernameKeys.put(it.playerName, it.id.value)
143144
}
144145
}
145146
}
@@ -220,6 +221,7 @@ object DatabaseManager {
220221
val objectResourceLocationCache = DatabaseCacheService.objectResourceLocationKeys.inverse()
221222
val sourceCache = DatabaseCacheService.sourceKeys.inverse()
222223
val playerCache = DatabaseCacheService.playerKeys.inverse()
224+
val playerNameCache = DatabaseCacheService.playernameKeys.inverse()
223225

224226
for (action in query) {
225227
val typeSupplier = ActionRegistry.getType(
@@ -244,7 +246,7 @@ object DatabaseManager {
244246
type.oldObjectState = action[Tables.Actions.oldBlockState]
245247
type.sourceName = sourceCache[action[Tables.Actions.sourceName].value]!!
246248
type.sourceProfile = action.getOrNull(Tables.Actions.sourcePlayer)?.let {
247-
Ledger.server.profileCache?.get(playerCache[it.value]!!)?.orElse(null)
249+
GameProfile(playerCache[it.value]!!, playerNameCache[it.value]!!)
248250
}
249251
type.extraData = action[Tables.Actions.extraData]
250252
type.rolledBack = action[Tables.Actions.rolledBack]
@@ -497,11 +499,14 @@ object DatabaseManager {
497499
if (player != null) {
498500
player.lastJoin = Instant.now()
499501
player.playerName = name
502+
cache.playernameKeys[name] = player.id.value
500503
} else {
501-
Tables.Player.new {
504+
val entity = Tables.Player.new {
502505
this.playerId = uuid
503506
this.playerName = name
504507
}
508+
cache.playerKeys[uuid] = entity.id.value
509+
cache.playernameKeys[name] = entity.id.value
505510
}
506511
}
507512

0 commit comments

Comments
 (0)