From 3db30213e0876fd8bb6d740e466f47a798eb8fde Mon Sep 17 00:00:00 2001 From: Taken Date: Sun, 14 Sep 2025 22:58:49 +0200 Subject: [PATCH] Updated bestmodes --- .../player/[ign]/_stats/blitz/table.tsx | 7 ++++--- .../[ign]/_stats/build-battle/table.tsx | 7 +++++-- src/lib/hypixel/arcade/general.ts | 2 ++ src/lib/hypixel/bedwars/general.ts | 2 ++ src/lib/hypixel/blitz/general.ts | 10 ++++++++++ src/lib/hypixel/build-battle/general.ts | 19 +++++++++++++++++++ src/lib/hypixel/copsandcrims/general.ts | 2 ++ src/lib/hypixel/megawalls/general.ts | 2 ++ src/lib/hypixel/skywars/general.ts | 2 ++ 9 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx b/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx index 9225806..3a52f71 100644 --- a/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx +++ b/src/app/(stats)/player/[ign]/_stats/blitz/table.tsx @@ -1,11 +1,12 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { formatNumber, formatSecondsToTime } from "@/lib/formatters" -import { getAllBlitzKitStats, getBlitzKitLevel, getBlitzKitName, getBlitzMostPlayedKit } from "@/lib/hypixel/blitz/general" +import { getAllBlitzKitStats, getBlitzBestMode, getBlitzKitLevel, getBlitzKitName, getBlitzMostPlayedKit } from "@/lib/hypixel/blitz/general" import { romanize } from "@/lib/hypixel/general" import { NonNullStats } from "@/lib/schema/player" import { cn } from "@/lib/utils" export function BlitzModeStatsTable({ stats }: { stats: NonNullable }) { + const best = getBlitzBestMode(stats) return ( @@ -16,12 +17,12 @@ export function BlitzModeStatsTable({ stats }: { stats: NonNullable - + Solo Normal {formatNumber(stats.kills_solo_normal)} {formatNumber(stats.wins_solo_normal)} - + Teams Normal {formatNumber(stats.kills_teams_normal)} {formatNumber(stats.wins_teams_normal)} diff --git a/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx index 7546a32..d912080 100644 --- a/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx +++ b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx @@ -1,8 +1,9 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { MODES } from "@/data/hypixel/build-battle" import { formatNumber } from "@/lib/formatters" -import { getBuildBattleModeName as getBuildBattleMode } from "@/lib/hypixel/build-battle/general" +import { getBuildBattleBestMode, getBuildBattleModeName as getBuildBattleMode } from "@/lib/hypixel/build-battle/general" import { NonNullStats } from "@/lib/schema/player" +import { cn } from "@/lib/utils" export default function BuildBattleStatsTable({ stats }: { stats: NonNullable }) { return ( @@ -37,8 +38,10 @@ function TableStat({ modeId, stats }: { modeId: typeof MODES[number]["id"], stat ) } + const isBest = getBuildBattleBestMode(stats) === modeId + return ( - + {mode.name} {formatNumber(stats[`wins_${modeId}`])} diff --git a/src/lib/hypixel/arcade/general.ts b/src/lib/hypixel/arcade/general.ts index e49f7dd..ba96478 100644 --- a/src/lib/hypixel/arcade/general.ts +++ b/src/lib/hypixel/arcade/general.ts @@ -53,6 +53,8 @@ export function getArcadeMostPlayedPixelPartyMode(stats: NonNullable current.games > max.games ? current : max) return mostPlayed.modeId diff --git a/src/lib/hypixel/bedwars/general.ts b/src/lib/hypixel/bedwars/general.ts index afe131a..aeead07 100644 --- a/src/lib/hypixel/bedwars/general.ts +++ b/src/lib/hypixel/bedwars/general.ts @@ -163,6 +163,8 @@ export function getBestMode(stats: NonNullable): "solo" const max = Math.max(solo, doubles, threes, fours) + if (max === 0) return null + switch (max) { case solo: return "solo" diff --git a/src/lib/hypixel/blitz/general.ts b/src/lib/hypixel/blitz/general.ts index 1ba283f..527a750 100644 --- a/src/lib/hypixel/blitz/general.ts +++ b/src/lib/hypixel/blitz/general.ts @@ -2,6 +2,16 @@ import { KITEXP, KITS } from "@/data/hypixel/blitz" import { NonNullStats } from "@/lib/schema/player" import { devide } from "../general" +export function getBlitzBestMode(stats: NonNullable) { + if (stats.wins_solo_normal === 0 && stats.wins_teams_normal === 0) return null + + if (stats.wins_solo_normal > stats.wins_teams_normal) { + return "solo_normal" + } else { + return "teams_normal" + } +} + export function getBlitzKitLevel(kitId: typeof KITS[number]["id"], stats: NonNullable) { let level = stats[kitId] if (level === -1) { diff --git a/src/lib/hypixel/build-battle/general.ts b/src/lib/hypixel/build-battle/general.ts index de64e84..920b389 100644 --- a/src/lib/hypixel/build-battle/general.ts +++ b/src/lib/hypixel/build-battle/general.ts @@ -1,4 +1,5 @@ import { MODES, STARS } from "@/data/hypixel/build-battle" +import { NonNullStats } from "@/lib/schema/player" export function getBuildBattleRank(score: number) { for (let i = STARS.length - 1; i >= 0; i--) { @@ -18,3 +19,21 @@ export function getBuildBattleRankNext(score: number) { export function getBuildBattleModeName(id: typeof MODES[number]["id"]) { return MODES.find(m => m.id === id)! } + +export function getBuildBattleBestMode(stats: NonNullable): typeof MODES[number]["id"] | null { + let bestMode: typeof MODES[number]["id"] | null = null + let maxWins = 0 + + for (const mode of MODES) { + if (mode.id === "") continue + + const wins = stats[`wins_${mode.id}` as keyof typeof stats] as number + if (wins > maxWins) { + maxWins = wins + bestMode = mode.id + } + } + + return bestMode +} + diff --git a/src/lib/hypixel/copsandcrims/general.ts b/src/lib/hypixel/copsandcrims/general.ts index e351770..70b72c6 100644 --- a/src/lib/hypixel/copsandcrims/general.ts +++ b/src/lib/hypixel/copsandcrims/general.ts @@ -53,6 +53,8 @@ export function getCopsAndCrimsBestMode(stats: NonNullable m.wins).reduce((a, b) => a + b) === 0) return null + const best = modeWins.reduce((best, current) => current.wins > best.wins ? current : best).mode return best === "" ? "regular" : best diff --git a/src/lib/hypixel/megawalls/general.ts b/src/lib/hypixel/megawalls/general.ts index 3ab3d38..77056a7 100644 --- a/src/lib/hypixel/megawalls/general.ts +++ b/src/lib/hypixel/megawalls/general.ts @@ -92,6 +92,8 @@ export function getMegaWallsMostPlayedMode(stats: NonNullable m.games).reduce((a, b) => a + b) === 0) return null + const mostPlayed = modes.reduce((max, current) => current.games > max.games ? current : max) return mostPlayed.id diff --git a/src/lib/hypixel/skywars/general.ts b/src/lib/hypixel/skywars/general.ts index d16516c..18fd685 100644 --- a/src/lib/hypixel/skywars/general.ts +++ b/src/lib/hypixel/skywars/general.ts @@ -80,6 +80,8 @@ export function getBestSkywarsMode(stats: NonNullable): const max = Math.max(normal, insane, teams_normal, teams_insane, mega, mega_doubles, ranked) + if (max === 0) return null + switch (max) { case normal: return "normal"