complete child side api
This commit is contained in:
parent
32bb9628d3
commit
aa4a229b7d
|
|
@ -2,26 +2,46 @@ package cc.maxmc.msm.child.api
|
||||||
|
|
||||||
import cc.maxmc.msm.api.MultiServerManAPI
|
import cc.maxmc.msm.api.MultiServerManAPI
|
||||||
import cc.maxmc.msm.api.misc.ServerInfo
|
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 net.md_5.bungee.api.connection.ProxiedPlayer
|
||||||
import java.util.UUID
|
import java.util.*
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.CompletableFuture
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
object APIImpl : MultiServerManAPI {
|
object APIImpl : MultiServerManAPI {
|
||||||
val apiCallCache = HashMap<UUID, Future<Any>>()
|
val apiCallCache = HashMap<UUID, CompletableFuture<out Any>>()
|
||||||
|
|
||||||
override fun getServer(type: String, players: MutableList<ProxiedPlayer>): ServerInfo {
|
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) {
|
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 {
|
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 {
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
package cc.maxmc.msm.common.network.packet
|
package cc.maxmc.msm.common.network.packet
|
||||||
|
|
||||||
import cc.maxmc.msm.api.misc.EnumAPI
|
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.network.BungeePacket
|
||||||
import cc.maxmc.msm.common.utils.readServerInfo
|
|
||||||
import cc.maxmc.msm.common.utils.writeServerInfo
|
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
import net.md_5.bungee.protocol.DefinedPacket
|
import net.md_5.bungee.protocol.DefinedPacket
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
@ -15,10 +12,12 @@ sealed class PPacketAPICall(
|
||||||
) : BungeePacket() {
|
) : BungeePacket() {
|
||||||
override fun encode(buf: ByteBuf) {
|
override fun encode(buf: ByteBuf) {
|
||||||
DefinedPacket.writeVarInt(api.ordinal, buf)
|
DefinedPacket.writeVarInt(api.ordinal, buf)
|
||||||
|
DefinedPacket.writeUUID(uid, buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun decode(buf: ByteBuf) {
|
override fun decode(buf: ByteBuf) {
|
||||||
api = EnumAPI.values()[buf.readByte().toInt()]
|
api = EnumAPI.values()[buf.readByte().toInt()]
|
||||||
|
uid = DefinedPacket.readUUID(buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
class PPacketCallGetServer(
|
class PPacketCallGetServer(
|
||||||
|
|
@ -53,16 +52,16 @@ sealed class PPacketAPICall(
|
||||||
}
|
}
|
||||||
|
|
||||||
class PPacketCallGetPlayerServer(
|
class PPacketCallGetPlayerServer(
|
||||||
var serverInfo: ServerInfo = ServerInfo()
|
var player: String = ""
|
||||||
) : PPacketAPICall() {
|
) : PPacketAPICall() {
|
||||||
override fun encode(buf: ByteBuf) {
|
override fun encode(buf: ByteBuf) {
|
||||||
super.encode(buf)
|
super.encode(buf)
|
||||||
buf.writeServerInfo(serverInfo)
|
DefinedPacket.writeString(player, buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun decode(buf: ByteBuf) {
|
override fun decode(buf: ByteBuf) {
|
||||||
super.decode(buf)
|
super.decode(buf)
|
||||||
serverInfo = buf.readServerInfo()
|
player = DefinedPacket.readString(buf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue