1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00

codegen/extract.py

Preparation for azalea-block
This commit is contained in:
mat 2022-05-27 01:37:52 -05:00
parent 68ab3d6524
commit 86cc2a9b7c
4 changed files with 53 additions and 19 deletions

View file

@ -63,16 +63,13 @@ def get_client_jar(version_id: str):
f.write(requests.get(client_jar_url).content) f.write(requests.get(client_jar_url).content)
def get_burger_data_for_version(version_id: str): def get_server_jar(version_id: str):
if not os.path.exists(get_dir_location(f'downloads/burger-{version_id}.json')): if not os.path.exists(get_dir_location(f'downloads/server-{version_id}.jar')):
get_burger() package_data = get_version_data(version_id)
get_client_jar(version_id) print('\033[92mDownloading server jar...\033[m')
server_jar_url = package_data['downloads']['server']['url']
os.system( with open(get_dir_location(f'downloads/server-{version_id}.jar'), 'wb') as f:
f'cd {get_dir_location("downloads/Burger")} && python munch.py ../client-{version_id}.jar --output ../burger-{version_id}.json' f.write(requests.get(server_jar_url).content)
)
with open(get_dir_location(f'downloads/burger-{version_id}.json'), 'r') as f:
return json.load(f)
def get_mappings_for_version(version_id: str): def get_mappings_for_version(version_id: str):

34
codegen/lib/extract.py Normal file
View file

@ -0,0 +1,34 @@
# 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'java -jar {get_dir_location(f"downloads/server-{version_id}.jar")} --all --output {get_dir_location(f"downloads/generated-{version_id}")}'
)
def get_block_states(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_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)

View file

@ -4,17 +4,18 @@ import lib.code.utils
import lib.code.version import lib.code.version
import lib.code.packet import lib.code.packet
import lib.download import lib.download
import lib.extract
import sys import sys
import os import os
old_version_id = lib.code.version.get_version_id() old_version_id = lib.code.version.get_version_id()
old_mappings = lib.download.get_mappings_for_version(old_version_id) old_mappings = lib.download.get_mappings_for_version(old_version_id)
old_burger_data = lib.download.get_burger_data_for_version(old_version_id) old_burger_data = lib.extract.get_burger_data_for_version(old_version_id)
old_packet_list = list(old_burger_data[0]['packets']['packet'].values()) old_packet_list = list(old_burger_data[0]['packets']['packet'].values())
new_version_id = sys.argv[1] new_version_id = sys.argv[1]
new_mappings = lib.download.get_mappings_for_version(new_version_id) new_mappings = lib.download.get_mappings_for_version(new_version_id)
new_burger_data = lib.download.get_burger_data_for_version(new_version_id) new_burger_data = lib.extract.get_burger_data_for_version(new_version_id)
new_packet_list = list(new_burger_data[0]['packets']['packet'].values()) new_packet_list = list(new_burger_data[0]['packets']['packet'].values())

View file

@ -1,17 +1,19 @@
from lib import download, code # type: ignore import lib.code.packet
import lib.code.utils
import lib.download
import lib.extract
import sys import sys
import os
mappings = download.get_mappings_for_version('1.18.2') mappings = lib.download.get_mappings_for_version('1.18.2')
burger_data = download.get_burger_data_for_version('1.18.2') burger_data = lib.extract.get_burger_data_for_version('1.18.2')
burger_packets_data = burger_data[0]['packets']['packet'] burger_packets_data = burger_data[0]['packets']['packet']
packet_id, direction, state = int(sys.argv[1]), sys.argv[2], sys.argv[3] packet_id, direction, state = int(sys.argv[1]), sys.argv[2], sys.argv[3]
print( print(
f'Generating code for packet id: {packet_id} with direction {direction} and state {state}') f'Generating code for packet id: {packet_id} with direction {direction} and state {state}')
code.packetcodegen.generate_packet(burger_packets_data, mappings, lib.code.packet.generate_packet(burger_packets_data, mappings,
packet_id, direction, state) packet_id, direction, state)
code.fmt() lib.code.utils.fmt()
print('Done!') print('Done!')