From d6ab4f9709d40af27245ab640b1871aa904f351c Mon Sep 17 00:00:00 2001 From: fretuks Date: Tue, 7 Apr 2026 09:26:19 +0200 Subject: [PATCH] try to fix a visual bug when adjusting max level in config --- .../ascend/client/screen/StatsScreen.java | 5 +++-- .../net/fretux/ascend/player/PlayerStats.java | 22 +++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/fretux/ascend/client/screen/StatsScreen.java b/src/main/java/net/fretux/ascend/client/screen/StatsScreen.java index 8523eca..fbe767e 100644 --- a/src/main/java/net/fretux/ascend/client/screen/StatsScreen.java +++ b/src/main/java/net/fretux/ascend/client/screen/StatsScreen.java @@ -81,11 +81,12 @@ public class StatsScreen extends Screen { if (mc.player != null) { mc.player.getCapability(PlayerStatsProvider.PLAYER_STATS).ifPresent(stats -> { int level = stats.getAscendLevel(); + int maxLevel = stats.getMaxAscendLevel(); int xp = stats.getAscendXP(); int xpNext = stats.getXPToNextAscendLevel(); int unspent = stats.getUnspentPoints(); - gui.drawString(font, Component.translatable("ascend.stats.level", level, 20), leftPos + 10, topPos + 28, 0xFFE27D); - if (level < 20) { + gui.drawString(font, Component.translatable("ascend.stats.level", level, maxLevel), leftPos + 10, topPos + 28, 0xFFE27D); + if (level < maxLevel) { gui.drawString(font, Component.translatable("ascend.stats.xp", xp, xpNext), leftPos + 10, topPos + 40, 0xB4B4C8); } else { gui.drawString(font, Component.translatable("ascend.stats.xp_max"), leftPos + 10, topPos + 40, 0xB4B4C8); diff --git a/src/main/java/net/fretux/ascend/player/PlayerStats.java b/src/main/java/net/fretux/ascend/player/PlayerStats.java index f4562d2..11b81ce 100644 --- a/src/main/java/net/fretux/ascend/player/PlayerStats.java +++ b/src/main/java/net/fretux/ascend/player/PlayerStats.java @@ -16,6 +16,8 @@ public class PlayerStats { private int ascendLevel = 1; private int ascendXP = 0; private int unspentPoints = getPointsPerLevel(); + private int maxAscendLevel = getConfiguredMaxAscendLevel(); + private int maxAttributePoints = getConfiguredMaxAttributePoints(); public PlayerStats() { for (String attr : ATTRIBUTE_KEYS) { attributes.put(attr, 0); @@ -86,6 +88,14 @@ public class PlayerStats { return attributes.getOrDefault(attribute, 0); } + public int getMaxAscendLevel() { + return maxAscendLevel; + } + + public int getMaxAttributePoints() { + return maxAttributePoints; + } + public void setAttributeLevel(String attribute, int level) { if (!attributes.containsKey(attribute)) return; int clamped = Math.max(0, Math.min(level, getMaxAttributePoints())); @@ -145,6 +155,8 @@ public class PlayerStats { tag.putInt("AscendLevel", ascendLevel); tag.putInt("AscendXP", ascendXP); tag.putInt("UnspentPoints", unspentPoints); + tag.putInt("MaxAscendLevel", getMaxAscendLevel()); + tag.putInt("MaxAttributePoints", getMaxAttributePoints()); tag.putInt("Knowledge", knowledge); tag.putBoolean("HasUsedMoonseye", hasUsedMoonseye); CompoundTag attrTag = new CompoundTag(); @@ -156,6 +168,12 @@ public class PlayerStats { } public void deserializeNBT(CompoundTag tag) { + maxAscendLevel = tag.contains("MaxAscendLevel") + ? Math.max(1, tag.getInt("MaxAscendLevel")) + : getConfiguredMaxAscendLevel(); + maxAttributePoints = tag.contains("MaxAttributePoints") + ? Math.max(1, tag.getInt("MaxAttributePoints")) + : getConfiguredMaxAttributePoints(); ascendLevel = tag.contains("AscendLevel") ? tag.getInt("AscendLevel") : 1; ascendLevel = Math.max(1, Math.min(ascendLevel, getMaxAscendLevel())); ascendXP = tag.contains("AscendXP") ? tag.getInt("AscendXP") : 0; @@ -187,11 +205,11 @@ public class PlayerStats { return AscendConfig.COMMON.pointsPerLevel.get(); } - private static int getMaxAscendLevel() { + private static int getConfiguredMaxAscendLevel() { return AscendConfig.COMMON.maxAscendLevel.get(); } - private static int getMaxAttributePoints() { + private static int getConfiguredMaxAttributePoints() { return AscendConfig.COMMON.maxAttributePoints.get(); } }