All Projects → mcbeet → beet

mcbeet / beet

Licence: MIT License
The Minecraft pack development kit.

Programming Languages

python
139335 projects - #7 most used programming language
mcfunction
16 projects

Projects that are alternatives of or similar to beet

mecha
A powerful Minecraft command library.
Stars: ✭ 27 (-47.06%)
Mutual labels:  mcfunction, beet, datapack
Mechanization
The Minecraft Technology Based Datapack
Stars: ✭ 105 (+105.88%)
Mutual labels:  mcfunction, datapack
Datapack-Utilities
Some useful functions for the intrepid datapack developer.
Stars: ✭ 90 (+76.47%)
Mutual labels:  mcfunction, datapack
VanillaModTutorial
Minecraft 原版模组入门教程
Stars: ✭ 29 (-43.14%)
Mutual labels:  resourcepack, datapack
Spyglass
Development tools for vanilla Minecraft: Java Edition data pack developers.
Stars: ✭ 163 (+219.61%)
Mutual labels:  mcfunction, datapack
VSCode-Bedrock-Development-Extension
An extension that provides support for files such as: .mcfunction, .json and .lang. Features include: completion, validations, formatters, diagnostics, cheat-sheets, code-actions, generation of files, and development tools to help develop Minecraft Bedrock Addons or Minecraft Education Edition.
Stars: ✭ 45 (-11.76%)
Mutual labels:  resourcepack, mcfunction
Allomancy
Brandon Sanderson's Allomancy, now in Minecraft
Stars: ✭ 18 (-64.71%)
Mutual labels:  minecraft
BTW-Public
Community repository for the BTW CE mod
Stars: ✭ 16 (-68.63%)
Mutual labels:  minecraft
anticope.ml
Welcome to the AntiCope Website! Here you can find a list of free and open-source Meteor Client addons as well as other client-side Fabric Minecraft mods.
Stars: ✭ 39 (-23.53%)
Mutual labels:  minecraft
HyCord
HyCord is a minecraft mod that aims for discord and hypixel integration
Stars: ✭ 28 (-45.1%)
Mutual labels:  minecraft
minicraft
SEU CS Computer Graphics Course Design: a Minecraft-like game based on openGL
Stars: ✭ 25 (-50.98%)
Mutual labels:  minecraft
BlockTuner
A Minecraft data pack which helps you tune note blocks
Stars: ✭ 18 (-64.71%)
Mutual labels:  minecraft
AutoSaveWorld
Bukkit plugin that provides advanced bukkit server management capabilities. Supports automatic saves, backups, stale data purge, plugin management, and more.
Stars: ✭ 31 (-39.22%)
Mutual labels:  minecraft
FrogCraft-Rebirth
A standalone rewrite of FrogCraft, an IC2 Addon with theme of chemical industry, starting from scratch.
Stars: ✭ 27 (-47.06%)
Mutual labels:  minecraft
BedrockProxy
Allow Minecraft Bedrock players on your BungeeCord server!
Stars: ✭ 16 (-68.63%)
Mutual labels:  minecraft
minecraft-lambda-function
AWS Lambda function for managing Minecraft server
Stars: ✭ 37 (-27.45%)
Mutual labels:  minecraft
Loot-Slash-Conquer-Pre1.14
An immersive, action-RPG mod based on Hack/Mine.
Stars: ✭ 17 (-66.67%)
Mutual labels:  minecraft
roboserver
Control OpenComputers robots without writing any code!
Stars: ✭ 52 (+1.96%)
Mutual labels:  minecraft
picraft
An alternate Python Minecraft API for the Raspberry Pi
Stars: ✭ 49 (-3.92%)
Mutual labels:  minecraft
UHC
UHC plugin for Minecraft: Bedrock Edition.
Stars: ✭ 23 (-54.9%)
Mutual labels:  minecraft

logo

Beet

GitHub Actions PyPI PyPI - Python Version Code style: black Discord

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

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 pytest integration 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

The package can be installed with pip.

$ pip install beet

To create and edit images programmatically you should install beet with the image extra or install Pillow separately.

$ pip install beet[image]
$ pip install beet Pillow

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:
  -d, --directory DIRECTORY  Use the specified project directory.
  -c, --config FILE          Use the specified config file.
  -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 poetry.

$ poetry install --extras image

You can run the tests with poetry run pytest. We use pytest-minecraft to run tests against actual Minecraft releases.

$ poetry run pytest
$ poetry 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.

$ poetry run pytest --insta review

The project must type-check with pyright. If you're using VSCode the pylance extension should report diagnostics automatically. You can also install the type-checker locally with npm install and run it from the command-line.

$ npm run watch
$ npm run check

The code follows the black code style. Import statements are sorted with isort.

$ poetry run isort beet tests
$ poetry run black beet tests
$ poetry run black --check beet tests

License - MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].