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 675a7ec6..1cf71c23 100644 --- a/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java +++ b/API/src/main/java/dev/lrxh/api/data/IGlobalStats.java @@ -1,6 +1,14 @@ package dev.lrxh.api.data; public interface IGlobalStats { + int getKills(); + + void setKills(int amount); + + int getDeaths(); + + void setDeaths(int amount); + int getWins(); void setWins(int amount); diff --git a/API/src/main/java/dev/lrxh/api/data/IKitData.java b/API/src/main/java/dev/lrxh/api/data/IKitData.java index 205dcb2d..9f334158 100644 --- a/API/src/main/java/dev/lrxh/api/data/IKitData.java +++ b/API/src/main/java/dev/lrxh/api/data/IKitData.java @@ -11,6 +11,14 @@ public interface IKitData { void setDeaths(int amount); + int getWins(); + + void setWins(int amount); + + int getLosses(); + + void setLosses(int amount); + int getCurrentStreak(); void setCurrentStreak(int amount); 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 09cba764..f6484d71 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 @@ -202,10 +202,46 @@ public enum MenusLocale implements IDataAccessor { LEADERBOARD_TYPES_BEST_WIN_STREAK_DISABLED_MATERIAL("LEADERBOARD.TYPES.BEST_WIN_STREAK.DISABLED.MATERIAL", DataType.STRING, "GRAY_DYE"), + + LEADERBOARD_TYPES_WINS_SLOT("LEADERBOARD.TYPES.WINS.SLOT", DataType.INT, "32"), + LEADERBOARD_TYPES_WINS_TITLE("LEADERBOARD.TYPES.WINS.TITLE", DataType.STRING, + "&7Wins Leaderboards"), + LEADERBOARD_TYPES_WINS_ENABLED_NAME("LEADERBOARD.TYPES.WINS.ENABLED.NAME", DataType.STRING, + "&aWins Leaderboard"), + LEADERBOARD_TYPES_WINS_DISABLED_NAME("LEADERBOARD.TYPES.WINS.DISABLED.NAME", DataType.STRING, + "&cWins Leaderboard"), + LEADERBOARD_TYPES_WINS_ENABLED_LORE("LEADERBOARD.TYPES.WINS.ENABLED.LORE", DataType.STRING_LIST, + " ", + "&7Click to view wins leaderboards"), + LEADERBOARD_TYPES_WINS_DISABLED_LORE("LEADERBOARD.TYPES.WINS.DISABLED.LORE", DataType.STRING_LIST, + " ", + "&7Click to view wins leaderboards"), + LEADERBOARD_TYPES_WINS_ENABLED_MATERIAL("LEADERBOARD.TYPES.WINS.ENABLED.MATERIAL", DataType.STRING, + "LIME_DYE"), + LEADERBOARD_TYPES_WINS_DISABLED_MATERIAL("LEADERBOARD.TYPES.WINS.DISABLED.MATERIAL", DataType.STRING, + "GRAY_DYE"), + + LEADERBOARD_TYPES_LOSSES_SLOT("LEADERBOARD.TYPES.LOSSES.SLOT", DataType.INT, "33"), + LEADERBOARD_TYPES_LOSSES_TITLE("LEADERBOARD.TYPES.LOSSES.TITLE", DataType.STRING, + "&7Losses Leaderboards"), + LEADERBOARD_TYPES_LOSSES_ENABLED_NAME("LEADERBOARD.TYPES.LOSSES.ENABLED.NAME", DataType.STRING, + "&aLosses Leaderboard"), + LEADERBOARD_TYPES_LOSSES_DISABLED_NAME("LEADERBOARD.TYPES.LOSSES.DISABLED.NAME", DataType.STRING, + "&cLosses Leaderboard"), + LEADERBOARD_TYPES_LOSSES_ENABLED_LORE("LEADERBOARD.TYPES.LOSSES.ENABLED.LORE", DataType.STRING_LIST, + " ", + "&7Click to view losses leaderboards"), + LEADERBOARD_TYPES_LOSSES_DISABLED_LORE("LEADERBOARD.TYPES.LOSSES.DISABLED.LORE", DataType.STRING_LIST, + " ", + "&7Click to view losses leaderboards"), + LEADERBOARD_TYPES_LOSSES_ENABLED_MATERIAL("LEADERBOARD.TYPES.LOSSES.ENABLED.MATERIAL", DataType.STRING, + "LIME_DYE"), + LEADERBOARD_TYPES_LOSSES_DISABLED_MATERIAL("LEADERBOARD.TYPES.LOSSES.DISABLED.MATERIAL", DataType.STRING, + "GRAY_DYE"), LEADERBOARD_TYPES_DEATHS_TITLE("LEADERBOARD.TYPES.DEATHS.TITLE", DataType.STRING, "&7Deaths Leaderboards"), - LEADERBOARD_TYPES_DEATHS_SLOT("LEADERBOARD.TYPES.DEATHS.SLOT", DataType.INT, "33"), + LEADERBOARD_TYPES_DEATHS_SLOT("LEADERBOARD.TYPES.DEATHS.SLOT", DataType.INT, "34"), LEADERBOARD_TYPES_DEATHS_ENABLED_NAME("LEADERBOARD.TYPES.DEATHS.ENABLED.NAME", DataType.STRING, "&aDeaths Leaderboard"), LEADERBOARD_TYPES_DEATHS_DISABLED_NAME("LEADERBOARD.TYPES.DEATHS.DISABLED.NAME", DataType.STRING, @@ -220,6 +256,7 @@ public enum MenusLocale implements IDataAccessor { "LIME_DYE"), LEADERBOARD_TYPES_DEATHS_DISABLED_MATERIAL("LEADERBOARD.TYPES.DEATHS.DISABLED.MATERIAL", DataType.STRING, "GRAY_DYE"), + PARTY_SETTINGS_TITLE("PARTY.SETTINGS.NAME", DataType.STRING, "&7Party Settings"), PARTY_SETTINGS_SIZE("PARTY.SETTINGS.SIZE", DataType.INT, "27"), PARTY_SETTINGS_FILTER("PARTY.SETTINGS.FILTER-TYPE", "FILL, BORDER, NONE", DataType.STRING, "FILL"), diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/LeaderboardService.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/LeaderboardService.java index fe4fc1ab..40a5fd20 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/LeaderboardService.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/LeaderboardService.java @@ -217,9 +217,11 @@ private KitData getKitData(DataDocument document, Kit kit) { KitData kitData = new KitData(); kitData.setCurrentStreak(kitDocument.getInteger("WIN_STREAK_CURRENT", 0)); - kitData.setKills(kitDocument.getInteger("WINS", 0)); - kitData.setDivision(DivisionService.get().getDivisionByElo(kitData.getKills())); - kitData.setDeaths(kitDocument.getInteger("LOSSES", 0)); + kitData.setWins(kitDocument.getInteger("WINS", 0)); + kitData.setLosses(kitDocument.getInteger("LOSSES", 0)); + kitData.setKills(kitDocument.getInteger("KILLS", 0)); + kitData.setDeaths(kitDocument.getInteger("DEATHS", 0)); + kitData.setDivision(DivisionService.get().getDivisionByElo(kitData.getWins())); kitData.setBestStreak(kitDocument.getInteger("WIN_STREAK_BEST", 0)); return kitData; diff --git a/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/LeaderboardType.java b/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/LeaderboardType.java index 8ed434d9..a6f35250 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/LeaderboardType.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/feature/leaderboard/impl/LeaderboardType.java @@ -9,28 +9,40 @@ @Getter @AllArgsConstructor public enum LeaderboardType { - KILLS("Kills", "KILLS", "WINS") { + KILLS("Kills", "KILLS", "KILLS") { @Override public int get(KitData kitData) { return kitData.getKills(); } }, - BEST_WIN_STREAK("Best Win Streak", "BEST_WIN_STREAK", "WIN_STREAK_BEST") { + DEATHS("Deaths", "DEATHS", "DEATHS") { @Override public int get(KitData kitData) { - return kitData.getBestStreak(); + return kitData.getDeaths(); } }, - ELO("Elo", "ELO", "ELO") { + WINS("Wins", "WINS", "WINS") { @Override public int get(KitData kitData) { - return kitData.getElo(); + return kitData.getWins(); } }, - DEATHS("Deaths", "DEATHS", "LOSSES") { + LOSSES("Losses", "LOSSES", "LOSSES") { @Override public int get(KitData kitData) { - return kitData.getDeaths(); + return kitData.getLosses(); + } + }, + BEST_WIN_STREAK("Best Win Streak", "BEST_WIN_STREAK", "WIN_STREAK_BEST") { + @Override + public int get(KitData kitData) { + return kitData.getBestStreak(); + } + }, + ELO("Elo", "ELO", "ELO") { + @Override + public int get(KitData kitData) { + return kitData.getElo(); } }; 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 2470deed..8d012574 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 @@ -28,13 +28,15 @@ public ItemStack getItemStack(Player player) { 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.getKills())), + new Replacement("", String.valueOf(data.getWins())), new Replacement("", String.valueOf(data.getElo())), - new Replacement("", String.valueOf(data.getDeaths())), + 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("", String.valueOf(data.getDivision().getDisplayName())), - new Replacement("", String.valueOf(data.getKills() + data.getDeaths())), + new Replacement("", String.valueOf(data.getWins() + data.getLosses())), new Replacement("", String.valueOf(data.getKdr()))), player) .build(); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/match/Match.java b/Plugin/src/main/java/dev/lrxh/neptune/game/match/Match.java index 1a73f1e0..bb1c13c4 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/match/Match.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/match/Match.java @@ -19,6 +19,7 @@ import dev.lrxh.neptune.game.match.impl.participant.ParticipantColor; import dev.lrxh.neptune.game.match.impl.solo.SoloFightMatch; import dev.lrxh.neptune.game.match.impl.team.TeamFightMatch; +import dev.lrxh.neptune.profile.data.KitData; import dev.lrxh.neptune.profile.data.ProfileState; import dev.lrxh.neptune.profile.impl.Profile; import dev.lrxh.neptune.providers.clickable.Replacement; @@ -450,4 +451,14 @@ public void teleportPlayerToPosition(Participant participant) { public abstract void breakBed(Participant participant, Participant breaker); public abstract void sendTitle(Participant participant, TextComponent header, TextComponent footer, int duration); + + public void incrementKills(Participant participant) { + KitData kitData = participant.getProfile().getGameData().get(getKit()); + kitData.setKills(kitData.getKills() + 1); + } + public void incrementDeaths(Participant participant) { + KitData kitData = participant.getProfile().getGameData().get(getKit()); + kitData.setDeaths(kitData.getDeaths() + 1); + if (participant.getLastAttacker() != null) incrementKills(participant.getLastAttacker()); + } } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/ffa/FfaFightMatch.java b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/ffa/FfaFightMatch.java index c13cb807..56d11545 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/ffa/FfaFightMatch.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/ffa/FfaFightMatch.java @@ -65,9 +65,9 @@ public void onDeath(Participant participant) { if (isEnded()) return; hideParticipant(participant); + incrementDeaths(participant); participant.setDead(true); participant.setLoser(true); - Profile profile = API.getProfile(participant.getPlayerUUID()); if (!participant.isLeft() && !participant.isDisconnected()) { diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/solo/SoloFightMatch.java b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/solo/SoloFightMatch.java index ff6332a5..3a709db7 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/solo/SoloFightMatch.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/solo/SoloFightMatch.java @@ -216,6 +216,7 @@ public void sendTitle(Participant participant, TextComponent header, TextCompone public void onDeath(Participant participant) { if (isEnded()) return; + incrementDeaths(participant); hideParticipant(participant); participant.setDead(true); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/team/TeamFightMatch.java b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/team/TeamFightMatch.java index afc285d9..bd7dde61 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/team/TeamFightMatch.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/match/impl/team/TeamFightMatch.java @@ -117,12 +117,11 @@ public void sendTitle(Participant participant, TextComponent header, TextCompone public void onDeath(Participant participant) { if (isEnded()) return; hideParticipant(participant); - + incrementDeaths(participant); participant.setDead(true); MatchTeam team = getParticipantTeam(participant); team.deadParticipants().add(participant); - if (!participant.isDisconnected() && !participant.isLeft()) { if (getKit().is(KitRule.BED_WARS)) { if (!participant.isBedBroken()) { diff --git a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GameData.java b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GameData.java index 2c6eb71b..bd1e2e6e 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GameData.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/GameData.java @@ -96,7 +96,7 @@ public boolean run(Kit kit, boolean won) { boolean value = false; if (won) { - value = updateWin(kitData); + value = updateWins(kitData); } else { updateLosses(kitData); } @@ -106,14 +106,14 @@ public boolean run(Kit kit, boolean won) { return value; } - private boolean updateWin(KitData kitData) { - kitData.setKills(kitData.getKills() + 1); + private boolean updateWins(KitData kitData) { + kitData.setWins(kitData.getWins() + 1); updateWinStreak(kitData, true); return kitData.updateElo(true); } private void updateLosses(KitData kitData) { - kitData.setDeaths(kitData.getDeaths() + 1); + kitData.setLosses(kitData.getLosses() + 1); kitData.updateElo(false); updateWinStreak(kitData, false); } 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 e5134629..6c001236 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 @@ -12,6 +12,8 @@ @Setter public class GlobalStats implements IGlobalStats { private final Profile profile; + private int kills = 0; + private int deaths = 0; private int wins = 0; private int losses = 0; private int currentStreak = 0; @@ -28,6 +30,8 @@ public void setDivision(IDivision division) { } public void update() { + this.kills = 0; + this.deaths = 0; this.wins = 0; this.losses = 0; this.currentStreak = 0; @@ -35,8 +39,10 @@ public void update() { this.elo = 0; for (KitData kitData : profile.getGameData().getKitDataInternal().values()) { - this.wins += kitData.getKills(); - this.losses += kitData.getDeaths(); + this.wins += kitData.getWins(); + this.losses += kitData.getLosses(); + this.kills += kitData.getKills(); + this.deaths += kitData.getDeaths(); this.currentStreak += kitData.getCurrentStreak(); this.bestStreak = Math.max(this.bestStreak, kitData.getBestStreak()); this.elo += kitData.getElo(); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/KitData.java b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/KitData.java index b7ba677f..3110de6e 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/profile/data/KitData.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/profile/data/KitData.java @@ -19,6 +19,8 @@ public class KitData implements IKitData { private int kills = 0; private int deaths = 0; + private int wins = 0; + private int losses = 0; private int bestStreak = 0; private int currentStreak = 0; private List kitLoadout = new ArrayList<>(); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/profile/impl/Profile.java b/Plugin/src/main/java/dev/lrxh/neptune/profile/impl/Profile.java index b9c47d39..b424e7a9 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/profile/impl/Profile.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/profile/impl/Profile.java @@ -96,10 +96,12 @@ public static CompletableFuture load(Profile profile) { KitData profileKitData = gameData.get(kit); profileKitData.setCurrentStreak(kitDocument.getInteger("WIN_STREAK_CURRENT", 0)); - profileKitData.setKills(kitDocument.getInteger("WINS", 0)); + profileKitData.setKills(kitDocument.getInteger("KILLS", 0)); + profileKitData.setDeaths(kitDocument.getInteger("DEATHS", 0)); + profileKitData.setWins(kitDocument.getInteger("WINS", 0)); + profileKitData.setLosses(kitDocument.getInteger("LOSSES", 0)); profileKitData.setElo(kitDocument.getInteger("ELO", 0)); profileKitData.setDivision(DivisionService.get().getDivisionByElo(profileKitData.getElo())); - profileKitData.setDeaths(kitDocument.getInteger("LOSSES", 0)); profileKitData.setBestStreak(kitDocument.getInteger("WIN_STREAK_BEST", 0)); profileKitData.setKitLoadout( Objects.equals(kitDocument.getString("kit"), "") @@ -159,9 +161,11 @@ public static CompletableFuture save(Profile profile) { KitData entry = gameData.get(kit); kitStatisticsDocument.put("WIN_STREAK_CURRENT", entry.getCurrentStreak()); - kitStatisticsDocument.put("WINS", entry.getKills()); + kitStatisticsDocument.put("WINS", entry.getWins()); + kitStatisticsDocument.put("LOSSES", entry.getLosses()); + kitStatisticsDocument.put("KILLS", entry.getKills()); + kitStatisticsDocument.put("DEATHS", entry.getDeaths()); kitStatisticsDocument.put("ELO", entry.getElo()); - kitStatisticsDocument.put("LOSSES", entry.getDeaths()); kitStatisticsDocument.put("WIN_STREAK_BEST", entry.getBestStreak()); kitStatisticsDocument.put( "kit", 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 0d823022..1271a1e7 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 @@ -68,6 +68,8 @@ 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.getKills())); + line = line.replaceAll("", String.valueOf(globalStats.getDeaths())); if (state.equals(ProfileState.IN_QUEUE)) { QueueEntry queueEntry = QueueService.get().get(player.getUniqueId()); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitDeathsPlaceholder.java b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitDeathsPlaceholder.java new file mode 100644 index 00000000..e83488e9 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitDeathsPlaceholder.java @@ -0,0 +1,33 @@ +package dev.lrxh.neptune.providers.placeholder.impl; + +import dev.lrxh.neptune.API; +import dev.lrxh.neptune.game.kit.KitService; +import dev.lrxh.neptune.profile.data.KitData; +import dev.lrxh.neptune.profile.impl.Profile; +import dev.lrxh.neptune.providers.placeholder.Placeholder; +import org.bukkit.OfflinePlayer; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class KitDeathsPlaceholder implements Placeholder { + private final Pattern PATTERN = Pattern.compile("(.*)_deaths"); + + @Override + public boolean match(String string) { + return PATTERN.matcher(string).matches(); + } + + @Override + public String parse(OfflinePlayer player, String string) { + Profile profile = API.getProfile(player.getUniqueId()); + if (profile == null) return string; + + Matcher matcher = PATTERN.matcher(string); + if (!matcher.matches()) return string; + KitData data = profile.getGameData().get(KitService.get().getKitByName(matcher.group(1))); + if (data == null) return string; + + return String.valueOf(data.getDeaths()); + } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitKillsPlaceholder.java b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitKillsPlaceholder.java new file mode 100644 index 00000000..ca721be8 --- /dev/null +++ b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitKillsPlaceholder.java @@ -0,0 +1,33 @@ +package dev.lrxh.neptune.providers.placeholder.impl; + +import dev.lrxh.neptune.API; +import dev.lrxh.neptune.game.kit.KitService; +import dev.lrxh.neptune.profile.data.KitData; +import dev.lrxh.neptune.profile.impl.Profile; +import dev.lrxh.neptune.providers.placeholder.Placeholder; +import org.bukkit.OfflinePlayer; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class KitKillsPlaceholder implements Placeholder { + private final Pattern PATTERN = Pattern.compile("(.*)_kills"); + + @Override + public boolean match(String string) { + return PATTERN.matcher(string).matches(); + } + + @Override + public String parse(OfflinePlayer player, String string) { + Profile profile = API.getProfile(player.getUniqueId()); + if (profile == null) return string; + + Matcher matcher = PATTERN.matcher(string); + if (!matcher.matches()) return string; + KitData data = profile.getGameData().get(KitService.get().getKitByName(matcher.group(1))); + if (data == null) return string; + + return String.valueOf(data.getKills()); + } +} diff --git a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitLossesPlaceholder.java b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitLossesPlaceholder.java index 8dc68b7f..8d6e1251 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitLossesPlaceholder.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitLossesPlaceholder.java @@ -28,6 +28,6 @@ public String parse(OfflinePlayer player, String string) { KitData data = profile.getGameData().get(KitService.get().getKitByName(matcher.group(1))); if (data == null) return string; - return String.valueOf(data.getDeaths()); + return String.valueOf(data.getLosses()); } } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitWinsPlaceholder.java b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitWinsPlaceholder.java index 6bf03085..6b2a2437 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitWinsPlaceholder.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/providers/placeholder/impl/KitWinsPlaceholder.java @@ -28,6 +28,6 @@ public String parse(OfflinePlayer player, String string) { KitData data = profile.getGameData().get(KitService.get().getKitByName(matcher.group(1))); if (data == null) return string; - return String.valueOf(data.getKills()); + return String.valueOf(data.getWins()); } }