добавлена документация
This commit is contained in:
17
src/main/java/mc/protocol/EmptyPacket.java
Normal file
17
src/main/java/mc/protocol/EmptyPacket.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package mc.protocol;
|
||||||
|
|
||||||
|
import mc.protocol.io.NetInputStream;
|
||||||
|
import mc.protocol.io.NetOutputStream;
|
||||||
|
|
||||||
|
public abstract class EmptyPacket implements Packet {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readSelf(NetInputStream netInputStream) {
|
||||||
|
// empty
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeSelf(NetOutputStream netOutputStream) {
|
||||||
|
// empty
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,26 @@ import mc.protocol.State;
|
|||||||
import mc.protocol.io.NetInputStream;
|
import mc.protocol.io.NetInputStream;
|
||||||
import mc.protocol.io.NetOutputStream;
|
import mc.protocol.io.NetOutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handshake packet.
|
||||||
|
*
|
||||||
|
* <p>Данный пакет заставляет сервер переключить текущий {@link State}</p>
|
||||||
|
*
|
||||||
|
* <p>Структура пакета
|
||||||
|
* <pre>
|
||||||
|
* | FIELD | TYPE | NOTES |
|
||||||
|
* |------------------|----------------|----------------------------------------------|
|
||||||
|
* | Protocol version | VarInt | Версия протокола [1] |
|
||||||
|
* | Server address | Stirng | Hostname или IP |
|
||||||
|
* | Server port | Unsigned Short | Порт сервера |
|
||||||
|
* | Next stage | VarInt | ID State на который необходимо переключиться |
|
||||||
|
*
|
||||||
|
* [1] - <a href="https://wiki.vg/Protocol_version_numbers" target="_top">Protocol version numbers</a>
|
||||||
|
* </pre></p>
|
||||||
|
*
|
||||||
|
* @see <a href="https://wiki.vg/index.php?title=Protocol&oldid=7368#Handshake" target="_top">Handshake</a>
|
||||||
|
* @see State
|
||||||
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class HandshakePacket implements Packet {
|
public class HandshakePacket implements Packet {
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,5 @@
|
|||||||
package mc.protocol.io.coder;
|
package mc.protocol.io.coder;
|
||||||
|
|
||||||
/*
|
|
||||||
Packet format:
|
|
||||||
|
|
||||||
| FIELD | TYPE | NOTES |
|
|
||||||
+------------+--------+-----------------------------------+
|
|
||||||
| SIZE | VarInt | = sizeOf(id) + sizeOf(byte_array) |
|
|
||||||
| PACKET ID | VarInt | |
|
|
||||||
| BYTE ARRAY | bytes | |
|
|
||||||
|
|
||||||
https://wiki.vg/index.php?title=Protocol&oldid=7368#Without_compression
|
|
||||||
*/
|
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import mc.protocol.Packet;
|
import mc.protocol.Packet;
|
||||||
import mc.protocol.PacketDirection;
|
import mc.protocol.PacketDirection;
|
||||||
|
|||||||
@@ -8,18 +8,6 @@ import mc.protocol.io.NetOutputStream;
|
|||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/*
|
|
||||||
Packet format:
|
|
||||||
|
|
||||||
| FIELD | TYPE | NOTES |
|
|
||||||
+------------+--------+-----------------------------------+
|
|
||||||
| SIZE | VarInt | = sizeOf(id) + sizeOf(byte_array) |
|
|
||||||
| PACKET ID | VarInt | |
|
|
||||||
| BYTE ARRAY | bytes | |
|
|
||||||
|
|
||||||
https://wiki.vg/index.php?title=Protocol&oldid=7368#Without_compression
|
|
||||||
*/
|
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ProtocolEncoder {
|
public class ProtocolEncoder {
|
||||||
|
|
||||||
|
|||||||
13
src/main/java/mc/protocol/io/coder/package-info.java
Normal file
13
src/main/java/mc/protocol/io/coder/package-info.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
Формат пакета без компрессии
|
||||||
|
|
||||||
|
| FIELD | TYPE | NOTES |
|
||||||
|
|-------------|--------|-----------------------------------|
|
||||||
|
| SIZE | VarInt | = sizeOf(id) + sizeOf(byte_array) |
|
||||||
|
| PACKET ID | VarInt | |
|
||||||
|
| PACKET DATA | bytes | |
|
||||||
|
|
||||||
|
https://wiki.vg/index.php?title=Protocol&oldid=7368#Without_compression
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mc.protocol.io.coder;
|
||||||
29
src/main/java/mc/protocol/io/package-info.java
Normal file
29
src/main/java/mc/protocol/io/package-info.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
Data types
|
||||||
|
|
||||||
|
| Type | Size (bytes) | Кодирование | Коментарий |
|
||||||
|
|----------------|-----------------------|-----------------------------------------------------|--------------------------------------------------------------------------|
|
||||||
|
| Boolean | 1 | True или False | True = 0x01; False = 0x00 |
|
||||||
|
| Byte | 1 | Число от -128 до 127 | 8-bit число со знаком |
|
||||||
|
| Unsigned Byte | 1 | Число от 0 до 255 | 8-bit без знаковое число |
|
||||||
|
| Short | 2 | Число от -32768 до 32767 | 16-bit число со знаком |
|
||||||
|
| Unsigned Short | 2 | Число от -32768 до 32767 | 16-bit без знаковое число |
|
||||||
|
| Int | 4 | Число от -2147483648 и 2147483647 | 32-bit число со знаком |
|
||||||
|
| Long | 8 | Число от -9223372036854775808 и 9223372036854775807 | 64-bit число со знаком |
|
||||||
|
| Float | 4 | 32-bit число одинарной точности (IEEE 754-2008) | [1] |
|
||||||
|
| Double | 8 | 64-bit число одинарной точности (IEEE 754-2008) | [2] |
|
||||||
|
| String (n) | >= 1 ; <= (n * 4) + 3 | Последовательность Unicode scalar values | В начале пишется длина строки в VarInt, после чего записываются символы. |
|
||||||
|
| | | | Каждый символ может состоять максимум из 4 байт. [3] |
|
||||||
|
| | | | Максимальная длина строки - 32767 (3 - это как раз размер VarInt для |
|
||||||
|
| | | | этого числа). |
|
||||||
|
| VarInt | >= 1 ; <= 5 | Число от -2147483648 и 2147483647 | 32-bit число с плавающей размерностью от 1 до 5 байт |
|
||||||
|
| VarLong | >= 1 ; <= 10 | Число от -9223372036854775808 и 9223372036854775807 | 64-bit число с плавающей размерностью от 1 до 10 байт |
|
||||||
|
|
||||||
|
[1] - https://en.wikipedia.org/wiki/Single-precision_floating-point_format
|
||||||
|
[2] - https://en.wikipedia.org/wiki/Double-precision_floating-point_format
|
||||||
|
[3] - http://unicode.org/glossary/#unicode_scalar_value
|
||||||
|
|
||||||
|
https://wiki.vg/index.php?title=Protocol&oldid=7368#Data_types
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mc.protocol.io;
|
||||||
@@ -1,18 +1,12 @@
|
|||||||
package mc.protocol.status.client;
|
package mc.protocol.status.client;
|
||||||
|
|
||||||
import mc.protocol.Packet;
|
import mc.protocol.EmptyPacket;
|
||||||
import mc.protocol.io.NetInputStream;
|
|
||||||
import mc.protocol.io.NetOutputStream;
|
|
||||||
|
|
||||||
public class StatusServerRequest implements Packet {
|
/**
|
||||||
|
* Status server packet, request.
|
||||||
|
*
|
||||||
|
* <p>Клиент запрашивает получение информации о сервере</p>
|
||||||
|
*/
|
||||||
|
public class StatusServerRequest extends EmptyPacket {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readSelf(NetInputStream netInputStream) {
|
|
||||||
// empty
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeSelf(NetOutputStream netOutputStream) {
|
|
||||||
// empty
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,20 @@ import mc.protocol.Packet;
|
|||||||
import mc.protocol.io.NetInputStream;
|
import mc.protocol.io.NetInputStream;
|
||||||
import mc.protocol.io.NetOutputStream;
|
import mc.protocol.io.NetOutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Status server packet, response.
|
||||||
|
*
|
||||||
|
* <p>Информация о сервере</p>
|
||||||
|
*
|
||||||
|
* <p>Структура пакета
|
||||||
|
* <pre>
|
||||||
|
* | FIELD | TYPE | NOTES |
|
||||||
|
* |---------------|--------|-----------------------------------------|
|
||||||
|
* | JSON Response | String | Информация о сервере в JSON формате [1] |
|
||||||
|
*
|
||||||
|
* [1] - <a href="https://wiki.vg/index.php?title=Server_List_Ping&oldid=7555#Response" target="_top">Server List Ping: Response</a>
|
||||||
|
* </pre></p>
|
||||||
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class StatusServerResponse implements Packet {
|
public class StatusServerResponse implements Packet {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user