aboutsummaryrefslogtreecommitdiff
path: root/codegen/lib/extract.py
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-06-20 06:22:16 +0000
committerGitHub <noreply@github.com>2022-06-20 06:22:16 +0000
commita1484f66290517b6c36f2e82c92613f23d2c4935 (patch)
treef0a590ef6deac0c23c932773354fc4f75903953a /codegen/lib/extract.py
parente2553bbaf2a550f4941b924e703a922345a1389f (diff)
parent405a00c0d1908a4b3fbd8e6684c77dfb178ac55d (diff)
downloadazalea-drasl-a1484f66290517b6c36f2e82c92613f23d2c4935.tar.xz
Merge branch 'main' into 1.19.1
Diffstat (limited to 'codegen/lib/extract.py')
-rw-r--r--codegen/lib/extract.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/codegen/lib/extract.py b/codegen/lib/extract.py
new file mode 100644
index 00000000..40263779
--- /dev/null
+++ b/codegen/lib/extract.py
@@ -0,0 +1,44 @@
+# Extracting data from the Minecraft jars
+
+from lib.download import get_server_jar, get_burger, get_client_jar
+from lib.utils import get_dir_location
+import json
+import os
+
+
+def generate_data_from_server_jar(version_id: str):
+ if os.path.exists(get_dir_location(f'downloads/generated-{version_id}')):
+ return
+
+ get_server_jar(version_id)
+ os.system(
+ f'cd {get_dir_location(f"downloads")} && java -DbundlerMainClass=net.minecraft.data.Main -jar {get_dir_location(f"downloads/server-{version_id}.jar")} --all --output \"{get_dir_location(f"downloads/generated-{version_id}")}\"'
+ )
+
+
+def get_block_states_report(version_id: str):
+ generate_data_from_server_jar(version_id)
+ with open(get_dir_location(f'downloads/generated-{version_id}/reports/blocks.json'), 'r') as f:
+ return json.load(f)
+
+
+def get_block_states_burger(version_id: str):
+ burger_data = get_burger_data_for_version(version_id)
+ return burger_data[0]['blocks']['block']
+
+
+def get_ordered_blocks_burger(version_id: str):
+ burger_data = get_burger_data_for_version(version_id)
+ return burger_data[0]['blocks']['ordered_blocks']
+
+
+def get_burger_data_for_version(version_id: str):
+ if not os.path.exists(get_dir_location(f'downloads/burger-{version_id}.json')):
+ get_burger()
+ get_client_jar(version_id)
+
+ os.system(
+ f'cd {get_dir_location("downloads/Burger")} && python munch.py ../client-{version_id}.jar --output ../burger-{version_id}.json'
+ )
+ with open(get_dir_location(f'downloads/burger-{version_id}.json'), 'r') as f:
+ return json.load(f)