forked from MineClone5/MineClone5
This is now a python libary for the gui script
This commit is contained in:
parent
bce95a3ddc
commit
cb3572fc24
|
@ -11,15 +11,27 @@ __status__ = "Development"
|
|||
import shutil, csv, os, tempfile, sys, getopt
|
||||
|
||||
# Helper vars
|
||||
home = os.environ["HOME"]
|
||||
mineclone2_path = home + "/.minetest/games/mineclone2"
|
||||
working_dir = os.getcwd()
|
||||
|
||||
initial_path = os.getcwd()
|
||||
|
||||
mineclone2_path = str(os.pardir)
|
||||
|
||||
os.chdir(os.pardir) # could be done with for i in range(1,3)
|
||||
os.chdir(os.pardir)
|
||||
os.chdir(os.pardir)
|
||||
print(str(os.getcwd))
|
||||
os.chdir("textures")
|
||||
|
||||
|
||||
working_dir =str(os.getcwd())
|
||||
|
||||
print(working_dir)
|
||||
appname = "Texture_Converter.py"
|
||||
|
||||
### SETTINGS ###
|
||||
output_dir = working_dir
|
||||
|
||||
base_dir = None
|
||||
|
||||
|
||||
|
||||
# If True, will only make console output but not convert anything.
|
||||
dry_run = False
|
||||
|
@ -31,124 +43,66 @@ make_texture_pack = True
|
|||
# If True, prints all copying actions
|
||||
verbose = False
|
||||
|
||||
PXSIZE = 16
|
||||
|
||||
syntax_help = appname+""" -i <input dir> [-o <output dir>] [-d] [-v|-q] [-h]
|
||||
Mandatory argument:
|
||||
-i <input directory>
|
||||
Directory of Minecraft resource pack to convert
|
||||
|
||||
Optional arguments:
|
||||
-p <texture size>
|
||||
Specify the size (in pixels) of the original textures (default: 16)
|
||||
-o <output directory>
|
||||
Directory in which to put the resulting Minetest texture pack
|
||||
(default: working directory)
|
||||
-d
|
||||
Just pretend to convert textures and just print output, but do not actually
|
||||
change any files.
|
||||
-v
|
||||
Print out all copying actions
|
||||
-h
|
||||
Show this help and exit"""
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:],"hi:o:p:dv")
|
||||
except getopt.GetoptError:
|
||||
print(
|
||||
"""ERROR! The options you gave me make no sense!
|
||||
|
||||
Here's the syntax reference:""")
|
||||
print(syntax_help)
|
||||
sys.exit(2)
|
||||
for opt, arg in opts:
|
||||
if opt == "-h":
|
||||
print(
|
||||
"""This is the official MineClone 2 Texture Converter.
|
||||
This will convert textures from Minecraft resource packs to
|
||||
a Minetest texture pack.
|
||||
|
||||
Supported Minecraft version: 1.12 (Java Edition)
|
||||
|
||||
Syntax:""")
|
||||
print(syntax_help)
|
||||
sys.exit()
|
||||
elif opt == "-d":
|
||||
dry_run = True
|
||||
elif opt == "-v":
|
||||
verbose = True
|
||||
elif opt == "-i":
|
||||
base_dir = arg
|
||||
elif opt == "-o":
|
||||
output_dir = arg
|
||||
elif opt == "-p":
|
||||
PXSIZE = int(arg)
|
||||
|
||||
if base_dir == None:
|
||||
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> -p <texture size>
|
||||
|
||||
For the full help, use:
|
||||
"""+appname+""" -h""")
|
||||
sys.exit(2);
|
||||
|
||||
### END OF SETTINGS ###
|
||||
|
||||
tex_dir = base_dir + "/assets/minecraft/textures"
|
||||
|
||||
print(
|
||||
"""What is the Minecraft Version the resource pack is intended for
|
||||
1: 1.12 and below
|
||||
2: 1.13 and above
|
||||
""")
|
||||
version = input("Please enter 1 or 2: ")
|
||||
|
||||
Conversion_Table = ""
|
||||
Conversion_Table = None
|
||||
|
||||
if version != "1" and version != "2":
|
||||
print("Invalid Input, please restart the script and enter 1 or 2!")
|
||||
sys.exit(2)
|
||||
else:
|
||||
if version == "1":
|
||||
Conversion_Table = "Conversion_Table_112.csv"
|
||||
else:
|
||||
print("WARNING: 1.18 Textures can break when loaded in Mineclone, do you wish to continue (y/n): ")
|
||||
if input("Enter y for yes ir n for no: ") == "y":
|
||||
Conversion_Table = "Conversion_Table_118.csv"
|
||||
else:
|
||||
print("Stopped by user")
|
||||
sys.exit(2)
|
||||
def init(mcversion, path, pixels, name):
|
||||
global Conversion_Table
|
||||
|
||||
if mcversion == 1:
|
||||
Conversion_Table = str(initial_path) + "/Conversion_Table_112.csv"
|
||||
if mcversion == 2:
|
||||
Conversion_Table = str(initial_path) + "/Conversion_Table_118.csv"
|
||||
|
||||
global PXSIZE
|
||||
global base_dir
|
||||
global output_dir
|
||||
global tex_dir
|
||||
|
||||
PXSIZE = pixels
|
||||
base_dir = path
|
||||
output_dir = working_dir + "/"+name
|
||||
tex_dir = base_dir + "/assets/minecraft/textures"
|
||||
|
||||
# Get texture pack name (from directory name)
|
||||
bdir_split = base_dir.split("/")
|
||||
output_dir_name = bdir_split[-1]
|
||||
if len(output_dir_name) == 0:
|
||||
def convertit():
|
||||
if os.path.isdir(output_dir) == False:
|
||||
os.mkdir(output_dir)
|
||||
if Conversion_Table == None:
|
||||
return("error")
|
||||
sys.exit(4)
|
||||
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"
|
||||
|
||||
# FUNCTION DEFINITIONS
|
||||
def colorize(colormap, source, colormap_pixel, texture_size, destination):
|
||||
# FUNCTION DEFINITIONS
|
||||
def colorize(colormap, source, colormap_pixel, texture_size, destination):
|
||||
os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 -resize "+texture_size+"x"+texture_size+" "+tempfile1.name)
|
||||
os.system("composite -compose Multiply "+tempfile1.name+" "+source+" "+destination)
|
||||
|
||||
def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination):
|
||||
def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination):
|
||||
colorize(colormap, source, colormap_pixel, texture_size, tempfile2.name)
|
||||
os.system("composite -compose Dst_In "+source+" "+tempfile2.name+" -alpha Set "+destination)
|
||||
|
||||
def target_dir(directory):
|
||||
def target_dir(directory):
|
||||
if make_texture_pack:
|
||||
return output_dir + "/" + output_dir_name
|
||||
return output_dir + "/"
|
||||
else:
|
||||
return mineclone2_path + directory
|
||||
|
||||
# Copy texture files
|
||||
def convert_textures():
|
||||
# Copy texture files
|
||||
def convert_textures():
|
||||
failed_conversions = 0
|
||||
print("Texture conversion BEGINS NOW!")
|
||||
with open(Conversion_Table, newline="") as csvfile:
|
||||
|
@ -264,24 +218,24 @@ def convert_textures():
|
|||
back = cdir + "/" + c[7]
|
||||
# Top
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+top)
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+top)
|
||||
# Bottom
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX*2)+"+"+str(CHPX+LIDPX)+" \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+bottom)
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX*2)+"+"+str(CHPX+LIDPX)+" \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+bottom)
|
||||
# Front
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+front)
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+front)
|
||||
# TODO: Add lock
|
||||
|
||||
# Left, right back (use same texture, we're lazy
|
||||
files = [ left, right, back ]
|
||||
for f in files:
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+f)
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+f)
|
||||
|
||||
# Double chests
|
||||
|
||||
|
@ -306,18 +260,18 @@ def convert_textures():
|
|||
side = cdir + "/" + c[4]
|
||||
# Top
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX2)+"x"+str(CHPX)+" "+top)
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX2)+"x"+str(CHPX)+" "+top)
|
||||
# Front
|
||||
# TODO: Add lock
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX2)+"x"+str(CHPX)+" "+front)
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDPX)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX2)+"x"+str(LIDLOW)+"+"+str(CHPX)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX2)+"x"+str(CHPX)+" "+front)
|
||||
# Side
|
||||
os.system("convert " + chest_file + " \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+side)
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDPX)+"+"+str(0)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \
|
||||
\( -clone 0 -crop "+str(CHPX)+"x"+str(LIDLOW)+"+"+str(0)+"+"+str(CHPX*2+LIDPX)+" \) -geometry +0+"+str(LIDPX-PPX)+" -composite \
|
||||
-extent "+str(CHPX)+"x"+str(CHPX)+" "+side)
|
||||
|
||||
|
||||
# Generate railway crossings and t-junctions. Note: They may look strange.
|
||||
|
@ -484,14 +438,12 @@ def convert_textures():
|
|||
if make_texture_pack:
|
||||
print("You can now retrieve the texture pack in "+output_dir+"/"+output_dir_name+"/")
|
||||
|
||||
# ENTRY POINT
|
||||
if make_texture_pack and not os.path.isdir(output_dir+"/"+output_dir_name):
|
||||
os.mkdir(output_dir+"/"+output_dir_name)
|
||||
# ENTRY POINT
|
||||
|
||||
tempfile1 = tempfile.NamedTemporaryFile()
|
||||
tempfile2 = tempfile.NamedTemporaryFile()
|
||||
tempfile1 = tempfile.NamedTemporaryFile()
|
||||
tempfile2 = tempfile.NamedTemporaryFile()
|
||||
|
||||
convert_textures()
|
||||
convert_textures()
|
||||
|
||||
tempfile1.close()
|
||||
tempfile2.close()
|
||||
tempfile1.close()
|
||||
tempfile2.close()
|
||||
|
|
Loading…
Reference in New Issue