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

Commit

Permalink
Merge pull request #5 from ReefRealm/LeaderBoards
Browse files Browse the repository at this point in the history
Add leaderboard statistics and permission checks to SkyPVP
  • Loading branch information
mathiasclari authored Dec 25, 2023
2 parents 268f2ae + e616951 commit 6716508
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 5 deletions.
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

0 comments on commit 6716508

Please sign in to comment.