Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Code Quality

permissions:
contents: read

on:
push:
branches: ["main", "master"]
pull_request:
branches: ["main", "master"]

jobs:
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 25
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 25
cache: maven

- name: Build with coverage
run: mvn --batch-mode clean verify

- name: Upload JaCoCo coverage report
uses: actions/upload-artifact@v4
with:
name: jacoco-report
path: target/site/jacoco/

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: target/site/jacoco/jacoco.xml
46 changes: 46 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Documentation

on:
release:
types: [published]
workflow_dispatch:

# Required for GitHub Pages deployment via Actions
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment; skip in-progress runs
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest

environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Configure GitHub Pages
uses: actions/configure-pages@v5

- name: Build Jekyll site
uses: actions/jekyll-build-pages@v1
with:
source: ./docs
destination: ./_site

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
21 changes: 21 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Lint

on:
pull_request:
paths:
- "docs/**/*.md"
- ".markdownlint.yml"

jobs:
markdown:
name: Validate Markdown
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Lint documentation Markdown
uses: DavidAnson/markdownlint-cli2-action@v16
with:
globs: "docs/**/*.md"
config: ".markdownlint.yml"
34 changes: 34 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# markdownlint configuration
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md

default: true

# MD013 — Line length: documentation lines are allowed to exceed 80 chars
MD013: false

# MD022 — Blanks around headings: Kramdown attribute syntax ({: .no_toc })
# must immediately follow a heading with no blank line
MD022: false

# MD025 — Single H1: pages have both front-matter title: and an # H1 heading;
# disable front-matter title detection to avoid false positives
MD025:
front_matter_title: ""

# MD033 — Inline HTML: needed for Jekyll/Liquid includes and badge images
MD033: false

# MD036 — Emphasis as heading: API tables use bold labels that markdownlint
# mistakes for headings
MD036: false

# MD041 — First line must be H1: front-matter pages don't start with a heading
MD041: false

# MD024 — No duplicate headings: allow sibling duplicates across sections
MD024:
siblings_only: true

# MD007 — Unordered list indentation: use 2-space indent under list items
MD007:
indent: 2
37 changes: 21 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
[![Platform: Spigot | Paper | Bukkit](https://img.shields.io/badge/Platform-Spigot%20%7C%20Paper%20%7C%20Bukkit-blue?style=flat-square)](#)
[![Minecraft 1.7-1.21.*](https://img.shields.io/badge/Minecraft-1.7--1.21.*-brightgreen?style=flat-square)](#)
[![MIT License](https://img.shields.io/github/license/ez-plugins/ezboost?style=flat-square)](#)
[![Latest Release](https://img.shields.io/github/v/release/ez-plugins/ezboost?style=flat-square)](#)
[![CI](https://github.com/ez-plugins/ezboost/actions/workflows/smoke-test.yml/badge.svg)](https://github.com/ez-plugins/ezboost/actions/workflows/smoke-test.yml)
[![GitHub Packages](https://img.shields.io/badge/GitHub_Packages-2.0.0-blue?logo=github)](https://github.com/ez-plugins/ezboost/packages)
[![Coverage](https://img.shields.io/codecov/c/github/ez-plugins/ezboost)](https://codecov.io/github/ez-plugins/ezboost)
[![Docs](https://img.shields.io/badge/Docs-GitHub_Pages-blue?logo=github)](https://ez-plugins.github.io/ezboost)
[![Platform](https://img.shields.io/badge/Platform-Spigot%20%7C%20Paper%20%7C%20Bukkit-blue)](#)
[![Minecraft](https://img.shields.io/badge/Minecraft-1.7--1.21.*-brightgreen)](#)
[![License](https://img.shields.io/github/license/ez-plugins/ezboost)](LICENSE)
[![Release](https://img.shields.io/github/v/release/ez-plugins/ezboost)](https://github.com/ez-plugins/ezboost/releases)

# EzBoost

Expand Down Expand Up @@ -34,18 +38,19 @@ EzBoost is a modern, production-ready Minecraft plugin for Spigot, Paper, and Bu

## Documentation

- [Commands Reference](docs/commands.md)
- [Permissions Reference](docs/permissions.md)
- [Overrides Guide](docs/overrides.md)
- [GUI Guide](docs/gui.md)
- [Configuration Guide](docs/config.md)
- [Boosts Guide](docs/boosts.md)
- [API Overview](docs/api.md)
- [EzBoostAPI Reference](docs/api/EzBoostAPI.md)
- [CustomBoostEffect Reference](docs/api/CustomBoostEffect.md)
- [Events Overview](docs/events.md)
- [BoostStartEvent Reference](docs/events/BoostStartEvent.md)
- [BoostEndEvent Reference](docs/events/BoostEndEvent.md)
Full documentation is available at **<https://ez-plugins.github.io/ezboost>**.

| Page | What it covers |
|------|----------------|
| [Commands](https://ez-plugins.github.io/ezboost/commands) | All `/boost` and `/ezboost` commands |
| [Permissions](https://ez-plugins.github.io/ezboost/permissions) | Permissions reference and defaults |
| [Configuration](https://ez-plugins.github.io/ezboost/config) | `settings.yml`, `limits.yml`, `worlds.yml`, `economy.yml` |
| [Boosts](https://ez-plugins.github.io/ezboost/boosts) | `boosts.yml` schema — effects, durations, costs |
| [GUI](https://ez-plugins.github.io/ezboost/gui) | `gui.yml` — chest-based boost menu |
| [Overrides](https://ez-plugins.github.io/ezboost/overrides) | World, group, and region multiplier overrides |
| [Events](https://ez-plugins.github.io/ezboost/events) | Plugin lifecycle events |
| [API](https://ez-plugins.github.io/ezboost/api) | Developer API reference |
| [PlaceholderAPI](https://ez-plugins.github.io/ezboost/integration/PlaceholderAPI) | Available placeholders |

---

Expand Down
3 changes: 3 additions & 0 deletions docs/EzBoostAPI.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ EzBoost exposes a professional, extensible API for plugin developers and advance
## Getting Started

1. Register your custom effect:

```java
EzBoostAPI.registerCustomEffect(new MyCustomEffect());
```

2. Query or manage player boosts:

```java
if (EzBoostAPI.isBoostActive(player)) {
BoostDefinition boost = EzBoostAPI.getActiveBoost(player);
Expand Down
62 changes: 62 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
remote_theme: just-the-docs/just-the-docs

title: EzBoost
description: >-
Modern, production-ready Minecraft boost plugin for Spigot, Paper, and Bukkit.
Configurable potion boosts, cooldowns, GUI, economy integration, and WorldGuard support.

url: "https://ez-plugins.github.io"
baseurl: "/ezboost"

# ── Appearance ────────────────────────────────────────────────────────────────
heading_anchors: true

# ── Header links ──────────────────────────────────────────────────────────────
aux_links:
"GitHub":
- "https://github.com/ez-plugins/ezboost"
"Releases":
- "https://github.com/ez-plugins/ezboost/releases"

aux_links_new_tab: true

# ── Navigation ────────────────────────────────────────────────────────────────
nav_sort: case_insensitive
nav_external_links:
- title: Changelog
url: "https://github.com/ez-plugins/ezboost/releases"
hide_icon: false

# ── Search ────────────────────────────────────────────────────────────────────
search_enabled: true
search:
heading_level: 2
previews: 3
preview_words_before: 5
preview_words_after: 10
tokenizer_separator: /[\s/]+/

# ── Footer ────────────────────────────────────────────────────────────────────
back_to_top: true
back_to_top_text: "Back to top"

footer_content: >-
Copyright &copy; 2024&ndash;2026 EzPlugins.
Distributed under the
<a href="https://github.com/ez-plugins/ezboost/blob/main/LICENSE">MIT License</a>.

# ── Kramdown ──────────────────────────────────────────────────────────────────
kramdown:
syntax_highlighter_opts:
block:
line_numbers: false

# ── Plugins ───────────────────────────────────────────────────────────────────
plugins:
- jekyll-remote-theme
- jekyll-seo-tag

# ── Build exclusions ──────────────────────────────────────────────────────────
exclude:
- Gemfile
- Gemfile.lock
25 changes: 21 additions & 4 deletions docs/api.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
---
title: API
nav_order: 9
has_children: true
description: "EzBoost developer API — integrating boost management into your own plugins"
---

# EzBoost API Overview
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

EzBoost exposes a professional, extensible API for plugin developers and advanced users. The API allows you to register custom boost effects, manage player boosts, and integrate deeply with the boost system.

Expand All @@ -7,7 +23,6 @@ EzBoost exposes a professional, extensible API for plugin developers and advance
- [`EzBoostAPI`](api/EzBoostAPI.md): Main static API class for registering effects, querying and managing boosts.
- [`CustomBoostEffect`](api/CustomBoostEffect.md): Interface for defining custom boost effects.


## Configuring Custom Effects in YAML

To use a custom effect in your boost configuration, reference its unique type string (as returned by `getType()`) in your `boosts.yml`:
Expand Down Expand Up @@ -44,12 +59,14 @@ You can use JitPack to include the latest version directly from GitHub:
</dependency>
```

### 2. Register your custom effect:
### 2. Register your custom effect

```java
EzBoostAPI.registerCustomEffect(new MyCustomEffect());
```

### 3. Query or manage player boosts:
### 3. Query or manage player boosts

```java
if (EzBoostAPI.isBoostActive(player)) {
BoostDefinition boost = EzBoostAPI.getActiveBoost(player);
Expand All @@ -69,4 +86,4 @@ if (EzBoostAPI.isBoostActive(player)) {
- [CustomBoostEffect interface reference](api/CustomBoostEffect.md)
- [Events documentation](../events.md)

For more details, see: [EzBoost on GitHub](https://github.com/ez-plugins/EzBoost)
For more details, see: [EzBoost on GitHub](https://github.com/ez-plugins/EzBoost)
24 changes: 24 additions & 0 deletions docs/api/CustomBoostEffect.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
---
title: CustomBoostEffect
parent: API
nav_order: 2
description: "CustomBoostEffect interface — implementing custom plugin-driven boost effects"
---

# CustomBoostEffect Interface Reference
{: .no_toc }

## Table of contents
{: .no_toc .text-delta }

1. TOC
{:toc}

---

## Overview
`CustomBoostEffect` is an interface for defining custom boost effects that can be registered with EzBoost. Implement this interface in your plugin to add new effect types that will be executed when a boost is activated or deactivated.
Expand All @@ -7,6 +23,7 @@
`com.skyblockexp.ezboost.boost`

## Interface Declaration

```java
public interface CustomBoostEffect {
/**
Expand Down Expand Up @@ -40,10 +57,12 @@ public interface CustomBoostEffect {

### `void apply(Player player, int amplifier)`
Called when the boost's custom effect should be applied to a player.

- **player**: The player receiving the effect.
- **amplifier**: The configured amplifier for this effect in the boost.

**Usage Example:**

```java
@Override
public void apply(Player player, int amplifier) {
Expand All @@ -55,9 +74,11 @@ public void apply(Player player, int amplifier) {

### `void remove(Player player)`
Called when the boost's custom effect should be removed from a player.

- **player**: The player losing the effect.

**Usage Example:**

```java
@Override
public void remove(Player player) {
Expand All @@ -69,12 +90,14 @@ public void remove(Player player) {

### `String getName()`
Returns the unique effect name used in boost configuration to identify the custom effect.

- **Returns**: The effect name (e.g., "mycustom").

### `int getCooldownSeconds()`
Returns the cooldown duration (in seconds) associated with this custom effect. When `settings.cooldown-per-effect` is enabled, this value is used to set per-effect cooldown timestamps after activation. Returning `0` means no cooldown.

**Usage Example:**

```java
@Override
public String getName() {
Expand Down Expand Up @@ -119,6 +142,7 @@ public void onEnable() {
```

## Notes

- Register your implementation with `EzBoostAPI.registerCustomEffect()` (see example above).
- The effect type returned by `getType()` must be unique across all registered effects.
- See also: [EzBoostAPI](../EzBoostAPI.md)
Loading
Loading