diff --git a/build.gradle.kts b/build.gradle.kts index b75cb50..5e1b242 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { defaultTasks("clean", "shadowJar") group = "net.analyse" -version = "2.0.7" +version = "2.0.8" subprojects { plugins.apply("java") diff --git a/bukkit/src/main/java/net/analyse/plugin/hook/FloodgateHook.java b/bukkit/src/main/java/net/analyse/plugin/hook/FloodgateHook.java index a68ea30..6a63eae 100644 --- a/bukkit/src/main/java/net/analyse/plugin/hook/FloodgateHook.java +++ b/bukkit/src/main/java/net/analyse/plugin/hook/FloodgateHook.java @@ -9,4 +9,4 @@ public boolean isBedrock(Player player) { if(! Bukkit.getPluginManager().isPluginEnabled("floodgate")) return false; return FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId()); } -} +} \ No newline at end of file diff --git a/bukkit/src/main/java/net/analyse/plugin/hook/PlaceholderAPIExpansionHook.java b/bukkit/src/main/java/net/analyse/plugin/hook/PlaceholderAPIExpansionHook.java index 5a0345d..f9c6280 100644 --- a/bukkit/src/main/java/net/analyse/plugin/hook/PlaceholderAPIExpansionHook.java +++ b/bukkit/src/main/java/net/analyse/plugin/hook/PlaceholderAPIExpansionHook.java @@ -38,30 +38,45 @@ public PlaceholderAPIExpansionHook(AnalysePlugin plugin) { @Override public String onPlaceholderRequest(Player player, @NotNull String params) { - String[] parts = params.split("_"); + int lastUnderscoreIndex = params.lastIndexOf("_"); - if (parts.length != 3) { + if (lastUnderscoreIndex == -1) { return null; } - String leaderboardId = parts[0]; + String leaderboardId = params.substring(0, lastUnderscoreIndex); + String field = params.substring(lastUnderscoreIndex + 1); int position; - String field; + + int secondLastUnderscoreIndex = leaderboardId.lastIndexOf("_"); + if (secondLastUnderscoreIndex == -1) { + return null; + } + + String positionString = leaderboardId.substring(secondLastUnderscoreIndex + 1); + leaderboardId = leaderboardId.substring(0, secondLastUnderscoreIndex); try { - position = Integer.parseInt(parts[1]) - 1; - field = parts[2]; + position = Integer.parseInt(positionString) - 1; } catch (NumberFormatException e) { - return null; + return "Invalid position"; } if (position < 0) { - return null; + return "Invalid position"; } AnalyseLeaderboard leaderboard = getLeaderboard(leaderboardId); + if (leaderboard == null || leaderboard.getData().size() <= position) { - return null; + switch (field.toLowerCase()) { + case "username": + return "?"; + case "value": + return Integer.toString(0); + default: + return null; + } } AnalyseLeaderboard.Player lbPlayer = leaderboard.getData().get(position);