Skip to main content

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

block_wrangler-0.0.6.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

block_wrangler-0.0.6-py3-none-any.whl (119.1 kB view details)

Uploaded Python 3

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

Hashes for block_wrangler-0.0.6.tar.gz
Algorithm Hash digest
SHA256 2b6afb7e916cb6d316ef9d764923896d318dc0b80b44d013feb00062a712a152
MD5 c372a7887bfb279d8961d25ff29299f1
BLAKE2b-256 e035690187b77e7e0b30e5f7407cceb3f385dee221409cf8712b6b0d2d3998db

See more details on using hashes here.

File details

Details for the file block_wrangler-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for block_wrangler-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 3b299db65be0cc93ae3340dce9aebcaf1682982b2230f94ebe000d26f0fc2b93
MD5 db06b00331dbf6801f1a9c3d3aa1ec16
BLAKE2b-256 2cd797df9fcf099221c78de7614addfc17407d93fa85502f959383dff7b63ff8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page