diff --git a/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java b/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java index 1cf71c23..39cde871 100644 --- a/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java +++ b/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java @@ -34,4 +34,6 @@ public interface IGlobalStats { void setDivision(IDivision division); double getWinRatio(); + + double getKdr(); } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java index 3eb963b8..8d786427 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/MenusLocale.java @@ -67,10 +67,10 @@ public enum MenusLocale implements IDataAccessor { " &f&7* &fWins: &b", " &f&7* &fElo: &b", " &f&7* &fLosses: &b", - " &f&7* &fCurrent Streak: &b", - " &f&7* &fBest Streak: &b", + " &f&7* &fCurrent Streak: &b", + " &f&7* &fBest Streak: &b", " &f&7* &fDivision: &b", - " &f&7* &fK/D &b"), + " &f&7* &fK/D &b"), MATCH_LIST_TITLE("MATCH.LIST.TITLE", DataType.STRING, "&7Select Match"), MATCH_LIST_SIZE("MATCH_LIST.SIZE", DataType.INT, "36"), MATCH_LIST_STARTING_SLOT("MATCH_LIST.STARTING-SLOT", DataType.INT, "10"), diff --git a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/ScoreboardLocale.java b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/ScoreboardLocale.java index 589cdfcc..c42ae216 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/ScoreboardLocale.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/configs/impl/ScoreboardLocale.java @@ -86,8 +86,8 @@ public enum ScoreboardLocale implements IDataAccessor { "&aYour Ping: &fms", "&cTheir Ping: &fms", " ", - "&fYou: &b/", - "&fThem: &b/", + "&fYou: &b/", + "&fThem: &b/", " ", "&bserver.net"), IN_GAME_BOXING("SCOREBOARDS.IN_GAME.BOXING", DataType.STRING_LIST, diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/StatsMenu.java b/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/StatsMenu.java index 9110360c..3d1efa07 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/StatsMenu.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/StatsMenu.java @@ -5,6 +5,7 @@ import dev.lrxh.neptune.game.kit.KitService; import dev.lrxh.neptune.game.kit.impl.KitRule; import dev.lrxh.neptune.game.kit.menu.button.StatButton; +import dev.lrxh.neptune.providers.placeholder.PlaceholderUtil; import dev.lrxh.neptune.utils.menu.Button; import dev.lrxh.neptune.utils.menu.Filter; import dev.lrxh.neptune.utils.menu.Menu; @@ -29,7 +30,7 @@ public StatsMenu(Player player) { @Override public String getTitle(Player player) { - return MenusLocale.STAT_TITLE.getString().replace("", target.getName()); + return PlaceholderUtil.format(MenusLocale.STAT_TITLE.getString(), player); } @Override diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/button/StatButton.java b/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/button/StatButton.java index f71b702d..1dc52a0d 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/button/StatButton.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/kit/menu/button/StatButton.java @@ -5,9 +5,12 @@ import dev.lrxh.neptune.game.kit.Kit; import dev.lrxh.neptune.profile.data.KitData; import dev.lrxh.neptune.providers.clickable.Replacement; +import dev.lrxh.neptune.providers.placeholder.PlaceholderUtil; import dev.lrxh.neptune.utils.ItemBuilder; import dev.lrxh.neptune.utils.ItemUtils; import dev.lrxh.neptune.utils.menu.Button; +import me.clip.placeholderapi.PlaceholderAPI; + import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -23,22 +26,9 @@ public StatButton(int slot, Kit kit, Player target) { @Override public ItemStack getItemStack(Player player) { - KitData data = API.getProfile(target).getGameData().get(kit); - return new ItemBuilder(kit.getIcon()) .name(MenusLocale.STAT_KIT_NAME.getString().replace("", kit.getDisplayName())) - .lore(ItemUtils.getLore(MenusLocale.STAT_LORE.getStringList(), new Replacement("", kit.getDisplayName()), - new Replacement("", String.valueOf(data.getWins())), - new Replacement("", String.valueOf(data.getElo())), - new Replacement("", String.valueOf(data.getLosses())), - new Replacement("", String.valueOf(data.getKills())), - new Replacement("", String.valueOf(data.getDeaths())), - new Replacement("", String.valueOf(data.getCurrentStreak())), - new Replacement("", String.valueOf(data.getBestStreak())), - new Replacement("", data.getDivision() == null ? "None" : String.valueOf(data.getDivision().getDisplayName())), - new Replacement("", String.valueOf(data.getWins() + data.getLosses())), - new Replacement("", String.valueOf(data.getKdr()))), player) - + .lore(PlaceholderUtil.format(MenusLocale.STAT_LORE.getStringList(), player)) .build(); } } \ No newline at end of file diff --git a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GlobalStats.java b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GlobalStats.java index 6c001236..07ba20c2 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GlobalStats.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GlobalStats.java @@ -1,5 +1,8 @@ package dev.lrxh.neptune.profile.data; +import java.math.BigDecimal; +import java.math.RoundingMode; + import dev.lrxh.api.data.IDivision; import dev.lrxh.api.data.IGlobalStats; import dev.lrxh.neptune.feature.divisions.DivisionService; @@ -48,15 +51,24 @@ public void update() { this.elo += kitData.getElo(); } int kitData = profile.getGameData().getKitDataInternal().size(); - if (kitData != 0) this.elo = this.elo / kitData; + if (kitData != 0) + this.elo = this.elo / kitData; this.division = DivisionService.get().getDivisionByElo(elo); } @Override public double getWinRatio() { - int totalGames = wins + losses; - if (totalGames == 0) return 0.0; - return Math.round(((double) wins / totalGames) * 100); + return getRatio(wins, wins + losses); + } + + public double getKdr() { + return getRatio(kills, deaths); + } + private double getRatio(int num1, int num2) { + if (num1 == 0 || num2 == 0) return 0.0; + return BigDecimal.valueOf(num1) + .divide(BigDecimal.valueOf(num2), 1, RoundingMode.HALF_UP) + .doubleValue(); } } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/PlaceholderUtil.java b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/PlaceholderUtil.java index 80f9e488..ce04f84e 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/PlaceholderUtil.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/PlaceholderUtil.java @@ -71,8 +71,15 @@ public String format(String line, Player player) { line = line.replaceAll("", String.valueOf(globalStats.getWins())); line = line.replaceAll("", String.valueOf(globalStats.getLosses())); line = line.replaceAll("", String.valueOf(globalStats.getCurrentStreak())); + line = line.replaceAll("", String.valueOf(globalStats.getBestStreak())); line = line.replaceAll("", String.valueOf(globalStats.getKills())); line = line.replaceAll("", String.valueOf(globalStats.getDeaths())); + line = line.replaceAll("", String.valueOf(globalStats.getElo())); + line = line.replaceAll("", String.valueOf(globalStats.getWins() + globalStats.getLosses())); + line = line.replaceAll("", String.valueOf(globalStats.getKdr())); + line = line.replaceAll("", String.valueOf(globalStats.getCurrentStreak())); // to be removed + line = line.replaceAll("", String.valueOf(globalStats.getKdr())); // to be removed + line = line.replaceAll("", String.valueOf(globalStats.getBestStreak())); // to be removed if (state.equals(ProfileState.IN_QUEUE)) { QueueEntry queueEntry = QueueService.get().get(player.getUniqueId()); @@ -81,9 +88,11 @@ public String format(String line, Player player) { line = line.replaceAll("", queueEntry.getKit().getDisplayName()); line = line.replaceAll("", String.valueOf(profile.getSettingData().getMaxPing())); line = line.replaceAll("