From a7c8b1cef49ca5aaed0d1b3052a7dc09617b84ea Mon Sep 17 00:00:00 2001 From: Taken Date: Fri, 22 Aug 2025 11:24:31 +0200 Subject: [PATCH] Updated layout and added suspense --- src/app/(stats)/layout.tsx | 24 ++- .../player/[ign]/_components/Sidebar.tsx | 4 +- .../player/[ign]/_stats/bedwars/bedwars.tsx | 2 +- src/app/(stats)/player/[ign]/page.tsx | 19 +- src/app/globals.css | 5 + src/lib/schema/player.ts | 191 +---------------- src/lib/schema/stats.ts | 192 ++++++++++++++++++ 7 files changed, 234 insertions(+), 203 deletions(-) create mode 100644 src/lib/schema/stats.ts diff --git a/src/app/(stats)/layout.tsx b/src/app/(stats)/layout.tsx index f6d9311..ae4c871 100644 --- a/src/app/(stats)/layout.tsx +++ b/src/app/(stats)/layout.tsx @@ -4,19 +4,21 @@ import { Settings } from "lucide-react" import Link from "next/link" import { ReactNode } from "react" -export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) { +export default function StatsLayout({ children }: Readonly<{ children: ReactNode }>) { return ( <> - -
+
+ +
+
{children}
diff --git a/src/app/(stats)/player/[ign]/_components/Sidebar.tsx b/src/app/(stats)/player/[ign]/_components/Sidebar.tsx index dffc4d3..438be70 100644 --- a/src/app/(stats)/player/[ign]/_components/Sidebar.tsx +++ b/src/app/(stats)/player/[ign]/_components/Sidebar.tsx @@ -1,11 +1,11 @@ import { Card, CardContent } from "@/components/ui/card" +import { Separator } from "@/components/ui/separator" import { getColor } from "@/data/colors" import { formatDate, formatNumber } from "@/lib/formatters" import { getGuildMember, getGuildRankTag, getMemberGEXP, getMemberWeeklyGEXP } from "@/lib/hypixel/guild" import { getCoinMultiplier, getTotalChallenges, getTotalCoins, getTotalQuests, rewardClaimed } from "@/lib/hypixel/stats" import { Guild } from "@/lib/schema/guild" import { Player } from "@/lib/schema/player" -import { Separator } from "@radix-ui/react-separator" import Link from "next/link" import SocialIcons from "./SocialIcons" @@ -18,7 +18,7 @@ type SidebarProps = { export default function Sidebar({ level, ign, player, guild }: SidebarProps) { return ( - +
diff --git a/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx b/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx index 22ad207..a98e38e 100644 --- a/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx +++ b/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx @@ -2,10 +2,10 @@ import { Card, CardContent } from "@/components/ui/card" import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible" +import { Separator } from "@/components/ui/separator" import { getBWLevelForExp, getTotalExpForLevel } from "@/lib/hypixel/bedwarsLevel" import { getProgress } from "@/lib/hypixel/general" import { Player } from "@/lib/schema/player" -import { Separator } from "@radix-ui/react-separator" import { ChevronDown, ChevronUp, Menu } from "lucide-react" import { useEffect, useRef, useState } from "react" import CollapsedStats from "../../_components/CollapsedStats" diff --git a/src/app/(stats)/player/[ign]/page.tsx b/src/app/(stats)/player/[ign]/page.tsx index e7d6de2..82373ba 100644 --- a/src/app/(stats)/player/[ign]/page.tsx +++ b/src/app/(stats)/player/[ign]/page.tsx @@ -3,6 +3,8 @@ import { getGuild } from "@/lib/hypixel/api/guild" import { getUuid } from "@/lib/hypixel/api/mojang" import { getPlayer } from "@/lib/hypixel/api/player" import { getExactLevel } from "@/lib/hypixel/level" +import { Loader2Icon } from "lucide-react" +import { Suspense } from "react" import Sidebar from "./_components/Sidebar" import BedwarsStats from "./_stats/bedwars/bedwars" @@ -11,8 +13,23 @@ export default async function PlayerPage({ }: { params: Promise<{ ign: string }> }) { - const { ign: pign } = await params + const { ign } = await params + return ( + + +

{`Loading stats for ${ign}`}

+
+ } + > + + + ) +} + +async function SuspendedPage({ ign: pign }: { ign: string }) { const uuid = await getUuid(pign) if (!uuid) { return ( diff --git a/src/app/globals.css b/src/app/globals.css index 220d365..43c5661 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -22,6 +22,11 @@ --color-mc-white: #FFFFFF; } +@theme inline { + --spacing-header: 3.75rem; + --spacing-content: calc(100vh - var(--spacing-header)); +} + @theme inline { --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); diff --git a/src/lib/schema/player.ts b/src/lib/schema/player.ts index b6780de..cf7f52d 100644 --- a/src/lib/schema/player.ts +++ b/src/lib/schema/player.ts @@ -1,4 +1,5 @@ import z from "zod" +import { bedwarsStatsSchema, skywarsStatsSchema } from "./stats" export const playerSchema = z.looseObject({ player: z.looseObject({ @@ -12,194 +13,8 @@ export const playerSchema = z.looseObject({ karma: z.number().default(0), achievementPoints: z.number().default(0), stats: z.looseObject({ - Bedwars: z.looseObject({ - Experience: z.number().default(0), - coins: z.number().default(0), - winstreak: z.number().optional(), - kills_bedwars: z.number().default(0), - deaths_bedwars: z.number().default(0), - final_kills_bedwars: z.number().default(0), - final_deaths_bedwars: z.number().default(0), - wins_bedwars: z.number().default(0), - losses_bedwars: z.number().default(0), - beds_broken_bedwars: z.number().default(0), - beds_lost_bedwars: z.number().default(0), - total_challenges_completed: z.number().default(0), - iron_resources_collected_bedwars: z.number().default(0), - gold_resources_collected_bedwars: z.number().default(0), - diamond_resources_collected_bedwars: z.number().default(0), - emerald_resources_collected_bedwars: z.number().default(0), - _items_purchased_bedwars: z.number().default(0), - slumber: z.looseObject({ - tickets: z.number().default(0), - bag_type: z.string(), - total_tickets_earned: z.number(), - doublers: z.number(), - room: z.record(z.string(), z.boolean()) - }).optional(), - eight_one_winstreak: z.number().optional(), - eight_one_kills_bedwars: z.number().default(0), - eight_one_deaths_bedwars: z.number().default(0), - eight_one_final_kills_bedwars: z.number().default(0), - eight_one_final_deaths_bedwars: z.number().default(0), - eight_one_wins_bedwars: z.number().default(0), - eight_one_losses_bedwars: z.number().default(0), - eight_one_beds_broken_bedwars: z.number().default(0), - eight_one_beds_lost_bedwars: z.number().default(0), - eight_two_winstreak: z.number().optional(), - eight_two_kills_bedwars: z.number().default(0), - eight_two_deaths_bedwars: z.number().default(0), - eight_two_final_kills_bedwars: z.number().default(0), - eight_two_final_deaths_bedwars: z.number().default(0), - eight_two_wins_bedwars: z.number().default(0), - eight_two_losses_bedwars: z.number().default(0), - eight_two_beds_broken_bedwars: z.number().default(0), - eight_two_beds_lost_bedwars: z.number().default(0), - four_three_winstreak: z.number().optional(), - four_three_kills_bedwars: z.number().default(0), - four_three_deaths_bedwars: z.number().default(0), - four_three_final_kills_bedwars: z.number().default(0), - four_three_final_deaths_bedwars: z.number().default(0), - four_three_wins_bedwars: z.number().default(0), - four_three_losses_bedwars: z.number().default(0), - four_three_beds_broken_bedwars: z.number().default(0), - four_three_beds_lost_bedwars: z.number().default(0), - four_four_winstreak: z.number().optional(), - four_four_kills_bedwars: z.number().default(0), - four_four_deaths_bedwars: z.number().default(0), - four_four_final_kills_bedwars: z.number().default(0), - four_four_final_deaths_bedwars: z.number().default(0), - four_four_wins_bedwars: z.number().default(0), - four_four_losses_bedwars: z.number().default(0), - four_four_beds_broken_bedwars: z.number().default(0), - four_four_beds_lost_bedwars: z.number().default(0), - two_four_winstreak: z.number().optional(), - two_four_kills_bedwars: z.number().default(0), - two_four_deaths_bedwars: z.number().default(0), - two_four_final_kills_bedwars: z.number().default(0), - two_four_final_deaths_bedwars: z.number().default(0), - two_four_wins_bedwars: z.number().default(0), - two_four_losses_bedwars: z.number().default(0), - two_four_beds_broken_bedwars: z.number().default(0), - two_four_beds_lost_bedwars: z.number().default(0), - eight_two_rush_winstreak: z.number().optional(), - eight_two_rush_kills_bedwars: z.number().default(0), - eight_two_rush_deaths_bedwars: z.number().default(0), - eight_two_rush_final_kills_bedwars: z.number().default(0), - eight_two_rush_final_deaths_bedwars: z.number().default(0), - eight_two_rush_wins_bedwars: z.number().default(0), - eight_two_rush_losses_bedwars: z.number().default(0), - eight_two_rush_beds_broken_bedwars: z.number().default(0), - eight_two_rush_beds_lost_bedwars: z.number().default(0), - four_four_rush_winstreak: z.number().optional(), - four_four_rush_kills_bedwars: z.number().default(0), - four_four_rush_deaths_bedwars: z.number().default(0), - four_four_rush_final_kills_bedwars: z.number().default(0), - four_four_rush_final_deaths_bedwars: z.number().default(0), - four_four_rush_wins_bedwars: z.number().default(0), - four_four_rush_losses_bedwars: z.number().default(0), - four_four_rush_beds_broken_bedwars: z.number().default(0), - four_four_rush_beds_lost_bedwars: z.number().default(0), - eight_two_ultimate_winstreak: z.number().optional(), - eight_two_ultimate_kills_bedwars: z.number().default(0), - eight_two_ultimate_deaths_bedwars: z.number().default(0), - eight_two_ultimate_final_kills_bedwars: z.number().default(0), - eight_two_ultimate_final_deaths_bedwars: z.number().default(0), - eight_two_ultimate_wins_bedwars: z.number().default(0), - eight_two_ultimate_losses_bedwars: z.number().default(0), - eight_two_ultimate_beds_broken_bedwars: z.number().default(0), - eight_two_ultimate_beds_lost_bedwars: z.number().default(0), - four_four_ultimate_winstreak: z.number().optional(), - four_four_ultimate_kills_bedwars: z.number().default(0), - four_four_ultimate_deaths_bedwars: z.number().default(0), - four_four_ultimate_final_kills_bedwars: z.number().default(0), - four_four_ultimate_final_deaths_bedwars: z.number().default(0), - four_four_ultimate_wins_bedwars: z.number().default(0), - four_four_ultimate_losses_bedwars: z.number().default(0), - four_four_ultimate_beds_broken_bedwars: z.number().default(0), - four_four_ultimate_beds_lost_bedwars: z.number().default(0), - eight_two_lucky_winstreak: z.number().optional(), - eight_two_lucky_kills_bedwars: z.number().default(0), - eight_two_lucky_deaths_bedwars: z.number().default(0), - eight_two_lucky_final_kills_bedwars: z.number().default(0), - eight_two_lucky_final_deaths_bedwars: z.number().default(0), - eight_two_lucky_wins_bedwars: z.number().default(0), - eight_two_lucky_losses_bedwars: z.number().default(0), - eight_two_lucky_beds_broken_bedwars: z.number().default(0), - eight_two_lucky_beds_lost_bedwars: z.number().default(0), - four_four_lucky_winstreak: z.number().optional(), - four_four_lucky_kills_bedwars: z.number().default(0), - four_four_lucky_deaths_bedwars: z.number().default(0), - four_four_lucky_final_kills_bedwars: z.number().default(0), - four_four_lucky_final_deaths_bedwars: z.number().default(0), - four_four_lucky_wins_bedwars: z.number().default(0), - four_four_lucky_losses_bedwars: z.number().default(0), - four_four_lucky_beds_broken_bedwars: z.number().default(0), - four_four_lucky_beds_lost_bedwars: z.number().default(0), - eight_two_voidless_winstreak: z.number().optional(), - eight_two_voidless_kills_bedwars: z.number().default(0), - eight_two_voidless_deaths_bedwars: z.number().default(0), - eight_two_voidless_final_kills_bedwars: z.number().default(0), - eight_two_voidless_final_deaths_bedwars: z.number().default(0), - eight_two_voidless_wins_bedwars: z.number().default(0), - eight_two_voidless_losses_bedwars: z.number().default(0), - eight_two_voidless_beds_broken_bedwars: z.number().default(0), - eight_two_voidless_beds_lost_bedwars: z.number().default(0), - four_four_voidless_winstreak: z.number().optional(), - four_four_voidless_kills_bedwars: z.number().default(0), - four_four_voidless_deaths_bedwars: z.number().default(0), - four_four_voidless_final_kills_bedwars: z.number().default(0), - four_four_voidless_final_deaths_bedwars: z.number().default(0), - four_four_voidless_wins_bedwars: z.number().default(0), - four_four_voidless_losses_bedwars: z.number().default(0), - four_four_voidless_beds_broken_bedwars: z.number().default(0), - four_four_voidless_beds_lost_bedwars: z.number().default(0), - eight_two_armed_winstreak: z.number().optional(), - eight_two_armed_kills_bedwars: z.number().default(0), - eight_two_armed_deaths_bedwars: z.number().default(0), - eight_two_armed_final_kills_bedwars: z.number().default(0), - eight_two_armed_final_deaths_bedwars: z.number().default(0), - eight_two_armed_wins_bedwars: z.number().default(0), - eight_two_armed_losses_bedwars: z.number().default(0), - eight_two_armed_beds_broken_bedwars: z.number().default(0), - eight_two_armed_beds_lost_bedwars: z.number().default(0), - four_four_armed_winstreak: z.number().optional(), - four_four_armed_kills_bedwars: z.number().default(0), - four_four_armed_deaths_bedwars: z.number().default(0), - four_four_armed_final_kills_bedwars: z.number().default(0), - four_four_armed_final_deaths_bedwars: z.number().default(0), - four_four_armed_wins_bedwars: z.number().default(0), - four_four_armed_losses_bedwars: z.number().default(0), - four_four_armed_beds_broken_bedwars: z.number().default(0), - four_four_armed_beds_lost_bedwars: z.number().default(0), - four_four_swap_winstreak: z.number().optional(), - four_four_swap_kills_bedwars: z.number().default(0), - four_four_swap_deaths_bedwars: z.number().default(0), - four_four_swap_final_kills_bedwars: z.number().default(0), - four_four_swap_final_deaths_bedwars: z.number().default(0), - four_four_swap_wins_bedwars: z.number().default(0), - four_four_swap_losses_bedwars: z.number().default(0), - four_four_swap_beds_broken_bedwars: z.number().default(0), - four_four_swap_beds_lost_bedwars: z.number().default(0), - four_four_underworld_winstreak: z.number().optional(), - four_four_underworld_kills_bedwars: z.number().default(0), - four_four_underworld_deaths_bedwars: z.number().default(0), - four_four_underworld_final_kills_bedwars: z.number().default(0), - four_four_underworld_final_deaths_bedwars: z.number().default(0), - four_four_underworld_wins_bedwars: z.number().default(0), - four_four_underworld_losses_bedwars: z.number().default(0), - four_four_underworld_beds_broken_bedwars: z.number().default(0), - four_four_underworld_beds_lost_bedwars: z.number().default(0), - castle_winstreak: z.number().optional(), - castle_kills_bedwars: z.number().default(0), - castle_deaths_bedwars: z.number().default(0), - castle_final_kills_bedwars: z.number().default(0), - castle_final_deaths_bedwars: z.number().default(0), - castle_wins_bedwars: z.number().default(0), - castle_losses_bedwars: z.number().default(0), - castle_beds_broken_bedwars: z.number().default(0), - castle_beds_lost_bedwars: z.number().default(0) - }).optional() + Bedwars: bedwarsStatsSchema.optional(), + SkyWars: skywarsStatsSchema.optional() }), quests: z.record( z.string(), diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts new file mode 100644 index 0000000..58263b7 --- /dev/null +++ b/src/lib/schema/stats.ts @@ -0,0 +1,192 @@ +import z from "zod" + +export const bedwarsStatsSchema = z.looseObject({ + Experience: z.number().default(0), + coins: z.number().default(0), + winstreak: z.number().optional(), + kills_bedwars: z.number().default(0), + deaths_bedwars: z.number().default(0), + final_kills_bedwars: z.number().default(0), + final_deaths_bedwars: z.number().default(0), + wins_bedwars: z.number().default(0), + losses_bedwars: z.number().default(0), + beds_broken_bedwars: z.number().default(0), + beds_lost_bedwars: z.number().default(0), + total_challenges_completed: z.number().default(0), + iron_resources_collected_bedwars: z.number().default(0), + gold_resources_collected_bedwars: z.number().default(0), + diamond_resources_collected_bedwars: z.number().default(0), + emerald_resources_collected_bedwars: z.number().default(0), + _items_purchased_bedwars: z.number().default(0), + slumber: z.looseObject({ + tickets: z.number().default(0), + bag_type: z.string(), + total_tickets_earned: z.number(), + doublers: z.number(), + room: z.record(z.string(), z.boolean()) + }).optional(), + eight_one_winstreak: z.number().optional(), + eight_one_kills_bedwars: z.number().default(0), + eight_one_deaths_bedwars: z.number().default(0), + eight_one_final_kills_bedwars: z.number().default(0), + eight_one_final_deaths_bedwars: z.number().default(0), + eight_one_wins_bedwars: z.number().default(0), + eight_one_losses_bedwars: z.number().default(0), + eight_one_beds_broken_bedwars: z.number().default(0), + eight_one_beds_lost_bedwars: z.number().default(0), + eight_two_winstreak: z.number().optional(), + eight_two_kills_bedwars: z.number().default(0), + eight_two_deaths_bedwars: z.number().default(0), + eight_two_final_kills_bedwars: z.number().default(0), + eight_two_final_deaths_bedwars: z.number().default(0), + eight_two_wins_bedwars: z.number().default(0), + eight_two_losses_bedwars: z.number().default(0), + eight_two_beds_broken_bedwars: z.number().default(0), + eight_two_beds_lost_bedwars: z.number().default(0), + four_three_winstreak: z.number().optional(), + four_three_kills_bedwars: z.number().default(0), + four_three_deaths_bedwars: z.number().default(0), + four_three_final_kills_bedwars: z.number().default(0), + four_three_final_deaths_bedwars: z.number().default(0), + four_three_wins_bedwars: z.number().default(0), + four_three_losses_bedwars: z.number().default(0), + four_three_beds_broken_bedwars: z.number().default(0), + four_three_beds_lost_bedwars: z.number().default(0), + four_four_winstreak: z.number().optional(), + four_four_kills_bedwars: z.number().default(0), + four_four_deaths_bedwars: z.number().default(0), + four_four_final_kills_bedwars: z.number().default(0), + four_four_final_deaths_bedwars: z.number().default(0), + four_four_wins_bedwars: z.number().default(0), + four_four_losses_bedwars: z.number().default(0), + four_four_beds_broken_bedwars: z.number().default(0), + four_four_beds_lost_bedwars: z.number().default(0), + two_four_winstreak: z.number().optional(), + two_four_kills_bedwars: z.number().default(0), + two_four_deaths_bedwars: z.number().default(0), + two_four_final_kills_bedwars: z.number().default(0), + two_four_final_deaths_bedwars: z.number().default(0), + two_four_wins_bedwars: z.number().default(0), + two_four_losses_bedwars: z.number().default(0), + two_four_beds_broken_bedwars: z.number().default(0), + two_four_beds_lost_bedwars: z.number().default(0), + eight_two_rush_winstreak: z.number().optional(), + eight_two_rush_kills_bedwars: z.number().default(0), + eight_two_rush_deaths_bedwars: z.number().default(0), + eight_two_rush_final_kills_bedwars: z.number().default(0), + eight_two_rush_final_deaths_bedwars: z.number().default(0), + eight_two_rush_wins_bedwars: z.number().default(0), + eight_two_rush_losses_bedwars: z.number().default(0), + eight_two_rush_beds_broken_bedwars: z.number().default(0), + eight_two_rush_beds_lost_bedwars: z.number().default(0), + four_four_rush_winstreak: z.number().optional(), + four_four_rush_kills_bedwars: z.number().default(0), + four_four_rush_deaths_bedwars: z.number().default(0), + four_four_rush_final_kills_bedwars: z.number().default(0), + four_four_rush_final_deaths_bedwars: z.number().default(0), + four_four_rush_wins_bedwars: z.number().default(0), + four_four_rush_losses_bedwars: z.number().default(0), + four_four_rush_beds_broken_bedwars: z.number().default(0), + four_four_rush_beds_lost_bedwars: z.number().default(0), + eight_two_ultimate_winstreak: z.number().optional(), + eight_two_ultimate_kills_bedwars: z.number().default(0), + eight_two_ultimate_deaths_bedwars: z.number().default(0), + eight_two_ultimate_final_kills_bedwars: z.number().default(0), + eight_two_ultimate_final_deaths_bedwars: z.number().default(0), + eight_two_ultimate_wins_bedwars: z.number().default(0), + eight_two_ultimate_losses_bedwars: z.number().default(0), + eight_two_ultimate_beds_broken_bedwars: z.number().default(0), + eight_two_ultimate_beds_lost_bedwars: z.number().default(0), + four_four_ultimate_winstreak: z.number().optional(), + four_four_ultimate_kills_bedwars: z.number().default(0), + four_four_ultimate_deaths_bedwars: z.number().default(0), + four_four_ultimate_final_kills_bedwars: z.number().default(0), + four_four_ultimate_final_deaths_bedwars: z.number().default(0), + four_four_ultimate_wins_bedwars: z.number().default(0), + four_four_ultimate_losses_bedwars: z.number().default(0), + four_four_ultimate_beds_broken_bedwars: z.number().default(0), + four_four_ultimate_beds_lost_bedwars: z.number().default(0), + eight_two_lucky_winstreak: z.number().optional(), + eight_two_lucky_kills_bedwars: z.number().default(0), + eight_two_lucky_deaths_bedwars: z.number().default(0), + eight_two_lucky_final_kills_bedwars: z.number().default(0), + eight_two_lucky_final_deaths_bedwars: z.number().default(0), + eight_two_lucky_wins_bedwars: z.number().default(0), + eight_two_lucky_losses_bedwars: z.number().default(0), + eight_two_lucky_beds_broken_bedwars: z.number().default(0), + eight_two_lucky_beds_lost_bedwars: z.number().default(0), + four_four_lucky_winstreak: z.number().optional(), + four_four_lucky_kills_bedwars: z.number().default(0), + four_four_lucky_deaths_bedwars: z.number().default(0), + four_four_lucky_final_kills_bedwars: z.number().default(0), + four_four_lucky_final_deaths_bedwars: z.number().default(0), + four_four_lucky_wins_bedwars: z.number().default(0), + four_four_lucky_losses_bedwars: z.number().default(0), + four_four_lucky_beds_broken_bedwars: z.number().default(0), + four_four_lucky_beds_lost_bedwars: z.number().default(0), + eight_two_voidless_winstreak: z.number().optional(), + eight_two_voidless_kills_bedwars: z.number().default(0), + eight_two_voidless_deaths_bedwars: z.number().default(0), + eight_two_voidless_final_kills_bedwars: z.number().default(0), + eight_two_voidless_final_deaths_bedwars: z.number().default(0), + eight_two_voidless_wins_bedwars: z.number().default(0), + eight_two_voidless_losses_bedwars: z.number().default(0), + eight_two_voidless_beds_broken_bedwars: z.number().default(0), + eight_two_voidless_beds_lost_bedwars: z.number().default(0), + four_four_voidless_winstreak: z.number().optional(), + four_four_voidless_kills_bedwars: z.number().default(0), + four_four_voidless_deaths_bedwars: z.number().default(0), + four_four_voidless_final_kills_bedwars: z.number().default(0), + four_four_voidless_final_deaths_bedwars: z.number().default(0), + four_four_voidless_wins_bedwars: z.number().default(0), + four_four_voidless_losses_bedwars: z.number().default(0), + four_four_voidless_beds_broken_bedwars: z.number().default(0), + four_four_voidless_beds_lost_bedwars: z.number().default(0), + eight_two_armed_winstreak: z.number().optional(), + eight_two_armed_kills_bedwars: z.number().default(0), + eight_two_armed_deaths_bedwars: z.number().default(0), + eight_two_armed_final_kills_bedwars: z.number().default(0), + eight_two_armed_final_deaths_bedwars: z.number().default(0), + eight_two_armed_wins_bedwars: z.number().default(0), + eight_two_armed_losses_bedwars: z.number().default(0), + eight_two_armed_beds_broken_bedwars: z.number().default(0), + eight_two_armed_beds_lost_bedwars: z.number().default(0), + four_four_armed_winstreak: z.number().optional(), + four_four_armed_kills_bedwars: z.number().default(0), + four_four_armed_deaths_bedwars: z.number().default(0), + four_four_armed_final_kills_bedwars: z.number().default(0), + four_four_armed_final_deaths_bedwars: z.number().default(0), + four_four_armed_wins_bedwars: z.number().default(0), + four_four_armed_losses_bedwars: z.number().default(0), + four_four_armed_beds_broken_bedwars: z.number().default(0), + four_four_armed_beds_lost_bedwars: z.number().default(0), + four_four_swap_winstreak: z.number().optional(), + four_four_swap_kills_bedwars: z.number().default(0), + four_four_swap_deaths_bedwars: z.number().default(0), + four_four_swap_final_kills_bedwars: z.number().default(0), + four_four_swap_final_deaths_bedwars: z.number().default(0), + four_four_swap_wins_bedwars: z.number().default(0), + four_four_swap_losses_bedwars: z.number().default(0), + four_four_swap_beds_broken_bedwars: z.number().default(0), + four_four_swap_beds_lost_bedwars: z.number().default(0), + four_four_underworld_winstreak: z.number().optional(), + four_four_underworld_kills_bedwars: z.number().default(0), + four_four_underworld_deaths_bedwars: z.number().default(0), + four_four_underworld_final_kills_bedwars: z.number().default(0), + four_four_underworld_final_deaths_bedwars: z.number().default(0), + four_four_underworld_wins_bedwars: z.number().default(0), + four_four_underworld_losses_bedwars: z.number().default(0), + four_four_underworld_beds_broken_bedwars: z.number().default(0), + four_four_underworld_beds_lost_bedwars: z.number().default(0), + castle_winstreak: z.number().optional(), + castle_kills_bedwars: z.number().default(0), + castle_deaths_bedwars: z.number().default(0), + castle_final_kills_bedwars: z.number().default(0), + castle_final_deaths_bedwars: z.number().default(0), + castle_wins_bedwars: z.number().default(0), + castle_losses_bedwars: z.number().default(0), + castle_beds_broken_bedwars: z.number().default(0), + castle_beds_lost_bedwars: z.number().default(0) +}) + +export const skywarsStatsSchema = z.looseObject({})