aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-05-24 19:50:19 -0500
committermat <github@matdoes.dev>2022-05-24 19:50:19 -0500
commit04aea6afaf6819a66181d5d544356764d118b1bb (patch)
tree49efca32251e59a7f30c4e4d98d62e39da630513
parent5c1712c8404e52f893e3fc10f79a337933865123 (diff)
downloadazalea-drasl-04aea6afaf6819a66181d5d544356764d118b1bb.tar.xz
code-generator/lib
-rw-r--r--.gitignore7
-rw-r--r--code-generator/.gitignore3
-rw-r--r--code-generator/lib/mappings.py (renamed from code-generator/mappings.py)0
-rw-r--r--code-generator/lib/packetcodegen.py (renamed from code-generator/packetcodegen.py)0
-rw-r--r--code-generator/lib/utils.py (renamed from code-generator/utils.py)0
-rw-r--r--code-generator/lib/version.py80
-rw-r--r--code-generator/main.py49
7 files changed, 86 insertions, 53 deletions
diff --git a/.gitignore b/.gitignore
index 53141060..ad9bfc78 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,10 +3,3 @@
flamegraph.svg
perf.data
perf.data.old
-
-
-code-generator/Burger
-code-generator/client.jar
-code-generator/burger.json
-__pycache__
-*.tmp
diff --git a/code-generator/.gitignore b/code-generator/.gitignore
new file mode 100644
index 00000000..2ef6e1be
--- /dev/null
+++ b/code-generator/.gitignore
@@ -0,0 +1,3 @@
+downloads
+__pycache__
+*.tmp
diff --git a/code-generator/mappings.py b/code-generator/lib/mappings.py
index fb3e8bda..fb3e8bda 100644
--- a/code-generator/mappings.py
+++ b/code-generator/lib/mappings.py
diff --git a/code-generator/packetcodegen.py b/code-generator/lib/packetcodegen.py
index 3d453a4e..3d453a4e 100644
--- a/code-generator/packetcodegen.py
+++ b/code-generator/lib/packetcodegen.py
diff --git a/code-generator/utils.py b/code-generator/lib/utils.py
index 5336d574..5336d574 100644
--- a/code-generator/utils.py
+++ b/code-generator/lib/utils.py
diff --git a/code-generator/lib/version.py b/code-generator/lib/version.py
new file mode 100644
index 00000000..f50ab461
--- /dev/null
+++ b/code-generator/lib/version.py
@@ -0,0 +1,80 @@
+from mappings import Mappings
+import requests
+import json
+import os
+
+
+def download_burger():
+ print('\033[92mDownloading Burger...\033[m')
+ os.system(
+ 'cd downloads && git clone https://github.com/pokechu22/Burger && cd Burger && git pull')
+
+ print('\033[92mInstalling dependencies...\033[m')
+ os.system('cd downloads/Burger && pip install six jawa')
+
+
+def get_version_manifest():
+ if not os.path.exists(f'downloads/version_manifest.json'):
+ print(
+ f'\033[92mDownloading version manifest...\033[m')
+ version_manifest_data = requests.get(
+ 'https://launchermeta.mojang.com/mc/game/version_manifest.json').json()
+ with open(f'downloads/version_manifest.json', 'w') as f:
+ json.dump(version_manifest_data, f)
+ else:
+ with open(f'downloads/version_manifest.json', 'r') as f:
+ version_manifest_data = json.load(f)
+ return version_manifest_data
+
+
+def get_version_data(version_id: str):
+ if not os.path.exists(f'downloads/{version_id}.json'):
+ version_manifest_data = get_version_manifest()
+
+ print(
+ f'\033[92mGetting data for \033[1m{version_id}..\033[m')
+ package_url = next(
+ filter(lambda v: v['id'] == version_id, version_manifest_data['versions']))['url']
+ package_data = requests.get(package_url).json()
+ with open(f'downloads/{version_id}.json', 'w') as f:
+ json.dump(package_data, f)
+ else:
+ with open(f'downloads/{version_id}.json', 'r') as f:
+ package_data = json.load(f)
+ return package_data
+
+
+def get_client_jar(version_id: str):
+ if not os.path.exists(f'downloads/client-{version_id}.jar'):
+ package_data = get_version_data(version_id)
+ print('\033[92mDownloading client jar...\033[m')
+ client_jar_url = package_data['downloads']['client']['url']
+ with open('client.jar', 'wb') as f:
+ f.write(requests.get(client_jar_url).content)
+
+
+def get_burger_data_for_version(version_id: str):
+ if not os.path.exists(f'downloads/burger-{version_id}.json'):
+ get_client_jar(version_id)
+
+ os.system(
+ f'cd downloads/Burger && python munch.py ../client-{version_id}.jar --output ../burger-{version_id}.json'
+ )
+ with open(f'burger-{version_id}.json', 'r') as f:
+ return json.load(f)
+
+
+def get_mappings_for_version(version_id: str):
+ if not os.path.exists(f'downloads/mappings-{version_id}.json'):
+ package_data = get_version_data(version_id)
+
+ client_mappings_url = package_data['downloads']['client_mappings']['url']
+
+ mappings_text = requests.get(client_mappings_url).text
+
+ with open(f'downloads/mappings-{version_id}.json', 'w') as f:
+ f.write(mappings_text)
+ else:
+ with open(f'downloads/mappings-{version_id}.json', 'r') as f:
+ mappings_text = f.read()
+ return Mappings.parse(mappings_text)
diff --git a/code-generator/main.py b/code-generator/main.py
index 78d307b7..54ad3946 100644
--- a/code-generator/main.py
+++ b/code-generator/main.py
@@ -1,54 +1,11 @@
-from mappings import Mappings
-import packetcodegen
+from .lib import version, packetcodegen
import requests
import json
import sys
import os
-print(
- f'\033[92mFinding Minecraft version...\033[m')
-version_manifest_data = requests.get(
- 'https://launchermeta.mojang.com/mc/game/version_manifest.json').json()
-minecraft_version = version_manifest_data['latest']['release']
-print(
- f'\033[92mUsing \033[1m{minecraft_version}..\033[m')
-package_url = next(
- filter(lambda v: v['id'] == minecraft_version, version_manifest_data['versions']))['url']
-package_data = requests.get(package_url).json()
-client_jar_url = package_data['downloads']['client']['url']
-
-skipping_burger = False
-try:
- with open('burger.json', 'r') as f:
- burger_data = json.load(f)[0]
- if burger_data['version']['id'] == minecraft_version:
- skipping_burger = True
- print(
- f'\033[92mSkipping Burger step because the burger.json is up-to-date.\033[m')
-except FileNotFoundError:
- pass
-
-if not skipping_burger:
- print('\033[92mDownloading Burger...\033[m')
- r = os.system('git clone https://github.com/pokechu22/Burger')
- os.system('cd Burger && git pull')
-
- # print('\033[92mInstalling dependencies...\033[m')
- # os.system('cd Burger && pip install six jawa')
-
- print('\033[92mDownloading client jar...\033[m')
- with open('client.jar', 'wb') as f:
- f.write(requests.get(client_jar_url).content)
-
- print(f'\033[92mExtracting data with Burger...\033[m')
- os.system(
- 'cd Burger && python munch.py ../client.jar --output ../burger.json')
-
-client_mappings_url = package_data['downloads']['client_mappings']['url']
-mappings = Mappings.parse(requests.get(client_mappings_url).text)
-
-with open('burger.json', 'r') as f:
- burger_data = json.load(f)
+mappings = version.get_mappings_for_version('1.18.2')
+burger_data = version.get_burger_data_for_version('1.18.2')
burger_packets_data = burger_data[0]['packets']['packet']
packet_id, direction, state = int(sys.argv[1]), sys.argv[2], sys.argv[3]