From dcdaf4e4570233836453e4ace2a97cfa5ebb513c Mon Sep 17 00:00:00 2001 From: Thatsmusic99 <25277367+thatsmusic99@users.noreply.github.com> Date: Wed, 22 Feb 2023 18:43:16 +0000 Subject: [PATCH] feat: functional placeholders and %headsplus_next_level%/%headsplus_next_level_xp% --- .../headsplus/placeholders/CacheManager.java | 7 +++-- .../headsplus/placeholders/HPExpansion.java | 30 ++++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/thatsmusic99/headsplus/placeholders/CacheManager.java b/src/main/java/io/github/thatsmusic99/headsplus/placeholders/CacheManager.java index 1d4b8a94..821a9a0f 100644 --- a/src/main/java/io/github/thatsmusic99/headsplus/placeholders/CacheManager.java +++ b/src/main/java/io/github/thatsmusic99/headsplus/placeholders/CacheManager.java @@ -62,9 +62,12 @@ public long getXP(OfflinePlayer player) { } public String getLevel(OfflinePlayer player) { + // Check HPPlayer cache, ez - if (HPPlayer.getHPPlayer(player.getUniqueId()) != null) - return HPPlayer.getHPPlayer(player.getUniqueId()).getLevel().getDisplayName(); + HPPlayer hpPlayer = HPPlayer.getHPPlayer(player.getUniqueId()); + if (hpPlayer != null) return hpPlayer.getLevel().getConfigName(); + + // Get the UUID UUID uuid = player.getUniqueId(); updateCaches("level_" + player.getName(), uuid.toString(), cachedLevels, () -> PlayerSQLManager.get().getLevel(uuid, true)); diff --git a/src/main/java/io/github/thatsmusic99/headsplus/placeholders/HPExpansion.java b/src/main/java/io/github/thatsmusic99/headsplus/placeholders/HPExpansion.java index 3da201e4..96686c30 100644 --- a/src/main/java/io/github/thatsmusic99/headsplus/placeholders/HPExpansion.java +++ b/src/main/java/io/github/thatsmusic99/headsplus/placeholders/HPExpansion.java @@ -58,16 +58,44 @@ public String onRequest(OfflinePlayer player, @NotNull String identifier) { } if (identifier.equals("remaining_xp")) { + String level = CacheManager.get().getLevel(player); if (level == null) return "-1"; + Level levelObj = LevelsManager.get().getLevel(level); + levelObj = LevelsManager.get().getNextLevel(levelObj.getConfigName()); long xp = CacheManager.get().getXP(player); if (xp == -1) return "-1"; return String.valueOf(levelObj.getRequiredXP() - xp); } + if (identifier.equals("next_level")) { + String level = CacheManager.get().getLevel(player); + if (level == null) return "N/A"; + + Level nextLevel = LevelsManager.get().getNextLevel(level); + if (nextLevel == null) return "N/A"; + + return nextLevel.getDisplayName(); + } + + if (identifier.equals("next_level_xp")) { + String level = CacheManager.get().getLevel(player); + if (level == null) return "-1"; + + Level nextLevel = LevelsManager.get().getNextLevel(level); + if (nextLevel == null) return "-1"; + + return String.valueOf(nextLevel.getRequiredXP()); + } + if (identifier.equals("level")) { - return CacheManager.get().getLevel(player); + String level = CacheManager.get().getLevel(player); + if (level == null) return "N/A"; + + Level actualLevel = LevelsManager.get().getLevel(level); + if (actualLevel == null) return "N/A"; + return actualLevel.getDisplayName(); } if (identifier.equals("completed_challenges_total")) {