Updated skywars stats

This commit is contained in:
2025-08-22 22:28:26 +02:00
parent 4596177eaa
commit adea71938c
6 changed files with 41 additions and 43 deletions

View File

@@ -56,7 +56,7 @@ export function SkywarsProgress({ level, percent }: { level: number, percent: nu
<div className="flex items-center mb-10"> <div className="flex items-center mb-10">
<LevelNumber level={level} className="mr-2" /> <LevelNumber level={level} className="mr-2" />
<Progress level={level} percent={percent} /> <Progress level={level} percent={percent} />
<div className="flex-1 h-5 rounded-r-md bg-background"></div> <div className={cn("flex-1 h-5 rounded-r-md bg-background", percent === 0 ? "rounded-l-md" : undefined)}></div>
<LevelNumber level={level + 1} className="ml-2" /> <LevelNumber level={level + 1} className="ml-2" />
</div> </div>
) )

View File

@@ -64,15 +64,15 @@ export default function SkyWarsStats({ stats }: { stats: Player["player"]["stats
}, },
{ {
title: <p>KD</p>, title: <p>KD</p>,
stat: <p>{kd}</p> stat: <p className="text-muted-foreground">{kd}</p>
}, },
{ {
title: <p>Wins</p>, title: <p>Wins</p>,
stat: <p>{formatNumber(stats.wins)}</p> stat: <p className="text-muted-foreground">{formatNumber(stats.wins)}</p>
}, },
{ {
title: <p>WL</p>, title: <p>WL</p>,
stat: <p>{wl}</p> stat: <p className="text-muted-foreground">{wl}</p>
} }
]} ]}
/> />

View File

@@ -45,12 +45,14 @@ export default function SkyWarsGeneralStats({
<p> <p>
<br /> <br />
</p> </p>
</div>
<div className="flex-1">
<BasicStat title="Melee Kills: " value={formatNumber(stats.melee_kills)} /> <BasicStat title="Melee Kills: " value={formatNumber(stats.melee_kills)} />
<BasicStat title="Void Kills: " value={formatNumber(stats.void_kills)} /> <BasicStat title="Void Kills: " value={formatNumber(stats.void_kills)} />
<BasicStat title="Bow Kills: " value={formatNumber(stats.bow_kills)} /> <BasicStat title="Bow Kills: " value={formatNumber(stats.bow_kills)} />
<BasicStat title="Mobs Kills: " value={formatNumber(stats.mobs_kills)} /> <BasicStat title="Mobs Kills: " value={formatNumber(stats.mobs_kills)} />
<BasicStat title="Eggs Thrown: " value={formatNumber(stats.egg_thrown)} />
<BasicStat title="Pearls Thrown: " value={formatNumber(stats.enderpearls_thrown)} />
</div>
<div className="flex-1">
</div> </div>
</div> </div>
) )

View File

@@ -1,37 +1,26 @@
export function getSkywarsLevel(xp: number) { import { INITIAL_XP, RECURRING_XP } from "@/data/hypixel/skywars"
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])
}
}
export function getSkywarsLevel(xp: number) {
if (xp >= 15000) {
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 return 0
} }
export function getSkywarsXpForLevel(level: number) { export function getSkywarsXpForLevel(lvl: number) {
const xps = [0, 20, 70, 150, 250, 500, 1000, 2000, 3500, 6000, 10000, 15000] let xp = 0
for (let i = 0; i < lvl; i++) {
if (level >= 12) { if (i < INITIAL_XP.length) {
return (level - 12) * 10000 + 15000 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]
} }
return xp
if (baseLevel === 0) {
return progress * xps[1]
}
const baseXp = xps[baseLevel]
const nextXp = xps[baseLevel + 1] || 15000
return baseXp + progress * (nextXp - baseXp)
} }

View File

@@ -33,13 +33,8 @@ export function getTotalChallenges(challenges: Player["player"]["challenges"]) {
export function rewardClaimed(claimedAt?: number) { export function rewardClaimed(claimedAt?: number) {
if (!claimedAt) return false if (!claimedAt) return false
const now = new Date() const now = Date.now()
const claimedDate = new Date(claimedAt) const diff = now - claimedAt
const oneDay = 24 * 60 * 60 * 1000 const oneDay = 24 * 60 * 60 * 1000
return diff <= oneDay
if (now.getMilliseconds() - claimedDate.getMilliseconds() > oneDay) {
return true
} else {
return false
}
} }

View File

@@ -194,8 +194,20 @@ export const skywarsStatsSchema = z.looseObject({
selected_prestige_icon: z.string().optional(), selected_prestige_icon: z.string().optional(),
kills: z.number().default(0), kills: z.number().default(0),
deaths: z.number().default(0), deaths: z.number().default(0),
assists: z.number().default(0),
wins: z.number().default(0), wins: z.number().default(0),
losses: z.number().default(0), losses: z.number().default(0),
cosmetic_tokens: 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)
}) })