A library for generating the texture of Minecraft's Totem of Undying
Project description
wavy-totem-lib
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
- Supports PyPy
- Supports different styles
Requirements
- python >= 3.8
- Pillow >= 10.0.0
Installing
- Using poetry:
poetry add wavy-totem-lib
- Using pip:
pip install wavy-totem-lib
Examples
- Quick generation:
from wavy_totem_lib import TotemBuilder, Skin, Totem, TopLayers
builder = TotemBuilder(
Skin('my_skin.png'),
top_layers=[TopLayers.HEAD], # the second layer will be applied only to the head
round_head=True # the head will be rounded at the corners
)
totem: Totem = builder.build()
totem.image.save('totem.png') # .image is Pillow image
- Generation and scaling:
from wavy_totem_lib import TotemBuilder, Skin, Totem, TopLayers
builder = TotemBuilder(Skin('my_skin.png', slim=True))
totem: Totem = builder.build()
scaled = totem.scale(factor=8) # Scaling from 16×16 to 128×128
scaled.save('totem.png')
[!NOTE] To scale up, use the built-in
scale
method instead ofraw.resize
from Pillow, because it may blur the image.
- Asynchronous generation:
import asyncio
import aiofiles # This package must be installed
from io import BytesIO
from wavy_totem_lib import TotemBuilder, Skin, Totem, TopLayers
async def main():
builder = TotemBuilder(Skin('my_skin.png', slim=False),
top_layers=[TopLayers.HEAD, TopLayers.HANDS],
round_head=True)
totem: Totem = await builder.build_async()
temp = BytesIO()
totem.image.save(temp, format='png')
async with aiofiles.open('totem.png', 'wb') as f:
await f.write(temp.getvalue())
asyncio.run(main())
- Specifying a style
from wavy_totem_lib import TotemBuilder, Skin, Totem, STTStyle
# WavyStyle (default), STTStyle available built-in
builder = TotemBuilder(Skin('my_skin.png'), style=STTStyle)
totem: Totem = builder.build()
totem.image.save('totem.png')
[!NOTE] The
generate()
method accepts **kwargs, which will be passed on to the style class. None of the built-in styles support them.
STTStyle taken from https://github.com/UnFamousSoul/STT
Styles
[!IMPORTANT] You can create your own styles by inheriting the
AbstractStyle
class and implementing theimage
property.
Wavy
Created by @wavy-cat.
Class name: WavyStyle
.
This is the default style in TotemBuilder.
Basil | Sylphiette | PWGood |
---|---|---|
from wavy_totem_lib import TotemBuilder, WavyStyle
TotemBuilder(style=WavyStyle)
# You can also not specify style at all, because WavyStyle - default style
STT
Created by @UnFamousSoul.
The code is taken from the UnFamousSoul/STT repository.
Class name: STTStyle
.
Basil | Sylphiette | PWGood |
---|---|---|
from wavy_totem_lib import TotemBuilder, STTStyle
TotemBuilder(style=STTStyle)
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
Hashes for wavy_totem_lib-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 651eecf3ca53a351763d637c44f6e5cb5ac0994d283898f3000d35c5b3fd40c5 |
|
MD5 | 203c7e5ebe003f266365acbe53585062 |
|
BLAKE2b-256 | 162f7b136a2c081a991014cf95d4ccc6122fa2d29d926ac7d9f3ce2d48be9839 |