diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/skywars-components.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/skywars-components.tsx
index 502f34e..e833ea2 100644
--- a/src/app/(stats)/player/[ign]/_stats/skywars/skywars-components.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/skywars/skywars-components.tsx
@@ -56,7 +56,7 @@ export function SkywarsProgress({ level, percent }: { level: number, percent: nu
)
diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
index 48a70c8..992b2e4 100644
--- a/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/skywars/skywars.tsx
@@ -64,15 +64,15 @@ export default function SkyWarsStats({ stats }: { stats: Player["player"]["stats
},
{
title: KD
,
- stat: {kd}
+ stat: {kd}
},
{
title: Wins
,
- stat: {formatNumber(stats.wins)}
+ stat: {formatNumber(stats.wins)}
},
{
title: WL
,
- stat: {wl}
+ stat: {wl}
}
]}
/>
diff --git a/src/app/(stats)/player/[ign]/_stats/skywars/stats.tsx b/src/app/(stats)/player/[ign]/_stats/skywars/stats.tsx
index 3858295..84ddbfb 100644
--- a/src/app/(stats)/player/[ign]/_stats/skywars/stats.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/skywars/stats.tsx
@@ -45,12 +45,14 @@ export default function SkyWarsGeneralStats({
-
-
+
+
+
+
)
diff --git a/src/lib/hypixel/skyWarsLevel.ts b/src/lib/hypixel/skyWarsLevel.ts
index 3fa5595..9d675b0 100644
--- a/src/lib/hypixel/skyWarsLevel.ts
+++ b/src/lib/hypixel/skyWarsLevel.ts
@@ -1,37 +1,26 @@
+import { INITIAL_XP, RECURRING_XP } from "@/data/hypixel/skywars"
+
export function getSkywarsLevel(xp: number) {
- const xps = [0, 20, 70, 150, 250, 500, 1000, 2000, 3500, 6000, 10000, 15000]
if (xp >= 15000) {
- return (xp - 15000) / 10000 + 12
- }
- for (let i = 0; i < xps.length; i += 1) {
- if (xp < xps[i]) {
- return i + (xp - xps[i - 1]) / (xps[i] - xps[i - 1])
+ return (xp - 15000) / RECURRING_XP + 12
+ } else {
+ for (let i = 0; i < INITIAL_XP.length; i++) {
+ if (xp < INITIAL_XP[i]) {
+ return i + (xp - INITIAL_XP[i - 1]) / (INITIAL_XP[i] - INITIAL_XP[i - 1])
+ }
}
}
-
return 0
}
-export function getSkywarsXpForLevel(level: number) {
- const xps = [0, 20, 70, 150, 250, 500, 1000, 2000, 3500, 6000, 10000, 15000]
-
- if (level >= 12) {
- return (level - 12) * 10000 + 15000
+export function getSkywarsXpForLevel(lvl: number) {
+ let xp = 0
+ for (let i = 0; i < lvl; i++) {
+ if (i < INITIAL_XP.length) {
+ xp = INITIAL_XP[i]
+ } else {
+ xp += RECURRING_XP
+ }
}
-
- const baseLevel = Math.floor(level)
- const progress = level - baseLevel
-
- if (baseLevel >= xps.length) {
- return xps[xps.length - 1]
- }
-
- if (baseLevel === 0) {
- return progress * xps[1]
- }
-
- const baseXp = xps[baseLevel]
- const nextXp = xps[baseLevel + 1] || 15000
-
- return baseXp + progress * (nextXp - baseXp)
+ return xp
}
diff --git a/src/lib/hypixel/stats.ts b/src/lib/hypixel/stats.ts
index b1967d5..c517b6e 100644
--- a/src/lib/hypixel/stats.ts
+++ b/src/lib/hypixel/stats.ts
@@ -33,13 +33,8 @@ export function getTotalChallenges(challenges: Player["player"]["challenges"]) {
export function rewardClaimed(claimedAt?: number) {
if (!claimedAt) return false
- const now = new Date()
- const claimedDate = new Date(claimedAt)
+ const now = Date.now()
+ const diff = now - claimedAt
const oneDay = 24 * 60 * 60 * 1000
-
- if (now.getMilliseconds() - claimedDate.getMilliseconds() > oneDay) {
- return true
- } else {
- return false
- }
+ return diff <= oneDay
}
diff --git a/src/lib/schema/stats.ts b/src/lib/schema/stats.ts
index ecd0264..bd58a03 100644
--- a/src/lib/schema/stats.ts
+++ b/src/lib/schema/stats.ts
@@ -194,8 +194,20 @@ export const skywarsStatsSchema = z.looseObject({
selected_prestige_icon: z.string().optional(),
kills: z.number().default(0),
deaths: z.number().default(0),
+ assists: z.number().default(0),
wins: z.number().default(0),
losses: z.number().default(0),
cosmetic_tokens: z.number().default(0),
- coins: z.number().default(0)
+ coins: z.number().default(0),
+ blocks_placed: z.number().default(0),
+ blocks_broken: z.number().default(0),
+ chests_opened: z.number().default(0),
+ arrows_hit: z.number().default(0),
+ arrows_shot: z.number().default(0),
+ melee_kills: z.number().default(0),
+ void_kills: z.number().default(0),
+ bow_kills: z.number().default(0),
+ mobs_kills: z.number().default(0),
+ enderpearls_thrown: z.number().default(0),
+ egg_thrown: z.number().default(0)
})