#!/usr/bin/env python3 import shutil import sys from PIL import Image MATERIALS = [ 'acacia', 'bamboo', 'birch', 'cherry', 'crimson', 'dark_oak', 'jungle', 'mangrove', 'oak', 'pale_oak', 'spruce', 'warped', ] in_dir = sys.argv[1] out_dir = sys.argv[2] def sign_bg_image(material): in_path = f'{in_dir}/assets/minecraft/textures/entity/signs/{material}.png' out_path = f'{out_dir}/bg/{material}_sign.png' out_path_wall = f'{out_dir}/bg/{material}_wall_sign.png' in_image = Image.open(in_path) out_image = Image.new('RGBA', (24, 26)) out_image.paste(in_image.crop((2, 2, 26, 14)), (0, 0)) out_image.paste(in_image.crop((2, 16, 4, 30)), (11, 12)) out_image.save(out_path) out_image = Image.new('RGBA', (24, 12)) out_image.paste(in_image.crop((2, 2, 26, 14)), (0, 0)) out_image.save(out_path_wall) def hanging_sign_bg_image(material): in_path = f'{in_dir}/assets/minecraft/textures/gui/hanging_signs/{material}.png' out_path = f'{out_dir}/bg/{material}_hanging_sign.png' out_path_wall = f'{out_dir}/bg/{material}_hanging_wall_sign.png' in_image = Image.open(in_path) out_image = Image.new('RGBA', (16, 14)) out_image.paste(in_image.crop((0, 2, 16, 16)), (0, 0)) out_image.save(out_path) shutil.copyfile(in_path, out_path_wall) def sign_icon_image(material): in_path = f'{in_dir}/assets/minecraft/textures/item/{material}_sign.png' out_path = f'{out_dir}/icon/{material}_sign.png' out_path_wall = f'{out_dir}/icon/{material}_wall_sign.png' in_image = Image.open(in_path) out_image = Image.new('RGBA', (13, 14)) out_image.paste(in_image.crop((2, 2, 15, 16)), (0, 0)) out_image.save(out_path) out_image = Image.new('RGBA', (13, 9)) out_image.paste(in_image.crop((2, 2, 15, 11)), (0, 0)) out_image.save(out_path_wall) def hanging_sign_icon_image(material): in_path = f'{in_dir}/assets/minecraft/textures/item/{material}_hanging_sign.png' out_path = f'{out_dir}/icon/{material}_hanging_sign.png' out_path_wall = f'{out_dir}/icon/{material}_hanging_wall_sign.png' in_image = Image.open(in_path) out_image = Image.new('RGBA', (14, 12)) out_image.paste(in_image.crop((1, 3, 15, 15)), (0, 0)) out_image.save(out_path) out_image = Image.new('RGBA', (14, 14)) out_image.paste(in_image.crop((1, 1, 15, 15)), (0, 0)) out_image.save(out_path_wall) for material in MATERIALS: sign_bg_image(material) hanging_sign_bg_image(material) sign_icon_image(material) hanging_sign_icon_image(material)