Ping packet
This commit is contained in:
@@ -4,12 +4,18 @@
|
|||||||
*/
|
*/
|
||||||
package mc.core;
|
package mc.core;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class NetStream {
|
public abstract class NetStream {
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private int expectedSize;
|
||||||
|
|
||||||
public static int sizeVarInt(final int value) {
|
public static int sizeVarInt(final int value) {
|
||||||
byte size = 0;
|
byte size = 0;
|
||||||
int v = value;
|
int v = value;
|
||||||
@@ -74,4 +80,6 @@ public abstract class NetStream {
|
|||||||
|
|
||||||
public abstract void writeByte(int value);
|
public abstract void writeByte(int value);
|
||||||
public abstract void writeBytes(byte[] buffer);
|
public abstract void writeBytes(byte[] buffer);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public class PacketDecoder extends ByteToMessageDecoder {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
CSPacket packet = clientSidePacketClass.newInstance();
|
CSPacket packet = clientSidePacketClass.newInstance();
|
||||||
|
netStream.setExpectedSize(size - NetStream.sizeVarInt(id));
|
||||||
packet.readSelf(netStream);
|
packet.readSelf(netStream);
|
||||||
out.add(packet);
|
out.add(packet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import mc.core.CSPacket;
|
import mc.core.CSPacket;
|
||||||
import mc.core.Config;
|
import mc.core.Config;
|
||||||
import mc.core.Main;
|
import mc.core.Main;
|
||||||
|
import mc.core.netty.packets.PingPacket;
|
||||||
import mc.core.netty.packets.StatusRequest;
|
import mc.core.netty.packets.StatusRequest;
|
||||||
import mc.core.netty.packets.StatusResponse;
|
import mc.core.netty.packets.StatusResponse;
|
||||||
|
|
||||||
@@ -51,4 +52,8 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
|
|||||||
|
|
||||||
channel.writeAndFlush(pkt);
|
channel.writeAndFlush(pkt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onPingPacket(Channel channel, PingPacket packet) {
|
||||||
|
channel.writeAndFlush(packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import io.netty.util.AttributeKey;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import mc.core.CSPacket;
|
import mc.core.CSPacket;
|
||||||
import mc.core.SCPacket;
|
import mc.core.SCPacket;
|
||||||
|
import mc.core.netty.packets.PingPacket;
|
||||||
import mc.core.netty.packets.StatusRequest;
|
import mc.core.netty.packets.StatusRequest;
|
||||||
import mc.core.netty.packets.StatusResponse;
|
import mc.core.netty.packets.StatusResponse;
|
||||||
|
|
||||||
@@ -21,9 +22,12 @@ public enum State {
|
|||||||
UNKNOWN(0, ImmutableMap.of(), ImmutableMap.of()),
|
UNKNOWN(0, ImmutableMap.of(), ImmutableMap.of()),
|
||||||
STATUS(1,
|
STATUS(1,
|
||||||
ImmutableMap.of(
|
ImmutableMap.of(
|
||||||
0, StatusRequest.class
|
0, StatusRequest.class,
|
||||||
), ImmutableMap.of(
|
1, PingPacket.class
|
||||||
StatusResponse.class, 0
|
),
|
||||||
|
ImmutableMap.of(
|
||||||
|
StatusResponse.class, 0,
|
||||||
|
PingPacket.class, 1
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
24
src/main/java/mc/core/netty/packets/PingPacket.java
Normal file
24
src/main/java/mc/core/netty/packets/PingPacket.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* DmitriyMX <dimon550@gmail.com>
|
||||||
|
* 2018-04-08
|
||||||
|
*/
|
||||||
|
package mc.core.netty.packets;
|
||||||
|
|
||||||
|
import mc.core.CSPacket;
|
||||||
|
import mc.core.NetStream;
|
||||||
|
import mc.core.SCPacket;
|
||||||
|
|
||||||
|
public class PingPacket implements CSPacket, SCPacket {
|
||||||
|
private byte[] rawData;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readSelf(NetStream netStream) {
|
||||||
|
rawData = new byte[netStream.getExpectedSize()];
|
||||||
|
netStream.readBytes(rawData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] toByteArray() {
|
||||||
|
return rawData;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user