: "") +
(act.equals(Action.ADD) && objective != null
? displaySlot.debug()
: ""));
Scoreboard board = null;
// Get the main scoreboard by default
if (id.asString().equalsIgnoreCase("main")) {
board = ScoreboardHelper.getMain();
}
else {
// If this scoreboard already exists, get it
if (ScoreboardHelper.hasScoreboard(id.asString())) {
board = ScoreboardHelper.getScoreboard(id.asString());
}
// Else, create a new one if Action is ADD
else if (act.equals(Action.ADD)) {
board = ScoreboardHelper.createScoreboard(id.asString());
}
}
// Don't progress if we ended up with a null board
if (board == null) {
dB.echoError(scriptEntry.getResidingQueue(), "Scoreboard " + id.asString() + " does not exist!");
return;
}
Objective obj = null;
if (act.equals(Action.ADD)) {
if (objective != null) {
// Try getting the objective from the board
obj = board.getObjective(objective.asString());
// Create the objective if it does not already exist
if (obj == null) {
obj = board.registerNewObjective(objective.asString(), criteria.asString());
}
// If a different criteria has been set for this objective,
// recreate the objective
else if (criteria != null && !obj.getCriteria().equals(criteria.asString())) {
obj.unregister();
obj = board.registerNewObjective(objective.asString(), criteria.asString());
}
// Change the objective's display slot
if (!displaySlot.asString().equalsIgnoreCase("none")) {
obj.setDisplaySlot(DisplaySlot.valueOf(displaySlot.asString().toUpperCase()));
}
obj.setDisplayName(objective.asString());
if (!lines.isEmpty()) {
// If we've gotten this far, but the score is null,
// use a score of 0
if (score == null) score = new Element(0);
// Set all the score lines in the scoreboard, creating fake players
// for those lines that are not meant to track players
//
// Read https://forums.bukkit.org/threads/help-with-multi-line-scoreboards.181149/
// for clarifications
for (String line : lines) {
line = line.replaceAll("[pP]@", "");
if (line.length() > 48) {
line = line.substring(0, 48);
}
ScoreboardHelper.addScore(obj, getOfflinePlayer(line), score.asInt());
}
}
}
// If there is no objective and no viewers, but there are some lines,
// the command cannot do anything at all, so print a message about that
else if (viewers == null && !lines.isEmpty()) {
dB.echoDebug(scriptEntry, "Cannot add lines without specifying an objective!");
}
}
else if (act.equals(Action.REMOVE)) {
if (objective != null) {
// Try getting the objective from the board
obj = board.getObjective(objective.asString());
if (obj != null) {
// Remove the entire objective if no lines have been specified
if (lines.isEmpty()) {
dB.echoDebug(scriptEntry, "Removing objective " + obj.getName() +