From 5fe6ac7adf92850b0996868a4bb4bf93883a8f5c Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 7 May 2022 18:34:55 -0500 Subject: rename data-code-generator to code-generator --- code-generator/main.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 code-generator/main.py (limited to 'code-generator/main.py') diff --git a/code-generator/main.py b/code-generator/main.py new file mode 100644 index 00000000..5ab3219f --- /dev/null +++ b/code-generator/main.py @@ -0,0 +1,58 @@ +from mappings import Mappings +import 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[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) + +burger_packets_data = burger_data[0]['packets']['packet'] +packet_id, direction, state = int(sys.argv[1]), sys.argv[2], sys.argv[3] +print( + f'Generating code for packet id: {packet_id} with direction {direction} and state {state}') +packetcodegen.generate(burger_packets_data, mappings, + packet_id, direction, state) + +os.system('cd .. && cargo fmt') + +print('Done!') -- cgit v1.2.3 From 1a15d36e6b9bb33340f1422b6b282dd13e9b4840 Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 7 May 2022 18:44:00 -0500 Subject: add health packet --- azalea-client/src/connect.rs | 3 +++ .../src/packets/game/clientbound_container_set_content_packet.rs | 2 +- .../src/packets/game/clientbound_set_health_packet.rs | 9 +++++++++ azalea-protocol/src/packets/game/mod.rs | 2 ++ code-generator/README.md | 2 +- code-generator/main.py | 4 ++++ 6 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 azalea-protocol/src/packets/game/clientbound_set_health_packet.rs (limited to 'code-generator/main.py') diff --git a/azalea-client/src/connect.rs b/azalea-client/src/connect.rs index e35024e0..b9f6af98 100755 --- a/azalea-client/src/connect.rs +++ b/azalea-client/src/connect.rs @@ -270,6 +270,9 @@ impl Client { GamePacket::ClientboundContainerSetContentPacket(p) => { println!("Got container set content packet {:?}", p); } + GamePacket::ClientboundSetHealthPacket(p) => { + println!("Got set health packet {:?}", p); + } _ => panic!("Unexpected packet {:?}", packet), } println!(); diff --git a/azalea-protocol/src/packets/game/clientbound_container_set_content_packet.rs b/azalea-protocol/src/packets/game/clientbound_container_set_content_packet.rs index e46f5af1..aea09e09 100644 --- a/azalea-protocol/src/packets/game/clientbound_container_set_content_packet.rs +++ b/azalea-protocol/src/packets/game/clientbound_container_set_content_packet.rs @@ -5,7 +5,7 @@ use packet_macros::GamePacket; pub struct ClientboundContainerSetContentPacket { pub container_id: u8, #[var] - pub state_id: i32, + pub state_id: u32, pub items: Vec, pub carried_item: Slot, } diff --git a/azalea-protocol/src/packets/game/clientbound_set_health_packet.rs b/azalea-protocol/src/packets/game/clientbound_set_health_packet.rs new file mode 100644 index 00000000..136ef475 --- /dev/null +++ b/azalea-protocol/src/packets/game/clientbound_set_health_packet.rs @@ -0,0 +1,9 @@ +use packet_macros::GamePacket; + +#[derive(Clone, Debug, GamePacket)] +pub struct ClientboundSetHealthPacket { + pub health: f32, + #[var] + pub food: u32, + pub saturation: f32, +} diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs index d112f576..776c5d41 100755 --- a/azalea-protocol/src/packets/game/mod.rs +++ b/azalea-protocol/src/packets/game/mod.rs @@ -21,6 +21,7 @@ pub mod clientbound_set_chunk_cache_center; pub mod clientbound_set_default_spawn_position_packet; pub mod clientbound_set_entity_data_packet; pub mod clientbound_set_entity_link_packet; +pub mod clientbound_set_health_packet; pub mod clientbound_set_time_packet; pub mod clientbound_update_attributes_packet; pub mod clientbound_update_recipes_packet; @@ -60,6 +61,7 @@ declare_state_packets!( 0x4d: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket, 0x45: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket, 0x4f: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket, + 0x52: clientbound_set_health_packet::ClientboundSetHealthPacket, 0x59: clientbound_set_time_packet::ClientboundSetTimePacket, 0x64: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket, 0x66: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket, diff --git a/code-generator/README.md b/code-generator/README.md index 5b9a6139..a6c60c47 100644 --- a/code-generator/README.md +++ b/code-generator/README.md @@ -1,4 +1,4 @@ -Tools for generating code. +Tools for automatically generating code to help with updating Minecraft versions. The directory name doesn't start with `azalea-` because it's not a Rust crate. diff --git a/code-generator/main.py b/code-generator/main.py index 5ab3219f..78d307b7 100644 --- a/code-generator/main.py +++ b/code-generator/main.py @@ -32,6 +32,10 @@ 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) -- cgit v1.2.3