VIAaaS/src/main/kotlin/com/viaversion/aas/handler/BackEndInit.kt

32 lines
1.3 KiB
Kotlin

package com.viaversion.aas.handler
import com.viaversion.aas.codec.FrameCodec
import com.viaversion.aas.codec.MinecraftCodec
import com.viaversion.aas.handler.autoprotocol.ProtocolDetectorHandler
import com.viaversion.viaversion.connection.UserConnectionImpl
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl
import io.netty.channel.Channel
import io.netty.channel.ChannelInitializer
import io.netty.handler.timeout.ReadTimeoutHandler
import java.util.concurrent.TimeUnit
class BackEndInit(val connectionData: ConnectionData) : ChannelInitializer<Channel>() {
override fun initChannel(ch: Channel) {
val user = UserConnectionImpl(ch, true)
ProtocolPipelineImpl(user)
ch.pipeline().also { addSocks5(it) }
// "crypto"
.addLast("frame", FrameCodec())
// compress
.addLast("via-codec", ViaCodec(user))
.addLast("timeout", ReadTimeoutHandler(30, TimeUnit.SECONDS))
.addLast("mc", MinecraftCodec())
.also {
if (connectionData.viaBackServerVer == null) {
it.addLast("protocol-detector", ProtocolDetectorHandler(connectionData))
}
}
.addLast("handler", MinecraftHandler(connectionData, frontEnd = false))
}
}