sync with remote

This commit is contained in:
2023-03-19 12:56:58 +08:00
parent 0ee45b6179
commit 93ddf5994f
30 changed files with 201 additions and 20 deletions
+1
View File
@@ -11,6 +11,7 @@ repositories {
}
dependencies {
api(project(":api"))
implementation(kotlin("stdlib"))
@Suppress("VulnerableLibrariesLocal")
compileOnly("io.github.waterfallmc:waterfall-api:1.19-R0.1-SNAPSHOT")
@@ -0,0 +1,84 @@
package cc.maxmc.msm.common.network.packet
import cc.maxmc.msm.api.misc.EnumAPI
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.common.network.BungeePacket
import cc.maxmc.msm.common.utils.readServerInfo
import cc.maxmc.msm.common.utils.writeServerInfo
import io.netty.buffer.ByteBuf
import net.md_5.bungee.protocol.DefinedPacket
import java.util.*
sealed class PPacketAPICall(
var api: EnumAPI = EnumAPI.GET_SERVER,
var uid: UUID = UUID.randomUUID()
) : BungeePacket() {
override fun encode(buf: ByteBuf) {
DefinedPacket.writeVarInt(api.ordinal, buf)
}
override fun decode(buf: ByteBuf) {
api = EnumAPI.values()[buf.readByte().toInt()]
}
class PPacketCallGetServer(
var type: String = "",
var players: List<String> = emptyList()
) : PPacketAPICall() {
override fun encode(buf: ByteBuf) {
super.encode(buf)
DefinedPacket.writeString(type, buf)
DefinedPacket.writeStringArray(players, buf)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
type = DefinedPacket.readString(buf)
players = DefinedPacket.readStringArray(buf)
}
}
class PPacketCallInformEnd(
var matchID: Int = -1
) : PPacketAPICall() {
override fun encode(buf: ByteBuf) {
super.encode(buf)
DefinedPacket.writeVarInt(matchID, buf)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
matchID = DefinedPacket.readVarInt(buf)
}
}
class PPacketCallGetPlayerServer(
var serverInfo: ServerInfo = ServerInfo()
) : PPacketAPICall() {
override fun encode(buf: ByteBuf) {
super.encode(buf)
buf.writeServerInfo(serverInfo)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
serverInfo = buf.readServerInfo()
}
}
class PPacketCallContainPlayer(
var player: String = ""
) : PPacketAPICall() {
override fun encode(buf: ByteBuf) {
super.encode(buf)
DefinedPacket.writeString(player, buf)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
player = DefinedPacket.readString(buf)
}
}
}
@@ -5,9 +5,8 @@ import cc.maxmc.msm.common.utils.debug
import io.netty.buffer.ByteBuf
data class PPacketDebug(
var content: String
var content: String = ""
) : BungeePacket() {
constructor() : this("")
override fun encode(buf: ByteBuf) {
debug("start packet encode")
@@ -1,11 +1,15 @@
package cc.maxmc.msm.common.utils
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.common.network.ClusterPacketHandler
import cc.maxmc.msm.common.network.netty.ClusterMsgCodec
import cc.maxmc.msm.common.network.netty.NetworkRegistry
import com.google.common.net.HostAndPort
import io.netty.buffer.ByteBuf
import io.netty.channel.Channel
import io.netty.channel.ChannelInitializer
import io.netty.channel.socket.SocketChannel
import net.md_5.bungee.protocol.DefinedPacket
import net.md_5.bungee.protocol.Varint21FrameDecoder
import net.md_5.bungee.protocol.Varint21LengthFieldPrepender
@@ -20,5 +24,18 @@ fun pipelineInit(direction: NetworkRegistry.PacketDirection) = channelInit<Socke
pipeline().addLast("frame_prepender", Varint21LengthFieldPrepender())
pipeline().addLast("codec", ClusterMsgCodec(direction))
pipeline().addLast("packet_handler", ClusterPacketHandler)
}
fun ByteBuf.writeServerInfo(info: ServerInfo) {
DefinedPacket.writeString(info.server.toString(), this)
DefinedPacket.writeVarInt(info.id, this)
}
fun ByteBuf.readServerInfo(): ServerInfo {
val hap = DefinedPacket.readString(this)
val id = DefinedPacket.readVarInt(this)
return ServerInfo(
HostAndPort.fromString(hap),
id
)
}