diff options
| author | mat <github@matdoes.dev> | 2022-05-24 19:50:19 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-05-24 19:50:19 -0500 |
| commit | 04aea6afaf6819a66181d5d544356764d118b1bb (patch) | |
| tree | 49efca32251e59a7f30c4e4d98d62e39da630513 | |
| parent | 5c1712c8404e52f893e3fc10f79a337933865123 (diff) | |
| download | azalea-drasl-04aea6afaf6819a66181d5d544356764d118b1bb.tar.xz | |
code-generator/lib
| -rw-r--r-- | .gitignore | 7 | ||||
| -rw-r--r-- | code-generator/.gitignore | 3 | ||||
| -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.py | 80 | ||||
| -rw-r--r-- | code-generator/main.py | 49 |
7 files changed, 86 insertions, 53 deletions
@@ -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] |
