Advancement arguments

An advancement argument suggesting a list of Minecraft advancements

The AdvancementArgument class represents in-game advancements. As expected, the AdvancementArgument can be casted to Bukkit's Advancement class.

Example - Awarding a player an advancement

Say we want to award a player an advancement. First, we need the syntax that our command will use:

/award <player> <advancement>

Since we require a player, we will use the PlayerArgument for this example. Given a player, we can simply get the AdvancementProgress for that player, and then award the criteria required to fully complete the provided advancement.

new CommandAPICommand("award") .withArguments(new PlayerArgument("player")) .withArguments(new AdvancementArgument("advancement")) .executes((sender, args) -> { Player target = (Player) args[0]; Advancement advancement = (Advancement) args[1]; //Award all criteria for the advancement AdvancementProgress progress = target.getAdvancementProgress(advancement); for(String criteria : advancement.getCriteria()) { progress.awardCriteria(criteria); } }) .register();