ОТСЛЕЖИВАНИЕ ПАКЕТОВ
Событие получения или отправки пакета.
Данное событие позволяет получить пакет, отправляемый игроком или отпрвляемый сервером игроку.
on packet:
on packet <packet name>:
<packet name>
- позволяет указать название пакета для отслеживания.
Событие может быть отменено. В этом случае пакет не будет получен сервером, или отправлен игроку
Данное событие имеет встроенные выражения.
event-packet
- для получения пакетаevent-player
- для получения игрока
event-packet
может быть заменен при помощи set event-packet to %packet%
, при условии, что не использовалась задержка выполнения
Получение буфера из пакета
После получения буфера из пакета мы можем читать поля указанные на wiki.vg
buffer (of|from) %packet%
%packet%'s buffer
Чтение буфера
Для получения значений из буфера существуют следующие выражения, аналогичные записи в буфер
read bool[ean] from %bytebuf%
read uuid from %bytebuf%
read string from %bytebuf%
read position from %bytebuf%
read [unsigned] byte from %bytebuf%
read [unsigned] short from %bytebuf%
read float from %bytebuf%
read double from %bytebuf%
read int[eger] from %bytebuf%
read long from %bytebuf%
read angle from %bytebuf%
read var[iable][ ]int[eger] from %bytebuf%
read var[iable][ ]long from %bytebuf%
read utf[(-| )]8 [with [len[gth]]] %number% from %bytebuf%
Для чтения utf-8 необходимо так же указать длину текста в байтах
Рассмотрим пакет
PacketPlayOutOpenSignEditor
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x32 | Play | Client | Location | Position | |
Is Front Text | Boolean | Whether the opened editor is for the front or on the back of the sign |
on packet PacketPlayOutOpenSignEditor:
set {_buffer} to buffer from event-packet
set {_position} to read position from {_buffer}
set {_isFrontText} to read boolean from {_buffer}
broadcast "%{_position}%"
cancel event
Код выше выведет в чат Vector с координатами открытой таблички.
Reader index
Каждое чтение буфера сдвигает его Reader index
, это количество прочитанных байт внутри буфера.Reader index
можно узнать, или изменить при помощи следующего выражеения:
reader index of %bytebuf%
%bytebuf%'s reader index
Отключение или включение отслеживания пакетов
Для любого игрока можно включить или отключить отслеживание входящих, или исходящих пакетов.
[(handl(e|ing))|(listen[ing] [of])] (in|out)coming packets of %player%
%player%'s [(handl(e|ing))|(listen[ing] [of])] (in|out)coming packets