Skip to content

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);

    }

root

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
    }
}

Clone this wiki locally