No project description provided
Project description
Block Wrangler
A Python library to help Minecraft shader developers deal with block IDs.
It allows shader developers to define "flags" that block states can have, and the script will generate both a block.properties file and corresponding GLSL functions to allow those flags to be used directly in shaders.
It includes all Vanilla blocks and tags, as well as a few custom categories that are commonly used in shaders, and automatically enforces that numerical block IDs are both complete and mutually exclusive.
Installation
pip install block-wrangler
Usage
Below is a simple example of how to use the library. More complete documentation is coming soon.
from block_wrangler import *
from pathlib import Path
shaderpack_root = Path(__file__).parent
def main():
tags = load_tags()
mapping = BlockMapping.solve({
'sway': tags['sway'],
'sway_bottom': tags['sway/lower'] + tags['sway/short'], # Tags can be combined with the +, -, and & operators
'crops': tags['minecraft:crops'], # Vanilla tags are included
'water': blocks('minecraft:water') # Individual blocks can also be referenced by name
})
with shaderpack_root.joinpath('shaders/block.properties').open('w') as f:
f.write(mapping.render_encoder())
with shaderpack_root.joinpath('shaders/util/block_properties.glsl').open('w') as f:
f.write(mapping.render_decoder())
print('Done!')
if __name__ == '__main__':
main()
Core Concepts
The block_wrangler library uses a few main concepts:
Block Types
These represent the different types of blocks that can be found in Minecraft, and all of their properties.
Tags
Tags generate a semantically meaningful group of block states that can be used to define flags.
The library comes with all Vanilla tags, and a few more that are commonly used in shaders.
They can use other tags in their definitions, and their actual contents are calculated on demand.
Block Collections
These are a more concrete representation of a group of block states. Tags can create them, or you can define them manually.
Mappings
Mappings store the actual numeric IDs that go into your block.properties file.
Project details
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
File details
Details for the file block_wrangler-0.0.6.tar.gz
.
File metadata
- Download URL: block_wrangler-0.0.6.tar.gz
- Upload date:
- Size: 51.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b6afb7e916cb6d316ef9d764923896d318dc0b80b44d013feb00062a712a152 |
|
MD5 | c372a7887bfb279d8961d25ff29299f1 |
|
BLAKE2b-256 | e035690187b77e7e0b30e5f7407cceb3f385dee221409cf8712b6b0d2d3998db |
File details
Details for the file block_wrangler-0.0.6-py3-none-any.whl
.
File metadata
- Download URL: block_wrangler-0.0.6-py3-none-any.whl
- Upload date:
- Size: 119.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b299db65be0cc93ae3340dce9aebcaf1682982b2230f94ebe000d26f0fc2b93 |
|
MD5 | db06b00331dbf6801f1a9c3d3aa1ec16 |
|
BLAKE2b-256 | 2cd797df9fcf099221c78de7614addfc17407d93fa85502f959383dff7b63ff8 |