- Home
- Minecraft Datapack Generators
- Shulkerscript
Shulkerscript
What it is
Shulkerscript is a free, open-source scripting language and command-line tool for creating Minecraft data packs. Its programming-style syntax extends beyond .mcfunction files, and one source file can generate multiple callable function files. The language supports functions, imports, tags, conditionals, execute blocks, groupings, literal commands, and embedded Lua. Functions marked with #[tick] can run every tick, while #[load] functions run when a data pack loads. The CLI compiles projects into a dist directory, watches files for changes, and can package compiled output as a ZIP archive. An online playground enables browser use without installation, and an optional official Visual Studio Code extension adds syntax highlighting and snippets. Installation guidance covers Windows, Linux, and macOS through GitHub releases, cargo-binstall, or building with Rust and Cargo. The documentation labels the playground and Lua integration as works in progress. Builds generate no .mcfunction files unless a function uses tick, load, or deobfuscate.
For and against
For
- Generates multiple function files
- Includes imports, tags, and conditionals
- Builds, watches, and creates ZIP archives
- Browser playground available
- Official Visual Studio Code extension
Against
- Playground is work in progress
- Lua integration is work in progress
- Annotations required for .mcfunction output
The verdict
Shulkerscript offers a structured language and CLI workflow for building Minecraft data packs across desktop systems or in a browser. Its annotation requirement and work-in-progress features are important considerations.
Who it suits
It suits Minecraft data-pack authors comfortable with scripting or wanting a language beyond .mcfunction files. The playground helps users try it in a browser, while desktop installation supports Windows, Linux, and macOS.
On the record
- Availability
- The guide offers installation from GitHub releases, installation with cargo-binstall, or building from source with Rust and Cargo.shulkerscript.hoelting.dev · read 4 Oct 2026
- Build and distribution
- The CLI can build projects into a `dist` directory, watch for file changes, and create a ZIP archive of a compiled project.shulkerscript.hoelting.dev · read 4 Oct 2026
- CLI installation
- The CLI can be installed with a quickinstall script, cargo-binstall, a GitHub release, or by building from source with Rust and Cargo.shulkerscript.hoelting.dev · read 7 Oct 2026
- Compilation
- The Shulkerscript CLI compiles project files into a `dist` directory and can watch for file changes to rebuild automatically.shulkerscript.hoelting.dev · read 7 Oct 2026
- Compiler
- The project says it is written in Rust and describes fast compile times and a small binary size.shulkerscript.hoelting.dev · read 4 Oct 2026
- Contributing
- The project invites contributions to its CLI and compiler repositories on GitHub.shulkerscript.hoelting.dev · read 4 Oct 2026
- Distribution
- The CLI can create a ZIP archive of a compiled project with `shulkerscript build --zip`.shulkerscript.hoelting.dev · read 7 Oct 2026
- Editor integration
- The official Visual Studio Code extension provides syntax highlighting and snippets for Shulkerscript files.shulkerscript.hoelting.dev · read 7 Oct 2026
- Functions
- A single source file can generate multiple function files that can be called from Minecraft or other Shulkerscript files.shulkerscript.hoelting.dev · read 7 Oct 2026
- Install platforms
- The installation guide provides instructions for Windows, Linux, and macOS.shulkerscript.hoelting.dev · read 4 Oct 2026
- Language features
- The language supports functions, imports, tags, conditional statements, execute blocks, and Lua code embedded in scripts.shulkerscript.hoelting.dev · read 7 Oct 2026
- Lua integration status
- The documentation labels its Lua Integration reference as work in progress.shulkerscript.hoelting.dev · read 7 Oct 2026
- Minecraft-specific behavior
- Functions annotated with `#[tick]` can run every tick, and functions annotated with `#[load]` can run when a data pack is loaded.shulkerscript.hoelting.dev · read 4 Oct 2026
- Output limitation
- The syntax guide says at least one function must be annotated with `tick`, `load`, or `deobfuscate`, or no `.mcfunction` files will be generated.shulkerscript.hoelting.dev · read 4 Oct 2026
- Packaging limit
- At least one function must have a `tick`, `load`, or `deobfuscate` annotation for `.mcfunction` files to be generated.shulkerscript.hoelting.dev · read 7 Oct 2026
- Playground
- An online playground lets users try Shulkerscript in a browser without installing the CLI.shulkerscript.hoelting.dev · read 7 Oct 2026
- Project maturity
- The documentation labels the playground and Lua integration as work in progress.shulkerscript.hoelting.dev · read 4 Oct 2026
- Project setup
- Running `shulkerscript init` creates a project containing a `src` directory, `pack.toml`, and other starter files.shulkerscript.hoelting.dev · read 7 Oct 2026