@jsprismarine/brigadier
TypeScript icon, indicating that this package has built-in type declarations

0.12.0 • Public • Published

@jsprismarine/brigadier

License Join the Discord Server Contributors npm Code Coverage TODOs Counter FIXMEs Counter GitHub Commit Activity

@jsprismarine/brigadier is a Node.js version of Mojang's Brigadier library. It is a command parser & dispatcher, originally designed and developed for Minecraft: Java Edition and now freely available for use elsewhere under the MIT license.

This project was originally developed by remtori as node-brigadier.

Prerequisites

Before you begin, ensure you have met the following requirements:

  • You have installed the latest version of Node.js and a package manager like npm, pnpm or bun.

Installation

To install @jsprismarine/brigadier, use the following command:

pnpm install @jsprismarine/brigadier --save

Usage

Dispatch a command

import { CommandDispatcher, literal, argument, string, Suggestions } from '@jsprismarine/brigadier';

// Define a BlockPos class
class BlockPos {
    constructor(x = 0, y = 0, z = 0) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
    parse(reader) {
        this.x = reader.readInt();
        reader.skip();
        this.y = reader.readInt();
        reader.skip();
        this.z = reader.readInt();
        return this;
    }
    listSuggestions(context, builder) {
        return Suggestions.empty();
    }
    getExamples() {
        return ['1 2 3'];
    }
}

// Create a new CommandDispatcher
const dispatcher = new CommandDispatcher();

// Register a command
dispatcher.register(
    literal('fill').then(
        argument('pos1', new BlockPos()).then(
            argument('pos2', new BlockPos()).then(
                argument('block', string()).executes((context) => {
                    console.log(context.getArgument('pos1', BlockPos));
                    console.log(context.getArgument('pos2', BlockPos));
                    console.log(context.getArgument('block', 3));
                    return 0;
                })
            )
        )
    )
);

// Parse a command
const parsedCommand = dispatcher.parse('fill 3 4 5 10 11 12 air', {});

// Execute the command
try {
    dispatcher.execute(parsedCommand);
} catch (error) {
    console.error(error.getMessage());
}

Package Sidebar

Install

npm i @jsprismarine/brigadier

Weekly Downloads

263

Version

0.12.0

License

MIT

Unpacked Size

630 kB

Total Files

176

Last publish

Collaborators

  • filiphsandstrom
  • herryyt