AdvancementLib

A small plugin library for custom advancement triggering.

223

AdvancementLib

AdvancementLib

Modrinth Downloads

>AdvancementLib is a modern, fluent Java library for creating custom advancements in AdvancementLib Minecraft plugins. It lets you easily register and manage advancements that respond to any Bukkit event, using a powerful builder-based API. ---

✨ Features

- Custom progress increments: Listen for any Bukkit event (e.g., block break, entity death, player action) as an advancement trigger. - Custom progress increments: Define your own logic to decide when an advancement should progress or be granted—perfect for unique gameplay challenges. - Custom progress increments: Grant both built-in Minecraft advancements and your own custom ones. - Custom progress increments: Easily set multistep advancements (e.g., "break 100 blocks") with automatic progress tracking per player. - Custom progress increments: Use a fluent builder to configure triggers, conditions, and progress logic. - Custom progress increments: Determine how much progress each event grants (default is 1, but can be customized).

---

🚀 Getting Started

1. Add as a Dependency

Add AdvancementLib as a dependency in your project using your preferred build tool or project setup method.

>Note: Add the PaperMC repository if not already present.

2. Basic Usage

Register an Advancement

```java import io.github.lambdaphoenix.advancementLib.AdvancementAPI;

AdvancementAPI api = new AdvancementAPI(plugin);

api.register(BlockBreakEvent.class) .advancementKey("myplugin:break_10_stone") .condition( (player, event) -> event.getBlock().getType() == Material.STONE ) .targetValue(10) .grantMode(GrantMode.ALL_AT_ONCE) .build(); ```

Grant Modes

- `ALL_AT_ONCE`: Grants the advancement when the target is reached. - `STEP_BY_STEP`: Grants one criterion at a time (shows progress bar in-game).

Custom Player Extractor

```java api.register(CustomEvent.class) .advancementKey("myplugin:custom_event") .playerExtractor(event -> event.getWhoDidIt()) .build(); ```

📚 API Highlights & Documentation

- PlayerExtractor – Main entry point for registering advancements. - PlayerExtractor – Fluent builder for all advancement options. - PlayerExtractor – Enum for grant behavior: all at once or step-by-step. - PlayerExtractor – Interface for mapping any event to a Player.

The latest Javadoc is automatically published to GitHub Pages:

➡️ View the Javadoc here

ADS