Skip to main content

Python library to generate totems of undying for Minecraft

Project description

wavy-totem-lib

GitHub repo size GitHub License PyPI - Python Version

Python library to generate totems of undying for Minecraft.

Features

  • Support 64x32 skins
  • Zoning 2 layers and rounding the head
  • Lossless scaling image size
  • Asynchrony support
  • Built-in CLI
  • Supports PyPy

Requirements

  • python >= 3.8
  • Pillow >= 10.0.0

Installing

  • Using poetry: poetry add wavy-totem-lib
  • Using pip: pip install wavy-totem-lib

You can also clone the repository or download and extract the files from the project's ZIP archive into a folder and install the library in your environment (pip install /path/to/lib/folder, poetry add /path/to/lib/folder).

Using CLI

You can use the library without writing code, from the terminal. For help, enter the argument --help or -h (python3 cli.py --help).

usage: cli.py [-h] [--skin-type [{wide,slim,auto}]]
              [--top-layers [{nothing,all,only_head,only_torso,only_hands,head_and_torso,head_and_hands}]]
              [--round-head [ROUND_HEAD]] [--scale [FACTOR]]
              skin_path totem_path

To give an example, the following command opens the skin file my_skin.png and creates a totem by rounding its head and saves it to the file totem.png at 64×64 resolution (4x scaling):

python3 cli.py my_skin.png totem.png --round-head true --scale 4

Parameters

Name Required? Valid values Default Description
skin_path string Path to the skin file
totem_path string Path where to save the finished totem file
--skin-type string (wide, slim, auto) auto Indication of what type of skin is used
--top-layers string (see Enum values in CLI) all Indication of zoning 2 layers
--round-head bool false Should the head be rounded
--scale integer (>0) 1 Image scaling multiplier

Examples

  • Quick generation:
from wavy_totem_lib import TotemBuilder, SkinType, TopLayers

totem = TotemBuilder('my_skin.png', SkinType.AUTO, top_layers=TopLayers.ONLY_HEAD, round_head=True)
totem_image = totem.generate()
totem_image.save('totem.png')
  • Generation and scaling:
from wavy_totem_lib import TotemBuilder, SkinType

totem = TotemBuilder('my_skin.png', SkinType.WIDE)
totem.generate()
totem.scale(factor=8) # Scaling from 16×16 to 128×128
totem.raw.show() # PIL.Image is available in the `raw` variable

[!NOTE] To scale up, use the built-in scale method instead of raw.resize from Pillow, because it may blur the image.

  • Asynchronous generation:
import asyncio
from wavy_totem_lib import AsyncTotemBuilder, SkinType, TopLayers

async def main():
    # Using AsyncTotemBuilder class instead of TotemBuilder
    totem = AsyncTotemBuilder('my_skin.png', SkinType.SLIM, TopLayers.HEAD_AND_HANDS)
    await totem.generate()
    await totem.scale(factor=4) # 64×64
    await totem.save('totem.png') # save() is only available in AsyncTotemBuilder

asyncio.run(main())

[!NOTE] Although generate(), scale() and raw are of type PIL.Image.Image, suitable for saving a file, it is better to use the built-in asynchronous save method instead.

Enum values

SkinType: WIDE, SLIM, AUTO

TopLayers: NOTHING, ALL, ONLY_HEAD, ONLY_TORSO, ONLY_HANDS, HEAD_AND_TORSO, HEAD_AND_HANDS

In CLI

skin-type: wide, slim, auto

top-layers: nothing, all, only_head, only_torso, only_hands, head_and_torso, head_and_hands

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

wavy_totem_lib-1.4.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavy_totem_lib-1.4.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file wavy_totem_lib-1.4.0.tar.gz.

File metadata

  • Download URL: wavy_totem_lib-1.4.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for wavy_totem_lib-1.4.0.tar.gz
Algorithm Hash digest
SHA256 527bd8379598dc51cf444c3924ad1a237f491c8d74f46c580eca2ba549f4294b
MD5 c78dad8bd9e47e1a2718b6e20117c671
BLAKE2b-256 dbe61c83c2546ea90d60bf485c3b3f4d443715d6286b0e29456ee6881824ca0e

See more details on using hashes here.

File details

Details for the file wavy_totem_lib-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: wavy_totem_lib-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for wavy_totem_lib-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06400e0e76faa1eb8a34140def616f9cad9f6e249a6e988bd1e2b1324a8b864d
MD5 5f54962df8e7a584b39b867e1b2c1e06
BLAKE2b-256 087f0d8e869cda6b1c692ffca85cd93883f2025f2dacfc301fbed66b4f58bfdc

See more details on using hashes here.

Supported by

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