azalea/data-code-generator/main.py

45 lines
1.5 KiB
Python
Raw Normal View History

2022-05-07 21:54:02 +00:00
from mappings import Mappings
import packetcodegen
import requests
import json
import os
# enable this if you already have the burger.json and don't want to wait
SKIP_BURGER = True
print(
f'\033[92mFinding Minecraft version...\033[m')
version_manifest_data = requests.get(
'https://launchermeta.mojang.com/mc/game/version_manifest.json').json()
2022-05-07 22:59:03 +00:00
minecraft_version = version_manifest_data['latest']['release']
2022-05-07 21:54:02 +00:00
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']
if not SKIP_BURGER:
print('\033[92mDownloading Burger...\033[m')
r = os.system('git clone https://github.com/pokechu22/Burger')
2022-05-07 22:59:03 +00:00
os.system('cd Burger && git pull')
2022-05-07 21:54:02 +00:00
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')
2022-05-07 22:59:03 +00:00
os.system(
'cd Burger && python munch.py ../client.jar --output ../burger.json')
2022-05-07 21:54:02 +00:00
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)
burger_packets_data = burger_data[0]['packets']['packet']
packetcodegen.generate(burger_packets_data, mappings)
2022-05-07 22:29:51 +00:00
os.system('cd .. && cargo fmt')