Skip to main content
Blade is a powerful, annotation-based command framework that simplifies command creation for Minecraft and game server platforms. With Blade, you can build sophisticated command systems using simple Java annotations, letting the framework handle parsing, validation, and execution.

What is Blade?

Blade is an easy-to-use command framework that allows you to create commands using annotations instead of complex boilerplate code. It supports multiple platforms including Bukkit, Paper, Fabric, Velocity, Minestom, and Hytale.
Blade is now published to Maven Central under the group ID io.github.vaperion.blade. Versioning has been reset to 1.0.0 for this release.

Key Features

  • Annotation-Based: Define commands using simple @Command annotations
  • Multi-Platform: Support for Bukkit, Paper, Fabric, Velocity, Minestom, and Hytale
  • Type-Safe: Automatic argument parsing with type safety
  • Flexible Arguments: Support for optional parameters, default values, and custom types
  • Command Flags: Built-in support for command flags (e.g., -s for silent mode)
  • Async Support: Execute commands asynchronously with a single annotation
  • Custom Providers: Extend the framework with custom argument and sender providers
  • Permission Support: Integrated permission checking with customizable messages
  • Tab Completion: Automatic tab completion for commands and arguments
  • Brigadier Integration: Native Brigadier support for Paper and Fabric platforms

Supported Platforms

Bukkit

General Bukkit support (Java 8+)

Paper

Enhanced Paper support with Brigadier integration

Fabric

Fabric modding platform support

Velocity

Velocity proxy server support

Minestom

Minestom server implementation support

Hytale

Hytale game server support

Quick Example

Here’s a simple example of what a Blade command looks like:
public class PayCommand {
    @Command("pay")
    @Description("Send money to another player")
    @Permission("economy.pay")
    public void pay(
        @Sender Player sender,
        @Name("player") Player target,
        @Name("amount") @Range(min = 1, max = 10000) int amount,
        @Flag('s') boolean silent
    ) {
        // Your command logic here
        sender.sendMessage("Sent $" + amount + " to " + target.getName());
        
        if (!silent) {
            target.sendMessage("Received $" + amount + " from " + sender.getName());
        }
    }
}

Getting Started

Installation

Add Blade to your project with Maven or Gradle

Quick Start

Create your first command in minutes

Core Concepts

Learn about commands, arguments, and providers

API Reference

Explore the complete API documentation

Version Information

This documentation covers Blade version 1.0.23. The project follows Semantic Versioning.
Blade has gone through a large internal refactor and some APIs have changed from previous versions. Please review the migration guide if you’re upgrading from an older version.

Build docs developers (and LLMs) love