import os import shutil import subprocess import requests def parse_versions(file_path): versions = [] with open(file_path, 'r') as file: for line in file: parts = line.strip().split('#') version_description = parts[1] versions.append(version_description) return versions def download_latest_jar(repo_url, jar_directory, jar_name="ResourcePackConverter.jar"): api_url = f"https://api.github.com/repos/{repo_url}/releases" response = requests.get(api_url) response.raise_for_status() releases = response.json() jar_url = None for release in releases: if release['assets']: for asset in release['assets']: if asset['name'] == jar_name: jar_url = asset['browser_download_url'] break if jar_url: break if not jar_url: raise FileNotFoundError(f"No JAR file named {jar_name} found in the releases.") jar_path = os.path.join(jar_directory, jar_name) os.makedirs(jar_directory, exist_ok=True) response = requests.get(jar_url) response.raise_for_status() with open(jar_path, 'wb') as file: file.write(response.content) return jar_path def copy_zip_file(src, dst): if not os.path.exists(dst): os.makedirs(dst) shutil.copy(src, dst) def run_java_command(version, jar_file, input_zip): command = f"java -jar {jar_file} --from 1.20 --to {version} -i {input_zip}" print(f"Executing: {command}") subprocess.run(command, shell=True) def main(version_type): if version_type not in ['v2', 'v3']: raise ValueError("Invalid version type. Choose 'v2' or 'v3'.") versions_file = f'versions_{version_type}.txt' jar_directory = '../Tools/' jar_name = "ResourcePackConverter.jar" src_zip = f'Examples-{version_type}/VPExample.zip' output_dir = f'../../ResourcePacks/Examples-{version_type}/' repo_url = "agentdid127/ResourcePackConverter" output_zip_name = "VPExample_converted.zip" # Remove all zip files in the output directory for file in os.listdir(output_dir): if file.endswith(".zip"): os.remove(os.path.join(output_dir, file)) # Parse versions from the file versions = parse_versions(versions_file) # Download the latest JAR file from GitHub latest_jar = os.path.join(jar_directory, jar_name) # TODO Re-enable # latest_jar = download_latest_jar(repo_url, jar_directory, jar_name) # Copy the zip file to the tools directory copy_zip_file(src_zip, jar_directory) try: for version_description in versions: # Run the Java command run_java_command(version_description.split('-')[-1], latest_jar, jar_directory) # Define the destination path with the new name final_output_path = os.path.join(output_dir, f"VPExample-{version_type}-{version_description}.zip") # Move and rename the output zip file to the destination output_zip_path = os.path.join(jar_directory, output_zip_name) shutil.move(output_zip_path, final_output_path) print(f"Moved {output_zip_path} to {final_output_path}") # Add the file to git os.system(f"git add {final_output_path}") finally: # Remove the JAR file and the input zip file run_path_folder = os.path.join(jar_directory, "VPExample_converted") if os.path.exists(run_path_folder): shutil.rmtree(run_path_folder) # if os.path.exists(latest_jar): # os.remove(latest_jar) input_zip_path = os.path.join(jar_directory, os.path.basename(src_zip)) if os.path.exists(input_zip_path): os.remove(input_zip_path) print("Conversion completed.") if __name__ == '__main__': import sys if len(sys.argv) != 2: print("Usage: python convert_versions.py [v2|v3]") sys.exit(1) version_type = sys.argv[1] main(version_type)