@@ -750,13 +750,14 @@ impl GamePacketHandler<'_> {
750750 }
751751
752752 pub fn set_entity_data ( & mut self , p : & ClientboundSetEntityData ) {
753- debug ! ( "Got set entity data packet {p:?}" ) ;
754-
755753 as_system :: < (
756754 Commands ,
757- Query < ( & EntityIdIndex , & InstanceHolder , Option < & EntityKind > ) > ,
758- ) > ( self . ecs , |( mut commands, query) | {
759- let ( entity_id_index, instance_holder, entity_kind) = query. get ( self . player ) . unwrap ( ) ;
755+ Query < ( & EntityIdIndex , & InstanceHolder ) > ,
756+ // this is a separate query since it's applied on the entity id that's being updated
757+ // instead of the player that received the packet
758+ Query < & EntityKind > ,
759+ ) > ( self . ecs , |( mut commands, query, entity_kind_query) | {
760+ let ( entity_id_index, instance_holder) = query. get ( self . player ) . unwrap ( ) ;
760761
761762 let entity = entity_id_index. get ( MinecraftEntityId ( p. id ) ) ;
762763
@@ -768,8 +769,12 @@ impl GamePacketHandler<'_> {
768769 ) ;
769770 return ;
770771 } ;
771- let entity_kind =
772- * entity_kind. expect ( "EntityKind component should always be present for entities" ) ;
772+
773+ let entity_kind = * entity_kind_query
774+ . get ( entity)
775+ . expect ( "EntityKind component should always be present for entities" ) ;
776+
777+ debug ! ( "Got set entity data packet {p:?} for entity of kind {entity_kind:?}" ) ;
773778
774779 let packed_items = p. packed_items . clone ( ) . to_vec ( ) ;
775780
0 commit comments