diff --git a/child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt b/child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt index a682309..6b00419 100644 --- a/child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt +++ b/child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt @@ -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>() +object APIImpl : MultiServerManAPI { + val apiCallCache = HashMap>() override fun getServer(type: String, players: MutableList): ServerInfo { - TODO("Not yet implemented") + val packet = PPacketAPICall.PPacketCallGetServer(type, players.map { it.name }) + NetClient.sendPacket(packet) + val future = CompletableFuture() + 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() + 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() + 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() + apiCallCache[UUID.randomUUID()] = future + return future.get(1, TimeUnit.SECONDS) } } \ No newline at end of file diff --git a/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt b/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt index 70b2068..14fea7e 100644 --- a/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt +++ b/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt @@ -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) } }