MCPcopy Create free account
hub / github.com/LaihoE/Python-demoparser / parse_packet

Method parse_packet

src/parsing/parser.rs:247–368  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

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) => {

Callers 1

parse_cmdMethod · 0.80

Calls 8

check_round_changeFunction · 0.85
read_i32Method · 0.80
read_n_bytesMethod · 0.80
parse_game_eventsMethod · 0.80
parse_game_event_mapMethod · 0.80
create_string_tableMethod · 0.80
read_varintMethod · 0.45

Tested by

no test coverage detected