mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 14:26:04 +00:00
code-generator/lib
This commit is contained in:
parent
5c1712c840
commit
04aea6afaf
7 changed files with 86 additions and 53 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -3,10 +3,3 @@
|
|||
flamegraph.svg
|
||||
perf.data
|
||||
perf.data.old
|
||||
|
||||
|
||||
code-generator/Burger
|
||||
code-generator/client.jar
|
||||
code-generator/burger.json
|
||||
__pycache__
|
||||
*.tmp
|
||||
|
|
3
code-generator/.gitignore
vendored
Normal file
3
code-generator/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
downloads
|
||||
__pycache__
|
||||
*.tmp
|
80
code-generator/lib/version.py
Normal file
80
code-generator/lib/version.py
Normal file
|
@ -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)
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Reference in a new issue