Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Add leaderboard statistics and permission checks to SkyPVP #5

Merged
merged 1 commit into from
Dec 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -107,17 +107,17 @@ public void execute(CommandSender sender, String[] args) {
if (args.length == 1) {
// If the player has only typed "/bounty ", suggest the subcommands
List<String> suggestions = new ArrayList<>();
if (sender.hasPermission("reefrealmskypvp.bounty.remove")) {
suggestions.add("remove");
}
if (sender.hasPermission("reefrealmskypvp.bounty.set")) {
suggestions.add("set");
}
if (sender.hasPermission("reefrealmskypvp.bounty.remove")) {
suggestions.add("remove");
}
return suggestions;
} else if (args.length == 2) {
// If the player has typed "/bounty <subcommand> ", suggest online player names
if ((args[0].equalsIgnoreCase("remove") && sender.hasPermission("reefrealmskypvp.bounty.remove")) ||
(args[0].equalsIgnoreCase("set") && sender.hasPermission("reefrealmskypvp.bounty.set"))) {
if ((args[0].equalsIgnoreCase("set") && sender.hasPermission("reefrealmskypvp.bounty.set") ) ||
(args[0].equalsIgnoreCase("remove") && sender.hasPermission("reefrealmskypvp.bounty.remove"))) {
List<String> playerNames = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers()) {
playerNames.add(player.getName());
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/net/reefrealm/reefrealmskypvp/data/MySQL.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package net.reefrealm.reefrealmskypvp.data;

import org.bukkit.Bukkit;

import java.sql.*;
import java.util.UUID;

public class MySQL {

Expand Down Expand Up @@ -422,4 +425,37 @@ public static void removeBountyfromExistance(String playerUUID) {
}
}

public static int leaderBoardKillStats(int topnumber){
Connection connection = GetConnection();
String query = "SELECT * FROM ReefRealm_SkyPVP_Stats ORDER BY kills DESC LIMIT ?, 1";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, topnumber - 1);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
int kills = resultSet.getInt("kills");
return kills;
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}

public static String leaderBoardPlayerKillStats(int topnumber){
Connection connection = GetConnection();
String query = "SELECT * FROM ReefRealm_SkyPVP_Stats ORDER BY kills DESC LIMIT ?, 1";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, topnumber - 1);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
String playerUUID = resultSet.getString("uuid");
String playerName = Bukkit.getOfflinePlayer(UUID.fromString(playerUUID)).getName();
return playerName;
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,67 @@ public String onPlaceholderRequest(Player player, String identifier) {
case "score":
int score = MySQL.getScore(player.getUniqueId().toString());
return String.valueOf(score);
case "leaderboard_top_kills_kills_1":
return String.valueOf(MySQL.leaderBoardKillStats(1));
case "leaderboard_top_kills_kills_2":
return String.valueOf(MySQL.leaderBoardKillStats(2));
case "leaderboard_top_kills_kills_3":
return String.valueOf(MySQL.leaderBoardKillStats(3));
case "leaderboard_top_kills_kills_4":
return String.valueOf(MySQL.leaderBoardKillStats(4));
case "leaderboard_top_kills_kills_5":
return String.valueOf(MySQL.leaderBoardKillStats(5));
case "leaderboard_top_kills_kills_6":
return String.valueOf(MySQL.leaderBoardKillStats(6));
case "leaderboard_top_kills_kills_7":
return String.valueOf(MySQL.leaderBoardKillStats(7));
case "leaderboard_top_kills_kills_8":
return String.valueOf(MySQL.leaderBoardKillStats(8));
case "leaderboard_top_kills_kills_9":
return String.valueOf(MySQL.leaderBoardKillStats(9));
case "leaderboard_top_kills_kills_10":
return String.valueOf(MySQL.leaderBoardKillStats(10));
case "leaderboard_top_kills_kills_11":
return String.valueOf(MySQL.leaderBoardKillStats(11));
case "leaderboard_top_kills_kills_12":
return String.valueOf(MySQL.leaderBoardKillStats(12));
case "leaderboard_top_kills_kills_13":
return String.valueOf(MySQL.leaderBoardKillStats(13));
case "leaderboard_top_kills_kills_14":
return String.valueOf(MySQL.leaderBoardKillStats(14));
case "leaderboard_top_kills_kills_15":
return String.valueOf(MySQL.leaderBoardKillStats(15));

case "leaderboard_top_kills_player_1":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(1));
case "leaderboard_top_kills_player_2":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(2));
case "leaderboard_top_kills_player_3":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(3));
case "leaderboard_top_kills_player_4":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(4));
case "leaderboard_top_kills_player_5":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(5));
case "leaderboard_top_kills_player_6":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(6));
case "leaderboard_top_kills_player_7":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(7));
case "leaderboard_top_kills_player_8":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(8));
case "leaderboard_top_kills_player_9":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(9));
case "leaderboard_top_kills_player_10":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(10));
case "leaderboard_top_kills_player_11":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(11));
case "leaderboard_top_kills_player_12":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(12));
case "leaderboard_top_kills_player_13":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(13));
case "leaderboard_top_kills_player_14":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(14));
case "leaderboard_top_kills_player_15":
return String.valueOf(MySQL.leaderBoardPlayerKillStats(15));
case "required_score":
int levelnum = MySQL.getLevel(player.getUniqueId().toString());
int requiredScore = LevelSystem.getExperienceForLevel(levelnum + 1);
Expand Down
Loading