MCPcopy Create free account
hub / github.com/TyphoonMC/TyphoonCore / WritePacketWithCompression

Method WritePacketWithCompression

connection.go:361–414  ·  view source on GitHub ↗
(packet Packet)

Source from the content-addressed store, hash-verified

359}
360
361func (player *Player) WritePacketWithCompression(packet Packet) (err error) {
362 buff := newVarBuffer(256)
363 tmp := player.io
364 player.io = &ConnReadWrite{
365 rdr: tmp.rdr,
366 wtr: buff,
367 }
368
369 id, proto := packet.Id()
370 if player.state == PLAY {
371 id = player.HackClientbound(id, proto)
372 }
373 if id == -1 {
374 return
375 }
376 player.WriteVarInt(id)
377 packet.Write(player)
378
379 var rBuff []byte
380 var dataLength = 0
381 if buff.Len() < config.Threshold {
382 rBuff = buff.Bytes()
383 } else {
384 var b bytes.Buffer
385 w := zlib.NewWriter(&b)
386 w.Write(buff.Bytes())
387 w.Close()
388 rBuff = b.Bytes()
389 dataLength = len(rBuff)
390 }
391
392 buff2 := newVarBuffer(1)
393 player.io.wtr = buff2
394 player.WriteVarInt(dataLength)
395 packetLength := len(rBuff) + buff2.Len()
396
397 buff3 := newVarBuffer(1)
398 player.io.wtr = buff3
399 player.WriteVarInt(packetLength)
400
401 player.io = tmp
402 player.conn.Write(buff3.Bytes())
403 player.conn.Write(buff2.Bytes())
404 player.conn.Write(rBuff)
405
406 if config.Logs {
407 if buff.Len() < config.Threshold {
408 log.Println("<-u", id, packet)
409 } else {
410 log.Println("<-c", id, packet)
411 }
412 }
413 return nil
414}

Callers 1

WritePacketMethod · 0.95

Calls 7

HackClientboundMethod · 0.95
WriteVarIntMethod · 0.95
newVarBufferFunction · 0.85
LenMethod · 0.80
BytesMethod · 0.80
IdMethod · 0.65
WriteMethod · 0.65

Tested by

no test coverage detected