mirror of
https://github.com/ViaVersion/VIAaaS.git
synced 2024-11-24 12:25:39 +01:00
fixed configuration state on old servers
This commit is contained in:
parent
15e77588c9
commit
ba15f5459e
@ -0,0 +1,16 @@
|
||||
package com.viaversion.aas.codec.packet.login;
|
||||
|
||||
import com.viaversion.aas.codec.packet.Packet;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class LoginAck implements Packet {
|
||||
@Override
|
||||
public void decode(@NotNull ByteBuf byteBuf, ProtocolVersion protocolVersion) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode(@NotNull ByteBuf byteBuf, ProtocolVersion protocolVersion) throws Exception {
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ public class ConfigurationState implements ConnectionState {
|
||||
|
||||
@Override
|
||||
public void handlePacket(@NotNull MinecraftHandler handler, @NotNull ChannelHandlerContext ctx, @NotNull Packet packet) {
|
||||
if (packet instanceof FinishConfig) handleFinish(handler, (FinishConfig) packet);
|
||||
if (packet instanceof FinishConfig) handleFinish(handler);
|
||||
if (packet instanceof ConfigurationDisconnect) handleDisconnect(handler, (ConfigurationDisconnect) packet);
|
||||
HandlerUtilKt.forward(handler, ReferenceCountUtil.retain(packet), false);
|
||||
}
|
||||
@ -36,7 +36,8 @@ public class ConfigurationState implements ConnectionState {
|
||||
);
|
||||
}
|
||||
|
||||
private void handleFinish(MinecraftHandler handler, FinishConfig packet) {
|
||||
private void handleFinish(MinecraftHandler handler) {
|
||||
if (handler.getBackEnd()) return;
|
||||
handler.getData().setState(new PlayState());
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@ import com.viaversion.aas.codec.packet.status.StatusPing
|
||||
import com.viaversion.aas.codec.packet.status.StatusPong
|
||||
import com.viaversion.aas.codec.packet.status.StatusRequest
|
||||
import com.viaversion.aas.codec.packet.status.StatusResponse
|
||||
import com.viaversion.aas.protocol.sharewareVersion
|
||||
import com.viaversion.aas.util.StacklessException
|
||||
import com.viaversion.viaversion.api.protocol.packet.Direction
|
||||
import com.viaversion.viaversion.api.protocol.packet.State
|
||||
@ -56,6 +55,7 @@ object PacketRegistry {
|
||||
register(State.LOGIN, Direction.SERVERBOUND, ::LoginStart, Range.all(), 0)
|
||||
register(State.LOGIN, Direction.SERVERBOUND, ::CryptoResponse, Range.all(), 1)
|
||||
register(State.LOGIN, Direction.SERVERBOUND, ::PluginResponse, Range.atLeast(ProtocolVersion.v1_13), 2)
|
||||
register(State.LOGIN, Direction.SERVERBOUND, ::LoginAck, Range.atLeast(ProtocolVersion.v1_20_2), 3)
|
||||
|
||||
register(State.LOGIN, Direction.CLIENTBOUND, ::LoginDisconnect, Range.all(), 0)
|
||||
register(State.LOGIN, Direction.CLIENTBOUND, ::CryptoRequest, Range.all(), 1)
|
||||
|
@ -54,10 +54,16 @@ class LoginState : ConnectionState {
|
||||
is LoginSuccess -> handleLoginSuccess(handler, packet)
|
||||
is SetCompression -> handleCompression(handler, packet)
|
||||
is PluginRequest -> forward(handler, packet)
|
||||
is LoginAck -> handleLoginAck(handler, packet)
|
||||
else -> throw StacklessException("Invalid packet!")
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleLoginAck(handler: MinecraftHandler, packet: LoginAck) {
|
||||
handler.data.state = ConfigurationState()
|
||||
forward(handler, packet)
|
||||
}
|
||||
|
||||
private fun handleLoginDisconnect(handler: MinecraftHandler, packet: LoginDisconnect) {
|
||||
kickedByServer = true
|
||||
mcLogger.debug("{} disconnected on login: {}", handler.endRemoteAddress.toString(), packet.msg)
|
||||
@ -90,9 +96,8 @@ class LoginState : ConnectionState {
|
||||
forward(handler, SetCompression().also { it.threshold = threshold })
|
||||
setCompression(handler.data.frontChannel, threshold)
|
||||
}
|
||||
handler.data.state = when {
|
||||
handler.data.frontVer!!.newerThanOrEqualTo(ProtocolVersion.v1_20_2) -> ConfigurationState()
|
||||
else -> PlayState()
|
||||
if (handler.data.frontVer!!.olderThan(ProtocolVersion.v1_20_2)) {
|
||||
handler.data.state = PlayState()
|
||||
}
|
||||
forward(handler, loginSuccess)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user