mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-28 05:43:43 +01:00
More fixes
This commit is contained in:
parent
bb29dade32
commit
1a2b9e5930
@ -21,65 +21,71 @@ def convert_standard_textures(
|
|||||||
output_dir_name,
|
output_dir_name,
|
||||||
mineclone2_path,
|
mineclone2_path,
|
||||||
PXSIZE):
|
PXSIZE):
|
||||||
failed_conversions = 0
|
failed_conversions = 0
|
||||||
with open("Conversion_Table.csv", newline="") as csvfile:
|
with open("Conversion_Table.csv", newline="") as csvfile:
|
||||||
reader = csv.reader(csvfile, delimiter=",", quotechar='"')
|
reader = csv.reader(csvfile, delimiter=",", quotechar='"')
|
||||||
first_row = True
|
first_row = True
|
||||||
for row in reader:
|
for row in reader:
|
||||||
# Skip first row
|
# Skip first row
|
||||||
if first_row:
|
if first_row:
|
||||||
first_row = False
|
first_row = False
|
||||||
continue
|
continue
|
||||||
src_dir = row[0]
|
src_dir = row[0]
|
||||||
src_filename = row[1]
|
src_filename = row[1]
|
||||||
dst_dir = './textures'
|
dst_dir = './textures'
|
||||||
dst_filename = row[2]
|
dst_filename = row[2]
|
||||||
if row[4] != "":
|
if row[4] != "":
|
||||||
xs = int(row[3])
|
xs = int(row[3])
|
||||||
ys = int(row[4])
|
ys = int(row[4])
|
||||||
xl = int(row[5])
|
xl = int(row[5])
|
||||||
yl = int(row[6])
|
yl = int(row[6])
|
||||||
xt = int(row[7])
|
xt = int(row[7])
|
||||||
yt = int(row[8])
|
yt = int(row[8])
|
||||||
else:
|
else:
|
||||||
xs = None
|
xs = None
|
||||||
blacklisted = row[9]
|
blacklisted = row[9]
|
||||||
|
|
||||||
if blacklisted == "y":
|
if blacklisted == "y":
|
||||||
# Skip blacklisted files
|
# Skip blacklisted files
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if make_texture_pack == False and dst_dir == "":
|
if make_texture_pack == False and dst_dir == "":
|
||||||
# If destination dir is empty, this texture is not supposed to be used in MCL2
|
# If destination dir is empty, this texture is not supposed to be used in MCL2
|
||||||
# (but maybe an external mod). It should only be used in texture packs.
|
# (but maybe an external mod). It should only be used in texture packs.
|
||||||
# Otherwise, it must be ignored.
|
# Otherwise, it must be ignored.
|
||||||
# Example: textures for mcl_supplemental
|
# Example: textures for mcl_supplemental
|
||||||
continue
|
continue
|
||||||
|
|
||||||
src_file = base_dir + src_dir + "/" + src_filename # source file
|
src_file = base_dir + src_dir + "/" + src_filename # source file
|
||||||
src_file_exists = os.path.isfile(src_file)
|
src_file_exists = os.path.isfile(src_file)
|
||||||
dst_file = target_dir(dst_dir, make_texture_pack, output_dir, output_dir_name,
|
dst_file = target_dir(dst_dir, make_texture_pack, output_dir, output_dir_name,
|
||||||
mineclone2_path) + "/" + dst_filename # destination file
|
mineclone2_path) + "/" + dst_filename # destination file
|
||||||
|
|
||||||
if src_file_exists == False:
|
if src_file_exists == False:
|
||||||
print("WARNING: Source file does not exist: " + src_file)
|
print("WARNING: Source file does not exist: " + src_file)
|
||||||
failed_conversions = failed_conversions + 1
|
failed_conversions = failed_conversions + 1
|
||||||
continue
|
continue
|
||||||
|
if xs != None:
|
||||||
if xs != None:
|
# Crop and copy images
|
||||||
# Crop and copy images
|
if not dry_run:
|
||||||
if not dry_run:
|
crop_width = int(xl)
|
||||||
os.system("convert " + src_file + " -crop " + xl +
|
crop_height = int(yl)
|
||||||
"x" + yl + "+" + xs + "+" + ys + " " + dst_file)
|
offset_x = int(xs)
|
||||||
if verbose:
|
offset_y = int(ys)
|
||||||
print(src_file + " → " + dst_file)
|
with Image(filename=src_file) as img:
|
||||||
else:
|
# Crop the image
|
||||||
|
img.crop(left=offset_x, top=offset_y, width=crop_width, height=crop_height)
|
||||||
|
# Save the result
|
||||||
|
img.save(filename=dst_file)
|
||||||
|
if verbose:
|
||||||
|
print(src_file + " → " + dst_file)
|
||||||
|
else:
|
||||||
# Copy image verbatim
|
# Copy image verbatim
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
shutil.copy2(src_file, dst_file)
|
shutil.copy2(src_file, dst_file)
|
||||||
if verbose:
|
if verbose:
|
||||||
print(src_file + " → " + dst_file)
|
print(src_file + " → " + dst_file)
|
||||||
return failed_conversions
|
return failed_conversions
|
||||||
|
|
||||||
|
|
||||||
def convert_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE):
|
def convert_textures(make_texture_pack, dry_run, verbose, base_dir, tex_dir, tempfile1, tempfile2, output_dir, output_dir_name, mineclone2_path, PXSIZE):
|
||||||
|
@ -202,31 +202,26 @@ def convert_armor_textures(
|
|||||||
|
|
||||||
if os.path.isfile(layer_2):
|
if os.path.isfile(layer_2):
|
||||||
leggings = adir + "/" + a[5]
|
leggings = adir + "/" + a[5]
|
||||||
os.system("convert -size " +
|
with Image(width=APXSIZE * 4, height=APXSIZE * 2, background=Color('none')) as img:
|
||||||
str(APXSIZE *
|
with Image(filename=layer_2) as layer2:
|
||||||
4) +
|
# Scale the image
|
||||||
"x" +
|
layer2.resize(APXSIZE * 4, APXSIZE * 2)
|
||||||
str(APXSIZE *
|
|
||||||
2) +
|
# Apply geometry and crop
|
||||||
" xc:none \\( " +
|
crop_width = int(APXSIZE * 2.5)
|
||||||
layer_2 +
|
crop_height = APXSIZE
|
||||||
" -scale " +
|
crop_x = 0
|
||||||
str(APXSIZE *
|
crop_y = APXSIZE
|
||||||
4) +
|
layer2.crop(left=crop_x, top=crop_y, width=crop_width, height=crop_height)
|
||||||
"x" +
|
|
||||||
str(APXSIZE *
|
# Composite the cropped image over the transparent image
|
||||||
2) +
|
img.composite(layer2, 0, APXSIZE)
|
||||||
" -geometry +0+" +
|
|
||||||
str(APXSIZE) +
|
# Apply channel operation
|
||||||
" -crop " +
|
img.fx("a > 0.0 ? 1.0 : 0.0", channel='alpha')
|
||||||
str(APXSIZE *
|
|
||||||
2.5) +
|
# Save the result
|
||||||
"x" +
|
img.save(filename=leggings)
|
||||||
str(APXSIZE) +
|
|
||||||
"+0+" +
|
|
||||||
str(APXSIZE) +
|
|
||||||
" \\) -composite -channel A -fx \"(a > 0.0) ? 1.0 : 0.0\" " +
|
|
||||||
leggings)
|
|
||||||
|
|
||||||
# Convert chest textures
|
# Convert chest textures
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user