From 3dfff8c0f2b584d849e603cadfac2731e97fe609 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Wed, 13 May 2020 18:31:57 +0300 Subject: [PATCH] add PingHandler --- .../network/impl/handler/HandshakeHandler.java | 4 +++- .../mc/server/network/impl/handler/PingHandler.java | 12 ++++++++++++ .../server/network/impl/handler/StatusHandler.java | 6 +----- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 src/main/java/mc/server/network/impl/handler/PingHandler.java diff --git a/src/main/java/mc/server/network/impl/handler/HandshakeHandler.java b/src/main/java/mc/server/network/impl/handler/HandshakeHandler.java index b980256..b055295 100644 --- a/src/main/java/mc/server/network/impl/handler/HandshakeHandler.java +++ b/src/main/java/mc/server/network/impl/handler/HandshakeHandler.java @@ -14,12 +14,14 @@ import static mc.server.network.impl.NettyConstants.ATTR_STATE; public class HandshakeHandler extends AbstractPacketHandler { private final Provider statusHandlerProvider; + private final Provider pingHandlerProvider; @Override protected void channelRead1(ChannelHandlerContext ctx, HandshakePacket packet) { log.info("{}", packet); ctx.channel().attr(ATTR_STATE).set(packet.getNextState()); - ctx.pipeline().replace("handshake_handler", "status_handler", statusHandlerProvider.get()); + ctx.channel().pipeline().replace("handshake_handler", "status_handler", statusHandlerProvider.get()); + ctx.channel().pipeline().addAfter("status_handler", "ping_handler", pingHandlerProvider.get()); } } diff --git a/src/main/java/mc/server/network/impl/handler/PingHandler.java b/src/main/java/mc/server/network/impl/handler/PingHandler.java new file mode 100644 index 0000000..21b9fcd --- /dev/null +++ b/src/main/java/mc/server/network/impl/handler/PingHandler.java @@ -0,0 +1,12 @@ +package mc.server.network.impl.handler; + +import io.netty.channel.ChannelHandlerContext; +import mc.protocol.status.PingPacket; + +public class PingHandler extends AbstractPacketHandler { + + @Override + protected void channelRead1(ChannelHandlerContext ctx, PingPacket packet) { + ctx.writeAndFlush(packet).channel().disconnect(); + } +} diff --git a/src/main/java/mc/server/network/impl/handler/StatusHandler.java b/src/main/java/mc/server/network/impl/handler/StatusHandler.java index bfe6751..b7bb44e 100644 --- a/src/main/java/mc/server/network/impl/handler/StatusHandler.java +++ b/src/main/java/mc/server/network/impl/handler/StatusHandler.java @@ -5,14 +5,11 @@ import io.netty.channel.ChannelHandlerContext; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import mc.protocol.ProtocolConstant; -import mc.protocol.State; import mc.protocol.dto.ServerInfo; import mc.protocol.status.client.StatusServerRequest; import mc.protocol.status.server.StatusServerResponse; import mc.protocol.text.Text; -import static mc.server.network.impl.NettyConstants.ATTR_STATE; - @Slf4j @RequiredArgsConstructor(onConstructor = @__({ @Inject })) public class StatusHandler extends AbstractPacketHandler { @@ -32,7 +29,6 @@ public class StatusHandler extends AbstractPacketHandler { StatusServerResponse response = new StatusServerResponse(); response.setServerInfoDto(serverInfo); - ctx.channel().writeAndFlush(response)/*.channel().disconnect()*/; - ctx.channel().attr(ATTR_STATE).set(State.PLAY); //TODO просто что бы был UnknownPacket + ctx.channel().writeAndFlush(response); } }