(&mut self)
| 245 | |
| 246 | #[inline(always)] |
| 247 | pub fn parse_packet(&mut self) { |
| 248 | check_round_change(&self.entities, &self.rules_id, &mut self.round); |
| 249 | self.fp += 160; |
| 250 | let packet_len = self.read_i32(); |
| 251 | let goal_inx = self.fp + packet_len as usize; |
| 252 | let parse_props = self.parse_props; |
| 253 | let mut is_con_tick = false; |
| 254 | let no_gameevents = self.no_gameevents; |
| 255 | |
| 256 | while self.fp < goal_inx { |
| 257 | let msg = self.read_varint(); |
| 258 | let size = self.read_varint(); |
| 259 | let data = self.read_n_bytes(size); |
| 260 | match msg as i32 { |
| 261 | // Game event |
| 262 | 25 => { |
| 263 | if !no_gameevents { |
| 264 | let game_event = Message::parse_from_bytes(data); |
| 265 | match game_event { |
| 266 | Ok(ge) => { |
| 267 | let game_event = ge; |
| 268 | let (game_events, con_tick) = self.parse_game_events(game_event); |
| 269 | is_con_tick = con_tick; |
| 270 | |
| 271 | if is_con_tick { |
| 272 | self.poisoned_until = self.tick + 1000; |
| 273 | } |
| 274 | self.game_events.extend(game_events); |
| 275 | } |
| 276 | Err(e) => panic!( |
| 277 | "Failed to parse game event at tick {}. Error: {e}", |
| 278 | self.tick |
| 279 | ), |
| 280 | } |
| 281 | } |
| 282 | } |
| 283 | // Game event list |
| 284 | 30 => { |
| 285 | if !no_gameevents { |
| 286 | let event_list = Message::parse_from_bytes(data); |
| 287 | match event_list { |
| 288 | Ok(ev) => { |
| 289 | let event_list = ev; |
| 290 | self.parse_game_event_map(event_list) |
| 291 | } |
| 292 | Err(e) => panic!( |
| 293 | "Failed to parse game event LIST at tick {}. Error: {e}", |
| 294 | self.tick |
| 295 | ), |
| 296 | } |
| 297 | } |
| 298 | } |
| 299 | // Packet entites |
| 300 | 26 => { |
| 301 | if parse_props { |
| 302 | let pack_ents = Message::parse_from_bytes(data); |
| 303 | match pack_ents { |
| 304 | Ok(pe) => { |
no test coverage detected