diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..952787e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/src/__pycache__ +Round-Trees-*.zip diff --git a/Round-Trees-8.0.zip b/Round-Trees-8.0.zip deleted file mode 100644 index d51e9c7..0000000 Binary files a/Round-Trees-8.0.zip and /dev/null differ diff --git a/gen_pack.py b/gen_pack.py index d953275..a62f2fe 100644 --- a/gen_pack.py +++ b/gen_pack.py @@ -11,6 +11,9 @@ import shutil import time from distutils.dir_util import copy_tree +import src.json_utils +from src.json_utils import dumpJson, minifyJsonFiles, minify + # Utility functions def printGreen(out): print("\033[92m{}\033[00m".format(out)) def printCyan(out): print("\033[96m{}\033[00m" .format(out)) @@ -20,6 +23,8 @@ def autoGen(jsonData, args): print("Generating assets...") if (os.path.exists("./assets")): shutil.rmtree("./assets") copy_tree("./base/assets/", "./assets/") + if minify: minifyJsonFiles() + filecount = 0 unpackMods() scanModsForLogs() @@ -103,7 +108,7 @@ def generateBlockstateAndModel(mod_namespace, block_name, texture_end, texture_s # Write blockstate file with open(block_state_file, "w") as f: - json.dump(block_state_data, f, indent=4) + dumpJson(block_state_data, f) # Create models folder if it doesn't exist already @@ -131,7 +136,7 @@ def generateBlockstateAndModel(mod_namespace, block_name, texture_end, texture_s } } with open(block_model_file, "w") as f: - json.dump(block_model_data, f, indent=4) + dumpJson(block_model_data, f) def generateItemModel(mod_namespace, block_name): # Create models folder if it doesn't exist already @@ -143,7 +148,7 @@ def generateItemModel(mod_namespace, block_name): "parent": f"{mod_namespace}:block/{block_name}1" } with open(item_model_file, "w") as f: - json.dump(item_model_data, f, indent=4) + dumpJson(item_model_data, f) def writeMetadata(args): edition = args.edition @@ -181,10 +186,12 @@ if __name__ == '__main__': parser.add_argument('version', type=str) parser.add_argument('edition', nargs="*", type=str, default="§cCustom Edition", help="Define your edition name") + parser.add_argument('--minify', '-m', action='store_true', help="Minify all JSON output files") args = parser.parse_args() print(args) print() + if args.minify: src.json_utils.minify = True # Loads overrides from the json file f = open('./input/overrides.json') diff --git a/src/json_utils.py b/src/json_utils.py new file mode 100644 index 0000000..5dea74c --- /dev/null +++ b/src/json_utils.py @@ -0,0 +1,18 @@ +import os +import json + +minify = False + +def minifyJsonFiles(rootDir="./assets"): + for root, dirs, files in os.walk(rootDir): + for infile in files: + if infile.endswith(".json"): + minifyExistingJson(root, infile) +def minifyExistingJson(root, infile): + with open(os.path.join(root, infile), "r") as rf: + data = json.load(rf) + with open(os.path.join(root, infile), "w") as wf: + json.dump(data, wf, separators=(',', ':')) + +def dumpJson(data, f): + json.dump(data, f, separators=(',', ':')) if minify else json.dump(data, f, indent=4)