Archived
0

запрет входа игроку на сервер

This commit is contained in:
2020-05-18 09:47:15 +03:00
parent 53e6d36ca4
commit 045c9f1a04
2 changed files with 32 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ import com.google.inject.Provider;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import mc.protocol.State;
import mc.protocol.handshake.client.HandshakePacket; import mc.protocol.handshake.client.HandshakePacket;
import static mc.server.network.impl.NettyConstants.ATTR_STATE; import static mc.server.network.impl.NettyConstants.ATTR_STATE;
@@ -15,13 +16,19 @@ public class HandshakeHandler extends AbstractPacketHandler<HandshakePacket> {
private final Provider<StatusHandler> statusHandlerProvider; private final Provider<StatusHandler> statusHandlerProvider;
private final Provider<PingHandler> pingHandlerProvider; private final Provider<PingHandler> pingHandlerProvider;
private final Provider<LoginHandler> loginHandlerProvider;
@Override @Override
protected void channelRead1(ChannelHandlerContext ctx, HandshakePacket packet) { protected void channelRead1(ChannelHandlerContext ctx, HandshakePacket packet) {
log.info("{}", packet); log.info("{}", packet);
ctx.channel().attr(ATTR_STATE).set(packet.getNextState()); ctx.channel().attr(ATTR_STATE).set(packet.getNextState());
if (packet.getNextState() == State.STATUS) {
ctx.channel().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()); ctx.channel().pipeline().addAfter("status_handler", "ping_handler", pingHandlerProvider.get());
} else if (packet.getNextState() == State.LOGIN) {
ctx.channel().pipeline().replace("handshake_handler", "login_handler", loginHandlerProvider.get());
}
} }
} }

View File

@@ -0,0 +1,23 @@
package mc.server.network.impl.handler;
import io.netty.channel.ChannelHandlerContext;
import mc.protocol.login.client.LoginStartPacket;
import mc.protocol.login.server.DisconnectPacket;
import mc.protocol.text.Text;
import mc.protocol.text.TextColor;
import mc.protocol.text.TextStyle;
public class LoginHandler extends AbstractPacketHandler<LoginStartPacket> {
@Override
protected void channelRead1(ChannelHandlerContext ctx, LoginStartPacket packet) {
DisconnectPacket disconnectPacket = new DisconnectPacket();
disconnectPacket.setReason(Text.builder()
.append(Text.of(TextColor.WHITE, "Server is "))
.color(TextColor.RED).style(TextStyle.BOLD).append("NOT ")
.color(TextColor.WHITE).append("available.")
.build());
ctx.channel().writeAndFlush(disconnectPacket).channel().disconnect();
}
}