Archived
0

Ping packet

This commit is contained in:
2018-04-08 23:57:22 +03:00
parent d6b7647fc9
commit 63608db304
5 changed files with 45 additions and 3 deletions

View File

@@ -4,12 +4,18 @@
*/
package mc.core;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.StandardCharsets;
@Slf4j
public abstract class NetStream {
@Getter
@Setter
private int expectedSize;
public static int sizeVarInt(final int value) {
byte size = 0;
int v = value;
@@ -74,4 +80,6 @@ public abstract class NetStream {
public abstract void writeByte(int value);
public abstract void writeBytes(byte[] buffer);
}

View File

@@ -59,6 +59,7 @@ public class PacketDecoder extends ByteToMessageDecoder {
}
} else {
CSPacket packet = clientSidePacketClass.newInstance();
netStream.setExpectedSize(size - NetStream.sizeVarInt(id));
packet.readSelf(netStream);
out.add(packet);
}

View File

@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
import mc.core.CSPacket;
import mc.core.Config;
import mc.core.Main;
import mc.core.netty.packets.PingPacket;
import mc.core.netty.packets.StatusRequest;
import mc.core.netty.packets.StatusResponse;
@@ -51,4 +52,8 @@ public class PacketHandler extends SimpleChannelInboundHandler<CSPacket> {
channel.writeAndFlush(pkt);
}
public void onPingPacket(Channel channel, PingPacket packet) {
channel.writeAndFlush(packet);
}
}

View File

@@ -9,6 +9,7 @@ import io.netty.util.AttributeKey;
import lombok.RequiredArgsConstructor;
import mc.core.CSPacket;
import mc.core.SCPacket;
import mc.core.netty.packets.PingPacket;
import mc.core.netty.packets.StatusRequest;
import mc.core.netty.packets.StatusResponse;
@@ -21,9 +22,12 @@ public enum State {
UNKNOWN(0, ImmutableMap.of(), ImmutableMap.of()),
STATUS(1,
ImmutableMap.of(
0, StatusRequest.class
), ImmutableMap.of(
StatusResponse.class, 0
0, StatusRequest.class,
1, PingPacket.class
),
ImmutableMap.of(
StatusResponse.class, 0,
PingPacket.class, 1
)
);

View 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;
}
}