Archived
0

correct Ping

This commit is contained in:
2018-04-04 00:20:43 +03:00
parent 3f5511ebdc
commit c12c87405b
2 changed files with 13 additions and 10 deletions

View File

@@ -10,6 +10,7 @@ import mc.core.netty.EventBus;
import mc.core.netty.State; import mc.core.netty.State;
import mc.core.netty.packets.HandshakeRequestPacket; import mc.core.netty.packets.HandshakeRequestPacket;
import mc.core.netty.packets.HandshakeResponsePacket; import mc.core.netty.packets.HandshakeResponsePacket;
import mc.core.netty.packets.PingPacket;
@Slf4j @Slf4j
public class HandshakeHandler implements EventBus.Listener { public class HandshakeHandler implements EventBus.Listener {
@@ -18,4 +19,9 @@ public class HandshakeHandler implements EventBus.Listener {
channel.attr(State.ATTR_STATE).set(packet.getNextState()); channel.attr(State.ATTR_STATE).set(packet.getNextState());
channel.writeAndFlush(new HandshakeResponsePacket()); channel.writeAndFlush(new HandshakeResponsePacket());
} }
@EventBus.EventHandler(State.Handshaking)
public void onPing(PingPacket packet, Channel channel) {
channel.writeAndFlush(packet);
}
} }

View File

@@ -7,13 +7,13 @@ package mc.core.netty.packets;
import lombok.ToString; import lombok.ToString;
import mc.core.NetStream; import mc.core.NetStream;
import mc.core.Packet; import mc.core.Packet;
import mc.core.netty.Utils;
import static mc.core.netty.Utils.*;
@ToString @ToString
public class PingPacket implements Packet { public class PingPacket implements Packet {
private static final int id = 1; private static final int id = 1;
private long payload; private static final int lenId = Utils.lengthVarInt(id);
private byte[] rawdata;
private int size; private int size;
@Override @Override
@@ -28,18 +28,15 @@ public class PingPacket implements Packet {
@Override @Override
public void readSelf(NetStream netStream) { public void readSelf(NetStream netStream) {
payload = netStream.readVarLong(); rawdata = new byte[netStream.getExpectedLength() - lenId];
size = lengthVarInt(id) netStream.readBytes(rawdata);
+ lengthVarLong(payload); size = lenId + rawdata.length;
} }
@Override @Override
public void writeSelf(NetStream netStream) { public void writeSelf(NetStream netStream) {
long payload = System.currentTimeMillis();
int size = lengthVarLong(payload);
netStream.writeVarInt(size); netStream.writeVarInt(size);
netStream.writeVarInt(id); netStream.writeVarInt(id);
netStream.writeVarLong(payload); netStream.writeBytes(rawdata);
} }
} }