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.
+
+
+
+
+ )}
+
+
+ )
+}