Objective arguments
In the CommandAPI, objectives are split into two classes:
- The
ObjectiveArgument
class, which represents objectives as a whole - The
ObjectiveCriteriaArgument
class, which represents objective criteria
Objective argument
The objective argument refers to a single scoreboard objective.
Example – Move objective to sidebar
Example – Move objective to sidebar
As an example, let's create a command to move an objective to a player's sidebar. To do this, we will use the following command syntax:
/sidebar <objective>
new CommandAPICommand("sidebar")
.withArguments(new ObjectiveArgument("objective"))
.executes((sender, args) -> {
Objective objective = (Objective) args.get("objective");
// Set display slot
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
})
.register();
Objective criteria argument
The ObjectiveCriteriaArgument
is fairly straight forward - it represents the criteria for an objective. Similar to Bukkit, the objective criteria is simply represented as a String
, so it must be casted to a String
when being used.
Example – Unregister all objectives by criteria
Example – Unregister all objectives by criteria
Say we wanted to create a command to unregister all objectives based on a given criteria. Let's create a command with the following form:
/unregisterall <objective critera>
To do this, we're going to take advantage of Bukkit's Scoreboard.getObjectivesByCriteria(String)
method
new CommandAPICommand("unregisterall")
.withArguments(new ObjectiveCriteriaArgument("objective criteria"))
.executes((sender, args) -> {
String objectiveCriteria = (String) args.get("objective criteria");
Set<Objective> objectives = Bukkit.getScoreboardManager().getMainScoreboard().getObjectivesByCriteria(objectiveCriteria);
// Unregister the objectives
for (Objective objective : objectives) {
objective.unregister();
}
})
.register();