From f25715ff6b010876cf2da64f8419bed5e2b2aa83 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sat, 7 Oct 2023 04:08:30 +0200 Subject: add random --- .../features/misc/compacttablist/TabListReader.kt | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/main/java/at/hannibal2/skyhanni/features') diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListReader.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListReader.kt index a9e9d2ad6..d4268a39f 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListReader.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListReader.kt @@ -12,8 +12,11 @@ import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.StringUtils.removeResets import at.hannibal2.skyhanni.utils.StringUtils.trimWhiteSpaceAndResets import at.hannibal2.skyhanni.utils.TabListData +import com.google.common.cache.CacheBuilder import net.minecraft.client.Minecraft import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.util.concurrent.TimeUnit +import kotlin.random.Random // heavily inspired by SBA code object TabListReader { @@ -124,7 +127,7 @@ object TabListReader { } val prepare = playerDatas.entries - val sorted = when (config.playerSort) { + val sorted = when (config.playerSortOrder) { // Rank (Default) 1 -> prepare.sortedBy { -(it.value.sbLevel) } @@ -138,6 +141,9 @@ object TabListReader { // Party/Friends/Guild First 4 -> prepare.sortedBy { -socialScore(it.value.name) } + // Random + 5 -> prepare.sortedBy { getRandomOrder(it.value.name) } + else -> prepare } @@ -155,6 +161,19 @@ object TabListReader { return newList } + private var randomOrderCache = + CacheBuilder.newBuilder().expireAfterWrite(20, TimeUnit.MINUTES).build() + + private fun getRandomOrder(name: String): Int { + val saved = randomOrderCache.getIfPresent(name) + if (saved != null) { + return saved + } + val r = (Random.nextDouble() * 500).toInt() + randomOrderCache.put(name, r) + return r + } + private fun socialScore(name: String) = when { LorenzUtils.getPlayerName() == name -> 5 MarkedPlayerManager.isMarkedPlayer(name) -> 4 -- cgit