From 89383bdbf1f73ff014b3da6041d7e785fe6f93e4 Mon Sep 17 00:00:00 2001 From: mudkipdev Date: Mon, 27 Jul 2026 21:40:53 -0600 Subject: [PATCH] marathon color shifting --- .../dev/emortal/minestom/marathon/MarathonGame.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/marathon/src/main/java/dev/emortal/minestom/marathon/MarathonGame.java b/marathon/src/main/java/dev/emortal/minestom/marathon/MarathonGame.java index 2ded735..81202a4 100644 --- a/marathon/src/main/java/dev/emortal/minestom/marathon/MarathonGame.java +++ b/marathon/src/main/java/dev/emortal/minestom/marathon/MarathonGame.java @@ -17,6 +17,7 @@ import net.kyori.adventure.text.format.ShadowColor; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; +import net.kyori.adventure.util.HSVLike; import net.minestom.server.MinecraftServer; import net.minestom.server.component.DataComponents; import net.minestom.server.coordinate.Point; @@ -61,6 +62,8 @@ public final class MarathonGame { private static final int NEXT_BLOCKS_COUNT = 7; public static final Pos RESET_POINT = new Pos(0.5, 150, 0.5); private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("mm:ss"); + private static final float BASE_SCORE_HUE = 0.8915F; + private static final int SCORE_HUE_CYCLE = 350; public static final @NotNull Tag MARATHON_ENTITY_TAG = Tag.Boolean("marathonEntity"); private final @NotNull Instance instance; @@ -261,7 +264,7 @@ private void refreshDisplays() { String scorePerSecond = this.score < 5 ? "-.-" : String.valueOf(MathUtils.clamp(Math.floor(this.score / secondsTaken * 10.0) / 10.0, 0.0, 9.9)); Component message = Component.text() - .append(Component.text(this.score, TextColor.fromHexString("#ff00a6"), TextDecoration.BOLD)) + .append(Component.text(this.score, this.getScoreColor(), TextDecoration.BOLD)) .append(Component.text(" | ", NamedTextColor.DARK_GRAY).shadowColor(ShadowColor.none())) .append(Component.text(formattedTime, NamedTextColor.GRAY)) .append(Component.text(" | ", NamedTextColor.DARK_GRAY).shadowColor(ShadowColor.none())) @@ -277,6 +280,11 @@ private void refreshDisplays() { // )); } + private @NotNull TextColor getScoreColor() { + float hue = (BASE_SCORE_HUE + (float) this.score / SCORE_HUE_CYCLE) % 1.0F; + return TextColor.color(HSVLike.hsvLike(hue, 1.0F, 1.0F)); + } + private void generateNextBlock(boolean shouldAnimate) { if (this.blocks.size() > NEXT_BLOCKS_COUNT) { Point firstBlockPos = this.blocks.getFirst();