From deef5d27c08daa709e5ebebc382aadff7450fca6 Mon Sep 17 00:00:00 2001 From: mat Date: Tue, 21 Jun 2022 19:57:18 -0500 Subject: Update to 1.19.1-pre1 --- codegen/lib/code/version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'codegen/lib/code') diff --git a/codegen/lib/code/version.py b/codegen/lib/code/version.py index 511d30d1..13d9472d 100644 --- a/codegen/lib/code/version.py +++ b/codegen/lib/code/version.py @@ -36,7 +36,7 @@ def set_version_id(version_id: str) -> None: def get_protocol_version() -> str: # azalea-protocol/src/packets/mod.rs # pub const PROTOCOL_VERSION: u32 = 758; - with open('../azalea-protocol/src/packets/mod.rs', 'r') as f: + with open(get_dir_location('../azalea-protocol/src/packets/mod.rs'), 'r') as f: mod_rs = f.read().splitlines() for line in mod_rs: if line.strip().startswith('pub const PROTOCOL_VERSION'): @@ -46,7 +46,7 @@ def get_protocol_version() -> str: def set_protocol_version(protocol_version: str) -> None: - with open('../azalea-protocol/src/packets/mod.rs', 'r') as f: + with open(get_dir_location('../azalea-protocol/src/packets/mod.rs'), 'r') as f: mod_rs = f.read().splitlines() for i, line in enumerate(mod_rs): if line.strip().startswith('pub const PROTOCOL_VERSION'): @@ -56,5 +56,5 @@ def set_protocol_version(protocol_version: str) -> None: raise Exception( 'Could not find protocol version in azalea-protocol/src/packets/mod.rs') - with open('../azalea-protocol/src/packets/mod.rs', 'w') as f: + with open(get_dir_location('../azalea-protocol/src/packets/mod.rs'), 'w') as f: f.write('\n'.join(mod_rs)) -- cgit v1.2.3 From 8755f18c2b0c11a51a81f60b5501d9d57d0c370e Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 23 Jun 2022 21:54:38 -0500 Subject: Correctly detect updated packets --- codegen/lib/code/packet.py | 25 +++++++++++++++++++++++++ codegen/lib/code/utils.py | 3 +-- codegen/migrate.py | 5 +++-- 3 files changed, 29 insertions(+), 4 deletions(-) (limited to 'codegen/lib/code') diff --git a/codegen/lib/code/packet.py b/codegen/lib/code/packet.py index 2aabf39a..7849b0b3 100644 --- a/codegen/lib/code/packet.py +++ b/codegen/lib/code/packet.py @@ -245,3 +245,28 @@ def remove_packet_ids(removing_packet_ids: list[int], direction: str, state: str new_packet_class_names.append(packet_class_name) set_packets(new_packet_ids, new_packet_class_names, direction, state) + + +def are_packet_instructions_identical(old_packet, new_packet): + old_packet = old_packet or [] + new_packet = new_packet or [] + + if len(old_packet) != len(new_packet): + return False + + for old_field, new_field in zip(old_packet, new_packet): + if old_field['operation'] != new_field['operation']: + return False + if new_field['operation'] == 'write': + if burger_type_to_rust_type(old_field.get('type')) != burger_type_to_rust_type(new_field.get('type')): + return False + else: + # comparing is too complicated here since it's possible the type has variables + # so we just don't + pass + + if 'instructions' in old_field and 'instructions' in new_field: + if not are_packet_instructions_identical(old_field['instructions'], new_field['instructions']): + return False + + return True diff --git a/codegen/lib/code/utils.py b/codegen/lib/code/utils.py index ecfff4fb..0c22d7ba 100644 --- a/codegen/lib/code/utils.py +++ b/codegen/lib/code/utils.py @@ -62,8 +62,7 @@ def burger_type_to_rust_type(burger_type): burger_type[:-2]) field_type_rs = f'Vec<{field_type_rs}>' else: - print('Unknown field type:', burger_type) - exit() + raise Exception(f'Unknown field type: {burger_type}') return field_type_rs, is_var, uses diff --git a/codegen/migrate.py b/codegen/migrate.py index fa7b01a6..fad546e9 100644 --- a/codegen/migrate.py +++ b/codegen/migrate.py @@ -85,8 +85,9 @@ for packet, packet_name in new_packets.items(): if packet_name not in old_packets.values(): added_or_changed_packets.append(packet) print('Added packet:', packet, packet_name) - if new_packets_data[packet].get('instructions') != old_packets_data[packet].get('instructions'): - print('hmm') + if not lib.code.packet.are_packet_instructions_identical(new_packets_data[packet].get('instructions'), old_packets_data[packet].get('instructions')): + added_or_changed_packets.append(packet) + print('Changed packet:', packet, packet_name) for packet in added_or_changed_packets: lib.code.packet.generate_packet( new_burger_data[0]['packets']['packet'], new_mappings, packet.packet_id, packet.direction, packet.state) -- cgit v1.2.3 From 048792f83cae75d98f77eb7a699652e5a6f8f2f9 Mon Sep 17 00:00:00 2001 From: mat Date: Wed, 6 Jul 2022 18:52:24 -0500 Subject: Fix bugs with migration --- codegen/lib/code/packet.py | 6 ++++-- codegen/migrate.py | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'codegen/lib/code') diff --git a/codegen/lib/code/packet.py b/codegen/lib/code/packet.py index 186f59e6..59632270 100644 --- a/codegen/lib/code/packet.py +++ b/codegen/lib/code/packet.py @@ -110,7 +110,8 @@ def set_packets(packet_ids: list[int], packet_class_names: list[str], direction: packet_ids, packet_class_names = [list(x) for x in zip( *sorted(zip(packet_ids, packet_class_names), key=lambda pair: pair[0]))] # type: ignore - mod_rs_dir = f'../azalea-protocol/src/packets/{state}/mod.rs' + mod_rs_dir = get_dir_location( + f'../azalea-protocol/src/packets/{state}/mod.rs') with open(mod_rs_dir, 'r') as f: mod_rs = f.read().splitlines() new_mod_rs = [] @@ -164,7 +165,8 @@ def set_packets(packet_ids: list[int], packet_class_names: list[str], direction: def get_packets(direction: str, state: str): - mod_rs_dir = f'../azalea-protocol/src/packets/{state}/mod.rs' + mod_rs_dir = get_dir_location( + f'../azalea-protocol/src/packets/{state}/mod.rs') with open(mod_rs_dir, 'r') as f: mod_rs = f.read().splitlines() diff --git a/codegen/migrate.py b/codegen/migrate.py index fad546e9..2dacc208 100644 --- a/codegen/migrate.py +++ b/codegen/migrate.py @@ -81,13 +81,19 @@ print() # find added/changed packets added_or_changed_packets: list[PacketIdentifier] = [] -for packet, packet_name in new_packets.items(): +for new_packet, packet_name in new_packets.items(): + old_packet = None + for old_packet_tmp, old_packet_name in old_packets.items(): + if old_packet_name == packet_name: + old_packet = old_packet_tmp + break + if packet_name not in old_packets.values(): - added_or_changed_packets.append(packet) - print('Added packet:', packet, packet_name) - if not lib.code.packet.are_packet_instructions_identical(new_packets_data[packet].get('instructions'), old_packets_data[packet].get('instructions')): - added_or_changed_packets.append(packet) - print('Changed packet:', packet, packet_name) + added_or_changed_packets.append(new_packet) + print('Added packet:', new_packet, packet_name) + elif old_packet and not lib.code.packet.are_packet_instructions_identical(new_packets_data[new_packet].get('instructions'), old_packets_data[old_packet].get('instructions')): + added_or_changed_packets.append(new_packet) + print('Changed packet:', new_packet, packet_name) for packet in added_or_changed_packets: lib.code.packet.generate_packet( new_burger_data[0]['packets']['packet'], new_mappings, packet.packet_id, packet.direction, packet.state) -- cgit v1.2.3 From cb8005be6500890f14b5d002f1242493a0653747 Mon Sep 17 00:00:00 2001 From: mat Date: Wed, 6 Jul 2022 19:04:38 -0500 Subject: Fix the mod.rs --- azalea-protocol/src/packets/game/mod.rs | 140 +++++++++++++++++++++----------- codegen/lib/code/packet.py | 1 + 2 files changed, 95 insertions(+), 46 deletions(-) (limited to 'codegen/lib/code') diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs index d8c5c3ec..f407a697 100755 --- a/azalea-protocol/src/packets/game/mod.rs +++ b/azalea-protocol/src/packets/game/mod.rs @@ -1,5 +1,55 @@ -pub mod clientbound_custom_chat_completions_packet; +pub mod clientbound_add_entity_packet; +pub mod clientbound_add_player_packet; +pub mod clientbound_animate_packet; +pub mod clientbound_block_changed_ack_packet; +pub mod clientbound_block_update_packet; +pub mod clientbound_change_difficulty_packet; +pub mod clientbound_chat_preview_packet; +pub mod clientbound_container_set_content_packet; +pub mod clientbound_custom_payload_packet; +pub mod clientbound_declare_commands_packet; +pub mod clientbound_disconnect_packet; +pub mod clientbound_entity_event_packet; +pub mod clientbound_entity_velocity_packet; +pub mod clientbound_game_event_packet; +pub mod clientbound_initialize_border_packet; +pub mod clientbound_keep_alive_packet; +pub mod clientbound_level_chunk_with_light_packet; +pub mod clientbound_level_event_packet; +pub mod clientbound_level_particles_packet; +pub mod clientbound_light_update_packet; +pub mod clientbound_login_packet; +pub mod clientbound_move_entity_pos_packet; +pub mod clientbound_move_entity_posrot_packet; +pub mod clientbound_move_entity_rot_packet; +pub mod clientbound_player_abilities_packet; +pub mod clientbound_player_chat_packet; +pub mod clientbound_player_info_packet; +pub mod clientbound_player_position_packet; +pub mod clientbound_recipe_packet; +pub mod clientbound_remove_entities_packet; +pub mod clientbound_rotate_head_packet; +pub mod clientbound_section_blocks_update_packet; +pub mod clientbound_server_data_packet; +pub mod clientbound_set_carried_item_packet; +pub mod clientbound_set_chunk_cache_center_packet; +pub mod clientbound_set_default_spawn_position_packet; +pub mod clientbound_set_display_chat_preview_packet; +pub mod clientbound_set_entity_data_packet; +pub mod clientbound_set_entity_link_packet; +pub mod clientbound_set_equipment_packet; +pub mod clientbound_set_experience_packet; +pub mod clientbound_set_health_packet; +pub mod clientbound_set_time_packet; +pub mod clientbound_sound_packet; pub mod clientbound_system_chat_packet; +pub mod clientbound_teleport_entity_packet; +pub mod clientbound_update_advancements_packet; +pub mod clientbound_update_attributes_packet; +pub mod clientbound_update_mob_effect_packet; +pub mod clientbound_update_recipes_packet; +pub mod clientbound_update_tags_packet; +pub mod clientbound_update_view_distance_packet; pub mod serverbound_accept_teleportation_packet; pub mod serverbound_chat_command_packet; pub mod serverbound_chat_preview_packet; @@ -35,50 +85,48 @@ declare_state_packets!( 0x0c: clientbound_chat_preview_packet::ClientboundChatPreviewPacket, 0x0f: clientbound_declare_commands_packet::ClientboundDeclareCommandsPacket, 0x11: clientbound_container_set_content_packet::ClientboundContainerSetContentPacket, - 0x15: clientbound_custom_chat_completions_packet::ClientboundCustomChatCompletionsPacket, - 0x16: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket, - 0x18: clientbound_disconnect_packet::ClientboundDisconnectPacket, - 0x19: clientbound_entity_event_packet::ClientboundEntityEventPacket, - 0x1c: clientbound_game_event_packet::ClientboundGameEventPacket, - 0x1e: clientbound_initialize_border_packet::ClientboundInitializeBorderPacket, - 0x1f: clientbound_keep_alive_packet::ClientboundKeepAlivePacket, - 0x20: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket, - 0x21: clientbound_level_event_packet::ClientboundLevelEventPacket, - 0x22: clientbound_level_particles_packet::ClientboundLevelParticlesPacket, - 0x23: clientbound_light_update_packet::ClientboundLightUpdatePacket, - 0x24: clientbound_login_packet::ClientboundLoginPacket, - 0x27: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket, - 0x28: clientbound_move_entity_posrot_packet::ClientboundMoveEntityPosrotPacket, - 0x29: clientbound_move_entity_rot_packet::ClientboundMoveEntityRotPacket, - 0x30: clientbound_player_abilities_packet::ClientboundPlayerAbilitiesPacket, - 0x31: clientbound_player_chat_packet::ClientboundPlayerChatPacket, - 0x35: clientbound_player_info_packet::ClientboundPlayerInfoPacket, - 0x37: clientbound_player_position_packet::ClientboundPlayerPositionPacket, - 0x38: clientbound_recipe_packet::ClientboundRecipePacket, - 0x39: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket, - 0x3d: clientbound_rotate_head_packet::ClientboundRotateHeadPacket, - 0x3e: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket, - 0x40: clientbound_server_data_packet::ClientboundServerDataPacket, - 0x48: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket, - 0x49: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket, - 0x4a: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket, - 0x4b: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket, - 0x4c: clientbound_set_display_chat_preview_packet::ClientboundSetDisplayChatPreviewPacket, - 0x4e: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket, - 0x4f: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket, - 0x50: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket, - 0x51: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket, - 0x52: clientbound_set_experience_packet::ClientboundSetExperiencePacket, - 0x53: clientbound_set_health_packet::ClientboundSetHealthPacket, - 0x5a: clientbound_set_time_packet::ClientboundSetTimePacket, - 0x5e: clientbound_sound_packet::ClientboundSoundPacket, - 0x60: clientbound_system_chat_packet::ClientboundSystemChatPacket, - 0x60: clientbound_system_chat_packet::ClientboundSystemChatPacket, - 0x64: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket, - 0x65: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket, - 0x66: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket, - 0x67: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket, - 0x68: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket, - 0x69: clientbound_update_tags_packet::ClientboundUpdateTagsPacket, + 0x15: clientbound_custom_payload_packet::ClientboundCustomPayloadPacket, + 0x17: clientbound_disconnect_packet::ClientboundDisconnectPacket, + 0x18: clientbound_entity_event_packet::ClientboundEntityEventPacket, + 0x1b: clientbound_game_event_packet::ClientboundGameEventPacket, + 0x1d: clientbound_initialize_border_packet::ClientboundInitializeBorderPacket, + 0x1e: clientbound_keep_alive_packet::ClientboundKeepAlivePacket, + 0x1f: clientbound_level_chunk_with_light_packet::ClientboundLevelChunkWithLightPacket, + 0x20: clientbound_level_event_packet::ClientboundLevelEventPacket, + 0x21: clientbound_level_particles_packet::ClientboundLevelParticlesPacket, + 0x22: clientbound_light_update_packet::ClientboundLightUpdatePacket, + 0x23: clientbound_login_packet::ClientboundLoginPacket, + 0x26: clientbound_move_entity_pos_packet::ClientboundMoveEntityPosPacket, + 0x27: clientbound_move_entity_posrot_packet::ClientboundMoveEntityPosRotPacket, + 0x28: clientbound_move_entity_rot_packet::ClientboundMoveEntityRotPacket, + 0x2f: clientbound_player_abilities_packet::ClientboundPlayerAbilitiesPacket, + 0x30: clientbound_player_chat_packet::ClientboundPlayerChatPacket, + 0x34: clientbound_player_info_packet::ClientboundPlayerInfoPacket, + 0x36: clientbound_player_position_packet::ClientboundPlayerPositionPacket, + 0x37: clientbound_recipe_packet::ClientboundRecipePacket, + 0x38: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket, + 0x3c: clientbound_rotate_head_packet::ClientboundRotateHeadPacket, + 0x3d: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket, + 0x3f: clientbound_server_data_packet::ClientboundServerDataPacket, + 0x47: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket, + 0x48: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket, + 0x49: clientbound_update_view_distance_packet::ClientboundUpdateViewDistancePacket, + 0x4a: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket, + 0x4b: clientbound_set_display_chat_preview_packet::ClientboundSetDisplayChatPreviewPacket, + 0x4d: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket, + 0x4e: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket, + 0x4f: clientbound_entity_velocity_packet::ClientboundEntityVelocityPacket, + 0x50: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket, + 0x51: clientbound_set_experience_packet::ClientboundSetExperiencePacket, + 0x52: clientbound_set_health_packet::ClientboundSetHealthPacket, + 0x59: clientbound_set_time_packet::ClientboundSetTimePacket, + 0x5d: clientbound_sound_packet::ClientboundSoundPacket, + 0x5f: clientbound_system_chat_packet::ClientboundSystemChatPacket, + 0x63: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket, + 0x64: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket, + 0x65: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket, + 0x66: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket, + 0x67: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket, + 0x68: clientbound_update_tags_packet::ClientboundUpdateTagsPacket, } ); diff --git a/codegen/lib/code/packet.py b/codegen/lib/code/packet.py index 59632270..ffa7841c 100644 --- a/codegen/lib/code/packet.py +++ b/codegen/lib/code/packet.py @@ -141,6 +141,7 @@ def set_packets(packet_ids: list[int], packet_class_names: list[str], direction: new_mod_rs.append( make_packet_mod_rs_line(packet_id, packet_class_name) ) + required_modules.append(packet_class_name) else: ignore_lines = False continue -- cgit v1.2.3