@@ -510,8 +510,7 @@ pub fn process_packet_events(ecs: &mut World) {
510510 player_entity,
511511 ServerboundMovePlayerPosRot {
512512 pos : new_pos,
513- y_rot : new_y_rot,
514- x_rot : new_x_rot,
513+ look_direction : LookDirection :: new ( new_y_rot, new_x_rot) ,
515514 // this is always false
516515 on_ground : false ,
517516 } ,
@@ -842,10 +841,10 @@ pub fn process_packet_events(ecs: &mut World) {
842841 continue ;
843842 } ;
844843
845- let new_pos = p. position ;
844+ let new_pos = p. change . pos ;
846845 let new_look_direction = LookDirection {
847- x_rot : ( p. x_rot as i32 * 360 ) as f32 / 256. ,
848- y_rot : ( p. y_rot as i32 * 360 ) as f32 / 256. ,
846+ x_rot : ( p. change . look_direction . x_rot as i32 * 360 ) as f32 / 256. ,
847+ y_rot : ( p. change . look_direction . y_rot as i32 * 360 ) as f32 / 256. ,
849848 } ;
850849 commands. entity ( entity) . queue ( RelativeEntityUpdate {
851850 partial_world : instance_holder. partial_instance . clone ( ) ,
@@ -879,35 +878,34 @@ pub fn process_packet_events(ecs: &mut World) {
879878
880879 debug ! ( "Got move entity pos packet {p:?}" ) ;
881880
882- let entity = entity_id_index. get ( & MinecraftEntityId ( p. entity_id ) ) ;
883-
884- if let Some ( entity) = entity {
885- let new_delta = p. delta . clone ( ) ;
886- let new_on_ground = p. on_ground ;
887- commands. entity ( entity) . queue ( RelativeEntityUpdate {
888- partial_world : instance_holder. partial_instance . clone ( ) ,
889- update : Box :: new ( move |entity_mut| {
890- let mut physics = entity_mut. get_mut :: < Physics > ( ) . unwrap ( ) ;
891- let new_pos = physics. vec_delta_codec . decode (
892- new_delta. xa as i64 ,
893- new_delta. ya as i64 ,
894- new_delta. za as i64 ,
895- ) ;
896- physics. vec_delta_codec . set_base ( new_pos) ;
897- physics. set_on_ground ( new_on_ground) ;
898-
899- let mut position = entity_mut. get_mut :: < Position > ( ) . unwrap ( ) ;
900- if new_pos != * * position {
901- * * position = new_pos;
902- }
903- } ) ,
904- } ) ;
905- } else {
881+ let Some ( entity) = entity_id_index. get ( & MinecraftEntityId ( p. entity_id ) ) else {
906882 warn ! (
907883 "Got move entity pos packet for unknown entity id {}" ,
908884 p. entity_id
909885 ) ;
910- }
886+ continue ;
887+ } ;
888+
889+ let new_delta = p. delta . clone ( ) ;
890+ let new_on_ground = p. on_ground ;
891+ commands. entity ( entity) . queue ( RelativeEntityUpdate {
892+ partial_world : instance_holder. partial_instance . clone ( ) ,
893+ update : Box :: new ( move |entity_mut| {
894+ let mut physics = entity_mut. get_mut :: < Physics > ( ) . unwrap ( ) ;
895+ let new_pos = physics. vec_delta_codec . decode (
896+ new_delta. xa as i64 ,
897+ new_delta. ya as i64 ,
898+ new_delta. za as i64 ,
899+ ) ;
900+ physics. vec_delta_codec . set_base ( new_pos) ;
901+ physics. set_on_ground ( new_on_ground) ;
902+
903+ let mut position = entity_mut. get_mut :: < Position > ( ) . unwrap ( ) ;
904+ if new_pos != * * position {
905+ * * position = new_pos;
906+ }
907+ } ) ,
908+ } ) ;
911909
912910 system_state. apply ( ecs) ;
913911 }
@@ -1191,7 +1189,7 @@ pub fn process_packet_events(ecs: &mut World) {
11911189 events. send ( SetContainerContentEvent {
11921190 entity : player_entity,
11931191 slots : p. items . clone ( ) ,
1194- container_id : p. container_id as u8 ,
1192+ container_id : p. container_id ,
11951193 } ) ;
11961194 }
11971195 }
@@ -1235,7 +1233,7 @@ pub fn process_packet_events(ecs: &mut World) {
12351233 if let Some ( slot) = inventory. inventory_menu . slot_mut ( p. slot . into ( ) ) {
12361234 * slot = p. item_stack . clone ( ) ;
12371235 }
1238- } else if p. container_id == ( inventory. id as i8 )
1236+ } else if p. container_id == inventory. id
12391237 && ( p. container_id != 0 || !is_creative_mode_and_inventory_closed)
12401238 {
12411239 // var2.containerMenu.setItem(var4, var1.getStateId(), var3);
@@ -1260,20 +1258,18 @@ pub fn process_packet_events(ecs: &mut World) {
12601258 ClientboundGamePacket :: DeleteChat ( _) => { }
12611259 ClientboundGamePacket :: Explode ( p) => {
12621260 trace ! ( "Got explode packet {p:?}" ) ;
1263- let mut system_state: SystemState < EventWriter < KnockbackEvent > > =
1264- SystemState :: new ( ecs) ;
1265- let mut knockback_events = system_state. get_mut ( ecs) ;
1261+ if let Some ( knockback) = p. knockback {
1262+ let mut system_state: SystemState < EventWriter < KnockbackEvent > > =
1263+ SystemState :: new ( ecs) ;
1264+ let mut knockback_events = system_state. get_mut ( ecs) ;
12661265
1267- knockback_events. send ( KnockbackEvent {
1268- entity : player_entity,
1269- knockback : KnockbackType :: Set ( Vec3 {
1270- x : p. knockback_x as f64 ,
1271- y : p. knockback_y as f64 ,
1272- z : p. knockback_z as f64 ,
1273- } ) ,
1274- } ) ;
1266+ knockback_events. send ( KnockbackEvent {
1267+ entity : player_entity,
1268+ knockback : KnockbackType :: Set ( knockback) ,
1269+ } ) ;
12751270
1276- system_state. apply ( ecs) ;
1271+ system_state. apply ( ecs) ;
1272+ }
12771273 }
12781274 ClientboundGamePacket :: ForgetLevelChunk ( p) => {
12791275 debug ! ( "Got forget level chunk packet {p:?}" ) ;
0 commit comments