AdvancementAPI is library made to easily create Advancement for your server using built in Bukkit/Spigot API features.
Creating root advancement unlocked by collecting 3 cobblestone
publicclassCobblestoneAdvancementimplementsAdvancementCreator {
publicstaticfinalStringID = "some_cobblestone";
@Overridepublic@NotNullAdvancementcreate(@NotNullContextcontext) {
Advancementadvancement = newAdvancement(context.getPlugin(), ID);
advancement.setDisplay(x -> {
x.setTitle("Some Cobblestone");
x.setDescription("Get 3 cobblestone");
x.setBackground(BackgroundType.STONE);
x.setIcon(Material.COBBLESTONE);
});
advancement.addCriteria("cobblestone", TriggerType.INVENTORY_CHANGED, trigger -> {
trigger.hasItemMatching(item -> {
item.setType(Material.COBBLESTONE);
item.setCount(3);
});
});
returnadvancement;
}
}Creating child advancement of previous one unlocked by crafting a stone pickaxe
publicclassStonePickaxeAdvancementimplementsAdvancementCreator {
publicstaticfinalStringID = "stone_pickaxe";
@Overridepublic@NotNullAdvancementcreate(@NotNullContextcontext) {
Advancementadvancement = newAdvancement(context.getPlugin(), ID);
advancement.setParent(newNamespacedKey(context.getPlugin(), CobblestoneAdvancement.ID));
advancement.setDisplay(x -> {
x.setTitle("Stone Pickaxe");
x.setDescription("Craft a stone pickaxe with your 3 cobblestone");
x.setIcon(Material.STONE_PICKAXE);
});
advancement.addCriteria("pickaxe", TriggerType.INVENTORY_CHANGED, trigger -> {
trigger.hasItem(Material.STONE_PICKAXE);
});
returnadvancement;
}
}Register previously created advancements
publicclassMyPluginextendsJavaPlugin {
privatefinalAdvancementManagermanager = newAdvancementManager(this);
@OverridepublicvoidonEnable() {
manager.register(newCobblestoneAdvancement());
manager.register(newStonePickaxeAdvancement());
manager.createAll();
}
}