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