complete child side api

This commit is contained in:
TONY_All 2023-03-21 09:42:28 +08:00
parent 32bb9628d3
commit aa4a229b7d
2 changed files with 33 additions and 14 deletions

View File

@ -2,26 +2,46 @@ package cc.maxmc.msm.child.api
import cc.maxmc.msm.api.MultiServerManAPI
import cc.maxmc.msm.api.misc.ServerInfo
import cc.maxmc.msm.child.netty.NetClient
import cc.maxmc.msm.common.network.packet.PPacketAPICall
import net.md_5.bungee.api.connection.ProxiedPlayer
import java.util.UUID
import java.util.concurrent.Future
import java.util.*
import java.util.concurrent.CompletableFuture
import java.util.concurrent.TimeUnit
object APIImpl: MultiServerManAPI {
val apiCallCache = HashMap<UUID, Future<Any>>()
object APIImpl : MultiServerManAPI {
val apiCallCache = HashMap<UUID, CompletableFuture<out Any>>()
override fun getServer(type: String, players: MutableList<ProxiedPlayer>): ServerInfo {
TODO("Not yet implemented")
val packet = PPacketAPICall.PPacketCallGetServer(type, players.map { it.name })
NetClient.sendPacket(packet)
val future = CompletableFuture<ServerInfo>()
apiCallCache[UUID.randomUUID()] = future
return future.get(1, TimeUnit.SECONDS)
}
override fun informEnd(id: Int) {
TODO("Not yet implemented")
val packet = PPacketAPICall.PPacketCallInformEnd(id)
NetClient.sendPacket(packet)
val future = CompletableFuture<Unit>()
apiCallCache[UUID.randomUUID()] = future
future.get(1, TimeUnit.SECONDS)
return
}
override fun getPlayerServer(player: ProxiedPlayer): ServerInfo {
TODO("Not yet implemented")
val packet = PPacketAPICall.PPacketCallGetPlayerServer(player.name)
NetClient.sendPacket(packet)
val future = CompletableFuture<ServerInfo>()
apiCallCache[UUID.randomUUID()] = future
return future.get(1, TimeUnit.SECONDS)
}
override fun containPlayer(player: ProxiedPlayer): Boolean {
TODO("Not yet implemented")
val packet = PPacketAPICall.PPacketCallContainPlayer(player.name)
NetClient.sendPacket(packet)
val future = CompletableFuture<Boolean>()
apiCallCache[UUID.randomUUID()] = future
return future.get(1, TimeUnit.SECONDS)
}
}

View File

@ -1,10 +1,7 @@
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.*
@ -15,10 +12,12 @@ sealed class PPacketAPICall(
) : BungeePacket() {
override fun encode(buf: ByteBuf) {
DefinedPacket.writeVarInt(api.ordinal, buf)
DefinedPacket.writeUUID(uid, buf)
}
override fun decode(buf: ByteBuf) {
api = EnumAPI.values()[buf.readByte().toInt()]
uid = DefinedPacket.readUUID(buf)
}
class PPacketCallGetServer(
@ -53,16 +52,16 @@ sealed class PPacketAPICall(
}
class PPacketCallGetPlayerServer(
var serverInfo: ServerInfo = ServerInfo()
var player: String = ""
) : PPacketAPICall() {
override fun encode(buf: ByteBuf) {
super.encode(buf)
buf.writeServerInfo(serverInfo)
DefinedPacket.writeString(player, buf)
}
override fun decode(buf: ByteBuf) {
super.decode(buf)
serverInfo = buf.readServerInfo()
player = DefinedPacket.readString(buf)
}
}