diff --git a/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx b/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx
new file mode 100644
index 0000000..9b3f546
--- /dev/null
+++ b/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx
@@ -0,0 +1,38 @@
+import { cn } from "@/lib/utils"
+
+type GenericProgressProps =
+ & {
+ percent: number
+ }
+ & ({
+ className: string
+ rainbow?: never
+ } | {
+ className?: never
+ rainbow: true
+ })
+
+export default function GenericProgress({ percent, className, rainbow }: GenericProgressProps) {
+ if (rainbow) {
+ return (
+ <>
+
+
+
+ >
+ )
+ }
+
+ return (
+ <>
+
+
+ >
+ )
+}
diff --git a/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx b/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
index 27ef9d8..e6f525f 100644
--- a/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
@@ -2,6 +2,7 @@ import { getBedwarsStar, getPrestigeName, getTextColor } from "@/lib/hypixel/bed
import { getBWLevelForExp } from "@/lib/hypixel/bedwarsLevel"
import { bedwarsLevelColors } from "@/lib/hypixelFormatters"
import { cn } from "@/lib/utils"
+import GenericProgress from "../../_components/GenericProgress"
import Multicolored from "../../_components/Multicolored"
export function BedwarsLevel({ xp }: { xp: number }) {
@@ -18,7 +19,6 @@ export function BedwarsProgress({ level, percent }: { level: number, percent: nu
)
@@ -67,17 +67,8 @@ function LevelNumber({ level, className }: { level: number, className?: string }
function Progress({ level, percent }: { level: number, percent: number }) {
if (level >= 1000 && level < 1100) {
- return (
-
-
- )
+ return
}
- return
+ return
}
diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx
index e833ea2..bb1c260 100644
--- a/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/skywars/components.tsx
@@ -1,6 +1,18 @@
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 ShardProgress({ percent }: { percent: number }) {
+ return (
+
+ )
+}
export function SkywarsLevel({ xp, icon }: { xp: number, icon: string | undefined }) {
const level = getSkywarsLevel(xp)
@@ -56,7 +68,6 @@ export function SkywarsProgress({ level, percent }: { level: number, percent: nu
)
@@ -83,19 +94,10 @@ function LevelNumber({ level, className }: { level: number, className?: string }
function Progress({ level, percent }: { level: number, percent: number }) {
if (level > 150 || level === 50) {
- return (
-
-
- )
+ return
}
- return
+ return
}
export function SkywarsPrestige({ level, icon }: { level: number, icon?: string }) {
diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
index 8ca503d..b080153 100644
--- a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
@@ -10,7 +10,7 @@ import { NonNullStats } from "@/lib/schema/player"
import { ChevronDown, ChevronUp } from "lucide-react"
import { useEffect, useRef, useState } from "react"
import CollapsedStats from "../../_components/CollapsedStats"
-import { SkywarsLevel, SkywarsProgress } from "./components"
+import { ShardProgress, SkywarsLevel, SkywarsProgress } from "./components"
import SkyWarsGeneralStats from "./stats"
import SkywarsStatTable from "./table"
@@ -44,12 +44,14 @@ export default function SkyWarsStats({ stats }: { stats: NonNullStats["SkyWars"]
const kd = (stats.kills / stats.deaths).toFixed(2)
const wl = (stats.wins / stats.losses).toFixed(2)
- const percent = getProgress(
+ const levelProgress = getProgress(
getSkywarsXpForLevel(Math.floor(level)),
stats.skywars_experience,
getSkywarsXpForLevel(Math.floor(level) + 1)
)
+ const shardProgress = getProgress(0, stats.shard, 20000)
+
return (
@@ -84,11 +86,12 @@ export default function SkyWarsStats({ stats }: { stats: NonNullStats["SkyWars"]
-
+
+
diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts
index 5556c46..76c38bc 100644
--- a/src/lib/schema/stats.ts
+++ b/src/lib/schema/stats.ts
@@ -246,5 +246,6 @@ export const skywarsStatsSchema = z.looseObject({
kills_ranked_normal: z.number().default(0),
deaths_ranked_normal: z.number().default(0),
wins_ranked_normal: z.number().default(0),
- losses_ranked_normal: z.number().default(0)
+ losses_ranked_normal: z.number().default(0),
+ shard: z.number().default(0)
})