47 lines
1.5 KiB
Java
47 lines
1.5 KiB
Java
package mc.protocol.packets;
|
|
|
|
import lombok.Data;
|
|
import mc.protocol.buffer.NetByteBuf;
|
|
|
|
/**
|
|
* Пинг-пакет.
|
|
*
|
|
* <p>Эхо-пакет, которым проверяется качество соединения между <b>Клиентом</b> и <b>Сервером</b>.</p>
|
|
*
|
|
* <p>Структура пакета</p>
|
|
* <pre>
|
|
* | FIELD | TYPE | NOTES |
|
|
* |---------|------|------------------------|
|
|
* | Payload | Long | Любое уникальное число |
|
|
* </pre>
|
|
*
|
|
* <p>По спецификации:</p>
|
|
* <oi>
|
|
* <li>если Сервер не ответил Клиенту в течении 20 секунд, Клиент отключается и выдаёт ошибку "Timed out";</li>
|
|
* <li>если Клиент не отвечает Серверу в течении 30 секунд, Сервер отключает Клиента.</li>
|
|
* </oi>
|
|
*
|
|
* @see <a href="https://wiki.vg/index.php?title=Protocol&oldid=14204#Keep_Alive_.28clientbound.29">Keep Alive (clientbound)</a>
|
|
* @see <a href="https://wiki.vg/index.php?title=Protocol&oldid=14204#Keep_Alive_.28serverbound.29">Keep Alive (serverbound)</a>
|
|
*/
|
|
@Data
|
|
public class KeepAlivePacket implements ClientSidePacket, ServerSidePacket {
|
|
|
|
private long payload;
|
|
|
|
@Override
|
|
public void readSelf(NetByteBuf netByteBuf) {
|
|
payload = netByteBuf.readLong();
|
|
}
|
|
|
|
@Override
|
|
public void writeSelf(NetByteBuf netByteBuf) {
|
|
netByteBuf.writeLong(payload);
|
|
}
|
|
|
|
@Override
|
|
public void passivate() {
|
|
this.payload = 0;
|
|
}
|
|
}
|