The Minecraft pack development kit
Project description
Beet
The Minecraft pack development kit.
Introduction
Minecraft resource packs and data packs work well as distribution formats but can be pretty limiting as authoring formats. You can quickly end up having to manage hundreds of files, some of which might be buried within the bundled output of various generators.
The beet project is a development kit that tries to unify data pack and resource pack tooling into a single pipeline. The community is always coming up with pre-processors, frameworks, and generators of all kinds to make the developer experience more ergonomic. With beet you can seamlessly integrate all these tools in your project.
Screencasts
- Quick start https://youtu.be/JGrJTOhG3pY
- Command-line https://youtu.be/fQ9up0ELPNE
- Library overview https://youtu.be/LDvV4_l-PSc
- Plugins basics https://youtu.be/XTzKmvHqd1g
- Pipeline configuration https://youtu.be/QsnQncGxAAs
Library
from beet import ResourcePack, Texture
# Open a zipped resource pack and add a custom stone texture
with ResourcePack(path="stone.zip") as assets:
assets["minecraft:block/stone"] = Texture(source_path="custom.png")
The beet library provides carefully crafted primitives for working with Minecraft resource packs and data packs.
- Create, read, edit and merge resource packs and data packs
- Handle zipped and unzipped packs
- Fast and lazy by default, files are transparently loaded when needed
- Statically typed API enabling rich intellisense and autocompletion
- First-class
pytestintegration with detailed assertion explanations
Toolchain
from beet import Context, Function
def greet(ctx: Context):
"""Plugin that adds a function for greeting the player."""
ctx.data["greet:hello"] = Function(["say hello"], tags=["minecraft:load"])
The beet toolchain is designed to support a wide range of use-cases. The most basic pipeline will let you create configurable resource packs and data packs, but plugins make it easy to implement arbitrarily advanced workflows and tools like linters, asset generators and function pre-processors.
- Compose plugins that can inspect and edit the generated resource pack and data pack
- Configure powerful build systems for development and creating releases
- First-class template integration approachable without prior Python knowledge
- Link the generated resource pack and data pack to Minecraft
- Automatically rebuild the project on file changes with watch mode
- Batteries-included package that comes with a few handy plugins out of the box
- Rich ecosystem, extensible CLI, and powerful generator and worker API
Installation
We recommend uv (https://github.com/astral-sh/uv#installation). With uv installed, you can try beet by running uvx beet. You can also install beet as a global tool on your machine.
$ uv tool install beet
If you see the message
warning: ... is not on your PATH, you'll need to add the specified directory to your global path to invokebeetdirectly instead of usinguvx beet.
You can make sure that beet was successfully installed by trying to use the toolchain from the command-line.
$ beet --help
Usage: beet [OPTIONS] COMMAND [ARGS]...
The beet toolchain.
Options:
-p, --project PATH Select project.
-s, --set OPTION Set config option.
-l, --log LEVEL Configure output verbosity.
-v, --version Show the version and exit.
-h, --help Show this message and exit.
Commands:
build Build the current project.
cache Inspect or clear the cache.
link Link the generated resource pack and data pack to Minecraft.
watch Watch the project directory and build on file changes.
Contributing
Contributions are welcome. Make sure to first open an issue discussing the problem or the new feature before creating a pull request. The project uses uv.
$ uv sync
You can run the tests with uv run pytest. We use pytest-minecraft to run tests against actual Minecraft releases.
$ uv run pytest
$ uv run pytest --minecraft-latest
We also use pytest-insta for snapshot testing. Data pack and resource pack snapshots make it easy to monitor and review changes.
$ uv run pytest --insta review
The code is formatted and checked with ruff.
$ uv run ruff format
$ uv run ruff check
License - MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beet-0.114.0.tar.gz.
File metadata
- Download URL: beet-0.114.0.tar.gz
- Upload date:
- Size: 95.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31b297bb285b63bf6b2d1eb5cacae392ed3131b0cb85c326b0567fdd54e00cbe
|
|
| MD5 |
cfaa12eb8634d74ed0937efd35d66b9d
|
|
| BLAKE2b-256 |
4787f26ad4aa3b4a7c91c2f060aab9eab098e0361cd72b0d92e34cbe16002daa
|
File details
Details for the file beet-0.114.0-py3-none-any.whl.
File metadata
- Download URL: beet-0.114.0-py3-none-any.whl
- Upload date:
- Size: 125.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35b553b55a164dc99162195ef7211590c6d94ffcb6189a88dc09569165a14df9
|
|
| MD5 |
29f200cfdf8168740fba5e540d8e4ac1
|
|
| BLAKE2b-256 |
4ec0b7bd256b98b353c088d1cc407f82f277ff9888d79661ef0337c2105fc1c7
|