-
Notifications
You must be signed in to change notification settings - Fork 20
Examples
fren_gor edited this page Aug 22, 2021
·
6 revisions
create a root:
private AdvancementTab advancementTab;
private RootAdvancement root;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
//if you want to the enable SqlLite
main.enableSQLite(new File(getDataFolder(), "sqlLiteDbName"));
advancementTab = UltimateAdvancementAPI.getInstance(this).createAdvancementTab("a_tab");
AdvancementDisplay rootDisplay = new AdvancementDisplay(Material.GRASS, "Example root", AdvancementFrameType.TASK, false, false, 0, 0, "description");
root = new RootAdvancement(advancementTab, "root", rootDisplay, "textures/block/stone.png");
advancementTab.registerAdvancements(root);
}
@EventHandler
public void onJoin(PlayerLoadingCompletedEvent e) {
Player p = e.getPlayer();
advancementTab.showTab(p);
}step 2 root with reward and notifications
in the main class:
private AdvancementTab advancementTab;
private RootAdv root;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
//if you want to the enable SqlLite
main.enableSQLite(new File(getDataFolder(), "sqlLiteDbName"));
advancementTab = UltimateAdvancementAPI.getInstance(this).createAdvancementTab("a_tab");
AdvancementDisplay rootDisplay = new AdvancementDisplay(Material.GRASS_BLOCK, "Root §c", AdvancementFrameType.TASK, true, true, 0, 0, "Break a grass block", "you will recived a gift!");
root = new RootAdv(advancementTab, "root", rootDisplay, "textures/block/stone.png");
advancementTab.registerAdvancements(root);
}
@EventHandler
public void onJoin(PlayerLoadingCompletedEvent e) {
Player p = e.getPlayer();
advancementTab.showTab(p);
}in RootAdv class:
public class RootAdv extends RootAdvancement {
public RootAdv(@NotNull AdvancementTab advancementTab, @NotNull String key, @NotNull AdvancementDisplay display, @NotNull String backgroundTexture) {
super(advancementTab, key, display, backgroundTexture);
registerEvent(BlockBreakEvent.class, e -> {
if (isVisible(e.getPlayer()) && e.getBlock().getType() == display.getIcon().getType()) {
incrementTeamCriteria(e.getPlayer());
}
});
}
@Override
public void giveReward(@NotNull Player player) {
player.sendMessage("You recived a diamond shovel");
player.getInventory().addItem(new ItemStack(Material.DIAMOND_SHOVEL));
}
@Override
public BaseComponent[] getAnnounceMessage(@NotNull Player player) {
ChatColor color = display.getFrame().getColor();
return new ComponentBuilder(player.getName() + " has completed the " + display.getFrame().getChatText() + ' ').color(ChatColor.WHITE).append(new ComponentBuilder("[").color(color).event(new HoverEvent(Action.SHOW_TEXT, display.getChatDescription())).append(display.getChatTitle()).append(new ComponentBuilder("]").reset().color(color).create()).create()).create();
}
}
Third step:
public class MainClazz extends JavaPlugin implements Listener {
private AdvancementMain main;
@Override
public void onLoad() {
main = new AdvancementMain(this);
main.load();
}
private AdvancementTab advancementTab;
private Root root;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
//if you want to the enable SqlLite
main.enableSQLite(new File(getDataFolder(), "sqlLiteDbName"));
advancementTab = UltimateAdvancementAPI.getInstance(this).createAdvancementTab("a_tab");
AdvancementDisplay rootDisplay = new AdvancementDisplay(Material.GRASS_BLOCK, "Root §c", AdvancementFrameType.TASK, false, false, 0, 0, "Your adventure start here");
root = new Root(advancementTab, "root", rootDisplay, "textures/block/stone.png");
AdvancementDisplay stoneD = new AdvancementDisplay(Material.STONE, "Stone", AdvancementFrameType.GOAL, true, true, 1, 0, "Break 3 blocks of stone");
Stone stone = new Stone("stone", stoneD, root, 3);
AdvancementDisplay pickaxeD = new AdvancementDisplay(Material.STONE_PICKAXE, "Stone Pickaxe", AdvancementFrameType.CHALLENGE, true, true, 2, 1, "Craft a stone pickaxe");
Pickaxe pickaxe = new Pickaxe( "pickaxe", pickaxeD, stone);
advancementTab.registerAdvancements(root, stone, pickaxe);
}
@EventHandler
public void onJoin(PlayerLoadingCompletedEvent e) {
Player p = e.getPlayer();
advancementTab.showTab(p);
root.grant(p);
}
@Override
public void onDisable() {
main.disable();
main = null;
}
}public class Root extends RootAdvancement {
public Root(@NotNull AdvancementTab advancementTab, @NotNull String key, @NotNull AdvancementDisplay display, @NotNull String backgroundTexture) {
super(advancementTab, key, display, backgroundTexture);
}
}public class Stone extends BaseAdvancement {
public Stone( @NotNull String key, @NotNull AdvancementDisplay display, @NotNull Advancement parent, @Range(from = 1L, to = 2147483647L) int maxCriteria) {
super( key, display, parent, maxCriteria);
registerEvent(BlockBreakEvent.class, e -> {
if (isVisible(e.getPlayer()) && e.getBlock().getType() == display.getIcon().getType()) {
incrementTeamCriteria(e.getPlayer());
}
});
}
@Override
public void giveReward(@NotNull Player player) {
}
}public class Pickaxe extends BaseAdvancement implements ParentGrantedVisibility {
public Pickaxe( @NotNull String key, @NotNull AdvancementDisplay display, @NotNull Advancement parent) {
super(key, display, parent);
registerEvent(CraftItemEvent.class, e -> {
Player p = (Player) e.getWhoClicked();
if (isVisible(p) && !isGranted(p) && e.getRecipe().getResult().getType() == Material.STONE_PICKAXE) {
incrementTeamCriteria(p);
}
});
}
@Override
public void giveReward(@NotNull Player player) {
//things
}
}
UltimateAdvancementAPI Wiki © 2021 fren_gor, EscanorTargaryen is licensed under CC BY-SA 4.0.
Except where otherwise noted, code snippets inside the wiki are licensed under The Unlicense.
