Skip to content

Commit

Permalink
Merge pull request #60 from AlbertoRutigliano/scoreboard
Browse files Browse the repository at this point in the history
Scoreboard command added, database methods signature corrected
  • Loading branch information
lucaacquafredda authored Jun 2, 2024
2 parents f29c4e3 + d8c9689 commit 398bea0
Show file tree
Hide file tree
Showing 8 changed files with 241 additions and 39 deletions.
13 changes: 11 additions & 2 deletions src/main/java/lar/minecraft/hg/SpigotPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.bukkit.plugin.java.JavaPlugin;

import lar.minecraft.hg.commands.ClassCommand;
import lar.minecraft.hg.commands.ScoreboardCommand;
import lar.minecraft.hg.commands.TestCommand;
import lar.minecraft.hg.enums.ConfigProperty;
import lar.minecraft.hg.enums.HGPhase;
Expand Down Expand Up @@ -48,8 +49,12 @@ public void onEnable() {
// Initialize MessageUtils for messages
MessageUtils.init();

// Instantiate database connection and connect
new DatabaseManager(true);
// Initiate DB connection and connect to database
boolean databaseEnabled = ConfigUtils.getBoolean(ConfigProperty.database_enable);
String dbConnectionString = ConfigUtils.getString(ConfigProperty.database_connection_string);
String dbUser = ConfigUtils.getString(ConfigProperty.database_user);
String dbPassword = ConfigUtils.getString(ConfigProperty.database_password);
DatabaseManager.Init(databaseEnabled, dbConnectionString, dbUser, dbPassword);

// Enable test commands
getCommand("start-hg").setExecutor(new TestCommand(this));
Expand All @@ -58,6 +63,10 @@ public void onEnable() {
getCommand("test").setExecutor(new TestCommand(this));
getCommand("messages").setExecutor(new TestCommand(this));

// Enable game commands
getCommand("scoreboard").setExecutor(new ScoreboardCommand());
getCommand("scoreboard").setTabCompleter(new ScoreboardCommand());

// Enable class selection commands
Arrays.asList(PlayerClass.values()).forEach(c -> {
getCommand(c.name()).setExecutor(new ClassCommand());
Expand Down
84 changes: 84 additions & 0 deletions src/main/java/lar/minecraft/hg/commands/ScoreboardCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package lar.minecraft.hg.commands;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;

import lar.minecraft.hg.entities.PlayerExtra;
import lar.minecraft.hg.enums.MessageKey;
import lar.minecraft.hg.managers.DatabaseManager;
import lar.minecraft.hg.managers.PlayerManager;
import lar.minecraft.hg.utils.MessageUtils;

public class ScoreboardCommand implements CommandExecutor, TabExecutor {

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player player = (Player) sender;

if (args.length == 1) {
// Global scoreboard
if (args[0].equalsIgnoreCase("global")) {
player.sendMessage(MessageUtils.getMessage(MessageKey.scoreboard_list_header));

// Get global scoreboard
Map<String, Integer> globalScoreboard = DatabaseManager.getGlobalScoreboard();
// Order scoreboard, limit to 10 records and print it
globalScoreboard.entrySet()
.stream()
.sorted(new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
})
.limit(10)
.forEach((x) -> {
player.sendMessage(String.format("%s --> %d", x.getKey(), x.getValue()));
});;

} else {
return false;
}
} else {
player.sendMessage(MessageUtils.getMessage(MessageKey.scoreboard_list_header));

// Order scoreboard, limit to 10 records and print it
PlayerManager.playerExtras.values().stream()
.sorted(new Comparator<PlayerExtra>() {
@Override
public int compare(PlayerExtra o1, PlayerExtra o2) {
return o2.getWinCount() - o1.getWinCount();
}
})
.limit(10)
.forEach(x -> {
player.sendMessage(String.format("%s --> %d", x.getName(), x.getWinCount()));
});
}

return true;
}

@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
List<String> completions = new ArrayList<>();

if (args.length == 1) {
completions.add("global");
return completions;
}

Collections.sort(completions);
return Collections.emptyList();
}

}
37 changes: 30 additions & 7 deletions src/main/java/lar/minecraft/hg/entities/PlayerExtra.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,30 @@
public class PlayerExtra {

private UUID uuid;
private String name;
private PlayerClass playerClass = null;
private boolean lastWinner = false;
private boolean premium = false;
private int winCount = 0;

public PlayerExtra(UUID uuid) {
this(uuid, false);
public PlayerExtra(UUID uuid, String name) {
this(uuid, name, false);
}

public PlayerExtra(UUID uuid, boolean lastWinner) {
this(uuid, lastWinner, false);
public PlayerExtra(UUID uuid, String name, boolean lastWinner) {
this(uuid, name, lastWinner, false);
}

public PlayerExtra(UUID uuid, boolean lastWinner, boolean premium) {
public PlayerExtra(UUID uuid, String name, boolean lastWinner, boolean premium) {
this(uuid, name, lastWinner, false, 0);
}

public PlayerExtra(UUID uuid, String name, boolean lastWinner, boolean premium, int winCount) {
this.uuid = uuid;
this.name = name;
this.lastWinner = lastWinner;
this.premium = premium;
this.winCount = winCount;
}

public UUID getUuid() {
Expand All @@ -33,6 +41,14 @@ public void setUuid(UUID uuid) {
this.uuid = uuid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public PlayerClass getPlayerClass() {
return playerClass;
}
Expand All @@ -56,6 +72,14 @@ public boolean isPremium() {
public void setPremium(boolean premium) {
this.premium = premium;
}

public int getWinCount() {
return winCount;
}

public void setWinCount(int winCount) {
this.winCount = winCount;
}

@Override
public int hashCode() {
Expand All @@ -81,5 +105,4 @@ public boolean equals(Object obj) {
return false;
return true;
}

}
}
3 changes: 2 additions & 1 deletion src/main/java/lar/minecraft/hg/enums/MessageKey.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ public enum MessageKey {
safe_area_phase_alert,
safe_area_expires_alert,
playing_phase_alert,
server_to_restart_alert
server_to_restart_alert,
scoreboard_list_header
}
Loading

0 comments on commit 398bea0

Please sign in to comment.