Amethyst

June 29, 2026 ยท View on GitHub

GitHub Actions Workflow Status Latest Version

Amethyst

Yet another programming language targetting Minecraft datapacks? We have enough already.

-- Someone (probably)


There's been many different attempts at making a high-level programming language for Minecraft Data packs over the years, but one flaw I've seen in all of them is that they let the limitations of commands dictate what's possible. All of that changed when Minecraft added macro functions, greatly increasing the flexibility of data packs. The goal of Amethyst is to leverage macro functions and other features to allow users to make data packs as easily as they would write any other program.

Supports data pack versions 88.0 (1.21.9) through 107.1 (26.2), theoretically works on Minecraft 1.20.5+ with some tweaks to the pack.mcmeta file. No, it will not be ported to earlier versions without macro functions.

Usage

The latest releases are found here. Documentation is on the website.

Nightly builds can be accessed through Github Actions or here:

OSBuilds
Windowsx86-64 (installer)
Arm (installer)
Linuxx86-64 (.deb, .pkg.tar.zst)
MacApple Silicon

Packages for the apt and pacman package managers are built and tested for each commit.

The latest VS Code extension build can be found here or through the official VS Code Marketplace.

Examples:

amethyst compile examples/test.ame -o datapack.zip
amethyst compile tests/*.ame -o tests.zip

Simple program:

namespace example;

#load
void main() {
    print("Hello World");

    int x = 7;
    print("Value: ", x * 9);

    @/say $(x == 7)

    int array = [x];
    array.add(-9);
    print(array);

    if (@s[type="player"]) {
        print("Called by a player");
    }
}

Planned Features

See the 1.0 release project for more details.

Support the Project

Like what you see? Support me on Ko-fi.