From 68342109998c4f6632341f0a57d2357b9be505f0 Mon Sep 17 00:00:00 2001
From: Taken
Date: Sun, 31 Aug 2025 20:50:31 +0200
Subject: [PATCH] Updated bedwars progress
---
.../[ign]/_components/GenericProgress.tsx | 67 ++++++++++++++++---
.../player/[ign]/_stats/bedwars/bedwars.tsx | 13 ++--
.../[ign]/_stats/bedwars/components.tsx | 22 +++---
3 files changed, 79 insertions(+), 23 deletions(-)
diff --git a/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx b/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx
index 9b3f546..72fa544 100644
--- a/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx
+++ b/src/app/(stats)/player/[ign]/_components/GenericProgress.tsx
@@ -1,8 +1,12 @@
import { cn } from "@/lib/utils"
+import { useEffect, useState } from "react"
+import { Tooltip } from "react-tooltip"
type GenericProgressProps =
& {
percent: number
+ tooltipId: string
+ tooltipContent: string
}
& ({
className: string
@@ -12,27 +16,72 @@ type GenericProgressProps =
rainbow: true
})
-export default function GenericProgress({ percent, className, rainbow }: GenericProgressProps) {
+export default function GenericProgress({ percent, tooltipId, tooltipContent, className, rainbow }: GenericProgressProps) {
+ const [pos, setPos] = useState({ x: 0, y: 0 })
+
+ useEffect(() => {
+ const controller = new AbortController()
+
+ window.addEventListener("mousemove", (e) => {
+ if (!(e.target instanceof HTMLDivElement)) return
+ if (e.target.dataset.id !== tooltipId) return
+
+ setPos({ x: e.clientX, y: e.clientY - 10 })
+ }, { signal: controller.signal })
+
+ return () => {
+ controller.abort()
+ }
+ })
+
if (rainbow) {
return (
<>
-
+
>
)
}
return (
<>
-
-
+
+
>
)
}
diff --git a/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx b/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx
index 748ff3f..59e907a 100644
--- a/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/bedwars/bedwars.tsx
@@ -45,11 +45,12 @@ export default function BedwarsStats({ stats }: { stats: NonNullStats["Bedwars"]
const bbl = (stats.beds_broken_bedwars / stats.beds_lost_bedwars).toFixed(2)
const level = getBWLevelForExp(stats.Experience)
- const percent = getProgress(
- getTotalExpForLevel(level),
- stats.Experience,
- getTotalExpForLevel(level + 1)
- )
+ const current = getTotalExpForLevel(level)
+ const next = getTotalExpForLevel(level + 1)
+ const percent = getProgress(current, stats.Experience, next)
+
+ const xpProgress = stats.Experience - current
+ const ceilingXp = next - current
return (
@@ -93,7 +94,7 @@ export default function BedwarsStats({ stats }: { stats: NonNullStats["Bedwars"]
-
+
diff --git a/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx b/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
index 8b41d36..f9b9521 100644
--- a/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
+++ b/src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
@@ -1,3 +1,4 @@
+import { formatNumber } from "@/lib/formatters"
import { bedwarsLevelColors, getBedwarsStar, getPrestigeName, getTextColor } from "@/lib/hypixel/bedwars/bedwars"
import { getBWLevelForExp } from "@/lib/hypixel/bedwars/level"
import { cn } from "@/lib/utils"
@@ -13,11 +14,16 @@ export function BedwarsLevel({ xp }: { xp: number }) {
return
}
-export function BedwarsProgress({ level, percent }: { level: number, percent: number }) {
+export function BedwarsProgress({ level, percent, currentXp, ceilingXp }: { level: number, percent: number, currentXp: number, ceilingXp: number }) {
return (
)
@@ -48,7 +54,7 @@ export function BedWarsPrestige({ level }: { level: number }) {
function LevelNumber({ level, className }: { level: number, className?: string }) {
if (level >= 1000 && level < 1100) {
return (
-
{level}
-
+
)
}
- return {level}
+ return {level}
}
-function Progress({ level, percent }: { level: number, percent: number }) {
+function Progress({ level, percent, tooltipId, tooltipContent }: { level: number, percent: number, tooltipId: string, tooltipContent: string }) {
if (level >= 1000 && level < 1100) {
- return
+ return
}
- return
+ return
}