mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 10:31:06 +01:00
Seperated common convert code from CLI and GUI so they can both use it
This commit is contained in:
parent
2904e3119f
commit
16cdc9fd12
3 changed files with 30 additions and 104 deletions
|
@ -1,110 +1,42 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Texture Converter.
|
# cli.py
|
||||||
# Converts Minecraft resource packs to Minetest texture packs.
|
|
||||||
# See README.md.
|
|
||||||
|
|
||||||
__author__ = "Wuzzy"
|
import argparse
|
||||||
__license__ = "MIT License"
|
import sys
|
||||||
__status__ = "Development"
|
|
||||||
|
|
||||||
import shutil, csv, os, tempfile, sys, argparse, glob
|
|
||||||
from PIL import Image
|
|
||||||
from collections import Counter
|
|
||||||
|
|
||||||
from libtextureconverter.utils import detect_pixel_size, target_dir, colorize, colorize_alpha, handle_default_minecraft_texture, find_all_minecraft_resourcepacks
|
|
||||||
from libtextureconverter.convert import convert_textures
|
|
||||||
from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, mineclone2_path, appname, home
|
|
||||||
from libtextureconverter.gui import main as launch_gui
|
from libtextureconverter.gui import main as launch_gui
|
||||||
|
from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, appname, home
|
||||||
|
from libtextureconverter.utils import handle_default_minecraft_texture, find_all_minecraft_resourcepacks
|
||||||
|
from libtextureconverter.common import convert_resource_packs
|
||||||
|
|
||||||
# Argument parsing
|
def main():
|
||||||
description_text = f"""This is the official MineClone 2 Texture Converter.
|
make_texture_pack = True
|
||||||
This will convert textures from Minecraft resource packs to
|
parser = argparse.ArgumentParser(description=f"This is the official MineClone 2 Texture Converter. This will convert textures from Minecraft resource packs to a Minetest texture pack. Supported Minecraft version: {SUPPORTED_MINECRAFT_VERSION} (Java Edition)")
|
||||||
a Minetest texture pack.
|
|
||||||
|
|
||||||
Supported Minecraft version: {SUPPORTED_MINECRAFT_VERSION} (Java Edition)
|
|
||||||
"""
|
|
||||||
parser = argparse.ArgumentParser(description=description_text)
|
|
||||||
parser.add_argument("-i", "--input", help="Directory of Minecraft resource pack to convert")
|
parser.add_argument("-i", "--input", help="Directory of Minecraft resource pack to convert")
|
||||||
parser.add_argument("-o", "--output", default=working_dir, help="Directory in which to put the resulting Minetest texture pack")
|
parser.add_argument("-o", "--output", default=working_dir, help="Directory in which to put the resulting Minetest texture pack")
|
||||||
parser.add_argument("-p", "--pixelsize", type=int, help="Size (in pixels) of the original textures")
|
parser.add_argument("-p", "--pixel-size", type=int, help="Size (in pixels) of the original textures")
|
||||||
parser.add_argument("-d", "--dry_run", action="store_true", help="Pretend to convert textures without changing any files")
|
parser.add_argument("-d", "--dry-run", action="store_true", help="Pretend to convert textures without changing any files")
|
||||||
parser.add_argument("-v", "--verbose", action="store_true", help="Print out all copying actions")
|
parser.add_argument("-v", "--verbose", action="store_true", help="Print out all copying actions")
|
||||||
parser.add_argument("-def", "--default", action="store_true", help="Use the default Minecraft texture pack")
|
parser.add_argument("-def", "--default", action="store_true", help="Use the default Minecraft texture pack")
|
||||||
parser.add_argument("-a", "--all", action="store_true", help="Convert all known Minecraft texturepacks")
|
parser.add_argument("-a", "--all", action="store_true", help="Convert all known Minecraft texturepacks")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
### SETTINGS ###
|
|
||||||
base_dir = args.input
|
|
||||||
output_dir = args.output
|
|
||||||
PXSIZE = args.pixelsize
|
|
||||||
# If True, will only make console output but not convert anything.
|
|
||||||
dry_run = args.dry_run
|
|
||||||
# If True, prints all copying actions
|
|
||||||
verbose = args.verbose
|
|
||||||
# If True, textures will be put into a texture pack directory structure.
|
|
||||||
# If False, textures will be put into MineClone 2 directories.
|
|
||||||
make_texture_pack = True # Adjust as needed
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
if len(sys.argv) == 1:
|
if len(sys.argv) == 1:
|
||||||
# No arguments supplied, launch the GUI
|
|
||||||
launch_gui()
|
launch_gui()
|
||||||
else:
|
else:
|
||||||
if args.default:
|
|
||||||
base_dir = handle_default_minecraft_texture(home, output_dir)
|
|
||||||
|
|
||||||
if base_dir == None and not args.all:
|
|
||||||
print(
|
|
||||||
"""ERROR: You didn't tell me the path to the Minecraft resource pack.
|
|
||||||
Mind-reading has not been implemented yet.
|
|
||||||
|
|
||||||
Try this:
|
|
||||||
"""+appname+""" -i <path to resource pack>
|
|
||||||
|
|
||||||
For the full help, use:
|
|
||||||
"""+appname+""" -h""")
|
|
||||||
sys.exit(2);
|
|
||||||
|
|
||||||
### END OF SETTINGS ###
|
|
||||||
|
|
||||||
|
|
||||||
resource_packs = []
|
resource_packs = []
|
||||||
|
if args.default:
|
||||||
if args.all:
|
resource_packs.append(handle_default_minecraft_texture(home, args.output))
|
||||||
for resource_path in find_all_minecraft_resourcepacks():
|
elif args.all:
|
||||||
resource_packs.append(resource_path)
|
resource_packs.extend(find_all_minecraft_resourcepacks())
|
||||||
|
elif args.input:
|
||||||
if make_texture_pack and args.input:
|
|
||||||
resource_packs.append(args.input)
|
resource_packs.append(args.input)
|
||||||
|
|
||||||
for base_dir in resource_packs:
|
if not resource_packs:
|
||||||
tex_dir = base_dir + "/assets/minecraft/textures"
|
print(f"ERROR: No valid resource packs specified. Use '{appname} -h' for help.")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
# Get texture pack name (from directory name)
|
convert_resource_packs(resource_packs, args.output, args.pixelsize, args.dry_run, args.verbose, make_texture_pack)
|
||||||
bdir_split = base_dir.split("/")
|
|
||||||
output_dir_name = bdir_split[-1]
|
|
||||||
if len(output_dir_name) == 0:
|
|
||||||
if len(bdir_split) >= 2:
|
|
||||||
output_dir_name = base_dir.split("/")[-2]
|
|
||||||
else:
|
|
||||||
# Fallback
|
|
||||||
output_dir_name = "New_MineClone_2_Texture_Pack"
|
|
||||||
|
|
||||||
# ENTRY POINT
|
if __name__ == "__main__":
|
||||||
if make_texture_pack and not os.path.isdir(output_dir+"/"+output_dir_name):
|
main()
|
||||||
os.mkdir(output_dir+"/"+output_dir_name)
|
|
||||||
|
|
||||||
# If, set to convert all resourcepacks, then autodetect pixel size
|
|
||||||
if args.all:
|
|
||||||
PXSIZE = None
|
|
||||||
|
|
||||||
if PXSIZE is None:
|
|
||||||
PXSIZE = detect_pixel_size(base_dir)
|
|
||||||
tempfile1 = tempfile.NamedTemporaryFile()
|
|
||||||
tempfile2 = tempfile.NamedTemporaryFile()
|
|
||||||
|
|
||||||
convert_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE)
|
|
||||||
|
|
||||||
tempfile1.close()
|
|
||||||
tempfile2.close()
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from libtextureconverter.convert import convert_textures
|
||||||
from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, mineclone2_path, appname, home
|
from libtextureconverter.config import SUPPORTED_MINECRAFT_VERSION, working_dir, mineclone2_path, appname, home
|
||||||
from libtextureconverter.gui import main as launch_gui
|
from libtextureconverter.gui import main as launch_gui
|
||||||
|
|
||||||
def convert_resource_packs(resource_packs, output_dir, PXSIZE):
|
def convert_resource_packs(resource_packs, output_dir, PXSIZE, dry_run, verbose, make_texture_pack):
|
||||||
for base_dir in resource_packs:
|
for base_dir in resource_packs:
|
||||||
print(f"Converting resource pack: {base_dir}")
|
print(f"Converting resource pack: {base_dir}")
|
||||||
|
|
||||||
|
@ -33,13 +33,7 @@ def convert_resource_packs(resource_packs, output_dir, PXSIZE):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Perform the actual conversion
|
# Perform the actual conversion
|
||||||
convert_textures(
|
convert_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2,output_dir, output_dir_name, mineclone2_path, pixel_size)
|
||||||
base_dir=base_dir,
|
|
||||||
tex_dir=tex_dir,
|
|
||||||
temp_files=(tempfile1.name, tempfile2.name),
|
|
||||||
output_dir=output_path,
|
|
||||||
pixel_size=pixel_size
|
|
||||||
)
|
|
||||||
finally:
|
finally:
|
||||||
# Clean up temporary files
|
# Clean up temporary files
|
||||||
tempfile1.close()
|
tempfile1.close()
|
||||||
|
|
Loading…
Reference in a new issue