mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-09 19:49:35 +01:00
Add methods to use arbitrary entries in scoreboards. Adds BUKKIT-3977
By: Travis Watkins <amaranth@ubuntu.com>
This commit is contained in:
parent
07c1670354
commit
0ebd864e63
4 changed files with 70 additions and 14 deletions
|
@ -209,7 +209,7 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
|
||||
return false;
|
||||
}
|
||||
Score score = objective.getScore(Bukkit.getOfflinePlayer(playerName));
|
||||
Score score = objective.getScore(playerName);
|
||||
int newScore;
|
||||
if (args[1].equalsIgnoreCase("set")) {
|
||||
newScore = value;
|
||||
|
@ -230,7 +230,7 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
|
||||
return false;
|
||||
}
|
||||
mainScoreboard.resetScores(Bukkit.getOfflinePlayer(playerName));
|
||||
mainScoreboard.resetScores(playerName);
|
||||
sender.sendMessage("Reset all scores of player " + playerName);
|
||||
} else if (args[1].equalsIgnoreCase("list")) {
|
||||
if (args.length > 3) {
|
||||
|
@ -238,12 +238,12 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
return false;
|
||||
}
|
||||
if (args.length == 2) {
|
||||
Set<OfflinePlayer> players = mainScoreboard.getPlayers();
|
||||
if (players.isEmpty()) {
|
||||
Set<String> entries = mainScoreboard.getEntries();
|
||||
if (entries.isEmpty()) {
|
||||
sender.sendMessage(ChatColor.RED + "There are no tracked players on the scoreboard");
|
||||
} else {
|
||||
sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + players.size() + " tracked players on the scoreboard");
|
||||
sender.sendMessage(offlinePlayerSetToString(players));
|
||||
sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + entries.size() + " tracked players on the scoreboard");
|
||||
sender.sendMessage(stringCollectionToString(entries));
|
||||
}
|
||||
} else {
|
||||
String playerName = args[2];
|
||||
|
@ -251,7 +251,7 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
|
||||
return false;
|
||||
}
|
||||
Set<Score> scores = mainScoreboard.getScores(Bukkit.getOfflinePlayer(playerName));
|
||||
Set<Score> scores = mainScoreboard.getScores(playerName);
|
||||
if (scores.isEmpty()) {
|
||||
sender.sendMessage(ChatColor.RED + "Player " + playerName + " has no scores recorded");
|
||||
} else {
|
||||
|
@ -520,7 +520,7 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
}
|
||||
} else {
|
||||
if (args.length == 3) {
|
||||
return StringUtil.copyPartialMatches(args[2], this.getCurrentPlayers(), new ArrayList<String>());
|
||||
return StringUtil.copyPartialMatches(args[2], this.getCurrentEntries(), new ArrayList<String>());
|
||||
}
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("teams")) {
|
||||
|
@ -597,10 +597,10 @@ public class ScoreboardCommand extends VanillaCommand {
|
|||
return list;
|
||||
}
|
||||
|
||||
private List<String> getCurrentPlayers() {
|
||||
private List<String> getCurrentEntries() {
|
||||
List<String> list = new ArrayList<String>();
|
||||
for (OfflinePlayer player : Bukkit.getScoreboardManager().getMainScoreboard().getPlayers()) {
|
||||
list.add(player.getName());
|
||||
for (String entry : Bukkit.getScoreboardManager().getMainScoreboard().getEntries()) {
|
||||
list.add(entry);
|
||||
}
|
||||
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
|
||||
return list;
|
||||
|
|
|
@ -3,7 +3,7 @@ package org.bukkit.scoreboard;
|
|||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
/**
|
||||
* An objective on a scoreboard that can show scores specific to players. This
|
||||
* An objective on a scoreboard that can show scores specific to entries. This
|
||||
* objective is only relevant to the display of the associated {@link
|
||||
* #getScoreboard() scoreboard}.
|
||||
*/
|
||||
|
@ -92,6 +92,19 @@ public interface Objective {
|
|||
* @return Score tracking the Objective and player specified
|
||||
* @throws IllegalArgumentException if player is null
|
||||
* @throws IllegalStateException if this objective has been unregistered
|
||||
* @deprecated Scoreboards can contain entries that aren't players
|
||||
* @see #getScore(String)
|
||||
*/
|
||||
@Deprecated
|
||||
Score getScore(OfflinePlayer player) throws IllegalArgumentException, IllegalStateException;
|
||||
|
||||
/**
|
||||
* Gets an entry's Score for an Objective on this Scoreboard.
|
||||
*
|
||||
* @param entry Entry for the Score
|
||||
* @return Score tracking the Objective and entry specified
|
||||
* @throws IllegalArgumentException if entry is null
|
||||
* @throws IllegalStateException if this objective has been unregistered
|
||||
*/
|
||||
Score getScore(String entry) throws IllegalArgumentException, IllegalStateException;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ package org.bukkit.scoreboard;
|
|||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
/**
|
||||
* A score entry for a {@link #getPlayer() player} on an {@link
|
||||
* A score entry for an {@link #getEntry() entry} on an {@link
|
||||
* #getObjective() objective}. Changing this will not affect any other
|
||||
* objective or scoreboard.
|
||||
*/
|
||||
|
@ -13,9 +13,19 @@ public interface Score {
|
|||
* Gets the OfflinePlayer being tracked by this Score
|
||||
*
|
||||
* @return this Score's tracked player
|
||||
* @deprecated Scoreboards can contain entries that aren't players
|
||||
* @see #getEntry()
|
||||
*/
|
||||
@Deprecated
|
||||
OfflinePlayer getPlayer();
|
||||
|
||||
/**
|
||||
* Gets the entry being tracked by this Score
|
||||
*
|
||||
* @return this Score's tracked entry
|
||||
*/
|
||||
String getEntry();
|
||||
|
||||
/**
|
||||
* Gets the Objective being tracked by this Score
|
||||
*
|
||||
|
|
|
@ -63,17 +63,40 @@ public interface Scoreboard {
|
|||
* @param player the player whose scores are being retrieved
|
||||
* @return immutable set of all scores tracked for the player
|
||||
* @throws IllegalArgumentException if player is null
|
||||
* @deprecated Scoreboards can contain entries that aren't players
|
||||
* @see #getScores(String)
|
||||
*/
|
||||
@Deprecated
|
||||
Set<Score> getScores(OfflinePlayer player) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Gets all scores for an entry on this Scoreboard
|
||||
*
|
||||
* @param entry the entry whose scores are being retrieved
|
||||
* @return immutable set of all scores tracked for the entry
|
||||
* @throws IllegalArgumentException if entry is null
|
||||
*/
|
||||
Set<Score> getScores(String entry) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Removes all scores for a player on this Scoreboard
|
||||
*
|
||||
* @param player the player to drop all current scores
|
||||
* @param player the player to drop all current scores for
|
||||
* @throws IllegalArgumentException if player is null
|
||||
* @deprecated Scoreboards can contain entries that aren't players
|
||||
* @see #resetScores(String)
|
||||
*/
|
||||
@Deprecated
|
||||
void resetScores(OfflinePlayer player) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Removes all scores for an entry on this Scoreboard
|
||||
*
|
||||
* @param entry the entry to drop all current scores for
|
||||
* @throws IllegalArgumentException if entry is null
|
||||
*/
|
||||
void resetScores(String entry) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Gets a player's Team on this Scoreboard
|
||||
*
|
||||
|
@ -113,9 +136,19 @@ public interface Scoreboard {
|
|||
* Gets all players tracked by this Scoreboard
|
||||
*
|
||||
* @return immutable set of all tracked players
|
||||
* @deprecated Scoreboards can contain entries that aren't players
|
||||
* @see #getEntries()
|
||||
*/
|
||||
@Deprecated
|
||||
Set<OfflinePlayer> getPlayers();
|
||||
|
||||
/**
|
||||
* Gets all entries tracked by this Scoreboard
|
||||
*
|
||||
* @return immutable set of all tracked entries
|
||||
*/
|
||||
Set<String> getEntries();
|
||||
|
||||
/**
|
||||
* Clears any objective in the specified slot.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue