feat: download resourcepacks from Modrinth before compiling

This commit is contained in:
Martin Prokoph
2025-07-20 13:08:15 +02:00
parent 819e402eac
commit 0ee2cb2195
4 changed files with 33 additions and 0 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
/.alt /.alt
/__pycache__

Binary file not shown.

26
download_helper.py Normal file
View File

@@ -0,0 +1,26 @@
from os import path
from tqdm import tqdm
import requests
def downloadFromModrinth(project_slug):
response = requests.get(f'https://api.modrinth.com/v2/project/{project_slug}/version')
latestFile = response.json()[0]['files'][0]
latestFileURL = latestFile['url']
if len(latestFileURL) < 1: raise Exception(f'Could not get the latest version URL for {project_slug}')
download_stream = requests.get(latestFileURL, stream=True)
file_name = latestFile['filename']
file_path = 'input/texturepacks'
print(f'Downloading texturepack: {project_slug} (Latest version: {file_name})')
location = path.join(file_path, file_name)
total = int(download_stream.headers.get('content-length', 0))
with open(location, "wb") as handle, tqdm(
unit="kB",
desc=file_name,
total=total,
unit_scale=True,
unit_divisor=1024,) as progressbar:
for data in download_stream.iter_content(chunk_size=1024):
size = handle.write(data)
progressbar.update(size)

View File

@@ -3,6 +3,7 @@
"""This script can automatically generate blockstate and block model files, as well as textures for the Better Leaves Lite resourcepack.""" """This script can automatically generate blockstate and block model files, as well as textures for the Better Leaves Lite resourcepack."""
# Depencency imports
import argparse import argparse
import json import json
import os import os
@@ -13,6 +14,9 @@ import random
from PIL import Image from PIL import Image
from distutils.dir_util import copy_tree from distutils.dir_util import copy_tree
# Local imports
from download_helper import downloadFromModrinth
minify = False minify = False
# Utility functions # Utility functions
@@ -517,6 +521,7 @@ if __name__ == '__main__':
parser.add_argument('--legacy', '-l', action='store_true', help="Use legacy models (from 8.1) for all leaves") parser.add_argument('--legacy', '-l', action='store_true', help="Use legacy models (from 8.1) for all leaves")
parser.add_argument('--programmer', '-p', action='store_true', help="Use programmer art textures") parser.add_argument('--programmer', '-p', action='store_true', help="Use programmer art textures")
parser.add_argument('--minify', '-m', action='store_true', help="Minify all JSON output files") parser.add_argument('--minify', '-m', action='store_true', help="Minify all JSON output files")
parser.add_argument('--download', '-d', help="Downloads the requested resourcepack beforehand")
args = parser.parse_args() args = parser.parse_args()
print(f"Arguments: {args}") print(f"Arguments: {args}")
@@ -525,6 +530,7 @@ if __name__ == '__main__':
print("https://github.com/TeamMidnightDust/BetterLeavesLite") print("https://github.com/TeamMidnightDust/BetterLeavesLite")
print() print()
if args.minify: minify = True if args.minify: minify = True
if args.download != None: downloadFromModrinth(args.download)
# Loads overrides from the json file # Loads overrides from the json file
f = open('./input/overrides.json') f = open('./input/overrides.json')