diff --git a/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx b/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx
index febd4da..1da6797 100644
--- a/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/build-battle/build-battle.tsx
@@ -7,6 +7,7 @@ import { NonNullStats } from "@/lib/schema/player"
import CollapsedStats from "../../_components/CollapsedStats"
import BuildBattleTitleProgress from "./progress"
import BuildBattleGeneralStats from "./stats"
+import BuildBattleStatsTable from "./table"
export default function BuildBattleStats({ stats }: { stats: NonNullStats["BuildBattle"] }) {
if (!stats) return null
@@ -40,6 +41,8 @@ export default function BuildBattleStats({ stats }: { stats: NonNullStats["Build
+
+
diff --git a/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx
new file mode 100644
index 0000000..7546a32
--- /dev/null
+++ b/src/app/(stats)/player/[ign]/_stats/build-battle/table.tsx
@@ -0,0 +1,46 @@
+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 { NonNullStats } from "@/lib/schema/player"
+
+export default function BuildBattleStatsTable({ stats }: { stats: NonNullable }) {
+ return (
+
+
+
+ Mode
+ Wins
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+function TableStat({ modeId, stats }: { modeId: typeof MODES[number]["id"], stats: NonNullable }) {
+ const mode = getBuildBattleMode(modeId)
+
+ if (modeId === "") {
+ return (
+
+ {mode.name}
+ {formatNumber(stats["wins"])}
+
+ )
+ }
+
+ return (
+
+ {mode.name}
+ {formatNumber(stats[`wins_${modeId}`])}
+
+ )
+}
diff --git a/src/data/hypixel/build-battle.ts b/src/data/hypixel/build-battle.ts
index 34c4a50..e89a1a6 100644
--- a/src/data/hypixel/build-battle.ts
+++ b/src/data/hypixel/build-battle.ts
@@ -1,10 +1,10 @@
export const TITLE = "Build Battle" as const
export const MODES = [
- { id: "_solo_normal", name: "Solo" },
- { id: "_teams_normal", name: "Teams" },
- { id: "_guess_the_build", name: "Guess the Build" },
- { id: "_solo_pro", name: "Pro" },
- { id: "_speed_builders", name: "Speed Builders" },
+ { id: "solo_normal", name: "Solo" },
+ { id: "teams_normal", name: "Teams" },
+ { id: "guess_the_build", name: "Guess the Build" },
+ { id: "solo_pro", name: "Pro" },
+ { id: "speed_builders", name: "Speed Builders" },
{ id: "", name: "Overall" }
] as const
export const STARS = [
diff --git a/src/lib/hypixel/build-battle/general.ts b/src/lib/hypixel/build-battle/general.ts
index b1c0be2..793e4b2 100644
--- a/src/lib/hypixel/build-battle/general.ts
+++ b/src/lib/hypixel/build-battle/general.ts
@@ -1,4 +1,4 @@
-import { STARS } from "@/data/hypixel/build-battle"
+import { MODES, STARS } from "@/data/hypixel/build-battle"
export function getBuildBattleRank(score: number) {
for (let i = STARS.length - 1; i >= 0; i--) {
@@ -14,3 +14,7 @@ export function getNextBuildBattleRank(score: number) {
return next > STARS.length - 1 ? null : STARS[next]
}
+
+export function getBuildBattleModeName(id: typeof MODES[number]["id"]) {
+ return MODES.find(m => m.id === id)!
+}
diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts
index 4db59a5..1785694 100644
--- a/src/lib/schema/stats.ts
+++ b/src/lib/schema/stats.ts
@@ -392,5 +392,15 @@ export const buildBattleStatsSchema = z.looseObject({
coins: z.number().default(0),
games_played: z.number().default(0),
correct_guesses: z.number().default(0),
- super_votes: z.number().default(0)
+ super_votes: z.number().default(0),
+ wins_solo_normal: z.number().default(0),
+ wins_teams_normal: z.number().default(0),
+ wins_guess_the_build: z.number().default(0),
+ wins_solo_pro: z.number().default(0),
+ wins_speed_builders: z.number().default(0),
+ wins_solo_normal_latest: z.number().default(0),
+ wins_teams_normal_latest: z.number().default(0),
+ wins_guess_the_build_latest: z.number().default(0),
+ wins_solo_pro_latest: z.number().default(0),
+ wins_speed_builders_latest: z.number().default(0)
})