diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx index bb1c260..17d4af1 100644 --- a/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx +++ b/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx @@ -1,8 +1,34 @@ +import { formatNumber } from "@/lib/formatters" import { getPrestigeName, getSkyWarsIcon, getTextColor } from "@/lib/hypixel/skywars" import { getSkywarsLevel } from "@/lib/hypixel/skyWarsLevel" import { cn } from "@/lib/utils" import GenericProgress from "../../_components/GenericProgress" +export function AngelOfDeath( + { shards, lifetime_shards, opals, lifetime_opals }: { shards: number, lifetime_shards: number, opals: number, lifetime_opals: number } +) { + return ( +
+

+ {"Shards: "} + {shards} +

+

+ {"Opals: "} + {opals} +

+

+ {"Lifetime Shards: "} + {formatNumber(lifetime_shards)} +

+

+ {"Lifetime Opals: "} + {lifetime_opals} +

+
+ ) +} + export function ShardProgress({ percent }: { percent: number }) { return (
diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx index b080153..d4b4a5e 100644 --- a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx +++ b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx @@ -10,11 +10,13 @@ import { NonNullStats } from "@/lib/schema/player" import { ChevronDown, ChevronUp } from "lucide-react" import { useEffect, useRef, useState } from "react" import CollapsedStats from "../../_components/CollapsedStats" -import { ShardProgress, SkywarsLevel, SkywarsProgress } from "./components" +import { AngelOfDeath, ShardProgress, SkywarsLevel, SkywarsProgress } from "./components" import SkyWarsGeneralStats from "./stats" import SkywarsStatTable from "./table" -export default function SkyWarsStats({ stats }: { stats: NonNullStats["SkyWars"] }) { +export default function SkyWarsStats( + { stats, achievements_skywars_opal_obsession }: { stats: NonNullStats["SkyWars"], achievements_skywars_opal_obsession: number } +) { const ref = useRef(null) const [opened, setOpened] = useState(false) @@ -92,6 +94,12 @@ export default function SkyWarsStats({ stats }: { stats: NonNullStats["SkyWars"] + diff --git a/src/app/(stats)/player/[ign]/page.tsx b/src/app/(stats)/player/[ign]/page.tsx index d78b18b..7116580 100644 --- a/src/app/(stats)/player/[ign]/page.tsx +++ b/src/app/(stats)/player/[ign]/page.tsx @@ -85,7 +85,10 @@ async function SuspendedPage({ ign: pign }: { ign: string }) { (
- +
) : ( diff --git a/src/lib/schema/player.ts b/src/lib/schema/player.ts index 438ac25..600875e 100644 --- a/src/lib/schema/player.ts +++ b/src/lib/schema/player.ts @@ -12,6 +12,7 @@ export const playerSchema = z.looseObject({ networkExp: z.number().default(0), karma: z.number().default(0), achievementPoints: z.number().default(0), + achievements: z.record(z.string(), z.number()).optional(), stats: z.looseObject({ Bedwars: bedwarsStatsSchema.optional(), SkyWars: skywarsStatsSchema.optional() diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts index 76c38bc..ef79fbd 100644 --- a/src/lib/schema/stats.ts +++ b/src/lib/schema/stats.ts @@ -247,5 +247,6 @@ export const skywarsStatsSchema = z.looseObject({ deaths_ranked_normal: z.number().default(0), wins_ranked_normal: z.number().default(0), losses_ranked_normal: z.number().default(0), - shard: z.number().default(0) + shard: z.number().default(0), + opals: z.number().default(0) }) diff --git a/đ b/đ new file mode 100644 index 0000000..7116580 --- /dev/null +++ b/đ @@ -0,0 +1,108 @@ +import DisplayName from "@/components/player/displayname" +import { Card, CardContent } from "@/components/ui/card" +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" +import SkyWarsStats from "./_stats/skywars/skywars" + +export default async function PlayerPage({ + params +}: { + params: Promise<{ ign: string }> +}) { + const { ign } = await params + + return ( + + +

{`Loading stats for ${ign}`}

+
+ } + > + + + ) +} + +async function SuspendedPage({ ign: pign }: { ign: string }) { + const uuid = await getUuid(pign) + if (!uuid) { + return ( +
+

Player not found

+
+ ) + } + + const player = await getPlayer(uuid) + + if (!player) { + return ( +
+

Player not found

+
+ ) + } + + const guild = await getGuild(uuid) + const level = getExactLevel(player.networkExp) + + return ( +
+

+ +

+

+ {player.uuid} +

+
+ + {player.stats !== undefined ? + ( +
+ + +
+ ) : + ( +
+ + +

+ No stats avaiable. If they are staff then they most likely have their api off. +

+
+
+
+ )} +
+
+ ) +}